Average Error: 0.2 → 0.2
Time: 54.2s
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(\cos \phi_1 \cdot \sin theta\right) \cdot \sin delta}{\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\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(\cos \phi_1 \cdot \sin theta\right) \cdot \sin delta}{\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r3443447 = lambda1;
        double r3443448 = theta;
        double r3443449 = sin(r3443448);
        double r3443450 = delta;
        double r3443451 = sin(r3443450);
        double r3443452 = r3443449 * r3443451;
        double r3443453 = phi1;
        double r3443454 = cos(r3443453);
        double r3443455 = r3443452 * r3443454;
        double r3443456 = cos(r3443450);
        double r3443457 = sin(r3443453);
        double r3443458 = r3443457 * r3443456;
        double r3443459 = r3443454 * r3443451;
        double r3443460 = cos(r3443448);
        double r3443461 = r3443459 * r3443460;
        double r3443462 = r3443458 + r3443461;
        double r3443463 = asin(r3443462);
        double r3443464 = sin(r3443463);
        double r3443465 = r3443457 * r3443464;
        double r3443466 = r3443456 - r3443465;
        double r3443467 = atan2(r3443455, r3443466);
        double r3443468 = r3443447 + r3443467;
        return r3443468;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r3443469 = lambda1;
        double r3443470 = phi1;
        double r3443471 = cos(r3443470);
        double r3443472 = theta;
        double r3443473 = sin(r3443472);
        double r3443474 = r3443471 * r3443473;
        double r3443475 = delta;
        double r3443476 = sin(r3443475);
        double r3443477 = r3443474 * r3443476;
        double r3443478 = cos(r3443475);
        double r3443479 = sin(r3443470);
        double r3443480 = cos(r3443472);
        double r3443481 = r3443471 * r3443476;
        double r3443482 = r3443479 * r3443478;
        double r3443483 = fma(r3443480, r3443481, r3443482);
        double r3443484 = asin(r3443483);
        double r3443485 = sin(r3443484);
        double r3443486 = r3443479 * r3443485;
        double r3443487 = r3443478 - r3443486;
        double r3443488 = atan2(r3443477, r3443487);
        double r3443489 = r3443469 + r3443488;
        return r3443489;
}

Error

Bits error versus lambda1

Bits error versus phi1

Bits error versus phi2

Bits error versus delta

Bits error versus theta

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

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

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

Reproduce

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