\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)}{\cos \phi_2 \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\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)}{\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 \frac{\cos \phi_1 \cdot \cos \phi_1 - \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 + \left(\cos \lambda_1 \cdot \cos \phi_2\right) \cdot \cos \lambda_2}}}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2327328 = lambda1;
double r2327329 = phi2;
double r2327330 = cos(r2327329);
double r2327331 = lambda2;
double r2327332 = r2327328 - r2327331;
double r2327333 = sin(r2327332);
double r2327334 = r2327330 * r2327333;
double r2327335 = phi1;
double r2327336 = cos(r2327335);
double r2327337 = cos(r2327332);
double r2327338 = r2327330 * r2327337;
double r2327339 = r2327336 + r2327338;
double r2327340 = atan2(r2327334, r2327339);
double r2327341 = r2327328 + r2327340;
return r2327341;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2327342 = lambda1;
double r2327343 = phi2;
double r2327344 = cos(r2327343);
double r2327345 = sin(r2327342);
double r2327346 = lambda2;
double r2327347 = cos(r2327346);
double r2327348 = r2327345 * r2327347;
double r2327349 = cos(r2327342);
double r2327350 = sin(r2327346);
double r2327351 = r2327349 * r2327350;
double r2327352 = r2327348 - r2327351;
double r2327353 = r2327344 * r2327352;
double r2327354 = r2327350 * r2327345;
double r2327355 = r2327344 * r2327354;
double r2327356 = phi1;
double r2327357 = cos(r2327356);
double r2327358 = r2327357 * r2327357;
double r2327359 = r2327358 * r2327357;
double r2327360 = r2327349 * r2327344;
double r2327361 = r2327360 * r2327347;
double r2327362 = r2327361 * r2327361;
double r2327363 = r2327362 * r2327361;
double r2327364 = r2327359 + r2327363;
double r2327365 = r2327358 - r2327362;
double r2327366 = r2327357 + r2327361;
double r2327367 = r2327365 / r2327366;
double r2327368 = r2327357 * r2327367;
double r2327369 = r2327362 + r2327368;
double r2327370 = r2327364 / r2327369;
double r2327371 = r2327355 + r2327370;
double r2327372 = atan2(r2327353, r2327371);
double r2327373 = r2327342 + r2327372;
return r2327373;
}



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-lft-in0.2
Applied associate-+r+0.2
rmApplied flip3-+0.3
Simplified0.3
Simplified0.3
rmApplied flip--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)))))))