Average Error: 0.2 → 0.2
Time: 38.7s
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{\sin delta \cdot \left(\sin theta \cdot \cos \phi_1\right)}{\frac{{\left(\mathsf{fma}\left(-\sin \phi_1, \left(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1, \cos delta\right)\right)}^{3} - {\left({\left(\sin \phi_1\right)}^{2} \cdot \cos delta\right)}^{3}}{\mathsf{fma}\left(\mathsf{fma}\left(\cos delta, {\left(\sin \phi_1\right)}^{2}, \mathsf{fma}\left(-\sin \phi_1, \left(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1, \cos delta\right)\right), {\left(\sin \phi_1\right)}^{2} \cdot \cos delta, \mathsf{fma}\left(-\sin \phi_1, \left(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1, \cos delta\right) \cdot \mathsf{fma}\left(-\sin \phi_1, \left(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1, \cos delta\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{\sin delta \cdot \left(\sin theta \cdot \cos \phi_1\right)}{\frac{{\left(\mathsf{fma}\left(-\sin \phi_1, \left(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1, \cos delta\right)\right)}^{3} - {\left({\left(\sin \phi_1\right)}^{2} \cdot \cos delta\right)}^{3}}{\mathsf{fma}\left(\mathsf{fma}\left(\cos delta, {\left(\sin \phi_1\right)}^{2}, \mathsf{fma}\left(-\sin \phi_1, \left(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1, \cos delta\right)\right), {\left(\sin \phi_1\right)}^{2} \cdot \cos delta, \mathsf{fma}\left(-\sin \phi_1, \left(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1, \cos delta\right) \cdot \mathsf{fma}\left(-\sin \phi_1, \left(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1, \cos delta\right)\right)}}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r127265 = lambda1;
        double r127266 = theta;
        double r127267 = sin(r127266);
        double r127268 = delta;
        double r127269 = sin(r127268);
        double r127270 = r127267 * r127269;
        double r127271 = phi1;
        double r127272 = cos(r127271);
        double r127273 = r127270 * r127272;
        double r127274 = cos(r127268);
        double r127275 = sin(r127271);
        double r127276 = r127275 * r127274;
        double r127277 = r127272 * r127269;
        double r127278 = cos(r127266);
        double r127279 = r127277 * r127278;
        double r127280 = r127276 + r127279;
        double r127281 = asin(r127280);
        double r127282 = sin(r127281);
        double r127283 = r127275 * r127282;
        double r127284 = r127274 - r127283;
        double r127285 = atan2(r127273, r127284);
        double r127286 = r127265 + r127285;
        return r127286;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r127287 = lambda1;
        double r127288 = delta;
        double r127289 = sin(r127288);
        double r127290 = theta;
        double r127291 = sin(r127290);
        double r127292 = phi1;
        double r127293 = cos(r127292);
        double r127294 = r127291 * r127293;
        double r127295 = r127289 * r127294;
        double r127296 = sin(r127292);
        double r127297 = -r127296;
        double r127298 = cos(r127290);
        double r127299 = r127298 * r127289;
        double r127300 = r127299 * r127293;
        double r127301 = cos(r127288);
        double r127302 = fma(r127297, r127300, r127301);
        double r127303 = 3.0;
        double r127304 = pow(r127302, r127303);
        double r127305 = 2.0;
        double r127306 = pow(r127296, r127305);
        double r127307 = r127306 * r127301;
        double r127308 = pow(r127307, r127303);
        double r127309 = r127304 - r127308;
        double r127310 = fma(r127301, r127306, r127302);
        double r127311 = r127302 * r127302;
        double r127312 = fma(r127310, r127307, r127311);
        double r127313 = r127309 / r127312;
        double r127314 = atan2(r127295, r127313);
        double r127315 = r127287 + r127314;
        return r127315;
}

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

    \[\leadsto \color{blue}{\tan^{-1}_* \frac{\sin theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)}{\mathsf{fma}\left(-\sin \phi_1, \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), \cos delta\right)} + \lambda_1}\]
  3. Taylor expanded around inf 0.1

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

    \[\leadsto \tan^{-1}_* \frac{\sin theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)}{\color{blue}{\cos delta - \sin \phi_1 \cdot \mathsf{fma}\left(\cos \phi_1, \sin delta \cdot \cos theta, \cos delta \cdot \sin \phi_1\right)}} + \lambda_1\]
  5. Using strategy rm
  6. Applied fma-udef0.2

    \[\leadsto \tan^{-1}_* \frac{\sin theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)}{\cos delta - \sin \phi_1 \cdot \color{blue}{\left(\cos \phi_1 \cdot \left(\sin delta \cdot \cos theta\right) + \cos delta \cdot \sin \phi_1\right)}} + \lambda_1\]
  7. Applied distribute-lft-in0.2

    \[\leadsto \tan^{-1}_* \frac{\sin theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)}{\cos delta - \color{blue}{\left(\sin \phi_1 \cdot \left(\cos \phi_1 \cdot \left(\sin delta \cdot \cos theta\right)\right) + \sin \phi_1 \cdot \left(\cos delta \cdot \sin \phi_1\right)\right)}} + \lambda_1\]
  8. Applied associate--r+0.2

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

    \[\leadsto \tan^{-1}_* \frac{\sin theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)}{\color{blue}{\mathsf{fma}\left(-\sin \phi_1, \left(\sin delta \cdot \cos theta\right) \cdot \cos \phi_1, \cos delta\right)} - \sin \phi_1 \cdot \left(\cos delta \cdot \sin \phi_1\right)} + \lambda_1\]
  10. Using strategy rm
  11. Applied associate-*r*0.2

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

    \[\leadsto \tan^{-1}_* \frac{\color{blue}{\left(\cos \phi_1 \cdot \sin theta\right)} \cdot \sin delta}{\mathsf{fma}\left(-\sin \phi_1, \left(\sin delta \cdot \cos theta\right) \cdot \cos \phi_1, \cos delta\right) - \sin \phi_1 \cdot \left(\cos delta \cdot \sin \phi_1\right)} + \lambda_1\]
  13. Using strategy rm
  14. Applied flip3--0.2

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

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

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

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

Reproduce

herbie shell --seed 2019194 +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))))))))))