Average Error: 15.3 → 0.0
Time: 22.4s
Precision: 64
\[\frac{x}{x \cdot x + 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -3042.621786307237471191911026835441589355:\\ \;\;\;\;\left(\frac{1}{{x}^{5}} - \frac{\frac{1}{x}}{x \cdot x}\right) + \frac{1}{x}\\ \mathbf{elif}\;x \le 1028948.43663111724890768527984619140625:\\ \;\;\;\;\frac{1}{\sqrt[3]{\mathsf{fma}\left(x, x, 1\right)} \cdot \sqrt[3]{\mathsf{fma}\left(x, x, 1\right)}} \cdot \frac{x}{\sqrt[3]{\mathsf{fma}\left(x, x, 1\right)}}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{1}{{x}^{5}} - \frac{\frac{1}{x}}{x \cdot x}\right) + \frac{1}{x}\\ \end{array}\]
\frac{x}{x \cdot x + 1}
\begin{array}{l}
\mathbf{if}\;x \le -3042.621786307237471191911026835441589355:\\
\;\;\;\;\left(\frac{1}{{x}^{5}} - \frac{\frac{1}{x}}{x \cdot x}\right) + \frac{1}{x}\\

\mathbf{elif}\;x \le 1028948.43663111724890768527984619140625:\\
\;\;\;\;\frac{1}{\sqrt[3]{\mathsf{fma}\left(x, x, 1\right)} \cdot \sqrt[3]{\mathsf{fma}\left(x, x, 1\right)}} \cdot \frac{x}{\sqrt[3]{\mathsf{fma}\left(x, x, 1\right)}}\\

\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{{x}^{5}} - \frac{\frac{1}{x}}{x \cdot x}\right) + \frac{1}{x}\\

\end{array}
double f(double x) {
        double r3186233 = x;
        double r3186234 = r3186233 * r3186233;
        double r3186235 = 1.0;
        double r3186236 = r3186234 + r3186235;
        double r3186237 = r3186233 / r3186236;
        return r3186237;
}

double f(double x) {
        double r3186238 = x;
        double r3186239 = -3042.6217863072375;
        bool r3186240 = r3186238 <= r3186239;
        double r3186241 = 1.0;
        double r3186242 = 5.0;
        double r3186243 = pow(r3186238, r3186242);
        double r3186244 = r3186241 / r3186243;
        double r3186245 = r3186241 / r3186238;
        double r3186246 = r3186238 * r3186238;
        double r3186247 = r3186245 / r3186246;
        double r3186248 = r3186244 - r3186247;
        double r3186249 = 1.0;
        double r3186250 = r3186249 / r3186238;
        double r3186251 = r3186248 + r3186250;
        double r3186252 = 1028948.4366311172;
        bool r3186253 = r3186238 <= r3186252;
        double r3186254 = fma(r3186238, r3186238, r3186241);
        double r3186255 = cbrt(r3186254);
        double r3186256 = r3186255 * r3186255;
        double r3186257 = r3186249 / r3186256;
        double r3186258 = r3186238 / r3186255;
        double r3186259 = r3186257 * r3186258;
        double r3186260 = r3186253 ? r3186259 : r3186251;
        double r3186261 = r3186240 ? r3186251 : r3186260;
        return r3186261;
}

Error

Bits error versus x

Target

Original15.3
Target0.1
Herbie0.0
\[\frac{1}{x + \frac{1}{x}}\]

Derivation

  1. Split input into 2 regimes
  2. if x < -3042.6217863072375 or 1028948.4366311172 < x

    1. Initial program 30.9

      \[\frac{x}{x \cdot x + 1}\]
    2. Simplified30.9

      \[\leadsto \color{blue}{\frac{x}{\mathsf{fma}\left(x, x, 1\right)}}\]
    3. Taylor expanded around inf 0.0

      \[\leadsto \color{blue}{\left(1 \cdot \frac{1}{{x}^{5}} + \frac{1}{x}\right) - 1 \cdot \frac{1}{{x}^{3}}}\]
    4. Simplified0.0

      \[\leadsto \color{blue}{\frac{1}{x} + \left(\frac{1}{{x}^{5}} - \frac{\frac{1}{x}}{x \cdot x}\right)}\]

    if -3042.6217863072375 < x < 1028948.4366311172

    1. Initial program 0.0

      \[\frac{x}{x \cdot x + 1}\]
    2. Simplified0.0

      \[\leadsto \color{blue}{\frac{x}{\mathsf{fma}\left(x, x, 1\right)}}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt0.0

      \[\leadsto \frac{x}{\color{blue}{\left(\sqrt[3]{\mathsf{fma}\left(x, x, 1\right)} \cdot \sqrt[3]{\mathsf{fma}\left(x, x, 1\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(x, x, 1\right)}}}\]
    5. Applied *-un-lft-identity0.0

      \[\leadsto \frac{\color{blue}{1 \cdot x}}{\left(\sqrt[3]{\mathsf{fma}\left(x, x, 1\right)} \cdot \sqrt[3]{\mathsf{fma}\left(x, x, 1\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(x, x, 1\right)}}\]
    6. Applied times-frac0.0

      \[\leadsto \color{blue}{\frac{1}{\sqrt[3]{\mathsf{fma}\left(x, x, 1\right)} \cdot \sqrt[3]{\mathsf{fma}\left(x, x, 1\right)}} \cdot \frac{x}{\sqrt[3]{\mathsf{fma}\left(x, x, 1\right)}}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -3042.621786307237471191911026835441589355:\\ \;\;\;\;\left(\frac{1}{{x}^{5}} - \frac{\frac{1}{x}}{x \cdot x}\right) + \frac{1}{x}\\ \mathbf{elif}\;x \le 1028948.43663111724890768527984619140625:\\ \;\;\;\;\frac{1}{\sqrt[3]{\mathsf{fma}\left(x, x, 1\right)} \cdot \sqrt[3]{\mathsf{fma}\left(x, x, 1\right)}} \cdot \frac{x}{\sqrt[3]{\mathsf{fma}\left(x, x, 1\right)}}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{1}{{x}^{5}} - \frac{\frac{1}{x}}{x \cdot x}\right) + \frac{1}{x}\\ \end{array}\]

Reproduce

herbie shell --seed 2019170 +o rules:numerics
(FPCore (x)
  :name "x / (x^2 + 1)"

  :herbie-target
  (/ 1.0 (+ x (/ 1.0 x)))

  (/ x (+ (* x x) 1.0)))