\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 r26564 = x;
double r26565 = 4.0;
double r26566 = r26564 + r26565;
double r26567 = y;
double r26568 = r26566 / r26567;
double r26569 = r26564 / r26567;
double r26570 = z;
double r26571 = r26569 * r26570;
double r26572 = r26568 - r26571;
double r26573 = fabs(r26572);
return r26573;
}
double f(double x, double y, double z) {
double r26574 = x;
double r26575 = -1.384698452851939e-17;
bool r26576 = r26574 <= r26575;
double r26577 = 4.1763185447825497e-35;
bool r26578 = r26574 <= r26577;
double r26579 = !r26578;
bool r26580 = r26576 || r26579;
double r26581 = 4.0;
double r26582 = y;
double r26583 = r26581 / r26582;
double r26584 = r26574 / r26582;
double r26585 = r26583 + r26584;
double r26586 = z;
double r26587 = r26586 / r26582;
double r26588 = r26574 * r26587;
double r26589 = r26585 - r26588;
double r26590 = fabs(r26589);
double r26591 = r26574 + r26581;
double r26592 = r26574 * r26586;
double r26593 = r26591 - r26592;
double r26594 = r26593 / r26582;
double r26595 = fabs(r26594);
double r26596 = r26580 ? r26590 : r26595;
return r26596;
}



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))))