\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -5.48299927335239672 \cdot 10^{83} \lor \neg \left(z \le 1.42013895838381203 \cdot 10^{77}\right):\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{x + 1}{x + \frac{1}{\frac{t \cdot z - x}{y \cdot z - x}}}}\\
\end{array}double f(double x, double y, double z, double t) {
double r698435 = x;
double r698436 = y;
double r698437 = z;
double r698438 = r698436 * r698437;
double r698439 = r698438 - r698435;
double r698440 = t;
double r698441 = r698440 * r698437;
double r698442 = r698441 - r698435;
double r698443 = r698439 / r698442;
double r698444 = r698435 + r698443;
double r698445 = 1.0;
double r698446 = r698435 + r698445;
double r698447 = r698444 / r698446;
return r698447;
}
double f(double x, double y, double z, double t) {
double r698448 = z;
double r698449 = -5.482999273352397e+83;
bool r698450 = r698448 <= r698449;
double r698451 = 1.420138958383812e+77;
bool r698452 = r698448 <= r698451;
double r698453 = !r698452;
bool r698454 = r698450 || r698453;
double r698455 = x;
double r698456 = y;
double r698457 = t;
double r698458 = r698456 / r698457;
double r698459 = r698455 + r698458;
double r698460 = 1.0;
double r698461 = r698455 + r698460;
double r698462 = r698459 / r698461;
double r698463 = 1.0;
double r698464 = r698457 * r698448;
double r698465 = r698464 - r698455;
double r698466 = r698456 * r698448;
double r698467 = r698466 - r698455;
double r698468 = r698465 / r698467;
double r698469 = r698463 / r698468;
double r698470 = r698455 + r698469;
double r698471 = r698461 / r698470;
double r698472 = r698463 / r698471;
double r698473 = r698454 ? r698462 : r698472;
return r698473;
}




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.6 |
if z < -5.482999273352397e+83 or 1.420138958383812e+77 < z Initial program 18.8
Taylor expanded around inf 8.1
if -5.482999273352397e+83 < z < 1.420138958383812e+77Initial program 0.9
rmApplied clear-num0.9
rmApplied clear-num0.9
Final simplification3.6
herbie shell --seed 2020018
(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)))