\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{x}{y} + \frac{4}{y}\right) - \frac{x \cdot z}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\left(\frac{x}{y} + \frac{4}{y}\right) - \frac{x}{\frac{y}{z}}\right|\\
\end{array}double f(double x, double y, double z) {
double r1659557 = x;
double r1659558 = 4.0;
double r1659559 = r1659557 + r1659558;
double r1659560 = y;
double r1659561 = r1659559 / r1659560;
double r1659562 = r1659557 / r1659560;
double r1659563 = z;
double r1659564 = r1659562 * r1659563;
double r1659565 = r1659561 - r1659564;
double r1659566 = fabs(r1659565);
return r1659566;
}
double f(double x, double y, double z) {
double r1659567 = x;
double r1659568 = 2.331683792302665e-52;
bool r1659569 = r1659567 <= r1659568;
double r1659570 = y;
double r1659571 = r1659567 / r1659570;
double r1659572 = 4.0;
double r1659573 = r1659572 / r1659570;
double r1659574 = r1659571 + r1659573;
double r1659575 = z;
double r1659576 = r1659567 * r1659575;
double r1659577 = r1659576 / r1659570;
double r1659578 = r1659574 - r1659577;
double r1659579 = fabs(r1659578);
double r1659580 = r1659570 / r1659575;
double r1659581 = r1659567 / r1659580;
double r1659582 = r1659574 - r1659581;
double r1659583 = fabs(r1659582);
double r1659584 = r1659569 ? r1659579 : r1659583;
return r1659584;
}



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))))