


Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 36.8
Simplified3.6
Final simplification3.6
herbie shell --seed 2019022 +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: 21.6s)Debug log
| 84.0ms | 281× | body | 80 | valid |
| 28.0ms | 28× | body | 1280 | valid |
| 21.0ms | 33× | body | 320 | valid |
| 20.0ms | 25× | body | 640 | valid |
| 3.0ms | 10× | body | 160 | valid |
| 129.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: 2.4b
Found 4 expressions with local error:
| 4.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)) |
| 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))) |
| 3.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 2.0ms | (* (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) R) |
| 0.0ms | (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) |
| 532.0ms | (* (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) R) |
| 378.0ms | (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)) |
| 83.0ms | (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) |
| 16.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 265.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))))))) |
| 229.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 210.0ms | (* (* (* (- lambda1 lambda2) (- lambda1 lambda2)) (- lambda1 lambda2)) (* (* (cos (/ (+ phi2 phi1) 2)) (cos (/ (+ phi2 phi1) 2))) (cos (/ (+ phi2 phi1) 2)))) |
| 140.0ms | (* (- (* lambda1 lambda1) (* lambda2 lambda2)) (cos (/ (+ phi2 phi1) 2))) |
| 134.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)))))) |
10 alts after pruning (9 fresh and 1 done)
Merged error: 2.3b
Found 4 expressions with local error:
| 4.5b | (cos (/ (+ phi2 phi1) 2)) |
| 4.5b | (cos (/ (+ phi2 phi1) 2)) |
| 0.3b | (* (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) (* (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) R)) |
| 0.2b | (* (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) R) |
| 12× | associate-*l* |
| 8× | add-cube-cbrt |
| 8× | *-un-lft-identity |
| 8× | add-sqr-sqrt |
| 6× | sqrt-prod |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 6× | pow1 |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | expm1-log1p-u |
| 2× | *-commutative |
| 1× | cbrt-unprod |
| 1× | prod-exp |
| 1× | pow-prod-down |
| 1× | associate-*r* |
| 9.0ms | (* (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) (* (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) R)) |
| 3.0ms | (* (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) R) |
| 2.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 2.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 754.0ms | (* (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) R) |
| 439.0ms | (* (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) (* (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) R)) |
| 24.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 22.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 388.0ms | (* (* (* (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)))) (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)))) (* (* (* (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) R) (* (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) R)) (* (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) R))) |
| 227.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 223.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 147.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)))))) |
| 124.0ms | (+ (* lambda2 (* (cos (* 1/2 (+ phi1 phi2))) R)) (+ (/ (* R (* phi1 phi2)) (* lambda1 (cos (* 1/2 (+ phi1 phi2))))) (/ (* R (* lambda2 (* phi1 phi2))) (* (pow lambda1 2) (cos (* 1/2 (+ phi1 phi2))))))) |
11 alts after pruning (10 fresh and 1 done)
Merged error: 2.3b
Found 4 expressions with local error:
| 4.5b | (cos (/ (+ phi2 phi1) 2)) |
| 4.5b | (cos (/ (+ phi2 phi1) 2)) |
| 0.5b | (log (exp (cos (/ (+ phi2 phi1) 2)))) |
| 0.3b | (* (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) (* (sqrt (hypot (* (- lambda1 lambda2) (log (exp (cos (/ (+ phi2 phi1) 2))))) (- phi1 phi2))) R)) |
| 8× | add-cube-cbrt |
| 8× | *-un-lft-identity |
| 8× | add-sqr-sqrt |
| 7× | pow1 |
| 6× | add-exp-log |
| 6× | associate-*l* |
| 6× | add-cbrt-cube |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | log-pow |
| 4× | expm1-log1p-u |
| 3× | sqrt-prod |
| 3× | exp-prod |
| 3× | log-prod |
| 1× | cbrt-unprod |
| 1× | *-commutative |
| 1× | prod-exp |
| 1× | pow-prod-down |
| 1× | associate-*r* |
| 1× | rem-log-exp |
| 16.0ms | (* (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) (* (sqrt (hypot (* (- lambda1 lambda2) (log (exp (cos (/ (+ phi2 phi1) 2))))) (- phi1 phi2))) R)) |
| 7.0ms | (log (exp (cos (/ (+ phi2 phi1) 2)))) |
| 4.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 4.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 466.0ms | (* (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) (* (sqrt (hypot (* (- lambda1 lambda2) (log (exp (cos (/ (+ phi2 phi1) 2))))) (- phi1 phi2))) R)) |
| 28.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 25.0ms | (log (exp (cos (/ (+ phi2 phi1) 2)))) |
| 23.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 286.0ms | (* (* (* (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2))) (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)))) (sqrt (hypot (* (- lambda1 lambda2) (cos (/ (+ phi2 phi1) 2))) (- phi1 phi2)))) (* (* (* (sqrt (hypot (* (- lambda1 lambda2) (log (exp (cos (/ (+ phi2 phi1) 2))))) (- phi1 phi2))) R) (* (sqrt (hypot (* (- lambda1 lambda2) (log (exp (cos (/ (+ phi2 phi1) 2))))) (- phi1 phi2))) R)) (* (sqrt (hypot (* (- lambda1 lambda2) (log (exp (cos (/ (+ phi2 phi1) 2))))) (- phi1 phi2))) R))) |
| 246.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 231.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 224.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 155.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 (10 fresh and 2 done)
Merged error: 2.3b
Found 4 expressions with local error:
| 4.5b | (cos (/ (+ phi2 phi1) 2)) |
| 4.5b | (cos (/ (+ phi2 phi1) 2)) |
| 4.5b | (cos (/ (+ phi2 phi1) 2)) |
| 4.5b | (cos (/ (+ phi2 phi1) 2)) |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | add-cube-cbrt |
| 4× | add-exp-log |
| 4× | add-cbrt-cube |
| 4× | *-un-lft-identity |
| 4× | pow1 |
| 4× | expm1-log1p-u |
| 4× | add-sqr-sqrt |
| 5.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 2.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 2.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 2.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 24.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 15.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 15.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 14.0ms | (cos (/ (+ phi2 phi1) 2)) |
| 299.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 277.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 247.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 193.0ms | (- 1 (+ (* 1/4 (* phi1 phi2)) (* 1/8 (pow phi2 2)))) |
| 15.0ms | (cos (* 1/2 (+ phi1 phi2))) |
12 alts after pruning (9 fresh and 3 done)
Merged error: 2.3b
0% (0.2b remaining)
Error of 3.6b against oracle of 3.4b and baseline of 3.6b
| 3.4s | 8391× | body | 80 | valid |
| 1.5s | 1258× | body | 640 | valid |
| 1.2s | 814× | body | 1280 | valid |
| 689.0ms | 718× | body | 320 | valid |
| 169.0ms | 321× | body | 160 | valid |