\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le -274859649089261516357632 \lor \neg \left(x \le 1.086562483217625862476281364036535503525 \cdot 10^{-64}\right):\\
\;\;\;\;\left|\frac{x + 4}{y} - \frac{x \cdot \frac{z}{y}}{1}\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 r38329 = x;
double r38330 = 4.0;
double r38331 = r38329 + r38330;
double r38332 = y;
double r38333 = r38331 / r38332;
double r38334 = r38329 / r38332;
double r38335 = z;
double r38336 = r38334 * r38335;
double r38337 = r38333 - r38336;
double r38338 = fabs(r38337);
return r38338;
}
double f(double x, double y, double z) {
double r38339 = x;
double r38340 = -2.748596490892615e+23;
bool r38341 = r38339 <= r38340;
double r38342 = 1.0865624832176259e-64;
bool r38343 = r38339 <= r38342;
double r38344 = !r38343;
bool r38345 = r38341 || r38344;
double r38346 = 4.0;
double r38347 = r38339 + r38346;
double r38348 = y;
double r38349 = r38347 / r38348;
double r38350 = z;
double r38351 = r38350 / r38348;
double r38352 = r38339 * r38351;
double r38353 = 1.0;
double r38354 = r38352 / r38353;
double r38355 = r38349 - r38354;
double r38356 = fabs(r38355);
double r38357 = r38339 * r38350;
double r38358 = r38347 - r38357;
double r38359 = r38358 / r38348;
double r38360 = fabs(r38359);
double r38361 = r38345 ? r38356 : r38360;
return r38361;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < -2.748596490892615e+23 or 1.0865624832176259e-64 < x Initial program 0.3
rmApplied *-un-lft-identity0.3
Applied add-cube-cbrt0.7
Applied times-frac0.7
Applied associate-*l*0.7
rmApplied associate-*l/0.7
Simplified0.3
if -2.748596490892615e+23 < x < 1.0865624832176259e-64Initial program 2.8
rmApplied associate-*l/0.1
Applied sub-div0.1
Final simplification0.2
herbie shell --seed 2019346 +o rules:numerics
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))