\tan^{-1} \left(\frac{\cos lat2 \cdot \sin \left(lon2 - lon1\right)}{\cos lat1 \cdot \sin lat2 - \left(\sin lat1 \cdot \cos lat2\right) \cdot \cos \left(lon2 - lon1\right)}\right)\tan^{-1} \left(\frac{\cos lat2 \cdot \sin \left(lon2 - lon1\right)}{\cos lat1 \cdot \sin lat2 - \left(\sin lat1 \cdot \cos lat2\right) \cdot \cos \left(lon2 - lon1\right)}\right)double code(double lat2, double lon2, double lon1, double lat1) {
return ((double) atan(((double) (((double) (((double) cos(lat2)) * ((double) sin(((double) (lon2 - lon1)))))) / ((double) (((double) (((double) cos(lat1)) * ((double) sin(lat2)))) - ((double) (((double) (((double) sin(lat1)) * ((double) cos(lat2)))) * ((double) cos(((double) (lon2 - lon1))))))))))));
}
double code(double lat2, double lon2, double lon1, double lat1) {
return ((double) atan(((double) (((double) (((double) cos(lat2)) * ((double) sin(((double) (lon2 - lon1)))))) / ((double) (((double) (((double) cos(lat1)) * ((double) sin(lat2)))) - ((double) (((double) (((double) sin(lat1)) * ((double) cos(lat2)))) * ((double) cos(((double) (lon2 - lon1))))))))))));
}



Bits error versus lat2



Bits error versus lon2



Bits error versus lon1



Bits error versus lat1
Results
Initial program 13.3
Final simplification13.3
herbie shell --seed 2020153
(FPCore (lat2 lon2 lon1 lat1)
:name "(atan (/ (* (cos lat2) (sin (- lon2 lon1))) (- (* (cos lat1) (sin lat2)) (* (* (sin lat1) (cos lat2)) (cos (- lon2 lon1))))))"
:precision binary64
(atan (/ (* (cos lat2) (sin (- lon2 lon1))) (- (* (cos lat1) (sin lat2)) (* (* (sin lat1) (cos lat2)) (cos (- lon2 lon1)))))))