Average Error: 0.8 → 0.3
Time: 39.3s
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(\left(-\cos \lambda_1\right) \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\log \left(e^{\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right) + \cos \phi_1}\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(\sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2 + \left(\left(-\cos \lambda_1\right) \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\log \left(e^{\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right) + \cos \phi_1}\right)} + \lambda_1
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r1816044 = lambda1;
        double r1816045 = phi2;
        double r1816046 = cos(r1816045);
        double r1816047 = lambda2;
        double r1816048 = r1816044 - r1816047;
        double r1816049 = sin(r1816048);
        double r1816050 = r1816046 * r1816049;
        double r1816051 = phi1;
        double r1816052 = cos(r1816051);
        double r1816053 = cos(r1816048);
        double r1816054 = r1816046 * r1816053;
        double r1816055 = r1816052 + r1816054;
        double r1816056 = atan2(r1816050, r1816055);
        double r1816057 = r1816044 + r1816056;
        return r1816057;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r1816058 = lambda1;
        double r1816059 = sin(r1816058);
        double r1816060 = lambda2;
        double r1816061 = cos(r1816060);
        double r1816062 = r1816059 * r1816061;
        double r1816063 = phi2;
        double r1816064 = cos(r1816063);
        double r1816065 = r1816062 * r1816064;
        double r1816066 = cos(r1816058);
        double r1816067 = -r1816066;
        double r1816068 = sin(r1816060);
        double r1816069 = r1816067 * r1816068;
        double r1816070 = r1816069 * r1816064;
        double r1816071 = r1816065 + r1816070;
        double r1816072 = r1816066 * r1816061;
        double r1816073 = r1816059 * r1816068;
        double r1816074 = r1816072 + r1816073;
        double r1816075 = r1816064 * r1816074;
        double r1816076 = phi1;
        double r1816077 = cos(r1816076);
        double r1816078 = r1816075 + r1816077;
        double r1816079 = exp(r1816078);
        double r1816080 = log(r1816079);
        double r1816081 = atan2(r1816071, r1816080);
        double r1816082 = r1816081 + r1816058;
        return r1816082;
}

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.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 cos-diff0.8

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

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

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

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

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

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

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

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

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

Reproduce

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