\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le -1.177271937169595483422970684993734880398 \cdot 10^{-17} \lor \neg \left(x \le 3.980546299544918028958510427590163807717 \cdot 10^{-38}\right):\\
\;\;\;\;\left|\frac{4 + x}{y} - \frac{x}{\frac{y}{z}}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{\left(4 - z \cdot x\right) + x}{y}\right|\\
\end{array}double f(double x, double y, double z) {
double r25290 = x;
double r25291 = 4.0;
double r25292 = r25290 + r25291;
double r25293 = y;
double r25294 = r25292 / r25293;
double r25295 = r25290 / r25293;
double r25296 = z;
double r25297 = r25295 * r25296;
double r25298 = r25294 - r25297;
double r25299 = fabs(r25298);
return r25299;
}
double f(double x, double y, double z) {
double r25300 = x;
double r25301 = -1.1772719371695955e-17;
bool r25302 = r25300 <= r25301;
double r25303 = 3.980546299544918e-38;
bool r25304 = r25300 <= r25303;
double r25305 = !r25304;
bool r25306 = r25302 || r25305;
double r25307 = 4.0;
double r25308 = r25307 + r25300;
double r25309 = y;
double r25310 = r25308 / r25309;
double r25311 = z;
double r25312 = r25309 / r25311;
double r25313 = r25300 / r25312;
double r25314 = r25310 - r25313;
double r25315 = fabs(r25314);
double r25316 = r25311 * r25300;
double r25317 = r25307 - r25316;
double r25318 = r25317 + r25300;
double r25319 = r25318 / r25309;
double r25320 = fabs(r25319);
double r25321 = r25306 ? r25315 : r25320;
return r25321;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < -1.1772719371695955e-17 or 3.980546299544918e-38 < x Initial program 0.2
Taylor expanded around 0 8.8
Simplified0.2
Taylor expanded around 0 8.8
Simplified0.2
if -1.1772719371695955e-17 < x < 3.980546299544918e-38Initial program 3.3
rmApplied associate-*l/0.1
Applied sub-div0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019196
(FPCore (x y z)
:name "fabs fraction 1"
(fabs (- (/ (+ x 4.0) y) (* (/ x y) z))))