Average Error: 0 → 0
Time: 8.0m
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 r5159491 = lambda1;
        double r5159492 = phi2;
        double r5159493 = cos(r5159492);
        double r5159494 = lambda2;
        double r5159495 = r5159491 - r5159494;
        double r5159496 = sin(r5159495);
        double r5159497 = r5159493 * r5159496;
        double r5159498 = phi1;
        double r5159499 = cos(r5159498);
        double r5159500 = cos(r5159495);
        double r5159501 = r5159493 * r5159500;
        double r5159502 = r5159499 + r5159501;
        double r5159503 = atan2(r5159497, r5159502);
        double r5159504 = r5159491 + r5159503;
        return r5159504;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r5159505 = phi2;
        double r5159506 = cos(r5159505);
        double r5159507 = lambda1;
        double r5159508 = lambda2;
        double r5159509 = r5159507 - r5159508;
        double r5159510 = sin(r5159509);
        double r5159511 = r5159506 * r5159510;
        double r5159512 = cos(r5159509);
        double r5159513 = r5159506 * r5159512;
        double r5159514 = phi1;
        double r5159515 = cos(r5159514);
        double r5159516 = r5159513 + r5159515;
        double r5159517 = atan2(r5159511, r5159516);
        double r5159518 = r5159517 + r5159507;
        return r5159518;
}

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