\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;y \le -1.032765563446886112648138640997485857612 \cdot 10^{47}:\\
\;\;\;\;\left|\frac{x + 4}{y} - x \cdot \frac{z}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{x}{y} \cdot \left(1 - z\right) + 4 \cdot \frac{1}{y}\right|\\
\end{array}double f(double x, double y, double z) {
double r28357 = x;
double r28358 = 4.0;
double r28359 = r28357 + r28358;
double r28360 = y;
double r28361 = r28359 / r28360;
double r28362 = r28357 / r28360;
double r28363 = z;
double r28364 = r28362 * r28363;
double r28365 = r28361 - r28364;
double r28366 = fabs(r28365);
return r28366;
}
double f(double x, double y, double z) {
double r28367 = y;
double r28368 = -1.0327655634468861e+47;
bool r28369 = r28367 <= r28368;
double r28370 = x;
double r28371 = 4.0;
double r28372 = r28370 + r28371;
double r28373 = r28372 / r28367;
double r28374 = z;
double r28375 = r28374 / r28367;
double r28376 = r28370 * r28375;
double r28377 = r28373 - r28376;
double r28378 = fabs(r28377);
double r28379 = r28370 / r28367;
double r28380 = 1.0;
double r28381 = r28380 - r28374;
double r28382 = r28379 * r28381;
double r28383 = r28380 / r28367;
double r28384 = r28371 * r28383;
double r28385 = r28382 + r28384;
double r28386 = fabs(r28385);
double r28387 = r28369 ? r28378 : r28386;
return r28387;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if y < -1.0327655634468861e+47Initial program 2.9
rmApplied div-inv2.9
Applied associate-*l*0.1
Simplified0.1
if -1.0327655634468861e+47 < y Initial program 1.0
Taylor expanded around 0 2.5
Simplified1.0
Final simplification0.8
herbie shell --seed 2019353
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))