5 releases

0.1.4 Mar 15, 2024
0.1.3 May 1, 2023
0.1.2 Apr 13, 2023
0.1.1 Apr 8, 2023
0.1.0 Feb 18, 2023

#7 in #matrix-vector

Download history 11085/week @ 2024-01-29 10658/week @ 2024-02-05 13087/week @ 2024-02-12 15508/week @ 2024-02-19 15284/week @ 2024-02-26 15394/week @ 2024-03-04 14374/week @ 2024-03-11 16467/week @ 2024-03-18 15231/week @ 2024-03-25 16390/week @ 2024-04-01 14004/week @ 2024-04-08 15825/week @ 2024-04-15 14917/week @ 2024-04-22 13634/week @ 2024-04-29 12255/week @ 2024-05-06 10870/week @ 2024-05-13

53,204 downloads per month
Used in 437 crates (via hexasphere)

MIT/Apache

82KB
2K SLoC

Const Linear Algebra

Crates.io

Do your math ahead of time and embed the result in the binary. Floating-point code is from compiler_builtins and libm via the const_soft_float crate. Uses const generics to check shape of inputs, and is no_std.

Please file an issue or make a test PR if your use case is not supported.

const START: CMatrix<2, 2> = CMatrix::new([
    [4.0, 1.0], 
    [2.0, 3.0]
]);

const ADD: CMatrix<2, 2> = CMatrix::new([
    [0.0, 6.0], 
    [0.0, 3.0]]
);

const EXPECTED: [[f64; 2]; 2] = [
    [0.6, -0.7], 
    [-0.2, 0.4]
];

const RESULT: [[f64; 2]; 2] = START
    .add(ADD)
    .pinv(f64::EPSILON)
    .finish();

for i in 0..2 {
    for j in 0..2 {
        assert!(float_equal(RESULT[i][j], EXPECTED[i][j], 1e-5));
    }
}

Dependencies

~165KB