\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;y \le 8.04631218254802011 \cdot 10^{144}:\\
\;\;\;\;\left|\frac{x + 4}{y} - \frac{x \cdot z}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{x + 4}{y} - x \cdot \frac{z}{y}\right|\\
\end{array}double f(double x, double y, double z) {
double r32114 = x;
double r32115 = 4.0;
double r32116 = r32114 + r32115;
double r32117 = y;
double r32118 = r32116 / r32117;
double r32119 = r32114 / r32117;
double r32120 = z;
double r32121 = r32119 * r32120;
double r32122 = r32118 - r32121;
double r32123 = fabs(r32122);
return r32123;
}
double f(double x, double y, double z) {
double r32124 = y;
double r32125 = 8.04631218254802e+144;
bool r32126 = r32124 <= r32125;
double r32127 = x;
double r32128 = 4.0;
double r32129 = r32127 + r32128;
double r32130 = r32129 / r32124;
double r32131 = z;
double r32132 = r32127 * r32131;
double r32133 = r32132 / r32124;
double r32134 = r32130 - r32133;
double r32135 = fabs(r32134);
double r32136 = r32131 / r32124;
double r32137 = r32127 * r32136;
double r32138 = r32130 - r32137;
double r32139 = fabs(r32138);
double r32140 = r32126 ? r32135 : r32139;
return r32140;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if y < 8.04631218254802e+144Initial program 0.9
rmApplied associate-*l/2.8
if 8.04631218254802e+144 < y Initial program 4.4
rmApplied div-inv4.4
Applied associate-*l*0.1
Simplified0.1
Final simplification2.4
herbie shell --seed 2020020 +o rules:numerics
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))