\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 \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 + \sqrt[3]{{\left(\sin \lambda_2 \cdot \sin \lambda_1\right)}^{3}}\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r96237 = lambda1;
double r96238 = lambda2;
double r96239 = r96237 - r96238;
double r96240 = sin(r96239);
double r96241 = phi2;
double r96242 = cos(r96241);
double r96243 = r96240 * r96242;
double r96244 = phi1;
double r96245 = cos(r96244);
double r96246 = sin(r96241);
double r96247 = r96245 * r96246;
double r96248 = sin(r96244);
double r96249 = r96248 * r96242;
double r96250 = cos(r96239);
double r96251 = r96249 * r96250;
double r96252 = r96247 - r96251;
double r96253 = atan2(r96243, r96252);
return r96253;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r96254 = lambda1;
double r96255 = sin(r96254);
double r96256 = lambda2;
double r96257 = cos(r96256);
double r96258 = r96255 * r96257;
double r96259 = cos(r96254);
double r96260 = -r96256;
double r96261 = sin(r96260);
double r96262 = r96259 * r96261;
double r96263 = r96258 + r96262;
double r96264 = phi2;
double r96265 = cos(r96264);
double r96266 = r96263 * r96265;
double r96267 = phi1;
double r96268 = cos(r96267);
double r96269 = sin(r96264);
double r96270 = r96268 * r96269;
double r96271 = sin(r96267);
double r96272 = r96271 * r96265;
double r96273 = r96257 * r96259;
double r96274 = sin(r96256);
double r96275 = r96274 * r96255;
double r96276 = 3.0;
double r96277 = pow(r96275, r96276);
double r96278 = cbrt(r96277);
double r96279 = r96273 + r96278;
double r96280 = r96272 * r96279;
double r96281 = r96270 - r96280;
double r96282 = atan2(r96266, r96281);
return r96282;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.3
rmApplied sub-neg13.3
Applied sin-sum6.7
Simplified6.7
rmApplied cos-diff0.2
Simplified0.2
Simplified0.2
rmApplied add-cbrt-cube0.2
Applied add-cbrt-cube0.2
Applied cbrt-unprod0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019199 +o rules:numerics
(FPCore (lambda1 lambda2 phi1 phi2)
:name "Bearing on a great circle"
(atan2 (* (sin (- lambda1 lambda2)) (cos phi2)) (- (* (cos phi1) (sin phi2)) (* (* (sin phi1) (cos phi2)) (cos (- lambda1 lambda2))))))