\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le 2.331683792302665078276548190002856814797 \cdot 10^{-52}:\\
\;\;\;\;\left|\frac{4 + x}{y} - \frac{z \cdot x}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\left(\frac{x}{y} + \frac{4}{y}\right) - \frac{x}{\frac{y}{z}}\right|\\
\end{array}double f(double x, double y, double z) {
double r19828 = x;
double r19829 = 4.0;
double r19830 = r19828 + r19829;
double r19831 = y;
double r19832 = r19830 / r19831;
double r19833 = r19828 / r19831;
double r19834 = z;
double r19835 = r19833 * r19834;
double r19836 = r19832 - r19835;
double r19837 = fabs(r19836);
return r19837;
}
double f(double x, double y, double z) {
double r19838 = x;
double r19839 = 2.331683792302665e-52;
bool r19840 = r19838 <= r19839;
double r19841 = 4.0;
double r19842 = r19841 + r19838;
double r19843 = y;
double r19844 = r19842 / r19843;
double r19845 = z;
double r19846 = r19845 * r19838;
double r19847 = r19846 / r19843;
double r19848 = r19844 - r19847;
double r19849 = fabs(r19848);
double r19850 = r19838 / r19843;
double r19851 = r19841 / r19843;
double r19852 = r19850 + r19851;
double r19853 = r19843 / r19845;
double r19854 = r19838 / r19853;
double r19855 = r19852 - r19854;
double r19856 = fabs(r19855);
double r19857 = r19840 ? r19849 : r19856;
return r19857;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < 2.331683792302665e-52Initial program 2.1
rmApplied associate-*l/2.3
Simplified2.3
if 2.331683792302665e-52 < x Initial program 0.3
Taylor expanded around 0 0.3
Simplified0.3
rmApplied *-un-lft-identity0.3
Applied associate-*l*0.3
Simplified0.3
Final simplification1.8
herbie shell --seed 2019174
(FPCore (x y z)
:name "fabs fraction 1"
(fabs (- (/ (+ x 4.0) y) (* (/ x y) z))))