## Matrix multiplication Multiplication of two square matrices of dimension `n`. ``` n faer faer(par) ndarray nalgebra eigen 32 1.7µs 1.6µs 2.4µs 2.6µs 1.4µs 64 11.2µs 11.2µs 12.5µs 12.4µs 5.2µs 96 32.2µs 65µs 24.4µs 38.3µs 12.9µs 128 74.5µs 75.6µs 51.5µs 86.2µs 39.5µs 192 239.7µs 114.7µs 71.3µs 275.5µs 52.1µs 256 580.8µs 199.9µs 192.9µs 656.6µs 176.4µs 384 2ms 636.8µs 421.9µs 2.2ms 361.8µs 512 4.7ms 1.2ms 1.3ms 5ms 1.2ms 640 9.2ms 2.5ms 2.5ms 10ms 1.8ms 768 16.3ms 4ms 4.1ms 17.4ms 2.9ms 896 26.1ms 6.7ms 7.4ms 27.6ms 5.7ms 1024 40ms 9.6ms 10.5ms 42ms 8.2ms ``` ## 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 4µs 4µs 15.1µs 11.3µs 2.8µs 64 16.5µs 16.6µs 35.8µs 56.9µs 13.8µs 96 46.4µs 102.5µs 74.2µs 169.9µs 36.7µs 128 90.8µs 164.8µs 189.8µs 381.3µs 74.8µs 192 253.7µs 405.3µs 432.9µs 1.3ms 208.3µs 256 527.2µs 652.2µs 1.3ms 3.2ms 475.9µs 384 1.5ms 1.3ms 3.6ms 10.4ms 1.3ms 512 3.4ms 2.2ms 4.8ms 24ms 3.5ms 640 6ms 4.1ms 8.1ms 45.1ms 5.4ms 768 10ms 5.6ms 12.7ms 77.8ms 9.2ms 896 15.4ms 7.7ms 18.4ms 121.4ms 14.2ms 1024 23.7ms 10.2ms 25.5ms 185.7ms 22.1ms ``` ## Triangular inverse Computing `A^-1` where `A` is a square triangular matrix with dimension `n`. ``` n faer faer(par) ndarray nalgebra eigen 32 15.8µs 91.4µs 17.7µs 11.8µs 2.9µs 64 38.7µs 179.4µs 38.1µs 57.1µs 14.3µs 96 88.7µs 338µs 79.9µs 172.1µs 37.8µs 128 110.3µs 367.3µs 205.8µs 390.6µs 77.2µs 192 265.3µs 811.4µs 386.4µs 1.3ms 209.8µs 256 396.5µs 1ms 1ms 3.1ms 476.8µs 384 998.1µs 2.3ms 2.3ms 10.3ms 1.3ms 512 1.9ms 2.9ms 4.3ms 23.8ms 3.5ms 640 3.2ms 4.7ms 7.7ms 44.6ms 5.5ms 768 4.9ms 6.2ms 12.2ms 75.9ms 9.5ms 896 7.1ms 7.2ms 17.8ms 119.1ms 14.9ms 1024 10.3ms 9.3ms 24.8ms 183.2ms 22.3ms ``` ## 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 4.8µs 4.8µs 12.1µs 4.8µs 3.1µs 64 17.8µs 18.1µs 120.1µs 23.8µs 11.8µs 96 37.1µs 37.5µs 310.2µs 70.5µs 26.9µs 128 68.7µs 77µs 470.3µs 149.5µs 43.9µs 192 163.1µs 289.6µs 1ms 454.6µs 113.2µs 256 328.5µs 508.4µs 1.8ms 1.1ms 218.6µs 384 824.5µs 1.2ms 3.3ms 3.5ms 569.3µs 512 1.8ms 2ms 7.8ms 8.2ms 1.3ms 640 2.9ms 3.5ms 11.2ms 15.4ms 2.2ms 768 5.1ms 4.4ms 15.8ms 26.1ms 3.6ms 896 7.3ms 6ms 21.8ms 40.9ms 5.5ms 1024 11.6ms 7.8ms 30.1ms 60.1ms 8.5ms ``` ## 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 6µs 6µs 112.7µs 8.2µs 6.2µs 64 28.5µs 28.5µs 563.3µs 39.5µs 22.2µs 96 69.8µs 69.7µs 1.2ms 119.6µs 51.4µs 128 139µs 139.2µs 1.7ms 275.3µs 170.4µs 192 361.2µs 596.4µs 3.3ms 874.9µs 562.9µs 256 703.9µs 1.1ms 4.6ms 2.3ms 1.2ms 384 1.8ms 2.6ms 8.1ms 7.3ms 2.4ms 512 3.8ms 4.7ms 11.5ms 17.6ms 6.3ms 640 6.2ms 7.3ms 14.2ms 31.6ms 8.2ms 768 10ms 10.4ms 16.6ms 54.2ms 11.4ms 896 14.7ms 14ms 19.5ms 84.6ms 13.4ms 1024 22.2ms 19.4ms 22.8ms 133.3ms 21.4ms ``` ## 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 23.4µs 23.2µs - 20.5µs 15.6µs 64 99µs 98.7µs - 143.5µs 107.6µs 96 244.6µs 244.3µs - 470.6µs 339.6µs 128 515µs 514.6µs - 1.1ms 783.1µs 192 1.4ms 1.4ms - 3.6ms 2.5ms 256 3.2ms 3.2ms - 8.8ms 6ms 384 9ms 10ms - 29.4ms 19.9ms 512 19.6ms 21.1ms - 69.6ms 47.2ms 640 35.7ms 32.9ms - 133.2ms 89.6ms 768 59.1ms 48ms - 231.6ms 154.6ms 896 91.4ms 62.7ms - 391.6ms 244.5ms 1024 140.7ms 84.2ms - 579.3ms 371.6ms ``` ## 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 26.4µs 26.3µs 34.6µs 21.1µs 9.4µs 64 82.3µs 82.4µs 139.1µs 92.7µs 79.5µs 96 163.3µs 163.2µs 938µs 254.6µs 128.6µs 128 268.8µs 268.9µs 2.2ms 533.2µs 246.8µs 192 634.8µs 636.2µs 4.5ms 1.6ms 531µs 256 1.2ms 2ms 8.1ms 3.6ms 1ms 384 3.1ms 5.7ms 17ms 11.4ms 2.5ms 512 6.7ms 10.7ms 31.1ms 26.1ms 5.2ms 640 10.5ms 13ms 46ms 49.5ms 9ms 768 17ms 19.6ms 66.3ms 84.3ms 14.6ms 896 25.6ms 27.4ms 85.9ms 132.2ms 22.4ms 1024 37.9ms 38ms 112.4ms 202.8ms 33.1ms ``` ## 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 60.2µs 126.7µs - 35.9µs 12µs 64 253.1µs 451.8µs - 207.9µs 50.4µs 96 594.4µs 794µs - 645µs 137.4µs 128 1.1ms 1.4ms - 1.5ms 283.5µs 192 2.6ms 3.1ms - 4.7ms 865.7µs 256 5.1ms 7.3ms - 11.1ms 2.3ms 384 13.4ms 20ms - 36.8ms 7.5ms 512 27.2ms 35.5ms - 84.8ms 17.9ms 640 47.2ms 53.8ms - 164.5ms 32ms 768 75.5ms 75.4ms - 288.7ms 54.5ms 896 111.9ms 105.4ms - 467.2ms 83.9ms 1024 163.5ms 139.2ms - 729ms 132.4ms ``` ## Matrix inverse Computing the inverse of a square matrix with dimension `n`. ``` n faer faer(par) ndarray nalgebra eigen 32 44.6µs 232.1µs 389.6µs 35.5µs 14µs 64 133.8µs 494.9µs 1.4ms 174.7µs 57.6µs 96 316.1µs 1ms 3.7ms 514.5µs 145.4µs 128 463.4µs 1.2ms 4.8ms 1.2ms 399.7µs 192 1.1ms 2.8ms 8.1ms 3.8ms 1.1ms 256 2ms 3.6ms 20.8ms 9.5ms 2.4ms 384 5ms 8ms 30.5ms 30.4ms 17.4ms 512 10.4ms 11.5ms 46.1ms 68.7ms 28.9ms 640 18.1ms 20.4ms 37.2ms 128.2ms 134.8ms 768 27.8ms 28.2ms 59.6ms 220.2ms 251.1ms 896 42.1ms 36.6ms 110ms 348ms 448.5ms 1024 60.8ms 45.8ms 108.7ms 532.2ms 812.9ms ``` ## Square matrix singular value decomposition Computing the SVD of a square matrix with dimension `n`. ``` n faer faer(par) ndarray nalgebra eigen 32 464.4µs 800.2µs 152.8µs 206.5µs 283.4µs 64 1.7ms 2.3ms 1.5ms 955.4µs 1.2ms 96 3.5ms 5.1ms 3.5ms 2.7ms 3.2ms 128 6.1ms 8.6ms 5.3ms 7.2ms 5ms 192 13.8ms 23.4ms 10.9ms 21.3ms 12.9ms 256 24.9ms 42.2ms 18.2ms 68.2ms 22.3ms 384 58.9ms 85ms 38.4ms 192.3ms 53.6ms 512 118.1ms 155.8ms 76.7ms 629.3ms 95ms 640 190.7ms 242.4ms 117.8ms 884.2ms 151.4ms 768 295.8ms 335.4ms 174.3ms 1.62s 224.5ms 896 437.6ms 455.6ms 237.3ms 2.44s 307.2ms 1024 638.4ms 604ms 338.5ms 5.09s 449.6ms ``` ## Thin matrix singular value decomposition Computing the SVD of a rectangular matrix with shape `(4096, n)`. ``` n faer faer(par) ndarray nalgebra eigen 32 1.9ms 2.9ms 6.6ms 7.5ms 3.7ms 64 5.8ms 8ms 18.8ms 28.4ms 10ms 96 11ms 15.9ms 36.4ms 64.4ms 149.2ms 128 18.4ms 25ms 58.7ms 114.4ms 123.6ms 192 38.7ms 52ms 88.4ms 264.9ms 610.2ms 256 67.3ms 86.8ms 115.3ms 505.6ms 588.2ms 384 144.1ms 154.4ms 179.7ms 1.18s 1.58s 512 261.3ms 249.2ms 357.7ms 2.57s 1.65s 640 407ms 371ms 375.5ms 4.08s 2.84s 768 600.7ms 519.9ms 554.8ms 6.49s 4.1s 896 836.7ms 692.1ms 753ms 9.05s 4.09s 1024 1.19s 886.1ms 1.13s 13.87s 4.66s ```