\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(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right) + \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\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)\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2190212 = lambda1;
double r2190213 = lambda2;
double r2190214 = r2190212 - r2190213;
double r2190215 = sin(r2190214);
double r2190216 = phi2;
double r2190217 = cos(r2190216);
double r2190218 = r2190215 * r2190217;
double r2190219 = phi1;
double r2190220 = cos(r2190219);
double r2190221 = sin(r2190216);
double r2190222 = r2190220 * r2190221;
double r2190223 = sin(r2190219);
double r2190224 = r2190223 * r2190217;
double r2190225 = cos(r2190214);
double r2190226 = r2190224 * r2190225;
double r2190227 = r2190222 - r2190226;
double r2190228 = atan2(r2190218, r2190227);
return r2190228;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2190229 = lambda2;
double r2190230 = cos(r2190229);
double r2190231 = lambda1;
double r2190232 = sin(r2190231);
double r2190233 = r2190230 * r2190232;
double r2190234 = cos(r2190231);
double r2190235 = sin(r2190229);
double r2190236 = r2190234 * r2190235;
double r2190237 = r2190233 - r2190236;
double r2190238 = phi2;
double r2190239 = cos(r2190238);
double r2190240 = r2190237 * r2190239;
double r2190241 = sin(r2190238);
double r2190242 = phi1;
double r2190243 = cos(r2190242);
double r2190244 = r2190241 * r2190243;
double r2190245 = r2190230 * r2190234;
double r2190246 = sin(r2190242);
double r2190247 = r2190246 * r2190239;
double r2190248 = r2190245 * r2190247;
double r2190249 = r2190235 * r2190232;
double r2190250 = cbrt(r2190249);
double r2190251 = r2190250 * r2190250;
double r2190252 = r2190250 * r2190251;
double r2190253 = r2190247 * r2190252;
double r2190254 = r2190248 + r2190253;
double r2190255 = r2190244 - r2190254;
double r2190256 = atan2(r2190240, r2190255);
return r2190256;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



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