Average Error: 0 → 0
Time: 6.4m
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\]
\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 r670596 = lambda1;
        double r670597 = phi2;
        double r670598 = cos(r670597);
        double r670599 = lambda2;
        double r670600 = r670596 - r670599;
        double r670601 = sin(r670600);
        double r670602 = r670598 * r670601;
        double r670603 = phi1;
        double r670604 = cos(r670603);
        double r670605 = cos(r670600);
        double r670606 = r670598 * r670605;
        double r670607 = r670604 + r670606;
        double r670608 = atan2(r670602, r670607);
        double r670609 = r670596 + r670608;
        return r670609;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r670610 = phi2;
        double r670611 = cos(r670610);
        double r670612 = lambda1;
        double r670613 = lambda2;
        double r670614 = r670612 - r670613;
        double r670615 = sin(r670614);
        double r670616 = r670611 * r670615;
        double r670617 = cos(r670614);
        double r670618 = r670611 * r670617;
        double r670619 = phi1;
        double r670620 = cos(r670619);
        double r670621 = r670618 + r670620;
        double r670622 = atan2(r670616, r670621);
        double r670623 = r670622 + r670612;
        return r670623;
}

Error

Bits error versus lambda1

Bits error versus lambda2

Bits error versus phi1

Bits error versus phi2

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

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 2019133 
(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)))))))