Average Error: 0.9 → 0.3
Time: 27.3s
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)}\]
\[\lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\log \left(e^{\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) + \cos \phi_1}\right)}\]
\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)}
\lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\log \left(e^{\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) + \cos \phi_1}\right)}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r2577250 = lambda1;
        double r2577251 = phi2;
        double r2577252 = cos(r2577251);
        double r2577253 = lambda2;
        double r2577254 = r2577250 - r2577253;
        double r2577255 = sin(r2577254);
        double r2577256 = r2577252 * r2577255;
        double r2577257 = phi1;
        double r2577258 = cos(r2577257);
        double r2577259 = cos(r2577254);
        double r2577260 = r2577252 * r2577259;
        double r2577261 = r2577258 + r2577260;
        double r2577262 = atan2(r2577256, r2577261);
        double r2577263 = r2577250 + r2577262;
        return r2577263;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r2577264 = lambda1;
        double r2577265 = phi2;
        double r2577266 = cos(r2577265);
        double r2577267 = sin(r2577264);
        double r2577268 = lambda2;
        double r2577269 = cos(r2577268);
        double r2577270 = r2577267 * r2577269;
        double r2577271 = cos(r2577264);
        double r2577272 = sin(r2577268);
        double r2577273 = r2577271 * r2577272;
        double r2577274 = r2577270 - r2577273;
        double r2577275 = r2577266 * r2577274;
        double r2577276 = r2577271 * r2577269;
        double r2577277 = r2577272 * r2577267;
        double r2577278 = r2577276 + r2577277;
        double r2577279 = r2577266 * r2577278;
        double r2577280 = phi1;
        double r2577281 = cos(r2577280);
        double r2577282 = r2577279 + r2577281;
        double r2577283 = exp(r2577282);
        double r2577284 = log(r2577283);
        double r2577285 = atan2(r2577275, r2577284);
        double r2577286 = r2577264 + r2577285;
        return r2577286;
}

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.9

    \[\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. Using strategy rm
  3. Applied add-log-exp0.9

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\cos \phi_1 + \color{blue}{\log \left(e^{\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\right)}}\]
  4. Applied add-log-exp0.9

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\log \left(e^{\cos \phi_1}\right)} + \log \left(e^{\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\right)}\]
  5. Applied sum-log1.0

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\log \left(e^{\cos \phi_1} \cdot e^{\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\right)}}\]
  6. Simplified0.9

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\log \color{blue}{\left(e^{\cos \phi_1 + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\right)}}\]
  7. Using strategy rm
  8. Applied cos-diff0.9

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\log \left(e^{\cos \phi_1 + \cos \phi_2 \cdot \color{blue}{\left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)}}\right)}\]
  9. Using strategy rm
  10. Applied sin-diff0.3

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}}{\log \left(e^{\cos \phi_1 + \cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)}\right)}\]
  11. Final simplification0.3

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\log \left(e^{\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) + \cos \phi_1}\right)}\]

Reproduce

herbie shell --seed 2019171 
(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)))))))