


Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
if phi2 < 6.140322484154438e+131Initial program 34.0
rmApplied associate-*l*34.0
rmApplied add-cbrt-cube34.0
if 6.140322484154438e+131 < phi2 Initial program 57.3
rmApplied associate-*l*57.3
rmApplied add-cbrt-cube57.3
Taylor expanded around 0 17.2
Final simplification31.9
herbie shell --seed 2018360
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Equirectangular approximation to distance on a great circle"
(* R (sqrt (+ (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) (* (- phi1 phi2) (- phi1 phi2))))))
Time bar (total: 4.6m)Debug log
1 alts after pruning (1 fresh and 0 done)
Merged error: 39.4b
Found 4 expressions with local error:
| 37.3b | (sqrt (+ (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) (* (- phi1 phi2) (- phi1 phi2)))) |
| 2.5b | (cos (/ (+ phi1 phi2) 2)) |
| 2.5b | (cos (/ (+ phi1 phi2) 2)) |
| 0.2b | (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) |
4 calls. Slowest were:
| 26.0ms | (sqrt (+ (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) (* (- phi1 phi2) (- phi1 phi2)))) |
| 20.0ms | (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) |
| 2.0ms | (cos (/ (+ phi1 phi2) 2)) |
4 calls. Slowest were:
| 499.0ms | (sqrt (+ (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) (* (- phi1 phi2) (- phi1 phi2)))) |
| 95.0ms | (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) |
| 24.0ms | (cos (/ (+ phi1 phi2) 2)) |
| 19.0ms | (cos (/ (+ phi1 phi2) 2)) |
118 calls. Slowest were:
| 1.2s | (* (* (* (* (- lambda1 lambda2) (- lambda1 lambda2)) (- lambda1 lambda2)) (* (* (cos (/ (+ phi1 phi2) 2)) (cos (/ (+ phi1 phi2) 2))) (cos (/ (+ phi1 phi2) 2)))) (* (* (* (- lambda1 lambda2) (- lambda1 lambda2)) (- lambda1 lambda2)) (* (* (cos (/ (+ phi1 phi2) 2)) (cos (/ (+ phi1 phi2) 2))) (cos (/ (+ phi1 phi2) 2))))) |
| 1.1s | (* (* (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) (* (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))))) |
| 781.0ms | (sqrt (+ (* (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- (pow lambda1 3) (pow lambda2 3)) (cos (/ (+ phi1 phi2) 2)))) (* (+ (* phi1 phi1) (+ (* phi2 phi2) (* phi1 phi2))) (+ phi1 phi2))) (* (+ (* lambda1 lambda1) (+ (* lambda2 lambda2) (* lambda1 lambda2))) (* (- (pow phi1 3) (pow phi2 3)) (- (* phi1 phi1) (* phi2 phi2)))))) |
7 alts after pruning (7 fresh and 0 done)
Merged error: 27.6b
Found 4 expressions with local error:
| 37.3b | (sqrt (+ (* (- lambda1 lambda2) (* (cos (/ (+ phi1 phi2) 2)) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))))) (* (- phi1 phi2) (- phi1 phi2)))) |
| 2.5b | (cos (/ (+ phi1 phi2) 2)) |
| 2.5b | (cos (/ (+ phi1 phi2) 2)) |
| 0.3b | (* (cos (/ (+ phi1 phi2) 2)) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) |
4 calls. Slowest were:
| 35.0ms | (sqrt (+ (* (- lambda1 lambda2) (* (cos (/ (+ phi1 phi2) 2)) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))))) (* (- phi1 phi2) (- phi1 phi2)))) |
| 12.0ms | (* (cos (/ (+ phi1 phi2) 2)) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) |
| 8.0ms | (cos (/ (+ phi1 phi2) 2)) |
4 calls. Slowest were:
| 440.0ms | (sqrt (+ (* (- lambda1 lambda2) (* (cos (/ (+ phi1 phi2) 2)) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))))) (* (- phi1 phi2) (- phi1 phi2)))) |
| 147.0ms | (* (cos (/ (+ phi1 phi2) 2)) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) |
| 20.0ms | (cos (/ (+ phi1 phi2) 2)) |
| 15.0ms | (cos (/ (+ phi1 phi2) 2)) |
93 calls. Slowest were:
| 1.0s | (* (* (* (cos (/ (+ phi1 phi2) 2)) (cos (/ (+ phi1 phi2) 2))) (cos (/ (+ phi1 phi2) 2))) (* (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))))) |
| 731.0ms | (sqrt (+ (* (* (- lambda1 lambda2) (* (cos (/ (+ phi1 phi2) 2)) (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (cos (/ (+ phi1 phi2) 2))))) (* (+ (* phi1 phi1) (+ (* phi2 phi2) (* phi1 phi2))) (+ phi1 phi2))) (* (+ lambda1 lambda2) (* (- (pow phi1 3) (pow phi2 3)) (- (* phi1 phi1) (* phi2 phi2)))))) |
| 489.0ms | (* (* (* (cos (/ (+ phi1 phi2) 2)) (cos (/ (+ phi1 phi2) 2))) (cos (/ (+ phi1 phi2) 2))) (* (* (* (- lambda1 lambda2) (- lambda1 lambda2)) (- lambda1 lambda2)) (* (* (cos (/ (+ phi1 phi2) 2)) (cos (/ (+ phi1 phi2) 2))) (cos (/ (+ phi1 phi2) 2))))) |
7 alts after pruning (6 fresh and 1 done)
Merged error: 27.6b
Found 4 expressions with local error:
| 37.3b | (sqrt (+ (* (- lambda1 lambda2) (* (cbrt (* (* (cos (/ (+ phi1 phi2) 2)) (cos (/ (+ phi1 phi2) 2))) (cos (/ (+ phi1 phi2) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))))) (* (- phi1 phi2) (- phi1 phi2)))) |
| 2.5b | (cos (/ (+ phi1 phi2) 2)) |
| 2.5b | (cos (/ (+ phi1 phi2) 2)) |
| 2.5b | (cos (/ (+ phi1 phi2) 2)) |
4 calls. Slowest were:
| 60.0ms | (sqrt (+ (* (- lambda1 lambda2) (* (cbrt (* (* (cos (/ (+ phi1 phi2) 2)) (cos (/ (+ phi1 phi2) 2))) (cos (/ (+ phi1 phi2) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))))) (* (- phi1 phi2) (- phi1 phi2)))) |
| 2.0ms | (cos (/ (+ phi1 phi2) 2)) |
| 2.0ms | (cos (/ (+ phi1 phi2) 2)) |
4 calls. Slowest were:
| 458.0ms | (sqrt (+ (* (- lambda1 lambda2) (* (cbrt (* (* (cos (/ (+ phi1 phi2) 2)) (cos (/ (+ phi1 phi2) 2))) (cos (/ (+ phi1 phi2) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))))) (* (- phi1 phi2) (- phi1 phi2)))) |
| 24.0ms | (cos (/ (+ phi1 phi2) 2)) |
| 24.0ms | (cos (/ (+ phi1 phi2) 2)) |
| 24.0ms | (cos (/ (+ phi1 phi2) 2)) |
154 calls. Slowest were:
| 802.0ms | (sqrt (+ (* (* (- (pow lambda1 3) (pow lambda2 3)) (* (cbrt (* (+ (cos (+ (/ (+ phi1 phi2) 2) (/ (+ phi1 phi2) 2))) (cos (- (/ (+ phi1 phi2) 2) (/ (+ phi1 phi2) 2)))) (cos (/ (+ phi1 phi2) 2)))) (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (cos (/ (+ phi1 phi2) 2))))) (+ (* phi1 phi1) (+ (* phi2 phi2) (* phi1 phi2)))) (* (* (+ (* lambda1 lambda1) (+ (* lambda2 lambda2) (* lambda1 lambda2))) (* (cbrt 2) (+ lambda1 lambda2))) (* (- (pow phi1 3) (pow phi2 3)) (- phi1 phi2))))) |
| 684.0ms | (sqrt (+ (* (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (* (cbrt (* (+ (cos (+ (/ (+ phi1 phi2) 2) (/ (+ phi1 phi2) 2))) (cos (- (/ (+ phi1 phi2) 2) (/ (+ phi1 phi2) 2)))) (cos (/ (+ phi1 phi2) 2)))) (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (cos (/ (+ phi1 phi2) 2))))) (+ phi1 phi2)) (* (* (+ lambda1 lambda2) (* (cbrt 2) (+ lambda1 lambda2))) (* (- (* phi1 phi1) (* phi2 phi2)) (- phi1 phi2))))) |
| 645.0ms | (sqrt (+ (pow (* (- lambda1 lambda2) (* (cbrt (* (* (cos (/ (+ phi1 phi2) 2)) (cos (/ (+ phi1 phi2) 2))) (cos (/ (+ phi1 phi2) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))))) 3) (pow (* (- phi1 phi2) (- phi1 phi2)) 3))) |
11 alts after pruning (9 fresh and 2 done)
Merged error: 25.7b
Found 4 expressions with local error:
| 37.3b | (sqrt (+ (* (- lambda1 lambda2) (* (cbrt (* (* (cos (/ (+ phi1 phi2) 2)) (cos (/ (+ phi1 phi2) 2))) (cos (/ (+ phi1 phi2) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))))) (* (- phi1 phi2) (- phi1 phi2)))) |
| 37.3b | (sqrt (+ (* (- lambda1 lambda2) (* (cbrt (* (* (cos (/ (+ phi1 phi2) 2)) (cos (/ (+ phi1 phi2) 2))) (cos (/ (+ phi1 phi2) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))))) (* (- phi1 phi2) (- phi1 phi2)))) |
| 37.3b | (sqrt (+ (* (- lambda1 lambda2) (* (cbrt (* (* (cos (/ (+ phi1 phi2) 2)) (cos (/ (+ phi1 phi2) 2))) (cos (/ (+ phi1 phi2) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))))) (* (- phi1 phi2) (- phi1 phi2)))) |
| 2.5b | (cos (/ (+ phi1 phi2) 2)) |
4 calls. Slowest were:
| 72.0ms | (sqrt (+ (* (- lambda1 lambda2) (* (cbrt (* (* (cos (/ (+ phi1 phi2) 2)) (cos (/ (+ phi1 phi2) 2))) (cos (/ (+ phi1 phi2) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))))) (* (- phi1 phi2) (- phi1 phi2)))) |
| 59.0ms | (sqrt (+ (* (- lambda1 lambda2) (* (cbrt (* (* (cos (/ (+ phi1 phi2) 2)) (cos (/ (+ phi1 phi2) 2))) (cos (/ (+ phi1 phi2) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))))) (* (- phi1 phi2) (- phi1 phi2)))) |
| 55.0ms | (sqrt (+ (* (- lambda1 lambda2) (* (cbrt (* (* (cos (/ (+ phi1 phi2) 2)) (cos (/ (+ phi1 phi2) 2))) (cos (/ (+ phi1 phi2) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))))) (* (- phi1 phi2) (- phi1 phi2)))) |
4 calls. Slowest were:
| 459.0ms | (sqrt (+ (* (- lambda1 lambda2) (* (cbrt (* (* (cos (/ (+ phi1 phi2) 2)) (cos (/ (+ phi1 phi2) 2))) (cos (/ (+ phi1 phi2) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))))) (* (- phi1 phi2) (- phi1 phi2)))) |
| 384.0ms | (sqrt (+ (* (- lambda1 lambda2) (* (cbrt (* (* (cos (/ (+ phi1 phi2) 2)) (cos (/ (+ phi1 phi2) 2))) (cos (/ (+ phi1 phi2) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))))) (* (- phi1 phi2) (- phi1 phi2)))) |
| 380.0ms | (sqrt (+ (* (- lambda1 lambda2) (* (cbrt (* (* (cos (/ (+ phi1 phi2) 2)) (cos (/ (+ phi1 phi2) 2))) (cos (/ (+ phi1 phi2) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))))) (* (- phi1 phi2) (- phi1 phi2)))) |
| 24.0ms | (cos (/ (+ phi1 phi2) 2)) |
438 calls. Slowest were:
| 977.0ms | (sqrt (+ (* (* (- (pow lambda1 3) (pow lambda2 3)) (* (cbrt (* (+ (cos (+ (/ (+ phi1 phi2) 2) (/ (+ phi1 phi2) 2))) (cos (- (/ (+ phi1 phi2) 2) (/ (+ phi1 phi2) 2)))) (cos (/ (+ phi1 phi2) 2)))) (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (cos (/ (+ phi1 phi2) 2))))) (* (+ (* phi1 phi1) (+ (* phi2 phi2) (* phi1 phi2))) (+ phi1 phi2))) (* (* (+ (* lambda1 lambda1) (+ (* lambda2 lambda2) (* lambda1 lambda2))) (* (cbrt 2) (+ lambda1 lambda2))) (* (- (pow phi1 3) (pow phi2 3)) (- (* phi1 phi1) (* phi2 phi2)))))) |
| 818.0ms | (sqrt (+ (* (* (- lambda1 lambda2) (* (cbrt (* (+ (cos (+ (/ (+ phi1 phi2) 2) (/ (+ phi1 phi2) 2))) (cos (- (/ (+ phi1 phi2) 2) (/ (+ phi1 phi2) 2)))) (cos (/ (+ phi1 phi2) 2)))) (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (cos (/ (+ phi1 phi2) 2))))) (* (+ phi1 phi2) (+ (* phi1 phi1) (+ (* phi2 phi2) (* phi1 phi2))))) (* (* (cbrt 2) (+ lambda1 lambda2)) (* (- (* phi1 phi1) (* phi2 phi2)) (- (pow phi1 3) (pow phi2 3)))))) |
| 778.0ms | (sqrt (+ (* (* (- (pow lambda1 3) (pow lambda2 3)) (* (cbrt (* (+ (cos (+ (/ (+ phi1 phi2) 2) (/ (+ phi1 phi2) 2))) (cos (- (/ (+ phi1 phi2) 2) (/ (+ phi1 phi2) 2)))) (cos (/ (+ phi1 phi2) 2)))) (* (- (pow lambda1 3) (pow lambda2 3)) (cos (/ (+ phi1 phi2) 2))))) (+ (* phi1 phi1) (+ (* phi2 phi2) (* phi1 phi2)))) (* (* (+ (* lambda1 lambda1) (+ (* lambda2 lambda2) (* lambda1 lambda2))) (* (cbrt 2) (+ (* lambda1 lambda1) (+ (* lambda2 lambda2) (* lambda1 lambda2))))) (* (- (pow phi1 3) (pow phi2 3)) (- phi1 phi2))))) |
11 alts after pruning (9 fresh and 2 done)
Merged error: 25.7b
34.3% (9.7b remaining)
Error of 31.9b against oracle of 22.2b and baseline of 37.0b