\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le -2.1618774464985056 \cdot 10^{+63}:\\
\;\;\;\;\left|\left(\frac{4}{y} + \frac{x}{y}\right) - \frac{x}{y} \cdot z\right|\\
\mathbf{elif}\;x \le 3.5037736689937804 \cdot 10^{-122}:\\
\;\;\;\;\left|\frac{\left(4 + x\right) - x \cdot z}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\left(\frac{4}{y} + \frac{x}{y}\right) - \frac{x}{y} \cdot z\right|\\
\end{array}double f(double x, double y, double z) {
double r1232639 = x;
double r1232640 = 4.0;
double r1232641 = r1232639 + r1232640;
double r1232642 = y;
double r1232643 = r1232641 / r1232642;
double r1232644 = r1232639 / r1232642;
double r1232645 = z;
double r1232646 = r1232644 * r1232645;
double r1232647 = r1232643 - r1232646;
double r1232648 = fabs(r1232647);
return r1232648;
}
double f(double x, double y, double z) {
double r1232649 = x;
double r1232650 = -2.1618774464985056e+63;
bool r1232651 = r1232649 <= r1232650;
double r1232652 = 4.0;
double r1232653 = y;
double r1232654 = r1232652 / r1232653;
double r1232655 = r1232649 / r1232653;
double r1232656 = r1232654 + r1232655;
double r1232657 = z;
double r1232658 = r1232655 * r1232657;
double r1232659 = r1232656 - r1232658;
double r1232660 = fabs(r1232659);
double r1232661 = 3.5037736689937804e-122;
bool r1232662 = r1232649 <= r1232661;
double r1232663 = r1232652 + r1232649;
double r1232664 = r1232649 * r1232657;
double r1232665 = r1232663 - r1232664;
double r1232666 = r1232665 / r1232653;
double r1232667 = fabs(r1232666);
double r1232668 = r1232662 ? r1232667 : r1232660;
double r1232669 = r1232651 ? r1232660 : r1232668;
return r1232669;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < -2.1618774464985056e+63 or 3.5037736689937804e-122 < x Initial program 0.4
Taylor expanded around 0 0.5
Simplified0.5
if -2.1618774464985056e+63 < x < 3.5037736689937804e-122Initial program 2.3
rmApplied associate-*l/0.3
Applied sub-div0.3
Final simplification0.4
herbie shell --seed 2019152 +o rules:numerics
(FPCore (x y z)
:name "fabs fraction 1"
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))