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 每月下载量
57KB
2.5K SLoC
RustAlgebloat
你喜欢模板膨胀吗?你认为等待你的程序编译很酷吗?你认为复杂的错误信息是自切片面包以来最好的东西吗?如果是这样,这个线性代数库就是为你准备的!
包
- algebloat - 主库。
- algebloat_macros - 有用的宏。
文档
见这里。
示例
一些基本操作和行访问(除了在初始矩阵创建期间没有分配!)
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