\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -7.466575650945099720574707422047672473328 \cdot 10^{79}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\mathbf{elif}\;z \le 8.602497059991938743425250288839984899656 \cdot 10^{114}:\\
\;\;\;\;\frac{\frac{\frac{1}{t \cdot z - x}}{\frac{1}{y \cdot z - x}} + x}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\end{array}double f(double x, double y, double z, double t) {
double r31604098 = x;
double r31604099 = y;
double r31604100 = z;
double r31604101 = r31604099 * r31604100;
double r31604102 = r31604101 - r31604098;
double r31604103 = t;
double r31604104 = r31604103 * r31604100;
double r31604105 = r31604104 - r31604098;
double r31604106 = r31604102 / r31604105;
double r31604107 = r31604098 + r31604106;
double r31604108 = 1.0;
double r31604109 = r31604098 + r31604108;
double r31604110 = r31604107 / r31604109;
return r31604110;
}
double f(double x, double y, double z, double t) {
double r31604111 = z;
double r31604112 = -7.4665756509451e+79;
bool r31604113 = r31604111 <= r31604112;
double r31604114 = x;
double r31604115 = y;
double r31604116 = t;
double r31604117 = r31604115 / r31604116;
double r31604118 = r31604114 + r31604117;
double r31604119 = 1.0;
double r31604120 = r31604114 + r31604119;
double r31604121 = r31604118 / r31604120;
double r31604122 = 8.602497059991939e+114;
bool r31604123 = r31604111 <= r31604122;
double r31604124 = 1.0;
double r31604125 = r31604116 * r31604111;
double r31604126 = r31604125 - r31604114;
double r31604127 = r31604124 / r31604126;
double r31604128 = r31604115 * r31604111;
double r31604129 = r31604128 - r31604114;
double r31604130 = r31604124 / r31604129;
double r31604131 = r31604127 / r31604130;
double r31604132 = r31604131 + r31604114;
double r31604133 = r31604132 / r31604120;
double r31604134 = r31604123 ? r31604133 : r31604121;
double r31604135 = r31604113 ? r31604121 : r31604134;
return r31604135;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.4 |
|---|---|
| Target | 0.3 |
| Herbie | 3.4 |
if z < -7.4665756509451e+79 or 8.602497059991939e+114 < z Initial program 19.4
Taylor expanded around inf 7.5
if -7.4665756509451e+79 < z < 8.602497059991939e+114Initial program 1.3
rmApplied clear-num1.3
rmApplied div-inv1.4
Applied associate-/r*1.3
Final simplification3.4
herbie shell --seed 2019170
(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)))