\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1} \le 4.2451363091712777 \cdot 10^{183}:\\
\;\;\;\;\frac{x + \left(y \cdot z - x\right) \cdot \frac{1}{t \cdot z - 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 r486408 = x;
double r486409 = y;
double r486410 = z;
double r486411 = r486409 * r486410;
double r486412 = r486411 - r486408;
double r486413 = t;
double r486414 = r486413 * r486410;
double r486415 = r486414 - r486408;
double r486416 = r486412 / r486415;
double r486417 = r486408 + r486416;
double r486418 = 1.0;
double r486419 = r486408 + r486418;
double r486420 = r486417 / r486419;
return r486420;
}
double f(double x, double y, double z, double t) {
double r486421 = x;
double r486422 = y;
double r486423 = z;
double r486424 = r486422 * r486423;
double r486425 = r486424 - r486421;
double r486426 = t;
double r486427 = r486426 * r486423;
double r486428 = r486427 - r486421;
double r486429 = r486425 / r486428;
double r486430 = r486421 + r486429;
double r486431 = 1.0;
double r486432 = r486421 + r486431;
double r486433 = r486430 / r486432;
double r486434 = 4.2451363091712777e+183;
bool r486435 = r486433 <= r486434;
double r486436 = 1.0;
double r486437 = r486436 / r486428;
double r486438 = r486425 * r486437;
double r486439 = r486421 + r486438;
double r486440 = r486439 / r486432;
double r486441 = r486422 / r486426;
double r486442 = r486421 + r486441;
double r486443 = r486442 / r486432;
double r486444 = r486435 ? r486440 : r486443;
return r486444;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.4 |
|---|---|
| Target | 0.3 |
| Herbie | 4.0 |
if (/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1.0)) < 4.2451363091712777e+183Initial program 2.9
rmApplied div-inv2.9
if 4.2451363091712777e+183 < (/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1.0)) Initial program 50.1
Taylor expanded around inf 13.9
Final simplification4.0
herbie shell --seed 2019199
(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)))