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 r697214 = lambda1;
        double r697215 = phi2;
        double r697216 = cos(r697215);
        double r697217 = lambda2;
        double r697218 = r697214 - r697217;
        double r697219 = sin(r697218);
        double r697220 = r697216 * r697219;
        double r697221 = phi1;
        double r697222 = cos(r697221);
        double r697223 = cos(r697218);
        double r697224 = r697216 * r697223;
        double r697225 = r697222 + r697224;
        double r697226 = atan2(r697220, r697225);
        double r697227 = r697214 + r697226;
        return r697227;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r697228 = phi2;
        double r697229 = cos(r697228);
        double r697230 = lambda1;
        double r697231 = lambda2;
        double r697232 = r697230 - r697231;
        double r697233 = sin(r697232);
        double r697234 = r697229 * r697233;
        double r697235 = cos(r697232);
        double r697236 = r697229 * r697235;
        double r697237 = phi1;
        double r697238 = cos(r697237);
        double r697239 = r697236 + r697238;
        double r697240 = atan2(r697234, r697239);
        double r697241 = r697240 + r697230;
        return r697241;
}

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