complex                 package:base                 R Documentation

_C_o_m_p_l_e_x _V_e_c_t_o_r_s

_D_e_s_c_r_i_p_t_i_o_n:

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

_U_s_a_g_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_e_t_a_i_l_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_x_a_m_p_l_e_s:

     ( z <- 0i ^ (-3:3) )
     stopifnot(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")

