


Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.5
Initial simplification16.5
rmApplied cos-diff3.9
rmApplied acos-asin4.0
Final simplification4.0
herbie shell --seed 2018362
(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: 20.8s)Debug log
1 alts after pruning (1 fresh and 0 done)
Merged error: 15.4b
Found 4 expressions with local error:
| 2.2b | (cos (- lambda1 lambda2)) |
| 1.0b | (acos (+ (* (cos (- lambda1 lambda2)) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
| 0.2b | (* R (acos (+ (* (cos (- lambda1 lambda2)) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1))))) |
| 0.2b | (* (cos (- lambda1 lambda2)) (* (cos phi1) (cos phi2))) |
4 calls. Slowest were:
| 20.0ms | (* (cos (- lambda1 lambda2)) (* (cos phi1) (cos phi2))) |
| 6.0ms | (cos (- lambda1 lambda2)) |
| 3.0ms | (acos (+ (* (cos (- lambda1 lambda2)) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
4 calls. Slowest were:
| 158.0ms | (* (cos (- lambda1 lambda2)) (* (cos phi1) (cos phi2))) |
| 44.0ms | (* R (acos (+ (* (cos (- lambda1 lambda2)) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1))))) |
| 35.0ms | (cos (- lambda1 lambda2)) |
| 20.0ms | (acos (+ (* (cos (- lambda1 lambda2)) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
27 calls. Slowest were:
| 284.0ms | (* (* (* (cos (- lambda1 lambda2)) (cos (- lambda1 lambda2))) (cos (- lambda1 lambda2))) (* (* (* (cos phi1) (cos phi1)) (cos phi1)) (* (* (cos phi2) (cos phi2)) (cos phi2)))) |
| 266.0ms | (* (* (* (cos (- lambda1 lambda2)) (cos (- lambda1 lambda2))) (cos (- lambda1 lambda2))) (* (* (* (cos phi1) (cos phi2)) (* (cos phi1) (cos phi2))) (* (cos phi1) (cos phi2)))) |
| 82.0ms | (- (+ 1 (* lambda2 lambda1)) (* 1/2 (pow lambda1 2))) |
11 alts after pruning (11 fresh and 0 done)
Merged error: 4.3b
Found 4 expressions with local error:
| 1.0b | (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
| 0.3b | (* R (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1))))) |
| 0.2b | (* (sin lambda1) (sin lambda2)) |
| 0.2b | (* (sin phi2) (sin phi1)) |
4 calls. Slowest were:
| 3.0ms | (* (sin lambda1) (sin lambda2)) |
| 3.0ms | (* (sin phi2) (sin phi1)) |
| 1.0ms | (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
4 calls. Slowest were:
| 62.0ms | (* (sin phi2) (sin phi1)) |
| 54.0ms | (* (sin lambda1) (sin lambda2)) |
| 53.0ms | (* R (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1))))) |
| 17.0ms | (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
33 calls. Slowest were:
| 203.0ms | (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
| 192.0ms | (sqrt (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1))))) |
| 173.0ms | (cbrt (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (sin lambda1) (sin lambda2))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1))))) |
14 alts after pruning (14 fresh and 0 done)
Merged error: 4.2b
Found 4 expressions with local error:
| 26.6b | (cbrt (* (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin lambda1) (sin lambda2)))) |
| 1.0b | (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (cbrt (* (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin lambda1) (sin lambda2))))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
| 0.3b | (* R (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (cbrt (* (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin lambda1) (sin lambda2))))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1))))) |
| 0.2b | (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2))) |
4 calls. Slowest were:
| 30.0ms | (cbrt (* (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin lambda1) (sin lambda2)))) |
| 20.0ms | (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2))) |
| 1.0ms | (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (cbrt (* (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin lambda1) (sin lambda2))))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
4 calls. Slowest were:
| 79.0ms | (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2))) |
| 74.0ms | (cbrt (* (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin lambda1) (sin lambda2)))) |
| 72.0ms | (* R (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (cbrt (* (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin lambda1) (sin lambda2))))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1))))) |
| 33.0ms | (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (cbrt (* (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin lambda1) (sin lambda2))))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
51 calls. Slowest were:
| 707.0ms | (* (* (* (* (sin lambda1) (sin lambda1)) (sin lambda1)) (* (* (sin lambda2) (sin lambda2)) (sin lambda2))) (* (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin lambda1) (sin lambda2)))) |
| 684.0ms | (* (* (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin lambda1) (sin lambda2))) (* (* (* (sin lambda1) (sin lambda1)) (sin lambda1)) (* (* (sin lambda2) (sin lambda2)) (sin lambda2)))) |
| 549.0ms | (* (* (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin lambda1) (sin lambda2))) (* (* (* (sin lambda1) (sin lambda2)) (* (sin lambda1) (sin lambda2))) (* (sin lambda1) (sin lambda2)))) |
13 alts after pruning (13 fresh and 0 done)
Merged error: 4.2b
Found 4 expressions with local error:
| 1.0b | (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (* (cbrt (sin lambda1)) (cbrt (sin lambda1))) (* (cbrt (sin lambda1)) (sin lambda2)))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
| 0.6b | (cbrt (sin lambda1)) |
| 0.6b | (cbrt (sin lambda1)) |
| 0.6b | (cbrt (sin lambda1)) |
4 calls. Slowest were:
| 1.0ms | (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (* (cbrt (sin lambda1)) (cbrt (sin lambda1))) (* (cbrt (sin lambda1)) (sin lambda2)))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
| 0.0ms | (cbrt (sin lambda1)) |
| 0.0ms | (cbrt (sin lambda1)) |
4 calls. Slowest were:
| 193.0ms | (cbrt (sin lambda1)) |
| 189.0ms | (cbrt (sin lambda1)) |
| 147.0ms | (cbrt (sin lambda1)) |
| 20.0ms | (acos (+ (* (+ (* (cos lambda1) (cos lambda2)) (* (* (cbrt (sin lambda1)) (cbrt (sin lambda1))) (* (cbrt (sin lambda1)) (sin lambda2)))) (* (cos phi1) (cos phi2))) (* (sin phi2) (sin phi1)))) |
21 calls. Slowest were:
| 133.0ms | (acos (+ (* (cos phi1) (* (cos phi2) (* (sin lambda1) (sin lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (* (sin phi1) (sin phi2))))) |
| 127.0ms | (acos (+ (* (cos phi1) (* (cos phi2) (* (sin lambda1) (sin lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (* (sin phi1) (sin phi2))))) |
| 100.0ms | (acos (+ (* (cos phi1) (* (cos phi2) (* (cos lambda1) (cos lambda2)))) (+ (* (cos phi1) (* (cos phi2) (* (sin lambda2) (sin lambda1)))) (* (sin phi1) (sin phi2))))) |
13 alts after pruning (13 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