\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{\left(\sqrt[3]{\cos \phi_2} \cdot \sqrt[3]{\cos \phi_2}\right) \cdot \left(\left(\cos \lambda_2 \cdot \sin \lambda_1 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \sqrt[3]{\cos \phi_2}\right)}{\frac{\left(\cos \phi_1 \cdot \cos \phi_1\right) \cdot \cos \phi_1 + \left(\left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2\right) \cdot \left(\left(\left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2\right) \cdot \left(\left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2\right)\right)}{\left(\left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2\right) \cdot \left(\left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2\right) + \left(\cos \phi_1 - \left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2\right) \cdot \cos \phi_1}}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2378027 = lambda1;
double r2378028 = phi2;
double r2378029 = cos(r2378028);
double r2378030 = lambda2;
double r2378031 = r2378027 - r2378030;
double r2378032 = sin(r2378031);
double r2378033 = r2378029 * r2378032;
double r2378034 = phi1;
double r2378035 = cos(r2378034);
double r2378036 = cos(r2378031);
double r2378037 = r2378029 * r2378036;
double r2378038 = r2378035 + r2378037;
double r2378039 = atan2(r2378033, r2378038);
double r2378040 = r2378027 + r2378039;
return r2378040;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2378041 = lambda1;
double r2378042 = phi2;
double r2378043 = cos(r2378042);
double r2378044 = cbrt(r2378043);
double r2378045 = r2378044 * r2378044;
double r2378046 = lambda2;
double r2378047 = cos(r2378046);
double r2378048 = sin(r2378041);
double r2378049 = r2378047 * r2378048;
double r2378050 = cos(r2378041);
double r2378051 = sin(r2378046);
double r2378052 = r2378050 * r2378051;
double r2378053 = r2378049 - r2378052;
double r2378054 = r2378053 * r2378044;
double r2378055 = r2378045 * r2378054;
double r2378056 = phi1;
double r2378057 = cos(r2378056);
double r2378058 = r2378057 * r2378057;
double r2378059 = r2378058 * r2378057;
double r2378060 = r2378048 * r2378051;
double r2378061 = r2378050 * r2378047;
double r2378062 = r2378060 + r2378061;
double r2378063 = r2378062 * r2378043;
double r2378064 = r2378063 * r2378063;
double r2378065 = r2378063 * r2378064;
double r2378066 = r2378059 + r2378065;
double r2378067 = r2378057 - r2378063;
double r2378068 = r2378067 * r2378057;
double r2378069 = r2378064 + r2378068;
double r2378070 = r2378066 / r2378069;
double r2378071 = atan2(r2378055, r2378070);
double r2378072 = r2378041 + r2378071;
return r2378072;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 0.8
rmApplied cos-diff0.8
rmApplied sin-diff0.2
rmApplied add-cube-cbrt0.4
Applied associate-*l*0.4
rmApplied flip3-+0.4
Simplified0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019162
(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)))))))