13个版本

使用旧的Rust 2015

0.0.13 2017年6月3日
0.0.12 2016年12月28日
0.0.11 2015年11月21日
0.0.8 2015年4月17日
0.0.0 2014年12月16日

#1514 in 算法

34 每月下载量

LGPL-3.0

57KB
2.5K SLoC

RustAlgebloat

Build Status

你喜欢模板膨胀吗?你认为等待你的程序编译很酷吗?你认为复杂的错误信息是自切片面包以来最好的东西吗?如果是这样,这个线性代数库就是为你准备的!

文档

这里

示例

一些基本操作和行访问(除了在初始矩阵创建期间没有分配!)

let m = &mat![1.0, 2.0, 3.0;
              4.0, 5.0, 6.0;
              7.0, 8.0, 9.0];
println!("m =\n{}", m);
let t1 = m.t();
println!("t1 =\n{}", t1);
let r = m.row(0) + t1.row(0);
println!("r =\n{}", r);

let m2 = stack![m.view( ..2, ..2), m.view( ..2, 1..);
                m.view(1..,  ..2), m.view(1..,  1..)];
println!("m2 =\n{}", m2);

输出

m =1 2 3⎤
⎢4 5 6⎥
⎣7 8 9⎦
t1 =1 4 7⎤
⎢2 5 8⎥
⎣3 6 9⎦
r =
[2 6 10]
m2 =1 2 2 3⎤
⎢4 5 5 6⎥
⎢4 5 5 6⎥
⎣7 8 8 9

功能

  • WIP! 这非常不完整...请保持关注!
  • 表达式模板(好吧,更像是表达式特质,因为这是Rust)在原则上提供无分配速度(仅在有优化的情况下可用)的同时确保所有上述注意事项!
  • 矩阵
    • 逐元素操作(右侧可以是标量)
      • 二元运算符(*/-+
      • 一元否定
      • 二元函数
        • pow
        • atan2
        • hypot
      • 一元函数
        • 三角/指数函数
        • ceil
        • floor
        • ln
        • log10
        • sqrt
      • 减少
        • min
        • max
    • 行和列访问
    • 视图
    • 乘法
    • 重塑
    • 堆叠
    • 平面视图(将矩阵视为向量)
      • 元素访问
      • 切片

构建

通过Cargo

./cargo_util.py --build

依赖项