\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(\left(\sqrt[3]{\cos \lambda_2} \cdot \sqrt[3]{\cos \lambda_2}\right) \cdot \sin \lambda_1\right) \cdot \sqrt[3]{\cos \lambda_2} - \sin \lambda_2 \cdot \cos \lambda_1\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right) + \left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right)\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r4360022 = lambda1;
double r4360023 = lambda2;
double r4360024 = r4360022 - r4360023;
double r4360025 = sin(r4360024);
double r4360026 = phi2;
double r4360027 = cos(r4360026);
double r4360028 = r4360025 * r4360027;
double r4360029 = phi1;
double r4360030 = cos(r4360029);
double r4360031 = sin(r4360026);
double r4360032 = r4360030 * r4360031;
double r4360033 = sin(r4360029);
double r4360034 = r4360033 * r4360027;
double r4360035 = cos(r4360024);
double r4360036 = r4360034 * r4360035;
double r4360037 = r4360032 - r4360036;
double r4360038 = atan2(r4360028, r4360037);
return r4360038;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r4360039 = lambda2;
double r4360040 = cos(r4360039);
double r4360041 = cbrt(r4360040);
double r4360042 = r4360041 * r4360041;
double r4360043 = lambda1;
double r4360044 = sin(r4360043);
double r4360045 = r4360042 * r4360044;
double r4360046 = r4360045 * r4360041;
double r4360047 = sin(r4360039);
double r4360048 = cos(r4360043);
double r4360049 = r4360047 * r4360048;
double r4360050 = r4360046 - r4360049;
double r4360051 = phi2;
double r4360052 = cos(r4360051);
double r4360053 = r4360050 * r4360052;
double r4360054 = phi1;
double r4360055 = cos(r4360054);
double r4360056 = sin(r4360051);
double r4360057 = r4360055 * r4360056;
double r4360058 = r4360044 * r4360047;
double r4360059 = sin(r4360054);
double r4360060 = r4360052 * r4360059;
double r4360061 = r4360058 * r4360060;
double r4360062 = r4360048 * r4360040;
double r4360063 = r4360060 * r4360062;
double r4360064 = r4360061 + r4360063;
double r4360065 = r4360057 - r4360064;
double r4360066 = atan2(r4360053, r4360065);
return r4360066;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.2
rmApplied sin-diff6.8
rmApplied cos-diff0.2
Applied distribute-rgt-in0.2
rmApplied add-cube-cbrt0.2
Applied associate-*r*0.2
Final simplification0.2
herbie shell --seed 2019172
(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))))))