library("broadcast")
x.dim <- c(4:2)
x.len <- prod(x.dim)
gen <- function() sample(c(rnorm(10), NA, NA, NaN, NaN, Inf, Inf, -Inf, -Inf))
x <- array(gen() + gen() * -1i, x.dim)
y <- array(gen() + gen() * -1i, c(4,1,1))
bc.cplx(x, y, "==")
## , , 1
##
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] NA NA NA
## [3,] NA NA NA
## [4,] NA NA NA
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] NA NA NA
## [3,] NA NA NA
## [4,] NA NA NA
bc.cplx(x, y, "!=")
## , , 1
##
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] NA NA NA
## [3,] NA NA NA
## [4,] NA NA NA
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] NA NA NA
## [3,] NA NA NA
## [4,] NA NA NA
bc.cplx(x, y, "+")
## , , 1
##
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] NA NA NA
## [3,] NA NA NA
## [4,] NA NA NA
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] NA NA NA
## [3,] NA NA NA
## [4,] NA NA NA
bc.cplx(array(gen() + gen() * -1i), array(gen() + gen() * -1i), "==")
## [1] NA NA NA NA NA FALSE NA NA FALSE NA NA FALSE
## [13] NA NA NA NA FALSE FALSE
bc.cplx(array(gen() + gen() * -1i), array(gen() + gen() * -1i), "!=")
## [1] TRUE NA NA NA NA NA NA NA NA TRUE NA NA NA NA NA
## [16] NA NA NA
x <- gen() + gen() * -1i
y <- gen() + gen() * -1i
out <- bc.cplx(array(x), array(y), "*")
cbind(x, y, x*y, out)
## x y
## [1,] -Inf+0.8600096i NA NaN- Infi
## [2,] -0.6569422+0.7621882i -0.2468501-0.838697198i 0.8014113+0.3628294i
## [3,] NA NaN+0.575982233i NaN+ NaNi
## [4,] NaN- Infi NaN+ NaNi NaN+ NaNi
## [5,] NaN+ NaNi NaN-0.414607116i NaN+ NaNi
## [6,] NaN-0.1552668i NA NA
## [7,] NA 0.6326439+0.384083467i NA
## [8,] NaN- Infi 0.5242642-0.305668093i -Inf- Infi
## [9,] -2.3954757-0.4154399i NA NA
## [10,] -1.3516231+0.2632781i NaN- Infi Inf+ Infi
## [11,] NA NaN+ Infi Inf+ NaNi
## [12,] NaN+ Infi -Inf+0.008738449i NaN- Infi
## [13,] NA Inf+0.731566492i NaN+ NaNi
## [14,] NaN+ NaNi NaN+ Infi NaN+ NaNi
## [15,] 1.8885381+0.7499271i NaN+ NaNi NaN+ NaNi
## [16,] NaN-0.5269590i NaN- Infi -Inf+ NaNi
## [17,] NaN+ Infi 0.5435474+0.668924689i -Inf+ Infi
## [18,] Inf+0.3394163i NA NaN+ NaNi
## out
## [1,] NA
## [2,] 0.8014113+0.3628294i
## [3,] NA
## [4,] NA
## [5,] NA
## [6,] NA
## [7,] NA
## [8,] NA
## [9,] NA
## [10,] NA
## [11,] NA
## [12,] NA
## [13,] NA
## [14,] NA
## [15,] NA
## [16,] NA
## [17,] NA
## [18,] NAbc.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 vectors/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.