\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le -1.4899595848850141 \cdot 10^{46} \lor \neg \left(x \le 2.0322004459479788 \cdot 10^{-8}\right):\\
\;\;\;\;\left|\frac{x + 4}{y} - 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 r30326 = x;
double r30327 = 4.0;
double r30328 = r30326 + r30327;
double r30329 = y;
double r30330 = r30328 / r30329;
double r30331 = r30326 / r30329;
double r30332 = z;
double r30333 = r30331 * r30332;
double r30334 = r30330 - r30333;
double r30335 = fabs(r30334);
return r30335;
}
double f(double x, double y, double z) {
double r30336 = x;
double r30337 = -1.489959584885014e+46;
bool r30338 = r30336 <= r30337;
double r30339 = 2.0322004459479788e-08;
bool r30340 = r30336 <= r30339;
double r30341 = !r30340;
bool r30342 = r30338 || r30341;
double r30343 = 4.0;
double r30344 = r30336 + r30343;
double r30345 = y;
double r30346 = r30344 / r30345;
double r30347 = z;
double r30348 = r30347 / r30345;
double r30349 = r30336 * r30348;
double r30350 = r30346 - r30349;
double r30351 = fabs(r30350);
double r30352 = r30336 * r30347;
double r30353 = r30344 - r30352;
double r30354 = r30353 / r30345;
double r30355 = fabs(r30354);
double r30356 = r30342 ? r30351 : r30355;
return r30356;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < -1.489959584885014e+46 or 2.0322004459479788e-08 < x Initial program 0.1
rmApplied div-inv0.2
Applied associate-*l*0.2
Simplified0.1
if -1.489959584885014e+46 < x < 2.0322004459479788e-08Initial program 2.4
rmApplied associate-*l/0.2
Applied sub-div0.1
Final simplification0.1
herbie shell --seed 2020043
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))