


Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.6
Initial simplification16.6
rmApplied cos-diff4.0
rmApplied add-log-exp4.0
Taylor expanded around inf 4.0
Simplified4.0
Final simplification4.0
herbie shell --seed 2018360
(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: 25.5s)Debug log
1 alts after pruning (1 fresh and 0 done)
Merged error: 18.6b
Found 4 expressions with local error:
| 3.3b | (cos (- lambda1 lambda2)) |
| 2.4b | (acos (+ (* (cos (- lambda1 lambda2)) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
| 0.2b | (* (cos (- lambda1 lambda2)) (* (cos phi1) (cos phi2))) |
| 0.2b | (* R (acos (+ (* (cos (- lambda1 lambda2)) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1))))) |
4 calls. Slowest were:
| 10.0ms | (* (cos (- lambda1 lambda2)) (* (cos phi1) (cos phi2))) |
| 3.0ms | (cos (- lambda1 lambda2)) |
| 1.0ms | (acos (+ (* (cos (- lambda1 lambda2)) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
4 calls. Slowest were:
| 107.0ms | (* (cos (- lambda1 lambda2)) (* (cos phi1) (cos phi2))) |
| 46.0ms | (* R (acos (+ (* (cos (- lambda1 lambda2)) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1))))) |
| 33.0ms | (cos (- lambda1 lambda2)) |
| 11.0ms | (acos (+ (* (cos (- lambda1 lambda2)) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
27 calls. Slowest were:
| 259.0ms | (* (* (* (cos (- lambda1 lambda2)) (cos (- lambda1 lambda2))) (cos (- lambda1 lambda2))) (* (* (* (cos phi1) (cos phi1)) (cos phi1)) (* (* (cos phi2) (cos phi2)) (cos phi2)))) |
| 240.0ms | (* (* (* (cos (- lambda1 lambda2)) (cos (- lambda1 lambda2))) (cos (- lambda1 lambda2))) (* (* (* (cos phi1) (cos phi2)) (* (cos phi1) (cos phi2))) (* (cos phi1) (cos phi2)))) |
| 55.0ms | (- (+ 1 (* lambda2 lambda1)) (* 1/2 (pow lambda1 2))) |
13 alts after pruning (13 fresh and 0 done)
Merged error: 4.6b
Found 4 expressions with local error:
| 2.4b | (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
| 0.2b | (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) |
| 0.2b | (* R (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1))))) |
| 0.2b | (* (sin lambda1) (sin lambda2)) |
4 calls. Slowest were:
| 35.0ms | (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) |
| 11.0ms | (* (sin lambda1) (sin lambda2)) |
| 3.0ms | (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
4 calls. Slowest were:
| 190.0ms | (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) |
| 61.0ms | (* (sin lambda1) (sin lambda2)) |
| 37.0ms | (* R (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1))))) |
| 29.0ms | (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
42 calls. Slowest were:
| 411.0ms | (* (- (* (* (cos lambda1) (cos lambda2)) (* (cos lambda1) (cos lambda2))) (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2)))) (+ (cos (+ phi1 phi2)) (cos (- phi1 phi2)))) |
| 288.0ms | (* (+ (pow (* (cos lambda1) (cos lambda2)) 3) (pow (* (sin lambda1) (sin lambda2)) 3)) (+ (cos (+ phi1 phi2)) (cos (- phi1 phi2)))) |
| 282.0ms | (* (+ (* (+ (cos (+ lambda1 lambda2)) (cos (- lambda1 lambda2))) 2) (* 2 (- (cos (- lambda1 lambda2)) (cos (+ lambda1 lambda2))))) (+ (cos (+ phi1 phi2)) (cos (- phi1 phi2)))) |
15 alts after pruning (15 fresh and 0 done)
Merged error: 4.5b
Found 4 expressions with local error:
| 2.4b | (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
| 0.6b | (log (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1))))) |
| 0.3b | (exp (log (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))))) |
| 0.2b | (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) |
4 calls. Slowest were:
| 22.0ms | (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) |
| 2.0ms | (exp (log (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))))) |
| 2.0ms | (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
4 calls. Slowest were:
| 227.0ms | (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) |
| 74.0ms | (log (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1))))) |
| 30.0ms | (exp (log (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))))) |
| 16.0ms | (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
42 calls. Slowest were:
| 722.0ms | (* (+ (pow (* (cos lambda1) (cos lambda2)) 3) (pow (* (sin lambda1) (sin lambda2)) 3)) (+ (cos (+ phi1 phi2)) (cos (- phi1 phi2)))) |
| 372.0ms | (* (- (* (* (cos lambda1) (cos lambda2)) (* (cos lambda1) (cos lambda2))) (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2)))) (+ (cos (+ phi1 phi2)) (cos (- phi1 phi2)))) |
| 246.0ms | (* (+ (* (+ (cos (+ lambda1 lambda2)) (cos (- lambda1 lambda2))) 2) (* 2 (- (cos (- lambda1 lambda2)) (cos (+ lambda1 lambda2))))) (+ (cos (+ phi1 phi2)) (cos (- phi1 phi2)))) |
17 alts after pruning (17 fresh and 0 done)
Merged error: 4.5b
Found 4 expressions with local error:
| 2.4b | (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
| 1.4b | (log (exp (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))))) |
| 0.4b | (exp (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1))))) |
| 0.2b | (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) |
4 calls. Slowest were:
| 19.0ms | (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) |
| 5.0ms | (exp (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1))))) |
| 4.0ms | (log (exp (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))))) |
4 calls. Slowest were:
| 226.0ms | (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) |
| 53.0ms | (exp (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1))))) |
| 19.0ms | (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
| 15.0ms | (log (exp (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))))) |
43 calls. Slowest were:
| 363.0ms | (* (- (* (* (cos lambda1) (cos lambda2)) (* (cos lambda1) (cos lambda2))) (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2)))) (+ (cos (+ phi1 phi2)) (cos (- phi1 phi2)))) |
| 296.0ms | (* (+ (pow (* (cos lambda1) (cos lambda2)) 3) (pow (* (sin lambda1) (sin lambda2)) 3)) (+ (cos (+ phi1 phi2)) (cos (- phi1 phi2)))) |
| 254.0ms | (* (+ (* (+ (cos (+ lambda1 lambda2)) (cos (- lambda1 lambda2))) 2) (* 2 (- (cos (- lambda1 lambda2)) (cos (+ lambda1 lambda2))))) (+ (cos (+ phi1 phi2)) (cos (- phi1 phi2)))) |
19 alts after pruning (19 fresh and 0 done)
Merged error: 4.5b
0% (0.4b remaining)
Error of 4.0b against oracle of 3.7b and baseline of 4.0b