Average Error: 0 → 0
Time: 7.6m
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 r2034886 = lambda1;
        double r2034887 = phi2;
        double r2034888 = cos(r2034887);
        double r2034889 = lambda2;
        double r2034890 = r2034886 - r2034889;
        double r2034891 = sin(r2034890);
        double r2034892 = r2034888 * r2034891;
        double r2034893 = phi1;
        double r2034894 = cos(r2034893);
        double r2034895 = cos(r2034890);
        double r2034896 = r2034888 * r2034895;
        double r2034897 = r2034894 + r2034896;
        double r2034898 = atan2(r2034892, r2034897);
        double r2034899 = r2034886 + r2034898;
        return r2034899;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r2034900 = phi2;
        double r2034901 = cos(r2034900);
        double r2034902 = lambda1;
        double r2034903 = lambda2;
        double r2034904 = r2034902 - r2034903;
        double r2034905 = sin(r2034904);
        double r2034906 = r2034901 * r2034905;
        double r2034907 = cos(r2034904);
        double r2034908 = r2034901 * r2034907;
        double r2034909 = phi1;
        double r2034910 = cos(r2034909);
        double r2034911 = r2034908 + r2034910;
        double r2034912 = atan2(r2034906, r2034911);
        double r2034913 = r2034912 + r2034902;
        return r2034913;
}

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