\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -119.33625820905594:\\
\;\;\;\;\frac{\frac{2}{x}}{x \cdot x} + \left(\frac{2}{{x}^{7}} + \frac{2}{{x}^{5}}\right)\\
\mathbf{elif}\;x \le 142.15019730768176:\\
\;\;\;\;\frac{\mathsf{fma}\left(\left(x - 2 \cdot \left(1 + x\right)\right), \left(x - 1\right), \left(x \cdot \left(1 + x\right)\right)\right)}{\left(x - 1\right) \cdot \left(x \cdot \left(1 + x\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{2}{{x}^{7}} + \frac{2}{{x}^{5}}\right) + \frac{2}{\left(x \cdot x\right) \cdot x}\\
\end{array}double f(double x) {
double r3787786 = 1.0;
double r3787787 = x;
double r3787788 = r3787787 + r3787786;
double r3787789 = r3787786 / r3787788;
double r3787790 = 2.0;
double r3787791 = r3787790 / r3787787;
double r3787792 = r3787789 - r3787791;
double r3787793 = r3787787 - r3787786;
double r3787794 = r3787786 / r3787793;
double r3787795 = r3787792 + r3787794;
return r3787795;
}
double f(double x) {
double r3787796 = x;
double r3787797 = -119.33625820905594;
bool r3787798 = r3787796 <= r3787797;
double r3787799 = 2.0;
double r3787800 = r3787799 / r3787796;
double r3787801 = r3787796 * r3787796;
double r3787802 = r3787800 / r3787801;
double r3787803 = 7.0;
double r3787804 = pow(r3787796, r3787803);
double r3787805 = r3787799 / r3787804;
double r3787806 = 5.0;
double r3787807 = pow(r3787796, r3787806);
double r3787808 = r3787799 / r3787807;
double r3787809 = r3787805 + r3787808;
double r3787810 = r3787802 + r3787809;
double r3787811 = 142.15019730768176;
bool r3787812 = r3787796 <= r3787811;
double r3787813 = 1.0;
double r3787814 = r3787813 + r3787796;
double r3787815 = r3787799 * r3787814;
double r3787816 = r3787796 - r3787815;
double r3787817 = r3787796 - r3787813;
double r3787818 = r3787796 * r3787814;
double r3787819 = fma(r3787816, r3787817, r3787818);
double r3787820 = r3787817 * r3787818;
double r3787821 = r3787819 / r3787820;
double r3787822 = r3787801 * r3787796;
double r3787823 = r3787799 / r3787822;
double r3787824 = r3787809 + r3787823;
double r3787825 = r3787812 ? r3787821 : r3787824;
double r3787826 = r3787798 ? r3787810 : r3787825;
return r3787826;
}




Bits error versus x
| Original | 9.8 |
|---|---|
| Target | 0.3 |
| Herbie | 0.2 |
if x < -119.33625820905594Initial program 19.2
Taylor expanded around inf 0.7
Simplified0.7
Taylor expanded around -inf 0.7
Simplified0.1
if -119.33625820905594 < x < 142.15019730768176Initial program 0.0
rmApplied frac-sub0.1
Applied frac-add0.0
Simplified0.1
if 142.15019730768176 < x Initial program 20.2
Taylor expanded around inf 0.5
Simplified0.5
Final simplification0.2
herbie shell --seed 2019130 +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))))