\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le -0.12093481890030686:\\
\;\;\;\;\left|\mathsf{fma}\left(x, \frac{z}{-y}, \frac{x + 4}{y}\right) + \frac{z}{-y} \cdot \left(x + \left(-x\right)\right)\right|\\
\mathbf{elif}\;x \le 3.1968188028043897 \cdot 10^{47}:\\
\;\;\;\;\left|\frac{\mathsf{fma}\left(z, x, -\left(x + 4\right)\right)}{-y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{x + 4}{y} - \frac{z}{\frac{y}{x}}\right|\\
\end{array}double code(double x, double y, double z) {
return fabs((((x + 4.0) / y) - ((x / y) * z)));
}
double code(double x, double y, double z) {
double VAR;
if ((x <= -0.12093481890030686)) {
VAR = fabs((fma(x, (z / -y), ((x + 4.0) / y)) + ((z / -y) * (x + -x))));
} else {
double VAR_1;
if ((x <= 3.1968188028043897e+47)) {
VAR_1 = fabs((fma(z, x, -(x + 4.0)) / -y));
} else {
VAR_1 = fabs((((x + 4.0) / y) - (z / (y / x))));
}
VAR = VAR_1;
}
return VAR;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < -0.12093481890030686Initial program 0.1
rmApplied clear-num0.2
Applied associate-*l/0.1
Simplified0.1
rmApplied frac-2neg0.1
Applied associate-/r/0.1
Applied div-inv0.3
Applied prod-diff0.3
Simplified0.1
Simplified0.1
if -0.12093481890030686 < x < 3.1968188028043897e+47Initial program 2.4
rmApplied frac-2neg2.4
Applied associate-*l/0.2
Applied frac-2neg0.2
Applied sub-div0.2
Simplified0.2
if 3.1968188028043897e+47 < x Initial program 0.1
rmApplied clear-num0.2
Applied associate-*l/0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020071 +o rules:numerics
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))