\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -2.36168448188679443 \cdot 10^{-174}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{y}{t \cdot z - x}, z, x\right)}{\left(x + 1\right) \cdot 1} - \frac{\frac{x}{t \cdot z - x}}{x + 1}\\
\mathbf{elif}\;z \le 5.84421128900095789 \cdot 10^{44}:\\
\;\;\;\;\frac{x + \frac{1}{\frac{t \cdot z - x}{\mathsf{fma}\left(y, z, -x\right)}}}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\end{array}double f(double x, double y, double z, double t) {
double r656389 = x;
double r656390 = y;
double r656391 = z;
double r656392 = r656390 * r656391;
double r656393 = r656392 - r656389;
double r656394 = t;
double r656395 = r656394 * r656391;
double r656396 = r656395 - r656389;
double r656397 = r656393 / r656396;
double r656398 = r656389 + r656397;
double r656399 = 1.0;
double r656400 = r656389 + r656399;
double r656401 = r656398 / r656400;
return r656401;
}
double f(double x, double y, double z, double t) {
double r656402 = z;
double r656403 = -2.3616844818867944e-174;
bool r656404 = r656402 <= r656403;
double r656405 = y;
double r656406 = t;
double r656407 = r656406 * r656402;
double r656408 = x;
double r656409 = r656407 - r656408;
double r656410 = r656405 / r656409;
double r656411 = fma(r656410, r656402, r656408);
double r656412 = 1.0;
double r656413 = r656408 + r656412;
double r656414 = 1.0;
double r656415 = r656413 * r656414;
double r656416 = r656411 / r656415;
double r656417 = r656408 / r656409;
double r656418 = r656417 / r656413;
double r656419 = r656416 - r656418;
double r656420 = 5.844211289000958e+44;
bool r656421 = r656402 <= r656420;
double r656422 = -r656408;
double r656423 = fma(r656405, r656402, r656422);
double r656424 = r656409 / r656423;
double r656425 = r656414 / r656424;
double r656426 = r656408 + r656425;
double r656427 = r656426 / r656413;
double r656428 = r656405 / r656406;
double r656429 = r656408 + r656428;
double r656430 = r656429 / r656413;
double r656431 = r656421 ? r656427 : r656430;
double r656432 = r656404 ? r656419 : r656431;
return r656432;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 7.3 |
|---|---|
| Target | 0.3 |
| Herbie | 3.5 |
if z < -2.3616844818867944e-174Initial program 9.5
rmApplied div-sub9.5
Applied associate-+r-9.5
Applied div-sub9.5
Simplified3.8
if -2.3616844818867944e-174 < z < 5.844211289000958e+44Initial program 0.4
rmApplied fma-neg0.4
rmApplied clear-num0.4
if 5.844211289000958e+44 < z Initial program 17.0
Taylor expanded around inf 9.0
Final simplification3.5
herbie shell --seed 2020081 +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)))