\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le 2.331683792302665078276548190002856814797 \cdot 10^{-52}:\\
\;\;\;\;\left|\left(\frac{4}{y} + \frac{x}{y}\right) - \frac{x \cdot z}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\left(\frac{4}{y} + \frac{x}{y}\right) - \frac{x}{\frac{y}{z}}\right|\\
\end{array}double f(double x, double y, double z) {
double r1076756 = x;
double r1076757 = 4.0;
double r1076758 = r1076756 + r1076757;
double r1076759 = y;
double r1076760 = r1076758 / r1076759;
double r1076761 = r1076756 / r1076759;
double r1076762 = z;
double r1076763 = r1076761 * r1076762;
double r1076764 = r1076760 - r1076763;
double r1076765 = fabs(r1076764);
return r1076765;
}
double f(double x, double y, double z) {
double r1076766 = x;
double r1076767 = 2.331683792302665e-52;
bool r1076768 = r1076766 <= r1076767;
double r1076769 = 4.0;
double r1076770 = y;
double r1076771 = r1076769 / r1076770;
double r1076772 = r1076766 / r1076770;
double r1076773 = r1076771 + r1076772;
double r1076774 = z;
double r1076775 = r1076766 * r1076774;
double r1076776 = r1076775 / r1076770;
double r1076777 = r1076773 - r1076776;
double r1076778 = fabs(r1076777);
double r1076779 = r1076770 / r1076774;
double r1076780 = r1076766 / r1076779;
double r1076781 = r1076773 - r1076780;
double r1076782 = fabs(r1076781);
double r1076783 = r1076768 ? r1076778 : r1076782;
return r1076783;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < 2.331683792302665e-52Initial program 2.1
Taylor expanded around 0 2.2
Simplified2.2
rmApplied associate-*l/2.3
if 2.331683792302665e-52 < x Initial program 0.3
Taylor expanded around 0 0.3
Simplified0.3
rmApplied associate-*l/6.9
rmApplied associate-/l*0.3
Final simplification1.8
herbie shell --seed 2019174 +o rules:numerics
(FPCore (x y z)
:name "fabs fraction 1"
(fabs (- (/ (+ x 4.0) y) (* (/ x y) z))))