| Crates.io | lin_algebra |
| lib.rs | lin_algebra |
| version | 0.3.1 |
| created_at | 2025-06-30 00:33:12.730934+00 |
| updated_at | 2026-01-13 13:06:45.995042+00 |
| description | A linear algebra package to compute image, kernel and rank of linear applications. |
| homepage | https://github.com/LucaBonamino/lin_algebra |
| repository | https://github.com/LucaBonamino/lin_algebra |
| max_upload_size | |
| id | 1731268 |
| size | 30,282 |
A Rust library for linear algebra.
All operations are currently implemented for matrices over GF(2):
Add the dependency to your Cargo.toml:
[dependencies]
lin_algebra = "0.3.1"
use lin_algebra::gf2_matrix::GF2Matrix;
use lin_algebra::matrix::MatrixTrait;
fn main() {
// Reduces echelon form
let gf2_mat = gf2_matrix::GF2Matrix::new(
vec![vec![1,0,0,0], vec![0,1,0,1], vec![0,1,0,1]]
)
let (educed_echelon_form, row_operations) = gf2_mat.echelon_form();
println!("Reduces echelon form {:?}", educed_echelon_form);
println!(
"Row operation applied to reach the reduces echelon form {:?}", row_operations
);
// Kernel
println!("Kenel {:?}", gf2_mat.kernel());
// Image
println!("Image {:?}", gf2_mat.image());
// Rank
println!("Rank {}", gf2_mat.rank());
// Solve M x = b
let b = vec![1,0,0,1]
println!("x: {:?}", gf2_mat.solve(&b));
// Solve A X = Y
let y_matrix = gf2_matrix::GF2Matrix::new(
vec![vec![1,0,0,1], vec![1,1,0,1], vec![0,1,0,1]]
)
println!("x: {:?}", gf2_mat.solve_matrix_system(&y_matrix));
}
MIT
Python bindings are provided in the separate project
gf2_lin_algebra.
They are intentionally limited to GF(2) and focus on performance and simplicity. The Rust crate lin_algebra is designed to be more general.
This project is under active development, with a focus on both research and practical use.
Current and planned directions include:
The Python bindings (gf2_lin_algebra) are intentionally limited to GF(2), while the Rust crate (lin_algebra) aims to be more general.
For a detailed list of planned improvements and areas where help is welcome, see ROADMAP.md.
Contributions are welcome!
Please see CONTRIBUTING.md for guidelines.