Average Error: 16.1 → 7.8
Time: 30.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 -1.3881414212069512 \cdot 10^{+177}:\\ \;\;\;\;\pi \cdot \ell - \frac{\left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}\right)\right)}{F}\\ \mathbf{elif}\;\pi \cdot \ell \le -8.564666451512906:\\ \;\;\;\;\pi \cdot \ell - \left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F \cdot F}\right)\right)\\ \mathbf{elif}\;\pi \cdot \ell \le 0.35529890587145435:\\ \;\;\;\;\mathsf{log1p}\left(\mathsf{expm1}\left(\pi \cdot \ell\right)\right) - \frac{\frac{\tan \left(\pi \cdot \ell\right)}{F}}{F}\\ \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 -1.3881414212069512 \cdot 10^{+177}:\\
\;\;\;\;\pi \cdot \ell - \frac{\left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}\right)\right)}{F}\\

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

\mathbf{elif}\;\pi \cdot \ell \le 0.35529890587145435:\\
\;\;\;\;\mathsf{log1p}\left(\mathsf{expm1}\left(\pi \cdot \ell\right)\right) - \frac{\frac{\tan \left(\pi \cdot \ell\right)}{F}}{F}\\

\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 r943391 = atan2(1.0, 0.0);
        double r943392 = l;
        double r943393 = r943391 * r943392;
        double r943394 = 1.0;
        double r943395 = F;
        double r943396 = r943395 * r943395;
        double r943397 = r943394 / r943396;
        double r943398 = tan(r943393);
        double r943399 = r943397 * r943398;
        double r943400 = r943393 - r943399;
        return r943400;
}

double f(double F, double l) {
        double r943401 = atan2(1.0, 0.0);
        double r943402 = l;
        double r943403 = r943401 * r943402;
        double r943404 = -1.3881414212069512e+177;
        bool r943405 = r943403 <= r943404;
        double r943406 = tan(r943403);
        double r943407 = F;
        double r943408 = r943406 / r943407;
        double r943409 = /* ERROR: no posit support in C */;
        double r943410 = /* ERROR: no posit support in C */;
        double r943411 = r943410 / r943407;
        double r943412 = r943403 - r943411;
        double r943413 = -8.564666451512906;
        bool r943414 = r943403 <= r943413;
        double r943415 = r943407 * r943407;
        double r943416 = r943406 / r943415;
        double r943417 = /* ERROR: no posit support in C */;
        double r943418 = /* ERROR: no posit support in C */;
        double r943419 = r943403 - r943418;
        double r943420 = 0.35529890587145435;
        bool r943421 = r943403 <= r943420;
        double r943422 = expm1(r943403);
        double r943423 = log1p(r943422);
        double r943424 = r943408 / r943407;
        double r943425 = r943423 - r943424;
        double r943426 = r943421 ? r943425 : r943419;
        double r943427 = r943414 ? r943419 : r943426;
        double r943428 = r943405 ? r943412 : r943427;
        return r943428;
}

Error

Bits error versus F

Bits error versus l

Derivation

  1. Split input into 3 regimes
  2. if (* PI l) < -1.3881414212069512e+177

    1. Initial program 20.4

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

      \[\leadsto \color{blue}{\pi \cdot \ell - \frac{\tan \left(\pi \cdot \ell\right)}{F \cdot F}}\]
    3. Using strategy rm
    4. Applied associate-/r*20.4

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

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

    if -1.3881414212069512e+177 < (* PI l) < -8.564666451512906 or 0.35529890587145435 < (* PI l)

    1. Initial program 23.9

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

      \[\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)}\]

    if -8.564666451512906 < (* PI l) < 0.35529890587145435

    1. Initial program 8.6

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

      \[\leadsto \color{blue}{\pi \cdot \ell - \frac{\tan \left(\pi \cdot \ell\right)}{F \cdot F}}\]
    3. Using strategy rm
    4. Applied associate-/r*0.3

      \[\leadsto \pi \cdot \ell - \color{blue}{\frac{\frac{\tan \left(\pi \cdot \ell\right)}{F}}{F}}\]
    5. Using strategy rm
    6. Applied log1p-expm1-u0.3

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\pi \cdot \ell \le -1.3881414212069512 \cdot 10^{+177}:\\ \;\;\;\;\pi \cdot \ell - \frac{\left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}\right)\right)}{F}\\ \mathbf{elif}\;\pi \cdot \ell \le -8.564666451512906:\\ \;\;\;\;\pi \cdot \ell - \left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F \cdot F}\right)\right)\\ \mathbf{elif}\;\pi \cdot \ell \le 0.35529890587145435:\\ \;\;\;\;\mathsf{log1p}\left(\mathsf{expm1}\left(\pi \cdot \ell\right)\right) - \frac{\frac{\tan \left(\pi \cdot \ell\right)}{F}}{F}\\ \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 2019164 +o rules:numerics
(FPCore (F l)
  :name "VandenBroeck and Keller, Equation (6)"
  (- (* PI l) (* (/ 1 (* F F)) (tan (* PI l)))))