\frac{x}{x \cdot x + 1}\begin{array}{l}
\mathbf{if}\;x \le -3416824020916.59033203125 \lor \neg \left(x \le 780.2110112890140953822992742061614990234\right):\\
\;\;\;\;\frac{1}{x} + \left(\frac{1}{{x}^{5}} - \frac{1}{{x}^{3}}\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot \frac{1}{x \cdot x + 1}\\
\end{array}double f(double x) {
double r47814 = x;
double r47815 = r47814 * r47814;
double r47816 = 1.0;
double r47817 = r47815 + r47816;
double r47818 = r47814 / r47817;
return r47818;
}
double f(double x) {
double r47819 = x;
double r47820 = -3416824020916.5903;
bool r47821 = r47819 <= r47820;
double r47822 = 780.2110112890141;
bool r47823 = r47819 <= r47822;
double r47824 = !r47823;
bool r47825 = r47821 || r47824;
double r47826 = 1.0;
double r47827 = r47826 / r47819;
double r47828 = 1.0;
double r47829 = 5.0;
double r47830 = pow(r47819, r47829);
double r47831 = r47828 / r47830;
double r47832 = 3.0;
double r47833 = pow(r47819, r47832);
double r47834 = r47828 / r47833;
double r47835 = r47831 - r47834;
double r47836 = r47827 + r47835;
double r47837 = r47819 * r47819;
double r47838 = r47837 + r47828;
double r47839 = r47826 / r47838;
double r47840 = r47819 * r47839;
double r47841 = r47825 ? r47836 : r47840;
return r47841;
}




Bits error versus x
Results
| Original | 15.5 |
|---|---|
| Target | 0.1 |
| Herbie | 0.0 |
if x < -3416824020916.5903 or 780.2110112890141 < x Initial program 31.5
Taylor expanded around inf 0.0
Simplified0.0
if -3416824020916.5903 < x < 780.2110112890141Initial program 0.0
rmApplied div-inv0.0
Final simplification0.0
herbie shell --seed 2019325
(FPCore (x)
:name "x / (x^2 + 1)"
:precision binary64
:herbie-target
(/ 1 (+ x (/ 1 x)))
(/ x (+ (* x x) 1)))