3 releases
0.1.5 | May 23, 2023 |
---|---|
0.1.4 | May 17, 2023 |
0.1.0 | May 15, 2023 |
#1496 in Math
50KB
1K
SLoC
Mathrs
A mathematical library
For now, only matrices calculator is implemented.
What you can do
- Calculate the sum, the substraction and the multiplication of matrices.
- Calculate the reduced matrix using Gauss Triangulation.
- Calculate the determinant matrix using both Gauss Triangulation and LU decomposition.
- Calculate the inverse of a matrix using the Gauss-Jordan method.
Usage in Rust
Every matrix can be created using a macro that will parse a string represenging the matrix in the following way: {{a11, a12, a13, ...}. {a21, a22, a23, ...}, ...}
. As each matrix can contain different type of numbers, you have to specify which type of number will you get: matrix_<number_type>!("{{a11, a12, ...}, {a21, a22, ...}, ...}")
.
Examples
The call
let matrix = matrix_f32!("{{1.1, 2.2}, {2.1, 3.2}}");
println!("{matrix}")
will print
+1.1000000 +2.2000000
+2.1000000 +3.2000000
Usage in Javascript or Typescript
const performSum = async () => {
await init();
result.value = RMatrixF32.checked_sum(
RMatrixF32.from_string(matA.value, 1e-6),
RMatrixF32.from_string(matB.value, 1e-6)
).to_string();
};
const performSub = async () => {
await init();
result.value = RMatrixF32.checked_sub(
RMatrixF32.from_string(matA.value, 1e-6),
RMatrixF32.from_string(matB.value, 1e-6)
).to_string();
};
const performMul = async () => {
await init();
result.value = RMatrixF32.checked_mul(
RMatrixF32.from_string(matA.value, 1e-6),
RMatrixF32.from_string(matB.value, 1e-6)
).to_string();
};
const mat = ref("");
const result2 = ref("Nothing yet...");
const preformGaussReduction = async () => {
await init();
result2.value = RMatrixF32.from_string(mat.value, 1e-6)
.gaussian_triangulation()
.to_string();
};
const performGaussJordanDeterminant = async () => {
await init();
result2.value = RMatrixF32.from_string(mat.value, 1e-6)
.determinant_using_gauss()
.toString();
};
const performGaussJordanInverse = async () => {
await init();
result2.value = RMatrixF32.from_string(mat.value, 1e-6)
.inverse_gauss_jordan()
.to_string();
};
Dependencies
~2.2–3MB
~53K SLoC