Average Error: 0.9 → 0.4
Time: 32.0s
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 \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\log \left(\sqrt[3]{e^{\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) + \cos \phi_1} \cdot \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} \cdot 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)}\right)} + \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 \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\log \left(\sqrt[3]{e^{\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) + \cos \phi_1} \cdot \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} \cdot 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)}\right)} + \lambda_1
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r1154379 = lambda1;
        double r1154380 = phi2;
        double r1154381 = cos(r1154380);
        double r1154382 = lambda2;
        double r1154383 = r1154379 - r1154382;
        double r1154384 = sin(r1154383);
        double r1154385 = r1154381 * r1154384;
        double r1154386 = phi1;
        double r1154387 = cos(r1154386);
        double r1154388 = cos(r1154383);
        double r1154389 = r1154381 * r1154388;
        double r1154390 = r1154387 + r1154389;
        double r1154391 = atan2(r1154385, r1154390);
        double r1154392 = r1154379 + r1154391;
        return r1154392;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r1154393 = phi2;
        double r1154394 = cos(r1154393);
        double r1154395 = lambda1;
        double r1154396 = sin(r1154395);
        double r1154397 = lambda2;
        double r1154398 = cos(r1154397);
        double r1154399 = r1154396 * r1154398;
        double r1154400 = cos(r1154395);
        double r1154401 = sin(r1154397);
        double r1154402 = r1154400 * r1154401;
        double r1154403 = r1154399 - r1154402;
        double r1154404 = r1154394 * r1154403;
        double r1154405 = r1154400 * r1154398;
        double r1154406 = r1154401 * r1154396;
        double r1154407 = r1154405 + r1154406;
        double r1154408 = r1154394 * r1154407;
        double r1154409 = phi1;
        double r1154410 = cos(r1154409);
        double r1154411 = r1154408 + r1154410;
        double r1154412 = exp(r1154411);
        double r1154413 = r1154412 * r1154412;
        double r1154414 = r1154412 * r1154413;
        double r1154415 = cbrt(r1154414);
        double r1154416 = log(r1154415);
        double r1154417 = atan2(r1154404, r1154416);
        double r1154418 = r1154417 + r1154395;
        return r1154418;
}

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 cos-diff0.8

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\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)}}\]
  4. Using strategy rm
  5. Applied sin-diff0.2

    \[\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)}}{\cos \phi_1 + \cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)}\]
  6. Using strategy rm
  7. Applied add-log-exp0.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)}{\color{blue}{\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)}}\]
  8. Using strategy rm
  9. Applied add-cbrt-cube0.4

    \[\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 \color{blue}{\left(\sqrt[3]{\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)} \cdot 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) \cdot 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)}}\]
  10. Final simplification0.4

    \[\leadsto \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(\sqrt[3]{e^{\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) + \cos \phi_1} \cdot \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} \cdot 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)}\right)} + \lambda_1\]

Reproduce

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