\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(\left(\sqrt[3]{\sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_1}\right) \cdot \left(\sin \lambda_2 \cdot \sqrt[3]{\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 r4972960 = lambda1;
double r4972961 = lambda2;
double r4972962 = r4972960 - r4972961;
double r4972963 = sin(r4972962);
double r4972964 = phi2;
double r4972965 = cos(r4972964);
double r4972966 = r4972963 * r4972965;
double r4972967 = phi1;
double r4972968 = cos(r4972967);
double r4972969 = sin(r4972964);
double r4972970 = r4972968 * r4972969;
double r4972971 = sin(r4972967);
double r4972972 = r4972971 * r4972965;
double r4972973 = cos(r4972962);
double r4972974 = r4972972 * r4972973;
double r4972975 = r4972970 - r4972974;
double r4972976 = atan2(r4972966, r4972975);
return r4972976;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r4972977 = lambda2;
double r4972978 = cos(r4972977);
double r4972979 = lambda1;
double r4972980 = sin(r4972979);
double r4972981 = r4972978 * r4972980;
double r4972982 = cos(r4972979);
double r4972983 = sin(r4972977);
double r4972984 = r4972982 * r4972983;
double r4972985 = r4972981 - r4972984;
double r4972986 = phi2;
double r4972987 = cos(r4972986);
double r4972988 = r4972985 * r4972987;
double r4972989 = sin(r4972986);
double r4972990 = phi1;
double r4972991 = cos(r4972990);
double r4972992 = r4972989 * r4972991;
double r4972993 = r4972978 * r4972982;
double r4972994 = sin(r4972990);
double r4972995 = r4972987 * r4972994;
double r4972996 = r4972993 * r4972995;
double r4972997 = cbrt(r4972980);
double r4972998 = r4972997 * r4972997;
double r4972999 = r4972983 * r4972997;
double r4973000 = r4972998 * r4972999;
double r4973001 = r4973000 * r4972995;
double r4973002 = r4972996 + r4973001;
double r4973003 = r4972992 - r4973002;
double r4973004 = atan2(r4972988, r4973003);
return r4973004;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.7
rmApplied sin-diff7.1
rmApplied cos-diff0.2
Applied distribute-rgt-in0.2
rmApplied add-cube-cbrt0.2
Applied associate-*l*0.2
Final simplification0.2
herbie shell --seed 2019165
(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))))))