Average Error: 16.1 → 8.3
Time: 10.0s
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.189787038750083023717505752313724555497 \cdot 10^{157}:\\ \;\;\;\;\pi \cdot \ell - \frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{F} \cdot \left(\frac{\sqrt[3]{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 3.505185121402066062947093610878716781418 \cdot 10^{153}:\\ \;\;\;\;\pi \cdot \ell - \frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{F} \cdot \frac{\sqrt[3]{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 - \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{1}{F \cdot F}\right)\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.189787038750083023717505752313724555497 \cdot 10^{157}:\\
\;\;\;\;\pi \cdot \ell - \frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{F} \cdot \left(\frac{\sqrt[3]{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 3.505185121402066062947093610878716781418 \cdot 10^{153}:\\
\;\;\;\;\pi \cdot \ell - \frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{F} \cdot \frac{\sqrt[3]{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 - \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{1}{F \cdot F}\right)\right) \cdot \tan \left(\pi \cdot \ell\right)\\

\end{array}
double f(double F, double l) {
        double r18998 = atan2(1.0, 0.0);
        double r18999 = l;
        double r19000 = r18998 * r18999;
        double r19001 = 1.0;
        double r19002 = F;
        double r19003 = r19002 * r19002;
        double r19004 = r19001 / r19003;
        double r19005 = tan(r19000);
        double r19006 = r19004 * r19005;
        double r19007 = r19000 - r19006;
        return r19007;
}

double f(double F, double l) {
        double r19008 = atan2(1.0, 0.0);
        double r19009 = l;
        double r19010 = r19008 * r19009;
        double r19011 = -1.189787038750083e+157;
        bool r19012 = r19010 <= r19011;
        double r19013 = 1.0;
        double r19014 = cbrt(r19013);
        double r19015 = r19014 * r19014;
        double r19016 = F;
        double r19017 = r19015 / r19016;
        double r19018 = r19014 / r19016;
        double r19019 = cbrt(r19010);
        double r19020 = r19019 * r19019;
        double r19021 = r19020 * r19019;
        double r19022 = tan(r19021);
        double r19023 = r19018 * r19022;
        double r19024 = r19017 * r19023;
        double r19025 = r19010 - r19024;
        double r19026 = 3.505185121402066e+153;
        bool r19027 = r19010 <= r19026;
        double r19028 = sin(r19010);
        double r19029 = r19014 * r19028;
        double r19030 = 0.041666666666666664;
        double r19031 = 4.0;
        double r19032 = pow(r19008, r19031);
        double r19033 = r19030 * r19032;
        double r19034 = pow(r19009, r19031);
        double r19035 = 1.0;
        double r19036 = 0.5;
        double r19037 = 2.0;
        double r19038 = pow(r19008, r19037);
        double r19039 = pow(r19009, r19037);
        double r19040 = r19038 * r19039;
        double r19041 = r19036 * r19040;
        double r19042 = r19035 - r19041;
        double r19043 = fma(r19033, r19034, r19042);
        double r19044 = r19016 * r19043;
        double r19045 = r19029 / r19044;
        double r19046 = r19017 * r19045;
        double r19047 = r19010 - r19046;
        double r19048 = r19016 * r19016;
        double r19049 = r19013 / r19048;
        double r19050 = log1p(r19049);
        double r19051 = expm1(r19050);
        double r19052 = tan(r19010);
        double r19053 = r19051 * r19052;
        double r19054 = r19010 - r19053;
        double r19055 = r19027 ? r19047 : r19054;
        double r19056 = r19012 ? r19025 : r19055;
        return r19056;
}

Error

Bits error versus F

Bits error versus l

Derivation

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

    1. Initial program 20.7

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

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

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

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

      \[\leadsto \pi \cdot \ell - \frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{F} \cdot \left(\frac{\sqrt[3]{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.189787038750083e+157 < (* PI l) < 3.505185121402066e+153

    1. Initial program 14.5

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

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

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

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

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

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

      \[\leadsto \pi \cdot \ell - \frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{F} \cdot \frac{\sqrt[3]{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. Simplified3.7

      \[\leadsto \pi \cdot \ell - \frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{F} \cdot \frac{\sqrt[3]{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 3.505185121402066e+153 < (* PI l)

    1. Initial program 19.8

      \[\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)\]
    2. Using strategy rm
    3. Applied expm1-log1p-u19.8

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\pi \cdot \ell \le -1.189787038750083023717505752313724555497 \cdot 10^{157}:\\ \;\;\;\;\pi \cdot \ell - \frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{F} \cdot \left(\frac{\sqrt[3]{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 3.505185121402066062947093610878716781418 \cdot 10^{153}:\\ \;\;\;\;\pi \cdot \ell - \frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{F} \cdot \frac{\sqrt[3]{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 - \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{1}{F \cdot F}\right)\right) \cdot \tan \left(\pi \cdot \ell\right)\\ \end{array}\]

Reproduce

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