1个稳定版本
1.1.2 | 2023年10月22日 |
---|
#1505 in 数学
130KB
2K SLoC
linalg-rs - 使用Rust编写的线性代数库
在Rust中实现线性代数!
使用rayon并行化,支持多种常见数据类型,linalg-rs旨在让用户更容易进行矩阵运算,同时仍然提供用户应得的性能。
常规矩阵具有许多已准备好的功能,而稀疏矩阵则具有大部分功能。当您想要在这两者之间切换时,只需调用 from_dense
或 from_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