\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le -2.4444603965533054 \cdot 10^{117} \lor \neg \left(x \le 7.43806599639702096 \cdot 10^{-140}\right):\\
\;\;\;\;\left|\frac{x + 4}{y} - x \cdot \frac{z}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{\left(x + 4\right) - x \cdot z}{y}\right|\\
\end{array}double f(double x, double y, double z) {
double r26717 = x;
double r26718 = 4.0;
double r26719 = r26717 + r26718;
double r26720 = y;
double r26721 = r26719 / r26720;
double r26722 = r26717 / r26720;
double r26723 = z;
double r26724 = r26722 * r26723;
double r26725 = r26721 - r26724;
double r26726 = fabs(r26725);
return r26726;
}
double f(double x, double y, double z) {
double r26727 = x;
double r26728 = -2.4444603965533054e+117;
bool r26729 = r26727 <= r26728;
double r26730 = 7.438065996397021e-140;
bool r26731 = r26727 <= r26730;
double r26732 = !r26731;
bool r26733 = r26729 || r26732;
double r26734 = 4.0;
double r26735 = r26727 + r26734;
double r26736 = y;
double r26737 = r26735 / r26736;
double r26738 = z;
double r26739 = r26738 / r26736;
double r26740 = r26727 * r26739;
double r26741 = r26737 - r26740;
double r26742 = fabs(r26741);
double r26743 = r26727 * r26738;
double r26744 = r26735 - r26743;
double r26745 = r26744 / r26736;
double r26746 = fabs(r26745);
double r26747 = r26733 ? r26742 : r26746;
return r26747;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < -2.4444603965533054e+117 or 7.438065996397021e-140 < x Initial program 0.8
rmApplied div-inv0.9
Applied associate-*l*1.0
Simplified1.0
if -2.4444603965533054e+117 < x < 7.438065996397021e-140Initial program 2.6
rmApplied associate-*l/0.7
Applied sub-div0.7
Final simplification0.8
herbie shell --seed 2020046 +o rules:numerics
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))