Skip to contents

The result is transposed since that is what apply will give you

Usage

arma_mult_cube_vec(cub, v)

Arguments

cub

A cube (3D array)

v

A vector

Value

Transpose of multiplication over first dimension of cub time v

Examples

d1 <- 10
d2 <- 1e2
d3 <- 2e2
aa <- array(data = rnorm(d1*d2*d3), dim = c(d1, d2, d3))
bb <- rnorm(d3)
t1 <- apply(aa, 1, function(U) {U%*%bb})
t2 <- arma_mult_cube_vec(aa, bb)
dd <- t1 - t2

summary(dd)
#>        V1                   V2                   V3            
#>  Min.   :-1.954e-14   Min.   :-1.243e-14   Min.   :-2.132e-14  
#>  1st Qu.:-3.553e-15   1st Qu.:-3.553e-15   1st Qu.:-8.882e-16  
#>  Median : 0.000e+00   Median : 0.000e+00   Median : 8.882e-16  
#>  Mean   : 2.326e-16   Mean   : 1.665e-16   Mean   : 1.584e-15  
#>  3rd Qu.: 3.553e-15   3rd Qu.: 3.553e-15   3rd Qu.: 5.329e-15  
#>  Max.   : 2.132e-14   Max.   : 2.487e-14   Max.   : 2.132e-14  
#>        V4                   V5                   V6            
#>  Min.   :-2.487e-14   Min.   :-2.842e-14   Min.   :-2.132e-14  
#>  1st Qu.:-3.220e-15   1st Qu.:-3.553e-15   1st Qu.:-4.663e-15  
#>  Median : 0.000e+00   Median : 0.000e+00   Median : 0.000e+00  
#>  Mean   :-2.040e-16   Mean   :-9.215e-16   Mean   :-1.061e-15  
#>  3rd Qu.: 2.887e-15   3rd Qu.: 2.665e-15   3rd Qu.: 2.220e-15  
#>  Max.   : 4.263e-14   Max.   : 1.776e-14   Max.   : 1.599e-14  
#>        V7                   V8                   V9            
#>  Min.   :-2.132e-14   Min.   :-1.776e-14   Min.   :-1.421e-14  
#>  1st Qu.:-3.553e-15   1st Qu.:-2.665e-15   1st Qu.:-3.553e-15  
#>  Median : 0.000e+00   Median : 0.000e+00   Median : 0.000e+00  
#>  Mean   : 8.166e-16   Mean   : 1.051e-15   Mean   : 2.387e-17  
#>  3rd Qu.: 5.329e-15   3rd Qu.: 3.664e-15   3rd Qu.: 3.553e-15  
#>  Max.   : 2.132e-14   Max.   : 2.487e-14   Max.   : 2.132e-14  
#>       V10            
#>  Min.   :-2.842e-14  
#>  1st Qu.:-3.553e-15  
#>  Median : 0.000e+00  
#>  Mean   :-4.990e-16  
#>  3rd Qu.: 2.442e-15  
#>  Max.   : 2.842e-14  
image(dd)

