
Herbie found 7 alternatives:
| Alternative | Accuracy | Speedup |
|---|
if (/.f64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (+.f64 (+.f64 alpha beta) (*.f64 2 i))) (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 2 i)) 2)) < -0.999999980000000011Initial program 3.4%
associate-/l/2.6%
*-commutative2.6%
times-frac13.0%
associate-+l+13.0%
fma-def13.0%
+-commutative13.0%
fma-def13.0%
Simplified13.0%
frac-times2.6%
*-commutative2.6%
fma-def2.6%
fma-udef2.6%
+-commutative2.6%
associate-+r+2.6%
add-log-exp2.2%
Applied egg-rr13.1%
Taylor expanded in alpha around inf 93.5%
if -0.999999980000000011 < (/.f64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (+.f64 (+.f64 alpha beta) (*.f64 2 i))) (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 2 i)) 2)) Initial program 82.8%
associate-/l/82.2%
*-commutative82.2%
times-frac99.8%
associate-+l+99.8%
fma-def99.8%
+-commutative99.8%
fma-def99.8%
Simplified99.8%
Final simplification98.4%
if (/.f64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (+.f64 (+.f64 alpha beta) (*.f64 2 i))) (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 2 i)) 2)) < -0.5Initial program 4.5%
associate-/l/3.6%
*-commutative3.6%
times-frac13.9%
associate-+l+13.9%
fma-def13.9%
+-commutative13.9%
fma-def13.9%
Simplified13.9%
frac-times3.6%
*-commutative3.6%
fma-def3.6%
fma-udef3.6%
+-commutative3.6%
associate-+r+3.6%
add-log-exp3.3%
Applied egg-rr13.9%
Taylor expanded in alpha around inf 92.9%
if -0.5 < (/.f64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (+.f64 (+.f64 alpha beta) (*.f64 2 i))) (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 2 i)) 2)) Initial program 82.9%
Taylor expanded in beta around inf 98.0%
Final simplification96.9%
if alpha < 1.62e81Initial program 80.8%
Taylor expanded in beta around inf 94.9%
if 1.62e81 < alpha Initial program 4.9%
associate-/l/4.1%
*-commutative4.1%
times-frac17.2%
associate-+l+17.2%
fma-def17.2%
+-commutative17.2%
fma-def17.2%
Simplified17.2%
Taylor expanded in i around 0 9.9%
+-commutative9.9%
Simplified9.9%
Taylor expanded in alpha around inf 71.9%
Final simplification90.1%
if alpha < 1.85e81Initial program 80.8%
associate-/l/80.2%
*-commutative80.2%
times-frac97.0%
associate-+l+97.0%
fma-def97.0%
+-commutative97.0%
fma-def97.0%
Simplified97.0%
Taylor expanded in i around 0 86.5%
+-commutative86.5%
Simplified86.5%
Taylor expanded in alpha around 0 89.4%
if 1.85e81 < alpha Initial program 4.9%
associate-/l/4.1%
*-commutative4.1%
times-frac17.2%
associate-+l+17.2%
fma-def17.2%
+-commutative17.2%
fma-def17.2%
Simplified17.2%
Taylor expanded in i around 0 9.9%
+-commutative9.9%
Simplified9.9%
Taylor expanded in beta around 0 5.4%
+-commutative5.4%
Simplified5.4%
Taylor expanded in alpha around inf 54.0%
Final simplification82.1%
if alpha < 5.1000000000000002e76Initial program 80.8%
associate-/l/80.2%
*-commutative80.2%
times-frac97.0%
associate-+l+97.0%
fma-def97.0%
+-commutative97.0%
fma-def97.0%
Simplified97.0%
Taylor expanded in i around 0 86.5%
+-commutative86.5%
Simplified86.5%
Taylor expanded in alpha around 0 89.4%
if 5.1000000000000002e76 < alpha Initial program 4.9%
associate-/l/4.1%
*-commutative4.1%
times-frac17.2%
associate-+l+17.2%
fma-def17.2%
+-commutative17.2%
fma-def17.2%
Simplified17.2%
Taylor expanded in i around 0 9.9%
+-commutative9.9%
Simplified9.9%
Taylor expanded in alpha around inf 71.9%
Final simplification85.8%
if beta < 1.08e27Initial program 75.7%
associate-/l/75.5%
*-commutative75.5%
times-frac77.1%
associate-+l+77.1%
fma-def77.1%
+-commutative77.1%
fma-def77.1%
Simplified77.1%
Taylor expanded in i around inf 72.4%
if 1.08e27 < beta Initial program 40.9%
associate-/l/39.4%
*-commutative39.4%
times-frac88.2%
associate-+l+88.2%
fma-def88.2%
+-commutative88.2%
fma-def88.2%
Simplified88.2%
Taylor expanded in beta around inf 72.1%
Final simplification72.3%
Initial program 65.1%
associate-/l/64.5%
*-commutative64.5%
times-frac80.5%
associate-+l+80.5%
fma-def80.5%
+-commutative80.5%
fma-def80.5%
Simplified80.5%
Taylor expanded in i around inf 59.8%
Final simplification59.8%
herbie shell --seed 2023166
(FPCore (alpha beta i)
:name "Octave 3.8, jcobi/2"
:precision binary64
:pre (and (and (> alpha -1.0) (> beta -1.0)) (> i 0.0))
(/ (+ (/ (/ (* (+ alpha beta) (- beta alpha)) (+ (+ alpha beta) (* 2.0 i))) (+ (+ (+ alpha beta) (* 2.0 i)) 2.0)) 1.0) 2.0))