Average Error: 0.8 → 0.3
Time: 53.1s
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(\cos \left(-\lambda_2\right) \cdot \sin \lambda_1\right) \cdot \cos \phi_2 + \left(\cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\sqrt[3]{\mathsf{fma}\left(\cos \phi_2, \mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \sin \lambda_1 \cdot \sin \lambda_2\right), \cos \phi_1\right) \cdot \left(\mathsf{fma}\left(\cos \phi_2, \mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \sin \lambda_1 \cdot \sin \lambda_2\right), \cos \phi_1\right) \cdot \mathsf{fma}\left(\cos \phi_2, \mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \sin \lambda_1 \cdot \sin \lambda_2\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{\left(\cos \left(-\lambda_2\right) \cdot \sin \lambda_1\right) \cdot \cos \phi_2 + \left(\cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\sqrt[3]{\mathsf{fma}\left(\cos \phi_2, \mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \sin \lambda_1 \cdot \sin \lambda_2\right), \cos \phi_1\right) \cdot \left(\mathsf{fma}\left(\cos \phi_2, \mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \sin \lambda_1 \cdot \sin \lambda_2\right), \cos \phi_1\right) \cdot \mathsf{fma}\left(\cos \phi_2, \mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \sin \lambda_1 \cdot \sin \lambda_2\right), \cos \phi_1\right)\right)}} + \lambda_1
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r1822654 = lambda1;
        double r1822655 = phi2;
        double r1822656 = cos(r1822655);
        double r1822657 = lambda2;
        double r1822658 = r1822654 - r1822657;
        double r1822659 = sin(r1822658);
        double r1822660 = r1822656 * r1822659;
        double r1822661 = phi1;
        double r1822662 = cos(r1822661);
        double r1822663 = cos(r1822658);
        double r1822664 = r1822656 * r1822663;
        double r1822665 = r1822662 + r1822664;
        double r1822666 = atan2(r1822660, r1822665);
        double r1822667 = r1822654 + r1822666;
        return r1822667;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r1822668 = lambda2;
        double r1822669 = -r1822668;
        double r1822670 = cos(r1822669);
        double r1822671 = lambda1;
        double r1822672 = sin(r1822671);
        double r1822673 = r1822670 * r1822672;
        double r1822674 = phi2;
        double r1822675 = cos(r1822674);
        double r1822676 = r1822673 * r1822675;
        double r1822677 = cos(r1822671);
        double r1822678 = sin(r1822669);
        double r1822679 = r1822677 * r1822678;
        double r1822680 = r1822679 * r1822675;
        double r1822681 = r1822676 + r1822680;
        double r1822682 = cos(r1822668);
        double r1822683 = sin(r1822668);
        double r1822684 = r1822672 * r1822683;
        double r1822685 = fma(r1822682, r1822677, r1822684);
        double r1822686 = phi1;
        double r1822687 = cos(r1822686);
        double r1822688 = fma(r1822675, r1822685, r1822687);
        double r1822689 = r1822688 * r1822688;
        double r1822690 = r1822688 * r1822689;
        double r1822691 = cbrt(r1822690);
        double r1822692 = atan2(r1822681, r1822691);
        double r1822693 = r1822692 + r1822671;
        return r1822693;
}

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. Using strategy rm
  3. Applied sub-neg0.8

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

    \[\leadsto \lambda_1 + \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)}}{\cos \phi_1 + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\]
  5. Applied distribute-lft-in0.8

    \[\leadsto \lambda_1 + \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)}}{\cos \phi_1 + \cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\]
  6. Using strategy rm
  7. Applied sub-neg0.8

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\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)}{\cos \phi_1 + \cos \phi_2 \cdot \cos \color{blue}{\left(\lambda_1 + \left(-\lambda_2\right)\right)}}\]
  8. Applied cos-sum0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\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)}{\cos \phi_1 + \cos \phi_2 \cdot \color{blue}{\left(\cos \lambda_1 \cdot \cos \left(-\lambda_2\right) - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}}\]
  9. Using strategy rm
  10. Applied add-cube-cbrt0.4

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

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\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)}{\color{blue}{\mathsf{fma}\left(\sqrt[3]{\cos \phi_1} \cdot \sqrt[3]{\cos \phi_1}, \sqrt[3]{\cos \phi_1}, \cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \left(-\lambda_2\right) - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right)}}\]
  12. Using strategy rm
  13. Applied add-cbrt-cube0.4

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\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)}{\color{blue}{\sqrt[3]{\left(\mathsf{fma}\left(\sqrt[3]{\cos \phi_1} \cdot \sqrt[3]{\cos \phi_1}, \sqrt[3]{\cos \phi_1}, \cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \left(-\lambda_2\right) - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right) \cdot \mathsf{fma}\left(\sqrt[3]{\cos \phi_1} \cdot \sqrt[3]{\cos \phi_1}, \sqrt[3]{\cos \phi_1}, \cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \left(-\lambda_2\right) - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right)\right) \cdot \mathsf{fma}\left(\sqrt[3]{\cos \phi_1} \cdot \sqrt[3]{\cos \phi_1}, \sqrt[3]{\cos \phi_1}, \cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \left(-\lambda_2\right) - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right)}}}\]
  14. Simplified0.3

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\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)}{\sqrt[3]{\color{blue}{\mathsf{fma}\left(\cos \phi_2, \mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \sin \lambda_1 \cdot \sin \lambda_2\right), \cos \phi_1\right) \cdot \left(\mathsf{fma}\left(\cos \phi_2, \mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \sin \lambda_1 \cdot \sin \lambda_2\right), \cos \phi_1\right) \cdot \mathsf{fma}\left(\cos \phi_2, \mathsf{fma}\left(\cos \lambda_2, \cos \lambda_1, \sin \lambda_1 \cdot \sin \lambda_2\right), \cos \phi_1\right)\right)}}}\]
  15. Final simplification0.3

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

Reproduce

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