
Herbie found 10 alternatives:
| Alternative | Accuracy | Speedup |
|---|
Initial program 99.9%
associate--l+99.9%
unpow299.9%
unpow199.9%
sqr-pow99.9%
associate-*r*99.9%
Simplified100.0%
Final simplification100.0%
if (*.f64 b b) < 2e20Initial program 99.8%
associate--l+99.8%
unpow299.8%
unpow199.8%
sqr-pow99.8%
associate-*r*99.9%
Simplified100.0%
Taylor expanded in b around 0 97.9%
if 2e20 < (*.f64 b b) Initial program 99.9%
associate--l+99.9%
unpow299.9%
unpow199.9%
sqr-pow99.9%
associate-*r*99.9%
Simplified100.0%
Taylor expanded in b around inf 99.0%
unpow299.0%
unpow299.0%
Simplified99.0%
Final simplification98.4%
Initial program 99.9%
Final simplification99.9%
if a < -1.12e30 or 2.05e9 < a Initial program 99.9%
associate--l+99.9%
unpow299.9%
unpow199.9%
sqr-pow99.9%
associate-*r*99.9%
Simplified100.0%
Taylor expanded in a around inf 98.3%
if -1.12e30 < a < 2.05e9Initial program 99.9%
Taylor expanded in a around 0 96.7%
unpow296.7%
Simplified96.7%
unpow296.7%
unpow296.7%
unpow-prod-down96.7%
pow-sqr96.8%
metadata-eval96.8%
+-commutative96.8%
associate--l+96.8%
*-commutative96.8%
associate-*r*96.8%
Applied egg-rr96.8%
Final simplification97.4%
if (*.f64 a a) < 2.0000000000000002e44Initial program 99.9%
Taylor expanded in a around 0 96.1%
unpow296.1%
Simplified96.1%
unpow296.1%
unpow296.1%
unpow-prod-down96.1%
pow-sqr96.2%
metadata-eval96.2%
+-commutative96.2%
associate--l+96.1%
*-commutative96.1%
associate-*r*96.1%
Applied egg-rr96.1%
+-commutative96.1%
metadata-eval96.1%
pow-prod-up96.1%
pow296.1%
pow296.1%
associate-+l-96.1%
pow296.1%
pow296.1%
pow-prod-up96.2%
metadata-eval96.2%
Applied egg-rr96.2%
if 2.0000000000000002e44 < (*.f64 a a) Initial program 99.9%
associate--l+99.9%
unpow299.9%
unpow199.9%
sqr-pow99.9%
associate-*r*100.0%
Simplified100.0%
Taylor expanded in a around inf 98.3%
Final simplification97.1%
if a < -1.4e22 or 3.3e8 < a Initial program 99.9%
associate--l+99.9%
unpow299.9%
unpow199.9%
sqr-pow99.9%
associate-*r*99.9%
Simplified100.0%
Taylor expanded in a around inf 98.3%
if -1.4e22 < a < 3.3e8Initial program 99.9%
Taylor expanded in a around 0 96.7%
unpow296.7%
Simplified96.7%
unpow296.7%
Applied egg-rr96.7%
Final simplification97.4%
Initial program 99.9%
Taylor expanded in a around 0 67.5%
unpow267.5%
Simplified67.5%
unpow267.5%
Applied egg-rr67.5%
Final simplification67.5%
if (*.f64 b b) < 0.40000000000000002Initial program 99.8%
Taylor expanded in a around 0 51.8%
unpow251.8%
Simplified51.8%
Taylor expanded in b around 0 50.4%
if 0.40000000000000002 < (*.f64 b b) Initial program 99.9%
associate--l+99.9%
unpow299.9%
unpow199.9%
sqr-pow99.9%
associate-*r*99.9%
Simplified100.0%
Taylor expanded in b around inf 95.1%
unpow295.1%
unpow295.1%
Simplified95.1%
Taylor expanded in a around 0 83.0%
unpow283.0%
*-commutative83.0%
associate-*r*83.0%
Simplified83.0%
metadata-eval83.0%
pow-sqr82.9%
pow282.9%
pow282.9%
associate-*r*82.9%
distribute-lft-out82.9%
Applied egg-rr82.9%
Final simplification66.6%
if b < -2.15000000000000001e-11 or 0.48999999999999999 < b Initial program 99.9%
associate--l+99.9%
unpow299.9%
unpow199.9%
sqr-pow99.9%
associate-*r*99.9%
Simplified100.0%
Taylor expanded in b around inf 95.1%
unpow295.1%
unpow295.1%
Simplified95.1%
Taylor expanded in a around 0 81.8%
unpow281.8%
*-commutative81.8%
associate-*r*81.8%
Simplified81.8%
metadata-eval81.8%
pow-sqr81.7%
pow281.7%
pow281.7%
associate-*r*81.7%
distribute-lft-out81.7%
Applied egg-rr81.7%
Taylor expanded in b around 0 52.0%
unpow252.0%
*-commutative52.0%
associate-*r*52.0%
Simplified52.0%
if -2.15000000000000001e-11 < b < 0.48999999999999999Initial program 99.8%
Taylor expanded in a around 0 52.6%
unpow252.6%
Simplified52.6%
Taylor expanded in b around 0 51.2%
Final simplification51.6%
Initial program 99.9%
Taylor expanded in a around 0 67.5%
unpow267.5%
Simplified67.5%
Taylor expanded in b around 0 25.5%
Final simplification25.5%
herbie shell --seed 2023166
(FPCore (a b)
:name "Bouland and Aaronson, Equation (26)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (* b b))) 1.0))