\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;y \le 8.04631218254802011 \cdot 10^{144}:\\
\;\;\;\;\left|\frac{x + 4}{y} - \frac{x \cdot z}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{x + 4}{y} - x \cdot \frac{z}{y}\right|\\
\end{array}double f(double x, double y, double z) {
double r31675 = x;
double r31676 = 4.0;
double r31677 = r31675 + r31676;
double r31678 = y;
double r31679 = r31677 / r31678;
double r31680 = r31675 / r31678;
double r31681 = z;
double r31682 = r31680 * r31681;
double r31683 = r31679 - r31682;
double r31684 = fabs(r31683);
return r31684;
}
double f(double x, double y, double z) {
double r31685 = y;
double r31686 = 8.04631218254802e+144;
bool r31687 = r31685 <= r31686;
double r31688 = x;
double r31689 = 4.0;
double r31690 = r31688 + r31689;
double r31691 = r31690 / r31685;
double r31692 = z;
double r31693 = r31688 * r31692;
double r31694 = r31693 / r31685;
double r31695 = r31691 - r31694;
double r31696 = fabs(r31695);
double r31697 = r31692 / r31685;
double r31698 = r31688 * r31697;
double r31699 = r31691 - r31698;
double r31700 = fabs(r31699);
double r31701 = r31687 ? r31696 : r31700;
return r31701;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if y < 8.04631218254802e+144Initial program 0.9
rmApplied associate-*l/2.8
if 8.04631218254802e+144 < y Initial program 4.4
rmApplied div-inv4.4
Applied associate-*l*0.1
Simplified0.1
Final simplification2.4
herbie shell --seed 2020020
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))