x + \frac{\left(y - x\right) \cdot z}{t}\begin{array}{l}
\mathbf{if}\;x + \frac{\left(y - x\right) \cdot z}{t} = -\infty:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{\frac{t}{y - x}}, z, x\right)\\
\mathbf{elif}\;x + \frac{\left(y - x\right) \cdot z}{t} \le 2.595832591399591 \cdot 10^{223}:\\
\;\;\;\;x + \frac{\left(y - x\right) \cdot z}{t}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{z}{t}, y, x - \frac{1}{\frac{\frac{t}{z}}{x}}\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r468538 = x;
double r468539 = y;
double r468540 = r468539 - r468538;
double r468541 = z;
double r468542 = r468540 * r468541;
double r468543 = t;
double r468544 = r468542 / r468543;
double r468545 = r468538 + r468544;
return r468545;
}
double f(double x, double y, double z, double t) {
double r468546 = x;
double r468547 = y;
double r468548 = r468547 - r468546;
double r468549 = z;
double r468550 = r468548 * r468549;
double r468551 = t;
double r468552 = r468550 / r468551;
double r468553 = r468546 + r468552;
double r468554 = -inf.0;
bool r468555 = r468553 <= r468554;
double r468556 = 1.0;
double r468557 = r468551 / r468548;
double r468558 = r468556 / r468557;
double r468559 = fma(r468558, r468549, r468546);
double r468560 = 2.595832591399591e+223;
bool r468561 = r468553 <= r468560;
double r468562 = r468549 / r468551;
double r468563 = r468551 / r468549;
double r468564 = r468563 / r468546;
double r468565 = r468556 / r468564;
double r468566 = r468546 - r468565;
double r468567 = fma(r468562, r468547, r468566);
double r468568 = r468561 ? r468553 : r468567;
double r468569 = r468555 ? r468559 : r468568;
return r468569;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 6.4 |
|---|---|
| Target | 2.1 |
| Herbie | 1.0 |
if (+ x (/ (* (- y x) z) t)) < -inf.0Initial program 64.0
Simplified0.2
rmApplied clear-num0.2
if -inf.0 < (+ x (/ (* (- y x) z) t)) < 2.595832591399591e+223Initial program 0.8
if 2.595832591399591e+223 < (+ x (/ (* (- y x) z) t)) Initial program 23.0
Simplified12.5
rmApplied div-inv12.6
Taylor expanded around 0 23.0
Simplified14.2
rmApplied associate-/l*2.4
rmApplied clear-num2.5
Final simplification1.0
herbie shell --seed 2020033 +o rules:numerics
(FPCore (x y z t)
:name "Numeric.Histogram:binBounds from Chart-1.5.3"
:precision binary64
:herbie-target
(if (< x -9.025511195533005e-135) (- x (* (/ z t) (- x y))) (if (< x 4.275032163700715e-250) (+ x (* (/ (- y x) t) z)) (+ x (/ (- y x) (/ t z)))))
(+ x (/ (* (- y x) z) t)))