2个版本

0.1.1 2020年10月1日
0.1.0 2020年9月29日

1676 in 算法


用于 2 个 crate(通过 sprs_suitesparse_camd

MIT/Apache

51KB
757

sprs, Rust的稀疏矩阵

Build status crates.io

sprs使用纯Rust实现了一些稀疏矩阵数据结构和线性代数算法。

API仍在开发中,对其边缘的反馈非常受欢迎 :)

功能

结构

  • CSR/CSC矩阵
  • 三元组矩阵
  • 稀疏向量

操作

  • 稀疏矩阵/稀疏向量乘积
  • 稀疏矩阵/稀疏矩阵乘积
  • 稀疏矩阵/稀疏矩阵加法、减法
  • 稀疏向量/稀疏向量加法、减法、点积
  • 稀疏/稠密矩阵操作

算法

  • 压缩稀疏矩阵的外迭代器
  • 稀疏向量迭代
  • 稀疏向量联合非零迭代
  • 简单的稀疏Cholesky分解(需要选择LGPL许可)
  • 使用稠密右端项的稀疏三角求解

示例

矩阵构建

  use sprs::{CsMat, CsMatOwned, CsVec};
  let eye : CsMatOwned<f64> = CsMat::eye(3);
  let a = CsMat::new_csc((3, 3),
                         vec![0, 2, 4, 5],
                         vec![0, 1, 0, 2, 2],
                         vec![1., 2., 3., 4., 5.]);

矩阵向量乘法

  use sprs::{CsMat, CsVec};
  let eye = CsMat::eye(5);
  let x = CsVec::new(5, vec![0, 2, 4], vec![1., 2., 3.]);
  let y = &eye * &x;
  assert_eq!(x, y);

矩阵矩阵乘法、加法

  use sprs::{CsMat, CsVec};
  let eye = CsMat::eye(3);
  let a = CsMat::new_csc((3, 3),
                         vec![0, 2, 4, 5],
                         vec![0, 1, 0, 2, 2],
                         vec![1., 2., 3., 4., 5.]);
  let b = &eye * &a;
  assert_eq!(a, b.to_csr());

更完整的示例,请确保查看 热扩散 示例。

文档

文档可在 docs.rs 查找。

变更日志

请参阅 变更日志

支持的最低Rust版本

目前支持的最低Rust版本是1.64。在1.0版本之前,增加MSRV不会被考虑为重大更改,但将尽力避免破坏。

许可

许可为以下之一

由您选择。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交以包含在作品中的任何贡献,将双重许可如上所述,不附加任何额外条款或条件。

请参阅贡献指南,了解有关贡献的更多信息。


lib.rs:

SuiteSparse 组件 CAMD 的 FFI 绑定

对于静态构建,激活 "static" 功能,该功能从源代码构建 CAMD 并将其静态包含。

依赖项