Average Error: 14.9 → 0.0
Time: 17.1s
Precision: 64
\[\frac{x}{x \cdot x + 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le -7878457258558738432 \lor \neg \left(x \le 405.250862702851463836850598454475402832\right):\\ \;\;\;\;\frac{1}{{x}^{5}} + \left(\frac{1}{x} - \frac{1}{{x}^{3}}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{x}{\sqrt{\mathsf{fma}\left(x, x, 1\right)}}}{\frac{\mathsf{hypot}\left({1}^{\frac{3}{2}}, {x}^{3}\right)}{\sqrt{\mathsf{fma}\left(1, 1 - x \cdot x, {x}^{4}\right)}}}\\ \end{array}\]
\frac{x}{x \cdot x + 1}
\begin{array}{l}
\mathbf{if}\;x \le -7878457258558738432 \lor \neg \left(x \le 405.250862702851463836850598454475402832\right):\\
\;\;\;\;\frac{1}{{x}^{5}} + \left(\frac{1}{x} - \frac{1}{{x}^{3}}\right)\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{x}{\sqrt{\mathsf{fma}\left(x, x, 1\right)}}}{\frac{\mathsf{hypot}\left({1}^{\frac{3}{2}}, {x}^{3}\right)}{\sqrt{\mathsf{fma}\left(1, 1 - x \cdot x, {x}^{4}\right)}}}\\

\end{array}
double f(double x) {
        double r108969 = x;
        double r108970 = r108969 * r108969;
        double r108971 = 1.0;
        double r108972 = r108970 + r108971;
        double r108973 = r108969 / r108972;
        return r108973;
}

double f(double x) {
        double r108974 = x;
        double r108975 = -7.878457258558738e+18;
        bool r108976 = r108974 <= r108975;
        double r108977 = 405.25086270285146;
        bool r108978 = r108974 <= r108977;
        double r108979 = !r108978;
        bool r108980 = r108976 || r108979;
        double r108981 = 1.0;
        double r108982 = 5.0;
        double r108983 = pow(r108974, r108982);
        double r108984 = r108981 / r108983;
        double r108985 = 1.0;
        double r108986 = r108985 / r108974;
        double r108987 = 3.0;
        double r108988 = pow(r108974, r108987);
        double r108989 = r108981 / r108988;
        double r108990 = r108986 - r108989;
        double r108991 = r108984 + r108990;
        double r108992 = fma(r108974, r108974, r108981);
        double r108993 = sqrt(r108992);
        double r108994 = r108974 / r108993;
        double r108995 = 1.5;
        double r108996 = pow(r108981, r108995);
        double r108997 = hypot(r108996, r108988);
        double r108998 = r108974 * r108974;
        double r108999 = r108981 - r108998;
        double r109000 = 4.0;
        double r109001 = pow(r108974, r109000);
        double r109002 = fma(r108981, r108999, r109001);
        double r109003 = sqrt(r109002);
        double r109004 = r108997 / r109003;
        double r109005 = r108994 / r109004;
        double r109006 = r108980 ? r108991 : r109005;
        return r109006;
}

Error

Bits error versus x

Target

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

Derivation

  1. Split input into 2 regimes
  2. if x < -7.878457258558738e+18 or 405.25086270285146 < x

    1. Initial program 31.0

      \[\frac{x}{x \cdot x + 1}\]
    2. 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}}}\]
    3. Simplified0.0

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

    if -7.878457258558738e+18 < x < 405.25086270285146

    1. Initial program 0.0

      \[\frac{x}{x \cdot x + 1}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt0.0

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

      \[\leadsto \color{blue}{\frac{\frac{x}{\sqrt{x \cdot x + 1}}}{\sqrt{x \cdot x + 1}}}\]
    5. Simplified0.0

      \[\leadsto \frac{\color{blue}{\frac{x}{\sqrt{\mathsf{fma}\left(x, x, 1\right)}}}}{\sqrt{x \cdot x + 1}}\]
    6. Using strategy rm
    7. Applied flip3-+0.0

      \[\leadsto \frac{\frac{x}{\sqrt{\mathsf{fma}\left(x, x, 1\right)}}}{\sqrt{\color{blue}{\frac{{\left(x \cdot x\right)}^{3} + {1}^{3}}{\left(x \cdot x\right) \cdot \left(x \cdot x\right) + \left(1 \cdot 1 - \left(x \cdot x\right) \cdot 1\right)}}}}\]
    8. Applied sqrt-div0.0

      \[\leadsto \frac{\frac{x}{\sqrt{\mathsf{fma}\left(x, x, 1\right)}}}{\color{blue}{\frac{\sqrt{{\left(x \cdot x\right)}^{3} + {1}^{3}}}{\sqrt{\left(x \cdot x\right) \cdot \left(x \cdot x\right) + \left(1 \cdot 1 - \left(x \cdot x\right) \cdot 1\right)}}}}\]
    9. Simplified0.0

      \[\leadsto \frac{\frac{x}{\sqrt{\mathsf{fma}\left(x, x, 1\right)}}}{\frac{\color{blue}{\mathsf{hypot}\left({1}^{\frac{3}{2}}, {x}^{3}\right)}}{\sqrt{\left(x \cdot x\right) \cdot \left(x \cdot x\right) + \left(1 \cdot 1 - \left(x \cdot x\right) \cdot 1\right)}}}\]
    10. Simplified0.0

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -7878457258558738432 \lor \neg \left(x \le 405.250862702851463836850598454475402832\right):\\ \;\;\;\;\frac{1}{{x}^{5}} + \left(\frac{1}{x} - \frac{1}{{x}^{3}}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{x}{\sqrt{\mathsf{fma}\left(x, x, 1\right)}}}{\frac{\mathsf{hypot}\left({1}^{\frac{3}{2}}, {x}^{3}\right)}{\sqrt{\mathsf{fma}\left(1, 1 - x \cdot x, {x}^{4}\right)}}}\\ \end{array}\]

Reproduce

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

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

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