wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}}\frac{x}{e^{wj} + e^{wj} \cdot wj} + \left(wj \cdot wj + \left(\left(wj \cdot wj\right) \cdot \left(wj \cdot wj\right) - wj \cdot \left(wj \cdot wj\right)\right)\right)double f(double wj, double x) {
double r4054011 = wj;
double r4054012 = exp(r4054011);
double r4054013 = r4054011 * r4054012;
double r4054014 = x;
double r4054015 = r4054013 - r4054014;
double r4054016 = r4054012 + r4054013;
double r4054017 = r4054015 / r4054016;
double r4054018 = r4054011 - r4054017;
return r4054018;
}
double f(double wj, double x) {
double r4054019 = x;
double r4054020 = wj;
double r4054021 = exp(r4054020);
double r4054022 = r4054021 * r4054020;
double r4054023 = r4054021 + r4054022;
double r4054024 = r4054019 / r4054023;
double r4054025 = r4054020 * r4054020;
double r4054026 = r4054025 * r4054025;
double r4054027 = r4054020 * r4054025;
double r4054028 = r4054026 - r4054027;
double r4054029 = r4054025 + r4054028;
double r4054030 = r4054024 + r4054029;
return r4054030;
}




Bits error versus wj




Bits error versus x
Results
| Original | 13.7 |
|---|---|
| Target | 13.1 |
| Herbie | 1.1 |
Initial program 13.7
rmApplied div-sub13.7
Applied associate--r-7.7
Taylor expanded around 0 1.1
Simplified1.1
Final simplification1.1
herbie shell --seed 2019152
(FPCore (wj x)
:name "Jmat.Real.lambertw, newton loop step"
:herbie-target
(- wj (- (/ wj (+ wj 1)) (/ x (+ (exp wj) (* wj (exp wj))))))
(- wj (/ (- (* wj (exp wj)) x) (+ (exp wj) (* wj (exp wj))))))