\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 - \left(\sqrt[3]{\cos \lambda_1} \cdot \sin \lambda_2\right) \cdot \left(\sqrt[3]{\cos \lambda_1} \cdot \sqrt[3]{\cos \lambda_1}\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\left(\cos \phi_2 \cdot \sin \phi_1\right) \cdot \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\right) + \left(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right)\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right)\right)}{\left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right) - \left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right)\right) + \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right)}}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r3783939 = lambda1;
double r3783940 = lambda2;
double r3783941 = r3783939 - r3783940;
double r3783942 = sin(r3783941);
double r3783943 = phi2;
double r3783944 = cos(r3783943);
double r3783945 = r3783942 * r3783944;
double r3783946 = phi1;
double r3783947 = cos(r3783946);
double r3783948 = sin(r3783943);
double r3783949 = r3783947 * r3783948;
double r3783950 = sin(r3783946);
double r3783951 = r3783950 * r3783944;
double r3783952 = cos(r3783941);
double r3783953 = r3783951 * r3783952;
double r3783954 = r3783949 - r3783953;
double r3783955 = atan2(r3783945, r3783954);
return r3783955;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r3783956 = lambda2;
double r3783957 = cos(r3783956);
double r3783958 = lambda1;
double r3783959 = sin(r3783958);
double r3783960 = r3783957 * r3783959;
double r3783961 = cos(r3783958);
double r3783962 = cbrt(r3783961);
double r3783963 = sin(r3783956);
double r3783964 = r3783962 * r3783963;
double r3783965 = r3783962 * r3783962;
double r3783966 = r3783964 * r3783965;
double r3783967 = r3783960 - r3783966;
double r3783968 = phi2;
double r3783969 = cos(r3783968);
double r3783970 = r3783967 * r3783969;
double r3783971 = phi1;
double r3783972 = cos(r3783971);
double r3783973 = sin(r3783968);
double r3783974 = r3783972 * r3783973;
double r3783975 = sin(r3783971);
double r3783976 = r3783969 * r3783975;
double r3783977 = r3783963 * r3783959;
double r3783978 = r3783977 * r3783977;
double r3783979 = r3783977 * r3783978;
double r3783980 = r3783957 * r3783961;
double r3783981 = r3783980 * r3783980;
double r3783982 = r3783981 * r3783980;
double r3783983 = r3783979 + r3783982;
double r3783984 = r3783976 * r3783983;
double r3783985 = r3783977 * r3783980;
double r3783986 = r3783978 - r3783985;
double r3783987 = r3783986 + r3783981;
double r3783988 = r3783984 / r3783987;
double r3783989 = r3783974 - r3783988;
double r3783990 = atan2(r3783970, r3783989);
return r3783990;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.6
rmApplied sin-diff7.0
rmApplied cos-diff0.2
rmApplied add-cube-cbrt0.2
Applied associate-*l*0.2
rmApplied flip3-+0.2
Applied associate-*r/0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019171
(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))))))