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 r10052478 = wj;
double r10052479 = exp(r10052478);
double r10052480 = r10052478 * r10052479;
double r10052481 = x;
double r10052482 = r10052480 - r10052481;
double r10052483 = r10052479 + r10052480;
double r10052484 = r10052482 / r10052483;
double r10052485 = r10052478 - r10052484;
return r10052485;
}
double f(double wj, double x) {
double r10052486 = x;
double r10052487 = wj;
double r10052488 = exp(r10052487);
double r10052489 = r10052488 * r10052487;
double r10052490 = r10052488 + r10052489;
double r10052491 = r10052486 / r10052490;
double r10052492 = r10052487 * r10052487;
double r10052493 = r10052492 * r10052492;
double r10052494 = r10052487 * r10052492;
double r10052495 = r10052493 - r10052494;
double r10052496 = r10052492 + r10052495;
double r10052497 = r10052491 + r10052496;
return r10052497;
}




Bits error versus wj




Bits error versus x
Results
| Original | 13.5 |
|---|---|
| Target | 12.9 |
| Herbie | 1.1 |
Initial program 13.5
rmApplied div-sub13.5
Applied associate--r-7.5
Taylor expanded around 0 1.1
Simplified1.1
Final simplification1.1
herbie shell --seed 2019172
(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))))))