Average Error: 0.9 → 0.9
Time: 26.7s
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)}{\frac{\left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right) \cdot \left(\left(\left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \cos \phi_2\right) \cdot \left(\sqrt[3]{\cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \cdot \cos \phi_2\right)\right) + \left(\cos \phi_1 \cdot \cos \phi_1\right) \cdot \cos \phi_1}{\left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right) \cdot \left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right) + \cos \phi_1 \cdot \left(\cos \phi_1 - \left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \cos \phi_2\right)}}\]
\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)}{\frac{\left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right) \cdot \left(\left(\left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \cos \phi_2\right) \cdot \left(\sqrt[3]{\cos \left(\lambda_1 - \lambda_2\right) \cdot \left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right)} \cdot \cos \phi_2\right)\right) + \left(\cos \phi_1 \cdot \cos \phi_1\right) \cdot \cos \phi_1}{\left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right) \cdot \left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right) + \cos \phi_1 \cdot \left(\cos \phi_1 - \left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \cos \phi_2\right)}}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r480629 = lambda1;
        double r480630 = phi2;
        double r480631 = cos(r480630);
        double r480632 = lambda2;
        double r480633 = r480629 - r480632;
        double r480634 = sin(r480633);
        double r480635 = r480631 * r480634;
        double r480636 = phi1;
        double r480637 = cos(r480636);
        double r480638 = cos(r480633);
        double r480639 = r480631 * r480638;
        double r480640 = r480637 + r480639;
        double r480641 = atan2(r480635, r480640);
        double r480642 = r480629 + r480641;
        return r480642;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r480643 = lambda1;
        double r480644 = phi2;
        double r480645 = cos(r480644);
        double r480646 = lambda2;
        double r480647 = r480643 - r480646;
        double r480648 = sin(r480647);
        double r480649 = r480645 * r480648;
        double r480650 = cos(r480647);
        double r480651 = r480650 * r480645;
        double r480652 = sin(r480643);
        double r480653 = sin(r480646);
        double r480654 = r480652 * r480653;
        double r480655 = cos(r480646);
        double r480656 = cos(r480643);
        double r480657 = r480655 * r480656;
        double r480658 = r480654 + r480657;
        double r480659 = r480658 * r480645;
        double r480660 = r480650 * r480650;
        double r480661 = r480650 * r480660;
        double r480662 = cbrt(r480661);
        double r480663 = r480662 * r480645;
        double r480664 = r480659 * r480663;
        double r480665 = r480651 * r480664;
        double r480666 = phi1;
        double r480667 = cos(r480666);
        double r480668 = r480667 * r480667;
        double r480669 = r480668 * r480667;
        double r480670 = r480665 + r480669;
        double r480671 = r480651 * r480651;
        double r480672 = r480667 - r480659;
        double r480673 = r480667 * r480672;
        double r480674 = r480671 + r480673;
        double r480675 = r480670 / r480674;
        double r480676 = atan2(r480649, r480675);
        double r480677 = r480643 + r480676;
        return r480677;
}

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 flip3-+0.9

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

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

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\frac{\left(\cos \phi_1 \cdot \cos \phi_1\right) \cdot \cos \phi_1 + \left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right) \cdot \left(\left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right) \cdot \left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right)\right)}{\color{blue}{\left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right) \cdot \left(\cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right) + \cos \phi_1 \cdot \left(\cos \phi_1 - \cos \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2\right)}}}\]
  6. Using strategy rm
  7. Applied cos-diff0.9

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

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

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

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

Reproduce

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