\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -1.0055170474121684:\\
\;\;\;\;\frac{2}{{x}^{5}} + \left(\frac{2}{\left(x \cdot x\right) \cdot x} + \frac{2}{{x}^{7}}\right)\\
\mathbf{elif}\;x \le 91.04565691167721:\\
\;\;\;\;\left(e^{-\log \left(1 + x\right)} - \frac{2}{x}\right) + \frac{1}{x - 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{{x}^{5}} + \left(\frac{2}{\left(x \cdot x\right) \cdot x} + \frac{2}{{x}^{7}}\right)\\
\end{array}double f(double x) {
double r3086658 = 1.0;
double r3086659 = x;
double r3086660 = r3086659 + r3086658;
double r3086661 = r3086658 / r3086660;
double r3086662 = 2.0;
double r3086663 = r3086662 / r3086659;
double r3086664 = r3086661 - r3086663;
double r3086665 = r3086659 - r3086658;
double r3086666 = r3086658 / r3086665;
double r3086667 = r3086664 + r3086666;
return r3086667;
}
double f(double x) {
double r3086668 = x;
double r3086669 = -1.0055170474121684;
bool r3086670 = r3086668 <= r3086669;
double r3086671 = 2.0;
double r3086672 = 5.0;
double r3086673 = pow(r3086668, r3086672);
double r3086674 = r3086671 / r3086673;
double r3086675 = r3086668 * r3086668;
double r3086676 = r3086675 * r3086668;
double r3086677 = r3086671 / r3086676;
double r3086678 = 7.0;
double r3086679 = pow(r3086668, r3086678);
double r3086680 = r3086671 / r3086679;
double r3086681 = r3086677 + r3086680;
double r3086682 = r3086674 + r3086681;
double r3086683 = 91.04565691167721;
bool r3086684 = r3086668 <= r3086683;
double r3086685 = 1.0;
double r3086686 = r3086685 + r3086668;
double r3086687 = log(r3086686);
double r3086688 = -r3086687;
double r3086689 = exp(r3086688);
double r3086690 = r3086671 / r3086668;
double r3086691 = r3086689 - r3086690;
double r3086692 = r3086668 - r3086685;
double r3086693 = r3086685 / r3086692;
double r3086694 = r3086691 + r3086693;
double r3086695 = r3086684 ? r3086694 : r3086682;
double r3086696 = r3086670 ? r3086682 : r3086695;
return r3086696;
}




Bits error versus x
Results
| Original | 9.4 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
if x < -1.0055170474121684 or 91.04565691167721 < x Initial program 19.0
Taylor expanded around -inf 0.7
Simplified0.7
if -1.0055170474121684 < x < 91.04565691167721Initial program 0.0
rmApplied *-un-lft-identity0.0
Applied associate-/r*0.0
Simplified0.0
rmApplied add-exp-log0.0
Applied rec-exp0.0
Final simplification0.4
herbie shell --seed 2019144
(FPCore (x)
:name "3frac (problem 3.3.3)"
:herbie-target
(/ 2 (* x (- (* x x) 1)))
(+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))))