\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le -2.1618774464985056 \cdot 10^{+63}:\\
\;\;\;\;\left|\frac{4}{y} - \left(\frac{x}{y} \cdot z - \frac{x}{y}\right)\right|\\
\mathbf{elif}\;x \le 3.5037736689937804 \cdot 10^{-122}:\\
\;\;\;\;\left|\frac{\left(4 + x\right) - x \cdot z}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{4}{y} - \left(\frac{x}{y} \cdot z - \frac{x}{y}\right)\right|\\
\end{array}double f(double x, double y, double z) {
double r875776 = x;
double r875777 = 4.0;
double r875778 = r875776 + r875777;
double r875779 = y;
double r875780 = r875778 / r875779;
double r875781 = r875776 / r875779;
double r875782 = z;
double r875783 = r875781 * r875782;
double r875784 = r875780 - r875783;
double r875785 = fabs(r875784);
return r875785;
}
double f(double x, double y, double z) {
double r875786 = x;
double r875787 = -2.1618774464985056e+63;
bool r875788 = r875786 <= r875787;
double r875789 = 4.0;
double r875790 = y;
double r875791 = r875789 / r875790;
double r875792 = r875786 / r875790;
double r875793 = z;
double r875794 = r875792 * r875793;
double r875795 = r875794 - r875792;
double r875796 = r875791 - r875795;
double r875797 = fabs(r875796);
double r875798 = 3.5037736689937804e-122;
bool r875799 = r875786 <= r875798;
double r875800 = r875789 + r875786;
double r875801 = r875786 * r875793;
double r875802 = r875800 - r875801;
double r875803 = r875802 / r875790;
double r875804 = fabs(r875803);
double r875805 = r875799 ? r875804 : r875797;
double r875806 = r875788 ? r875797 : r875805;
return r875806;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < -2.1618774464985056e+63 or 3.5037736689937804e-122 < x Initial program 0.4
Taylor expanded around 0 6.1
Simplified0.5
if -2.1618774464985056e+63 < x < 3.5037736689937804e-122Initial program 2.3
rmApplied associate-*l/0.3
Applied sub-div0.3
Final simplification0.4
herbie shell --seed 2019152
(FPCore (x y z)
:name "fabs fraction 1"
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))