Average Error: 0.2 → 0.2
Time: 21.3s
Precision: 64
\[\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}\]
\[\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \log \left(e^{\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}\right)}\]
\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}
\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \log \left(e^{\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}\right)}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r115506 = lambda1;
        double r115507 = theta;
        double r115508 = sin(r115507);
        double r115509 = delta;
        double r115510 = sin(r115509);
        double r115511 = r115508 * r115510;
        double r115512 = phi1;
        double r115513 = cos(r115512);
        double r115514 = r115511 * r115513;
        double r115515 = cos(r115509);
        double r115516 = sin(r115512);
        double r115517 = r115516 * r115515;
        double r115518 = r115513 * r115510;
        double r115519 = cos(r115507);
        double r115520 = r115518 * r115519;
        double r115521 = r115517 + r115520;
        double r115522 = asin(r115521);
        double r115523 = sin(r115522);
        double r115524 = r115516 * r115523;
        double r115525 = r115515 - r115524;
        double r115526 = atan2(r115514, r115525);
        double r115527 = r115506 + r115526;
        return r115527;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r115528 = lambda1;
        double r115529 = theta;
        double r115530 = sin(r115529);
        double r115531 = delta;
        double r115532 = sin(r115531);
        double r115533 = r115530 * r115532;
        double r115534 = phi1;
        double r115535 = cos(r115534);
        double r115536 = r115533 * r115535;
        double r115537 = cos(r115531);
        double r115538 = sin(r115534);
        double r115539 = r115538 * r115537;
        double r115540 = r115535 * r115532;
        double r115541 = cos(r115529);
        double r115542 = r115540 * r115541;
        double r115543 = r115539 + r115542;
        double r115544 = asin(r115543);
        double r115545 = sin(r115544);
        double r115546 = r115538 * r115545;
        double r115547 = exp(r115546);
        double r115548 = log(r115547);
        double r115549 = r115537 - r115548;
        double r115550 = atan2(r115536, r115549);
        double r115551 = r115528 + r115550;
        return r115551;
}

Error

Bits error versus lambda1

Bits error versus phi1

Bits error versus phi2

Bits error versus delta

Bits error versus theta

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.2

    \[\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}\]
  2. Using strategy rm
  3. Applied add-log-exp0.2

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

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

Reproduce

herbie shell --seed 2020042 
(FPCore (lambda1 phi1 phi2 delta theta)
  :name "Destination given bearing on a great circle"
  :precision binary64
  (+ lambda1 (atan2 (* (* (sin theta) (sin delta)) (cos phi1)) (- (cos delta) (* (sin phi1) (sin (asin (+ (* (sin phi1) (cos delta)) (* (* (cos phi1) (sin delta)) (cos theta))))))))))