


Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.9
rmApplied cos-diff3.9
Applied distribute-rgt-in3.9
rmApplied add-log-exp3.9
rmApplied acos-asin4.0
Final simplification4.0
herbie shell --seed 2019005
(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: 50.6s)Debug log
1 calls. Slowest were:
| 42.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 15.8b
Found 4 expressions with local error:
| 2.4b | (cos (- lambda1 lambda2)) |
| 0.5b | (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:
| 22.0ms | (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))) |
| 7.0ms | (cos (- lambda1 lambda2)) |
| 5.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R) |
4 calls. Slowest were:
| 97.0ms | (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))) |
| 61.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R) |
| 36.0ms | (cos (- lambda1 lambda2)) |
| 20.0ms | (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) |
30 calls. Slowest were:
| 290.0ms | (* (* (* (* (cos phi1) (cos phi1)) (cos phi1)) (* (* (cos phi2) (cos phi2)) (cos phi2))) (* (* (cos (- lambda1 lambda2)) (cos (- lambda1 lambda2))) (cos (- lambda1 lambda2)))) |
| 248.0ms | (* (* (* (* (cos phi1) (cos phi2)) (* (cos phi1) (cos phi2))) (* (cos phi1) (cos phi2))) (* (* (cos (- lambda1 lambda2)) (cos (- lambda1 lambda2))) (cos (- lambda1 lambda2)))) |
| 96.0ms | (- 1 (+ (* 1/2 (pow phi2 2)) (* 1/2 (pow phi1 2)))) |
15 alts after pruning (15 fresh and 0 done)
Merged error: 3.3b
Found 4 expressions with local error:
| 0.4b | (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))) |
| 0.3b | (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) |
| 0.2b | (* (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))) R) |
| 0.2b | (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) |
4 calls. Slowest were:
| 15.0ms | (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) |
| 14.0ms | (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) |
| 6.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:
| 152.0ms | (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) |
| 147.0ms | (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) |
| 90.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))) R) |
| 31.0ms | (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))) |
48 calls. Slowest were:
| 717.0ms | (* (* (* (* (cos lambda1) (cos lambda2)) (* (cos lambda1) (cos lambda2))) (* (cos lambda1) (cos lambda2))) (* (* (* (cos phi1) (cos phi2)) (* (cos phi1) (cos phi2))) (* (cos phi1) (cos phi2)))) |
| 670.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)))) |
| 187.0ms | (* (- (cos (- lambda1 lambda2)) (cos (+ lambda1 lambda2))) (+ (cos (+ phi1 phi2)) (cos (- phi1 phi2)))) |
13 alts after pruning (13 fresh and 0 done)
Merged error: 3.3b
Found 4 expressions with local error:
| 0.4b | (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))) |
| 0.4b | (log (exp (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))))) |
| 0.3b | (exp (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))))))) |
| 0.3b | (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) |
4 calls. Slowest were:
| 33.0ms | (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) |
| 6.0ms | (log (exp (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))))) |
| 4.0ms | (exp (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))))))) |
4 calls. Slowest were:
| 120.0ms | (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))) |
| 77.0ms | (exp (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))))))) |
| 32.0ms | (log (exp (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))))) |
| 32.0ms | (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))) |
42 calls. Slowest were:
| 768.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)))) |
| 162.0ms | (exp (acos (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (sin lambda1) (sin lambda2)))) (* (sin phi1) (sin phi2)))))) |
| 159.0ms | (acos (+ (* (cos phi1) (* (cos phi2) (* (sin lambda1) (sin lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (* (sin phi1) (sin phi2))))) |
15 alts after pruning (15 fresh and 0 done)
Merged error: 3.2b
Found 4 expressions with local error:
| 0.5b | (log (log (exp (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))))))))) |
| 0.4b | (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))) |
| 0.4b | (log (exp (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))))) |
| 0.3b | (exp (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))))))) |
4 calls. Slowest were:
| 3.0ms | (log (exp (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))))) |
| 2.0ms | (exp (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))))))) |
| 1.0ms | (log (log (exp (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))))))))) |
4 calls. Slowest were:
| 377.0ms | (log (exp (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))))) |
| 71.0ms | (log (log (exp (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))))))))) |
| 54.0ms | (exp (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2))))))) |
| 16.0ms | (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))) |
33 calls. Slowest were:
| 159.0ms | (log (acos (+ (* (cos phi1) (* (cos phi2) (* (sin lambda1) (sin lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (* (sin phi1) (sin phi2)))))) |
| 159.0ms | (log (* (cbrt (exp (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))))) (cbrt (exp (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))))))) |
| 153.0ms | (log (exp (acos (+ (* (sin phi1) (sin phi2)) (+ (* (* (cos lambda1) (cos lambda2)) (* (cos phi1) (cos phi2))) (* (* (sin lambda1) (sin lambda2)) (* (cos phi1) (cos phi2)))))))) |
17 alts after pruning (17 fresh and 0 done)
Merged error: 3.2b
0% (0.4b remaining)
Error of 4.0b against oracle of 3.5b and baseline of 4.0b