library("broadcast")
# maths ====
x <- 1:10
y <- 1:10
dim(x) <- c(10, 1)
dim(y) <- c(1, 10)
broadcaster(x) <- TRUE
broadcaster(y) <- TRUE
x + y / x
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#> [1,] 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 8.000000
#> [2,] 2.500000 3.000000 3.500000 4.000000 4.500000 5.000000 5.500000
#> [3,] 3.333333 3.666667 4.000000 4.333333 4.666667 5.000000 5.333333
#> [4,] 4.250000 4.500000 4.750000 5.000000 5.250000 5.500000 5.750000
#> [5,] 5.200000 5.400000 5.600000 5.800000 6.000000 6.200000 6.400000
#> [6,] 6.166667 6.333333 6.500000 6.666667 6.833333 7.000000 7.166667
#> [7,] 7.142857 7.285714 7.428571 7.571429 7.714286 7.857143 8.000000
#> [8,] 8.125000 8.250000 8.375000 8.500000 8.625000 8.750000 8.875000
#> [9,] 9.111111 9.222222 9.333333 9.444444 9.555556 9.666667 9.777778
#> [10,] 10.100000 10.200000 10.300000 10.400000 10.500000 10.600000 10.700000
#> [,8] [,9] [,10]
#> [1,] 9.000000 10.000000 11.000000
#> [2,] 6.000000 6.500000 7.000000
#> [3,] 5.666667 6.000000 6.333333
#> [4,] 6.000000 6.250000 6.500000
#> [5,] 6.600000 6.800000 7.000000
#> [6,] 7.333333 7.500000 7.666667
#> [7,] 8.142857 8.285714 8.428571
#> [8,] 9.000000 9.125000 9.250000
#> [9,] 9.888889 10.000000 10.111111
#> [10,] 10.800000 10.900000 11.000000
#> broadcaster
(x + y) / x
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
#> [1,] 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 8.000000 9.000000
#> [2,] 1.500000 2.000000 2.500000 3.000000 3.500000 4.000000 4.500000 5.000000
#> [3,] 1.333333 1.666667 2.000000 2.333333 2.666667 3.000000 3.333333 3.666667
#> [4,] 1.250000 1.500000 1.750000 2.000000 2.250000 2.500000 2.750000 3.000000
#> [5,] 1.200000 1.400000 1.600000 1.800000 2.000000 2.200000 2.400000 2.600000
#> [6,] 1.166667 1.333333 1.500000 1.666667 1.833333 2.000000 2.166667 2.333333
#> [7,] 1.142857 1.285714 1.428571 1.571429 1.714286 1.857143 2.000000 2.142857
#> [8,] 1.125000 1.250000 1.375000 1.500000 1.625000 1.750000 1.875000 2.000000
#> [9,] 1.111111 1.222222 1.333333 1.444444 1.555556 1.666667 1.777778 1.888889
#> [10,] 1.100000 1.200000 1.300000 1.400000 1.500000 1.600000 1.700000 1.800000
#> [,9] [,10]
#> [1,] 10.000000 11.000000
#> [2,] 5.500000 6.000000
#> [3,] 4.000000 4.333333
#> [4,] 3.250000 3.500000
#> [5,] 2.800000 3.000000
#> [6,] 2.500000 2.666667
#> [7,] 2.285714 2.428571
#> [8,] 2.125000 2.250000
#> [9,] 2.000000 2.111111
#> [10,] 1.900000 2.000000
#> broadcaster
(x + y) * x
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] 2 3 4 5 6 7 8 9 10 11
#> [2,] 6 8 10 12 14 16 18 20 22 24
#> [3,] 12 15 18 21 24 27 30 33 36 39
#> [4,] 20 24 28 32 36 40 44 48 52 56
#> [5,] 30 35 40 45 50 55 60 65 70 75
#> [6,] 42 48 54 60 66 72 78 84 90 96
#> [7,] 56 63 70 77 84 91 98 105 112 119
#> [8,] 72 80 88 96 104 112 120 128 136 144
#> [9,] 90 99 108 117 126 135 144 153 162 171
#> [10,] 110 120 130 140 150 160 170 180 190 200
#> broadcaster
# relational operators ====
x <- 1:10
y <- array(1:10, c(1, 10))
broadcaster(x) <- TRUE
broadcaster(y) <- TRUE
x == y
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [2,] FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [3,] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [4,] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
#> [5,] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
#> [6,] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
#> [7,] FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
#> [8,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
#> [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
#> [10,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
#> broadcaster
x != y
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [2,] TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [3,] TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [4,] TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE
#> [5,] TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE
#> [6,] TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE
#> [7,] TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE
#> [8,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE
#> [9,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE
#> [10,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE
#> broadcaster
x < y
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [2,] FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [3,] FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [4,] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE
#> [5,] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
#> [6,] FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
#> [7,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE
#> [8,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE
#> [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
#> [10,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> broadcaster
x > y
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [2,] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [3,] TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [4,] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [5,] TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
#> [6,] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE
#> [7,] TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
#> [8,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE
#> [9,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE
#> [10,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE
#> broadcaster
x <= y
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [2,] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [3,] FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [4,] FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [5,] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE
#> [6,] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
#> [7,] FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
#> [8,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE
#> [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE
#> [10,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
#> broadcaster
x >= y
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [2,] TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [3,] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [4,] TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
#> [5,] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE
#> [6,] TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
#> [7,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE
#> [8,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE
#> [9,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE
#> [10,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> broadcaster
# maths ====
x <- sample(1:10)
y <- sample(1:10)
dim(x) <- c(10, 1)
dim(y) <- c(1, 10)
mbroadcasters(c("x", "y"), TRUE)
x + y / x
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#> [1,] 7.666667 7.166667 6.666667 7.000000 6.500000 6.333333 7.500000
#> [2,] 6.500000 5.750000 5.000000 5.500000 4.750000 4.500000 6.250000
#> [3,] 7.000000 5.500000 4.000000 5.000000 3.500000 3.000000 6.500000
#> [4,] 7.000000 6.400000 5.800000 6.200000 5.600000 5.400000 6.800000
#> [5,] 10.111111 9.777778 9.444444 9.666667 9.333333 9.222222 10.000000
#> [6,] 6.333333 5.333333 4.333333 5.000000 4.000000 3.666667 6.000000
#> [7,] 11.000000 8.000000 5.000000 7.000000 4.000000 3.000000 10.000000
#> [8,] 11.000000 10.700000 10.400000 10.600000 10.300000 10.200000 10.900000
#> [9,] 9.250000 8.875000 8.500000 8.750000 8.375000 8.250000 9.125000
#> [10,] 8.428571 8.000000 7.571429 7.857143 7.428571 7.285714 8.285714
#> [,8] [,9] [,10]
#> [1,] 6.833333 6.166667 7.333333
#> [2,] 5.250000 4.250000 6.000000
#> [3,] 4.500000 2.500000 6.000000
#> [4,] 6.000000 5.200000 6.600000
#> [5,] 9.555556 9.111111 9.888889
#> [6,] 4.666667 3.333333 5.666667
#> [7,] 6.000000 2.000000 9.000000
#> [8,] 10.500000 10.100000 10.800000
#> [9,] 8.625000 8.125000 9.000000
#> [10,] 7.714286 7.142857 8.142857
#> broadcaster
(x + y) / x
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
#> [1,] 2.666667 2.166667 1.666667 2.000000 1.500000 1.333333 2.500000 1.833333
#> [2,] 3.500000 2.750000 2.000000 2.500000 1.750000 1.500000 3.250000 2.250000
#> [3,] 6.000000 4.500000 3.000000 4.000000 2.500000 2.000000 5.500000 3.500000
#> [4,] 3.000000 2.400000 1.800000 2.200000 1.600000 1.400000 2.800000 2.000000
#> [5,] 2.111111 1.777778 1.444444 1.666667 1.333333 1.222222 2.000000 1.555556
#> [6,] 4.333333 3.333333 2.333333 3.000000 2.000000 1.666667 4.000000 2.666667
#> [7,] 11.000000 8.000000 5.000000 7.000000 4.000000 3.000000 10.000000 6.000000
#> [8,] 2.000000 1.700000 1.400000 1.600000 1.300000 1.200000 1.900000 1.500000
#> [9,] 2.250000 1.875000 1.500000 1.750000 1.375000 1.250000 2.125000 1.625000
#> [10,] 2.428571 2.000000 1.571429 1.857143 1.428571 1.285714 2.285714 1.714286
#> [,9] [,10]
#> [1,] 1.166667 2.333333
#> [2,] 1.250000 3.000000
#> [3,] 1.500000 5.000000
#> [4,] 1.200000 2.600000
#> [5,] 1.111111 1.888889
#> [6,] 1.333333 3.666667
#> [7,] 2.000000 9.000000
#> [8,] 1.100000 1.800000
#> [9,] 1.125000 2.000000
#> [10,] 1.142857 2.142857
#> broadcaster
(x + y) * x
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] 96 78 60 72 54 48 90 66 42 84
#> [2,] 56 44 32 40 28 24 52 36 20 48
#> [3,] 24 18 12 16 10 8 22 14 6 20
#> [4,] 75 60 45 55 40 35 70 50 30 65
#> [5,] 171 144 117 135 108 99 162 126 90 153
#> [6,] 39 30 21 27 18 15 36 24 12 33
#> [7,] 11 8 5 7 4 3 10 6 2 9
#> [8,] 200 170 140 160 130 120 190 150 110 180
#> [9,] 144 120 96 112 88 80 136 104 72 128
#> [10,] 119 98 77 91 70 63 112 84 56 105
#> broadcaster
# relational operators ====
x <- 1:10
y <- array(1:10, c(1, 10))
mbroadcasters(c("x", "y"), TRUE)
x == y
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [2,] FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [3,] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [4,] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
#> [5,] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
#> [6,] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
#> [7,] FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
#> [8,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
#> [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
#> [10,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
#> broadcaster
x != y
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [2,] TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [3,] TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [4,] TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE
#> [5,] TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE
#> [6,] TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE
#> [7,] TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE
#> [8,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE
#> [9,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE
#> [10,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE
#> broadcaster
x < y
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [2,] FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [3,] FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [4,] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE
#> [5,] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
#> [6,] FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
#> [7,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE
#> [8,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE
#> [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
#> [10,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> broadcaster
x > y
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [2,] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [3,] TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [4,] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [5,] TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
#> [6,] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE
#> [7,] TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
#> [8,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE
#> [9,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE
#> [10,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE
#> broadcaster
x <= y
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [2,] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [3,] FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [4,] FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [5,] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE
#> [6,] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
#> [7,] FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
#> [8,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE
#> [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE
#> [10,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
#> broadcaster
x >= y
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [2,] TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [3,] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#> [4,] TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
#> [5,] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE
#> [6,] TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
#> [7,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE
#> [8,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE
#> [9,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE
#> [10,] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> broadcasterDetails on Broadcasted Operators
Description
Base ‘R’ comes with relational, arithmetic, integer, logical, and bit-wise operators.
‘broadcast’ provides 2 ways to use these operators with broadcasting.
The first (and simple) way is to use the broadcaster class, which comes with it’s own method dispatch for the above mentioned operators.
This approach supports operator precedence, and for the average ‘R’ user, this is sufficient.
The second way is to use the large set of bc.- functions.
These offer much greater control and more operators than the previous method, and has less risk of running into conflicting methods.
But they do not support operator precedence.
Operators Overloaded via Broadcaster Class
The ‘broadcast’ package provides the broadcaster class, which comes with its own method dispatch for the base operators.
If at least one of the 2 arguments of the base operators has the broadcaster class attribute, and no other class (like bit64) interferes, broadcasting will be used.
The following operators have a ‘broadcaster’ method:
# Group : Operators ; Comments # relational : ==, !=, <, >, <=, >= ; # arithmetic : +, -, *, /, ^ ; # integer : %%, %/% ; both sides will be truncated # logical : &, | ; # bit-wise : &, | ; if both sides are type of `raw`
See also the Examples section below.
Unary operations (i.e. + x, - x) return the original object, with only the sign adjusted.
Available bc. functions
‘broadcast’ provides a set of functions for broadcasted element-wise binary operations with broadcasting.
These functions use an API similar to the outer function.
The following functions for simple operations are available:
-
bc.rel: General relational operations (
==, !=, <, >, <=, >=).
The various otherbc.methods below have specialised relational operators available for specialised needs. -
bc.b: Boolean/logical operations;
-
bc.i: integer operations;
-
bc.d: decimal arithmetic operations;
-
bc.cplx: complex arithmetic operations;
-
bc.str: string (in)equality, concatenation, and distance operations;
-
bc.raw: operations that take in arrays of type
rawand return an array of typeraw; -
bc.bit: BIT-WISE operations, supporting the
rawandintegertypes; -
bc.list: apply any ‘R’ function to 2 recursive arrays with broadcasting.