


Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.7
rmApplied cos-diff3.6
Applied distribute-rgt-in3.6
rmApplied add-cbrt-cube3.6
rmApplied add-log-exp3.6
Final simplification3.6
herbie shell --seed 2018365 +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: 45.4s)Debug log
2 alts after pruning (2 fresh and 0 done)
Merged error: 16.6b
Found 4 expressions with local error:
| 3.4b | (cos (- lambda1 lambda2)) |
| 0.6b | (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) |
| 0.3b | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R) |
| 0.2b | (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))) |
4 calls. Slowest were:
| 11.0ms | (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))) |
| 6.0ms | (cos (- lambda1 lambda2)) |
| 5.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R) |
4 calls. Slowest were:
| 144.0ms | (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))) |
| 55.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R) |
| 26.0ms | (cos (- lambda1 lambda2)) |
| 11.0ms | (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) |
30 calls. Slowest were:
| 266.0ms | (* (* (* (* (cos phi1) (cos phi2)) (* (cos phi1) (cos phi2))) (* (cos phi1) (cos phi2))) (* (* (cos (- lambda1 lambda2)) (cos (- lambda1 lambda2))) (cos (- lambda1 lambda2)))) |
| 246.0ms | (- 1 (+ (* 1/2 (pow phi2 2)) (* 1/2 (pow phi1 2)))) |
| 226.0ms | (* (* (* (* (cos phi1) (cos phi1)) (cos phi1)) (* (* (cos phi2) (cos phi2)) (cos phi2))) (* (* (cos (- lambda1 lambda2)) (cos (- lambda1 lambda2))) (cos (- lambda1 lambda2)))) |
14 alts after pruning (14 fresh and 0 done)
Merged error: 2.9b
Found 4 expressions with local error:
| 0.6b | (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))) |
| 0.3b | (* (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))) R) |
| 0.3b | (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) |
| 0.2b | (* (sin lambda1) (sin lambda2)) |
4 calls. Slowest were:
| 29.0ms | (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) |
| 7.0ms | (* (sin lambda1) (sin lambda2)) |
| 5.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))) R) |
4 calls. Slowest were:
| 149.0ms | (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) |
| 84.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))) R) |
| 73.0ms | (* (sin lambda1) (sin lambda2)) |
| 30.0ms | (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))) |
40 calls. Slowest were:
| 685.0ms | (* (* (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin lambda1) (sin lambda2))) (* (* (* (cos phi1) (cos phi2)) (* (cos phi1) (cos phi2))) (* (cos phi1) (cos phi2)))) |
| 292.0ms | (* (cbrt (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))))))) (cbrt (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))))) |
| 269.0ms | (acos (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (sin lambda2) (sin lambda1)))) (* (sin phi1) (sin phi2))))) |
16 alts after pruning (16 fresh and 0 done)
Merged error: 2.8b
Found 4 expressions with local error:
| 26.5b | (cbrt (* (* (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))))) |
| 0.6b | (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (cbrt (* (* (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))))) |
| 0.3b | (* (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (cbrt (* (* (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))))) R) |
| 0.3b | (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) |
4 calls. Slowest were:
| 285.0ms | (cbrt (* (* (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))))) |
| 15.0ms | (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) |
| 2.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (cbrt (* (* (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))))) R) |
4 calls. Slowest were:
| 116.0ms | (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) |
| 115.0ms | (cbrt (* (* (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))))) |
| 104.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (cbrt (* (* (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))))) R) |
| 33.0ms | (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (cbrt (* (* (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))))) |
96 calls. Slowest were:
| 918.0ms | (cbrt (* (* (* (- (cos (- lambda1 lambda2)) (cos (+ lambda1 lambda2))) (* (cos phi1) (cos phi2))) (* (- (cos (- lambda1 lambda2)) (cos (+ lambda1 lambda2))) (* (cos phi1) (cos phi2)))) (* (- (cos (- lambda1 lambda2)) (cos (+ lambda1 lambda2))) (* (cos phi1) (cos phi2))))) |
| 724.0ms | (* (* (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin lambda1) (sin lambda2))) (* (* (* (cos phi1) (cos phi2)) (* (cos phi1) (cos phi2))) (* (cos phi1) (cos phi2)))) |
| 650.0ms | (cbrt (* (* (* (- (cos (- lambda1 lambda2)) (cos (+ lambda1 lambda2))) (+ (cos (+ phi1 phi2)) (cos (- phi1 phi2)))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))) (* (- (cos (- lambda1 lambda2)) (cos (+ lambda1 lambda2))) (+ (cos (+ phi1 phi2)) (cos (- phi1 phi2)))))) |
15 alts after pruning (15 fresh and 0 done)
Merged error: 2.8b
Found 4 expressions with local error:
| 0.6b | (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))) |
| 0.3b | (* R (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))))) |
| 0.2b | (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))) |
| 0.2b | (* (sin lambda2) (sin lambda1)) |
4 calls. Slowest were:
| 7.0ms | (* (sin lambda2) (sin lambda1)) |
| 2.0ms | (* R (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))))) |
| 1.0ms | (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))) |
4 calls. Slowest were:
| 294.0ms | (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))) |
| 58.0ms | (* (sin lambda2) (sin lambda1)) |
| 37.0ms | (* R (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))))) |
| 19.0ms | (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))) |
24 calls. Slowest were:
| 248.0ms | (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (sin lambda2) (sin lambda1)))) (* (sin phi1) (sin phi2)))) |
| 238.0ms | (+ (* (cos phi1) (* (cos phi2) (* (sin lambda1) (sin lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (* (sin phi1) (sin phi2)))) |
| 165.0ms | (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda2) (sin lambda1))) (* (cos phi1) (cos phi2)) (* (sin phi1) (sin phi2)))) |
16 alts after pruning (16 fresh and 0 done)
Merged error: 2.8b
0% (0.4b remaining)
Error of 3.6b against oracle of 3.3b and baseline of 3.6b