\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le -3.644056109949103 \cdot 10^{+33}:\\
\;\;\;\;\left|\frac{4 + x}{y} - x \cdot \frac{z}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{x - z \cdot x}{y} + \frac{4}{y}\right|\\
\end{array}double f(double x, double y, double z) {
double r707549 = x;
double r707550 = 4.0;
double r707551 = r707549 + r707550;
double r707552 = y;
double r707553 = r707551 / r707552;
double r707554 = r707549 / r707552;
double r707555 = z;
double r707556 = r707554 * r707555;
double r707557 = r707553 - r707556;
double r707558 = fabs(r707557);
return r707558;
}
double f(double x, double y, double z) {
double r707559 = x;
double r707560 = -3.644056109949103e+33;
bool r707561 = r707559 <= r707560;
double r707562 = 4.0;
double r707563 = r707562 + r707559;
double r707564 = y;
double r707565 = r707563 / r707564;
double r707566 = z;
double r707567 = r707566 / r707564;
double r707568 = r707559 * r707567;
double r707569 = r707565 - r707568;
double r707570 = fabs(r707569);
double r707571 = r707566 * r707559;
double r707572 = r707559 - r707571;
double r707573 = r707572 / r707564;
double r707574 = r707562 / r707564;
double r707575 = r707573 + r707574;
double r707576 = fabs(r707575);
double r707577 = r707561 ? r707570 : r707576;
return r707577;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < -3.644056109949103e+33Initial program 0.1
rmApplied div-inv0.1
Applied associate-*l*0.1
Simplified0.1
if -3.644056109949103e+33 < x Initial program 2.0
Taylor expanded around -inf 2.1
Simplified2.0
rmApplied associate-*r/2.1
Applied sub-div2.1
Final simplification1.8
herbie shell --seed 2019142 +o rules:numerics
(FPCore (x y z)
:name "fabs fraction 1"
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))