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.

See Also

broadcast_operators

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

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