


Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Initial program 16.5
Initial simplification16.5
rmApplied cos-diff3.9
Taylor expanded around inf 3.9
Simplified3.9
rmApplied log1p-expm1-u3.9
rmApplied acos-asin4.0
Final simplification4.0
herbie shell --seed 2018362 +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: 17.5s)Debug log
2 alts after pruning (2 fresh and 0 done)
Merged error: 15.4b
Found 4 expressions with local error:
| 2.2b | (cos (- lambda1 lambda2)) |
| 1.0b | (acos (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1)))) |
| 0.2b | (* R (acos (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1))))) |
| 0.2b | (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1))) |
4 calls. Slowest were:
| 3.0ms | (cos (- lambda1 lambda2)) |
| 1.0ms | (* R (acos (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1))))) |
| 0.0ms | (acos (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1)))) |
4 calls. Slowest were:
| 161.0ms | (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1))) |
| 36.0ms | (cos (- lambda1 lambda2)) |
| 30.0ms | (* R (acos (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1))))) |
| 18.0ms | (acos (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi2) (sin phi1)))) |
18 calls. Slowest were:
| 102.0ms | (- (+ (* phi1 phi2) 1) (* 1/2 (pow phi1 2))) |
| 51.0ms | (- (+ 1 (* lambda2 lambda1)) (* 1/2 (pow lambda1 2))) |
| 40.0ms | (* R (acos (fma (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)) (* (sin phi1) (sin phi2))))) |
12 alts after pruning (12 fresh and 0 done)
Merged error: 4.3b
Found 4 expressions with local error:
| 1.0b | (acos (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1)))) |
| 0.3b | (* R (acos (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1))))) |
| 0.2b | (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1))) |
| 0.2b | (* (sin lambda1) (sin lambda2)) |
4 calls. Slowest were:
| 4.0ms | (* (sin lambda1) (sin lambda2)) |
| 1.0ms | (* R (acos (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1))))) |
| 0.0ms | (acos (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1)))) |
4 calls. Slowest were:
| 262.0ms | (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1))) |
| 45.0ms | (* (sin lambda1) (sin lambda2)) |
| 31.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:
| 334.0ms | (sqrt (acos (fma (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin phi2) (sin phi1))))) |
| 293.0ms | (acos (fma (* (cos phi1) (cos phi2)) (+ (* (sin lambda1) (sin lambda2)) (* (cos lambda1) (cos lambda2))) (* (sin phi1) (sin phi2)))) |
| 287.0ms | (* (acos (fma (* (cos phi1) (cos phi2)) (+ (* (sin lambda1) (sin lambda2)) (* (cos lambda1) (cos lambda2))) (* (sin phi1) (sin phi2)))) R) |
15 alts after pruning (15 fresh and 0 done)
Merged error: 4.2b
Found 4 expressions with local error:
| 1.0b | (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda1) (sin lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))) |
| 0.3b | (* R (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda1) (sin lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2))))) |
| 0.2b | (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda1) (sin lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2))) |
| 0.2b | (* (sin lambda1) (sin lambda2)) |
4 calls. Slowest were:
| 4.0ms | (* (sin lambda1) (sin lambda2)) |
| 1.0ms | (* R (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda1) (sin lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2))))) |
| 0.0ms | (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda1) (sin lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))) |
4 calls. Slowest were:
| 296.0ms | (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda1) (sin lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2))) |
| 54.0ms | (* (sin lambda1) (sin lambda2)) |
| 30.0ms | (* R (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda1) (sin lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2))))) |
| 16.0ms | (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda1) (sin lambda2))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))) |
24 calls. Slowest were:
| 264.0ms | (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (sin lambda2) (sin lambda1)))) (* (sin phi1) (sin phi2)))) |
| 163.0ms | (* (acos (fma (fma (cos lambda2) (cos lambda1) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2)) (* (sin phi1) (sin phi2)))) R) |
| 148.0ms | (+ (* (cos phi1) (* (cos phi2) (* (sin lambda1) (sin lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (* (sin phi1) (sin phi2)))) |
13 alts after pruning (13 fresh and 0 done)
Merged error: 4.2b
Found 4 expressions with local error:
| 1.0b | (acos (fma (fma (cos lambda2) (cos lambda1) (log1p (expm1 (* (sin lambda1) (sin lambda2))))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))) |
| 0.3b | (* R (acos (fma (fma (cos lambda2) (cos lambda1) (log1p (expm1 (* (sin lambda1) (sin lambda2))))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2))))) |
| 0.2b | (fma (fma (cos lambda2) (cos lambda1) (log1p (expm1 (* (sin lambda1) (sin lambda2))))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2))) |
| 0.2b | (* (sin lambda1) (sin lambda2)) |
4 calls. Slowest were:
| 4.0ms | (* (sin lambda1) (sin lambda2)) |
| 1.0ms | (* R (acos (fma (fma (cos lambda2) (cos lambda1) (log1p (expm1 (* (sin lambda1) (sin lambda2))))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2))))) |
| 0.0ms | (acos (fma (fma (cos lambda2) (cos lambda1) (log1p (expm1 (* (sin lambda1) (sin lambda2))))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))) |
4 calls. Slowest were:
| 328.0ms | (fma (fma (cos lambda2) (cos lambda1) (log1p (expm1 (* (sin lambda1) (sin lambda2))))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2))) |
| 58.0ms | (* (sin lambda1) (sin lambda2)) |
| 52.0ms | (* R (acos (fma (fma (cos lambda2) (cos lambda1) (log1p (expm1 (* (sin lambda1) (sin lambda2))))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2))))) |
| 14.0ms | (acos (fma (fma (cos lambda2) (cos lambda1) (log1p (expm1 (* (sin lambda1) (sin lambda2))))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))) |
24 calls. Slowest were:
| 175.0ms | (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (sin lambda2) (sin lambda1)))) (* (sin phi1) (sin phi2)))) |
| 160.0ms | (acos (fma (fma (cos lambda2) (cos lambda1) (log1p (expm1 (* (sin lambda1) (sin lambda2))))) (* (cos phi2) (cos phi1)) (* (sin phi1) (sin phi2)))) |
| 159.0ms | (+ (* (cos phi1) (* (cos phi2) (* (sin lambda1) (sin lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (* (sin phi1) (sin phi2)))) |
12 alts after pruning (12 fresh and 0 done)
Merged error: 4.2b
0% (0.4b remaining)
Error of 4.0b against oracle of 3.6b and baseline of 4.0b