\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le -1.38469845285193904 \cdot 10^{-17} \lor \neg \left(x \le 4.17631854478254968 \cdot 10^{-35}\right):\\
\;\;\;\;\left|\left(\frac{4}{y} + \frac{x}{y}\right) - x \cdot \frac{z}{y}\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 r26265 = x;
double r26266 = 4.0;
double r26267 = r26265 + r26266;
double r26268 = y;
double r26269 = r26267 / r26268;
double r26270 = r26265 / r26268;
double r26271 = z;
double r26272 = r26270 * r26271;
double r26273 = r26269 - r26272;
double r26274 = fabs(r26273);
return r26274;
}
double f(double x, double y, double z) {
double r26275 = x;
double r26276 = -1.384698452851939e-17;
bool r26277 = r26275 <= r26276;
double r26278 = 4.1763185447825497e-35;
bool r26279 = r26275 <= r26278;
double r26280 = !r26279;
bool r26281 = r26277 || r26280;
double r26282 = 4.0;
double r26283 = y;
double r26284 = r26282 / r26283;
double r26285 = r26275 / r26283;
double r26286 = r26284 + r26285;
double r26287 = z;
double r26288 = r26287 / r26283;
double r26289 = r26275 * r26288;
double r26290 = r26286 - r26289;
double r26291 = fabs(r26290);
double r26292 = r26275 + r26282;
double r26293 = r26275 * r26287;
double r26294 = r26292 - r26293;
double r26295 = r26294 / r26283;
double r26296 = fabs(r26295);
double r26297 = r26281 ? r26291 : r26296;
return r26297;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < -1.384698452851939e-17 or 4.1763185447825497e-35 < x Initial program 0.2
Taylor expanded around 0 0.2
Simplified0.2
rmApplied div-inv0.2
Applied associate-*l*0.3
Simplified0.3
if -1.384698452851939e-17 < x < 4.1763185447825497e-35Initial program 2.8
rmApplied associate-*l/0.1
Applied sub-div0.1
Final simplification0.1
herbie shell --seed 2020047
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))