


Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 17.2
rmApplied cos-diff3.9
rmApplied add-log-exp3.9
Final simplification3.9
herbie shell --seed 2019008
(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: 42.0s)Debug log
1 calls. Slowest were:
| 24.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: 17.2b
Found 4 expressions with local error:
| 2.7b | (cos (- lambda1 lambda2)) |
| 0.5b | (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) |
| 0.2b | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R) |
| 0.2b | (* (sin phi1) (sin phi2)) |
4 calls. Slowest were:
| 4.0ms | (* (sin phi1) (sin phi2)) |
| 3.0ms | (cos (- lambda1 lambda2)) |
| 3.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R) |
4 calls. Slowest were:
| 68.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R) |
| 64.0ms | (* (sin phi1) (sin phi2)) |
| 22.0ms | (cos (- lambda1 lambda2)) |
| 11.0ms | (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) |
26 calls. Slowest were:
| 95.0ms | (* (* (* (sin phi1) (sin phi1)) (sin phi1)) (* (* (sin phi2) (sin phi2)) (sin phi2))) |
| 68.0ms | (- (+ 1 (* lambda2 lambda1)) (* 1/2 (pow lambda1 2))) |
| 30.0ms | (* (cbrt (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2)))))) (cbrt (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))))) |
15 alts after pruning (15 fresh and 0 done)
Merged error: 4.2b
Found 4 expressions with local error:
| 0.5b | (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))) |
| 0.2b | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))) R) |
| 0.2b | (* (sin phi1) (sin phi2)) |
| 0.2b | (* (sin lambda1) (sin lambda2)) |
4 calls. Slowest were:
| 6.0ms | (* (sin phi1) (sin phi2)) |
| 5.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))) R) |
| 4.0ms | (* (sin lambda1) (sin lambda2)) |
4 calls. Slowest were:
| 101.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))) R) |
| 73.0ms | (* (sin lambda1) (sin lambda2)) |
| 50.0ms | (* (sin phi1) (sin phi2)) |
| 19.0ms | (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))) |
32 calls. Slowest were:
| 186.0ms | (sqrt (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))))))) |
| 131.0ms | (* (cbrt (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))))))) (cbrt (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))))) |
| 129.0ms | (acos (+ (* (cos phi1) (* (cos phi2) (* (sin lambda1) (sin lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (* (sin phi1) (sin phi2))))) |
17 alts after pruning (17 fresh and 0 done)
Merged error: 4.1b
Found 4 expressions with local error:
| 0.5b | (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))) |
| 0.4b | (exp (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))))))) |
| 0.3b | (log (exp (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))))) |
| 0.2b | (* (log (exp (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))))) R) |
4 calls. Slowest were:
| 5.0ms | (* (log (exp (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))))) R) |
| 4.0ms | (exp (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))))))) |
| 3.0ms | (log (exp (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))))) |
4 calls. Slowest were:
| 65.0ms | (* (log (exp (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))))) R) |
| 50.0ms | (exp (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))))))) |
| 31.0ms | (log (exp (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))))) |
| 15.0ms | (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))) |
30 calls. Slowest were:
| 230.0ms | (cbrt (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))))))) |
| 218.0ms | (exp (sqrt (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2)))))))) |
| 205.0ms | (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))))) |
19 alts after pruning (19 fresh and 0 done)
Merged error: 4.0b
Found 4 expressions with local error:
| 4.5b | (log (exp (* (sin lambda1) (sin lambda2)))) |
| 0.5b | (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (log (exp (* (sin lambda1) (sin lambda2)))))))) |
| 0.2b | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (log (exp (* (sin lambda1) (sin lambda2)))))))) R) |
| 0.2b | (* (sin phi1) (sin phi2)) |
4 calls. Slowest were:
| 7.0ms | (* (sin phi1) (sin phi2)) |
| 2.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (log (exp (* (sin lambda1) (sin lambda2)))))))) R) |
| 2.0ms | (log (exp (* (sin lambda1) (sin lambda2)))) |
4 calls. Slowest were:
| 68.0ms | (* (sin phi1) (sin phi2)) |
| 59.0ms | (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (log (exp (* (sin lambda1) (sin lambda2)))))))) R) |
| 48.0ms | (log (exp (* (sin lambda1) (sin lambda2)))) |
| 16.0ms | (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (log (exp (* (sin lambda1) (sin lambda2)))))))) |
29 calls. Slowest were:
| 213.0ms | (sqrt (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (log (exp (* (sin lambda1) (sin lambda2))))))))) |
| 203.0ms | (* (cbrt (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (log (exp (* (sin lambda1) (sin lambda2))))))))) (cbrt (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (+ (* (cos lambda1) (cos lambda2)) (log (exp (* (sin lambda1) (sin lambda2)))))))))) |
| 148.0ms | (* (acos (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (sin lambda2) (sin lambda1)))) (* (sin phi1) (sin phi2))))) R) |
17 alts after pruning (17 fresh and 0 done)
Merged error: 4.0b
0% (0.4b remaining)
Error of 3.9b against oracle of 3.6b and baseline of 3.9b