1个稳定版本

1.1.2 2023年10月22日

#1505 in 数学

MIT许可

130KB
2K SLoC

linalg-rs - 使用Rust编写的线性代数库

在Rust中实现线性代数!

使用rayon并行化,支持多种常见数据类型,linalg-rs旨在让用户更容易进行矩阵运算,同时仍然提供用户应得的性能。

常规矩阵具有许多已准备好的功能,而稀疏矩阵则具有大部分功能。当您想要在这两者之间切换时,只需调用 from_densefrom_sparse 以快速轻松地进行转换!

需要功能吗?请告诉我们!

甚至还有用于创建稀疏矩阵的hashmap的定制声明性宏!

示例

稠密矩阵

use linalg_rs::{LinAlgFloats, Matrix};

fn main() {
    let a = Matrix::<f32>::randomize((8, 56));
    let b = Matrix::<f32>::randomize((56, 8));

    let c = a.matmul(&b).unwrap();

    let res = c.sin().exp(3).unwrap().pow(2).add_val(4.0).abs();

    // To print this beautiful matrix:
    res.print(5);
}

稀疏矩阵

use std::collections::HashMap;
use linalg_rs::{SparseMatrix, SparseMatrixData};

fn main() {
    let indexes: SparseMatrixData<f64> = smd![
        ((0, 1), 2.0), 
        ((1, 0), 4.0), 
        ((2, 3), 6.0), 
        ((3, 3), 8.0)
    ];

    let sparse = SparseMatrix::<f64>::new(indexes, (4, 4));

    sparse.print(3);
}

更多示例可以在这里找到

功能

  • 易于使用!
  • 非常快
  • 线性代数模块在f32和f64上完全功能
  • 优化了稀疏和稠密矩阵的矩阵乘法
  • 可以轻松地在稀疏和稠密矩阵之间转换
  • 支持Serde
  • 支持所有有符号数值数据类型
  • 可以跨线程发送
  • 稀疏矩阵

依赖项

~2.4–3.5MB
~66K SLoC