x + \frac{\left(y - x\right) \cdot z}{t}\begin{array}{l}
\mathbf{if}\;x \le -8.197251181992450336177184911706312715011 \cdot 10^{-110} \lor \neg \left(x \le 1.163685728587467934538355368329212838924 \cdot 10^{-252}\right):\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z}{t}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(y - x\right) \cdot z}{t} + x\\
\end{array}double f(double x, double y, double z, double t) {
double r379540 = x;
double r379541 = y;
double r379542 = r379541 - r379540;
double r379543 = z;
double r379544 = r379542 * r379543;
double r379545 = t;
double r379546 = r379544 / r379545;
double r379547 = r379540 + r379546;
return r379547;
}
double f(double x, double y, double z, double t) {
double r379548 = x;
double r379549 = -8.19725118199245e-110;
bool r379550 = r379548 <= r379549;
double r379551 = 1.163685728587468e-252;
bool r379552 = r379548 <= r379551;
double r379553 = !r379552;
bool r379554 = r379550 || r379553;
double r379555 = y;
double r379556 = r379555 - r379548;
double r379557 = z;
double r379558 = t;
double r379559 = r379557 / r379558;
double r379560 = r379556 * r379559;
double r379561 = r379548 + r379560;
double r379562 = r379556 * r379557;
double r379563 = r379562 / r379558;
double r379564 = r379563 + r379548;
double r379565 = r379554 ? r379561 : r379564;
return r379565;
}




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.9 |
if x < -8.19725118199245e-110 or 1.163685728587468e-252 < x Initial program 7.0
rmApplied *-un-lft-identity7.0
Applied times-frac1.2
Simplified1.2
if -8.19725118199245e-110 < x < 1.163685728587468e-252Initial program 4.5
rmApplied *-un-lft-identity4.5
Final simplification1.9
herbie shell --seed 2019305
(FPCore (x y z t)
:name "Numeric.Histogram:binBounds from Chart-1.5.3"
:precision binary64
:herbie-target
(if (< x -9.0255111955330046e-135) (- x (* (/ z t) (- x y))) (if (< x 4.2750321637007147e-250) (+ x (* (/ (- y x) t) z)) (+ x (/ (- y x) (/ t z)))))
(+ x (/ (* (- y x) z) t)))