Average Error: 0.9 → 0.9
Time: 9.9s
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 \sin \left(\lambda_1 - \lambda_2\right)}{\sqrt[3]{{\left(\cos \phi_1 + \cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right)}^{3}}}\]
\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 \sin \left(\lambda_1 - \lambda_2\right)}{\sqrt[3]{{\left(\cos \phi_1 + \cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right)}^{3}}}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r48461 = lambda1;
        double r48462 = phi2;
        double r48463 = cos(r48462);
        double r48464 = lambda2;
        double r48465 = r48461 - r48464;
        double r48466 = sin(r48465);
        double r48467 = r48463 * r48466;
        double r48468 = phi1;
        double r48469 = cos(r48468);
        double r48470 = cos(r48465);
        double r48471 = r48463 * r48470;
        double r48472 = r48469 + r48471;
        double r48473 = atan2(r48467, r48472);
        double r48474 = r48461 + r48473;
        return r48474;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r48475 = lambda1;
        double r48476 = phi2;
        double r48477 = cos(r48476);
        double r48478 = lambda2;
        double r48479 = r48475 - r48478;
        double r48480 = sin(r48479);
        double r48481 = r48477 * r48480;
        double r48482 = phi1;
        double r48483 = cos(r48482);
        double r48484 = cos(r48479);
        double r48485 = r48484 * r48477;
        double r48486 = r48483 + r48485;
        double r48487 = 3.0;
        double r48488 = pow(r48486, r48487);
        double r48489 = cbrt(r48488);
        double r48490 = atan2(r48481, r48489);
        double r48491 = r48475 + r48490;
        return r48491;
}

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 + \cos \phi_2 \cdot \color{blue}{\log \left(e^{\cos \left(\lambda_1 - \lambda_2\right)}\right)}}\]
  4. Using strategy rm
  5. 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 \log \left(e^{\cos \left(\lambda_1 - \lambda_2\right)}\right)}\right)}}\]
  6. 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 \log \left(e^{\cos \left(\lambda_1 - \lambda_2\right)}\right)}\right)}\]
  7. 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 \log \left(e^{\cos \left(\lambda_1 - \lambda_2\right)}\right)}\right)}}\]
  8. 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 \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}\right)}}\]
  9. Using strategy rm
  10. Applied add-cbrt-cube1.0

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

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

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

Reproduce

herbie shell --seed 2020035 
(FPCore (lambda1 lambda2 phi1 phi2)
  :name "Midpoint on a great circle"
  :precision binary64
  (+ lambda1 (atan2 (* (cos phi2) (sin (- lambda1 lambda2))) (+ (cos phi1) (* (cos phi2) (cos (- lambda1 lambda2)))))))