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 |
#35 in No standard library
74,375 downloads per month
Used in 610 crates
(via hexasphere)
82KB
2K
SLoC
Const Linear Algebra
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