Average Error: 0 → 0
Time: 7.8m
Precision: 64
\[\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 \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right) + \cos \phi_1} + \lambda_1\]
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r1156577 = lambda1;
        double r1156578 = phi2;
        double r1156579 = cos(r1156578);
        double r1156580 = lambda2;
        double r1156581 = r1156577 - r1156580;
        double r1156582 = sin(r1156581);
        double r1156583 = r1156579 * r1156582;
        double r1156584 = phi1;
        double r1156585 = cos(r1156584);
        double r1156586 = cos(r1156581);
        double r1156587 = r1156579 * r1156586;
        double r1156588 = r1156585 + r1156587;
        double r1156589 = atan2(r1156583, r1156588);
        double r1156590 = r1156577 + r1156589;
        return r1156590;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r1156591 = phi2;
        double r1156592 = cos(r1156591);
        double r1156593 = lambda1;
        double r1156594 = lambda2;
        double r1156595 = r1156593 - r1156594;
        double r1156596 = sin(r1156595);
        double r1156597 = r1156592 * r1156596;
        double r1156598 = cos(r1156595);
        double r1156599 = r1156592 * r1156598;
        double r1156600 = phi1;
        double r1156601 = cos(r1156600);
        double r1156602 = r1156599 + r1156601;
        double r1156603 = atan2(r1156597, r1156602);
        double r1156604 = r1156603 + r1156593;
        return r1156604;
}

\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 \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right) + \cos \phi_1} + \lambda_1

Error

Bits error versus lambda1

Bits error versus lambda2

Bits error versus phi1

Bits error versus phi2

Derivation

  1. Initial program 0

    \[\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)}\]
  2. Final simplification0

    \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right) + \cos \phi_1} + \lambda_1\]

Reproduce

herbie shell --seed 2019102 
(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)))))))