[R] stunning matrix multiplication differences Matrix vs. matrix

Karl May k@r|@m@y0 @end|ng |rom |reenet@de
Fri Sep 2 10:29:21 CEST 2022


Hi all,

can somebody help me out with an explanation of this:

> class(M);class(MM);class(RHS)
[1] "dgCMatrix"
attr(,"package")
[1] "Matrix"
[1] "matrix" "array" 
[1] "dgeMatrix"
attr(,"package")
[1] "Matrix"
> dim(M);dim(MM);dim(RHS)
[1] 29418 29418
[1] 29418 29418
[1] 29418     1
> max(abs(M-MM))
[1] 0
> t(RHS)%*%M%*%RHS
1 x 1 Matrix of class "dgeMatrix"
         [,1]
[1,] 7264.878
> t(RHS)%*%MM%*%RHS
1 x 1 Matrix of class "dgeMatrix"
         [,1]
[1,] 5765.366
> 

Apparently the two matrices "M" and "MM" are entirely identical but the 
difference in results from multiplying both with the same matrix is, say, 
significant.

Even when I transfer M into "matrix" and then back into "Matrix" the 
differences remain:

> M <- as.matrix(M)
> t(RHS)%*%M%*%RHS
1 x 1 Matrix of class "dgeMatrix"
         [,1]
[1,] 5765.366
> M <- Matrix(M)
> t(RHS)%*%M%*%RHS
1 x 1 Matrix of class "dgeMatrix"
         [,1]
[1,] 7264.878
> 

Frankly, I have no clue what's going on!!

This is the session info:

> sessionInfo()
R version 4.1.3 (2022-03-10)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Arch Linux
BLAS/LAPACK: /opt/intel/mkl/lib/intel64/libmkl_gf_lp64.so

 [1] LC_CTYPE=en_AU.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=C                  LC_COLLATE=en_AU.UTF-8    
 [5] LC_MONETARY=en_AU.UTF-8    LC_MESSAGES=en_AU.UTF-8   
 [7] LC_PAPER=en_AU.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_AU.UTF-8 LC_IDENTIFICATION=C       

[1] graphics  grDevices datasets  stats     utils     parallel  methods  
[8] base     
[1] pedigreemm_0.3-3  lme4_1.1-28       Matrix_1.4-0      bit64_4.0.5      
[5] bit_4.0.4         data.table_1.14.2

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.8      lattice_0.20-45 MASS_7.3-55     grid_4.1.3     
 [5] nlme_3.1-155    minqa_1.2.4     nloptr_2.0.0    boot_1.3-28    
 [9] splines_4.1.3   tools_4.1.3     compiler_4.1.3



More information about the R-help mailing list