
Results
Herbie found 15 alternatives:
| Alternative | Accuracy | Speedup |
|---|
Initial program 99.4%
cos-diff99.4%
+-commutative99.4%
*-commutative99.4%
Applied egg-rr99.4%
sin-diff99.8%
sub-neg99.8%
Applied egg-rr99.8%
sub-neg99.8%
Simplified99.8%
Final simplification99.8%
Initial program 99.4%
cos-diff99.4%
+-commutative99.4%
*-commutative99.4%
Applied egg-rr99.4%
Final simplification99.4%
if (cos.f64 phi1) < -0.650000000000000022Initial program 99.8%
Taylor expanded in phi2 around 0 80.3%
sub-neg80.3%
+-commutative80.3%
neg-mul-180.3%
neg-mul-180.3%
remove-double-neg80.3%
mul-1-neg80.3%
distribute-neg-in80.3%
+-commutative80.3%
cos-neg80.3%
+-commutative80.3%
mul-1-neg80.3%
unsub-neg80.3%
Simplified80.3%
Taylor expanded in lambda1 around 0 80.3%
+-commutative80.3%
sin-neg80.3%
unsub-neg80.3%
cos-neg80.3%
*-commutative80.3%
Simplified80.3%
Taylor expanded in lambda2 around 0 68.0%
Taylor expanded in phi1 around 0 80.0%
fma-def80.0%
unpow280.0%
Simplified80.0%
if -0.650000000000000022 < (cos.f64 phi1) < 0.999999997999999946Initial program 99.2%
Taylor expanded in phi2 around 0 73.8%
sub-neg73.8%
+-commutative73.8%
neg-mul-173.8%
neg-mul-173.8%
remove-double-neg73.8%
mul-1-neg73.8%
distribute-neg-in73.8%
+-commutative73.8%
cos-neg73.8%
+-commutative73.8%
mul-1-neg73.8%
unsub-neg73.8%
Simplified73.8%
Taylor expanded in lambda2 around 0 61.9%
cos-neg61.9%
Simplified61.9%
if 0.999999997999999946 < (cos.f64 phi1) Initial program 99.4%
Taylor expanded in phi2 around 0 84.6%
sub-neg84.6%
+-commutative84.6%
neg-mul-184.6%
neg-mul-184.6%
remove-double-neg84.6%
mul-1-neg84.6%
distribute-neg-in84.6%
+-commutative84.6%
cos-neg84.6%
+-commutative84.6%
mul-1-neg84.6%
unsub-neg84.6%
Simplified84.6%
Taylor expanded in phi1 around 0 84.6%
Final simplification75.3%
if (cos.f64 phi1) < -0.650000000000000022Initial program 99.8%
Taylor expanded in phi2 around 0 80.3%
sub-neg80.3%
+-commutative80.3%
neg-mul-180.3%
neg-mul-180.3%
remove-double-neg80.3%
mul-1-neg80.3%
distribute-neg-in80.3%
+-commutative80.3%
cos-neg80.3%
+-commutative80.3%
mul-1-neg80.3%
unsub-neg80.3%
Simplified80.3%
Taylor expanded in lambda1 around 0 80.3%
+-commutative80.3%
sin-neg80.3%
unsub-neg80.3%
cos-neg80.3%
*-commutative80.3%
Simplified80.3%
Taylor expanded in lambda2 around 0 68.0%
Taylor expanded in phi1 around 0 80.0%
fma-def80.0%
unpow280.0%
Simplified80.0%
if -0.650000000000000022 < (cos.f64 phi1) < 0.94999999999999996Initial program 99.3%
Taylor expanded in phi2 around 0 73.2%
sub-neg73.2%
+-commutative73.2%
neg-mul-173.2%
neg-mul-173.2%
remove-double-neg73.2%
mul-1-neg73.2%
distribute-neg-in73.2%
+-commutative73.2%
cos-neg73.2%
+-commutative73.2%
mul-1-neg73.2%
unsub-neg73.2%
Simplified73.2%
Taylor expanded in lambda1 around 0 73.1%
+-commutative73.1%
sin-neg73.1%
unsub-neg73.1%
cos-neg73.1%
*-commutative73.1%
Simplified73.1%
Taylor expanded in lambda2 around 0 57.3%
mul-1-neg57.3%
unsub-neg57.3%
*-commutative57.3%
distribute-rgt-out--57.3%
Simplified57.3%
if 0.94999999999999996 < (cos.f64 phi1) Initial program 99.3%
Taylor expanded in phi2 around 0 84.1%
sub-neg84.1%
+-commutative84.1%
neg-mul-184.1%
neg-mul-184.1%
remove-double-neg84.1%
mul-1-neg84.1%
distribute-neg-in84.1%
+-commutative84.1%
cos-neg84.1%
+-commutative84.1%
mul-1-neg84.1%
unsub-neg84.1%
Simplified84.1%
Taylor expanded in phi1 around 0 82.9%
Final simplification73.9%
if (cos.f64 phi1) < 0.99399999999999999Initial program 99.4%
Taylor expanded in phi2 around 0 76.4%
sub-neg76.4%
+-commutative76.4%
neg-mul-176.4%
neg-mul-176.4%
remove-double-neg76.4%
mul-1-neg76.4%
distribute-neg-in76.4%
+-commutative76.4%
cos-neg76.4%
+-commutative76.4%
mul-1-neg76.4%
unsub-neg76.4%
Simplified76.4%
Taylor expanded in lambda1 around 0 76.4%
+-commutative76.4%
sin-neg76.4%
unsub-neg76.4%
cos-neg76.4%
*-commutative76.4%
Simplified76.4%
Taylor expanded in lambda2 around 0 76.4%
if 0.99399999999999999 < (cos.f64 phi1) Initial program 99.4%
Taylor expanded in phi1 around 0 97.5%
Final simplification87.2%
Initial program 99.4%
Final simplification99.4%
Initial program 99.4%
Taylor expanded in lambda1 around 0 99.0%
cos-neg99.0%
Simplified99.0%
Final simplification99.0%
if (cos.f64 phi1) < 0.94999999999999996Initial program 99.4%
Taylor expanded in phi2 around 0 75.1%
sub-neg75.1%
+-commutative75.1%
neg-mul-175.1%
neg-mul-175.1%
remove-double-neg75.1%
mul-1-neg75.1%
distribute-neg-in75.1%
+-commutative75.1%
cos-neg75.1%
+-commutative75.1%
mul-1-neg75.1%
unsub-neg75.1%
Simplified75.1%
Taylor expanded in lambda1 around 0 75.1%
+-commutative75.1%
sin-neg75.1%
unsub-neg75.1%
cos-neg75.1%
*-commutative75.1%
Simplified75.1%
Taylor expanded in lambda2 around 0 59.5%
mul-1-neg59.5%
unsub-neg59.5%
*-commutative59.5%
distribute-rgt-out--59.5%
Simplified59.5%
if 0.94999999999999996 < (cos.f64 phi1) Initial program 99.3%
Taylor expanded in phi2 around 0 84.1%
sub-neg84.1%
+-commutative84.1%
neg-mul-184.1%
neg-mul-184.1%
remove-double-neg84.1%
mul-1-neg84.1%
distribute-neg-in84.1%
+-commutative84.1%
cos-neg84.1%
+-commutative84.1%
mul-1-neg84.1%
unsub-neg84.1%
Simplified84.1%
Taylor expanded in phi1 around 0 82.9%
Final simplification72.1%
Initial program 99.4%
Taylor expanded in phi2 around 0 80.0%
sub-neg80.0%
+-commutative80.0%
neg-mul-180.0%
neg-mul-180.0%
remove-double-neg80.0%
mul-1-neg80.0%
distribute-neg-in80.0%
+-commutative80.0%
cos-neg80.0%
+-commutative80.0%
mul-1-neg80.0%
unsub-neg80.0%
Simplified80.0%
Final simplification80.0%
Initial program 99.4%
Taylor expanded in phi2 around 0 80.0%
sub-neg80.0%
+-commutative80.0%
neg-mul-180.0%
neg-mul-180.0%
remove-double-neg80.0%
mul-1-neg80.0%
distribute-neg-in80.0%
+-commutative80.0%
cos-neg80.0%
+-commutative80.0%
mul-1-neg80.0%
unsub-neg80.0%
Simplified80.0%
Taylor expanded in lambda1 around 0 79.7%
Final simplification79.7%
Initial program 99.4%
Taylor expanded in phi2 around 0 80.0%
sub-neg80.0%
+-commutative80.0%
neg-mul-180.0%
neg-mul-180.0%
remove-double-neg80.0%
mul-1-neg80.0%
distribute-neg-in80.0%
+-commutative80.0%
cos-neg80.0%
+-commutative80.0%
mul-1-neg80.0%
unsub-neg80.0%
Simplified80.0%
Taylor expanded in phi1 around 0 69.2%
Final simplification69.2%
Initial program 99.4%
Taylor expanded in phi2 around 0 80.0%
sub-neg80.0%
+-commutative80.0%
neg-mul-180.0%
neg-mul-180.0%
remove-double-neg80.0%
mul-1-neg80.0%
distribute-neg-in80.0%
+-commutative80.0%
cos-neg80.0%
+-commutative80.0%
mul-1-neg80.0%
unsub-neg80.0%
Simplified80.0%
Taylor expanded in phi1 around 0 69.2%
Taylor expanded in lambda2 around 0 62.6%
cos-neg62.6%
+-commutative62.6%
Simplified62.6%
Final simplification62.6%
Initial program 99.4%
Taylor expanded in phi2 around 0 80.0%
sub-neg80.0%
+-commutative80.0%
neg-mul-180.0%
neg-mul-180.0%
remove-double-neg80.0%
mul-1-neg80.0%
distribute-neg-in80.0%
+-commutative80.0%
cos-neg80.0%
+-commutative80.0%
mul-1-neg80.0%
unsub-neg80.0%
Simplified80.0%
Taylor expanded in phi1 around 0 69.2%
Taylor expanded in lambda1 around 0 69.0%
+-commutative69.0%
Simplified69.0%
Final simplification69.0%
Initial program 99.4%
Taylor expanded in phi2 around 0 80.0%
sub-neg80.0%
+-commutative80.0%
neg-mul-180.0%
neg-mul-180.0%
remove-double-neg80.0%
mul-1-neg80.0%
distribute-neg-in80.0%
+-commutative80.0%
cos-neg80.0%
+-commutative80.0%
mul-1-neg80.0%
unsub-neg80.0%
Simplified80.0%
Taylor expanded in lambda1 around 0 79.7%
+-commutative79.7%
sin-neg79.7%
unsub-neg79.7%
cos-neg79.7%
*-commutative79.7%
Simplified79.7%
Taylor expanded in lambda2 around 0 56.2%
Taylor expanded in phi2 around 0 56.2%
Final simplification56.2%
Initial program 99.4%
Taylor expanded in phi2 around 0 80.0%
sub-neg80.0%
+-commutative80.0%
neg-mul-180.0%
neg-mul-180.0%
remove-double-neg80.0%
mul-1-neg80.0%
distribute-neg-in80.0%
+-commutative80.0%
cos-neg80.0%
+-commutative80.0%
mul-1-neg80.0%
unsub-neg80.0%
Simplified80.0%
Taylor expanded in phi1 around 0 69.2%
Taylor expanded in lambda2 around 0 61.8%
cos-neg61.8%
associate-+r+61.8%
+-commutative61.8%
associate-+l+61.8%
*-commutative61.8%
associate-*r*61.8%
neg-mul-161.8%
sin-neg61.8%
remove-double-neg61.8%
Simplified61.8%
Taylor expanded in lambda1 around 0 62.4%
Final simplification62.4%
herbie shell --seed 2023166
(FPCore (lambda1 lambda2 phi1 phi2)
:name "Midpoint on a great circle"
:precision binary64
(+ lambda1 (atan2 (* (cos phi2) (sin (- lambda1 lambda2))) (+ (cos phi1) (* (cos phi2) (cos (- lambda1 lambda2)))))))