10个版本
0.2.1 | 2020年8月19日 |
---|---|
0.2.0 | 2020年8月19日 |
0.1.8 | 2020年6月29日 |
#1562 in 数学
27 每月下载次数
72KB
2K SLoC
Quick Maths
- 重要提示:此包是为nightly和const-generics设计的。
这是一个使用Rust不稳定const泛型特性的向量和矩阵算术的基本包。我只是需要一个方便做数学的工具,不想处理NDArray之类的...
此包旨在便于使用和提高效率。
示例使用
use quick_maths::{Vec3, Vector};
let a = Vec3::of(0.0);
let b = a + 1.0;
let c = b.sin();
let _dot = b.dot(&c);
// Taking elements out of the vector
let x = c.x();
let y = c.y();
let z = c.z();
// Or all at once
let Vector([i, j, k]) = c;
assert_eq!(x, i);
assert_eq!(y, j);
assert_eq!(z, k);
一些使使用更顺畅的事情
默认类型
除非您明确需要更改,类型默认设置为合理的默认值(f32)。如果您想更改默认类型,可以通过设置编译标志来更改。这允许在不必要时轻松使用库。因此,如果您需要在结构体中存储向量或矩阵,通常不需要指定类型
struct Circle {
// implicitly f32 below
center: Vec2,
radius: f32,
}
如果需要将所有默认值从f32切换到f64,可以通过指定带有default_f64
功能的依赖来实现。
一个用于向量和矩阵的API结构
其他API的一个痛点是,由于缺少const泛型,它们往往使用多个结构。尽管它们通常有统一这些结构的特性行为,但这会将代码变成特性行为的意大利面。因此,在使用和编写方面,只有一个结构体要容易得多。这个问题是依赖于不稳定的功能,但它导致代码更容易阅读。
看起来像Float
所有元素级函数都已实现。这意味着向量基本上与浮点数相同。这对于便于使用至关重要。NumPy努力创建一个在张量所有级别上统一API,在这方面与此相似。
缺少什么
仍然需要为不同维度的不同类型进行不同的乘法,但添加通用张量乘积可能很方便。
此外,还有卷积,但不知道这是否必要。
待办事项
- 添加基准测试
依赖关系
~0.4–0.9MB
~17K SLoC