Average Error: 16.3 → 8.3
Time: 28.2s
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.9372357391859827 \cdot 10^{+207}:\\ \;\;\;\;\pi \cdot \ell - \frac{\left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}\right)\right)}{F}\\ \mathbf{elif}\;\pi \cdot \ell \le -1.2977109214087882 \cdot 10^{+23}:\\ \;\;\;\;\pi \cdot \ell - \left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F \cdot F}\right)\right)\\ \mathbf{elif}\;\pi \cdot \ell \le 1.542584206713776 \cdot 10^{-34}:\\ \;\;\;\;\pi \cdot \ell - \frac{\frac{1}{\frac{F}{\tan \left(\pi \cdot \ell\right)}}}{F}\\ \mathbf{else}:\\ \;\;\;\;\pi \cdot \ell - \frac{\left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}\right)\right)}{F}\\ \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.9372357391859827 \cdot 10^{+207}:\\
\;\;\;\;\pi \cdot \ell - \frac{\left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}\right)\right)}{F}\\

\mathbf{elif}\;\pi \cdot \ell \le -1.2977109214087882 \cdot 10^{+23}:\\
\;\;\;\;\pi \cdot \ell - \left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F \cdot F}\right)\right)\\

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

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

\end{array}
double f(double F, double l) {
        double r403036 = atan2(1.0, 0.0);
        double r403037 = l;
        double r403038 = r403036 * r403037;
        double r403039 = 1.0;
        double r403040 = F;
        double r403041 = r403040 * r403040;
        double r403042 = r403039 / r403041;
        double r403043 = tan(r403038);
        double r403044 = r403042 * r403043;
        double r403045 = r403038 - r403044;
        return r403045;
}

double f(double F, double l) {
        double r403046 = atan2(1.0, 0.0);
        double r403047 = l;
        double r403048 = r403046 * r403047;
        double r403049 = -1.9372357391859827e+207;
        bool r403050 = r403048 <= r403049;
        double r403051 = tan(r403048);
        double r403052 = F;
        double r403053 = r403051 / r403052;
        double r403054 = /* ERROR: no posit support in C */;
        double r403055 = /* ERROR: no posit support in C */;
        double r403056 = r403055 / r403052;
        double r403057 = r403048 - r403056;
        double r403058 = -1.2977109214087882e+23;
        bool r403059 = r403048 <= r403058;
        double r403060 = r403052 * r403052;
        double r403061 = r403051 / r403060;
        double r403062 = /* ERROR: no posit support in C */;
        double r403063 = /* ERROR: no posit support in C */;
        double r403064 = r403048 - r403063;
        double r403065 = 1.542584206713776e-34;
        bool r403066 = r403048 <= r403065;
        double r403067 = 1.0;
        double r403068 = r403052 / r403051;
        double r403069 = r403067 / r403068;
        double r403070 = r403069 / r403052;
        double r403071 = r403048 - r403070;
        double r403072 = r403066 ? r403071 : r403057;
        double r403073 = r403059 ? r403064 : r403072;
        double r403074 = r403050 ? r403057 : r403073;
        return r403074;
}

Error

Bits error versus F

Bits error versus l

Derivation

  1. Split input into 3 regimes
  2. if (* PI l) < -1.9372357391859827e+207 or 1.542584206713776e-34 < (* PI l)

    1. Initial program 21.0

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

      \[\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.9

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

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

    if -1.9372357391859827e+207 < (* PI l) < -1.2977109214087882e+23

    1. Initial program 25.4

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

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

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

    if -1.2977109214087882e+23 < (* PI l) < 1.542584206713776e-34

    1. Initial program 9.4

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\pi \cdot \ell \le -1.9372357391859827 \cdot 10^{+207}:\\ \;\;\;\;\pi \cdot \ell - \frac{\left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}\right)\right)}{F}\\ \mathbf{elif}\;\pi \cdot \ell \le -1.2977109214087882 \cdot 10^{+23}:\\ \;\;\;\;\pi \cdot \ell - \left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F \cdot F}\right)\right)\\ \mathbf{elif}\;\pi \cdot \ell \le 1.542584206713776 \cdot 10^{-34}:\\ \;\;\;\;\pi \cdot \ell - \frac{\frac{1}{\frac{F}{\tan \left(\pi \cdot \ell\right)}}}{F}\\ \mathbf{else}:\\ \;\;\;\;\pi \cdot \ell - \frac{\left(\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}\right)\right)}{F}\\ \end{array}\]

Reproduce

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