


Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 37.1
Simplified3.7
rmApplied *-commutative3.7
Final simplification3.7
herbie shell --seed 2019005 +o rules:numerics
(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: 20.3s)Debug log
1 calls. Slowest were:
| 189.0ms | (* R (sqrt (+ (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) (* (- phi1 phi2) (- phi1 phi2))))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 4.3b
Found 4 expressions with local error:
| 5.5b | (cos (/ (+ phi2 phi1) 2)) |
| 0.2b | (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) |
| 0.1b | (* (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) R) |
| 0.0b | (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) |
4 calls. Slowest were:
| 10.0ms | (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) |
| 5.0ms | (* (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) R) |
| 4.0ms | (cos (/ (+ phi2 phi1) 2)) |
4 calls. Slowest were:
| 544.0ms | (* (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) R) |
| 373.0ms | (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) |
| 81.0ms | (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) |
| 25.0ms | (cos (/ (+ phi2 phi1) 2)) |
24 calls. Slowest were:
| 433.0ms | (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) |
| 318.0ms | (+ (/ (* lambda2 (* phi1 phi2)) (* (pow lambda1 2) (cos (* 1/2 (+ phi1 phi2))))) (+ (* lambda2 (cos (* 1/2 (+ phi1 phi2)))) (/ (* phi1 phi2) (* lambda1 (cos (* 1/2 (+ phi1 phi2))))))) |
| 243.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
12 alts after pruning (12 fresh and 0 done)
Merged error: 4.1b
Found 4 expressions with local error:
| 5.5b | (cos (/ (+ phi2 phi1) 2)) |
| 0.2b | (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) |
| 0.1b | (* R (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) |
| 0.0b | (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) |
4 calls. Slowest were:
| 9.0ms | (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) |
| 4.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 1.0ms | (* R (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) |
4 calls. Slowest were:
| 527.0ms | (* R (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) |
| 373.0ms | (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) |
| 93.0ms | (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) |
| 15.0ms | (cos (/ (+ phi2 phi1) 2)) |
25 calls. Slowest were:
| 305.0ms | (+ (/ (* lambda2 (* phi1 phi2)) (* (pow lambda1 2) (cos (* 1/2 (+ phi1 phi2))))) (+ (* lambda2 (cos (* 1/2 (+ phi1 phi2)))) (/ (* phi1 phi2) (* lambda1 (cos (* 1/2 (+ phi1 phi2))))))) |
| 251.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 198.0ms | (* (* (* (- lambda1 lambda2) (- lambda1 lambda2)) (- lambda1 lambda2)) (* (* (cos (/ (+ phi2 phi1) 2)) (cos (/ (+ phi2 phi1) 2))) (cos (/ (+ phi2 phi1) 2)))) |
12 alts after pruning (11 fresh and 1 done)
Merged error: 4.1b
Found 4 expressions with local error:
| 5.5b | (cos (/ (+ phi2 phi1) 2)) |
| 5.5b | (cos (/ (+ phi2 phi1) 2)) |
| 5.5b | (cos (/ (+ phi2 phi1) 2)) |
| 0.5b | (cbrt (* (* (cos (/ (+ phi2 phi1) 2)) (cos (/ (+ phi2 phi1) 2))) (cos (/ (+ phi2 phi1) 2)))) |
4 calls. Slowest were:
| 15.0ms | (cbrt (* (* (cos (/ (+ phi2 phi1) 2)) (cos (/ (+ phi2 phi1) 2))) (cos (/ (+ phi2 phi1) 2)))) |
| 4.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 4.0ms | (cos (/ (+ phi2 phi1) 2)) |
4 calls. Slowest were:
| 27.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 27.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 26.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 20.0ms | (cbrt (* (* (cos (/ (+ phi2 phi1) 2)) (cos (/ (+ phi2 phi1) 2))) (cos (/ (+ phi2 phi1) 2)))) |
15 calls. Slowest were:
| 293.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 273.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 271.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
13 alts after pruning (11 fresh and 2 done)
Merged error: 4.1b
Found 4 expressions with local error:
| 5.5b | (cos (/ (+ phi1 phi2) 2)) |
| 5.5b | (cos (/ (+ phi1 phi2) 2)) |
| 5.4b | (cos (+ (/ (+ phi1 phi2) 2) (/ (+ phi1 phi2) 2))) |
| 1.0b | (cbrt 2) |
4 calls. Slowest were:
| 8.0ms | (cos (+ (/ (+ phi1 phi2) 2) (/ (+ phi1 phi2) 2))) |
| 2.0ms | (cos (/ (+ phi1 phi2) 2)) |
| 2.0ms | (cos (/ (+ phi1 phi2) 2)) |
4 calls. Slowest were:
| 15.0ms | (cos (/ (+ phi1 phi2) 2)) |
| 14.0ms | (cos (/ (+ phi1 phi2) 2)) |
| 12.0ms | (cos (+ (/ (+ phi1 phi2) 2) (/ (+ phi1 phi2) 2))) |
| 0.0ms | (cbrt 2) |
11 calls. Slowest were:
| 251.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi1 2)))) |
| 248.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi1 2)))) |
| 179.0ms | (- 1 (+ (* phi1 phi2) (* 1/2 (pow phi1 2)))) |
13 alts after pruning (11 fresh and 2 done)
Merged error: 4.1b
0% (0.2b remaining)
Error of 3.7b against oracle of 3.6b and baseline of 3.7b