


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.9
Final simplification3.9
herbie shell --seed 2019016 +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: 19.6s)Debug log
| 373× | (pre true 80) |
| 265× | (body real 80) |
| 40× | (body real 640) |
| 30× | (body real 1280) |
| 22× | (body real 320) |
| 16× | (body real 160) |
| 142.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: 3.5b
Found 4 expressions with local error:
| 2.9b | (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 |
| 6.0ms | (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) |
| 3.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 3.0ms | (* (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) R) |
| 0.0ms | (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) |
| 356.0ms | (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) |
| 343.0ms | (* (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) R) |
| 62.0ms | (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) |
| 15.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 362.0ms | (- (* (cos (* 1/2 (+ phi1 phi2))) lambda1) (* lambda2 (cos (* 1/2 (+ phi1 phi2))))) |
| 278.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))))))) |
| 211.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 192.0ms | (* (* (* (- lambda1 lambda2) (- lambda1 lambda2)) (- lambda1 lambda2)) (* (* (cos (/ (+ phi2 phi1) 2)) (cos (/ (+ phi2 phi1) 2))) (cos (/ (+ phi2 phi1) 2)))) |
| 190.0ms | (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (cos (/ (+ phi2 phi1) 2))) |
9 alts after pruning (8 fresh and 1 done)
Merged error: 3.5b
Found 4 expressions with local error:
| 2.9b | (cos (/ (+ phi2 phi1) 2)) |
| 2.9b | (cos (/ (+ phi2 phi1) 2)) |
| 2.9b | (cos (/ (+ phi2 phi1) 2)) |
| 0.5b | (cbrt (cos (/ (+ phi2 phi1) 2))) |
| 5× | add-cube-cbrt |
| 5× | *-un-lft-identity |
| 5× | add-sqr-sqrt |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | add-exp-log |
| 4× | add-cbrt-cube |
| 4× | pow1 |
| 4× | expm1-log1p-u |
| 3× | cbrt-prod |
| 1× | pow1/3 |
| 2.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 2.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 2.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 1.0ms | (cbrt (cos (/ (+ phi2 phi1) 2))) |
| 83.0ms | (cbrt (cos (/ (+ phi2 phi1) 2))) |
| 22.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 15.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 15.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 290.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 250.0ms | (- 1 (+ (* 1/12 (* phi1 phi2)) (* 1/24 (pow phi2 2)))) |
| 215.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 163.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 20.0ms | (cos (* 1/2 (+ phi1 phi2))) |
9 alts after pruning (8 fresh and 1 done)
Merged error: 3.5b
Found 4 expressions with local error:
| 2.9b | (cos (/ (+ phi2 phi1) 2)) |
| 2.9b | (cos (/ (+ phi2 phi1) 2)) |
| 2.9b | (cos (/ (+ phi2 phi1) 2)) |
| 0.5b | (cbrt (cos (/ (+ phi2 phi1) 2))) |
| 5× | add-cube-cbrt |
| 5× | *-un-lft-identity |
| 5× | add-sqr-sqrt |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | add-exp-log |
| 4× | add-cbrt-cube |
| 4× | pow1 |
| 4× | expm1-log1p-u |
| 3× | cbrt-prod |
| 1× | pow1/3 |
| 2.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 2.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 2.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 1.0ms | (cbrt (cos (/ (+ phi2 phi1) 2))) |
| 100.0ms | (cbrt (cos (/ (+ phi2 phi1) 2))) |
| 24.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 15.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 15.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 231.0ms | (- 1 (+ (* 1/12 (* phi1 phi2)) (* 1/24 (pow phi2 2)))) |
| 226.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 219.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 206.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 16.0ms | (cos (* 1/2 (+ phi1 phi2))) |
9 alts after pruning (7 fresh and 2 done)
Merged error: 3.5b
Found 4 expressions with local error:
| 2.9b | (cos (/ (+ phi2 phi1) 2)) |
| 0.6b | (cbrt (- lambda1 lambda2)) |
| 0.6b | (cbrt (- lambda1 lambda2)) |
| 0.6b | (cbrt (- lambda1 lambda2)) |
| 9× | cbrt-prod |
| 7× | add-cube-cbrt |
| 7× | *-un-lft-identity |
| 7× | add-sqr-sqrt |
| 6× | cbrt-div |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | add-exp-log |
| 4× | add-cbrt-cube |
| 4× | pow1 |
| 4× | expm1-log1p-u |
| 3× | flip-- |
| 3× | pow1/3 |
| 3× | flip3-- |
| 4.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 1.0ms | (cbrt (- lambda1 lambda2)) |
| 1.0ms | (cbrt (- lambda1 lambda2)) |
| 1.0ms | (cbrt (- lambda1 lambda2)) |
| 166.0ms | (cbrt (- lambda1 lambda2)) |
| 154.0ms | (cbrt (- lambda1 lambda2)) |
| 153.0ms | (cbrt (- lambda1 lambda2)) |
| 25.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 253.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 188.0ms | (- (exp (* 1/3 (+ (log -1) (log lambda2)))) (+ (* 1/9 (* (exp (* 1/3 (- (log -1) (* 5 (log lambda2))))) (pow lambda1 2))) (* 1/3 (* (exp (* 1/3 (- (log -1) (* 2 (log lambda2))))) lambda1)))) |
| 175.0ms | (- (exp (* 1/3 (+ (log -1) (log lambda2)))) (+ (* 1/9 (* (exp (* 1/3 (- (log -1) (* 5 (log lambda2))))) (pow lambda1 2))) (* 1/3 (* (exp (* 1/3 (- (log -1) (* 2 (log lambda2))))) lambda1)))) |
| 146.0ms | (exp (* 1/3 (- (log -1) (log (/ -1 lambda1))))) |
| 121.0ms | (exp (* 1/3 (- (log -1) (log (/ -1 lambda1))))) |
12 alts after pruning (9 fresh and 3 done)
Merged error: 3.5b
0% (0.1b remaining)
Error of 3.9b against oracle of 3.7b and baseline of 3.9b
| 11412× | (pre true 80) |
| 8226× | (body real 80) |
| 1287× | (body real 640) |
| 825× | (body real 1280) |
| 737× | (body real 320) |
| 337× | (body real 160) |