\lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\frac{\left(\cos \phi_1 \cdot \cos \phi_1\right) \cdot \cos \phi_1 + \left(\left(\left(\cos \lambda_1 \cdot \cos \phi_2\right) \cdot \cos \lambda_2\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \phi_2\right) \cdot \cos \lambda_2\right)\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \phi_2\right) \cdot \cos \lambda_2\right)}{\cos \phi_1 \cdot \cos \phi_1 + \frac{\left(\left(\left(\cos \lambda_1 \cdot \cos \phi_2\right) \cdot \cos \lambda_2\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \phi_2\right) \cdot \cos \lambda_2\right) - \cos \phi_1 \cdot \cos \phi_1\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \phi_2\right) \cdot \cos \lambda_2\right)}{\cos \phi_1 + \left(\cos \lambda_1 \cdot \cos \phi_2\right) \cdot \cos \lambda_2}} + \left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2171856 = lambda1;
double r2171857 = phi2;
double r2171858 = cos(r2171857);
double r2171859 = lambda2;
double r2171860 = r2171856 - r2171859;
double r2171861 = sin(r2171860);
double r2171862 = r2171858 * r2171861;
double r2171863 = phi1;
double r2171864 = cos(r2171863);
double r2171865 = cos(r2171860);
double r2171866 = r2171858 * r2171865;
double r2171867 = r2171864 + r2171866;
double r2171868 = atan2(r2171862, r2171867);
double r2171869 = r2171856 + r2171868;
return r2171869;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2171870 = lambda1;
double r2171871 = phi2;
double r2171872 = cos(r2171871);
double r2171873 = sin(r2171870);
double r2171874 = lambda2;
double r2171875 = cos(r2171874);
double r2171876 = r2171873 * r2171875;
double r2171877 = cos(r2171870);
double r2171878 = sin(r2171874);
double r2171879 = r2171877 * r2171878;
double r2171880 = r2171876 - r2171879;
double r2171881 = r2171872 * r2171880;
double r2171882 = phi1;
double r2171883 = cos(r2171882);
double r2171884 = r2171883 * r2171883;
double r2171885 = r2171884 * r2171883;
double r2171886 = r2171877 * r2171872;
double r2171887 = r2171886 * r2171875;
double r2171888 = r2171887 * r2171887;
double r2171889 = r2171888 * r2171887;
double r2171890 = r2171885 + r2171889;
double r2171891 = r2171888 - r2171884;
double r2171892 = r2171891 * r2171887;
double r2171893 = r2171883 + r2171887;
double r2171894 = r2171892 / r2171893;
double r2171895 = r2171884 + r2171894;
double r2171896 = r2171890 / r2171895;
double r2171897 = r2171878 * r2171873;
double r2171898 = r2171897 * r2171872;
double r2171899 = r2171896 + r2171898;
double r2171900 = atan2(r2171881, r2171899);
double r2171901 = r2171870 + r2171900;
return r2171901;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 0.9
rmApplied sin-diff0.8
rmApplied cos-diff0.2
Applied distribute-rgt-in0.2
Applied associate-+r+0.2
rmApplied flip3-+0.3
Simplified0.3
Simplified0.3
rmApplied flip--0.3
Applied associate-*r/0.3
Final simplification0.3
herbie shell --seed 2019172
(FPCore (lambda1 lambda2 phi1 phi2)
:name "Midpoint on a great circle"
(+ lambda1 (atan2 (* (cos phi2) (sin (- lambda1 lambda2))) (+ (cos phi1) (* (cos phi2) (cos (- lambda1 lambda2)))))))