\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le -1.492066452799628 \cdot 10^{+60}:\\
\;\;\;\;\left|\frac{4 + x}{y} - x \cdot \frac{z}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{\left(4 + x\right) - z \cdot x}{y}\right|\\
\end{array}double f(double x, double y, double z) {
double r862234 = x;
double r862235 = 4.0;
double r862236 = r862234 + r862235;
double r862237 = y;
double r862238 = r862236 / r862237;
double r862239 = r862234 / r862237;
double r862240 = z;
double r862241 = r862239 * r862240;
double r862242 = r862238 - r862241;
double r862243 = fabs(r862242);
return r862243;
}
double f(double x, double y, double z) {
double r862244 = x;
double r862245 = -1.492066452799628e+60;
bool r862246 = r862244 <= r862245;
double r862247 = 4.0;
double r862248 = r862247 + r862244;
double r862249 = y;
double r862250 = r862248 / r862249;
double r862251 = z;
double r862252 = r862251 / r862249;
double r862253 = r862244 * r862252;
double r862254 = r862250 - r862253;
double r862255 = fabs(r862254);
double r862256 = r862251 * r862244;
double r862257 = r862248 - r862256;
double r862258 = r862257 / r862249;
double r862259 = fabs(r862258);
double r862260 = r862246 ? r862255 : r862259;
return r862260;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < -1.492066452799628e+60Initial program 0.1
rmApplied div-inv0.2
Applied associate-*l*0.2
Simplified0.1
if -1.492066452799628e+60 < x Initial program 1.9
rmApplied associate-*l/1.7
Applied sub-div1.7
Final simplification1.5
herbie shell --seed 2019164 +o rules:numerics
(FPCore (x y z)
:name "fabs fraction 1"
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))