Average Error: 16.3 → 8.9
Time: 25.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 -2.209957826214302 \cdot 10^{+27}:\\ \;\;\;\;\pi \cdot \ell - \left(\left(\frac{\frac{\tan \left(\pi \cdot \ell\right)}{F}}{F}\right)\right)\\ \mathbf{elif}\;\pi \cdot \ell \le 16098.617820048517:\\ \;\;\;\;\pi \cdot \ell - \frac{\frac{\frac{\sin \left(\pi \cdot \ell\right)}{F}}{F}}{\mathsf{fma}\left(\frac{1}{24}, \left(\left(\pi \cdot \ell\right) \cdot \left(\pi \cdot \ell\right)\right) \cdot \left(\left(\pi \cdot \ell\right) \cdot \left(\pi \cdot \ell\right)\right), \mathsf{fma}\left(\left(\pi \cdot \ell\right) \cdot \left(\pi \cdot \ell\right), \frac{-1}{2}, 1\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\pi \cdot \ell - \left(\left(\frac{\frac{\tan \left(\pi \cdot \ell\right)}{F}}{F}\right)\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 -2.209957826214302 \cdot 10^{+27}:\\
\;\;\;\;\pi \cdot \ell - \left(\left(\frac{\frac{\tan \left(\pi \cdot \ell\right)}{F}}{F}\right)\right)\\

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

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

\end{array}
double f(double F, double l) {
        double r332427 = atan2(1.0, 0.0);
        double r332428 = l;
        double r332429 = r332427 * r332428;
        double r332430 = 1.0;
        double r332431 = F;
        double r332432 = r332431 * r332431;
        double r332433 = r332430 / r332432;
        double r332434 = tan(r332429);
        double r332435 = r332433 * r332434;
        double r332436 = r332429 - r332435;
        return r332436;
}

double f(double F, double l) {
        double r332437 = atan2(1.0, 0.0);
        double r332438 = l;
        double r332439 = r332437 * r332438;
        double r332440 = -2.209957826214302e+27;
        bool r332441 = r332439 <= r332440;
        double r332442 = tan(r332439);
        double r332443 = F;
        double r332444 = r332442 / r332443;
        double r332445 = r332444 / r332443;
        double r332446 = /* ERROR: no posit support in C */;
        double r332447 = /* ERROR: no posit support in C */;
        double r332448 = r332439 - r332447;
        double r332449 = 16098.617820048517;
        bool r332450 = r332439 <= r332449;
        double r332451 = sin(r332439);
        double r332452 = r332451 / r332443;
        double r332453 = r332452 / r332443;
        double r332454 = 0.041666666666666664;
        double r332455 = r332439 * r332439;
        double r332456 = r332455 * r332455;
        double r332457 = -0.5;
        double r332458 = 1.0;
        double r332459 = fma(r332455, r332457, r332458);
        double r332460 = fma(r332454, r332456, r332459);
        double r332461 = r332453 / r332460;
        double r332462 = r332439 - r332461;
        double r332463 = r332450 ? r332462 : r332448;
        double r332464 = r332441 ? r332448 : r332463;
        return r332464;
}

Error

Bits error versus F

Bits error versus l

Derivation

  1. Split input into 2 regimes
  2. if (* PI l) < -2.209957826214302e+27 or 16098.617820048517 < (* PI l)

    1. Initial program 23.3

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

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

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

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

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

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

    if -2.209957826214302e+27 < (* PI l) < 16098.617820048517

    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. Taylor expanded around inf 8.5

      \[\leadsto \pi \cdot \ell - \color{blue}{\frac{\sin \left(\pi \cdot \ell\right)}{{F}^{2} \cdot \cos \left(\pi \cdot \ell\right)}}\]
    4. Simplified1.2

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

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

      \[\leadsto \pi \cdot \ell - \frac{\frac{\frac{\sin \left(\pi \cdot \ell\right)}{F}}{F}}{\color{blue}{\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)}}\]
    8. Simplified1.5

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\pi \cdot \ell \le -2.209957826214302 \cdot 10^{+27}:\\ \;\;\;\;\pi \cdot \ell - \left(\left(\frac{\frac{\tan \left(\pi \cdot \ell\right)}{F}}{F}\right)\right)\\ \mathbf{elif}\;\pi \cdot \ell \le 16098.617820048517:\\ \;\;\;\;\pi \cdot \ell - \frac{\frac{\frac{\sin \left(\pi \cdot \ell\right)}{F}}{F}}{\mathsf{fma}\left(\frac{1}{24}, \left(\left(\pi \cdot \ell\right) \cdot \left(\pi \cdot \ell\right)\right) \cdot \left(\left(\pi \cdot \ell\right) \cdot \left(\pi \cdot \ell\right)\right), \mathsf{fma}\left(\left(\pi \cdot \ell\right) \cdot \left(\pi \cdot \ell\right), \frac{-1}{2}, 1\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\pi \cdot \ell - \left(\left(\frac{\frac{\tan \left(\pi \cdot \ell\right)}{F}}{F}\right)\right)\\ \end{array}\]

Reproduce

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