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.

Examples

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 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

x <- gen() + gen() * -1i
y <- gen() + gen() * -1i
out <- bc.cplx(array(x), array(y), "*")
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