\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;y \le -2.720264343127334 \cdot 10^{-40}:\\
\;\;\;\;\left|\frac{x + 4}{y} - \frac{z}{y} \cdot x\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{x + 4}{y} - \frac{1}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \left(z \cdot \frac{x}{\sqrt[3]{y}}\right)\right|\\
\end{array}double f(double x, double y, double z) {
double r890717 = x;
double r890718 = 4.0;
double r890719 = r890717 + r890718;
double r890720 = y;
double r890721 = r890719 / r890720;
double r890722 = r890717 / r890720;
double r890723 = z;
double r890724 = r890722 * r890723;
double r890725 = r890721 - r890724;
double r890726 = fabs(r890725);
return r890726;
}
double f(double x, double y, double z) {
double r890727 = y;
double r890728 = -2.720264343127334e-40;
bool r890729 = r890727 <= r890728;
double r890730 = x;
double r890731 = 4.0;
double r890732 = r890730 + r890731;
double r890733 = r890732 / r890727;
double r890734 = z;
double r890735 = r890734 / r890727;
double r890736 = r890735 * r890730;
double r890737 = r890733 - r890736;
double r890738 = fabs(r890737);
double r890739 = 1.0;
double r890740 = cbrt(r890727);
double r890741 = r890740 * r890740;
double r890742 = r890739 / r890741;
double r890743 = r890730 / r890740;
double r890744 = r890734 * r890743;
double r890745 = r890742 * r890744;
double r890746 = r890733 - r890745;
double r890747 = fabs(r890746);
double r890748 = r890729 ? r890738 : r890747;
return r890748;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if y < -2.720264343127334e-40Initial program 2.3
rmApplied div-inv2.3
Applied associate-*l*0.2
Simplified0.2
if -2.720264343127334e-40 < y Initial program 1.3
rmApplied add-cube-cbrt1.5
Applied *-un-lft-identity1.5
Applied times-frac1.5
Applied associate-*l*1.7
Final simplification1.2
herbie shell --seed 2019133
(FPCore (x y z)
:name "fabs fraction 1"
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))