table(dd)
#> dd
#>  -2.8421709430404e-14 -2.48689957516035e-14  -2.1316282072803e-14 
#>                     2                     2                     5 
#> -1.95399252334028e-14 -1.77635683940025e-14 -1.68753899743024e-14 
#>                     1                     2                     1 
#>  -1.4210854715202e-14 -1.24344978758018e-14 -1.06581410364015e-14 
#>                    15                     4                    24 
#> -9.76996261670138e-15 -9.32587340685131e-15 -8.88178419700125e-15 
#>                     4                     1                    14 
#> -8.65973959207622e-15 -7.99360577730113e-15  -7.7715611723761e-15 
#>                     1                     6                     1 
#> -7.54951656745106e-15   -7.105427357601e-15 -6.77236045021345e-15 
#>                     2                    55                     1 
#> -6.66133814775094e-15 -6.21724893790088e-15 -5.77315972805081e-15 
#>                     1                     5                     1 
#> -5.32907051820075e-15 -5.10702591327572e-15  -4.9960036108132e-15 
#>                    27                     1                     1 
#> -4.88498130835069e-15 -4.66293670342566e-15 -4.44089209850063e-15 
#>                     2                     1                     9 
#> -4.21884749357559e-15 -4.10782519111308e-15 -3.77475828372553e-15 
#>                     2                     1                     3 
#> -3.71924713249427e-15  -3.5527136788005e-15 -3.10862446895044e-15 
#>                     1                    87                     8 
#> -2.99760216648792e-15 -2.83106871279415e-15 -2.66453525910038e-15 
#>                     2                     1                    13 
#> -2.55351295663786e-15 -2.33146835171283e-15 -2.22044604925031e-15 
#>                     1                     2                     4 
#>  -2.1094237467878e-15 -1.99840144432528e-15 -1.88737914186277e-15 
#>                     2                     3                     2 
#> -1.77635683940025e-15 -1.66533453693773e-15 -1.60982338570648e-15 
#>                    51                     1                     1 
#> -1.55431223447522e-15  -1.4432899320127e-15 -1.33226762955019e-15 
#>                     2                     2                     8 
#> -1.11022302462516e-15 -9.99200722162641e-16 -8.88178419700125e-16 
#>                     2                     1                    23 
#> -6.66133814775094e-16 -4.44089209850063e-16                     0 
#>                     1                     6                   145 
#>  2.22044604925031e-16  4.44089209850063e-16  5.55111512312578e-16 
#>                     1                     7                     1 
#>  6.66133814775094e-16   7.7715611723761e-16  8.88178419700125e-16 
#>                     2                     1                    26 
#>  1.11022302462516e-15  1.33226762955019e-15  1.55431223447522e-15 
#>                     1                     4                     4 
#>  1.66533453693773e-15  1.77635683940025e-15  1.99840144432528e-15 
#>                     2                    60                     4 
#>  2.22044604925031e-15  2.24820162486594e-15  2.44249065417534e-15 
#>                     9                     1                     2 
#>  2.66453525910038e-15  2.77555756156289e-15  2.88657986402541e-15 
#>                    13                     2                     1 
#>  2.99760216648792e-15  3.10862446895044e-15  3.27515792264421e-15 
#>                     1                     3                     1 
#>  3.33066907387547e-15   3.5527136788005e-15  3.99680288865056e-15 
#>                     2                    77                     7 
#>  4.21884749357559e-15  4.44089209850063e-15  4.88498130835069e-15 
#>                     2                    10                     5 
#>  5.32907051820075e-15   5.6621374255883e-15  5.77315972805081e-15 
#>                    39                     1                     7 
#>  6.21724893790088e-15  6.66133814775094e-15    7.105427357601e-15 
#>                     7                     3                    46 
#>  7.21644966006352e-15  7.32747196252603e-15  7.54951656745106e-15 
#>                     1                     2                     2 
#>  7.99360577730113e-15  8.43769498715119e-15  8.88178419700125e-15 
#>                     4                     1                     9 
#>  9.76996261670138e-15  1.04360964314765e-14  1.06581410364015e-14 
#>                     3                     1                    22 
#>  1.11022302462516e-14  1.13242748511766e-14  1.24344978758018e-14 
#>                     1                     1                     6 
#>   1.4210854715202e-14  1.59872115546023e-14  1.77635683940025e-14 
#>                    10                     2                     6 
#>   2.1316282072803e-14  2.48689957516035e-14   2.8421709430404e-14 
#>                     9                     2                     1 
#>   4.2632564145606e-14 
#>                     1 
# microbenchmark::microbenchmark(apply(aa, 1, function(U) {U%*%bb}),
#                                arma_mult_cube_vec(aa, bb))