\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 - \left(\sqrt[3]{\cos \lambda_1} \cdot \sqrt[3]{\cos \lambda_1}\right) \cdot \left(\sqrt[3]{\cos \lambda_1} \cdot \sin \lambda_2\right)\right)}{\left(\cos \phi_1 + \cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right)\right) + \cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r37366 = lambda1;
double r37367 = phi2;
double r37368 = cos(r37367);
double r37369 = lambda2;
double r37370 = r37366 - r37369;
double r37371 = sin(r37370);
double r37372 = r37368 * r37371;
double r37373 = phi1;
double r37374 = cos(r37373);
double r37375 = cos(r37370);
double r37376 = r37368 * r37375;
double r37377 = r37374 + r37376;
double r37378 = atan2(r37372, r37377);
double r37379 = r37366 + r37378;
return r37379;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r37380 = lambda1;
double r37381 = phi2;
double r37382 = cos(r37381);
double r37383 = sin(r37380);
double r37384 = lambda2;
double r37385 = cos(r37384);
double r37386 = r37383 * r37385;
double r37387 = cos(r37380);
double r37388 = cbrt(r37387);
double r37389 = r37388 * r37388;
double r37390 = sin(r37384);
double r37391 = r37388 * r37390;
double r37392 = r37389 * r37391;
double r37393 = r37386 - r37392;
double r37394 = r37382 * r37393;
double r37395 = phi1;
double r37396 = cos(r37395);
double r37397 = r37387 * r37385;
double r37398 = r37382 * r37397;
double r37399 = r37396 + r37398;
double r37400 = r37383 * r37390;
double r37401 = r37382 * r37400;
double r37402 = r37399 + r37401;
double r37403 = atan2(r37394, r37402);
double r37404 = r37380 + r37403;
return r37404;
}



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