
Results
Herbie found 11 alternatives:
| Alternative | Accuracy | Speedup |
|---|
| Original | 77.4% |
|---|---|
| Target | 78.5% |
| Herbie | 98.0% |
if (-.f64 wj (/.f64 (-.f64 (*.f64 wj (exp.f64 wj)) x) (+.f64 (exp.f64 wj) (*.f64 wj (exp.f64 wj))))) < 5e-31Initial program 72.9%
sub-neg72.9%
div-sub72.9%
sub-neg72.9%
+-commutative72.9%
distribute-neg-in72.9%
remove-double-neg72.9%
sub-neg72.9%
div-sub72.9%
distribute-rgt1-in73.4%
associate-/l/73.4%
Simplified73.4%
Taylor expanded in wj around 0 99.1%
if 5e-31 < (-.f64 wj (/.f64 (-.f64 (*.f64 wj (exp.f64 wj)) x) (+.f64 (exp.f64 wj) (*.f64 wj (exp.f64 wj))))) Initial program 93.0%
sub-neg93.0%
div-sub93.0%
sub-neg93.0%
+-commutative93.0%
distribute-neg-in93.0%
remove-double-neg93.0%
sub-neg93.0%
div-sub93.0%
distribute-rgt1-in95.7%
associate-/l/95.7%
Simplified99.8%
Final simplification99.3%
if wj < -1.79999999999999997e-7Initial program 47.9%
sub-neg47.9%
div-sub47.9%
sub-neg47.9%
+-commutative47.9%
distribute-neg-in47.9%
remove-double-neg47.9%
sub-neg47.9%
div-sub47.9%
distribute-rgt1-in97.9%
associate-/l/97.9%
Simplified97.9%
if -1.79999999999999997e-7 < wj Initial program 79.4%
sub-neg79.4%
div-sub79.4%
sub-neg79.4%
+-commutative79.4%
distribute-neg-in79.4%
remove-double-neg79.4%
sub-neg79.4%
div-sub79.4%
distribute-rgt1-in79.4%
associate-/l/79.3%
Simplified80.5%
Taylor expanded in wj around 0 98.8%
Final simplification98.8%
if wj < -5.59999999999999969e-9Initial program 60.8%
sub-neg60.8%
div-sub60.8%
sub-neg60.8%
+-commutative60.8%
distribute-neg-in60.8%
remove-double-neg60.8%
sub-neg60.8%
div-sub60.8%
distribute-rgt1-in98.3%
associate-/l/98.3%
Simplified98.3%
if -5.59999999999999969e-9 < wj Initial program 79.2%
sub-neg79.2%
div-sub79.2%
sub-neg79.2%
+-commutative79.2%
distribute-neg-in79.2%
remove-double-neg79.2%
sub-neg79.2%
div-sub79.2%
distribute-rgt1-in79.2%
associate-/l/79.2%
Simplified80.4%
Taylor expanded in wj around 0 79.2%
Taylor expanded in wj around 0 98.8%
Taylor expanded in x around 0 98.8%
unpow298.8%
Simplified98.8%
Final simplification98.8%
Initial program 78.6%
sub-neg78.6%
div-sub78.6%
sub-neg78.6%
+-commutative78.6%
distribute-neg-in78.6%
remove-double-neg78.6%
sub-neg78.6%
div-sub78.6%
distribute-rgt1-in79.8%
associate-/l/79.8%
Simplified81.0%
Taylor expanded in wj around 0 78.2%
Taylor expanded in wj around 0 97.0%
Taylor expanded in x around 0 96.9%
unpow296.9%
Simplified96.9%
Taylor expanded in x around 0 96.9%
Final simplification96.9%
Initial program 78.6%
sub-neg78.6%
div-sub78.6%
sub-neg78.6%
+-commutative78.6%
distribute-neg-in78.6%
remove-double-neg78.6%
sub-neg78.6%
div-sub78.6%
distribute-rgt1-in79.8%
associate-/l/79.8%
Simplified81.0%
Taylor expanded in wj around 0 78.2%
Taylor expanded in wj around 0 97.0%
Taylor expanded in x around 0 96.9%
unpow296.9%
Simplified96.9%
Final simplification96.9%
Initial program 78.6%
sub-neg78.6%
div-sub78.6%
sub-neg78.6%
+-commutative78.6%
distribute-neg-in78.6%
remove-double-neg78.6%
sub-neg78.6%
div-sub78.6%
distribute-rgt1-in79.8%
associate-/l/79.8%
Simplified81.0%
Taylor expanded in wj around 0 78.2%
Taylor expanded in x around inf 87.2%
+-commutative87.2%
neg-mul-187.2%
unsub-neg87.2%
div-sub87.2%
unsub-neg87.2%
+-commutative87.2%
mul-1-neg87.2%
metadata-eval87.2%
distribute-lft-in87.2%
metadata-eval87.2%
sub-neg87.2%
associate-/r/87.0%
associate-/l*87.2%
associate-*r*87.2%
Simplified87.2%
Final simplification87.2%
Initial program 78.6%
sub-neg78.6%
div-sub78.6%
sub-neg78.6%
+-commutative78.6%
distribute-neg-in78.6%
remove-double-neg78.6%
sub-neg78.6%
div-sub78.6%
distribute-rgt1-in79.8%
associate-/l/79.8%
Simplified81.0%
Taylor expanded in wj around 0 78.2%
Taylor expanded in x around inf 87.2%
+-commutative87.2%
neg-mul-187.2%
unsub-neg87.2%
div-sub87.2%
unsub-neg87.2%
+-commutative87.2%
mul-1-neg87.2%
metadata-eval87.2%
distribute-lft-in87.2%
metadata-eval87.2%
sub-neg87.2%
associate-/r/87.0%
associate-/l*87.2%
associate-*r*87.2%
Simplified87.2%
Taylor expanded in x around 0 87.2%
sub-neg87.2%
+-commutative87.2%
distribute-rgt1-in87.2%
distribute-lft-neg-in87.2%
unsub-neg87.2%
Simplified87.2%
Final simplification87.2%
Initial program 78.6%
sub-neg78.6%
div-sub78.6%
sub-neg78.6%
+-commutative78.6%
distribute-neg-in78.6%
remove-double-neg78.6%
sub-neg78.6%
div-sub78.6%
distribute-rgt1-in79.8%
associate-/l/79.8%
Simplified81.0%
Taylor expanded in wj around 0 87.2%
Final simplification87.2%
Initial program 78.6%
sub-neg78.6%
div-sub78.6%
sub-neg78.6%
+-commutative78.6%
distribute-neg-in78.6%
remove-double-neg78.6%
sub-neg78.6%
div-sub78.6%
distribute-rgt1-in79.8%
associate-/l/79.8%
Simplified81.0%
Taylor expanded in x around inf 88.8%
Taylor expanded in wj around 0 87.2%
*-commutative87.2%
Simplified87.2%
Final simplification87.2%
Initial program 78.6%
sub-neg78.6%
div-sub78.6%
sub-neg78.6%
+-commutative78.6%
distribute-neg-in78.6%
remove-double-neg78.6%
sub-neg78.6%
div-sub78.6%
distribute-rgt1-in79.8%
associate-/l/79.8%
Simplified81.0%
Taylor expanded in wj around inf 4.3%
Final simplification4.3%
Initial program 78.6%
sub-neg78.6%
div-sub78.6%
sub-neg78.6%
+-commutative78.6%
distribute-neg-in78.6%
remove-double-neg78.6%
sub-neg78.6%
div-sub78.6%
distribute-rgt1-in79.8%
associate-/l/79.8%
Simplified81.0%
Taylor expanded in wj around 0 86.6%
Final simplification86.6%
herbie shell --seed 2023166
(FPCore (wj x)
:name "Jmat.Real.lambertw, newton loop step"
:precision binary64
:herbie-target
(- wj (- (/ wj (+ wj 1.0)) (/ x (+ (exp wj) (* wj (exp wj))))))
(- wj (/ (- (* wj (exp wj)) x) (+ (exp wj) (* wj (exp wj))))))