18 个稳定版本

2.1.3 2023年6月23日
2.1.2 2023年6月18日
1.4.2 2023年6月13日

科学 类别中排名第 979

Download history 1/week @ 2024-07-01

每月下载量 121

MIT/Apache

130KB
2K SLoC

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

Build Status Documentation Crates.io Coverage Status Maintenance License

Rust 中的线性代数!

使用 rayon 并行化,支持多种常见数据类型,sukker 力求使矩阵运算对用户来说更简单,同时仍为您提供应得的性能。

常规矩阵已具备许多功能,而稀疏矩阵则拥有大多数功能。当您想从一种转换到另一种时,只需调用 from_densefrom_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