#函数 #逼近

nikisas

以速度和实现简单性为代价,以精度为代价实现常见数学函数,支持no_std环境。

1个不稳定版本

0.1.0 2020年9月25日

#1229 in 数学

MIT许可协议

47KB
757 代码行

nikisas

以速度和实现简单性为代价,以精度为代价实现常见数学函数,支持no_std环境。

实现中包含算法解释和用于查找多项式系数的Sollya程序,位于sollya目录。

如果您需要小内存占用和性能开销合理的数学函数实现,请使用micromath crate。

用法

use nikisas::{ln, consts::E};
assert_eq!(ln(E), 1.0);

文档

请参阅crates.io上的文档

许可协议

nikisas遵循MIT许可协议。请自由使用、贡献或传播。


lib.rs:

以速度和实现简单性为代价,以精度为代价实现常见数学函数,支持no_std环境。

实现中包含算法解释和用于查找多项式系数的Sollya程序,位于sollya目录。

如果您需要小内存占用和性能开销合理的数学函数实现,请使用micromath crate。

用法

use nikisas::{ln, consts::E};
assert_eq!(ln(E), 1.0);

包含的内容

不多。这(至少目前)是教育目的。以下是列表

  • 指数 - exp(x)pow(x, p)pow2(p)pow10(p)
  • 对数 - ln(x)log2(x)log10(x)
  • 三角函数 - sin(x), cos(x), tan(x), cot(x)

请注意,三角函数在某些输入值上的实现结果较差(因此它们未能通过我们当前的测试)。

错误

这些实现已经彻底测试,误差被限制在0.1% 4位小数以内。测试涉及从有效区间进行随机抽样。误差计算的基准是Rust标准库中相应函数的实现。

真实误差的表格在此

函数 最大相对 均方根(整体质量)
cos N/A N/A
cot N/A N/A
exp 4.15e-6 1.39e-6
ln 9.60e-8 4.05e-8
log2 1.29e-7 4.08e-8
log10 2.02e-7 6.24e-8
pow2 1.19e-7 3.53e-8
pow10 4.47e-6 1.49e-6
sin N/A N/A
tan N/A N/A

名称

这就是故事。如果我们把“libm”(广泛使用的数学库缩写)读作“lib em”并且不在中间停顿,我们就会得到单词“libem”。只要稍加想象,我们就能听到“líbem” /'liːbɛm/,这是捷克语单词líbáme /'liːbaːmɛ/的口语形式,意思是“我们亲吻”。现在 wekiss 并不是一个很酷的库名,所以它需要先通过英语-世界语翻译,然后我们在这里: nikisas。命名是困难的,但至少你可以在使用这个小软件的同时体验爱情。

许可协议

nikisas采用MIT许可。请随意使用它,贡献或传播这个信息。

无运行时依赖