\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le -183289315107.79150390625 \lor \neg \left(x \le 3.117271429447084268719680709465628154511 \cdot 10^{-169}\right):\\
\;\;\;\;\left|\frac{-\left(x + 4\right)}{-y} - \frac{x}{y} \cdot z\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{\left(x + 4\right) - x \cdot z}{y}\right|\\
\end{array}double f(double x, double y, double z) {
double r34173 = x;
double r34174 = 4.0;
double r34175 = r34173 + r34174;
double r34176 = y;
double r34177 = r34175 / r34176;
double r34178 = r34173 / r34176;
double r34179 = z;
double r34180 = r34178 * r34179;
double r34181 = r34177 - r34180;
double r34182 = fabs(r34181);
return r34182;
}
double f(double x, double y, double z) {
double r34183 = x;
double r34184 = -183289315107.7915;
bool r34185 = r34183 <= r34184;
double r34186 = 3.117271429447084e-169;
bool r34187 = r34183 <= r34186;
double r34188 = !r34187;
bool r34189 = r34185 || r34188;
double r34190 = 4.0;
double r34191 = r34183 + r34190;
double r34192 = -r34191;
double r34193 = y;
double r34194 = -r34193;
double r34195 = r34192 / r34194;
double r34196 = r34183 / r34193;
double r34197 = z;
double r34198 = r34196 * r34197;
double r34199 = r34195 - r34198;
double r34200 = fabs(r34199);
double r34201 = r34183 * r34197;
double r34202 = r34191 - r34201;
double r34203 = r34202 / r34193;
double r34204 = fabs(r34203);
double r34205 = r34189 ? r34200 : r34204;
return r34205;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < -183289315107.7915 or 3.117271429447084e-169 < x Initial program 0.8
rmApplied frac-2neg0.8
if -183289315107.7915 < x < 3.117271429447084e-169Initial program 2.8
rmApplied associate-*l/0.1
Applied sub-div0.1
Final simplification0.5
herbie shell --seed 2019352 +o rules:numerics
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))