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

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