\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;y \le -2.754055242239622748078053160024674983783 \cdot 10^{-15} \lor \neg \left(y \le 2.084993241969870167572598505114458062278 \cdot 10^{-151}\right):\\
\;\;\;\;\left|\frac{x + 4}{y} - x \cdot \frac{z}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{x + 4}{y} - \frac{x \cdot z}{y}\right|\\
\end{array}double f(double x, double y, double z) {
double r28871 = x;
double r28872 = 4.0;
double r28873 = r28871 + r28872;
double r28874 = y;
double r28875 = r28873 / r28874;
double r28876 = r28871 / r28874;
double r28877 = z;
double r28878 = r28876 * r28877;
double r28879 = r28875 - r28878;
double r28880 = fabs(r28879);
return r28880;
}
double f(double x, double y, double z) {
double r28881 = y;
double r28882 = -2.7540552422396227e-15;
bool r28883 = r28881 <= r28882;
double r28884 = 2.08499324196987e-151;
bool r28885 = r28881 <= r28884;
double r28886 = !r28885;
bool r28887 = r28883 || r28886;
double r28888 = x;
double r28889 = 4.0;
double r28890 = r28888 + r28889;
double r28891 = r28890 / r28881;
double r28892 = z;
double r28893 = r28892 / r28881;
double r28894 = r28888 * r28893;
double r28895 = r28891 - r28894;
double r28896 = fabs(r28895);
double r28897 = r28888 * r28892;
double r28898 = r28897 / r28881;
double r28899 = r28891 - r28898;
double r28900 = fabs(r28899);
double r28901 = r28887 ? r28896 : r28900;
return r28901;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if y < -2.7540552422396227e-15 or 2.08499324196987e-151 < y Initial program 2.4
rmApplied div-inv2.5
Applied associate-*l*1.0
Simplified0.9
if -2.7540552422396227e-15 < y < 2.08499324196987e-151Initial program 0.1
rmApplied *-un-lft-identity0.1
Applied *-un-lft-identity0.1
Applied times-frac0.1
Applied associate-*l*0.1
Simplified0.1
Final simplification0.7
herbie shell --seed 2019351
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))