Average Error: 0 → 0
Time: 6.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 r777254 = lambda1;
        double r777255 = phi2;
        double r777256 = cos(r777255);
        double r777257 = lambda2;
        double r777258 = r777254 - r777257;
        double r777259 = sin(r777258);
        double r777260 = r777256 * r777259;
        double r777261 = phi1;
        double r777262 = cos(r777261);
        double r777263 = cos(r777258);
        double r777264 = r777256 * r777263;
        double r777265 = r777262 + r777264;
        double r777266 = atan2(r777260, r777265);
        double r777267 = r777254 + r777266;
        return r777267;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r777268 = phi2;
        double r777269 = cos(r777268);
        double r777270 = lambda1;
        double r777271 = lambda2;
        double r777272 = r777270 - r777271;
        double r777273 = sin(r777272);
        double r777274 = r777269 * r777273;
        double r777275 = cos(r777272);
        double r777276 = r777269 * r777275;
        double r777277 = phi1;
        double r777278 = cos(r777277);
        double r777279 = r777276 + r777278;
        double r777280 = atan2(r777274, r777279);
        double r777281 = r777280 + r777270;
        return r777281;
}

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