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,] FALSE NA NA
## [3,] NA NA NA
## [4,] NA NA NA
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] FALSE FALSE NA
## [3,] NA NA NA
## [4,] NA NA NA
bc.cplx(x, y, "!=")
## , , 1
##
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] TRUE NA NA
## [3,] NA NA NA
## [4,] NA NA NA
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] TRUE TRUE NA
## [3,] NA NA NA
## [4,] NA NA NA
bc.cplx(x, y, "+")
## , , 1
##
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] -Inf-0.6847768i NA NA
## [3,] NA NA NA
## [4,] NA NA NA
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] -Inf-0.1887282i NaN-2.351903i NA
## [3,] NA NA NA
## [4,] NA NA NA
bc.cplx(array(gen() + gen() * -1i), array(gen() + gen() * -1i), "==")
## [1] NA FALSE NA NA NA NA NA FALSE NA NA NA FALSE
## [13] NA FALSE NA NA NA NA
bc.cplx(array(gen() + gen() * -1i), array(gen() + gen() * -1i), "!=")
## [1] NA NA NA NA NA NA NA NA TRUE NA NA NA NA NA NA
## [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
## [1,] NA 1.7039094+1.32655893i NA
## [2,] NaN+ NaNi NaN+ Infi NaN+ NaNi
## [3,] NA Inf-0.17621799i NaN- Infi
## [4,] 0.07707495+1.5145840i 0.3016842-0.79642519i 1.229505+0.3955416i
## [5,] NaN+ Infi NaN-0.94654570i Inf+ NaNi
## [6,] NA NA NA
## [7,] -1.08463211-0.7499048i NA NA
## [8,] NaN+ NaNi NaN+ NaNi NaN+ NaNi
## [9,] NA 1.1058432+0.51550207i NA
## [10,] NaN- Infi -2.1518026+0.03971171i Inf+ Infi
## [11,] NaN-0.7014811i -1.7562231-1.28793464i NaN+ NaNi
## [12,] -Inf+0.1355877i NaN- Infi NaN+ Infi
## [13,] NaN- Infi Inf-2.72228720i NaN- Infi
## [14,] Inf+2.4866430i NaN+ Infi NaN+ Infi
## [15,] NaN+ Infi NaN+ NaNi NaN+ NaNi
## [16,] -1.34264947+0.8476800i NA NA
## [17,] -0.86770261+0.7576963i NaN- Infi Inf+ Infi
## [18,] -Inf-0.9372740i NaN-0.07805362i NaN+ Infi
## out
## [1,] NA
## [2,] NA
## [3,] NA
## [4,] 1.229505+0.3955416i
## [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,] 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.