\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le -6.359236426285955 \cdot 10^{-86}:\\
\;\;\;\;\left|\left(\frac{4}{y} + \frac{x}{y}\right) - \frac{x}{y} \cdot z\right|\\
\mathbf{elif}\;x \le 2.6596617673403336 \cdot 10^{-59}:\\
\;\;\;\;\left|\frac{\left(4 + x\right) - x \cdot z}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\left(\frac{4}{y} + \frac{x}{y}\right) - x \cdot \frac{z}{y}\right|\\
\end{array}double f(double x, double y, double z) {
double r892884 = x;
double r892885 = 4.0;
double r892886 = r892884 + r892885;
double r892887 = y;
double r892888 = r892886 / r892887;
double r892889 = r892884 / r892887;
double r892890 = z;
double r892891 = r892889 * r892890;
double r892892 = r892888 - r892891;
double r892893 = fabs(r892892);
return r892893;
}
double f(double x, double y, double z) {
double r892894 = x;
double r892895 = -6.359236426285955e-86;
bool r892896 = r892894 <= r892895;
double r892897 = 4.0;
double r892898 = y;
double r892899 = r892897 / r892898;
double r892900 = r892894 / r892898;
double r892901 = r892899 + r892900;
double r892902 = z;
double r892903 = r892900 * r892902;
double r892904 = r892901 - r892903;
double r892905 = fabs(r892904);
double r892906 = 2.6596617673403336e-59;
bool r892907 = r892894 <= r892906;
double r892908 = r892897 + r892894;
double r892909 = r892894 * r892902;
double r892910 = r892908 - r892909;
double r892911 = r892910 / r892898;
double r892912 = fabs(r892911);
double r892913 = r892902 / r892898;
double r892914 = r892894 * r892913;
double r892915 = r892901 - r892914;
double r892916 = fabs(r892915);
double r892917 = r892907 ? r892912 : r892916;
double r892918 = r892896 ? r892905 : r892917;
return r892918;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < -6.359236426285955e-86Initial program 0.7
Taylor expanded around 0 0.7
Simplified0.7
if -6.359236426285955e-86 < x < 2.6596617673403336e-59Initial program 3.0
rmApplied associate-*l/0.1
Applied sub-div0.1
if 2.6596617673403336e-59 < x Initial program 0.3
Taylor expanded around 0 0.3
Simplified0.3
rmApplied div-inv0.3
Applied associate-*l*0.4
Simplified0.4
Final simplification0.3
herbie shell --seed 2019130
(FPCore (x y z)
:name "fabs fraction 1"
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))