library("broadcast")
<- c(4:2)
x.dim <- prod(x.dim)
x.len <- function() sample(c(rnorm(10), NA, NA, NaN, NaN, Inf, Inf, -Inf, -Inf))
gen <- array(gen() + gen() * -1i, x.dim)
x <- array(gen() + gen() * -1i, c(4,1,1))
y
bc.cplx(x, y, "==")
## , , 1
##
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] NA FALSE NA
## [3,] NA NA FALSE
## [4,] NA FALSE FALSE
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] FALSE NA NA
## [2,] FALSE NA NA
## [3,] NA NA NA
## [4,] FALSE NA FALSE
bc.cplx(x, y, "!=")
## , , 1
##
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] NA TRUE NA
## [3,] NA NA TRUE
## [4,] NA TRUE TRUE
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] TRUE NA NA
## [2,] TRUE NA NA
## [3,] NA NA NA
## [4,] TRUE NA TRUE
bc.cplx(x, y, "+")
## , , 1
##
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] NA NaN-0.4546817i NA
## [3,] NA NA 0.9582663+0.269424i
## [4,] NA 4.953731-0.6321484i 0.7203595-1.842979i
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] Inf+1.9769831i NA NA
## [2,] Inf-0.5454703i NA NA
## [3,] NA NA NA
## [4,] 3.342116-0.8510610i NA -Inf-0.4228974i
bc.cplx(array(gen() + gen() * -1i), array(gen() + gen() * -1i), "==")
## [1] NA NA FALSE NA FALSE FALSE NA NA NA NA NA NA
## [13] NA NA NA NA NA NA
bc.cplx(array(gen() + gen() * -1i), array(gen() + gen() * -1i), "!=")
## [1] NA NA TRUE NA NA NA TRUE NA NA NA NA TRUE NA NA TRUE
## [16] TRUE NA NA
<- gen() + gen() * -1i
x <- gen() + gen() * -1i
y <- bc.cplx(array(x), array(y), "*")
out cbind(x, y, x*y, out)
## x y out
## [1,] -0.003450384+2.3562336i NA NA NA
## [2,] NaN-0.2976879i -0.8183495-1.60886413i NaN+NaNi NA
## [3,] 1.339882558+0.8910538i -Inf+0.29939430i -Inf-Infi -Inf-Infi
## [4,] NA -0.9336426-1.05214976i NA NA
## [5,] NaN- Infi NaN- Infi -Inf+NaNi NA
## [6,] NA NaN+0.16892142i NaN+NaNi NA
## [7,] NA -0.8280110-0.09341374i NA NA
## [8,] NaN+ NaNi -1.3941448+0.40982182i NaN+NaNi NA
## [9,] NaN+ Infi -0.1603809-0.68459633i Inf-Infi NA
## [10,] 0.756654303+0.2281745i -Inf-0.55242351i -Inf-Infi -Inf-Infi
## [11,] Inf+0.6129344i NaN+ Infi NaN+Infi NA
## [12,] NaN-0.3050366i NaN+ NaNi NaN+NaNi NA
## [13,] NaN- Infi NA NaN+NaNi NA
## [14,] -0.965399255+1.8789632i NA Inf+Infi NA
## [15,] -Inf-0.1693827i NaN+ Infi NaN-Infi NA
## [16,] NaN+ Infi -2.1879546-0.02448460i Inf-Infi NA
## [17,] NaN+ NaNi -1.4533573-1.02977371i NaN+NaNi NA
## [18,] Inf-0.7251905i NaN+ NaNi NaN+NaNi NA
bc.cplx
Broadcasted Complex Numeric Operations
Description
The bc.cplx()
function performs broadcasted complex numeric operations on pairs of arrays.
Note that bc.cplx()
uses more strict NA
checks than base ‘R’:
If for an element of either x
or y
, either the real or imaginary part is NA
or NaN
, than the result of the operation for that element is necessarily NA
.
Usage
bc.cplx(x, y, op, ...)
## S4 method for signature 'ANY'
bc.cplx(x, y, op)
Arguments
x , y
|
conformable atomic arrays of type complex .
|
op
|
a single string, giving the operator. Supported arithmetic operators: +, -, *, /. Supported relational operators: ==, !=. |
…
|
further arguments passed to or from methods. |
Value
For arithmetic operators:
A complex array as a result of the broadcasted arithmetic operation.
For relational operators:
A logical array as a result of the broadcasted relational comparison.