Average Error: 15.8 → 7.6
Time: 36.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 -9.285544385226371 \cdot 10^{+16}:\\ \;\;\;\;\pi \cdot \ell - \left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}\right)\right) \cdot \frac{1}{F}\\ \mathbf{elif}\;\pi \cdot \ell \le 28393.849854159114:\\ \;\;\;\;\pi \cdot \ell - \frac{\tan \left(\pi \cdot \ell\right)}{F} \cdot \frac{1}{F}\\ \mathbf{elif}\;\pi \cdot \ell \le 2.4253442475351736 \cdot 10^{+118}:\\ \;\;\;\;\pi \cdot \ell - \left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F \cdot F}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\pi \cdot \ell - \left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}\right)\right) \cdot \frac{1}{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 -9.285544385226371 \cdot 10^{+16}:\\
\;\;\;\;\pi \cdot \ell - \left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}\right)\right) \cdot \frac{1}{F}\\

\mathbf{elif}\;\pi \cdot \ell \le 28393.849854159114:\\
\;\;\;\;\pi \cdot \ell - \frac{\tan \left(\pi \cdot \ell\right)}{F} \cdot \frac{1}{F}\\

\mathbf{elif}\;\pi \cdot \ell \le 2.4253442475351736 \cdot 10^{+118}:\\
\;\;\;\;\pi \cdot \ell - \left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F \cdot F}\right)\right)\\

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

\end{array}
double f(double F, double l) {
        double r950220 = atan2(1.0, 0.0);
        double r950221 = l;
        double r950222 = r950220 * r950221;
        double r950223 = 1.0;
        double r950224 = F;
        double r950225 = r950224 * r950224;
        double r950226 = r950223 / r950225;
        double r950227 = tan(r950222);
        double r950228 = r950226 * r950227;
        double r950229 = r950222 - r950228;
        return r950229;
}

double f(double F, double l) {
        double r950230 = atan2(1.0, 0.0);
        double r950231 = l;
        double r950232 = r950230 * r950231;
        double r950233 = -9.285544385226371e+16;
        bool r950234 = r950232 <= r950233;
        double r950235 = tan(r950232);
        double r950236 = F;
        double r950237 = r950235 / r950236;
        double r950238 = /* ERROR: no posit support in C */;
        double r950239 = /* ERROR: no posit support in C */;
        double r950240 = 1.0;
        double r950241 = r950240 / r950236;
        double r950242 = r950239 * r950241;
        double r950243 = r950232 - r950242;
        double r950244 = 28393.849854159114;
        bool r950245 = r950232 <= r950244;
        double r950246 = r950237 * r950241;
        double r950247 = r950232 - r950246;
        double r950248 = 2.4253442475351736e+118;
        bool r950249 = r950232 <= r950248;
        double r950250 = r950236 * r950236;
        double r950251 = r950235 / r950250;
        double r950252 = /* ERROR: no posit support in C */;
        double r950253 = /* ERROR: no posit support in C */;
        double r950254 = r950232 - r950253;
        double r950255 = r950249 ? r950254 : r950243;
        double r950256 = r950245 ? r950247 : r950255;
        double r950257 = r950234 ? r950243 : r950256;
        return r950257;
}

Error

Bits error versus F

Bits error versus l

Derivation

  1. Split input into 3 regimes
  2. if (* PI l) < -9.285544385226371e+16 or 2.4253442475351736e+118 < (* PI l)

    1. Initial program 21.2

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

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

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

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

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

    if -9.285544385226371e+16 < (* PI l) < 28393.849854159114

    1. Initial program 9.1

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

      \[\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.7

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

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

    if 28393.849854159114 < (* PI l) < 2.4253442475351736e+118

    1. Initial program 27.0

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\pi \cdot \ell \le -9.285544385226371 \cdot 10^{+16}:\\ \;\;\;\;\pi \cdot \ell - \left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}\right)\right) \cdot \frac{1}{F}\\ \mathbf{elif}\;\pi \cdot \ell \le 28393.849854159114:\\ \;\;\;\;\pi \cdot \ell - \frac{\tan \left(\pi \cdot \ell\right)}{F} \cdot \frac{1}{F}\\ \mathbf{elif}\;\pi \cdot \ell \le 2.4253442475351736 \cdot 10^{+118}:\\ \;\;\;\;\pi \cdot \ell - \left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F \cdot F}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\pi \cdot \ell - \left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}\right)\right) \cdot \frac{1}{F}\\ \end{array}\]

Reproduce

herbie shell --seed 2019162 
(FPCore (F l)
  :name "VandenBroeck and Keller, Equation (6)"
  (- (* PI l) (* (/ 1 (* F F)) (tan (* PI l)))))