\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le -7.216452171217796070962596505139175596466 \cdot 10^{-13} \lor \neg \left(x \le 1.766269789257878071992835861687348113288 \cdot 10^{-45}\right):\\
\;\;\;\;\left|\frac{x + 4}{y} - \frac{x}{\frac{y}{z}}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{\sqrt{x + 4}}{\frac{y}{\sqrt{x + 4}}} - \frac{x \cdot z}{y}\right|\\
\end{array}double f(double x, double y, double z) {
double r38750 = x;
double r38751 = 4.0;
double r38752 = r38750 + r38751;
double r38753 = y;
double r38754 = r38752 / r38753;
double r38755 = r38750 / r38753;
double r38756 = z;
double r38757 = r38755 * r38756;
double r38758 = r38754 - r38757;
double r38759 = fabs(r38758);
return r38759;
}
double f(double x, double y, double z) {
double r38760 = x;
double r38761 = -7.216452171217796e-13;
bool r38762 = r38760 <= r38761;
double r38763 = 1.766269789257878e-45;
bool r38764 = r38760 <= r38763;
double r38765 = !r38764;
bool r38766 = r38762 || r38765;
double r38767 = 4.0;
double r38768 = r38760 + r38767;
double r38769 = y;
double r38770 = r38768 / r38769;
double r38771 = z;
double r38772 = r38769 / r38771;
double r38773 = r38760 / r38772;
double r38774 = r38770 - r38773;
double r38775 = fabs(r38774);
double r38776 = sqrt(r38768);
double r38777 = r38769 / r38776;
double r38778 = r38776 / r38777;
double r38779 = r38760 * r38771;
double r38780 = r38779 / r38769;
double r38781 = r38778 - r38780;
double r38782 = fabs(r38781);
double r38783 = r38766 ? r38775 : r38782;
return r38783;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < -7.216452171217796e-13 or 1.766269789257878e-45 < x Initial program 0.2
rmApplied *-un-lft-identity0.2
Applied *-un-lft-identity0.2
Applied times-frac0.2
Applied associate-*l*0.2
Simplified7.7
rmApplied associate-/l*0.2
if -7.216452171217796e-13 < x < 1.766269789257878e-45Initial program 2.7
rmApplied *-un-lft-identity2.7
Applied *-un-lft-identity2.7
Applied times-frac2.7
Applied associate-*l*2.7
Simplified0.1
rmApplied add-sqr-sqrt0.1
Applied associate-/l*0.1
Final simplification0.1
herbie shell --seed 2019304
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))