19个版本 (4个破坏性)
0.5.3 | 2024年8月9日 |
---|---|
0.5.2 | 2024年8月6日 |
0.4.4 | 2024年8月2日 |
0.4.0 | 2024年7月31日 |
0.1.1 | 2024年7月28日 |
#142 in 数学
1,238 每月下载量
在 5 个crate中使用了(直接使用2个)
80KB
2K SLoC
lambert_w
使用Toshio Fukushima方法快速评估Lambert W函数的主分支和次分支的实值部分,精确到24或50位。
该方法通过将函数的定义域分割成子域,并在每个子域中使用输入值的简单变换上的有理函数来描述函数。
在代码中,它通过输入值的条件切换,然后是平方根(可能还有除法)、对数,然后是一系列的乘法和加法固定常数的操作,并以除法结束。
具有50位精度的函数使用有理函数中的更高次数的多项式,因此有更多的乘法和加法固定常数操作。
#![no_std]
兼容。
示例
使用Lambert W函数的主分支计算Omega常数的值,精确到50位
use lambert_w::lambert_w0;
let Ω = lambert_w0(1.0);
assert_abs_diff_eq!(Ω, 0.5671432904097838);
或者只精确到24位,但执行时间更快
use lambert_w::sp_lambert_w0;
let Ω = sp_lambert_w0(1.0);
assert_abs_diff_eq!(Ω, 0.5671432904097838, epsilon = 1e-7);
在-ln(2)/2处评估Lambert W函数的次分支,精确到50和24位
use lambert_w::{lambert_wm1, sp_lambert_wm1};
let z = -f64::ln(2.0) / 2.0;
let mln4_50b = lambert_wm1(z);
let mln4_24b = sp_lambert_wm1(z);
assert_abs_diff_eq!(mln4_50b, -f64::ln(4.0));
assert_abs_diff_eq!(mln4_24b, -f64::ln(4.0), epsilon = 1e-9);
许可证
根据您的选择,许可协议为
- Apache License, Version 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确说明,否则您根据Apache-2.0许可证定义的任何有意提交的工作,将按照上述方式双重许可,不附加任何额外条款或条件。
依赖关系
~440KB