\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(\cos \phi_2 \cdot \sin \phi_1\right) + \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) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r6957093 = lambda1;
double r6957094 = lambda2;
double r6957095 = r6957093 - r6957094;
double r6957096 = sin(r6957095);
double r6957097 = phi2;
double r6957098 = cos(r6957097);
double r6957099 = r6957096 * r6957098;
double r6957100 = phi1;
double r6957101 = cos(r6957100);
double r6957102 = sin(r6957097);
double r6957103 = r6957101 * r6957102;
double r6957104 = sin(r6957100);
double r6957105 = r6957104 * r6957098;
double r6957106 = cos(r6957095);
double r6957107 = r6957105 * r6957106;
double r6957108 = r6957103 - r6957107;
double r6957109 = atan2(r6957099, r6957108);
return r6957109;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r6957110 = lambda2;
double r6957111 = cos(r6957110);
double r6957112 = lambda1;
double r6957113 = sin(r6957112);
double r6957114 = r6957111 * r6957113;
double r6957115 = cos(r6957112);
double r6957116 = sin(r6957110);
double r6957117 = r6957115 * r6957116;
double r6957118 = r6957114 - r6957117;
double r6957119 = phi2;
double r6957120 = cos(r6957119);
double r6957121 = r6957118 * r6957120;
double r6957122 = sin(r6957119);
double r6957123 = phi1;
double r6957124 = cos(r6957123);
double r6957125 = r6957122 * r6957124;
double r6957126 = r6957111 * r6957115;
double r6957127 = sin(r6957123);
double r6957128 = r6957120 * r6957127;
double r6957129 = r6957126 * r6957128;
double r6957130 = r6957116 * r6957113;
double r6957131 = cbrt(r6957130);
double r6957132 = r6957131 * r6957131;
double r6957133 = r6957131 * r6957132;
double r6957134 = r6957133 * r6957128;
double r6957135 = r6957129 + r6957134;
double r6957136 = r6957125 - r6957135;
double r6957137 = atan2(r6957121, r6957136);
return r6957137;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



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