\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 - \frac{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot {\left(\cos \lambda_1 \cdot \cos \lambda_2\right)}^{2} - {\left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}^{3}\right)}{\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) + \left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right)}}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r116209 = lambda1;
double r116210 = lambda2;
double r116211 = r116209 - r116210;
double r116212 = sin(r116211);
double r116213 = phi2;
double r116214 = cos(r116213);
double r116215 = r116212 * r116214;
double r116216 = phi1;
double r116217 = cos(r116216);
double r116218 = sin(r116213);
double r116219 = r116217 * r116218;
double r116220 = sin(r116216);
double r116221 = r116220 * r116214;
double r116222 = cos(r116211);
double r116223 = r116221 * r116222;
double r116224 = r116219 - r116223;
double r116225 = atan2(r116215, r116224);
return r116225;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r116226 = lambda1;
double r116227 = sin(r116226);
double r116228 = lambda2;
double r116229 = cos(r116228);
double r116230 = r116227 * r116229;
double r116231 = cos(r116226);
double r116232 = sin(r116228);
double r116233 = r116231 * r116232;
double r116234 = r116230 - r116233;
double r116235 = phi2;
double r116236 = cos(r116235);
double r116237 = r116234 * r116236;
double r116238 = phi1;
double r116239 = cos(r116238);
double r116240 = sin(r116235);
double r116241 = r116239 * r116240;
double r116242 = sin(r116238);
double r116243 = r116242 * r116236;
double r116244 = r116231 * r116229;
double r116245 = 2.0;
double r116246 = pow(r116244, r116245);
double r116247 = r116244 * r116246;
double r116248 = -r116228;
double r116249 = sin(r116248);
double r116250 = r116227 * r116249;
double r116251 = 3.0;
double r116252 = pow(r116250, r116251);
double r116253 = r116247 - r116252;
double r116254 = r116243 * r116253;
double r116255 = r116244 * r116244;
double r116256 = r116250 * r116250;
double r116257 = r116244 * r116250;
double r116258 = r116256 + r116257;
double r116259 = r116255 + r116258;
double r116260 = r116254 / r116259;
double r116261 = r116241 - r116260;
double r116262 = atan2(r116237, r116261);
return r116262;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.4
rmApplied sin-diff6.7
rmApplied sub-neg6.7
Applied cos-sum0.2
Simplified0.2
rmApplied flip3--0.2
Applied associate-*r/0.2
rmApplied cube-mult0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020049
(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))))))