\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;y \le -7.768829658364721501136974287207896432773 \cdot 10^{128} \lor \neg \left(y \le 5.145815002744266464401609035602130947601 \cdot 10^{-163}\right):\\
\;\;\;\;\left|\frac{x + 4}{y} - x \cdot \frac{z}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{x + 4}{y} - \frac{x \cdot z}{y}\right|\\
\end{array}double f(double x, double y, double z) {
double r32720 = x;
double r32721 = 4.0;
double r32722 = r32720 + r32721;
double r32723 = y;
double r32724 = r32722 / r32723;
double r32725 = r32720 / r32723;
double r32726 = z;
double r32727 = r32725 * r32726;
double r32728 = r32724 - r32727;
double r32729 = fabs(r32728);
return r32729;
}
double f(double x, double y, double z) {
double r32730 = y;
double r32731 = -7.768829658364722e+128;
bool r32732 = r32730 <= r32731;
double r32733 = 5.1458150027442665e-163;
bool r32734 = r32730 <= r32733;
double r32735 = !r32734;
bool r32736 = r32732 || r32735;
double r32737 = x;
double r32738 = 4.0;
double r32739 = r32737 + r32738;
double r32740 = r32739 / r32730;
double r32741 = z;
double r32742 = r32741 / r32730;
double r32743 = r32737 * r32742;
double r32744 = r32740 - r32743;
double r32745 = fabs(r32744);
double r32746 = r32737 * r32741;
double r32747 = r32746 / r32730;
double r32748 = r32740 - r32747;
double r32749 = fabs(r32748);
double r32750 = r32736 ? r32745 : r32749;
return r32750;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if y < -7.768829658364722e+128 or 5.1458150027442665e-163 < y Initial program 2.5
rmApplied div-inv2.5
Applied associate-*l*1.1
Simplified1.1
if -7.768829658364722e+128 < y < 5.1458150027442665e-163Initial program 0.1
rmApplied associate-*l/0.9
Final simplification1.0
herbie shell --seed 2019323 +o rules:numerics
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))