Average Error: 17.5 → 8.9
Time: 9.6s
Precision: 64
\[\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)\]
\[\begin{array}{l} \mathbf{if}\;\pi \cdot \ell \le -1.150823016260797203203966503119759181491 \cdot 10^{155}:\\ \;\;\;\;\pi \cdot \ell - \frac{1}{F} \cdot \left(\frac{1}{F} \cdot \tan \left(\left(\sqrt[3]{\pi \cdot \ell} \cdot \sqrt[3]{\pi \cdot \ell}\right) \cdot \sqrt[3]{\pi \cdot \ell}\right)\right)\\ \mathbf{elif}\;\pi \cdot \ell \le 7.889486279098064950412660573607028329358 \cdot 10^{138}:\\ \;\;\;\;\pi \cdot \ell - \frac{1}{F} \cdot \frac{1 \cdot \sin \left(\pi \cdot \ell\right)}{F \cdot \mathsf{fma}\left(\frac{1}{24} \cdot {\pi}^{4}, {\ell}^{4}, 1 - \frac{1}{2} \cdot \left({\pi}^{2} \cdot {\ell}^{2}\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\pi \cdot \ell - e^{\log \left(\frac{1}{F \cdot F}\right)} \cdot \tan \left(\pi \cdot \ell\right)\\ \end{array}\]
\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)
\begin{array}{l}
\mathbf{if}\;\pi \cdot \ell \le -1.150823016260797203203966503119759181491 \cdot 10^{155}:\\
\;\;\;\;\pi \cdot \ell - \frac{1}{F} \cdot \left(\frac{1}{F} \cdot \tan \left(\left(\sqrt[3]{\pi \cdot \ell} \cdot \sqrt[3]{\pi \cdot \ell}\right) \cdot \sqrt[3]{\pi \cdot \ell}\right)\right)\\

\mathbf{elif}\;\pi \cdot \ell \le 7.889486279098064950412660573607028329358 \cdot 10^{138}:\\
\;\;\;\;\pi \cdot \ell - \frac{1}{F} \cdot \frac{1 \cdot \sin \left(\pi \cdot \ell\right)}{F \cdot \mathsf{fma}\left(\frac{1}{24} \cdot {\pi}^{4}, {\ell}^{4}, 1 - \frac{1}{2} \cdot \left({\pi}^{2} \cdot {\ell}^{2}\right)\right)}\\

\mathbf{else}:\\
\;\;\;\;\pi \cdot \ell - e^{\log \left(\frac{1}{F \cdot F}\right)} \cdot \tan \left(\pi \cdot \ell\right)\\

\end{array}
double f(double F, double l) {
        double r16439 = atan2(1.0, 0.0);
        double r16440 = l;
        double r16441 = r16439 * r16440;
        double r16442 = 1.0;
        double r16443 = F;
        double r16444 = r16443 * r16443;
        double r16445 = r16442 / r16444;
        double r16446 = tan(r16441);
        double r16447 = r16445 * r16446;
        double r16448 = r16441 - r16447;
        return r16448;
}

double f(double F, double l) {
        double r16449 = atan2(1.0, 0.0);
        double r16450 = l;
        double r16451 = r16449 * r16450;
        double r16452 = -1.1508230162607972e+155;
        bool r16453 = r16451 <= r16452;
        double r16454 = 1.0;
        double r16455 = F;
        double r16456 = r16454 / r16455;
        double r16457 = 1.0;
        double r16458 = r16457 / r16455;
        double r16459 = cbrt(r16451);
        double r16460 = r16459 * r16459;
        double r16461 = r16460 * r16459;
        double r16462 = tan(r16461);
        double r16463 = r16458 * r16462;
        double r16464 = r16456 * r16463;
        double r16465 = r16451 - r16464;
        double r16466 = 7.889486279098065e+138;
        bool r16467 = r16451 <= r16466;
        double r16468 = sin(r16451);
        double r16469 = r16457 * r16468;
        double r16470 = 0.041666666666666664;
        double r16471 = 4.0;
        double r16472 = pow(r16449, r16471);
        double r16473 = r16470 * r16472;
        double r16474 = pow(r16450, r16471);
        double r16475 = 0.5;
        double r16476 = 2.0;
        double r16477 = pow(r16449, r16476);
        double r16478 = pow(r16450, r16476);
        double r16479 = r16477 * r16478;
        double r16480 = r16475 * r16479;
        double r16481 = r16454 - r16480;
        double r16482 = fma(r16473, r16474, r16481);
        double r16483 = r16455 * r16482;
        double r16484 = r16469 / r16483;
        double r16485 = r16456 * r16484;
        double r16486 = r16451 - r16485;
        double r16487 = r16455 * r16455;
        double r16488 = r16457 / r16487;
        double r16489 = log(r16488);
        double r16490 = exp(r16489);
        double r16491 = tan(r16451);
        double r16492 = r16490 * r16491;
        double r16493 = r16451 - r16492;
        double r16494 = r16467 ? r16486 : r16493;
        double r16495 = r16453 ? r16465 : r16494;
        return r16495;
}

Error

Bits error versus F

Bits error versus l

Derivation

  1. Split input into 3 regimes
  2. if (* PI l) < -1.1508230162607972e+155

    1. Initial program 19.5

      \[\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)\]
    2. Using strategy rm
    3. Applied *-un-lft-identity19.5

      \[\leadsto \pi \cdot \ell - \frac{\color{blue}{1 \cdot 1}}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)\]
    4. Applied times-frac19.5

      \[\leadsto \pi \cdot \ell - \color{blue}{\left(\frac{1}{F} \cdot \frac{1}{F}\right)} \cdot \tan \left(\pi \cdot \ell\right)\]
    5. Applied associate-*l*19.5

      \[\leadsto \pi \cdot \ell - \color{blue}{\frac{1}{F} \cdot \left(\frac{1}{F} \cdot \tan \left(\pi \cdot \ell\right)\right)}\]
    6. Using strategy rm
    7. Applied add-cube-cbrt19.4

      \[\leadsto \pi \cdot \ell - \frac{1}{F} \cdot \left(\frac{1}{F} \cdot \tan \color{blue}{\left(\left(\sqrt[3]{\pi \cdot \ell} \cdot \sqrt[3]{\pi \cdot \ell}\right) \cdot \sqrt[3]{\pi \cdot \ell}\right)}\right)\]

    if -1.1508230162607972e+155 < (* PI l) < 7.889486279098065e+138

    1. Initial program 16.2

      \[\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)\]
    2. Using strategy rm
    3. Applied *-un-lft-identity16.2

      \[\leadsto \pi \cdot \ell - \frac{\color{blue}{1 \cdot 1}}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)\]
    4. Applied times-frac16.3

      \[\leadsto \pi \cdot \ell - \color{blue}{\left(\frac{1}{F} \cdot \frac{1}{F}\right)} \cdot \tan \left(\pi \cdot \ell\right)\]
    5. Applied associate-*l*10.0

      \[\leadsto \pi \cdot \ell - \color{blue}{\frac{1}{F} \cdot \left(\frac{1}{F} \cdot \tan \left(\pi \cdot \ell\right)\right)}\]
    6. Using strategy rm
    7. Applied tan-quot10.0

      \[\leadsto \pi \cdot \ell - \frac{1}{F} \cdot \left(\frac{1}{F} \cdot \color{blue}{\frac{\sin \left(\pi \cdot \ell\right)}{\cos \left(\pi \cdot \ell\right)}}\right)\]
    8. Applied frac-times10.0

      \[\leadsto \pi \cdot \ell - \frac{1}{F} \cdot \color{blue}{\frac{1 \cdot \sin \left(\pi \cdot \ell\right)}{F \cdot \cos \left(\pi \cdot \ell\right)}}\]
    9. Taylor expanded around 0 4.2

      \[\leadsto \pi \cdot \ell - \frac{1}{F} \cdot \frac{1 \cdot \sin \left(\pi \cdot \ell\right)}{F \cdot \color{blue}{\left(\left(\frac{1}{24} \cdot \left({\pi}^{4} \cdot {\ell}^{4}\right) + 1\right) - \frac{1}{2} \cdot \left({\pi}^{2} \cdot {\ell}^{2}\right)\right)}}\]
    10. Simplified4.2

      \[\leadsto \pi \cdot \ell - \frac{1}{F} \cdot \frac{1 \cdot \sin \left(\pi \cdot \ell\right)}{F \cdot \color{blue}{\mathsf{fma}\left(\frac{1}{24} \cdot {\pi}^{4}, {\ell}^{4}, 1 - \frac{1}{2} \cdot \left({\pi}^{2} \cdot {\ell}^{2}\right)\right)}}\]

    if 7.889486279098065e+138 < (* PI l)

    1. Initial program 21.3

      \[\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)\]
    2. Using strategy rm
    3. Applied add-exp-log42.6

      \[\leadsto \pi \cdot \ell - \frac{1}{F \cdot \color{blue}{e^{\log F}}} \cdot \tan \left(\pi \cdot \ell\right)\]
    4. Applied add-exp-log42.6

      \[\leadsto \pi \cdot \ell - \frac{1}{\color{blue}{e^{\log F}} \cdot e^{\log F}} \cdot \tan \left(\pi \cdot \ell\right)\]
    5. Applied prod-exp42.6

      \[\leadsto \pi \cdot \ell - \frac{1}{\color{blue}{e^{\log F + \log F}}} \cdot \tan \left(\pi \cdot \ell\right)\]
    6. Applied add-exp-log42.6

      \[\leadsto \pi \cdot \ell - \frac{\color{blue}{e^{\log 1}}}{e^{\log F + \log F}} \cdot \tan \left(\pi \cdot \ell\right)\]
    7. Applied div-exp42.6

      \[\leadsto \pi \cdot \ell - \color{blue}{e^{\log 1 - \left(\log F + \log F\right)}} \cdot \tan \left(\pi \cdot \ell\right)\]
    8. Simplified21.3

      \[\leadsto \pi \cdot \ell - e^{\color{blue}{\log \left(\frac{1}{F \cdot F}\right)}} \cdot \tan \left(\pi \cdot \ell\right)\]
  3. Recombined 3 regimes into one program.
  4. Final simplification8.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;\pi \cdot \ell \le -1.150823016260797203203966503119759181491 \cdot 10^{155}:\\ \;\;\;\;\pi \cdot \ell - \frac{1}{F} \cdot \left(\frac{1}{F} \cdot \tan \left(\left(\sqrt[3]{\pi \cdot \ell} \cdot \sqrt[3]{\pi \cdot \ell}\right) \cdot \sqrt[3]{\pi \cdot \ell}\right)\right)\\ \mathbf{elif}\;\pi \cdot \ell \le 7.889486279098064950412660573607028329358 \cdot 10^{138}:\\ \;\;\;\;\pi \cdot \ell - \frac{1}{F} \cdot \frac{1 \cdot \sin \left(\pi \cdot \ell\right)}{F \cdot \mathsf{fma}\left(\frac{1}{24} \cdot {\pi}^{4}, {\ell}^{4}, 1 - \frac{1}{2} \cdot \left({\pi}^{2} \cdot {\ell}^{2}\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\pi \cdot \ell - e^{\log \left(\frac{1}{F \cdot F}\right)} \cdot \tan \left(\pi \cdot \ell\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019354 +o rules:numerics
(FPCore (F l)
  :name "VandenBroeck and Keller, Equation (6)"
  :precision binary64
  (- (* PI l) (* (/ 1 (* F F)) (tan (* PI l)))))