Average Error: 0.2 → 0.2
Time: 50.1s
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 r69407 = lambda1;
        double r69408 = theta;
        double r69409 = sin(r69408);
        double r69410 = delta;
        double r69411 = sin(r69410);
        double r69412 = r69409 * r69411;
        double r69413 = phi1;
        double r69414 = cos(r69413);
        double r69415 = r69412 * r69414;
        double r69416 = cos(r69410);
        double r69417 = sin(r69413);
        double r69418 = r69417 * r69416;
        double r69419 = r69414 * r69411;
        double r69420 = cos(r69408);
        double r69421 = r69419 * r69420;
        double r69422 = r69418 + r69421;
        double r69423 = asin(r69422);
        double r69424 = sin(r69423);
        double r69425 = r69417 * r69424;
        double r69426 = r69416 - r69425;
        double r69427 = atan2(r69415, r69426);
        double r69428 = r69407 + r69427;
        return r69428;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r69429 = lambda1;
        double r69430 = theta;
        double r69431 = sin(r69430);
        double r69432 = delta;
        double r69433 = sin(r69432);
        double r69434 = r69431 * r69433;
        double r69435 = phi1;
        double r69436 = cos(r69435);
        double r69437 = r69434 * r69436;
        double r69438 = cos(r69432);
        double r69439 = sin(r69435);
        double r69440 = r69439 * r69438;
        double r69441 = r69436 * r69433;
        double r69442 = cos(r69430);
        double r69443 = r69441 * r69442;
        double r69444 = r69440 + r69443;
        double r69445 = asin(r69444);
        double r69446 = sin(r69445);
        double r69447 = r69439 * r69446;
        double r69448 = exp(r69447);
        double r69449 = log(r69448);
        double r69450 = r69438 - r69449;
        double r69451 = atan2(r69437, r69450);
        double r69452 = r69429 + r69451;
        return r69452;
}

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 2019325 
(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))))))))))