\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{\sqrt[3]{\left(\left(\left(\left(\cos \phi_2 \cdot \cos \lambda_2\right) \cdot \cos \lambda_1\right) \cdot \left(\left(\cos \phi_2 \cdot \cos \lambda_2\right) \cdot \cos \lambda_1\right)\right) \cdot \left(\left(\left(\cos \phi_2 \cdot \cos \lambda_2\right) \cdot \cos \lambda_1\right) \cdot \left(\left(\cos \phi_2 \cdot \cos \lambda_2\right) \cdot \cos \lambda_1\right)\right)\right) \cdot \left(\left(\left(\cos \phi_2 \cdot \cos \lambda_2\right) \cdot \cos \lambda_1\right) \cdot \left(\left(\cos \phi_2 \cdot \cos \lambda_2\right) \cdot \cos \lambda_1\right)\right)} \cdot \left(\left(\cos \phi_2 \cdot \cos \lambda_2\right) \cdot \cos \lambda_1\right) + \cos \phi_1 \cdot \left(\cos \phi_1 \cdot \cos \phi_1\right)}{\left(\cos \phi_1 - \left(\cos \phi_2 \cdot \cos \lambda_2\right) \cdot \cos \lambda_1\right) \cdot \cos \phi_1 + \left(\left(\cos \phi_2 \cdot \cos \lambda_2\right) \cdot \cos \lambda_1\right) \cdot \left(\left(\cos \phi_2 \cdot \cos \lambda_2\right) \cdot \cos \lambda_1\right)} + \cos \phi_2 \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)} + \lambda_1double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2078682 = lambda1;
double r2078683 = phi2;
double r2078684 = cos(r2078683);
double r2078685 = lambda2;
double r2078686 = r2078682 - r2078685;
double r2078687 = sin(r2078686);
double r2078688 = r2078684 * r2078687;
double r2078689 = phi1;
double r2078690 = cos(r2078689);
double r2078691 = cos(r2078686);
double r2078692 = r2078684 * r2078691;
double r2078693 = r2078690 + r2078692;
double r2078694 = atan2(r2078688, r2078693);
double r2078695 = r2078682 + r2078694;
return r2078695;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r2078696 = phi2;
double r2078697 = cos(r2078696);
double r2078698 = lambda1;
double r2078699 = sin(r2078698);
double r2078700 = lambda2;
double r2078701 = cos(r2078700);
double r2078702 = r2078699 * r2078701;
double r2078703 = cos(r2078698);
double r2078704 = sin(r2078700);
double r2078705 = r2078703 * r2078704;
double r2078706 = r2078702 - r2078705;
double r2078707 = r2078697 * r2078706;
double r2078708 = r2078697 * r2078701;
double r2078709 = r2078708 * r2078703;
double r2078710 = r2078709 * r2078709;
double r2078711 = r2078710 * r2078710;
double r2078712 = r2078711 * r2078710;
double r2078713 = cbrt(r2078712);
double r2078714 = r2078713 * r2078709;
double r2078715 = phi1;
double r2078716 = cos(r2078715);
double r2078717 = r2078716 * r2078716;
double r2078718 = r2078716 * r2078717;
double r2078719 = r2078714 + r2078718;
double r2078720 = r2078716 - r2078709;
double r2078721 = r2078720 * r2078716;
double r2078722 = r2078721 + r2078710;
double r2078723 = r2078719 / r2078722;
double r2078724 = r2078704 * r2078699;
double r2078725 = r2078697 * r2078724;
double r2078726 = r2078723 + r2078725;
double r2078727 = atan2(r2078707, r2078726);
double r2078728 = r2078727 + r2078698;
return r2078728;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 0.8
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 add-cbrt-cube0.3
Final simplification0.3
herbie shell --seed 2019164
(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)))))))