\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 1.31147958709434157 \cdot 10^{283}:\\
\;\;\;\;\frac{x + \frac{1}{\frac{t}{\frac{y \cdot z - x}{z}} - \frac{x}{y \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 r623518 = x;
double r623519 = y;
double r623520 = z;
double r623521 = r623519 * r623520;
double r623522 = r623521 - r623518;
double r623523 = t;
double r623524 = r623523 * r623520;
double r623525 = r623524 - r623518;
double r623526 = r623522 / r623525;
double r623527 = r623518 + r623526;
double r623528 = 1.0;
double r623529 = r623518 + r623528;
double r623530 = r623527 / r623529;
return r623530;
}
double f(double x, double y, double z, double t) {
double r623531 = x;
double r623532 = y;
double r623533 = z;
double r623534 = r623532 * r623533;
double r623535 = r623534 - r623531;
double r623536 = t;
double r623537 = r623536 * r623533;
double r623538 = r623537 - r623531;
double r623539 = r623535 / r623538;
double r623540 = r623531 + r623539;
double r623541 = 1.0;
double r623542 = r623531 + r623541;
double r623543 = r623540 / r623542;
double r623544 = 1.3114795870943416e+283;
bool r623545 = r623543 <= r623544;
double r623546 = 1.0;
double r623547 = r623535 / r623533;
double r623548 = r623536 / r623547;
double r623549 = r623531 / r623535;
double r623550 = r623548 - r623549;
double r623551 = r623546 / r623550;
double r623552 = r623531 + r623551;
double r623553 = r623552 / r623542;
double r623554 = r623532 / r623536;
double r623555 = r623531 + r623554;
double r623556 = r623555 / r623542;
double r623557 = r623545 ? r623553 : r623556;
return r623557;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.3 |
|---|---|
| Target | 0.4 |
| Herbie | 2.7 |
if (/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1.0)) < 1.3114795870943416e+283Initial program 2.7
rmApplied clear-num2.7
rmApplied div-sub2.7
rmApplied associate-/l*2.1
if 1.3114795870943416e+283 < (/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1.0)) Initial program 61.5
Taylor expanded around inf 9.7
Final simplification2.7
herbie shell --seed 2020039 +o rules:numerics
(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)))