\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(\left(\sqrt[3]{\cos \phi_2} \cdot \sqrt[3]{\cos \phi_2}\right) \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot \sqrt[3]{\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 + \sin \lambda_2 \cdot \sin \lambda_1\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r78311 = lambda1;
double r78312 = lambda2;
double r78313 = r78311 - r78312;
double r78314 = sin(r78313);
double r78315 = phi2;
double r78316 = cos(r78315);
double r78317 = r78314 * r78316;
double r78318 = phi1;
double r78319 = cos(r78318);
double r78320 = sin(r78315);
double r78321 = r78319 * r78320;
double r78322 = sin(r78318);
double r78323 = r78322 * r78316;
double r78324 = cos(r78313);
double r78325 = r78323 * r78324;
double r78326 = r78321 - r78325;
double r78327 = atan2(r78317, r78326);
return r78327;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r78328 = phi2;
double r78329 = cos(r78328);
double r78330 = cbrt(r78329);
double r78331 = r78330 * r78330;
double r78332 = lambda1;
double r78333 = sin(r78332);
double r78334 = lambda2;
double r78335 = cos(r78334);
double r78336 = r78333 * r78335;
double r78337 = cos(r78332);
double r78338 = sin(r78334);
double r78339 = r78337 * r78338;
double r78340 = r78336 - r78339;
double r78341 = r78331 * r78340;
double r78342 = r78341 * r78330;
double r78343 = phi1;
double r78344 = cos(r78343);
double r78345 = sin(r78328);
double r78346 = r78344 * r78345;
double r78347 = sin(r78343);
double r78348 = r78347 * r78329;
double r78349 = r78335 * r78337;
double r78350 = r78338 * r78333;
double r78351 = r78349 + r78350;
double r78352 = r78348 * r78351;
double r78353 = r78346 - r78352;
double r78354 = atan2(r78342, r78353);
return r78354;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.0
rmApplied sin-diff6.6
rmApplied cos-diff0.2
Simplified0.2
Simplified0.2
rmApplied add-cube-cbrt0.4
Applied associate-*r*0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019208
(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))))))