x + \frac{\left(y - x\right) \cdot z}{t}\begin{array}{l}
\mathbf{if}\;x + \frac{\left(y - x\right) \cdot z}{t} \le -4.088818265683742099563857037862035463705 \cdot 10^{255}:\\
\;\;\;\;x + \frac{y - x}{\frac{t}{z}}\\
\mathbf{elif}\;x + \frac{\left(y - x\right) \cdot z}{t} \le 1.816763390681394691313189929250285209119 \cdot 10^{242}:\\
\;\;\;\;x + \frac{\left(y - x\right) \cdot z}{t}\\
\mathbf{else}:\\
\;\;\;\;\frac{z}{t} \cdot \left(y - x\right) + x\\
\end{array}double f(double x, double y, double z, double t) {
double r23915565 = x;
double r23915566 = y;
double r23915567 = r23915566 - r23915565;
double r23915568 = z;
double r23915569 = r23915567 * r23915568;
double r23915570 = t;
double r23915571 = r23915569 / r23915570;
double r23915572 = r23915565 + r23915571;
return r23915572;
}
double f(double x, double y, double z, double t) {
double r23915573 = x;
double r23915574 = y;
double r23915575 = r23915574 - r23915573;
double r23915576 = z;
double r23915577 = r23915575 * r23915576;
double r23915578 = t;
double r23915579 = r23915577 / r23915578;
double r23915580 = r23915573 + r23915579;
double r23915581 = -4.088818265683742e+255;
bool r23915582 = r23915580 <= r23915581;
double r23915583 = r23915578 / r23915576;
double r23915584 = r23915575 / r23915583;
double r23915585 = r23915573 + r23915584;
double r23915586 = 1.8167633906813947e+242;
bool r23915587 = r23915580 <= r23915586;
double r23915588 = r23915576 / r23915578;
double r23915589 = r23915588 * r23915575;
double r23915590 = r23915589 + r23915573;
double r23915591 = r23915587 ? r23915580 : r23915590;
double r23915592 = r23915582 ? r23915585 : r23915591;
return r23915592;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.6 |
|---|---|
| Target | 2.1 |
| Herbie | 1.3 |
if (+ x (/ (* (- y x) z) t)) < -4.088818265683742e+255Initial program 31.0
rmApplied associate-/l*2.5
if -4.088818265683742e+255 < (+ x (/ (* (- y x) z) t)) < 1.8167633906813947e+242Initial program 0.9
if 1.8167633906813947e+242 < (+ x (/ (* (- y x) z) t)) Initial program 25.1
rmApplied *-un-lft-identity25.1
Applied times-frac3.1
Simplified3.1
Final simplification1.3
herbie shell --seed 2019170
(FPCore (x y z t)
:name "Numeric.Histogram:binBounds from Chart-1.5.3"
: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)))