\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)}\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right) + \cos \phi_1} + \lambda_1double f(double lambda1, double lambda2, double phi1, double phi2) {
double r6316219 = lambda1;
double r6316220 = phi2;
double r6316221 = cos(r6316220);
double r6316222 = lambda2;
double r6316223 = r6316219 - r6316222;
double r6316224 = sin(r6316223);
double r6316225 = r6316221 * r6316224;
double r6316226 = phi1;
double r6316227 = cos(r6316226);
double r6316228 = cos(r6316223);
double r6316229 = r6316221 * r6316228;
double r6316230 = r6316227 + r6316229;
double r6316231 = atan2(r6316225, r6316230);
double r6316232 = r6316219 + r6316231;
return r6316232;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r6316233 = phi2;
double r6316234 = cos(r6316233);
double r6316235 = lambda1;
double r6316236 = lambda2;
double r6316237 = r6316235 - r6316236;
double r6316238 = sin(r6316237);
double r6316239 = r6316234 * r6316238;
double r6316240 = cos(r6316237);
double r6316241 = r6316234 * r6316240;
double r6316242 = phi1;
double r6316243 = cos(r6316242);
double r6316244 = r6316241 + r6316243;
double r6316245 = atan2(r6316239, r6316244);
double r6316246 = r6316245 + r6316235;
return r6316246;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 0
Final simplification0
herbie shell --seed 2019119
(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)))))))