x + \frac{\left(y - x\right) \cdot z}{t}\begin{array}{l}
\mathbf{if}\;x + \frac{\left(y - x\right) \cdot z}{t} = -\infty:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z}{t}\\
\mathbf{elif}\;x + \frac{\left(y - x\right) \cdot z}{t} \le 1.34935661525439967 \cdot 10^{112}:\\
\;\;\;\;x + \frac{\left(y - x\right) \cdot z}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y - x}{\frac{t}{z}}\\
\end{array}double f(double x, double y, double z, double t) {
double r657610 = x;
double r657611 = y;
double r657612 = r657611 - r657610;
double r657613 = z;
double r657614 = r657612 * r657613;
double r657615 = t;
double r657616 = r657614 / r657615;
double r657617 = r657610 + r657616;
return r657617;
}
double f(double x, double y, double z, double t) {
double r657618 = x;
double r657619 = y;
double r657620 = r657619 - r657618;
double r657621 = z;
double r657622 = r657620 * r657621;
double r657623 = t;
double r657624 = r657622 / r657623;
double r657625 = r657618 + r657624;
double r657626 = -inf.0;
bool r657627 = r657625 <= r657626;
double r657628 = r657621 / r657623;
double r657629 = r657620 * r657628;
double r657630 = r657618 + r657629;
double r657631 = 1.3493566152543997e+112;
bool r657632 = r657625 <= r657631;
double r657633 = r657623 / r657621;
double r657634 = r657620 / r657633;
double r657635 = r657618 + r657634;
double r657636 = r657632 ? r657625 : r657635;
double r657637 = r657627 ? r657630 : r657636;
return r657637;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.5 |
|---|---|
| Target | 2.0 |
| Herbie | 1.3 |
if (+ x (/ (* (- y x) z) t)) < -inf.0Initial program 64.0
rmApplied *-un-lft-identity64.0
Applied times-frac0.2
Simplified0.2
if -inf.0 < (+ x (/ (* (- y x) z) t)) < 1.3493566152543997e+112Initial program 1.0
if 1.3493566152543997e+112 < (+ x (/ (* (- y x) z) t)) Initial program 12.1
rmApplied associate-/l*2.4
Final simplification1.3
herbie shell --seed 2020035
(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)))