Average Error: 0.8 → 0.2
Time: 32.8s
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 - \left(\left(\sqrt[3]{\sqrt[3]{\cos \lambda_1}} \cdot \left(\sqrt[3]{\sqrt[3]{\cos \lambda_1}} \cdot \sqrt[3]{\sqrt[3]{\cos \lambda_1}}\right)\right) \cdot \sqrt[3]{\cos \lambda_1}\right) \cdot \left(\sin \lambda_2 \cdot \sqrt[3]{\cos \lambda_1}\right)\right)}{\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \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 \left(\sin \lambda_1 \cdot \cos \lambda_2 - \left(\left(\sqrt[3]{\sqrt[3]{\cos \lambda_1}} \cdot \left(\sqrt[3]{\sqrt[3]{\cos \lambda_1}} \cdot \sqrt[3]{\sqrt[3]{\cos \lambda_1}}\right)\right) \cdot \sqrt[3]{\cos \lambda_1}\right) \cdot \left(\sin \lambda_2 \cdot \sqrt[3]{\cos \lambda_1}\right)\right)}{\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right) + \cos \phi_1} + \lambda_1
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r1873721 = lambda1;
        double r1873722 = phi2;
        double r1873723 = cos(r1873722);
        double r1873724 = lambda2;
        double r1873725 = r1873721 - r1873724;
        double r1873726 = sin(r1873725);
        double r1873727 = r1873723 * r1873726;
        double r1873728 = phi1;
        double r1873729 = cos(r1873728);
        double r1873730 = cos(r1873725);
        double r1873731 = r1873723 * r1873730;
        double r1873732 = r1873729 + r1873731;
        double r1873733 = atan2(r1873727, r1873732);
        double r1873734 = r1873721 + r1873733;
        return r1873734;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r1873735 = phi2;
        double r1873736 = cos(r1873735);
        double r1873737 = lambda1;
        double r1873738 = sin(r1873737);
        double r1873739 = lambda2;
        double r1873740 = cos(r1873739);
        double r1873741 = r1873738 * r1873740;
        double r1873742 = cos(r1873737);
        double r1873743 = cbrt(r1873742);
        double r1873744 = cbrt(r1873743);
        double r1873745 = r1873744 * r1873744;
        double r1873746 = r1873744 * r1873745;
        double r1873747 = r1873746 * r1873743;
        double r1873748 = sin(r1873739);
        double r1873749 = r1873748 * r1873743;
        double r1873750 = r1873747 * r1873749;
        double r1873751 = r1873741 - r1873750;
        double r1873752 = r1873736 * r1873751;
        double r1873753 = r1873742 * r1873740;
        double r1873754 = r1873738 * r1873748;
        double r1873755 = r1873753 + r1873754;
        double r1873756 = r1873736 * r1873755;
        double r1873757 = phi1;
        double r1873758 = cos(r1873757);
        double r1873759 = r1873756 + r1873758;
        double r1873760 = atan2(r1873752, r1873759);
        double r1873761 = r1873760 + r1873737;
        return r1873761;
}

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

    \[\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-cube-cbrt0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \color{blue}{\left(\left(\sqrt[3]{\cos \lambda_1} \cdot \sqrt[3]{\cos \lambda_1}\right) \cdot \sqrt[3]{\cos \lambda_1}\right)} \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)}\]
  8. Applied associate-*l*0.2

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

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

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

Reproduce

herbie shell --seed 2019169 +o rules:numerics
(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)))))))