


Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 37.0
Simplified3.8
Taylor expanded around -inf 3.8
Simplified3.8
Final simplification3.8
herbie shell --seed 2019010 +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.6s)Debug log
| 136.0ms | (* R (sqrt (+ (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) (* (- phi1 phi2) (- phi1 phi2))))) |
2 alts after pruning (2 fresh and 0 done)
Merged error: 3.2b
Found 4 expressions with local error:
| 2.6b | (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)) |
| 7× | add-cube-cbrt |
| 7× | *-un-lft-identity |
| 7× | add-sqr-sqrt |
| 6× | add-exp-log |
| 6× | associate-*l* |
| 6× | add-cbrt-cube |
| 6× | pow1 |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | expm1-log1p-u |
| 3× | associate-*r* |
| 2× | *-commutative |
| 2× | associate-*l/ |
| 1× | flip-- |
| 1× | cbrt-unprod |
| 1× | prod-exp |
| 1× | pow-prod-down |
| 1× | flip3-- |
| 1× | hypot-udef |
| 5.0ms | (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) |
| 2.0ms | (* (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) R) |
| 2.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 0.0ms | (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) |
| 432.0ms | (* (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) R) |
| 333.0ms | (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) |
| 84.0ms | (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) |
| 24.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 303.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))))))) |
| 239.0ms | (* (* (* (- lambda1 lambda2) (- lambda1 lambda2)) (- lambda1 lambda2)) (* (* (cos (/ (+ phi2 phi1) 2)) (cos (/ (+ phi2 phi1) 2))) (cos (/ (+ phi2 phi1) 2)))) |
| 196.0ms | (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (cos (/ (+ phi2 phi1) 2))) |
| 194.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 136.0ms | (- (+ (* lambda2 (* (cos (* 1/2 (+ phi1 phi2))) R)) (+ (/ (* phi1 (* R phi2)) (* (cos (* 1/2 (+ phi1 phi2))) lambda1)) (/ (* phi1 (* lambda2 (* R phi2))) (* (cos (* 1/2 (+ phi1 phi2))) (pow lambda1 2)))))) |
12 alts after pruning (12 fresh and 0 done)
Merged error: 3.0b
Found 4 expressions with local error:
| 2.6b | (cos (* (+ phi1 phi2) 1/2)) |
| 0.2b | (* (- lambda1 lambda2) (cos (* (+ phi1 phi2) 1/2))) |
| 0.1b | (* (hypot (* (- lambda1 lambda2) (cos (* (+ phi1 phi2) 1/2))) (- phi1 phi2)) R) |
| 0.0b | (hypot (* (- lambda1 lambda2) (cos (* (+ phi1 phi2) 1/2))) (- phi1 phi2)) |
| 7× | add-cube-cbrt |
| 7× | *-un-lft-identity |
| 7× | add-sqr-sqrt |
| 6× | add-exp-log |
| 6× | associate-*l* |
| 6× | add-cbrt-cube |
| 6× | pow1 |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | expm1-log1p-u |
| 3× | associate-*r* |
| 2× | *-commutative |
| 2× | associate-*l/ |
| 1× | flip-- |
| 1× | cbrt-unprod |
| 1× | prod-exp |
| 1× | pow-prod-down |
| 1× | flip3-- |
| 1× | hypot-udef |
| 26.0ms | (* (- lambda1 lambda2) (cos (* (+ phi1 phi2) 1/2))) |
| 10.0ms | (cos (* (+ phi1 phi2) 1/2)) |
| 5.0ms | (* (hypot (* (- lambda1 lambda2) (cos (* (+ phi1 phi2) 1/2))) (- phi1 phi2)) R) |
| 0.0ms | (hypot (* (- lambda1 lambda2) (cos (* (+ phi1 phi2) 1/2))) (- phi1 phi2)) |
| 483.0ms | (* (hypot (* (- lambda1 lambda2) (cos (* (+ phi1 phi2) 1/2))) (- phi1 phi2)) R) |
| 387.0ms | (hypot (* (- lambda1 lambda2) (cos (* (+ phi1 phi2) 1/2))) (- phi1 phi2)) |
| 106.0ms | (* (- lambda1 lambda2) (cos (* (+ phi1 phi2) 1/2))) |
| 25.0ms | (cos (* (+ phi1 phi2) 1/2)) |
| 196.0ms | (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (cos (* (+ phi1 phi2) 1/2))) |
| 184.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))))))) |
| 166.0ms | (* (* (* (- lambda1 lambda2) (- lambda1 lambda2)) (- lambda1 lambda2)) (* (* (cos (* (+ phi1 phi2) 1/2)) (cos (* (+ phi1 phi2) 1/2))) (cos (* (+ phi1 phi2) 1/2)))) |
| 158.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi1 2)))) |
| 114.0ms | (- (+ (* lambda2 (* (cos (* 1/2 (+ phi1 phi2))) R)) (+ (/ (* phi1 (* R phi2)) (* (cos (* 1/2 (+ phi1 phi2))) lambda1)) (/ (* phi1 (* lambda2 (* R phi2))) (* (cos (* 1/2 (+ phi1 phi2))) (pow lambda1 2)))))) |
12 alts after pruning (11 fresh and 1 done)
Merged error: 3.0b
Found 4 expressions with local error:
| 2.6b | (cos (* (+ phi1 phi2) 1/2)) |
| 0.5b | (expm1 (cos (* (+ phi1 phi2) 1/2))) |
| 0.3b | (log1p (expm1 (cos (* (+ phi1 phi2) 1/2)))) |
| 0.2b | (* (- lambda1 lambda2) (log1p (expm1 (cos (* (+ phi1 phi2) 1/2))))) |
| 6× | add-cube-cbrt |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 6× | *-un-lft-identity |
| 6× | pow1 |
| 6× | add-sqr-sqrt |
| 5× | log1p-expm1-u |
| 4× | add-log-exp |
| 4× | expm1-log1p-u |
| 3× | associate-*l* |
| 3× | associate-*r* |
| 2× | associate-*l/ |
| 1× | expm1-udef |
| 1× | flip-- |
| 1× | cbrt-unprod |
| 1× | *-commutative |
| 1× | log1p-expm1 |
| 1× | prod-exp |
| 1× | pow-prod-down |
| 1× | flip3-- |
| 1× | expm1-log1p |
| 1× | log1p-udef |
| 5.0ms | (cos (* (+ phi1 phi2) 1/2)) |
| 4.0ms | (* (- lambda1 lambda2) (log1p (expm1 (cos (* (+ phi1 phi2) 1/2))))) |
| 0.0ms | (expm1 (cos (* (+ phi1 phi2) 1/2))) |
| 0.0ms | (log1p (expm1 (cos (* (+ phi1 phi2) 1/2)))) |
| 103.0ms | (* (- lambda1 lambda2) (log1p (expm1 (cos (* (+ phi1 phi2) 1/2))))) |
| 49.0ms | (log1p (expm1 (cos (* (+ phi1 phi2) 1/2)))) |
| 44.0ms | (expm1 (cos (* (+ phi1 phi2) 1/2))) |
| 20.0ms | (cos (* (+ phi1 phi2) 1/2)) |
| 283.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi1 2)))) |
| 206.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi1 2)))) |
| 168.0ms | (* (* (* (- lambda1 lambda2) (- lambda1 lambda2)) (- lambda1 lambda2)) (* (* (log1p (expm1 (cos (* (+ phi1 phi2) 1/2)))) (log1p (expm1 (cos (* (+ phi1 phi2) 1/2))))) (log1p (expm1 (cos (* (+ phi1 phi2) 1/2)))))) |
| 164.0ms | (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (log1p (expm1 (cos (* (+ phi1 phi2) 1/2))))) |
| 148.0ms | (- E (+ (* 1/8 (* E (pow phi1 2))) (+ (* 1/4 (* E (* phi1 phi2))) 1))) |
13 alts after pruning (11 fresh and 2 done)
Merged error: 3.0b
Found 4 expressions with local error:
| 2.6b | (cos (* (+ phi1 phi2) 1/2)) |
| 2.6b | (cos (* (+ phi1 phi2) 1/2)) |
| 2.6b | (cos (* (+ phi1 phi2) 1/2)) |
| 0.7b | (* (expm1 (cos (* (+ phi1 phi2) 1/2))) (expm1 (cos (* (+ phi1 phi2) 1/2)))) |
| 9× | pow1 |
| 6× | add-cube-cbrt |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 6× | *-un-lft-identity |
| 6× | add-sqr-sqrt |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | expm1-log1p-u |
| 3× | associate-*l* |
| 3× | associate-*r* |
| 1× | cbrt-unprod |
| 1× | pow-prod-up |
| 1× | *-commutative |
| 1× | prod-exp |
| 1× | pow-prod-down |
| 1× | pow-plus |
| 1× | pow2 |
| 9.0ms | (cos (* (+ phi1 phi2) 1/2)) |
| 9.0ms | (cos (* (+ phi1 phi2) 1/2)) |
| 9.0ms | (cos (* (+ phi1 phi2) 1/2)) |
| 7.0ms | (* (expm1 (cos (* (+ phi1 phi2) 1/2))) (expm1 (cos (* (+ phi1 phi2) 1/2)))) |
| 72.0ms | (* (expm1 (cos (* (+ phi1 phi2) 1/2))) (expm1 (cos (* (+ phi1 phi2) 1/2)))) |
| 28.0ms | (cos (* (+ phi1 phi2) 1/2)) |
| 24.0ms | (cos (* (+ phi1 phi2) 1/2)) |
| 19.0ms | (cos (* (+ phi1 phi2) 1/2)) |
| 267.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi1 2)))) |
| 241.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi1 2)))) |
| 239.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi1 2)))) |
| 131.0ms | (- (+ (pow E 2) (+ (* 1/2 (* E (* phi1 phi2))) (+ (* 1/4 (* E (pow phi1 2))) 1))) (+ (* 1/2 (* (pow E 2) (* phi1 phi2))) (+ (* 1/4 (* (pow E 2) (pow phi1 2))) (* 2 E)))) |
| 50.0ms | (* (* (* (expm1 (cos (* (+ phi1 phi2) 1/2))) (expm1 (cos (* (+ phi1 phi2) 1/2)))) (expm1 (cos (* (+ phi1 phi2) 1/2)))) (* (* (expm1 (cos (* (+ phi1 phi2) 1/2))) (expm1 (cos (* (+ phi1 phi2) 1/2)))) (expm1 (cos (* (+ phi1 phi2) 1/2))))) |
14 alts after pruning (11 fresh and 3 done)
Merged error: 3.0b
0% (0.2b remaining)
Error of 3.8b against oracle of 3.6b and baseline of 3.8b