\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -2678435.1094305497:\\
\;\;\;\;\left(\frac{1}{x} - \frac{\frac{1}{x}}{x \cdot x}\right) + \frac{1}{{x}^{5}}\\
\mathbf{elif}\;x \le 11907527.731338572:\\
\;\;\;\;\frac{x}{1 + x \cdot x}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{x} - \frac{\frac{1}{x}}{x \cdot x}\right) + \frac{1}{{x}^{5}}\\
\end{array}double f(double x) {
double r1088071 = x;
double r1088072 = r1088071 * r1088071;
double r1088073 = 1.0;
double r1088074 = r1088072 + r1088073;
double r1088075 = r1088071 / r1088074;
return r1088075;
}
double f(double x) {
double r1088076 = x;
double r1088077 = -2678435.1094305497;
bool r1088078 = r1088076 <= r1088077;
double r1088079 = 1.0;
double r1088080 = r1088079 / r1088076;
double r1088081 = r1088076 * r1088076;
double r1088082 = r1088080 / r1088081;
double r1088083 = r1088080 - r1088082;
double r1088084 = 5.0;
double r1088085 = pow(r1088076, r1088084);
double r1088086 = r1088079 / r1088085;
double r1088087 = r1088083 + r1088086;
double r1088088 = 11907527.731338572;
bool r1088089 = r1088076 <= r1088088;
double r1088090 = r1088079 + r1088081;
double r1088091 = r1088076 / r1088090;
double r1088092 = r1088089 ? r1088091 : r1088087;
double r1088093 = r1088078 ? r1088087 : r1088092;
return r1088093;
}




Bits error versus x
Results
| Original | 15.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
if x < -2678435.1094305497 or 11907527.731338572 < x Initial program 30.4
Taylor expanded around inf 0.0
Simplified0.0
if -2678435.1094305497 < x < 11907527.731338572Initial program 0.0
Final simplification0.0
herbie shell --seed 2019153
(FPCore (x)
:name "x / (x^2 + 1)"
:herbie-target
(/ 1 (+ x (/ 1 x)))
(/ x (+ (* x x) 1)))