\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le 1.968897763889820057096245510304041678837 \cdot 10^{89}:\\
\;\;\;\;\left|\frac{4 + x}{y} - \frac{z \cdot x}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{4 + x}{y} - \frac{z}{y} \cdot x\right|\\
\end{array}double f(double x, double y, double z) {
double r21807 = x;
double r21808 = 4.0;
double r21809 = r21807 + r21808;
double r21810 = y;
double r21811 = r21809 / r21810;
double r21812 = r21807 / r21810;
double r21813 = z;
double r21814 = r21812 * r21813;
double r21815 = r21811 - r21814;
double r21816 = fabs(r21815);
return r21816;
}
double f(double x, double y, double z) {
double r21817 = x;
double r21818 = 1.96889776388982e+89;
bool r21819 = r21817 <= r21818;
double r21820 = 4.0;
double r21821 = r21820 + r21817;
double r21822 = y;
double r21823 = r21821 / r21822;
double r21824 = z;
double r21825 = r21824 * r21817;
double r21826 = r21825 / r21822;
double r21827 = r21823 - r21826;
double r21828 = fabs(r21827);
double r21829 = r21824 / r21822;
double r21830 = r21829 * r21817;
double r21831 = r21823 - r21830;
double r21832 = fabs(r21831);
double r21833 = r21819 ? r21828 : r21832;
return r21833;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < 1.96889776388982e+89Initial program 1.6
rmApplied associate-*l/1.9
Simplified1.9
if 1.96889776388982e+89 < x Initial program 0.1
rmApplied *-un-lft-identity0.1
rmApplied div-inv0.1
Applied associate-*l*0.1
Simplified0.1
Final simplification1.7
herbie shell --seed 2019194 +o rules:numerics
(FPCore (x y z)
:name "fabs fraction 1"
(fabs (- (/ (+ x 4.0) y) (* (/ x y) z))))