Average Error: 0 → 0
Time: 7.3m
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 r1509766 = lambda1;
        double r1509767 = phi2;
        double r1509768 = cos(r1509767);
        double r1509769 = lambda2;
        double r1509770 = r1509766 - r1509769;
        double r1509771 = sin(r1509770);
        double r1509772 = r1509768 * r1509771;
        double r1509773 = phi1;
        double r1509774 = cos(r1509773);
        double r1509775 = cos(r1509770);
        double r1509776 = r1509768 * r1509775;
        double r1509777 = r1509774 + r1509776;
        double r1509778 = atan2(r1509772, r1509777);
        double r1509779 = r1509766 + r1509778;
        return r1509779;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r1509780 = phi2;
        double r1509781 = cos(r1509780);
        double r1509782 = lambda1;
        double r1509783 = lambda2;
        double r1509784 = r1509782 - r1509783;
        double r1509785 = sin(r1509784);
        double r1509786 = r1509781 * r1509785;
        double r1509787 = cos(r1509784);
        double r1509788 = r1509781 * r1509787;
        double r1509789 = phi1;
        double r1509790 = cos(r1509789);
        double r1509791 = r1509788 + r1509790;
        double r1509792 = atan2(r1509786, r1509791);
        double r1509793 = r1509792 + r1509782;
        return r1509793;
}

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