Average Error: 0.9 → 0.3
Time: 27.4s
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 \left(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}{\frac{{\left(\cos \phi_1\right)}^{3} + {\left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right)\right)}^{3}}{\cos \phi_1 \cdot \cos \phi_1 + \left(\cos \lambda_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)\right) \cdot \frac{{\left(\cos \lambda_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)\right)}^{2} - {\left(\cos \phi_1\right)}^{2}}{\cos \phi_1 + \cos \lambda_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)}} + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}\]
\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 \left(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}{\frac{{\left(\cos \phi_1\right)}^{3} + {\left(\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right)\right)}^{3}}{\cos \phi_1 \cdot \cos \phi_1 + \left(\cos \lambda_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)\right) \cdot \frac{{\left(\cos \lambda_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)\right)}^{2} - {\left(\cos \phi_1\right)}^{2}}{\cos \phi_1 + \cos \lambda_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)}} + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r36621 = lambda1;
        double r36622 = phi2;
        double r36623 = cos(r36622);
        double r36624 = lambda2;
        double r36625 = r36621 - r36624;
        double r36626 = sin(r36625);
        double r36627 = r36623 * r36626;
        double r36628 = phi1;
        double r36629 = cos(r36628);
        double r36630 = cos(r36625);
        double r36631 = r36623 * r36630;
        double r36632 = r36629 + r36631;
        double r36633 = atan2(r36627, r36632);
        double r36634 = r36621 + r36633;
        return r36634;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r36635 = lambda1;
        double r36636 = phi2;
        double r36637 = cos(r36636);
        double r36638 = sin(r36635);
        double r36639 = lambda2;
        double r36640 = cos(r36639);
        double r36641 = r36638 * r36640;
        double r36642 = cos(r36635);
        double r36643 = -r36639;
        double r36644 = sin(r36643);
        double r36645 = r36642 * r36644;
        double r36646 = r36641 + r36645;
        double r36647 = r36637 * r36646;
        double r36648 = phi1;
        double r36649 = cos(r36648);
        double r36650 = 3.0;
        double r36651 = pow(r36649, r36650);
        double r36652 = r36642 * r36640;
        double r36653 = r36637 * r36652;
        double r36654 = pow(r36653, r36650);
        double r36655 = r36651 + r36654;
        double r36656 = r36649 * r36649;
        double r36657 = r36637 * r36640;
        double r36658 = r36642 * r36657;
        double r36659 = 2.0;
        double r36660 = pow(r36658, r36659);
        double r36661 = pow(r36649, r36659);
        double r36662 = r36660 - r36661;
        double r36663 = r36649 + r36658;
        double r36664 = r36662 / r36663;
        double r36665 = r36658 * r36664;
        double r36666 = r36656 + r36665;
        double r36667 = r36655 / r36666;
        double r36668 = sin(r36639);
        double r36669 = r36638 * r36668;
        double r36670 = r36669 * r36637;
        double r36671 = r36667 + r36670;
        double r36672 = atan2(r36647, r36671);
        double r36673 = r36635 + r36672;
        return r36673;
}

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 sub-neg0.9

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

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\color{blue}{\sin \lambda_1 \cdot \cos \lambda_2} + \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 cos-diff0.2

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

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

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

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

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

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

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

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

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

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

Reproduce

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