Average Error: 13.2 → 0.2
Time: 39.2s
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(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right) + \left(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \sin \phi_1\right) \cdot \cos \phi_2\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(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right) + \left(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \sin \phi_1\right) \cdot \cos \phi_2\right)}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r1626311 = lambda1;
        double r1626312 = lambda2;
        double r1626313 = r1626311 - r1626312;
        double r1626314 = sin(r1626313);
        double r1626315 = phi2;
        double r1626316 = cos(r1626315);
        double r1626317 = r1626314 * r1626316;
        double r1626318 = phi1;
        double r1626319 = cos(r1626318);
        double r1626320 = sin(r1626315);
        double r1626321 = r1626319 * r1626320;
        double r1626322 = sin(r1626318);
        double r1626323 = r1626322 * r1626316;
        double r1626324 = cos(r1626313);
        double r1626325 = r1626323 * r1626324;
        double r1626326 = r1626321 - r1626325;
        double r1626327 = atan2(r1626317, r1626326);
        return r1626327;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r1626328 = lambda2;
        double r1626329 = cos(r1626328);
        double r1626330 = lambda1;
        double r1626331 = sin(r1626330);
        double r1626332 = r1626329 * r1626331;
        double r1626333 = cos(r1626330);
        double r1626334 = sin(r1626328);
        double r1626335 = r1626333 * r1626334;
        double r1626336 = r1626332 - r1626335;
        double r1626337 = phi2;
        double r1626338 = cos(r1626337);
        double r1626339 = r1626336 * r1626338;
        double r1626340 = sin(r1626337);
        double r1626341 = phi1;
        double r1626342 = cos(r1626341);
        double r1626343 = r1626340 * r1626342;
        double r1626344 = r1626334 * r1626331;
        double r1626345 = sin(r1626341);
        double r1626346 = r1626338 * r1626345;
        double r1626347 = r1626344 * r1626346;
        double r1626348 = r1626329 * r1626333;
        double r1626349 = r1626348 * r1626345;
        double r1626350 = r1626349 * r1626338;
        double r1626351 = r1626347 + r1626350;
        double r1626352 = r1626343 - r1626351;
        double r1626353 = atan2(r1626339, r1626352);
        return r1626353;
}

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.2

    \[\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.6

    \[\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-rgt-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(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right) + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)\right)}}\]
  7. Using strategy rm
  8. Applied associate-*r*0.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(\color{blue}{\left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \sin \phi_1\right) \cdot \cos \phi_2} + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\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(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right) + \left(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \sin \phi_1\right) \cdot \cos \phi_2\right)}\]

Reproduce

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