\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -4.4707659967563265 \cdot 10^{138} \lor \neg \left(z \le 8.89564883510701823 \cdot 10^{120}\right):\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{\frac{1}{t \cdot z - x}}{\frac{1}{y \cdot z - x}}}{x + 1}\\
\end{array}double f(double x, double y, double z, double t) {
double r646235 = x;
double r646236 = y;
double r646237 = z;
double r646238 = r646236 * r646237;
double r646239 = r646238 - r646235;
double r646240 = t;
double r646241 = r646240 * r646237;
double r646242 = r646241 - r646235;
double r646243 = r646239 / r646242;
double r646244 = r646235 + r646243;
double r646245 = 1.0;
double r646246 = r646235 + r646245;
double r646247 = r646244 / r646246;
return r646247;
}
double f(double x, double y, double z, double t) {
double r646248 = z;
double r646249 = -4.4707659967563265e+138;
bool r646250 = r646248 <= r646249;
double r646251 = 8.895648835107018e+120;
bool r646252 = r646248 <= r646251;
double r646253 = !r646252;
bool r646254 = r646250 || r646253;
double r646255 = x;
double r646256 = y;
double r646257 = t;
double r646258 = r646256 / r646257;
double r646259 = r646255 + r646258;
double r646260 = 1.0;
double r646261 = r646255 + r646260;
double r646262 = r646259 / r646261;
double r646263 = 1.0;
double r646264 = r646257 * r646248;
double r646265 = r646264 - r646255;
double r646266 = r646263 / r646265;
double r646267 = r646256 * r646248;
double r646268 = r646267 - r646255;
double r646269 = r646263 / r646268;
double r646270 = r646266 / r646269;
double r646271 = r646255 + r646270;
double r646272 = r646271 / r646261;
double r646273 = r646254 ? r646262 : r646272;
return r646273;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.7 |
|---|---|
| Target | 0.3 |
| Herbie | 3.6 |
if z < -4.4707659967563265e+138 or 8.895648835107018e+120 < z Initial program 21.1
Taylor expanded around inf 6.9
if -4.4707659967563265e+138 < z < 8.895648835107018e+120Initial program 2.2
rmApplied clear-num2.2
rmApplied div-inv2.2
Applied associate-/r*2.2
Final simplification3.6
herbie shell --seed 2020034
(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)))