Average Error: 13.3 → 0.2
Time: 48.3s
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(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\left({\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{3} - {\left(\sin \left(-\lambda_2\right) \cdot \sin \lambda_1\right)}^{3}\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}{\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right) + \left(\log \left(e^{\sin \left(-\lambda_2\right) \cdot \sin \lambda_1}\right) \cdot \log \left(e^{\sin \left(-\lambda_2\right) \cdot \sin \lambda_1}\right) + \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \log \left(e^{\sin \left(-\lambda_2\right) \cdot \sin \lambda_1}\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(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\left({\left(\cos \lambda_2 \cdot \cos \lambda_1\right)}^{3} - {\left(\sin \left(-\lambda_2\right) \cdot \sin \lambda_1\right)}^{3}\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}{\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right) + \left(\log \left(e^{\sin \left(-\lambda_2\right) \cdot \sin \lambda_1}\right) \cdot \log \left(e^{\sin \left(-\lambda_2\right) \cdot \sin \lambda_1}\right) + \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \log \left(e^{\sin \left(-\lambda_2\right) \cdot \sin \lambda_1}\right)\right)}}
double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r119360 = lambda1;
        double r119361 = lambda2;
        double r119362 = r119360 - r119361;
        double r119363 = sin(r119362);
        double r119364 = phi2;
        double r119365 = cos(r119364);
        double r119366 = r119363 * r119365;
        double r119367 = phi1;
        double r119368 = cos(r119367);
        double r119369 = sin(r119364);
        double r119370 = r119368 * r119369;
        double r119371 = sin(r119367);
        double r119372 = r119371 * r119365;
        double r119373 = cos(r119362);
        double r119374 = r119372 * r119373;
        double r119375 = r119370 - r119374;
        double r119376 = atan2(r119366, r119375);
        return r119376;
}

double f(double lambda1, double lambda2, double phi1, double phi2) {
        double r119377 = lambda1;
        double r119378 = sin(r119377);
        double r119379 = lambda2;
        double r119380 = cos(r119379);
        double r119381 = r119378 * r119380;
        double r119382 = cos(r119377);
        double r119383 = -r119379;
        double r119384 = sin(r119383);
        double r119385 = r119382 * r119384;
        double r119386 = r119381 + r119385;
        double r119387 = phi2;
        double r119388 = cos(r119387);
        double r119389 = r119386 * r119388;
        double r119390 = phi1;
        double r119391 = cos(r119390);
        double r119392 = sin(r119387);
        double r119393 = r119391 * r119392;
        double r119394 = r119380 * r119382;
        double r119395 = 3.0;
        double r119396 = pow(r119394, r119395);
        double r119397 = r119384 * r119378;
        double r119398 = pow(r119397, r119395);
        double r119399 = r119396 - r119398;
        double r119400 = sin(r119390);
        double r119401 = r119400 * r119388;
        double r119402 = r119399 * r119401;
        double r119403 = r119394 * r119394;
        double r119404 = exp(r119397);
        double r119405 = log(r119404);
        double r119406 = r119405 * r119405;
        double r119407 = r119394 * r119405;
        double r119408 = r119406 + r119407;
        double r119409 = r119403 + r119408;
        double r119410 = r119402 / r119409;
        double r119411 = r119393 - r119410;
        double r119412 = atan2(r119389, r119411);
        return r119412;
}

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

    \[\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 sub-neg13.3

    \[\leadsto \tan^{-1}_* \frac{\sin \color{blue}{\left(\lambda_1 + \left(-\lambda_2\right)\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. Applied sin-sum6.7

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

    \[\leadsto \tan^{-1}_* \frac{\left(\color{blue}{\sin \lambda_1 \cdot \cos \lambda_2} + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\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)}\]
  6. Using strategy rm
  7. Applied sub-neg6.7

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

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

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

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

    \[\leadsto \tan^{-1}_* \frac{\left(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 - \color{blue}{\log \left(e^{\sin \left(-\lambda_2\right) \cdot \sin \lambda_1}\right)}\right)}\]
  13. Using strategy rm
  14. Applied flip3--0.2

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

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

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

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

Reproduce

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