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 r11456611 = wj;
double r11456612 = exp(r11456611);
double r11456613 = r11456611 * r11456612;
double r11456614 = x;
double r11456615 = r11456613 - r11456614;
double r11456616 = r11456612 + r11456613;
double r11456617 = r11456615 / r11456616;
double r11456618 = r11456611 - r11456617;
return r11456618;
}
double f(double wj, double x) {
double r11456619 = x;
double r11456620 = wj;
double r11456621 = exp(r11456620);
double r11456622 = r11456621 * r11456620;
double r11456623 = r11456621 + r11456622;
double r11456624 = r11456619 / r11456623;
double r11456625 = r11456620 * r11456620;
double r11456626 = r11456625 * r11456625;
double r11456627 = r11456620 * r11456625;
double r11456628 = r11456626 - r11456627;
double r11456629 = r11456625 + r11456628;
double r11456630 = r11456624 + r11456629;
return r11456630;
}




Bits error versus wj




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