
Results
Herbie found 18 alternatives:
| Alternative | Accuracy | Speedup |
|---|
if phi1 < -2.5000000000000001e-4Initial program 40.2%
associate-*l*40.2%
Simplified40.2%
Taylor expanded in phi2 around 0 40.4%
associate--r+40.5%
unpow240.5%
1-sub-sin40.5%
unpow240.5%
*-commutative40.5%
unpow240.5%
associate-*r*40.5%
Simplified40.5%
Taylor expanded in phi2 around 0 42.7%
if -2.5000000000000001e-4 < phi1 Initial program 65.4%
associate-*l*65.4%
Simplified65.4%
Taylor expanded in phi1 around 0 59.9%
associate--r+59.9%
unpow259.9%
1-sub-sin60.0%
unpow260.0%
metadata-eval60.0%
associate-*r*60.0%
*-commutative60.0%
mul-1-neg60.0%
distribute-lft-neg-out60.0%
cos-neg60.0%
sub-neg60.0%
mul-1-neg60.0%
+-commutative60.0%
Simplified60.0%
Final simplification55.4%
Initial program 58.7%
associate-*l*58.7%
Simplified58.7%
add-log-exp58.7%
div-inv58.7%
metadata-eval58.7%
Applied egg-rr58.7%
Final simplification58.7%
Initial program 58.7%
associate-*l*58.7%
Simplified58.7%
Final simplification58.7%
Initial program 58.7%
associate-*l*58.7%
Simplified58.7%
sin-mult26.7%
div-inv26.7%
metadata-eval26.7%
div-inv26.7%
metadata-eval26.7%
div-inv26.7%
metadata-eval26.7%
div-inv26.7%
metadata-eval26.7%
Applied egg-rr58.7%
div-sub26.7%
+-inverses26.7%
cos-026.7%
metadata-eval26.7%
distribute-lft-out26.7%
metadata-eval26.7%
*-rgt-identity26.7%
Simplified58.7%
Final simplification58.7%
if phi2 < 3.2e15Initial program 60.8%
associate-*l*60.8%
Simplified60.8%
Taylor expanded in phi2 around 0 52.9%
associate--r+52.9%
unpow252.9%
1-sub-sin52.9%
unpow252.9%
*-commutative52.9%
unpow252.9%
associate-*r*52.9%
Simplified52.9%
Taylor expanded in phi2 around 0 49.2%
if 3.2e15 < phi2 Initial program 51.5%
associate-*l*51.5%
Simplified51.5%
add-log-exp51.5%
pow251.5%
div-inv51.5%
metadata-eval51.5%
Applied egg-rr51.5%
Taylor expanded in lambda2 around 0 31.3%
Taylor expanded in lambda1 around 0 21.0%
unpow221.0%
Simplified21.0%
Final simplification42.7%
Initial program 58.7%
associate-*l*58.7%
Simplified58.7%
Taylor expanded in phi2 around 0 45.2%
associate--r+45.2%
unpow245.2%
1-sub-sin45.2%
unpow245.2%
*-commutative45.2%
unpow245.2%
associate-*r*45.2%
Simplified45.2%
Final simplification45.2%
if lambda2 < 6.7999999999999997e-22Initial program 65.1%
associate-*l*65.1%
Simplified65.1%
Taylor expanded in phi2 around 0 50.8%
associate--r+50.8%
unpow250.8%
1-sub-sin50.9%
unpow250.9%
*-commutative50.9%
unpow250.9%
associate-*r*50.9%
Simplified50.9%
Taylor expanded in lambda2 around 0 43.9%
unpow243.9%
sin-mult43.9%
fma-def43.9%
Applied egg-rr43.9%
div-sub43.9%
+-inverses43.9%
cos-043.9%
metadata-eval43.9%
fma-udef43.9%
distribute-rgt-out43.9%
metadata-eval43.9%
*-rgt-identity43.9%
Simplified43.9%
if 6.7999999999999997e-22 < lambda2 Initial program 43.9%
associate-*l*43.9%
Simplified43.9%
Taylor expanded in phi2 around 0 32.3%
associate--r+32.3%
unpow232.3%
1-sub-sin32.3%
unpow232.3%
*-commutative32.3%
unpow232.3%
associate-*r*32.3%
Simplified32.3%
Taylor expanded in phi1 around 0 28.4%
Taylor expanded in phi1 around 0 29.8%
Final simplification39.6%
if phi1 < -5.8000000000000004e-6Initial program 40.2%
associate-*l*40.2%
Simplified40.2%
Taylor expanded in phi2 around 0 40.4%
associate--r+40.5%
unpow240.5%
1-sub-sin40.5%
unpow240.5%
*-commutative40.5%
unpow240.5%
associate-*r*40.5%
Simplified40.5%
Taylor expanded in lambda2 around 0 30.9%
sin-mult17.9%
div-inv17.9%
metadata-eval17.9%
div-inv17.9%
metadata-eval17.9%
div-inv17.9%
metadata-eval17.9%
div-inv17.9%
metadata-eval17.9%
Applied egg-rr30.9%
div-sub17.9%
+-inverses17.9%
cos-017.9%
metadata-eval17.9%
distribute-lft-out17.9%
metadata-eval17.9%
*-rgt-identity17.9%
Simplified30.9%
if -5.8000000000000004e-6 < phi1 Initial program 65.4%
associate-*l*65.4%
Simplified65.4%
Taylor expanded in phi2 around 0 46.9%
associate--r+46.9%
unpow246.9%
1-sub-sin46.9%
unpow246.9%
*-commutative46.9%
unpow246.9%
associate-*r*46.9%
Simplified46.9%
Taylor expanded in phi1 around 0 41.4%
unpow241.4%
1-sub-sin41.4%
Applied egg-rr41.4%
Final simplification38.6%
if (-.f64 lambda1 lambda2) < -10Initial program 53.7%
associate-*l*53.7%
Simplified53.8%
Taylor expanded in phi2 around 0 40.3%
associate--r+40.4%
unpow240.4%
1-sub-sin40.4%
unpow240.4%
*-commutative40.4%
unpow240.4%
associate-*r*40.4%
Simplified40.4%
Taylor expanded in phi1 around 0 31.8%
Taylor expanded in phi2 around 0 32.5%
associate-*r*32.5%
Simplified32.5%
if -10 < (-.f64 lambda1 lambda2) Initial program 62.1%
associate-*l*62.2%
Simplified62.1%
Taylor expanded in phi2 around 0 48.6%
associate--r+48.6%
unpow248.6%
1-sub-sin48.6%
unpow248.6%
*-commutative48.6%
unpow248.6%
associate-*r*48.6%
Simplified48.6%
Taylor expanded in lambda2 around 0 40.4%
Taylor expanded in lambda1 around 0 25.3%
*-commutative25.3%
unpow225.3%
Simplified25.3%
Final simplification28.3%
if (-.f64 lambda1 lambda2) < -10Initial program 53.7%
associate-*l*53.7%
Simplified53.8%
Taylor expanded in phi2 around 0 40.3%
associate--r+40.4%
unpow240.4%
1-sub-sin40.4%
unpow240.4%
*-commutative40.4%
unpow240.4%
associate-*r*40.4%
Simplified40.4%
Taylor expanded in phi1 around 0 31.8%
Taylor expanded in phi1 around 0 32.6%
if -10 < (-.f64 lambda1 lambda2) Initial program 62.1%
associate-*l*62.2%
Simplified62.1%
Taylor expanded in phi2 around 0 48.6%
associate--r+48.6%
unpow248.6%
1-sub-sin48.6%
unpow248.6%
*-commutative48.6%
unpow248.6%
associate-*r*48.6%
Simplified48.6%
Taylor expanded in lambda2 around 0 40.4%
Taylor expanded in lambda1 around 0 25.3%
*-commutative25.3%
unpow225.3%
Simplified25.3%
Final simplification28.4%
if (-.f64 lambda1 lambda2) < -10Initial program 53.7%
associate-*l*53.7%
Simplified53.8%
Taylor expanded in phi2 around 0 40.3%
associate--r+40.4%
unpow240.4%
1-sub-sin40.4%
unpow240.4%
*-commutative40.4%
unpow240.4%
associate-*r*40.4%
Simplified40.4%
Taylor expanded in phi1 around 0 31.8%
unpow231.8%
1-sub-sin31.9%
Applied egg-rr31.9%
if -10 < (-.f64 lambda1 lambda2) Initial program 62.1%
associate-*l*62.2%
Simplified62.1%
Taylor expanded in phi2 around 0 48.6%
associate--r+48.6%
unpow248.6%
1-sub-sin48.6%
unpow248.6%
*-commutative48.6%
unpow248.6%
associate-*r*48.6%
Simplified48.6%
Taylor expanded in lambda2 around 0 40.4%
Taylor expanded in lambda1 around 0 25.3%
*-commutative25.3%
unpow225.3%
Simplified25.3%
Final simplification28.0%
Initial program 58.7%
associate-*l*58.7%
Simplified58.7%
Taylor expanded in phi2 around 0 45.2%
associate--r+45.2%
unpow245.2%
1-sub-sin45.2%
unpow245.2%
*-commutative45.2%
unpow245.2%
associate-*r*45.2%
Simplified45.2%
Taylor expanded in phi1 around 0 35.2%
unpow235.2%
1-sub-sin35.2%
Applied egg-rr35.2%
Final simplification35.2%
Initial program 58.7%
associate-*l*58.7%
Simplified58.7%
Taylor expanded in phi2 around 0 45.2%
associate--r+45.2%
unpow245.2%
1-sub-sin45.2%
unpow245.2%
*-commutative45.2%
unpow245.2%
associate-*r*45.2%
Simplified45.2%
Taylor expanded in phi1 around 0 35.2%
Final simplification35.2%
if lambda1 < -1.1000000000000001e-7Initial program 45.0%
associate-*l*45.0%
Simplified45.1%
Taylor expanded in phi2 around 0 37.7%
associate--r+37.8%
unpow237.8%
1-sub-sin37.8%
unpow237.8%
*-commutative37.8%
unpow237.8%
associate-*r*37.8%
Simplified37.8%
Taylor expanded in phi1 around 0 29.0%
Taylor expanded in lambda2 around 0 28.8%
unpow228.8%
1-sub-sin28.8%
unpow228.8%
Simplified28.8%
Taylor expanded in lambda2 around 0 28.7%
if -1.1000000000000001e-7 < lambda1 Initial program 63.7%
associate-*l*63.7%
Simplified63.7%
Taylor expanded in phi2 around 0 47.9%
associate--r+47.9%
unpow247.9%
1-sub-sin47.9%
unpow247.9%
*-commutative47.9%
unpow247.9%
associate-*r*47.9%
Simplified47.9%
Taylor expanded in phi1 around 0 37.5%
Taylor expanded in lambda1 around 0 33.7%
unpow233.7%
1-sub-sin33.7%
unpow233.7%
metadata-eval33.7%
associate-*r*33.7%
*-commutative33.7%
mul-1-neg33.7%
distribute-lft-neg-out33.7%
cos-neg33.7%
Simplified33.7%
Final simplification32.4%
Initial program 58.7%
associate-*l*58.7%
Simplified58.7%
Taylor expanded in phi2 around 0 45.2%
associate--r+45.2%
unpow245.2%
1-sub-sin45.2%
unpow245.2%
*-commutative45.2%
unpow245.2%
associate-*r*45.2%
Simplified45.2%
Taylor expanded in phi1 around 0 35.2%
Taylor expanded in lambda2 around 0 30.2%
unpow230.2%
1-sub-sin30.3%
unpow230.3%
Simplified30.3%
Final simplification30.3%
Initial program 58.7%
associate-*l*58.7%
Simplified58.7%
Taylor expanded in phi2 around 0 45.2%
associate--r+45.2%
unpow245.2%
1-sub-sin45.2%
unpow245.2%
*-commutative45.2%
unpow245.2%
associate-*r*45.2%
Simplified45.2%
Taylor expanded in phi1 around 0 35.2%
Taylor expanded in lambda2 around 0 30.2%
unpow230.2%
1-sub-sin30.3%
unpow230.3%
Simplified30.3%
unpow230.3%
cos-mult30.2%
fma-def30.2%
Applied egg-rr30.2%
+-commutative30.2%
+-inverses30.2%
cos-030.2%
fma-udef30.2%
distribute-rgt-out30.2%
metadata-eval30.2%
*-rgt-identity30.2%
Simplified30.2%
Final simplification30.2%
if lambda1 < -8.00000000000000065e-5Initial program 45.0%
associate-*l*45.0%
Simplified45.1%
Taylor expanded in phi2 around 0 37.7%
associate--r+37.8%
unpow237.8%
1-sub-sin37.8%
unpow237.8%
*-commutative37.8%
unpow237.8%
associate-*r*37.8%
Simplified37.8%
Taylor expanded in phi1 around 0 29.0%
Taylor expanded in lambda2 around 0 28.8%
unpow228.8%
1-sub-sin28.8%
unpow228.8%
Simplified28.8%
sin-mult28.8%
div-inv28.8%
metadata-eval28.8%
div-inv28.8%
metadata-eval28.8%
div-inv28.8%
metadata-eval28.8%
div-inv28.8%
metadata-eval28.8%
Applied egg-rr28.8%
div-sub28.8%
+-inverses28.8%
cos-028.8%
metadata-eval28.8%
distribute-lft-out28.8%
metadata-eval28.8%
*-rgt-identity28.8%
Simplified28.8%
if -8.00000000000000065e-5 < lambda1 Initial program 63.7%
associate-*l*63.7%
Simplified63.7%
Taylor expanded in phi2 around 0 47.9%
associate--r+47.9%
unpow247.9%
1-sub-sin47.9%
unpow247.9%
*-commutative47.9%
unpow247.9%
associate-*r*47.9%
Simplified47.9%
Taylor expanded in phi1 around 0 37.5%
Taylor expanded in lambda2 around 0 30.8%
unpow230.8%
1-sub-sin30.8%
unpow230.8%
Simplified30.8%
Taylor expanded in lambda1 around 0 27.0%
Final simplification27.5%
Initial program 58.7%
associate-*l*58.7%
Simplified58.7%
Taylor expanded in phi2 around 0 45.2%
associate--r+45.2%
unpow245.2%
1-sub-sin45.2%
unpow245.2%
*-commutative45.2%
unpow245.2%
associate-*r*45.2%
Simplified45.2%
Taylor expanded in phi1 around 0 35.2%
Taylor expanded in lambda2 around 0 30.2%
unpow230.2%
1-sub-sin30.3%
unpow230.3%
Simplified30.3%
Taylor expanded in lambda1 around 0 24.9%
Final simplification24.9%
herbie shell --seed 2023166
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Distance on a great circle"
:precision binary64
(* R (* 2.0 (atan2 (sqrt (+ (pow (sin (/ (- phi1 phi2) 2.0)) 2.0) (* (* (* (cos phi1) (cos phi2)) (sin (/ (- lambda1 lambda2) 2.0))) (sin (/ (- lambda1 lambda2) 2.0))))) (sqrt (- 1.0 (+ (pow (sin (/ (- phi1 phi2) 2.0)) 2.0) (* (* (* (cos phi1) (cos phi2)) (sin (/ (- lambda1 lambda2) 2.0))) (sin (/ (- lambda1 lambda2) 2.0))))))))))