\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -2.9907923277987659 \cdot 10^{139} \lor \neg \left(z \le 3.0023821461350899 \cdot 10^{139}\right):\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \left(y \cdot z - x\right) \cdot \frac{1}{t \cdot z - x}}{x + 1}\\
\end{array}double f(double x, double y, double z, double t) {
double r623287 = x;
double r623288 = y;
double r623289 = z;
double r623290 = r623288 * r623289;
double r623291 = r623290 - r623287;
double r623292 = t;
double r623293 = r623292 * r623289;
double r623294 = r623293 - r623287;
double r623295 = r623291 / r623294;
double r623296 = r623287 + r623295;
double r623297 = 1.0;
double r623298 = r623287 + r623297;
double r623299 = r623296 / r623298;
return r623299;
}
double f(double x, double y, double z, double t) {
double r623300 = z;
double r623301 = -2.990792327798766e+139;
bool r623302 = r623300 <= r623301;
double r623303 = 3.00238214613509e+139;
bool r623304 = r623300 <= r623303;
double r623305 = !r623304;
bool r623306 = r623302 || r623305;
double r623307 = x;
double r623308 = y;
double r623309 = t;
double r623310 = r623308 / r623309;
double r623311 = r623307 + r623310;
double r623312 = 1.0;
double r623313 = r623307 + r623312;
double r623314 = r623311 / r623313;
double r623315 = r623308 * r623300;
double r623316 = r623315 - r623307;
double r623317 = 1.0;
double r623318 = r623309 * r623300;
double r623319 = r623318 - r623307;
double r623320 = r623317 / r623319;
double r623321 = r623316 * r623320;
double r623322 = r623307 + r623321;
double r623323 = r623322 / r623313;
double r623324 = r623306 ? r623314 : r623323;
return r623324;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.4 |
|---|---|
| Target | 0.4 |
| Herbie | 3.3 |
if z < -2.990792327798766e+139 or 3.00238214613509e+139 < z Initial program 22.1
Taylor expanded around inf 6.6
if -2.990792327798766e+139 < z < 3.00238214613509e+139Initial program 2.0
rmApplied div-inv2.1
Final simplification3.3
herbie shell --seed 2020021
(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)))