Average Error: 0.2 → 0.2
Time: 45.9s
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{\mathsf{expm1}\left(\mathsf{log1p}\left(\left(\cos \phi_1 \cdot \sin delta\right) \cdot \sin theta\right)\right)}{\frac{\cos delta \cdot \cos delta - \sqrt[3]{\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right)\right) \cdot \left(\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right)\right) \cdot \left(\mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right)\right)\right)}}{\mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right) + \cos delta}}\]
\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{\mathsf{expm1}\left(\mathsf{log1p}\left(\left(\cos \phi_1 \cdot \sin delta\right) \cdot \sin theta\right)\right)}{\frac{\cos delta \cdot \cos delta - \sqrt[3]{\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right)\right) \cdot \left(\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right)\right) \cdot \left(\mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right)\right)\right)}}{\mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right) + \cos delta}}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r3215465 = lambda1;
        double r3215466 = theta;
        double r3215467 = sin(r3215466);
        double r3215468 = delta;
        double r3215469 = sin(r3215468);
        double r3215470 = r3215467 * r3215469;
        double r3215471 = phi1;
        double r3215472 = cos(r3215471);
        double r3215473 = r3215470 * r3215472;
        double r3215474 = cos(r3215468);
        double r3215475 = sin(r3215471);
        double r3215476 = r3215475 * r3215474;
        double r3215477 = r3215472 * r3215469;
        double r3215478 = cos(r3215466);
        double r3215479 = r3215477 * r3215478;
        double r3215480 = r3215476 + r3215479;
        double r3215481 = asin(r3215480);
        double r3215482 = sin(r3215481);
        double r3215483 = r3215475 * r3215482;
        double r3215484 = r3215474 - r3215483;
        double r3215485 = atan2(r3215473, r3215484);
        double r3215486 = r3215465 + r3215485;
        return r3215486;
}

double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
        double r3215487 = lambda1;
        double r3215488 = phi1;
        double r3215489 = cos(r3215488);
        double r3215490 = delta;
        double r3215491 = sin(r3215490);
        double r3215492 = r3215489 * r3215491;
        double r3215493 = theta;
        double r3215494 = sin(r3215493);
        double r3215495 = r3215492 * r3215494;
        double r3215496 = log1p(r3215495);
        double r3215497 = expm1(r3215496);
        double r3215498 = cos(r3215490);
        double r3215499 = r3215498 * r3215498;
        double r3215500 = sin(r3215488);
        double r3215501 = cos(r3215493);
        double r3215502 = r3215500 * r3215498;
        double r3215503 = fma(r3215501, r3215492, r3215502);
        double r3215504 = asin(r3215503);
        double r3215505 = sin(r3215504);
        double r3215506 = r3215500 * r3215505;
        double r3215507 = expm1(r3215506);
        double r3215508 = log1p(r3215507);
        double r3215509 = r3215508 * r3215508;
        double r3215510 = r3215509 * r3215509;
        double r3215511 = r3215509 * r3215510;
        double r3215512 = cbrt(r3215511);
        double r3215513 = r3215499 - r3215512;
        double r3215514 = r3215508 + r3215498;
        double r3215515 = r3215513 / r3215514;
        double r3215516 = atan2(r3215497, r3215515);
        double r3215517 = r3215487 + r3215516;
        return r3215517;
}

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 theta \cdot \left(\cos \phi_1 \cdot \sin delta\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. Using strategy rm
  4. Applied log1p-expm1-u0.2

    \[\leadsto \tan^{-1}_* \frac{\sin theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)}{\cos delta - \color{blue}{\mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right)}} + \lambda_1\]
  5. Using strategy rm
  6. Applied expm1-log1p-u0.2

    \[\leadsto \tan^{-1}_* \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\sin theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)\right)\right)}}{\cos delta - \mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right)} + \lambda_1\]
  7. Using strategy rm
  8. Applied flip--0.2

    \[\leadsto \tan^{-1}_* \frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\sin theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)\right)\right)}{\color{blue}{\frac{\cos delta \cdot \cos delta - \mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right)}{\cos delta + \mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right)}}} + \lambda_1\]
  9. Using strategy rm
  10. Applied add-cbrt-cube0.2

    \[\leadsto \tan^{-1}_* \frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\sin theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)\right)\right)}{\frac{\cos delta \cdot \cos delta - \color{blue}{\sqrt[3]{\left(\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right)\right) \cdot \left(\mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right)\right)\right) \cdot \left(\mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right)\right)}}}{\cos delta + \mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right)}} + \lambda_1\]
  11. Final simplification0.2

    \[\leadsto \lambda_1 + \tan^{-1}_* \frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\left(\cos \phi_1 \cdot \sin delta\right) \cdot \sin theta\right)\right)}{\frac{\cos delta \cdot \cos delta - \sqrt[3]{\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right)\right) \cdot \left(\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right)\right) \cdot \left(\mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right)\right)\right)}}{\mathsf{log1p}\left(\mathsf{expm1}\left(\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)\right)\right) + \cos delta}}\]

Reproduce

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