\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 \sin \left(\lambda_1 - \lambda_2\right)}{\frac{\left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right) \cdot \left(\left(\left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \cos \phi_2\right) \cdot \left(\sqrt[3]{\cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \cdot \cos \phi_2\right)\right) + \left(\cos \phi_1 \cdot \cos \phi_1\right) \cdot \cos \phi_1}{\left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right) \cdot \left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right) + \cos \phi_1 \cdot \left(\cos \phi_1 - \left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \cos \phi_2\right)}}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r480629 = lambda1;
double r480630 = phi2;
double r480631 = cos(r480630);
double r480632 = lambda2;
double r480633 = r480629 - r480632;
double r480634 = sin(r480633);
double r480635 = r480631 * r480634;
double r480636 = phi1;
double r480637 = cos(r480636);
double r480638 = cos(r480633);
double r480639 = r480631 * r480638;
double r480640 = r480637 + r480639;
double r480641 = atan2(r480635, r480640);
double r480642 = r480629 + r480641;
return r480642;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r480643 = lambda1;
double r480644 = phi2;
double r480645 = cos(r480644);
double r480646 = lambda2;
double r480647 = r480643 - r480646;
double r480648 = sin(r480647);
double r480649 = r480645 * r480648;
double r480650 = cos(r480647);
double r480651 = r480650 * r480645;
double r480652 = sin(r480643);
double r480653 = sin(r480646);
double r480654 = r480652 * r480653;
double r480655 = cos(r480646);
double r480656 = cos(r480643);
double r480657 = r480655 * r480656;
double r480658 = r480654 + r480657;
double r480659 = r480658 * r480645;
double r480660 = r480650 * r480650;
double r480661 = r480650 * r480660;
double r480662 = cbrt(r480661);
double r480663 = r480662 * r480645;
double r480664 = r480659 * r480663;
double r480665 = r480651 * r480664;
double r480666 = phi1;
double r480667 = cos(r480666);
double r480668 = r480667 * r480667;
double r480669 = r480668 * r480667;
double r480670 = r480665 + r480669;
double r480671 = r480651 * r480651;
double r480672 = r480667 - r480659;
double r480673 = r480667 * r480672;
double r480674 = r480671 + r480673;
double r480675 = r480670 / r480674;
double r480676 = atan2(r480649, r480675);
double r480677 = r480643 + r480676;
return r480677;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 0.9
rmApplied flip3-+0.9
Simplified0.9
Simplified0.9
rmApplied cos-diff0.9
rmApplied cos-diff0.9
rmApplied add-cbrt-cube0.9
Final simplification0.9
herbie shell --seed 2019156
(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)))))))