## Matrix multiplication Multiplication of two square matrices of dimension `n`. ``` n faer faer(par) ndarray nalgebra eigen 32 1µs 828ns 1.4µs 1.7µs 812ns 64 4.8µs 4.8µs 7.3µs 9.5µs 4.6µs 96 14.9µs 15.5µs 18.9µs 29.6µs 8.3µs 128 36.6µs 21.8µs 43.3µs 67.5µs 21.7µs 192 115µs 39µs 42.7µs 221.9µs 31.4µs 256 272.5µs 80.2µs 133.7µs 513.3µs 81.6µs 384 910.1µs 247.4µs 223.8µs 1.7ms 179.3µs 512 2.3ms 530.9µs 610.9µs 4ms 574.6µs 640 4.4ms 998.5µs 1.1ms 7.8ms 895.4µs 768 7.5ms 1.6ms 1.4ms 13.4ms 1.3ms 896 12.2ms 2.7ms 2.6ms 21.5ms 2.6ms 1024 18.9ms 4ms 4.1ms 32.2ms 3.5ms ``` ## Triangular solve Solving `AX = B` in place where `A` and `B` are two square matrices of dimension `n`, and `A` is a triangular matrix. ``` n faer faer(par) ndarray nalgebra eigen 32 2.9µs 2.9µs 17.3µs 6.3µs 3.5µs 64 10.8µs 10.9µs 50.4µs 35.1µs 14.8µs 96 29.5µs 41.3µs 102.5µs 71.2µs 35.1µs 128 54.3µs 52.9µs 179µs 150.6µs 70.2µs 192 149µs 122.3µs 405.6µs 489.8µs 169.5µs 256 297µs 170.6µs 930.5µs 1.2ms 349.5µs 384 833.2µs 304.8µs 2ms 4.5ms 908.5µs 512 1.8ms 533.7µs 4.4ms 10.2ms 2ms 640 3.3ms 1.1ms 6.1ms 19.9ms 3.3ms 768 5.2ms 1.5ms 10.1ms 33.4ms 5.6ms 896 7.8ms 2.2ms 12.9ms 51.9ms 8.3ms 1024 12.1ms 3.2ms 24.7ms 77.3ms 13.4ms ``` ## Triangular inverse Computing `A^-1` where `A` is a square triangular matrix with dimension `n`. ``` n faer faer(par) ndarray nalgebra eigen 32 4.2µs 15.9µs 17µs 6.3µs 3.4µs 64 12.7µs 26.2µs 50.6µs 35µs 14.7µs 96 30.1µs 54.1µs 104.9µs 74.5µs 35.3µs 128 41.6µs 68µs 181.7µs 161.1µs 70.2µs 192 103.7µs 129.3µs 410.6µs 496.5µs 169.6µs 256 170.2µs 180.6µs 928.5µs 1.1ms 351.7µs 384 439.4µs 332.1µs 1.8ms 4.5ms 910.4µs 512 843µs 470.5µs 4.1ms 10.3ms 2ms 640 1.5ms 668.7µs 5.7ms 20ms 3.3ms 768 2.3ms 930.2µs 9.9ms 33.8ms 5.5ms 896 3.3ms 1.2ms 12.6ms 52.2ms 8.3ms 1024 5.1ms 1.6ms 24.4ms 77.4ms 13.5ms ``` ## Cholesky decomposition Factorizing a square matrix with dimension `n` as `L×L.T`, where `L` is lower triangular. ``` n faer faer(par) ndarray nalgebra eigen 32 2.2µs 2.2µs 18.7µs 3µs 2.8µs 64 7.4µs 7.5µs 66.2µs 12.3µs 9.5µs 96 19.2µs 19µs 144.9µs 32.8µs 20.7µs 128 28.7µs 28.6µs 208.4µs 70.4µs 32.8µs 192 77.3µs 103.1µs 433.6µs 206µs 77.1µs 256 142.3µs 209.7µs 733.1µs 451.6µs 141.8µs 384 376µs 494.4µs 1.5ms 1.5ms 355.6µs 512 859.3µs 705.1µs 2.8ms 3.7ms 812.8µs 640 1.4ms 1.3ms 3.9ms 6.9ms 1.3ms 768 2.4ms 1.7ms 6.9ms 12ms 2.1ms 896 3.5ms 2.3ms 7.7ms 18.4ms 3ms 1024 5.9ms 2.8ms 14.2ms 27.5ms 4.8ms ``` ## LU decomposition with partial pivoting Factorizing a square matrix with dimension `n` as `P×L×U`, where `P` is a permutation matrix, `L` is unit lower triangular and `U` is upper triangular. ``` n faer faer(par) ndarray nalgebra eigen 32 3.9µs 3.9µs 292.7µs 5.5µs 6.3µs 64 19.2µs 17.3µs 1.1ms 21.8µs 20.6µs 96 41.2µs 40.9µs 2.3ms 57µs 44.4µs 128 87.5µs 79.5µs 3.3ms 124.1µs 130µs 192 204.1µs 317.6µs 6.1ms 357.5µs 476.4µs 256 391.9µs 550µs 7.9ms 867.4µs 1ms 384 930.9µs 1.1ms 11.9ms 2.9ms 2ms 512 1.9ms 2ms 15.3ms 7.3ms 5.5ms 640 3.4ms 3.3ms 18.4ms 13.4ms 6.9ms 768 5.2ms 4.6ms 20ms 23.2ms 11.3ms 896 7.7ms 6.3ms 22ms 35.4ms 9.9ms 1024 11ms 8.7ms 24.9ms 52.1ms 16.8ms ``` ## LU decomposition with full pivoting Factorizing a square matrix with dimension `n` as `P×L×U×Q.T`, where `P` and `Q` are permutation matrices, `L` is unit lower triangular and `U` is upper triangular. ``` n faer faer(par) ndarray nalgebra eigen 32 7.4µs 7.4µs - 15.8µs 13.4µs 64 30µs 30.3µs - 108.7µs 81.3µs 96 75.6µs 75.8µs - 344.7µs 242.3µs 128 175.3µs 174.9µs - 780.9µs 543.3µs 192 521µs 523.9µs - 2.6ms 1.6ms 256 1.3ms 1.3ms - 6.2ms 3.8ms 384 4ms 4.3ms - 20.7ms 12ms 512 9.4ms 8.1ms - 49ms 28.3ms 640 16.8ms 12.3ms - 95ms 53.1ms 768 29.1ms 18.1ms - 164.5ms 91.2ms 896 43.6ms 23.8ms - 259.2ms 142.2ms 1024 65.5ms 32.1ms - 385.9ms 213.9ms ``` ## QR decomposition with no pivoting Factorizing a square matrix with dimension `n` as `QR`, where `Q` is unitary and `R` is upper triangular. ``` n faer faer(par) ndarray nalgebra eigen 32 8.3µs 8.3µs 30.9µs 8.1µs 8.9µs 64 29µs 28.9µs 105.1µs 42.1µs 70.3µs 96 60.2µs 60.4µs 681.6µs 121µs 105µs 128 103.4µs 104.1µs 1.8ms 265.8µs 192.9µs 192 257.7µs 258.7µs 3.5ms 819.7µs 372.5µs 256 499.2µs 819.4µs 6.1ms 1.8ms 670.3µs 384 1.4ms 1.9ms 12.4ms 5.9ms 1.5ms 512 2.9ms 3.4ms 23.4ms 13.6ms 2.9ms 640 5.2ms 4.7ms 31.7ms 25.5ms 4.9ms 768 8.4ms 6.8ms 52.6ms 43.8ms 7.7ms 896 12.7ms 9.3ms 67.4ms 68.9ms 11.6ms 1024 18.9ms 13.3ms 91.7ms 101.5ms 16.7ms ``` ## QR decomposition with column pivoting Factorizing a square matrix with dimension `n` as `QRP`, where `P` is a permutation matrix, `Q` is unitary and `R` is upper triangular. ``` n faer faer(par) ndarray nalgebra eigen 32 14.6µs 41.8µs - 15.5µs 11µs 64 60.6µs 115.8µs - 106.5µs 42µs 96 141.1µs 214.7µs - 333.9µs 103.2µs 128 278µs 344.5µs - 760.4µs 205.2µs 192 727.2µs 843.5µs - 2.5ms 538.7µs 256 1.5ms 1.8ms - 5.7ms 1.2ms 384 4.2ms 4.2ms - 18.9ms 3.9ms 512 9.2ms 7.5ms - 44.6ms 9.5ms 640 17ms 11.2ms - 84.9ms 17.2ms 768 27.9ms 15.2ms - 146.8ms 29.4ms 896 43.1ms 20ms - 231.9ms 45.1ms 1024 63ms 23.7ms - 345.3ms 69.2ms ``` ## Matrix inverse Computing the inverse of a square matrix with dimension `n`. ``` n faer faer(par) ndarray nalgebra eigen 32 14.8µs 40.1µs 311.4µs 20.9µs 15.1µs 64 54.4µs 102.2µs 1.1ms 90.5µs 56.9µs 96 131.8µs 178.2µs 2.4ms 250.7µs 129.9µs 128 201.7µs 231.5µs 3.6ms 554.7µs 348.3µs 192 539.5µs 519µs 6.5ms 1.6ms 951.2µs 256 905.5µs 853.1µs 8.5ms 4.1ms 1.9ms 384 2.4ms 1.8ms 13.2ms 13.3ms 4.7ms 512 4.7ms 3.1ms 17.6ms 31.6ms 11.4ms 640 8.8ms 5.1ms 22.4ms 58.8ms 17ms 768 13.5ms 7.1ms 25.6ms 100ms 25.2ms 896 19.6ms 10ms 30.4ms 153.8ms 31.4ms 1024 29.3ms 13.7ms 35.7ms 231.3ms 48.1ms ``` ## Square matrix singular value decomposition Computing the SVD of a square matrix with dimension `n`. ``` n faer faer(par) ndarray nalgebra eigen 32 123µs 184.8µs 128.3µs 103.2µs 202.9µs 64 410.2µs 464.3µs 1.2ms 532.7µs 799.4µs 96 846.8µs 1.2ms 2.6ms 1.6ms 2.1ms 128 1.4ms 1.8ms 4.4ms 3.7ms 3.1ms 192 3.2ms 4.3ms 8.9ms 11.7ms 7.8ms 256 6.1ms 7.4ms 14.8ms 32.4ms 13ms 384 16.1ms 15.6ms 29.9ms 100.4ms 31.6ms 512 32.1ms 28.2ms 54.8ms 319.4ms 58.4ms 640 55.6ms 41.9ms 85.4ms 523.1ms 92.1ms 768 90.7ms 57.1ms 134.5ms 1.02s 131.5ms 896 134.1ms 75.6ms 178.6ms 1.56s 179.2ms 1024 205.3ms 104.8ms 257.8ms 3.22s 263.9ms ``` ## Thin matrix singular value decomposition Computing the SVD of a rectangular matrix with shape `(4096, n)`. ``` n faer faer(par) ndarray nalgebra eigen 32 942.2µs 1.3ms 5.8ms 2.8ms 1.7ms 64 2.6ms 3.2ms 16ms 10.9ms 5.3ms 96 5.2ms 6.2ms 29.6ms 24.6ms 11.4ms 128 8.2ms 9ms 45.8ms 43.2ms 17.6ms 192 16.6ms 16.1ms 64.3ms 98.3ms 36.1ms 256 27.7ms 24.6ms 94.2ms 185.1ms 61.6ms 384 57.8ms 44.5ms 147.2ms 445ms 118ms 512 102.9ms 68.6ms 222.5ms 926.3ms 201.8ms 640 160.9ms 93.9ms 295.2ms 1.53s 311.4ms 768 236.9ms 127ms 368.9ms 2.49s 602.2ms 896 328.2ms 166ms 469.9ms 3.65s 611.1ms 1024 453.5ms 215.1ms 732.9ms 6.07s 808.6ms ```