The dot product between arrays with different dimensions is computed by taking the inner product on the last dimensions of the two arrays.
x %dot% y
numeric
or character
array.
numeric
or character
array.
array
.
The dot product between two arrays A
and B
is computed as:
$$C_{i_1\dots i_m} = \sum_{j_1\dots j_n} A_{i_1\dots i_mj_1\dots j_n}B_{j_1\dots j_n}$$
Guidotti E (2022). "calculus: High-Dimensional Numerical and Symbolic Calculus in R." Journal of Statistical Software, 104(5), 1-37. doi:10.18637/jss.v104.i05
### inner product
x <- array(1:12, dim = c(3,4))
x %dot% x
#> [1] 650
### dot product
x <- array(1:24, dim = c(3,2,4))
y <- array(letters[1:8], dim = c(2,4))
x %dot% y
#> [1] "1 * (a) + 4 * (b) + 7 * (c) + 10 * (d) + 13 * (e) + 16 * (f) + 19 * (g) + 22 * (h)"
#> [2] "2 * (a) + 5 * (b) + 8 * (c) + 11 * (d) + 14 * (e) + 17 * (f) + 20 * (g) + 23 * (h)"
#> [3] "3 * (a) + 6 * (b) + 9 * (c) + 12 * (d) + 15 * (e) + 18 * (f) + 21 * (g) + 24 * (h)"