\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le -3.23303180311761695 \cdot 10^{88} \lor \neg \left(x \le 4.01567555002013953 \cdot 10^{-110}\right):\\
\;\;\;\;\left|\frac{x + 4}{y} - x \cdot \frac{z}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{x + 4}{y} - \left(x \cdot z\right) \cdot \frac{1}{y}\right|\\
\end{array}double f(double x, double y, double z) {
double r26341 = x;
double r26342 = 4.0;
double r26343 = r26341 + r26342;
double r26344 = y;
double r26345 = r26343 / r26344;
double r26346 = r26341 / r26344;
double r26347 = z;
double r26348 = r26346 * r26347;
double r26349 = r26345 - r26348;
double r26350 = fabs(r26349);
return r26350;
}
double f(double x, double y, double z) {
double r26351 = x;
double r26352 = -3.233031803117617e+88;
bool r26353 = r26351 <= r26352;
double r26354 = 4.0156755500201395e-110;
bool r26355 = r26351 <= r26354;
double r26356 = !r26355;
bool r26357 = r26353 || r26356;
double r26358 = 4.0;
double r26359 = r26351 + r26358;
double r26360 = y;
double r26361 = r26359 / r26360;
double r26362 = z;
double r26363 = r26362 / r26360;
double r26364 = r26351 * r26363;
double r26365 = r26361 - r26364;
double r26366 = fabs(r26365);
double r26367 = r26351 * r26362;
double r26368 = 1.0;
double r26369 = r26368 / r26360;
double r26370 = r26367 * r26369;
double r26371 = r26361 - r26370;
double r26372 = fabs(r26371);
double r26373 = r26357 ? r26366 : r26372;
return r26373;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < -3.233031803117617e+88 or 4.0156755500201395e-110 < x Initial program 0.6
rmApplied div-inv0.6
Applied associate-*l*0.8
Simplified0.7
if -3.233031803117617e+88 < x < 4.0156755500201395e-110Initial program 2.4
rmApplied div-inv2.4
Applied associate-*l*5.2
Simplified5.2
rmApplied div-inv5.2
Applied associate-*r*0.4
Final simplification0.6
herbie shell --seed 2020003
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))