1 个不稳定版本
0.1.0 | 2022 年 1 月 2 日 |
---|
#44 in #sse
7KB
138 行
低级数学库 (LLML)
实现具有高级前端和低级后端的基本数学数据类型
支持的目标
LLML 目前支持 x86/x86_64 和 ARM/aarch64,计划在未来支持 WASM,并提供适用于所有目标的 naive 实现。
指令集支持
截至今天,LLML 支持 x86/x86_64 的 SSE3 和 ARM/aarch64 的 Neon。预计将在不久的将来支持 AVX 和 AVX2 作为可选功能。
已实现的功能
针对 f32
和 f64
的复杂数
- 基本算术(加法、减法、取反、乘法、除法)
- 复杂数算术(乘法 和 除法)
- 倒数 和 共轭
- 半径、角度 和 极坐标
- 平方根、指数 和 自然对数
- 正弦、余弦 和 正切
- 整数、小数 和 复数 的幂
- 虚数的指数(
expi
) - 实数的复数平方根(
sqrtc
) - 复数幂(
powc
)和虚数幂(powci
)
针对 f32
和 f64
的 2、3 和 4 维欧几里得向量
- 基本算术(加法、减法、取反、乘法 和 除法)
- 求和(
sum
)、范数 和 单位向量 - 点积(
dot
)和 叉积(cross
) - 平方根(
sqrt
)和 快速平方根(sqrt_fast
,仅在某些平台上比f32
x86/x86_64 快) - 绝对值
针对 f32
和 f64
的 2x2 和 3x3 矩阵
- 标量运算(加法,减法,取反,乘法,除法)
- 矩阵运算(矩阵-矩阵和矩阵-向量 乘法)
- 迹(
tr
)和 行列式(det
) - 安全(
inv
)和不安全(inv_unsafe
)的 逆 - 转置(
transp
) - 旋转矩阵
当前功能
llml_rand
实现了所有数据类型的 随机 生成,使用 rand
llml_serde
实现了所有数据类型的 序列化 和 反序列化,使用 serde
依赖项
~2MB
~44K SLoC