18 个稳定版本
2.1.3 | 2023年6月23日 |
---|---|
2.1.2 | 2023年6月18日 |
1.4.2 | 2023年6月13日 |
在 科学 类别中排名第 979
每月下载量 121 次
130KB
2K SLoC
糖糖 - 使用 Rust 编写的线性代数库
Rust 中的线性代数!
使用 rayon 并行化,支持多种常见数据类型,sukker 力求使矩阵运算对用户来说更简单,同时仍为您提供应得的性能。
常规矩阵已具备许多功能,而稀疏矩阵则拥有大多数功能。当您想从一种转换到另一种时,只需调用 from_dense
或 from_sparse
以快速轻松地转换!
需要功能?请告诉我们!
甚至有自定义声明性宏来为您的稀疏矩阵创建 hashmap!
示例
稠密矩阵
use sukker::{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 sukker::{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);
}
更多示例可以在 这里 找到
文档
完整 API 文档可以在 这里 找到。
特性
- 易于使用!
- 极快!
- 线性代数模块在 f32 和 f64 上完全功能化
- 优化了稀疏和稠密矩阵的矩阵乘法
- 能够轻松地在稀疏矩阵和稠密矩阵之间转换
- 支持 Serde
- 支持所有有符号数值数据类型
- 可以在线程间传递
- 稀疏矩阵
依赖
~2.3–3MB
~64K SLoC