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,仅在某些平台上比f32x86/x86_64 快) - 绝对值
针对 f32 和 f64 的 2x2 和 3x3 矩阵
- 标量运算(加法,减法,取反,乘法,除法)
- 矩阵运算(矩阵-矩阵和矩阵-向量 乘法)
- 迹(
tr)和 行列式(det) - 安全(
inv)和不安全(inv_unsafe)的 逆 - 转置(
transp) - 旋转矩阵
当前功能
llml_rand
实现了所有数据类型的 随机 生成,使用 rand
llml_serde
实现了所有数据类型的 序列化 和 反序列化,使用 serde
依赖项
~2MB
~44K SLoC