Average Error: 17.4 → 7.7
Time: 38.1s
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 -4.146557747932015701654867671650405179036 \cdot 10^{155}:\\ \;\;\;\;\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 3.453486448446354706757533974773779608006 \cdot 10^{141}:\\ \;\;\;\;\pi \cdot \ell - \frac{1}{F \cdot \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)} \cdot \frac{\sin \left(\pi \cdot \ell\right)}{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 -4.146557747932015701654867671650405179036 \cdot 10^{155}:\\
\;\;\;\;\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 3.453486448446354706757533974773779608006 \cdot 10^{141}:\\
\;\;\;\;\pi \cdot \ell - \frac{1}{F \cdot \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)} \cdot \frac{\sin \left(\pi \cdot \ell\right)}{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 r733123 = atan2(1.0, 0.0);
        double r733124 = l;
        double r733125 = r733123 * r733124;
        double r733126 = 1.0;
        double r733127 = F;
        double r733128 = r733127 * r733127;
        double r733129 = r733126 / r733128;
        double r733130 = tan(r733125);
        double r733131 = r733129 * r733130;
        double r733132 = r733125 - r733131;
        return r733132;
}

double f(double F, double l) {
        double r733133 = atan2(1.0, 0.0);
        double r733134 = l;
        double r733135 = r733133 * r733134;
        double r733136 = -4.1465577479320157e+155;
        bool r733137 = r733135 <= r733136;
        double r733138 = 1.0;
        double r733139 = F;
        double r733140 = r733139 * r733139;
        double r733141 = r733138 / r733140;
        double r733142 = /* ERROR: no posit support in C */;
        double r733143 = /* ERROR: no posit support in C */;
        double r733144 = tan(r733135);
        double r733145 = r733143 * r733144;
        double r733146 = r733135 - r733145;
        double r733147 = 3.453486448446355e+141;
        bool r733148 = r733135 <= r733147;
        double r733149 = 0.041666666666666664;
        double r733150 = r733135 * r733135;
        double r733151 = r733150 * r733150;
        double r733152 = -0.5;
        double r733153 = 1.0;
        double r733154 = fma(r733150, r733152, r733153);
        double r733155 = fma(r733149, r733151, r733154);
        double r733156 = r733139 * r733155;
        double r733157 = r733138 / r733156;
        double r733158 = sin(r733135);
        double r733159 = r733158 / r733139;
        double r733160 = r733157 * r733159;
        double r733161 = r733135 - r733160;
        double r733162 = r733148 ? r733161 : r733146;
        double r733163 = r733137 ? r733146 : r733162;
        return r733163;
}

Error

Bits error versus F

Bits error versus l

Derivation

  1. Split input into 2 regimes
  2. if (* PI l) < -4.1465577479320157e+155 or 3.453486448446355e+141 < (* PI l)

    1. Initial program 21.1

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

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

    if -4.1465577479320157e+155 < (* PI l) < 3.453486448446355e+141

    1. Initial program 15.9

      \[\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)\]
    2. Taylor expanded around inf 15.6

      \[\leadsto \pi \cdot \ell - \color{blue}{1 \cdot \frac{\sin \left(\pi \cdot \ell\right)}{{F}^{2} \cdot \cos \left(\pi \cdot \ell\right)}}\]
    3. Simplified9.8

      \[\leadsto \pi \cdot \ell - \color{blue}{\frac{\sin \left(\pi \cdot \ell\right)}{F} \cdot \frac{1}{\cos \left(\pi \cdot \ell\right) \cdot F}}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt9.8

      \[\leadsto \pi \cdot \ell - \frac{\sin \left(\pi \cdot \ell\right)}{F} \cdot \frac{1}{\cos \left(\pi \cdot \color{blue}{\left(\left(\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}\right) \cdot \sqrt[3]{\ell}\right)}\right) \cdot F}\]
    6. Applied associate-*r*9.8

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\pi \cdot \ell \le -4.146557747932015701654867671650405179036 \cdot 10^{155}:\\ \;\;\;\;\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 3.453486448446354706757533974773779608006 \cdot 10^{141}:\\ \;\;\;\;\pi \cdot \ell - \frac{1}{F \cdot \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)} \cdot \frac{\sin \left(\pi \cdot \ell\right)}{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 +o rules:numerics
(FPCore (F l)
  :name "VandenBroeck and Keller, Equation (6)"
  (- (* PI l) (* (/ 1.0 (* F F)) (tan (* PI l)))))