\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(\sqrt[3]{\left(\left(\left(\left(\sin \lambda_2 \cdot \sin \phi_1\right) \cdot \cos \phi_2\right) \cdot \sin \lambda_1\right) \cdot \left(\left(\left(\sin \lambda_2 \cdot \sin \phi_1\right) \cdot \cos \phi_2\right) \cdot \sin \lambda_1\right)\right) \cdot \left(\left(\left(\sin \lambda_2 \cdot \sin \phi_1\right) \cdot \cos \phi_2\right) \cdot \sin \lambda_1\right)} + \sin \phi_1 \cdot \left(\cos \phi_2 \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right)\right)\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2326413 = lambda1;
double r2326414 = lambda2;
double r2326415 = r2326413 - r2326414;
double r2326416 = sin(r2326415);
double r2326417 = phi2;
double r2326418 = cos(r2326417);
double r2326419 = r2326416 * r2326418;
double r2326420 = phi1;
double r2326421 = cos(r2326420);
double r2326422 = sin(r2326417);
double r2326423 = r2326421 * r2326422;
double r2326424 = sin(r2326420);
double r2326425 = r2326424 * r2326418;
double r2326426 = cos(r2326415);
double r2326427 = r2326425 * r2326426;
double r2326428 = r2326423 - r2326427;
double r2326429 = atan2(r2326419, r2326428);
return r2326429;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2326430 = lambda2;
double r2326431 = cos(r2326430);
double r2326432 = lambda1;
double r2326433 = sin(r2326432);
double r2326434 = r2326431 * r2326433;
double r2326435 = cos(r2326432);
double r2326436 = sin(r2326430);
double r2326437 = r2326435 * r2326436;
double r2326438 = r2326434 - r2326437;
double r2326439 = phi2;
double r2326440 = cos(r2326439);
double r2326441 = r2326438 * r2326440;
double r2326442 = sin(r2326439);
double r2326443 = phi1;
double r2326444 = cos(r2326443);
double r2326445 = r2326442 * r2326444;
double r2326446 = sin(r2326443);
double r2326447 = r2326436 * r2326446;
double r2326448 = r2326447 * r2326440;
double r2326449 = r2326448 * r2326433;
double r2326450 = r2326449 * r2326449;
double r2326451 = r2326450 * r2326449;
double r2326452 = cbrt(r2326451);
double r2326453 = r2326431 * r2326435;
double r2326454 = r2326440 * r2326453;
double r2326455 = r2326446 * r2326454;
double r2326456 = r2326452 + r2326455;
double r2326457 = r2326445 - r2326456;
double r2326458 = atan2(r2326441, r2326457);
return r2326458;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.4
rmApplied sin-diff6.9
rmApplied cos-diff0.2
Applied distribute-rgt-in0.2
Taylor expanded around inf 0.2
rmApplied add-cbrt-cube0.2
Applied add-cbrt-cube0.2
Applied cbrt-unprod0.2
Applied add-cbrt-cube0.2
Applied add-cbrt-cube0.2
Applied cbrt-unprod0.2
Applied cbrt-unprod0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019152 +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))))))