\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -4.421382369170155130731583160593546099285 \cdot 10^{-19}:\\
\;\;\;\;\frac{1}{\frac{x + 1}{\mathsf{fma}\left(\frac{y}{t \cdot z - x}, z, x\right) - \frac{x}{t \cdot z - x}}}\\
\mathbf{elif}\;z \le 1.97282994797409377245095636957005033742 \cdot 10^{102}:\\
\;\;\;\;\frac{x + \frac{1}{\frac{t \cdot z - 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 r378573 = x;
double r378574 = y;
double r378575 = z;
double r378576 = r378574 * r378575;
double r378577 = r378576 - r378573;
double r378578 = t;
double r378579 = r378578 * r378575;
double r378580 = r378579 - r378573;
double r378581 = r378577 / r378580;
double r378582 = r378573 + r378581;
double r378583 = 1.0;
double r378584 = r378573 + r378583;
double r378585 = r378582 / r378584;
return r378585;
}
double f(double x, double y, double z, double t) {
double r378586 = z;
double r378587 = -4.421382369170155e-19;
bool r378588 = r378586 <= r378587;
double r378589 = 1.0;
double r378590 = x;
double r378591 = 1.0;
double r378592 = r378590 + r378591;
double r378593 = y;
double r378594 = t;
double r378595 = r378594 * r378586;
double r378596 = r378595 - r378590;
double r378597 = r378593 / r378596;
double r378598 = fma(r378597, r378586, r378590);
double r378599 = r378590 / r378596;
double r378600 = r378598 - r378599;
double r378601 = r378592 / r378600;
double r378602 = r378589 / r378601;
double r378603 = 1.9728299479740938e+102;
bool r378604 = r378586 <= r378603;
double r378605 = r378593 * r378586;
double r378606 = r378605 - r378590;
double r378607 = r378596 / r378606;
double r378608 = r378589 / r378607;
double r378609 = r378590 + r378608;
double r378610 = r378609 / r378592;
double r378611 = r378593 / r378594;
double r378612 = r378590 + r378611;
double r378613 = r378612 / r378592;
double r378614 = r378604 ? r378610 : r378613;
double r378615 = r378588 ? r378602 : r378614;
return r378615;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 7.2 |
|---|---|
| Target | 0.3 |
| Herbie | 3.0 |
if z < -4.421382369170155e-19Initial program 14.1
rmApplied div-sub14.1
Applied associate-+r-14.1
Simplified4.8
rmApplied clear-num4.9
if -4.421382369170155e-19 < z < 1.9728299479740938e+102Initial program 0.8
rmApplied clear-num0.8
if 1.9728299479740938e+102 < z Initial program 18.8
Taylor expanded around inf 7.9
Final simplification3.0
herbie shell --seed 2019304 +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)))