\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 \left(-\lambda_2\right)\right)}{\frac{\left(\left(\left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2 - \cos \phi_1\right) + {\left(\cos \phi_1\right)}^{2}\right) \cdot \left(\cos \phi_1 + \cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right)\right)}{\left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right)\right) \cdot \left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) - \cos \phi_1\right) + \cos \phi_1 \cdot \cos \phi_1}}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r47214 = lambda1;
double r47215 = phi2;
double r47216 = cos(r47215);
double r47217 = lambda2;
double r47218 = r47214 - r47217;
double r47219 = sin(r47218);
double r47220 = r47216 * r47219;
double r47221 = phi1;
double r47222 = cos(r47221);
double r47223 = cos(r47218);
double r47224 = r47216 * r47223;
double r47225 = r47222 + r47224;
double r47226 = atan2(r47220, r47225);
double r47227 = r47214 + r47226;
return r47227;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r47228 = lambda1;
double r47229 = phi2;
double r47230 = cos(r47229);
double r47231 = sin(r47228);
double r47232 = lambda2;
double r47233 = cos(r47232);
double r47234 = r47231 * r47233;
double r47235 = cos(r47228);
double r47236 = -r47232;
double r47237 = sin(r47236);
double r47238 = r47235 * r47237;
double r47239 = r47234 + r47238;
double r47240 = r47230 * r47239;
double r47241 = r47235 * r47233;
double r47242 = sin(r47232);
double r47243 = r47231 * r47242;
double r47244 = r47241 + r47243;
double r47245 = r47244 * r47230;
double r47246 = phi1;
double r47247 = cos(r47246);
double r47248 = r47245 - r47247;
double r47249 = r47245 * r47248;
double r47250 = 2.0;
double r47251 = pow(r47247, r47250);
double r47252 = r47249 + r47251;
double r47253 = r47242 * r47231;
double r47254 = r47241 + r47253;
double r47255 = r47230 * r47254;
double r47256 = r47247 + r47255;
double r47257 = r47252 * r47256;
double r47258 = r47255 - r47247;
double r47259 = r47255 * r47258;
double r47260 = r47247 * r47247;
double r47261 = r47259 + r47260;
double r47262 = r47257 / r47261;
double r47263 = atan2(r47240, r47262);
double r47264 = r47228 + r47263;
return r47264;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 0.9
rmApplied sub-neg0.9
Applied sin-sum0.8
Simplified0.8
rmApplied cos-diff0.2
Simplified0.2
rmApplied flip3-+0.3
Simplified0.3
rmApplied sum-cubes0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019199
(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)))))))