\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 r963454 = x;
double r963455 = 4.0;
double r963456 = r963454 + r963455;
double r963457 = y;
double r963458 = r963456 / r963457;
double r963459 = r963454 / r963457;
double r963460 = z;
double r963461 = r963459 * r963460;
double r963462 = r963458 - r963461;
double r963463 = fabs(r963462);
return r963463;
}
double f(double x, double y, double z) {
double r963464 = x;
double r963465 = -1.492066452799628e+60;
bool r963466 = r963464 <= r963465;
double r963467 = 4.0;
double r963468 = r963467 + r963464;
double r963469 = y;
double r963470 = r963468 / r963469;
double r963471 = z;
double r963472 = r963471 / r963469;
double r963473 = r963464 * r963472;
double r963474 = r963470 - r963473;
double r963475 = fabs(r963474);
double r963476 = r963471 * r963464;
double r963477 = r963468 - r963476;
double r963478 = r963477 / r963469;
double r963479 = fabs(r963478);
double r963480 = r963466 ? r963475 : r963479;
return r963480;
}



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
(FPCore (x y z)
:name "fabs fraction 1"
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))