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 r972384 = lambda1;
        double r972385 = phi2;
        double r972386 = cos(r972385);
        double r972387 = lambda2;
        double r972388 = r972384 - r972387;
        double r972389 = sin(r972388);
        double r972390 = r972386 * r972389;
        double r972391 = phi1;
        double r972392 = cos(r972391);
        double r972393 = cos(r972388);
        double r972394 = r972386 * r972393;
        double r972395 = r972392 + r972394;
        double r972396 = atan2(r972390, r972395);
        double r972397 = r972384 + r972396;
        return r972397;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r972398 = phi2;
        double r972399 = cos(r972398);
        double r972400 = lambda1;
        double r972401 = lambda2;
        double r972402 = r972400 - r972401;
        double r972403 = sin(r972402);
        double r972404 = r972399 * r972403;
        double r972405 = cos(r972402);
        double r972406 = r972399 * r972405;
        double r972407 = phi1;
        double r972408 = cos(r972407);
        double r972409 = r972406 + r972408;
        double r972410 = atan2(r972404, r972409);
        double r972411 = r972410 + r972400;
        return r972411;
}

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