math-rs

Crates.iomath-rs
lib.rsmath-rs
version0.1.5
sourcesrc
created_at2023-05-15 06:35:55.314218
updated_at2023-05-23 10:22:23.591424
descriptionA basic mathematical engine
homepagehttps://math-rs.rs
repositoryhttps://github.com/VikSa666/mathrs
max_upload_size
id864760
size49,378
(VikSa666)

documentation

https://docs.rs/math-rs

README

Mathrs

A mathematical library

For now, only matrices calculator is implemented.

What you can do

  1. Calculate the sum, the substraction and the multiplication of matrices.
  2. Calculate the reduced matrix using Gauss Triangulation.
  3. Calculate the determinant matrix using both Gauss Triangulation and LU decomposition.
  4. 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();
};
Commit count: 53

cargo fmt