Average Error: 0.9 → 0.3
Time: 29.6s
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(\left(-\cos \lambda_1 \cdot \sin \lambda_2\right) + \sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2}{\log \left(e^{\cos \phi_1 + \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}\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(\left(-\cos \lambda_1 \cdot \sin \lambda_2\right) + \sin \lambda_1 \cdot \cos \lambda_2\right) \cdot \cos \phi_2}{\log \left(e^{\cos \phi_1 + \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \cos \phi_2}\right)} + \lambda_1
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r50154 = lambda1;
        double r50155 = phi2;
        double r50156 = cos(r50155);
        double r50157 = lambda2;
        double r50158 = r50154 - r50157;
        double r50159 = sin(r50158);
        double r50160 = r50156 * r50159;
        double r50161 = phi1;
        double r50162 = cos(r50161);
        double r50163 = cos(r50158);
        double r50164 = r50156 * r50163;
        double r50165 = r50162 + r50164;
        double r50166 = atan2(r50160, r50165);
        double r50167 = r50154 + r50166;
        return r50167;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r50168 = lambda1;
        double r50169 = cos(r50168);
        double r50170 = lambda2;
        double r50171 = sin(r50170);
        double r50172 = r50169 * r50171;
        double r50173 = -r50172;
        double r50174 = sin(r50168);
        double r50175 = cos(r50170);
        double r50176 = r50174 * r50175;
        double r50177 = r50173 + r50176;
        double r50178 = phi2;
        double r50179 = cos(r50178);
        double r50180 = r50177 * r50179;
        double r50181 = phi1;
        double r50182 = cos(r50181);
        double r50183 = r50169 * r50175;
        double r50184 = r50171 * r50174;
        double r50185 = r50183 + r50184;
        double r50186 = r50185 * r50179;
        double r50187 = r50182 + r50186;
        double r50188 = exp(r50187);
        double r50189 = log(r50188);
        double r50190 = atan2(r50180, r50189);
        double r50191 = r50190 + r50168;
        return r50191;
}

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. Simplified0.9

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

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

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

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

    \[\leadsto \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_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) + \cos \phi_1} + \lambda_1\]
  9. Simplified0.2

    \[\leadsto \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_2 \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_2 \cdot \sin \lambda_1\right) + \cos \phi_1} + \lambda_1\]
  10. Simplified0.2

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

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

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

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

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

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

Reproduce

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