\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;\frac{1}{x - 1} + \left(\frac{1}{x + 1} - \frac{2}{x}\right) \le -466.53243413121805:\\
\;\;\;\;\frac{1}{x - 1} + \left(\frac{1}{x + 1} - \frac{2}{x}\right)\\
\mathbf{elif}\;\frac{1}{x - 1} + \left(\frac{1}{x + 1} - \frac{2}{x}\right) \le 3.060711163327054 \cdot 10^{-07}:\\
\;\;\;\;\left(\frac{2}{{x}^{7}} + \frac{2}{{x}^{5}}\right) + \frac{\frac{2}{x \cdot x}}{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{x - 1} + \left(\frac{1}{x + 1} - \frac{2}{x}\right)\\
\end{array}double f(double x) {
double r1373192 = 1.0;
double r1373193 = x;
double r1373194 = r1373193 + r1373192;
double r1373195 = r1373192 / r1373194;
double r1373196 = 2.0;
double r1373197 = r1373196 / r1373193;
double r1373198 = r1373195 - r1373197;
double r1373199 = r1373193 - r1373192;
double r1373200 = r1373192 / r1373199;
double r1373201 = r1373198 + r1373200;
return r1373201;
}
double f(double x) {
double r1373202 = 1.0;
double r1373203 = x;
double r1373204 = r1373203 - r1373202;
double r1373205 = r1373202 / r1373204;
double r1373206 = r1373203 + r1373202;
double r1373207 = r1373202 / r1373206;
double r1373208 = 2.0;
double r1373209 = r1373208 / r1373203;
double r1373210 = r1373207 - r1373209;
double r1373211 = r1373205 + r1373210;
double r1373212 = -466.53243413121805;
bool r1373213 = r1373211 <= r1373212;
double r1373214 = 3.060711163327054e-07;
bool r1373215 = r1373211 <= r1373214;
double r1373216 = 7.0;
double r1373217 = pow(r1373203, r1373216);
double r1373218 = r1373208 / r1373217;
double r1373219 = 5.0;
double r1373220 = pow(r1373203, r1373219);
double r1373221 = r1373208 / r1373220;
double r1373222 = r1373218 + r1373221;
double r1373223 = r1373203 * r1373203;
double r1373224 = r1373208 / r1373223;
double r1373225 = r1373224 / r1373203;
double r1373226 = r1373222 + r1373225;
double r1373227 = r1373215 ? r1373226 : r1373211;
double r1373228 = r1373213 ? r1373211 : r1373227;
return r1373228;
}




Bits error versus x
Results
| Original | 9.8 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
if (+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))) < -466.53243413121805 or 3.060711163327054e-07 < (+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))) Initial program 0.0
rmApplied *-un-lft-identity0.0
Applied associate-/l*0.0
Simplified0.0
if -466.53243413121805 < (+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))) < 3.060711163327054e-07Initial program 19.5
Taylor expanded around inf 1.1
Simplified1.1
Taylor expanded around -inf 1.1
Simplified0.6
Final simplification0.3
herbie shell --seed 2019151 +o rules:numerics
(FPCore (x)
:name "3frac (problem 3.3.3)"
:herbie-target
(/ 2 (* x (- (* x x) 1)))
(+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))))