\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(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \log \left(e^{\left(\sin \lambda_1 \cdot \left(\sqrt[3]{\sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right)\right) \cdot \sqrt[3]{\sin \lambda_2}}\right)\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r144182 = lambda1;
double r144183 = lambda2;
double r144184 = r144182 - r144183;
double r144185 = sin(r144184);
double r144186 = phi2;
double r144187 = cos(r144186);
double r144188 = r144185 * r144187;
double r144189 = phi1;
double r144190 = cos(r144189);
double r144191 = sin(r144186);
double r144192 = r144190 * r144191;
double r144193 = sin(r144189);
double r144194 = r144193 * r144187;
double r144195 = cos(r144184);
double r144196 = r144194 * r144195;
double r144197 = r144192 - r144196;
double r144198 = atan2(r144188, r144197);
return r144198;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r144199 = lambda1;
double r144200 = sin(r144199);
double r144201 = lambda2;
double r144202 = cos(r144201);
double r144203 = r144200 * r144202;
double r144204 = cos(r144199);
double r144205 = -r144201;
double r144206 = sin(r144205);
double r144207 = r144204 * r144206;
double r144208 = r144203 + r144207;
double r144209 = phi2;
double r144210 = cos(r144209);
double r144211 = r144208 * r144210;
double r144212 = phi1;
double r144213 = cos(r144212);
double r144214 = sin(r144209);
double r144215 = r144213 * r144214;
double r144216 = sin(r144212);
double r144217 = r144216 * r144210;
double r144218 = r144204 * r144202;
double r144219 = r144217 * r144218;
double r144220 = sin(r144201);
double r144221 = cbrt(r144220);
double r144222 = r144221 * r144221;
double r144223 = r144200 * r144222;
double r144224 = r144223 * r144221;
double r144225 = exp(r144224);
double r144226 = log(r144225);
double r144227 = r144217 * r144226;
double r144228 = r144219 + r144227;
double r144229 = r144215 - r144228;
double r144230 = atan2(r144211, r144229);
return r144230;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.1
rmApplied sub-neg13.1
Applied sin-sum6.7
Simplified6.7
rmApplied cos-diff0.2
Applied distribute-lft-in0.2
rmApplied add-log-exp0.2
rmApplied add-cube-cbrt0.2
Applied associate-*r*0.2
Final simplification0.2
herbie shell --seed 2020034
(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))))))