\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le -2.05718793893972162 \cdot 10^{142} \lor \neg \left(x \le 8.6806295500210938 \cdot 10^{-56}\right):\\
\;\;\;\;\left|\frac{4}{y} + \frac{x}{y} \cdot \left(1 - z\right)\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{\left(x + 4\right) - x \cdot z}{y}\right|\\
\end{array}double f(double x, double y, double z) {
double r28077 = x;
double r28078 = 4.0;
double r28079 = r28077 + r28078;
double r28080 = y;
double r28081 = r28079 / r28080;
double r28082 = r28077 / r28080;
double r28083 = z;
double r28084 = r28082 * r28083;
double r28085 = r28081 - r28084;
double r28086 = fabs(r28085);
return r28086;
}
double f(double x, double y, double z) {
double r28087 = x;
double r28088 = -2.0571879389397216e+142;
bool r28089 = r28087 <= r28088;
double r28090 = 8.680629550021094e-56;
bool r28091 = r28087 <= r28090;
double r28092 = !r28091;
bool r28093 = r28089 || r28092;
double r28094 = 4.0;
double r28095 = y;
double r28096 = r28094 / r28095;
double r28097 = r28087 / r28095;
double r28098 = 1.0;
double r28099 = z;
double r28100 = r28098 - r28099;
double r28101 = r28097 * r28100;
double r28102 = r28096 + r28101;
double r28103 = fabs(r28102);
double r28104 = r28087 + r28094;
double r28105 = r28087 * r28099;
double r28106 = r28104 - r28105;
double r28107 = r28106 / r28095;
double r28108 = fabs(r28107);
double r28109 = r28093 ? r28103 : r28108;
return r28109;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < -2.0571879389397216e+142 or 8.680629550021094e-56 < x Initial program 0.3
Taylor expanded around 0 9.2
Simplified0.3
if -2.0571879389397216e+142 < x < 8.680629550021094e-56Initial program 2.5
rmApplied associate-*l/0.8
Applied sub-div0.7
Final simplification0.6
herbie shell --seed 2019199
(FPCore (x y z)
:name "fabs fraction 1"
(fabs (- (/ (+ x 4.0) y) (* (/ x y) z))))