\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 \left(\sin \lambda_1 \cdot \cos \lambda_2 - \left(\sin \lambda_2 \cdot \left(\sqrt[3]{\sqrt[3]{\cos \lambda_1}} \cdot \left(\sqrt[3]{\sqrt[3]{\cos \lambda_1}} \cdot \sqrt[3]{\sqrt[3]{\cos \lambda_1}}\right)\right)\right) \cdot \left(\sqrt[3]{\cos \lambda_1} \cdot \sqrt[3]{\cos \lambda_1}\right)\right)}{\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right) + \cos \phi_1} + \lambda_1double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2316490 = lambda1;
double r2316491 = phi2;
double r2316492 = cos(r2316491);
double r2316493 = lambda2;
double r2316494 = r2316490 - r2316493;
double r2316495 = sin(r2316494);
double r2316496 = r2316492 * r2316495;
double r2316497 = phi1;
double r2316498 = cos(r2316497);
double r2316499 = cos(r2316494);
double r2316500 = r2316492 * r2316499;
double r2316501 = r2316498 + r2316500;
double r2316502 = atan2(r2316496, r2316501);
double r2316503 = r2316490 + r2316502;
return r2316503;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2316504 = phi2;
double r2316505 = cos(r2316504);
double r2316506 = lambda1;
double r2316507 = sin(r2316506);
double r2316508 = lambda2;
double r2316509 = cos(r2316508);
double r2316510 = r2316507 * r2316509;
double r2316511 = sin(r2316508);
double r2316512 = cos(r2316506);
double r2316513 = cbrt(r2316512);
double r2316514 = cbrt(r2316513);
double r2316515 = r2316514 * r2316514;
double r2316516 = r2316514 * r2316515;
double r2316517 = r2316511 * r2316516;
double r2316518 = r2316513 * r2316513;
double r2316519 = r2316517 * r2316518;
double r2316520 = r2316510 - r2316519;
double r2316521 = r2316505 * r2316520;
double r2316522 = r2316512 * r2316509;
double r2316523 = r2316507 * r2316511;
double r2316524 = r2316522 + r2316523;
double r2316525 = r2316505 * r2316524;
double r2316526 = phi1;
double r2316527 = cos(r2316526);
double r2316528 = r2316525 + r2316527;
double r2316529 = atan2(r2316521, r2316528);
double r2316530 = r2316529 + r2316506;
return r2316530;
}



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.2
Applied associate-*l*0.2
rmApplied add-cube-cbrt0.2
Final simplification0.2
herbie shell --seed 2019169
(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)))))))