\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r92227 = lambda1;
double r92228 = lambda2;
double r92229 = r92227 - r92228;
double r92230 = sin(r92229);
double r92231 = phi2;
double r92232 = cos(r92231);
double r92233 = r92230 * r92232;
double r92234 = phi1;
double r92235 = cos(r92234);
double r92236 = sin(r92231);
double r92237 = r92235 * r92236;
double r92238 = sin(r92234);
double r92239 = r92238 * r92232;
double r92240 = cos(r92229);
double r92241 = r92239 * r92240;
double r92242 = r92237 - r92241;
double r92243 = atan2(r92233, r92242);
return r92243;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r92244 = lambda1;
double r92245 = sin(r92244);
double r92246 = lambda2;
double r92247 = cos(r92246);
double r92248 = r92245 * r92247;
double r92249 = cos(r92244);
double r92250 = sin(r92246);
double r92251 = r92249 * r92250;
double r92252 = r92248 - r92251;
double r92253 = phi2;
double r92254 = cos(r92253);
double r92255 = r92252 * r92254;
double r92256 = phi1;
double r92257 = cos(r92256);
double r92258 = sin(r92253);
double r92259 = r92257 * r92258;
double r92260 = sin(r92256);
double r92261 = r92260 * r92254;
double r92262 = r92249 * r92247;
double r92263 = r92261 * r92262;
double r92264 = r92245 * r92250;
double r92265 = r92261 * r92264;
double r92266 = r92263 + r92265;
double r92267 = r92259 - r92266;
double r92268 = atan2(r92255, r92267);
return r92268;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.1
rmApplied sin-diff6.8
rmApplied cos-diff0.2
Applied distribute-lft-in0.2
Final simplification0.2
herbie shell --seed 2020047
(FPCore (lambda1 lambda2 phi1 phi2)
:name "Bearing on a great circle"
:precision binary64
(atan2 (* (sin (- lambda1 lambda2)) (cos phi2)) (- (* (cos phi1) (sin phi2)) (* (* (sin phi1) (cos phi2)) (cos (- lambda1 lambda2))))))