Average Error: 17.4 → 9.1
Time: 45.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 -29407008719341217132838912:\\ \;\;\;\;\pi \cdot \ell - \left(\left(\frac{1}{F \cdot F}\right)\right) \cdot \tan \left(\pi \cdot \ell\right)\\ \mathbf{elif}\;\pi \cdot \ell \le 1418305108739575.25:\\ \;\;\;\;\pi \cdot \ell - 1 \cdot \frac{\tan \left(\pi \cdot \ell\right) \cdot \frac{1}{F}}{F}\\ \mathbf{else}:\\ \;\;\;\;\pi \cdot \ell - \left(\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 -29407008719341217132838912:\\
\;\;\;\;\pi \cdot \ell - \left(\left(\frac{1}{F \cdot F}\right)\right) \cdot \tan \left(\pi \cdot \ell\right)\\

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

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

\end{array}
double f(double F, double l) {
        double r863761 = atan2(1.0, 0.0);
        double r863762 = l;
        double r863763 = r863761 * r863762;
        double r863764 = 1.0;
        double r863765 = F;
        double r863766 = r863765 * r863765;
        double r863767 = r863764 / r863766;
        double r863768 = tan(r863763);
        double r863769 = r863767 * r863768;
        double r863770 = r863763 - r863769;
        return r863770;
}

double f(double F, double l) {
        double r863771 = atan2(1.0, 0.0);
        double r863772 = l;
        double r863773 = r863771 * r863772;
        double r863774 = -2.9407008719341217e+25;
        bool r863775 = r863773 <= r863774;
        double r863776 = 1.0;
        double r863777 = F;
        double r863778 = r863777 * r863777;
        double r863779 = r863776 / r863778;
        double r863780 = /* ERROR: no posit support in C */;
        double r863781 = /* ERROR: no posit support in C */;
        double r863782 = tan(r863773);
        double r863783 = r863781 * r863782;
        double r863784 = r863773 - r863783;
        double r863785 = 1418305108739575.2;
        bool r863786 = r863773 <= r863785;
        double r863787 = 1.0;
        double r863788 = r863787 / r863777;
        double r863789 = r863782 * r863788;
        double r863790 = r863789 / r863777;
        double r863791 = r863776 * r863790;
        double r863792 = r863773 - r863791;
        double r863793 = r863786 ? r863792 : r863784;
        double r863794 = r863775 ? r863784 : r863793;
        return r863794;
}

Error

Bits error versus F

Bits error versus l

Derivation

  1. Split input into 2 regimes
  2. if (* PI l) < -2.9407008719341217e+25 or 1418305108739575.2 < (* PI l)

    1. Initial program 24.6

      \[\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)\]
    2. Using strategy rm
    3. Applied insert-posit1616.9

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

    if -2.9407008719341217e+25 < (* PI l) < 1418305108739575.2

    1. Initial program 10.1

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\pi \cdot \ell \le -29407008719341217132838912:\\ \;\;\;\;\pi \cdot \ell - \left(\left(\frac{1}{F \cdot F}\right)\right) \cdot \tan \left(\pi \cdot \ell\right)\\ \mathbf{elif}\;\pi \cdot \ell \le 1418305108739575.25:\\ \;\;\;\;\pi \cdot \ell - 1 \cdot \frac{\tan \left(\pi \cdot \ell\right) \cdot \frac{1}{F}}{F}\\ \mathbf{else}:\\ \;\;\;\;\pi \cdot \ell - \left(\left(\frac{1}{F \cdot F}\right)\right) \cdot \tan \left(\pi \cdot \ell\right)\\ \end{array}\]

Reproduce

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