\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 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\frac{\left(\cos \phi_2 \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_1 \cdot \cos \lambda_2\right)\right) \cdot \left(\left(\cos \phi_2 \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_1 \cdot \cos \lambda_2\right)\right) \cdot \left(\cos \phi_2 \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_1 \cdot \cos \lambda_2\right)\right)\right) + \cos \phi_1 \cdot \left(\cos \phi_1 \cdot \cos \phi_1\right)}{\frac{\left(\left(\cos \phi_2 \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_1 \cdot \cos \lambda_2\right)\right) \cdot \left(\cos \phi_2 \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_1 \cdot \cos \lambda_2\right)\right) - \cos \phi_1 \cdot \cos \phi_1\right) \cdot \left(\cos \phi_2 \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_1 \cdot \cos \lambda_2\right)\right)}{\cos \phi_1 + \cos \phi_2 \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_1 \cdot \cos \lambda_2\right)} + \cos \phi_1 \cdot \cos \phi_1}} + \lambda_1double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2275737 = lambda1;
double r2275738 = phi2;
double r2275739 = cos(r2275738);
double r2275740 = lambda2;
double r2275741 = r2275737 - r2275740;
double r2275742 = sin(r2275741);
double r2275743 = r2275739 * r2275742;
double r2275744 = phi1;
double r2275745 = cos(r2275744);
double r2275746 = cos(r2275741);
double r2275747 = r2275739 * r2275746;
double r2275748 = r2275745 + r2275747;
double r2275749 = atan2(r2275743, r2275748);
double r2275750 = r2275737 + r2275749;
return r2275750;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2275751 = phi2;
double r2275752 = cos(r2275751);
double r2275753 = lambda1;
double r2275754 = sin(r2275753);
double r2275755 = lambda2;
double r2275756 = cos(r2275755);
double r2275757 = r2275754 * r2275756;
double r2275758 = cos(r2275753);
double r2275759 = sin(r2275755);
double r2275760 = r2275758 * r2275759;
double r2275761 = r2275757 - r2275760;
double r2275762 = r2275752 * r2275761;
double r2275763 = r2275759 * r2275754;
double r2275764 = r2275758 * r2275756;
double r2275765 = r2275763 + r2275764;
double r2275766 = r2275752 * r2275765;
double r2275767 = r2275766 * r2275766;
double r2275768 = r2275766 * r2275767;
double r2275769 = phi1;
double r2275770 = cos(r2275769);
double r2275771 = r2275770 * r2275770;
double r2275772 = r2275770 * r2275771;
double r2275773 = r2275768 + r2275772;
double r2275774 = r2275767 - r2275771;
double r2275775 = r2275774 * r2275766;
double r2275776 = r2275770 + r2275766;
double r2275777 = r2275775 / r2275776;
double r2275778 = r2275777 + r2275771;
double r2275779 = r2275773 / r2275778;
double r2275780 = atan2(r2275762, r2275779);
double r2275781 = r2275780 + r2275753;
return r2275781;
}



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
rmApplied flip3-+0.3
Simplified0.3
Simplified0.3
rmApplied flip--0.3
Applied associate-*l/0.3
Final simplification0.3
herbie shell --seed 2019151
(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)))))))