

   complex {base}                               R Documentation

   CCoommpplleexx VVeeccttoorrss

   DDeessccrriippttiioonn::

        These are basic functions which support complex arith-
        metic in R.  Complex vectors can be created with `com-
        plex'.  The vector can be specified either by giving
        its length, its real and imaginary parts, or modulus
        and argument.

   UUssaaggee::

        complex(length.out = 0, real = numeric(), imaginary = numeric(),
                modulus = 1, argument = 0)
        as.complex(z)
        is.complex(z)

        Re(z)
        Im(z)
        Mod(z)
        Arg(z)
        Conj(z)

   DDeettaaiillss::

        Note that `is.complex' and `is.numeric' are never both
        `TRUE'.

        The functions `Re', `Im', `Mod', `Arg' and `Conj' have
        their usual interpretation as returning the real part,
        imaginary part, modulus, argument and complex conjugate
        for complex values. Modulus and argument are also
        called the polar coordinates. If z = x + i y with real
        x and y, `Mod'(z) = sqrt{x^2 + y^2}, and for phi=
        Arg(z), x = cos(phi) and y = sin(phi).

        In addition, the elementary trigonometric, logarithmic
        and exponential functions are available for complex
        values.

   EExxaammpplleess::

        ( z <- 0i ^ (-3:3) )
        all(Re(z) == 0 ^ (-3:3))
        matrix(1i^ (-6:5), nr=4)#- all columns are the same
        0 ^ 1i # a complex NaN

        ## create a complex normal vector
        z <- complex(real = rnorm(100), imag = rnorm(100))
        ## or also (less efficiently):
        z2 <- 1:2 + 1i*(8:9)

        all(Mod ( 1 -  sin(z) / ( (exp(1i*z)-exp(-1i*z))/(2*1i) ))
            < 100*.Machine$double.eps)
        ## The Arg(.) is an angle:
        zz <- (rep(1:4,len=9) + 1i*(9:1))/10
        zz.shift <- complex(modulus = Mod(zz), argument= Arg(zz) + pi)
        plot(zz, xlim=c(-1,1), ylim=c(-1,1), col="red", asp = 1,
             main = expression(paste("Rotation by "," ", pi == 180^o)))
        abline(h=0,v=0, col="blue", lty=3)
        points(zz.shift, col="orange")

