


Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
if (- lambda1 lambda2) < -5.701044550682903e+154Initial program 60.8
Initial simplification60.8
Taylor expanded around 0 38.9
if -5.701044550682903e+154 < (- lambda1 lambda2) Initial program 31.9
Initial simplification31.9
rmApplied associate-*l*31.9
Final simplification33.2
herbie shell --seed 2018365
(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: 2.3m)Debug log
1 alts after pruning (1 fresh and 0 done)
Merged error: 38.0b
Found 4 expressions with local error:
| 36.6b | (sqrt (+ (* (- phi1 phi2) (- phi1 phi2)) (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))))) |
| 3.0b | (cos (/ (+ phi2 phi1) 2)) |
| 3.0b | (cos (/ (+ phi2 phi1) 2)) |
| 0.2b | (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))) |
4 calls. Slowest were:
| 46.0ms | (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))) |
| 24.0ms | (sqrt (+ (* (- phi1 phi2) (- phi1 phi2)) (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))))) |
| 3.0ms | (cos (/ (+ phi2 phi1) 2)) |
4 calls. Slowest were:
| 683.0ms | (sqrt (+ (* (- phi1 phi2) (- phi1 phi2)) (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))))) |
| 97.0ms | (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))) |
| 26.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 25.0ms | (cos (/ (+ phi2 phi1) 2)) |
118 calls. Slowest were:
| 1.3s | (* (* (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))) (* (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))))) |
| 554.0ms | (sqrt (+ (* (* (- phi1 phi2) (- (* phi1 phi1) (* phi2 phi2))) (+ lambda1 lambda2)) (* (+ phi1 phi2) (* (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))))))) |
| 534.0ms | (* (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (cos (/ (+ phi2 phi1) 2))) (* (- (pow lambda1 3) (pow lambda2 3)) (cos (/ (+ phi2 phi1) 2)))) |
7 alts after pruning (7 fresh and 0 done)
Merged error: 30.2b
Found 4 expressions with local error:
| 36.6b | (sqrt (+ (* (- phi1 phi2) (- phi1 phi2)) (* (- lambda1 lambda2) (* (cos (/ (+ phi2 phi1) 2)) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))))))) |
| 3.0b | (cos (/ (+ phi2 phi1) 2)) |
| 3.0b | (cos (/ (+ phi2 phi1) 2)) |
| 0.2b | (* (cos (/ (+ phi2 phi1) 2)) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))) |
4 calls. Slowest were:
| 17.0ms | (sqrt (+ (* (- phi1 phi2) (- phi1 phi2)) (* (- lambda1 lambda2) (* (cos (/ (+ phi2 phi1) 2)) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))))))) |
| 16.0ms | (* (cos (/ (+ phi2 phi1) 2)) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))) |
| 2.0ms | (cos (/ (+ phi2 phi1) 2)) |
4 calls. Slowest were:
| 683.0ms | (sqrt (+ (* (- phi1 phi2) (- phi1 phi2)) (* (- lambda1 lambda2) (* (cos (/ (+ phi2 phi1) 2)) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))))))) |
| 140.0ms | (* (cos (/ (+ phi2 phi1) 2)) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))) |
| 24.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 24.0ms | (cos (/ (+ phi2 phi1) 2)) |
93 calls. Slowest were:
| 1.3s | (* (* (* (cos (/ (+ phi2 phi1) 2)) (cos (/ (+ phi2 phi1) 2))) (cos (/ (+ phi2 phi1) 2))) (* (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))))) |
| 881.0ms | (sqrt (+ (* (* (- (pow phi1 3) (pow phi2 3)) (- (* phi1 phi1) (* phi2 phi2))) (* (+ lambda1 lambda2) (+ (* lambda1 lambda1) (+ (* lambda2 lambda2) (* lambda1 lambda2))))) (* (* (+ (* phi1 phi1) (+ (* phi2 phi2) (* phi1 phi2))) (+ phi1 phi2)) (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (* (cos (/ (+ phi2 phi1) 2)) (* (- (pow lambda1 3) (pow lambda2 3)) (cos (/ (+ phi2 phi1) 2)))))))) |
| 562.0ms | (* (* (* (cos (/ (+ phi2 phi1) 2)) (cos (/ (+ phi2 phi1) 2))) (cos (/ (+ phi2 phi1) 2))) (* (* (* (- lambda1 lambda2) (- lambda1 lambda2)) (- lambda1 lambda2)) (* (* (cos (/ (+ phi2 phi1) 2)) (cos (/ (+ phi2 phi1) 2))) (cos (/ (+ phi2 phi1) 2))))) |
7 alts after pruning (6 fresh and 1 done)
Merged error: 30.2b
Found 4 expressions with local error:
| 36.6b | (sqrt (+ (* (- phi1 phi2) (- phi1 phi2)) (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))))) |
| 36.6b | (sqrt (+ (* (- phi1 phi2) (- phi1 phi2)) (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))))) |
| 3.0b | (cos (/ (+ phi2 phi1) 2)) |
| 3.0b | (cos (/ (+ phi2 phi1) 2)) |
4 calls. Slowest were:
| 26.0ms | (sqrt (+ (* (- phi1 phi2) (- phi1 phi2)) (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))))) |
| 24.0ms | (sqrt (+ (* (- phi1 phi2) (- phi1 phi2)) (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))))) |
| 3.0ms | (cos (/ (+ phi2 phi1) 2)) |
4 calls. Slowest were:
| 624.0ms | (sqrt (+ (* (- phi1 phi2) (- phi1 phi2)) (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))))) |
| 525.0ms | (sqrt (+ (* (- phi1 phi2) (- phi1 phi2)) (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))))) |
| 24.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 17.0ms | (cos (/ (+ phi2 phi1) 2)) |
152 calls. Slowest were:
| 627.0ms | (sqrt (+ (* (* (- (* phi1 phi1) (* phi2 phi2)) (- (pow phi1 3) (pow phi2 3))) (+ lambda1 lambda2)) (* (* (+ phi1 phi2) (+ (* phi1 phi1) (+ (* phi2 phi2) (* phi1 phi2)))) (* (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))))))) |
| 601.0ms | (sqrt (+ (* (* (- phi1 phi2) (- (pow phi1 3) (pow phi2 3))) (+ lambda1 lambda2)) (* (+ (* phi1 phi1) (+ (* phi2 phi2) (* phi1 phi2))) (* (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))))))) |
| 528.0ms | (sqrt (+ (* (* (- (pow phi1 3) (pow phi2 3)) (- (* phi1 phi1) (* phi2 phi2))) (* (+ (* lambda1 lambda1) (+ (* lambda2 lambda2) (* lambda1 lambda2))) (+ lambda1 lambda2))) (* (* (+ (* phi1 phi1) (+ (* phi2 phi2) (* phi1 phi2))) (+ phi1 phi2)) (* (* (- (pow lambda1 3) (pow lambda2 3)) (cos (/ (+ phi2 phi1) 2))) (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (cos (/ (+ phi2 phi1) 2))))))) |
7 alts after pruning (5 fresh and 2 done)
Merged error: 30.2b
Found 4 expressions with local error:
| 36.6b | (sqrt (+ (* (- phi1 phi2) (- phi1 phi2)) (exp (log (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))))))) |
| 29.4b | (log (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))))) |
| 3.0b | (cos (/ (+ phi2 phi1) 2)) |
| 3.0b | (cos (/ (+ phi2 phi1) 2)) |
4 calls. Slowest were:
| 103.0ms | (sqrt (+ (* (- phi1 phi2) (- phi1 phi2)) (exp (log (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))))))) |
| 22.0ms | (log (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))))) |
| 2.0ms | (cos (/ (+ phi2 phi1) 2)) |
4 calls. Slowest were:
| 528.0ms | (sqrt (+ (* (- phi1 phi2) (- phi1 phi2)) (exp (log (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2)))))))) |
| 131.0ms | (log (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))))) |
| 15.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 14.0ms | (cos (/ (+ phi2 phi1) 2)) |
102 calls. Slowest were:
| 691.0ms | (sqrt (+ (* (* (- (pow phi1 3) (pow phi2 3)) (- (pow phi1 3) (pow phi2 3))) (exp (log (* (+ (* lambda1 lambda1) (+ (* lambda2 lambda2) (* lambda1 lambda2))) (+ (* lambda1 lambda1) (+ (* lambda2 lambda2) (* lambda1 lambda2))))))) (* (* (+ (* phi1 phi1) (+ (* phi2 phi2) (* phi1 phi2))) (+ (* phi1 phi1) (+ (* phi2 phi2) (* phi1 phi2)))) (exp (log (* (* (- (pow lambda1 3) (pow lambda2 3)) (cos (/ (+ phi2 phi1) 2))) (* (- (pow lambda1 3) (pow lambda2 3)) (cos (/ (+ phi2 phi1) 2))))))))) |
| 621.0ms | (log (* (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (cos (/ (+ phi2 phi1) 2))) (* (- (pow lambda1 3) (pow lambda2 3)) (cos (/ (+ phi2 phi1) 2))))) |
| 608.0ms | (log (* (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (cos (/ (+ phi2 phi1) 2))))) |
10 alts after pruning (7 fresh and 3 done)
Merged error: 30.2b
52.2% (3.8b remaining)
Error of 33.2b against oracle of 29.4b and baseline of 37.5b