Average Error: 0 → 0
Time: 7.5m
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 r7291973 = lambda1;
        double r7291974 = phi2;
        double r7291975 = cos(r7291974);
        double r7291976 = lambda2;
        double r7291977 = r7291973 - r7291976;
        double r7291978 = sin(r7291977);
        double r7291979 = r7291975 * r7291978;
        double r7291980 = phi1;
        double r7291981 = cos(r7291980);
        double r7291982 = cos(r7291977);
        double r7291983 = r7291975 * r7291982;
        double r7291984 = r7291981 + r7291983;
        double r7291985 = atan2(r7291979, r7291984);
        double r7291986 = r7291973 + r7291985;
        return r7291986;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r7291987 = phi2;
        double r7291988 = cos(r7291987);
        double r7291989 = lambda1;
        double r7291990 = lambda2;
        double r7291991 = r7291989 - r7291990;
        double r7291992 = sin(r7291991);
        double r7291993 = r7291988 * r7291992;
        double r7291994 = cos(r7291991);
        double r7291995 = r7291988 * r7291994;
        double r7291996 = phi1;
        double r7291997 = cos(r7291996);
        double r7291998 = r7291995 + r7291997;
        double r7291999 = atan2(r7291993, r7291998);
        double r7292000 = r7291999 + r7291989;
        return r7292000;
}

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