


Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Initial program 17.0
Simplified17.0
rmApplied cos-diff4.0
rmApplied log1p-expm1-u4.1
Final simplification4.1
herbie shell --seed 2019022 +o rules:numerics
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))
Time bar (total: 41.8s)Debug log
| 768.0ms | 154× | body | 1280 | valid |
| 172.0ms | 65× | body | 640 | valid |
| 25.0ms | 18× | body | 320 | valid |
| 8.0ms | 10× | body | 160 | valid |
| 4.0ms | 9× | body | 80 | valid |
| 36.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R) |
2 alts after pruning (2 fresh and 0 done)
Merged error: 15.5b
Found 4 expressions with local error:
| 4.2b | (cos (- lambda1 lambda2)) |
| 0.6b | (acos (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1)))) |
| 0.3b | (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1))) |
| 0.2b | (* (sin phi2) (sin phi1)) |
| 6× | add-cube-cbrt |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 6× | *-un-lft-identity |
| 6× | pow1 |
| 6× | add-sqr-sqrt |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | expm1-log1p-u |
| 3× | associate-*l* |
| 3× | associate-*r* |
| 2× | cos-sum |
| 1× | sin-mult |
| 1× | fma-udef |
| 1× | cbrt-unprod |
| 1× | *-commutative |
| 1× | prod-exp |
| 1× | pow-prod-down |
| 1× | sub-neg |
| 1× | cos-diff |
| 1× | acos-asin |
| 4.0ms | (* (sin phi2) (sin phi1)) |
| 3.0ms | (cos (- lambda1 lambda2)) |
| 1.0ms | (acos (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1)))) |
| 0.0ms | (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1))) |
| 186.0ms | (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1))) |
| 72.0ms | (* (sin phi2) (sin phi1)) |
| 32.0ms | (cos (- lambda1 lambda2)) |
| 10.0ms | (acos (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1)))) |
| 96.0ms | (* (* (* (sin phi2) (sin phi2)) (sin phi2)) (* (* (sin phi1) (sin phi1)) (sin phi1))) |
| 85.0ms | (- (+ 1 (* lambda2 lambda1)) (* 1/2 (pow lambda1 2))) |
| 77.0ms | (- (+ (* phi1 phi2) 1) (* 1/2 (pow phi1 2))) |
| 35.0ms | (acos (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi1) (sin phi2)))) |
| 26.0ms | (acos (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi1) (sin phi2)))) |
11 alts after pruning (11 fresh and 0 done)
Merged error: 2.3b
Found 4 expressions with local error:
| 0.6b | (acos (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1)))) |
| 0.3b | (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1))) |
| 0.2b | (* R (acos (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1))))) |
| 0.2b | (* (sin phi2) (sin phi1)) |
| 7× | add-cube-cbrt |
| 7× | *-un-lft-identity |
| 7× | add-sqr-sqrt |
| 6× | add-exp-log |
| 6× | associate-*r* |
| 6× | add-cbrt-cube |
| 6× | pow1 |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | expm1-log1p-u |
| 3× | associate-*l* |
| 2× | *-commutative |
| 1× | sin-mult |
| 1× | fma-udef |
| 1× | cbrt-unprod |
| 1× | prod-exp |
| 1× | pow-prod-down |
| 1× | acos-asin |
| 6.0ms | (* (sin phi2) (sin phi1)) |
| 2.0ms | (* R (acos (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1))))) |
| 1.0ms | (acos (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1)))) |
| 0.0ms | (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1))) |
| 297.0ms | (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1))) |
| 55.0ms | (* (sin phi2) (sin phi1)) |
| 40.0ms | (* R (acos (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1))))) |
| 21.0ms | (acos (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1)))) |
| 296.0ms | (* (acos (fma (* (cos phi1) (cos phi2)) (+ (* (sin lambda1) (sin lambda2)) (* (cos lambda1) (cos lambda2))) (* (sin phi1) (sin phi2)))) R) |
| 280.0ms | (* R (acos (fma (* (cos phi1) (cos phi2)) (+ (* (sin lambda2) (sin lambda1)) (* (cos lambda1) (cos lambda2))) (* (sin phi1) (sin phi2))))) |
| 252.0ms | (* (acos (fma (* (cos phi1) (cos phi2)) (+ (* (sin lambda1) (sin lambda2)) (* (cos lambda1) (cos lambda2))) (* (sin phi1) (sin phi2)))) R) |
| 234.0ms | (acos (fma (* (cos phi1) (cos phi2)) (+ (* (sin lambda2) (sin lambda1)) (* (cos lambda1) (cos lambda2))) (* (sin phi1) (sin phi2)))) |
| 228.0ms | (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (sin lambda2) (sin lambda1)))) (* (sin phi1) (sin phi2)))) |
15 alts after pruning (15 fresh and 0 done)
Merged error: 2.1b
Found 4 expressions with local error:
| 0.6b | (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))) |
| 0.3b | (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))) |
| 0.2b | (* R (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))))) |
| 0.2b | (* (sin phi2) (sin phi1)) |
| 7× | add-cube-cbrt |
| 7× | *-un-lft-identity |
| 7× | add-sqr-sqrt |
| 6× | add-exp-log |
| 6× | associate-*r* |
| 6× | add-cbrt-cube |
| 6× | pow1 |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | expm1-log1p-u |
| 3× | associate-*l* |
| 2× | *-commutative |
| 1× | sin-mult |
| 1× | fma-udef |
| 1× | cbrt-unprod |
| 1× | prod-exp |
| 1× | pow-prod-down |
| 1× | acos-asin |
| 7.0ms | (* (sin phi2) (sin phi1)) |
| 1.0ms | (* R (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))))) |
| 1.0ms | (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))) |
| 0.0ms | (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))) |
| 348.0ms | (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))) |
| 72.0ms | (* (sin phi2) (sin phi1)) |
| 26.0ms | (* R (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))))) |
| 10.0ms | (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))) |
| 237.0ms | (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (sin lambda2) (sin lambda1)))) (* (sin phi1) (sin phi2)))) |
| 201.0ms | (+ (* (cos phi1) (* (cos phi2) (* (sin lambda1) (sin lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (* (sin phi1) (sin phi2)))) |
| 133.0ms | (cbrt (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))))) |
| 129.0ms | (sqrt (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))))) |
| 125.0ms | (* (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi1) (cos phi2)) (* (sin phi1) (sin phi2)))) R) |
15 alts after pruning (15 fresh and 0 done)
Merged error: 2.1b
Found 4 expressions with local error:
| 0.6b | (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))) |
| 0.4b | (log (exp (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))))) |
| 0.4b | (exp (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))))) |
| 0.3b | (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))) |
| 7× | add-cube-cbrt |
| 7× | *-un-lft-identity |
| 7× | add-sqr-sqrt |
| 6× | exp-prod |
| 5× | add-log-exp |
| 5× | pow1 |
| 4× | log1p-expm1-u |
| 4× | log-pow |
| 4× | add-exp-log |
| 4× | add-cbrt-cube |
| 4× | expm1-log1p-u |
| 3× | log-prod |
| 3× | acos-asin |
| 2× | exp-diff |
| 1× | rem-exp-log |
| 1× | fma-udef |
| 1× | rem-log-exp |
| 1× | log-div |
| 2.0ms | (log (exp (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))))) |
| 2.0ms | (exp (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))))) |
| 1.0ms | (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))) |
| 0.0ms | (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))) |
| 291.0ms | (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))) |
| 33.0ms | (exp (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))))) |
| 13.0ms | (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))) |
| 10.0ms | (log (exp (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))))) |
| 233.0ms | (+ (* (cos phi1) (* (cos phi2) (* (sin lambda1) (sin lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (* (sin phi1) (sin phi2)))) |
| 180.0ms | (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (sin lambda2) (sin lambda1)))) (* (sin phi1) (sin phi2)))) |
| 140.0ms | (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi1) (cos phi2)) (* (sin phi1) (sin phi2)))) |
| 139.0ms | (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi1) (cos phi2)) (* (sin phi1) (sin phi2)))) |
| 135.0ms | (exp (* (cbrt (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))))) (cbrt (acos (fma (fma (sin lambda1) (sin lambda2) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))))))) |
20 alts after pruning (20 fresh and 0 done)
Merged error: 2.1b
0% (0.4b remaining)
Error of 4.1b against oracle of 3.7b and baseline of 4.1b
| 17.0s | 4739× | body | 1280 | valid |
| 4.9s | 2083× | body | 640 | valid |
| 1.1s | 731× | body | 320 | valid |
| 552.0ms | 294× | body | 160 | valid |
| 58.0ms | 147× | body | 80 | valid |
| 43.0ms | 8× | body | 2560 | valid |