


Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Initial program 16.6
Simplified16.6
rmApplied cos-diff4.1
Taylor expanded around -inf 4.1
Simplified4.1
rmApplied log1p-expm1-u4.1
rmApplied add-log-exp4.1
Final simplification4.1
herbie shell --seed 2019004 +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.5s)Debug log
1 calls. Slowest were:
| 34.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: 17.9b
Found 4 expressions with local error:
| 4.6b | (cos (- lambda1 lambda2)) |
| 0.5b | (acos (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1)))) |
| 0.3b | (* (sin phi2) (sin phi1)) |
| 0.2b | (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1))) |
4 calls. Slowest were:
| 6.0ms | (cos (- lambda1 lambda2)) |
| 4.0ms | (* (sin phi2) (sin phi1)) |
| 1.0ms | (acos (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1)))) |
4 calls. Slowest were:
| 176.0ms | (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1))) |
| 67.0ms | (* (sin phi2) (sin phi1)) |
| 23.0ms | (cos (- lambda1 lambda2)) |
| 10.0ms | (acos (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1)))) |
24 calls. Slowest were:
| 95.0ms | (- (+ 1 (* lambda2 lambda1)) (* 1/2 (pow lambda1 2))) |
| 86.0ms | (* (* (* (sin phi2) (sin phi2)) (sin phi2)) (* (* (sin phi1) (sin phi1)) (sin phi1))) |
| 60.0ms | (- (+ (* phi1 phi2) 1) (* 1/2 (pow phi1 2))) |
13 alts after pruning (13 fresh and 0 done)
Merged error: 2.1b
Found 4 expressions with local error:
| 0.5b | (acos (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1)))) |
| 0.3b | (* (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))))) |
4 calls. Slowest were:
| 3.0ms | (* (sin phi2) (sin phi1)) |
| 1.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)))) |
4 calls. Slowest were:
| 271.0ms | (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1))) |
| 54.0ms | (* (sin phi2) (sin phi1)) |
| 41.0ms | (* R (acos (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1))))) |
| 14.0ms | (acos (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1)))) |
24 calls. Slowest were:
| 281.0ms | (acos (fma (* (cos phi1) (cos phi2)) (+ (* (sin lambda2) (sin lambda1)) (* (cos lambda1) (cos lambda2))) (* (sin phi1) (sin phi2)))) |
| 275.0ms | (acos (fma (* (cos phi1) (cos phi2)) (+ (* (sin lambda1) (sin lambda2)) (* (cos lambda1) (cos lambda2))) (* (sin phi1) (sin phi2)))) |
| 266.0ms | (acos (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1)))) |
19 alts after pruning (19 fresh and 0 done)
Merged error: 1.9b
Found 4 expressions with local error:
| 0.5b | (acos (fma (fma (sin lambda2) (sin lambda1) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))) |
| 0.3b | (* (sin phi2) (sin phi1)) |
| 0.3b | (fma (fma (sin lambda2) (sin lambda1) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))) |
| 0.2b | (* (acos (fma (fma (sin lambda2) (sin lambda1) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))) R) |
4 calls. Slowest were:
| 7.0ms | (* (sin phi2) (sin phi1)) |
| 5.0ms | (* (acos (fma (fma (sin lambda2) (sin lambda1) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))) R) |
| 1.0ms | (acos (fma (fma (sin lambda2) (sin lambda1) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))) |
4 calls. Slowest were:
| 307.0ms | (fma (fma (sin lambda2) (sin lambda1) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))) |
| 73.0ms | (* (acos (fma (fma (sin lambda2) (sin lambda1) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))) R) |
| 46.0ms | (* (sin phi2) (sin phi1)) |
| 18.0ms | (acos (fma (fma (sin lambda2) (sin lambda1) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))) |
23 calls. Slowest were:
| 223.0ms | (+ (* (cos phi1) (* (cos phi2) (* (sin lambda1) (sin lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (* (sin phi1) (sin phi2)))) |
| 221.0ms | (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (sin lambda2) (sin lambda1)))) (* (sin phi1) (sin phi2)))) |
| 141.0ms | (acos (fma (fma (sin lambda2) (sin lambda1) (* (cos lambda1) (cos lambda2))) (* (cos phi1) (cos phi2)) (* (sin phi1) (sin phi2)))) |
18 alts after pruning (18 fresh and 0 done)
Merged error: 1.9b
Found 4 expressions with local error:
| 0.5b | (acos (fma (fma (sin lambda2) (sin lambda1) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))) |
| 0.4b | (expm1 (acos (fma (fma (sin lambda2) (sin lambda1) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))))) |
| 0.3b | (* (sin phi2) (sin phi1)) |
| 0.3b | (fma (fma (sin lambda2) (sin lambda1) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))) |
4 calls. Slowest were:
| 7.0ms | (* (sin phi2) (sin phi1)) |
| 1.0ms | (acos (fma (fma (sin lambda2) (sin lambda1) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))) |
| 1.0ms | (expm1 (acos (fma (fma (sin lambda2) (sin lambda1) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))))) |
4 calls. Slowest were:
| 283.0ms | (fma (fma (sin lambda2) (sin lambda1) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))) |
| 56.0ms | (* (sin phi2) (sin phi1)) |
| 55.0ms | (expm1 (acos (fma (fma (sin lambda2) (sin lambda1) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1))))) |
| 16.0ms | (acos (fma (fma (sin lambda2) (sin lambda1) (* (cos lambda1) (cos lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi2) (sin phi1)))) |
22 calls. Slowest were:
| 225.0ms | (+ (* (cos phi1) (* (cos phi2) (* (sin lambda1) (sin lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (* (sin phi1) (sin phi2)))) |
| 175.0ms | (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (sin lambda2) (sin lambda1)))) (* (sin phi1) (sin phi2)))) |
| 155.0ms | (- (exp (acos (fma (fma (sin lambda2) (sin lambda1) (* (cos lambda1) (cos lambda2))) (* (cos phi1) (cos phi2)) (* (sin phi1) (sin phi2))))) 1) |
17 alts after pruning (17 fresh and 0 done)
Merged error: 1.9b
0% (0.3b remaining)
Error of 4.1b against oracle of 3.7b and baseline of 4.1b