
Results
Herbie found 9 alternatives:
| Alternative | Accuracy | Speedup |
|---|
if x < -1e8Initial program 1.7%
*-commutative1.7%
Simplified1.7%
Taylor expanded in x around inf 100.0%
if -1e8 < x < 1e4Initial program 99.9%
*-commutative99.9%
Simplified99.9%
if 1e4 < x Initial program 5.7%
*-commutative5.7%
Simplified5.6%
Taylor expanded in x around inf 100.0%
associate-*r/100.0%
metadata-eval100.0%
associate-*r/100.0%
metadata-eval100.0%
Simplified100.0%
Final simplification100.0%
if (*.f64 (/.f64 (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 1 (*.f64 1049934947/10000000000 (*.f64 x x))) (*.f64 106015151/2500000000 (*.f64 (*.f64 x x) (*.f64 x x)))) (*.f64 36322091/5000000000 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)))) (*.f64 2532017/5000000000 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)))) (*.f64 1789971/10000000000 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)))) (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 1 (*.f64 7715471019/10000000000 (*.f64 x x))) (*.f64 2909738639/10000000000 (*.f64 (*.f64 x x) (*.f64 x x)))) (*.f64 694555761/10000000000 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)))) (*.f64 70002721/5000000000 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)))) (*.f64 1665589/2000000000 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)))) (*.f64 (*.f64 2 1789971/10000000000) (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)) (*.f64 x x))))) x) < 0.10000000000000001Initial program 98.5%
*-commutative98.5%
Simplified98.5%
if 0.10000000000000001 < (*.f64 (/.f64 (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 1 (*.f64 1049934947/10000000000 (*.f64 x x))) (*.f64 106015151/2500000000 (*.f64 (*.f64 x x) (*.f64 x x)))) (*.f64 36322091/5000000000 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)))) (*.f64 2532017/5000000000 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)))) (*.f64 1789971/10000000000 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)))) (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 1 (*.f64 7715471019/10000000000 (*.f64 x x))) (*.f64 2909738639/10000000000 (*.f64 (*.f64 x x) (*.f64 x x)))) (*.f64 694555761/10000000000 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)))) (*.f64 70002721/5000000000 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)))) (*.f64 1665589/2000000000 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)))) (*.f64 (*.f64 2 1789971/10000000000) (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)) (*.f64 x x))))) x) Initial program 0.0%
*-commutative0.0%
Simplified0.0%
Taylor expanded in x around inf 100.0%
Final simplification99.2%
if (*.f64 (/.f64 (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 1 (*.f64 1049934947/10000000000 (*.f64 x x))) (*.f64 106015151/2500000000 (*.f64 (*.f64 x x) (*.f64 x x)))) (*.f64 36322091/5000000000 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)))) (*.f64 2532017/5000000000 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)))) (*.f64 1789971/10000000000 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)))) (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 1 (*.f64 7715471019/10000000000 (*.f64 x x))) (*.f64 2909738639/10000000000 (*.f64 (*.f64 x x) (*.f64 x x)))) (*.f64 694555761/10000000000 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)))) (*.f64 70002721/5000000000 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)))) (*.f64 1665589/2000000000 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)))) (*.f64 (*.f64 2 1789971/10000000000) (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)) (*.f64 x x))))) x) < 0.10000000000000001Initial program 98.5%
if 0.10000000000000001 < (*.f64 (/.f64 (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 1 (*.f64 1049934947/10000000000 (*.f64 x x))) (*.f64 106015151/2500000000 (*.f64 (*.f64 x x) (*.f64 x x)))) (*.f64 36322091/5000000000 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)))) (*.f64 2532017/5000000000 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)))) (*.f64 1789971/10000000000 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)))) (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 (+.f64 1 (*.f64 7715471019/10000000000 (*.f64 x x))) (*.f64 2909738639/10000000000 (*.f64 (*.f64 x x) (*.f64 x x)))) (*.f64 694555761/10000000000 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)))) (*.f64 70002721/5000000000 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)))) (*.f64 1665589/2000000000 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)))) (*.f64 (*.f64 2 1789971/10000000000) (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)) (*.f64 x x)) (*.f64 x x))))) x) Initial program 0.0%
*-commutative0.0%
Simplified0.0%
Taylor expanded in x around inf 100.0%
Final simplification99.2%
if x < -1.1200000000000001 or 1.1200000000000001 < x Initial program 5.2%
*-commutative5.2%
Simplified5.2%
Taylor expanded in x around inf 100.0%
associate-*r/100.0%
metadata-eval100.0%
associate-*r/100.0%
metadata-eval100.0%
Simplified100.0%
if -1.1200000000000001 < x < 1.1200000000000001Initial program 100.0%
*-commutative100.0%
Simplified100.0%
Taylor expanded in x around 0 98.5%
*-commutative98.5%
unpow298.5%
Simplified98.5%
clear-num98.3%
associate-/r/98.5%
+-commutative98.5%
associate-*l*98.5%
fma-def98.5%
Applied egg-rr98.5%
fma-udef98.5%
Applied egg-rr98.5%
Final simplification99.3%
if x < -1.3999999999999999 or 1.4199999999999999 < x Initial program 5.2%
*-commutative5.2%
Simplified5.2%
Taylor expanded in x around inf 99.2%
if -1.3999999999999999 < x < 1.4199999999999999Initial program 100.0%
*-commutative100.0%
Simplified100.0%
Taylor expanded in x around 0 98.5%
*-commutative98.5%
unpow298.5%
Simplified98.5%
clear-num98.3%
associate-/r/98.5%
+-commutative98.5%
associate-*l*98.5%
fma-def98.5%
Applied egg-rr98.5%
fma-udef98.5%
Applied egg-rr98.5%
Final simplification98.9%
if x < -0.78000000000000003 or 0.78000000000000003 < x Initial program 5.2%
*-commutative5.2%
Simplified5.2%
Taylor expanded in x around inf 99.2%
if -0.78000000000000003 < x < 0.78000000000000003Initial program 100.0%
*-commutative100.0%
Simplified100.0%
Taylor expanded in x around 0 98.5%
unpow298.5%
Simplified98.5%
Final simplification98.9%
if x < -1.3999999999999999 or 1.4199999999999999 < x Initial program 5.2%
*-commutative5.2%
Simplified5.2%
Taylor expanded in x around inf 99.2%
if -1.3999999999999999 < x < 1.4199999999999999Initial program 100.0%
*-commutative100.0%
Simplified100.0%
Taylor expanded in x around 0 98.5%
*-commutative98.5%
unpow298.5%
Simplified98.5%
Final simplification98.9%
if x < -0.69999999999999996 or 0.69999999999999996 < x Initial program 5.2%
*-commutative5.2%
Simplified5.2%
Taylor expanded in x around inf 99.2%
if -0.69999999999999996 < x < 0.69999999999999996Initial program 100.0%
*-commutative100.0%
Simplified100.0%
Taylor expanded in x around 0 97.8%
Final simplification98.5%
Initial program 50.4%
*-commutative50.4%
Simplified50.4%
Taylor expanded in x around 0 48.5%
Final simplification48.5%
herbie shell --seed 2023166
(FPCore (x)
:name "Jmat.Real.dawson"
:precision binary64
(* (/ (+ (+ (+ (+ (+ 1.0 (* 0.1049934947 (* x x))) (* 0.0424060604 (* (* x x) (* x x)))) (* 0.0072644182 (* (* (* x x) (* x x)) (* x x)))) (* 0.0005064034 (* (* (* (* x x) (* x x)) (* x x)) (* x x)))) (* 0.0001789971 (* (* (* (* (* x x) (* x x)) (* x x)) (* x x)) (* x x)))) (+ (+ (+ (+ (+ (+ 1.0 (* 0.7715471019 (* x x))) (* 0.2909738639 (* (* x x) (* x x)))) (* 0.0694555761 (* (* (* x x) (* x x)) (* x x)))) (* 0.0140005442 (* (* (* (* x x) (* x x)) (* x x)) (* x x)))) (* 0.0008327945 (* (* (* (* (* x x) (* x x)) (* x x)) (* x x)) (* x x)))) (* (* 2.0 0.0001789971) (* (* (* (* (* (* x x) (* x x)) (* x x)) (* x x)) (* x x)) (* x x))))) x))