Average Error: 15.1 → 0.0
Time: 1.2m
Precision: 64
\[\frac{x}{x \cdot x + 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -1.3559032781469798 \cdot 10^{+154}:\\ \;\;\;\;\left(\frac{1}{{x}^{5}} + \frac{1}{x}\right) - \frac{1}{\left(x \cdot x\right) \cdot x}\\ \mathbf{elif}\;x \le 423.7918602723902:\\ \;\;\;\;\frac{\frac{x}{\sqrt{\mathsf{fma}\left(x, x, 1\right)}}}{\sqrt{\mathsf{fma}\left(x, x, 1\right)}}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{1}{{x}^{5}} + \frac{1}{x}\right) - \frac{1}{\left(x \cdot x\right) \cdot x}\\ \end{array}\]
\frac{x}{x \cdot x + 1}
\begin{array}{l}
\mathbf{if}\;x \le -1.3559032781469798 \cdot 10^{+154}:\\
\;\;\;\;\left(\frac{1}{{x}^{5}} + \frac{1}{x}\right) - \frac{1}{\left(x \cdot x\right) \cdot x}\\

\mathbf{elif}\;x \le 423.7918602723902:\\
\;\;\;\;\frac{\frac{x}{\sqrt{\mathsf{fma}\left(x, x, 1\right)}}}{\sqrt{\mathsf{fma}\left(x, x, 1\right)}}\\

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

\end{array}
double f(double x) {
        double r8504284 = x;
        double r8504285 = r8504284 * r8504284;
        double r8504286 = 1.0;
        double r8504287 = r8504285 + r8504286;
        double r8504288 = r8504284 / r8504287;
        return r8504288;
}

double f(double x) {
        double r8504289 = x;
        double r8504290 = -1.3559032781469798e+154;
        bool r8504291 = r8504289 <= r8504290;
        double r8504292 = 1.0;
        double r8504293 = 5.0;
        double r8504294 = pow(r8504289, r8504293);
        double r8504295 = r8504292 / r8504294;
        double r8504296 = r8504292 / r8504289;
        double r8504297 = r8504295 + r8504296;
        double r8504298 = r8504289 * r8504289;
        double r8504299 = r8504298 * r8504289;
        double r8504300 = r8504292 / r8504299;
        double r8504301 = r8504297 - r8504300;
        double r8504302 = 423.7918602723902;
        bool r8504303 = r8504289 <= r8504302;
        double r8504304 = fma(r8504289, r8504289, r8504292);
        double r8504305 = sqrt(r8504304);
        double r8504306 = r8504289 / r8504305;
        double r8504307 = r8504306 / r8504305;
        double r8504308 = r8504303 ? r8504307 : r8504301;
        double r8504309 = r8504291 ? r8504301 : r8504308;
        return r8504309;
}

Error

Bits error versus x

Target

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

Derivation

  1. Split input into 2 regimes
  2. if x < -1.3559032781469798e+154 or 423.7918602723902 < x

    1. Initial program 39.9

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

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

      \[\leadsto \frac{x}{\color{blue}{\sqrt{\mathsf{fma}\left(x, x, 1\right)} \cdot \sqrt{\mathsf{fma}\left(x, x, 1\right)}}}\]
    5. Applied associate-/r*39.8

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

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

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

    if -1.3559032781469798e+154 < x < 423.7918602723902

    1. Initial program 0.1

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

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

      \[\leadsto \frac{x}{\color{blue}{\sqrt{\mathsf{fma}\left(x, x, 1\right)} \cdot \sqrt{\mathsf{fma}\left(x, x, 1\right)}}}\]
    5. Applied associate-/r*0.0

      \[\leadsto \color{blue}{\frac{\frac{x}{\sqrt{\mathsf{fma}\left(x, x, 1\right)}}}{\sqrt{\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 -1.3559032781469798 \cdot 10^{+154}:\\ \;\;\;\;\left(\frac{1}{{x}^{5}} + \frac{1}{x}\right) - \frac{1}{\left(x \cdot x\right) \cdot x}\\ \mathbf{elif}\;x \le 423.7918602723902:\\ \;\;\;\;\frac{\frac{x}{\sqrt{\mathsf{fma}\left(x, x, 1\right)}}}{\sqrt{\mathsf{fma}\left(x, x, 1\right)}}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{1}{{x}^{5}} + \frac{1}{x}\right) - \frac{1}{\left(x \cdot x\right) \cdot x}\\ \end{array}\]

Reproduce

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

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

  (/ x (+ (* x x) 1)))