\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;y \le -3.39164100029369279 \cdot 10^{-12}:\\
\;\;\;\;\left|\frac{x + 4}{y} - x \cdot \frac{z}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{x + 4}{y} - \frac{1}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \left(\frac{x}{\sqrt[3]{y}} \cdot z\right)\right|\\
\end{array}double f(double x, double y, double z) {
double r43660 = x;
double r43661 = 4.0;
double r43662 = r43660 + r43661;
double r43663 = y;
double r43664 = r43662 / r43663;
double r43665 = r43660 / r43663;
double r43666 = z;
double r43667 = r43665 * r43666;
double r43668 = r43664 - r43667;
double r43669 = fabs(r43668);
return r43669;
}
double f(double x, double y, double z) {
double r43670 = y;
double r43671 = -3.3916410002936928e-12;
bool r43672 = r43670 <= r43671;
double r43673 = x;
double r43674 = 4.0;
double r43675 = r43673 + r43674;
double r43676 = r43675 / r43670;
double r43677 = z;
double r43678 = r43677 / r43670;
double r43679 = r43673 * r43678;
double r43680 = r43676 - r43679;
double r43681 = fabs(r43680);
double r43682 = 1.0;
double r43683 = cbrt(r43670);
double r43684 = r43683 * r43683;
double r43685 = r43682 / r43684;
double r43686 = r43673 / r43683;
double r43687 = r43686 * r43677;
double r43688 = r43685 * r43687;
double r43689 = r43676 - r43688;
double r43690 = fabs(r43689);
double r43691 = r43672 ? r43681 : r43690;
return r43691;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if y < -3.3916410002936928e-12Initial program 2.8
rmApplied div-inv2.8
Applied associate-*l*0.1
Simplified0.1
if -3.3916410002936928e-12 < y Initial program 1.2
rmApplied add-cube-cbrt1.4
Applied *-un-lft-identity1.4
Applied times-frac1.4
Applied associate-*l*1.8
Final simplification1.2
herbie shell --seed 2020089 +o rules:numerics
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))