Average Error: 16.5 → 8.9
Time: 33.3s
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 -8.659932407972988 \cdot 10^{+22}:\\ \;\;\;\;\pi \cdot \ell - \frac{\left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}\right)\right)}{F}\\ \mathbf{elif}\;\pi \cdot \ell \le 1.3394936946479616 \cdot 10^{-06}:\\ \;\;\;\;\pi \cdot \ell - \frac{\tan \left(\sqrt{\pi} \cdot \left(\ell \cdot \left(\sqrt{\sqrt{\pi}} \cdot \sqrt{\sqrt{\pi}}\right)\right)\right)}{F} \cdot \frac{1}{F}\\ \mathbf{else}:\\ \;\;\;\;\pi \cdot \ell - \frac{\left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}\right)\right)}{F}\\ \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 -8.659932407972988 \cdot 10^{+22}:\\
\;\;\;\;\pi \cdot \ell - \frac{\left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}\right)\right)}{F}\\

\mathbf{elif}\;\pi \cdot \ell \le 1.3394936946479616 \cdot 10^{-06}:\\
\;\;\;\;\pi \cdot \ell - \frac{\tan \left(\sqrt{\pi} \cdot \left(\ell \cdot \left(\sqrt{\sqrt{\pi}} \cdot \sqrt{\sqrt{\pi}}\right)\right)\right)}{F} \cdot \frac{1}{F}\\

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

\end{array}
double f(double F, double l) {
        double r811072 = atan2(1.0, 0.0);
        double r811073 = l;
        double r811074 = r811072 * r811073;
        double r811075 = 1.0;
        double r811076 = F;
        double r811077 = r811076 * r811076;
        double r811078 = r811075 / r811077;
        double r811079 = tan(r811074);
        double r811080 = r811078 * r811079;
        double r811081 = r811074 - r811080;
        return r811081;
}

double f(double F, double l) {
        double r811082 = atan2(1.0, 0.0);
        double r811083 = l;
        double r811084 = r811082 * r811083;
        double r811085 = -8.659932407972988e+22;
        bool r811086 = r811084 <= r811085;
        double r811087 = tan(r811084);
        double r811088 = F;
        double r811089 = r811087 / r811088;
        double r811090 = /* ERROR: no posit support in C */;
        double r811091 = /* ERROR: no posit support in C */;
        double r811092 = r811091 / r811088;
        double r811093 = r811084 - r811092;
        double r811094 = 1.3394936946479616e-06;
        bool r811095 = r811084 <= r811094;
        double r811096 = sqrt(r811082);
        double r811097 = sqrt(r811096);
        double r811098 = r811097 * r811097;
        double r811099 = r811083 * r811098;
        double r811100 = r811096 * r811099;
        double r811101 = tan(r811100);
        double r811102 = r811101 / r811088;
        double r811103 = 1.0;
        double r811104 = r811103 / r811088;
        double r811105 = r811102 * r811104;
        double r811106 = r811084 - r811105;
        double r811107 = r811095 ? r811106 : r811093;
        double r811108 = r811086 ? r811093 : r811107;
        return r811108;
}

Error

Bits error versus F

Bits error versus l

Derivation

  1. Split input into 2 regimes
  2. if (* PI l) < -8.659932407972988e+22 or 1.3394936946479616e-06 < (* PI l)

    1. Initial program 23.5

      \[\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)\]
    2. Simplified23.5

      \[\leadsto \color{blue}{\pi \cdot \ell - \frac{\tan \left(\pi \cdot \ell\right)}{F \cdot F}}\]
    3. Using strategy rm
    4. Applied associate-/r*23.5

      \[\leadsto \pi \cdot \ell - \color{blue}{\frac{\frac{\tan \left(\pi \cdot \ell\right)}{F}}{F}}\]
    5. Using strategy rm
    6. Applied insert-posit1616.4

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

    if -8.659932407972988e+22 < (* PI l) < 1.3394936946479616e-06

    1. Initial program 9.1

      \[\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)\]
    2. Simplified8.5

      \[\leadsto \color{blue}{\pi \cdot \ell - \frac{\tan \left(\pi \cdot \ell\right)}{F \cdot F}}\]
    3. Using strategy rm
    4. Applied *-un-lft-identity8.5

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

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

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

      \[\leadsto \pi \cdot \ell - \frac{1}{F} \cdot \frac{\tan \color{blue}{\left(\sqrt{\pi} \cdot \left(\sqrt{\pi} \cdot \ell\right)\right)}}{F}\]
    9. Using strategy rm
    10. Applied add-sqr-sqrt1.1

      \[\leadsto \pi \cdot \ell - \frac{1}{F} \cdot \frac{\tan \left(\sqrt{\pi} \cdot \left(\sqrt{\color{blue}{\sqrt{\pi} \cdot \sqrt{\pi}}} \cdot \ell\right)\right)}{F}\]
    11. Applied sqrt-prod0.9

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\pi \cdot \ell \le -8.659932407972988 \cdot 10^{+22}:\\ \;\;\;\;\pi \cdot \ell - \frac{\left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}\right)\right)}{F}\\ \mathbf{elif}\;\pi \cdot \ell \le 1.3394936946479616 \cdot 10^{-06}:\\ \;\;\;\;\pi \cdot \ell - \frac{\tan \left(\sqrt{\pi} \cdot \left(\ell \cdot \left(\sqrt{\sqrt{\pi}} \cdot \sqrt{\sqrt{\pi}}\right)\right)\right)}{F} \cdot \frac{1}{F}\\ \mathbf{else}:\\ \;\;\;\;\pi \cdot \ell - \frac{\left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}\right)\right)}{F}\\ \end{array}\]

Reproduce

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