\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 - \cos \lambda_1 \cdot \sin \lambda_2\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 + \sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1} \cdot \left(\sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1}\right)\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r4521273 = lambda1;
double r4521274 = lambda2;
double r4521275 = r4521273 - r4521274;
double r4521276 = sin(r4521275);
double r4521277 = phi2;
double r4521278 = cos(r4521277);
double r4521279 = r4521276 * r4521278;
double r4521280 = phi1;
double r4521281 = cos(r4521280);
double r4521282 = sin(r4521277);
double r4521283 = r4521281 * r4521282;
double r4521284 = sin(r4521280);
double r4521285 = r4521284 * r4521278;
double r4521286 = cos(r4521275);
double r4521287 = r4521285 * r4521286;
double r4521288 = r4521283 - r4521287;
double r4521289 = atan2(r4521279, r4521288);
return r4521289;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r4521290 = lambda2;
double r4521291 = cos(r4521290);
double r4521292 = lambda1;
double r4521293 = sin(r4521292);
double r4521294 = r4521291 * r4521293;
double r4521295 = cos(r4521292);
double r4521296 = sin(r4521290);
double r4521297 = r4521295 * r4521296;
double r4521298 = r4521294 - r4521297;
double r4521299 = phi2;
double r4521300 = cos(r4521299);
double r4521301 = r4521298 * r4521300;
double r4521302 = sin(r4521299);
double r4521303 = phi1;
double r4521304 = cos(r4521303);
double r4521305 = r4521302 * r4521304;
double r4521306 = sin(r4521303);
double r4521307 = r4521306 * r4521300;
double r4521308 = r4521291 * r4521295;
double r4521309 = r4521296 * r4521293;
double r4521310 = cbrt(r4521309);
double r4521311 = r4521310 * r4521310;
double r4521312 = r4521310 * r4521311;
double r4521313 = r4521308 + r4521312;
double r4521314 = r4521307 * r4521313;
double r4521315 = r4521305 - r4521314;
double r4521316 = atan2(r4521301, r4521315);
return r4521316;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 12.8
rmApplied sin-diff6.6
rmApplied cos-diff0.2
rmApplied add-cube-cbrt0.2
Final simplification0.2
herbie shell --seed 2019158
(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))))))