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 r4389325 = lambda1;
        double r4389326 = phi2;
        double r4389327 = cos(r4389326);
        double r4389328 = lambda2;
        double r4389329 = r4389325 - r4389328;
        double r4389330 = sin(r4389329);
        double r4389331 = r4389327 * r4389330;
        double r4389332 = phi1;
        double r4389333 = cos(r4389332);
        double r4389334 = cos(r4389329);
        double r4389335 = r4389327 * r4389334;
        double r4389336 = r4389333 + r4389335;
        double r4389337 = atan2(r4389331, r4389336);
        double r4389338 = r4389325 + r4389337;
        return r4389338;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r4389339 = phi2;
        double r4389340 = cos(r4389339);
        double r4389341 = lambda1;
        double r4389342 = lambda2;
        double r4389343 = r4389341 - r4389342;
        double r4389344 = sin(r4389343);
        double r4389345 = r4389340 * r4389344;
        double r4389346 = cos(r4389343);
        double r4389347 = r4389340 * r4389346;
        double r4389348 = phi1;
        double r4389349 = cos(r4389348);
        double r4389350 = r4389347 + r4389349;
        double r4389351 = atan2(r4389345, r4389350);
        double r4389352 = r4389351 + r4389341;
        return r4389352;
}

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