\sin^{-1} \left(\sin lat \cdot \cos distance + \left(\cos lat \cdot \sin distance\right) \cdot \cos azimuth\right)\sin^{-1} \left(\sin lat \cdot \cos distance + \left(\cos lat \cdot \sin distance\right) \cdot \cos azimuth\right)double code(double lat, double distance, double azimuth) {
return ((double) asin(((double) (((double) (((double) sin(lat)) * ((double) cos(distance)))) + ((double) (((double) (((double) cos(lat)) * ((double) sin(distance)))) * ((double) cos(azimuth))))))));
}
double code(double lat, double distance, double azimuth) {
return ((double) asin(((double) (((double) (((double) sin(lat)) * ((double) cos(distance)))) + ((double) (((double) (((double) cos(lat)) * ((double) sin(distance)))) * ((double) cos(azimuth))))))));
}



Bits error versus lat



Bits error versus distance



Bits error versus azimuth
Results
Initial program 0.5
Final simplification0.5
herbie shell --seed 2020152
(FPCore (lat distance azimuth)
:name "(asin (+ (* (sin lat) (cos distance)) (* (* (cos lat) (sin distance)) (cos azimuth))))"
:precision binary64
(asin (+ (* (sin lat) (cos distance)) (* (* (cos lat) (sin distance)) (cos azimuth)))))