Average Error: 13.4 → 0.2
Time: 43.1s
Precision: 64
\[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\]
\[\tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \left(\log \left(e^{\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\right) + \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)\right)}\]
\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}
\tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \left(\log \left(e^{\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}\right) + \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)\right)}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r2238318 = lambda1;
        double r2238319 = lambda2;
        double r2238320 = r2238318 - r2238319;
        double r2238321 = sin(r2238320);
        double r2238322 = phi2;
        double r2238323 = cos(r2238322);
        double r2238324 = r2238321 * r2238323;
        double r2238325 = phi1;
        double r2238326 = cos(r2238325);
        double r2238327 = sin(r2238322);
        double r2238328 = r2238326 * r2238327;
        double r2238329 = sin(r2238325);
        double r2238330 = r2238329 * r2238323;
        double r2238331 = cos(r2238320);
        double r2238332 = r2238330 * r2238331;
        double r2238333 = r2238328 - r2238332;
        double r2238334 = atan2(r2238324, r2238333);
        return r2238334;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r2238335 = lambda2;
        double r2238336 = cos(r2238335);
        double r2238337 = lambda1;
        double r2238338 = sin(r2238337);
        double r2238339 = r2238336 * r2238338;
        double r2238340 = cos(r2238337);
        double r2238341 = sin(r2238335);
        double r2238342 = r2238340 * r2238341;
        double r2238343 = r2238339 - r2238342;
        double r2238344 = phi2;
        double r2238345 = cos(r2238344);
        double r2238346 = r2238343 * r2238345;
        double r2238347 = sin(r2238344);
        double r2238348 = phi1;
        double r2238349 = cos(r2238348);
        double r2238350 = r2238347 * r2238349;
        double r2238351 = r2238341 * r2238338;
        double r2238352 = sin(r2238348);
        double r2238353 = r2238352 * r2238345;
        double r2238354 = r2238351 * r2238353;
        double r2238355 = exp(r2238354);
        double r2238356 = log(r2238355);
        double r2238357 = r2238336 * r2238340;
        double r2238358 = r2238357 * r2238353;
        double r2238359 = r2238356 + r2238358;
        double r2238360 = r2238350 - r2238359;
        double r2238361 = atan2(r2238346, r2238360);
        return r2238361;
}

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 13.4

    \[\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\]
  2. Using strategy rm
  3. Applied sin-diff6.9

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

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

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

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

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

Reproduce

herbie shell --seed 2019152 
(FPCore (lambda1 lambda2 phi1 phi2)
  :name "Bearing on a great circle"
  (atan2 (* (sin (- lambda1 lambda2)) (cos phi2)) (- (* (cos phi1) (sin phi2)) (* (* (sin phi1) (cos phi2)) (cos (- lambda1 lambda2))))))