Average Error: 0.9 → 0.2
Time: 24.9s
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{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \sin \lambda_2 \cdot \cos \lambda_1\right)}{\left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2 + \left(\cos \phi_1 + \left(\cos \phi_2 \cdot \cos \lambda_1\right) \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{\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \cos \lambda_2 - \sin \lambda_2 \cdot \cos \lambda_1\right)}{\left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2 + \left(\cos \phi_1 + \left(\cos \phi_2 \cdot \cos \lambda_1\right) \cdot \cos \lambda_2\right)} + \lambda_1
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r50303 = lambda1;
        double r50304 = phi2;
        double r50305 = cos(r50304);
        double r50306 = lambda2;
        double r50307 = r50303 - r50306;
        double r50308 = sin(r50307);
        double r50309 = r50305 * r50308;
        double r50310 = phi1;
        double r50311 = cos(r50310);
        double r50312 = cos(r50307);
        double r50313 = r50305 * r50312;
        double r50314 = r50311 + r50313;
        double r50315 = atan2(r50309, r50314);
        double r50316 = r50303 + r50315;
        return r50316;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r50317 = phi2;
        double r50318 = cos(r50317);
        double r50319 = lambda1;
        double r50320 = sin(r50319);
        double r50321 = lambda2;
        double r50322 = cos(r50321);
        double r50323 = r50320 * r50322;
        double r50324 = sin(r50321);
        double r50325 = cos(r50319);
        double r50326 = r50324 * r50325;
        double r50327 = r50323 - r50326;
        double r50328 = r50318 * r50327;
        double r50329 = r50320 * r50324;
        double r50330 = r50329 * r50318;
        double r50331 = phi1;
        double r50332 = cos(r50331);
        double r50333 = r50318 * r50325;
        double r50334 = r50333 * r50322;
        double r50335 = r50332 + r50334;
        double r50336 = r50330 + r50335;
        double r50337 = atan2(r50328, r50336);
        double r50338 = r50337 + r50319;
        return r50338;
}

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

    \[\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. Applied distribute-rgt-in0.9

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\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)}}\]
  5. Applied associate-+r+0.9

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\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}}\]
  6. Simplified0.9

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\cos \phi_2 \cdot \sin \left(\lambda_1 - \lambda_2\right)}{\color{blue}{\left(\cos \lambda_2 \cdot \left(\cos \phi_2 \cdot \cos \lambda_1\right) + \cos \phi_1\right)} + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}\]
  7. Using strategy rm
  8. 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)}}{\left(\cos \lambda_2 \cdot \left(\cos \phi_2 \cdot \cos \lambda_1\right) + \cos \phi_1\right) + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}\]
  9. Simplified0.2

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

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

Reproduce

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