Average Error: 0.8 → 0.3
Time: 28.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)}\]
\[\tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2 + \left(\cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\sqrt[3]{{\left(\sqrt[3]{{\left(\mathsf{fma}\left(\mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \sin \lambda_2 \cdot \sin \lambda_1\right), \cos \phi_2, \cos \phi_1\right)\right)}^{3}}\right)}^{3}}} + \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{\left(\sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2 + \left(\cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\sqrt[3]{{\left(\sqrt[3]{{\left(\mathsf{fma}\left(\mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \sin \lambda_2 \cdot \sin \lambda_1\right), \cos \phi_2, \cos \phi_1\right)\right)}^{3}}\right)}^{3}}} + \lambda_1
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r55955 = lambda1;
        double r55956 = phi2;
        double r55957 = cos(r55956);
        double r55958 = lambda2;
        double r55959 = r55955 - r55958;
        double r55960 = sin(r55959);
        double r55961 = r55957 * r55960;
        double r55962 = phi1;
        double r55963 = cos(r55962);
        double r55964 = cos(r55959);
        double r55965 = r55957 * r55964;
        double r55966 = r55963 + r55965;
        double r55967 = atan2(r55961, r55966);
        double r55968 = r55955 + r55967;
        return r55968;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r55969 = lambda1;
        double r55970 = sin(r55969);
        double r55971 = lambda2;
        double r55972 = cos(r55971);
        double r55973 = r55970 * r55972;
        double r55974 = phi2;
        double r55975 = cos(r55974);
        double r55976 = r55973 * r55975;
        double r55977 = cos(r55969);
        double r55978 = -r55971;
        double r55979 = sin(r55978);
        double r55980 = r55977 * r55979;
        double r55981 = r55980 * r55975;
        double r55982 = r55976 + r55981;
        double r55983 = sin(r55971);
        double r55984 = r55983 * r55970;
        double r55985 = fma(r55972, r55977, r55984);
        double r55986 = phi1;
        double r55987 = cos(r55986);
        double r55988 = fma(r55985, r55975, r55987);
        double r55989 = 3.0;
        double r55990 = pow(r55988, r55989);
        double r55991 = cbrt(r55990);
        double r55992 = pow(r55991, r55989);
        double r55993 = cbrt(r55992);
        double r55994 = atan2(r55982, r55993);
        double r55995 = r55994 + r55969;
        return r55995;
}

Error

Bits error versus lambda1

Bits error versus lambda2

Bits error versus phi1

Bits error versus phi2

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

    \[\leadsto \color{blue}{\tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\cos \phi_2, \cos \left(\lambda_1 - \lambda_2\right), \cos \phi_1\right)} + \lambda_1}\]
  3. Using strategy rm
  4. Applied cos-diff0.8

    \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\mathsf{fma}\left(\cos \phi_2, \color{blue}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2}, \cos \phi_1\right)} + \lambda_1\]
  5. Using strategy rm
  6. Applied sub-neg0.8

    \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \color{blue}{\left(\lambda_1 + \left(-\lambda_2\right)\right)}}{\mathsf{fma}\left(\cos \phi_2, \cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2, \cos \phi_1\right)} + \lambda_1\]
  7. Applied sin-sum0.2

    \[\leadsto \tan^{-1}_* \frac{\cos \phi_2 \cdot \color{blue}{\left(\sin \lambda_1 \cdot \cos \left(-\lambda_2\right) + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}}{\mathsf{fma}\left(\cos \phi_2, \cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2, \cos \phi_1\right)} + \lambda_1\]
  8. Applied distribute-lft-in0.2

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

    \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2} + \cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}{\mathsf{fma}\left(\cos \phi_2, \cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2, \cos \phi_1\right)} + \lambda_1\]
  10. Simplified0.2

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2 + \color{blue}{\left(\cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}}{\mathsf{fma}\left(\cos \phi_2, \cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2, \cos \phi_1\right)} + \lambda_1\]
  11. Using strategy rm
  12. Applied add-cbrt-cube0.3

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2 + \left(\cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\color{blue}{\sqrt[3]{\left(\mathsf{fma}\left(\cos \phi_2, \cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2, \cos \phi_1\right) \cdot \mathsf{fma}\left(\cos \phi_2, \cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2, \cos \phi_1\right)\right) \cdot \mathsf{fma}\left(\cos \phi_2, \cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2, \cos \phi_1\right)}}} + \lambda_1\]
  13. Simplified0.3

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2 + \left(\cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\sqrt[3]{\color{blue}{{\left(\mathsf{fma}\left(\cos \phi_2, \mathsf{fma}\left(\cos \lambda_1, \cos \lambda_2, \sin \lambda_2 \cdot \sin \lambda_1\right), \cos \phi_1\right)\right)}^{3}}}} + \lambda_1\]
  14. Using strategy rm
  15. Applied add-cbrt-cube0.3

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2 + \left(\cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\sqrt[3]{{\color{blue}{\left(\sqrt[3]{\left(\mathsf{fma}\left(\cos \phi_2, \mathsf{fma}\left(\cos \lambda_1, \cos \lambda_2, \sin \lambda_2 \cdot \sin \lambda_1\right), \cos \phi_1\right) \cdot \mathsf{fma}\left(\cos \phi_2, \mathsf{fma}\left(\cos \lambda_1, \cos \lambda_2, \sin \lambda_2 \cdot \sin \lambda_1\right), \cos \phi_1\right)\right) \cdot \mathsf{fma}\left(\cos \phi_2, \mathsf{fma}\left(\cos \lambda_1, \cos \lambda_2, \sin \lambda_2 \cdot \sin \lambda_1\right), \cos \phi_1\right)}\right)}}^{3}}} + \lambda_1\]
  16. Simplified0.3

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

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

Reproduce

herbie shell --seed 2019195 +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)))))))