\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -1.6579298446565844 \cdot 10^{132} \lor \neg \left(z \le 5.5896830212737893 \cdot 10^{76}\right):\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{1}{\frac{t \cdot z - x}{y \cdot z - x}}}{x + 1}\\
\end{array}double f(double x, double y, double z, double t) {
double r710282 = x;
double r710283 = y;
double r710284 = z;
double r710285 = r710283 * r710284;
double r710286 = r710285 - r710282;
double r710287 = t;
double r710288 = r710287 * r710284;
double r710289 = r710288 - r710282;
double r710290 = r710286 / r710289;
double r710291 = r710282 + r710290;
double r710292 = 1.0;
double r710293 = r710282 + r710292;
double r710294 = r710291 / r710293;
return r710294;
}
double f(double x, double y, double z, double t) {
double r710295 = z;
double r710296 = -1.6579298446565844e+132;
bool r710297 = r710295 <= r710296;
double r710298 = 5.589683021273789e+76;
bool r710299 = r710295 <= r710298;
double r710300 = !r710299;
bool r710301 = r710297 || r710300;
double r710302 = x;
double r710303 = y;
double r710304 = t;
double r710305 = r710303 / r710304;
double r710306 = r710302 + r710305;
double r710307 = 1.0;
double r710308 = r710302 + r710307;
double r710309 = r710306 / r710308;
double r710310 = 1.0;
double r710311 = r710304 * r710295;
double r710312 = r710311 - r710302;
double r710313 = r710303 * r710295;
double r710314 = r710313 - r710302;
double r710315 = r710312 / r710314;
double r710316 = r710310 / r710315;
double r710317 = r710302 + r710316;
double r710318 = r710317 / r710308;
double r710319 = r710301 ? r710309 : r710318;
return r710319;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.5 |
|---|---|
| Target | 0.4 |
| Herbie | 3.3 |
if z < -1.6579298446565844e+132 or 5.589683021273789e+76 < z Initial program 20.5
Taylor expanded around inf 7.6
if -1.6579298446565844e+132 < z < 5.589683021273789e+76Initial program 1.3
rmApplied clear-num1.3
Final simplification3.3
herbie shell --seed 2020036
(FPCore (x y z t)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, A"
:precision binary64
:herbie-target
(/ (+ x (- (/ y (- t (/ x z))) (/ x (- (* t z) x)))) (+ x 1))
(/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1)))