Average Error: 16.3 → 8.9
Time: 27.8s
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{\tan \left(\pi \cdot \ell\right)}{F \cdot 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{\tan \left(\pi \cdot \ell\right)}{F \cdot 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{\tan \left(\pi \cdot \ell\right)}{F \cdot 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{\tan \left(\pi \cdot \ell\right)}{F \cdot F}\right)\right)\\

\end{array}
double f(double F, double l) {
        double r338541 = atan2(1.0, 0.0);
        double r338542 = l;
        double r338543 = r338541 * r338542;
        double r338544 = 1.0;
        double r338545 = F;
        double r338546 = r338545 * r338545;
        double r338547 = r338544 / r338546;
        double r338548 = tan(r338543);
        double r338549 = r338547 * r338548;
        double r338550 = r338543 - r338549;
        return r338550;
}

double f(double F, double l) {
        double r338551 = atan2(1.0, 0.0);
        double r338552 = l;
        double r338553 = r338551 * r338552;
        double r338554 = -2.209957826214302e+27;
        bool r338555 = r338553 <= r338554;
        double r338556 = tan(r338553);
        double r338557 = F;
        double r338558 = r338557 * r338557;
        double r338559 = r338556 / r338558;
        double r338560 = /* ERROR: no posit support in C */;
        double r338561 = /* ERROR: no posit support in C */;
        double r338562 = r338553 - r338561;
        double r338563 = 16098.617820048517;
        bool r338564 = r338553 <= r338563;
        double r338565 = sin(r338553);
        double r338566 = r338565 / r338557;
        double r338567 = r338566 / r338557;
        double r338568 = 0.041666666666666664;
        double r338569 = r338553 * r338553;
        double r338570 = r338569 * r338569;
        double r338571 = -0.5;
        double r338572 = 1.0;
        double r338573 = fma(r338569, r338571, r338572);
        double r338574 = fma(r338568, r338570, r338573);
        double r338575 = r338567 / r338574;
        double r338576 = r338553 - r338575;
        double r338577 = r338564 ? r338576 : r338562;
        double r338578 = r338555 ? r338562 : r338577;
        return r338578;
}

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 insert-posit1616.1

      \[\leadsto \pi \cdot \ell - \color{blue}{\left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F \cdot 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{\tan \left(\pi \cdot \ell\right)}{F \cdot 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{\tan \left(\pi \cdot \ell\right)}{F \cdot 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)))))