\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(\cos \lambda_2 \cdot \sin \lambda_1 - \sin \lambda_2 \cdot \cos \lambda_1\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 - \left(-\sqrt[3]{{\left(\sin \lambda_2 \cdot \sin \lambda_1\right)}^{3}}\right)\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r110250 = lambda1;
double r110251 = lambda2;
double r110252 = r110250 - r110251;
double r110253 = sin(r110252);
double r110254 = phi2;
double r110255 = cos(r110254);
double r110256 = r110253 * r110255;
double r110257 = phi1;
double r110258 = cos(r110257);
double r110259 = sin(r110254);
double r110260 = r110258 * r110259;
double r110261 = sin(r110257);
double r110262 = r110261 * r110255;
double r110263 = cos(r110252);
double r110264 = r110262 * r110263;
double r110265 = r110260 - r110264;
double r110266 = atan2(r110256, r110265);
return r110266;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r110267 = lambda2;
double r110268 = cos(r110267);
double r110269 = lambda1;
double r110270 = sin(r110269);
double r110271 = r110268 * r110270;
double r110272 = sin(r110267);
double r110273 = cos(r110269);
double r110274 = r110272 * r110273;
double r110275 = r110271 - r110274;
double r110276 = phi2;
double r110277 = cos(r110276);
double r110278 = r110275 * r110277;
double r110279 = sin(r110276);
double r110280 = phi1;
double r110281 = cos(r110280);
double r110282 = r110279 * r110281;
double r110283 = sin(r110280);
double r110284 = r110283 * r110277;
double r110285 = r110268 * r110273;
double r110286 = r110272 * r110270;
double r110287 = 3.0;
double r110288 = pow(r110286, r110287);
double r110289 = cbrt(r110288);
double r110290 = -r110289;
double r110291 = r110285 - r110290;
double r110292 = r110284 * r110291;
double r110293 = r110282 - r110292;
double r110294 = atan2(r110278, r110293);
return r110294;
}



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
Simplified6.7
rmApplied sub-neg6.7
Applied cos-sum0.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 2019179
(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))))))