\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1.0}\begin{array}{l}
\mathbf{if}\;z \le -4.397554981755772 \cdot 10^{+143}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1.0}\\
\mathbf{elif}\;z \le 1.2365924477248178 \cdot 10^{+144}:\\
\;\;\;\;\frac{1}{\frac{x + 1.0}{\frac{y \cdot z - x}{t \cdot z - x} + x}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1.0}\\
\end{array}double f(double x, double y, double z, double t) {
double r12317740 = x;
double r12317741 = y;
double r12317742 = z;
double r12317743 = r12317741 * r12317742;
double r12317744 = r12317743 - r12317740;
double r12317745 = t;
double r12317746 = r12317745 * r12317742;
double r12317747 = r12317746 - r12317740;
double r12317748 = r12317744 / r12317747;
double r12317749 = r12317740 + r12317748;
double r12317750 = 1.0;
double r12317751 = r12317740 + r12317750;
double r12317752 = r12317749 / r12317751;
return r12317752;
}
double f(double x, double y, double z, double t) {
double r12317753 = z;
double r12317754 = -4.397554981755772e+143;
bool r12317755 = r12317753 <= r12317754;
double r12317756 = x;
double r12317757 = y;
double r12317758 = t;
double r12317759 = r12317757 / r12317758;
double r12317760 = r12317756 + r12317759;
double r12317761 = 1.0;
double r12317762 = r12317756 + r12317761;
double r12317763 = r12317760 / r12317762;
double r12317764 = 1.2365924477248178e+144;
bool r12317765 = r12317753 <= r12317764;
double r12317766 = 1.0;
double r12317767 = r12317757 * r12317753;
double r12317768 = r12317767 - r12317756;
double r12317769 = r12317758 * r12317753;
double r12317770 = r12317769 - r12317756;
double r12317771 = r12317768 / r12317770;
double r12317772 = r12317771 + r12317756;
double r12317773 = r12317762 / r12317772;
double r12317774 = r12317766 / r12317773;
double r12317775 = r12317765 ? r12317774 : r12317763;
double r12317776 = r12317755 ? r12317763 : r12317775;
return r12317776;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.1 |
|---|---|
| Target | 0.3 |
| Herbie | 3.2 |
if z < -4.397554981755772e+143 or 1.2365924477248178e+144 < z Initial program 21.9
Taylor expanded around inf 6.5
if -4.397554981755772e+143 < z < 1.2365924477248178e+144Initial program 2.0
rmApplied clear-num2.0
Final simplification3.2
herbie shell --seed 2019156
(FPCore (x y z t)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, A"
:herbie-target
(/ (+ x (- (/ y (- t (/ x z))) (/ x (- (* t z) x)))) (+ x 1.0))
(/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1.0)))