#linear-algebra #matrix-operations #matrix-vector #linear-interpolation #product #mini #programming

bin+lib mini-matrix

A mini linear algebra library implemented in Rust

7 releases

0.1.6 Aug 13, 2024
0.1.5 Aug 8, 2024

#613 in Math

Apache-2.0

4MB
1.5K SLoC

Rust 1K SLoC // 0.1% comments Python 279 SLoC // 0.4% comments Jupyter Notebooks 196 SLoC // 0.7% comments

Mini Matrix Library

This project is a Rust library for basic linear algebra operations, including vector and matrix manipulations. It provides functionalities to perform various exercises related to vectors and matrices.

Features

  • Vector and Matrix Operations
  • Linear Combination
  • Linear Interpolation (Lerp)
  • Dot Product
  • Norms (1-norm, 2-norm, ∞-norm)
  • Angle Cosine
  • Cross Product
  • Matrix Multiplication
  • Trace
  • Transpose
  • Reduced Row Echelon Form (RREF)
  • Determinant
  • Inverse
  • Rank

Usage

The crate is currently on version 0.1.5.

The main function allows you to run different exercises based on a command-line argument specifying the exercise number.

Running Exercises

To run a specific exercise, use the following command:

cargo run <exercise_number>

Summary

mini_matrix is a lightweight linear algebra library written in Rust, designed to provide fundamental matrix and vector operations without heavy external dependencies. This project serves as an introduction to both Rust programming and linear algebra concepts, specifically tailored as a learning exercise from the 42 cursus.

Contributing

Contributions are welcome! Please see the contribution guidelines for more details.


Implementation

This project is implemented using Rust, a systems programming language known for its performance and safety features.

Documentation

You can find the documentation for this project docs.


Installation

The library is most easily used with cargo. Simply include the following in your Cargo.toml file:

[dependencies]
num = "0.4.3"

or use the following command:

cargo add mini_matrix

And then import the library using:

#[macro_use]
extern crate mini_matrix;

Then import the modules and you're done!

use mini_matrix::Matrix;

// Create a 2x2 matrix:
let a = Matrix::from([
    [1.0, 2.0],
    [3.0, 4.0],
]);

// Create a 2x3 matrix:
let b = Matrix::from([
    [1.0, 2.0],
    [4.0, 5.0],
]);

let c = a * b; // Matrix product of a and b

let expected = Matrix::from([[5.0, 14.0], [11.0, 32.0]]);

assert_eq!(c, expected);

Dependencies