Average Error: 15.1 → 0.0
Time: 1.4m
Precision: 64
\[\frac{x}{x \cdot x + 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -1.349880233114214 \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 461.8594710281936:\\ \;\;\;\;\frac{\frac{x}{\sqrt{(x \cdot x + 1)_*}}}{\sqrt{(x \cdot x + 1)_*}}\\ \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.349880233114214 \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 461.8594710281936:\\
\;\;\;\;\frac{\frac{x}{\sqrt{(x \cdot x + 1)_*}}}{\sqrt{(x \cdot x + 1)_*}}\\

\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 r5751514 = x;
        double r5751515 = r5751514 * r5751514;
        double r5751516 = 1.0;
        double r5751517 = r5751515 + r5751516;
        double r5751518 = r5751514 / r5751517;
        return r5751518;
}

double f(double x) {
        double r5751519 = x;
        double r5751520 = -1.349880233114214e+154;
        bool r5751521 = r5751519 <= r5751520;
        double r5751522 = 1.0;
        double r5751523 = 5.0;
        double r5751524 = pow(r5751519, r5751523);
        double r5751525 = r5751522 / r5751524;
        double r5751526 = r5751522 / r5751519;
        double r5751527 = r5751525 + r5751526;
        double r5751528 = r5751519 * r5751519;
        double r5751529 = r5751528 * r5751519;
        double r5751530 = r5751522 / r5751529;
        double r5751531 = r5751527 - r5751530;
        double r5751532 = 461.8594710281936;
        bool r5751533 = r5751519 <= r5751532;
        double r5751534 = fma(r5751519, r5751519, r5751522);
        double r5751535 = sqrt(r5751534);
        double r5751536 = r5751519 / r5751535;
        double r5751537 = r5751536 / r5751535;
        double r5751538 = r5751533 ? r5751537 : r5751531;
        double r5751539 = r5751521 ? r5751531 : r5751538;
        return r5751539;
}

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.349880233114214e+154 or 461.8594710281936 < x

    1. Initial program 39.8

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

      \[\leadsto \color{blue}{\frac{x}{(x \cdot x + 1)_*}}\]
    3. Taylor expanded around inf 0.0

      \[\leadsto \color{blue}{\left(\frac{1}{{x}^{5}} + \frac{1}{x}\right) - \frac{1}{{x}^{3}}}\]
    4. 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.349880233114214e+154 < x < 461.8594710281936

    1. Initial program 0.1

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

      \[\leadsto \color{blue}{\frac{x}{(x \cdot x + 1)_*}}\]
    3. Using strategy rm
    4. Applied add-sqr-sqrt0.1

      \[\leadsto \frac{x}{\color{blue}{\sqrt{(x \cdot x + 1)_*} \cdot \sqrt{(x \cdot x + 1)_*}}}\]
    5. Applied associate-/r*0.0

      \[\leadsto \color{blue}{\frac{\frac{x}{\sqrt{(x \cdot x + 1)_*}}}{\sqrt{(x \cdot x + 1)_*}}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -1.349880233114214 \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 461.8594710281936:\\ \;\;\;\;\frac{\frac{x}{\sqrt{(x \cdot x + 1)_*}}}{\sqrt{(x \cdot x + 1)_*}}\\ \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 2019104 +o rules:numerics
(FPCore (x)
  :name "x / (x^2 + 1)"

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

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