Average Error: 0.9 → 0.3
Time: 37.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(-\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \sin \lambda_2\right)\right) + \left(\sqrt[3]{\cos \phi_2} \cdot \sqrt[3]{\cos \phi_2}\right) \cdot \left(\left(\cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \sqrt[3]{\cos \phi_2}\right)}{\cos \phi_1 + \cos \phi_2 \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_1 \cdot \cos \lambda_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(-\cos \phi_2 \cdot \left(\cos \lambda_1 \cdot \sin \lambda_2\right)\right) + \left(\sqrt[3]{\cos \phi_2} \cdot \sqrt[3]{\cos \phi_2}\right) \cdot \left(\left(\cos \lambda_2 \cdot \sin \lambda_1\right) \cdot \sqrt[3]{\cos \phi_2}\right)}{\cos \phi_1 + \cos \phi_2 \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_1 \cdot \cos \lambda_2\right)} + \lambda_1
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r1661133 = lambda1;
        double r1661134 = phi2;
        double r1661135 = cos(r1661134);
        double r1661136 = lambda2;
        double r1661137 = r1661133 - r1661136;
        double r1661138 = sin(r1661137);
        double r1661139 = r1661135 * r1661138;
        double r1661140 = phi1;
        double r1661141 = cos(r1661140);
        double r1661142 = cos(r1661137);
        double r1661143 = r1661135 * r1661142;
        double r1661144 = r1661141 + r1661143;
        double r1661145 = atan2(r1661139, r1661144);
        double r1661146 = r1661133 + r1661145;
        return r1661146;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r1661147 = phi2;
        double r1661148 = cos(r1661147);
        double r1661149 = lambda1;
        double r1661150 = cos(r1661149);
        double r1661151 = lambda2;
        double r1661152 = sin(r1661151);
        double r1661153 = r1661150 * r1661152;
        double r1661154 = r1661148 * r1661153;
        double r1661155 = -r1661154;
        double r1661156 = cbrt(r1661148);
        double r1661157 = r1661156 * r1661156;
        double r1661158 = cos(r1661151);
        double r1661159 = sin(r1661149);
        double r1661160 = r1661158 * r1661159;
        double r1661161 = r1661160 * r1661156;
        double r1661162 = r1661157 * r1661161;
        double r1661163 = r1661155 + r1661162;
        double r1661164 = phi1;
        double r1661165 = cos(r1661164);
        double r1661166 = r1661152 * r1661159;
        double r1661167 = r1661150 * r1661158;
        double r1661168 = r1661166 + r1661167;
        double r1661169 = r1661148 * r1661168;
        double r1661170 = r1661165 + r1661169;
        double r1661171 = atan2(r1661163, r1661170);
        double r1661172 = r1661171 + r1661149;
        return r1661172;
}

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

    \[\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 \cos \left(\lambda_1 - \lambda_2\right)}\]
  4. Using strategy rm
  5. 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 \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)}}\]
  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-cube-cbrt0.3

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\color{blue}{\left(\left(\sqrt[3]{\cos \phi_2} \cdot \sqrt[3]{\cos \phi_2}\right) \cdot \sqrt[3]{\cos \phi_2}\right)} \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)}\]
  11. Applied associate-*l*0.3

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\color{blue}{\left(\sqrt[3]{\cos \phi_2} \cdot \sqrt[3]{\cos \phi_2}\right) \cdot \left(\sqrt[3]{\cos \phi_2} \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2\right)\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)}\]
  12. Final simplification0.3

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

Reproduce

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