


Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Initial program 17.0
rmApplied cos-diff4.2
Taylor expanded around inf 4.2
Simplified4.2
rmApplied add-log-exp4.3
rmApplied add-exp-log4.3
Final simplification4.3
herbie shell --seed 2019002 +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: 43.7s)Debug log
1 calls. Slowest were:
| 91.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.9b
Found 4 expressions with local error:
| 2.3b | (cos (- lambda1 lambda2)) |
| 0.6b | (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) |
| 0.2b | (* (sin phi1) (sin phi2)) |
| 0.2b | (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))) |
4 calls. Slowest were:
| 11.0ms | (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))) |
| 4.0ms | (* (sin phi1) (sin phi2)) |
| 4.0ms | (cos (- lambda1 lambda2)) |
4 calls. Slowest were:
| 87.0ms | (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))) |
| 53.0ms | (* (sin phi1) (sin phi2)) |
| 23.0ms | (cos (- lambda1 lambda2)) |
| 12.0ms | (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) |
37 calls. Slowest were:
| 294.0ms | (* (* (* (* (cos phi1) (cos phi2)) (* (cos phi1) (cos phi2))) (* (cos phi1) (cos phi2))) (* (* (cos (- lambda1 lambda2)) (cos (- lambda1 lambda2))) (cos (- lambda1 lambda2)))) |
| 280.0ms | (* (* (* (* (cos phi1) (cos phi1)) (cos phi1)) (* (* (cos phi2) (cos phi2)) (cos phi2))) (* (* (cos (- lambda1 lambda2)) (cos (- lambda1 lambda2))) (cos (- lambda1 lambda2)))) |
| 157.0ms | (- 1 (+ (* 1/2 (pow phi2 2)) (* 1/2 (pow phi1 2)))) |
13 alts after pruning (13 fresh and 0 done)
Merged error: 3.6b
Found 4 expressions with local error:
| 0.7b | (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))) |
| 0.2b | (* (sin phi1) (sin phi2)) |
| 0.2b | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))) R) |
| 0.2b | (* (sin lambda1) (sin lambda2)) |
4 calls. Slowest were:
| 11.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))) R) |
| 7.0ms | (* (sin lambda1) (sin lambda2)) |
| 7.0ms | (* (sin phi1) (sin phi2)) |
4 calls. Slowest were:
| 85.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))) R) |
| 72.0ms | (* (sin lambda1) (sin lambda2)) |
| 57.0ms | (* (sin phi1) (sin phi2)) |
| 31.0ms | (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))) |
32 calls. Slowest were:
| 318.0ms | (* (cbrt (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))))))) (cbrt (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))))) |
| 284.0ms | (sqrt (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))))))) |
| 262.0ms | (acos (+ (* (cos phi1) (* (cos phi2) (* (sin lambda1) (sin lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (* (sin phi1) (sin phi2))))) |
18 alts after pruning (18 fresh and 0 done)
Merged error: 3.4b
Found 4 expressions with local error:
| 0.7b | (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))) |
| 0.2b | (* (sin phi1) (sin phi2)) |
| 0.2b | (* (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))) R) |
| 0.2b | (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2))) |
4 calls. Slowest were:
| 7.0ms | (* (sin phi1) (sin phi2)) |
| 5.0ms | (* (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))) R) |
| 1.0ms | (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))) |
4 calls. Slowest were:
| 293.0ms | (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2))) |
| 68.0ms | (* (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))) R) |
| 60.0ms | (* (sin phi1) (sin phi2)) |
| 15.0ms | (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))) |
23 calls. Slowest were:
| 245.0ms | (+ (* (cos phi1) (* (cos phi2) (* (sin lambda1) (sin lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (* (sin phi1) (sin phi2)))) |
| 204.0ms | (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (sin lambda2) (sin lambda1)))) (* (sin phi1) (sin phi2)))) |
| 122.0ms | (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi1) (cos phi2)) (* (sin phi1) (sin phi2)))) |
18 alts after pruning (18 fresh and 0 done)
Merged error: 3.4b
Found 4 expressions with local error:
| 0.7b | (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))) |
| 0.5b | (log (exp (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))))) |
| 0.4b | (exp (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2))))) |
| 0.2b | (* (sin phi1) (sin phi2)) |
4 calls. Slowest were:
| 5.0ms | (* (sin phi1) (sin phi2)) |
| 4.0ms | (log (exp (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))))) |
| 1.0ms | (exp (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2))))) |
4 calls. Slowest were:
| 72.0ms | (* (sin phi1) (sin phi2)) |
| 52.0ms | (exp (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2))))) |
| 10.0ms | (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))) |
| 10.0ms | (log (exp (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))))) |
34 calls. Slowest were:
| 163.0ms | (log (sqrt (exp (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2))))))) |
| 161.0ms | (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2)) (* (sin phi1) (sin phi2)))) |
| 160.0ms | (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))) |
19 alts after pruning (19 fresh and 0 done)
Merged error: 3.4b
0% (0.4b remaining)
Error of 4.3b against oracle of 3.9b and baseline of 4.3b