Average Error: 14.8 → 0.0
Time: 2.7s
Precision: binary64
Cost: 14402
\[\frac{x}{x \cdot x + 1}\]
\[\begin{array}{l} \mathbf{if}\;x \leq -1.3314234767781347 \cdot 10^{+154}:\\ \;\;\;\;\frac{1}{x}\\ \mathbf{elif}\;x \leq 8059.235026241259:\\ \;\;\;\;\frac{1}{\sqrt{1 + x \cdot x}} \cdot \frac{x}{\sqrt{1 + x \cdot x}}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{x} \cdot \left(1 - \frac{\frac{1}{x}}{x}\right)\\ \end{array}\]
\frac{x}{x \cdot x + 1}
\begin{array}{l}
\mathbf{if}\;x \leq -1.3314234767781347 \cdot 10^{+154}:\\
\;\;\;\;\frac{1}{x}\\

\mathbf{elif}\;x \leq 8059.235026241259:\\
\;\;\;\;\frac{1}{\sqrt{1 + x \cdot x}} \cdot \frac{x}{\sqrt{1 + x \cdot x}}\\

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

\end{array}
(FPCore (x) :precision binary64 (/ x (+ (* x x) 1.0)))
(FPCore (x)
 :precision binary64
 (if (<= x -1.3314234767781347e+154)
   (/ 1.0 x)
   (if (<= x 8059.235026241259)
     (* (/ 1.0 (sqrt (+ 1.0 (* x x)))) (/ x (sqrt (+ 1.0 (* x x)))))
     (* (/ 1.0 x) (- 1.0 (/ (/ 1.0 x) x))))))
double code(double x) {
	return x / ((x * x) + 1.0);
}
double code(double x) {
	double tmp;
	if (x <= -1.3314234767781347e+154) {
		tmp = 1.0 / x;
	} else if (x <= 8059.235026241259) {
		tmp = (1.0 / sqrt(1.0 + (x * x))) * (x / sqrt(1.0 + (x * x)));
	} else {
		tmp = (1.0 / x) * (1.0 - ((1.0 / x) / x));
	}
	return tmp;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

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

Alternatives

Alternative 1
Error0.0
Cost1346
\[\begin{array}{l} \mathbf{if}\;x \leq -6.886016478389994 \cdot 10^{+23}:\\ \;\;\;\;\frac{1}{x}\\ \mathbf{elif}\;x \leq 10116.622441239831:\\ \;\;\;\;\frac{x}{1 + x \cdot x}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{x} \cdot \left(1 - \frac{\frac{1}{x}}{x}\right)\\ \end{array}\]
Alternative 2
Error0.0
Cost776
\[\begin{array}{l} \mathbf{if}\;x \leq -6.886016478389994 \cdot 10^{+23} \lor \neg \left(x \leq 168600820.6981643\right):\\ \;\;\;\;\frac{1}{x}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{1 + x \cdot x}\\ \end{array}\]
Alternative 3
Error0.6
Cost520
\[\begin{array}{l} \mathbf{if}\;x \leq -0.9998958798409431 \lor \neg \left(x \leq 1.0062406200728051\right):\\ \;\;\;\;\frac{1}{x}\\ \mathbf{else}:\\ \;\;\;\;x\\ \end{array}\]
Alternative 4
Error30.6
Cost64
\[x\]
Alternative 5
Error60.6
Cost64
\[0\]
Alternative 6
Error61.5
Cost64
\[1\]

Error

Derivation

  1. Split input into 3 regimes
  2. if x < -1.3314234767781347e154

    1. Initial program 59.6

      \[\frac{x}{x \cdot x + 1}\]
    2. Taylor expanded around inf 0

      \[\leadsto \color{blue}{\frac{1}{x}}\]
    3. Simplified0

      \[\leadsto \color{blue}{\frac{1}{x}}\]

    if -1.3314234767781347e154 < x < 8059.23502624125922

    1. Initial program 0.1

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

      \[\leadsto \frac{x}{\color{blue}{\sqrt{x \cdot x + 1} \cdot \sqrt{x \cdot x + 1}}}\]
    4. Applied *-un-lft-identity_binary64_21240.1

      \[\leadsto \frac{\color{blue}{1 \cdot x}}{\sqrt{x \cdot x + 1} \cdot \sqrt{x \cdot x + 1}}\]
    5. Applied times-frac_binary64_21300.0

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

      \[\leadsto \color{blue}{\frac{1}{\sqrt{1 + x \cdot x}} \cdot \frac{x}{\sqrt{1 + x \cdot x}}}\]

    if 8059.23502624125922 < x

    1. Initial program 30.0

      \[\frac{x}{x \cdot x + 1}\]
    2. Taylor expanded around inf 0.0

      \[\leadsto \color{blue}{\frac{1}{x} - \frac{1}{{x}^{3}}}\]
    3. Simplified0.0

      \[\leadsto \color{blue}{\frac{1}{x} - {\left(\frac{1}{x}\right)}^{3}}\]
    4. Using strategy rm
    5. Applied unpow3_binary64_21900.0

      \[\leadsto \frac{1}{x} - \color{blue}{\left(\frac{1}{x} \cdot \frac{1}{x}\right) \cdot \frac{1}{x}}\]
    6. Applied *-un-lft-identity_binary64_21240.0

      \[\leadsto \frac{1}{\color{blue}{1 \cdot x}} - \left(\frac{1}{x} \cdot \frac{1}{x}\right) \cdot \frac{1}{x}\]
    7. Applied *-un-lft-identity_binary64_21240.0

      \[\leadsto \frac{\color{blue}{1 \cdot 1}}{1 \cdot x} - \left(\frac{1}{x} \cdot \frac{1}{x}\right) \cdot \frac{1}{x}\]
    8. Applied times-frac_binary64_21300.0

      \[\leadsto \color{blue}{\frac{1}{1} \cdot \frac{1}{x}} - \left(\frac{1}{x} \cdot \frac{1}{x}\right) \cdot \frac{1}{x}\]
    9. Applied distribute-rgt-out--_binary64_20780.0

      \[\leadsto \color{blue}{\frac{1}{x} \cdot \left(\frac{1}{1} - \frac{1}{x} \cdot \frac{1}{x}\right)}\]
    10. Simplified0.0

      \[\leadsto \frac{1}{x} \cdot \color{blue}{\left(1 - \frac{\frac{1}{x}}{x}\right)}\]
    11. Simplified0.0

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \leq -1.3314234767781347 \cdot 10^{+154}:\\ \;\;\;\;\frac{1}{x}\\ \mathbf{elif}\;x \leq 8059.235026241259:\\ \;\;\;\;\frac{1}{\sqrt{1 + x \cdot x}} \cdot \frac{x}{\sqrt{1 + x \cdot x}}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{x} \cdot \left(1 - \frac{\frac{1}{x}}{x}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2021044 
(FPCore (x)
  :name "x / (x^2 + 1)"
  :precision binary64

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

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