Average Error: 0.9 → 0.3
Time: 31.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)}\]
\[\lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\log \left(e^{\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) + \cos \phi_1}\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 \left(\sin \lambda_1 \cdot \cos \lambda_2 - \cos \lambda_1 \cdot \sin \lambda_2\right)}{\log \left(e^{\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) + \cos \phi_1}\right)}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r2289651 = lambda1;
        double r2289652 = phi2;
        double r2289653 = cos(r2289652);
        double r2289654 = lambda2;
        double r2289655 = r2289651 - r2289654;
        double r2289656 = sin(r2289655);
        double r2289657 = r2289653 * r2289656;
        double r2289658 = phi1;
        double r2289659 = cos(r2289658);
        double r2289660 = cos(r2289655);
        double r2289661 = r2289653 * r2289660;
        double r2289662 = r2289659 + r2289661;
        double r2289663 = atan2(r2289657, r2289662);
        double r2289664 = r2289651 + r2289663;
        return r2289664;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r2289665 = lambda1;
        double r2289666 = phi2;
        double r2289667 = cos(r2289666);
        double r2289668 = sin(r2289665);
        double r2289669 = lambda2;
        double r2289670 = cos(r2289669);
        double r2289671 = r2289668 * r2289670;
        double r2289672 = cos(r2289665);
        double r2289673 = sin(r2289669);
        double r2289674 = r2289672 * r2289673;
        double r2289675 = r2289671 - r2289674;
        double r2289676 = r2289667 * r2289675;
        double r2289677 = r2289672 * r2289670;
        double r2289678 = r2289673 * r2289668;
        double r2289679 = r2289677 + r2289678;
        double r2289680 = r2289667 * r2289679;
        double r2289681 = phi1;
        double r2289682 = cos(r2289681);
        double r2289683 = r2289680 + r2289682;
        double r2289684 = exp(r2289683);
        double r2289685 = log(r2289684);
        double r2289686 = atan2(r2289676, r2289685);
        double r2289687 = r2289665 + r2289686;
        return r2289687;
}

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 add-log-exp0.9

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

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\log \left(e^{\cos \phi_1}\right)} + \log \left(e^{\cos \phi_2 \cdot \cos \left(\lambda_1 - \lambda_2\right)}\right)}\]
  5. Applied sum-log1.0

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

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

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\log \left(e^{\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)}}\right)}\]
  9. Using strategy rm
  10. Applied sin-diff0.3

    \[\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)}}{\log \left(e^{\cos \phi_1 + \cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)}\right)}\]
  11. 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 \lambda_2\right)}{\log \left(e^{\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) + \cos \phi_1}\right)}\]

Reproduce

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