\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;y \le 249476286.057907402515411376953125:\\
\;\;\;\;\left|\mathsf{fma}\left(4, \frac{1}{y}, \frac{x}{y} \cdot \left(1 - z\right)\right)\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{x + 4}{y} - x \cdot \frac{z}{y}\right|\\
\end{array}double f(double x, double y, double z) {
double r28024 = x;
double r28025 = 4.0;
double r28026 = r28024 + r28025;
double r28027 = y;
double r28028 = r28026 / r28027;
double r28029 = r28024 / r28027;
double r28030 = z;
double r28031 = r28029 * r28030;
double r28032 = r28028 - r28031;
double r28033 = fabs(r28032);
return r28033;
}
double f(double x, double y, double z) {
double r28034 = y;
double r28035 = 249476286.0579074;
bool r28036 = r28034 <= r28035;
double r28037 = 4.0;
double r28038 = 1.0;
double r28039 = r28038 / r28034;
double r28040 = x;
double r28041 = r28040 / r28034;
double r28042 = z;
double r28043 = r28038 - r28042;
double r28044 = r28041 * r28043;
double r28045 = fma(r28037, r28039, r28044);
double r28046 = fabs(r28045);
double r28047 = r28040 + r28037;
double r28048 = r28047 / r28034;
double r28049 = r28042 / r28034;
double r28050 = r28040 * r28049;
double r28051 = r28048 - r28050;
double r28052 = fabs(r28051);
double r28053 = r28036 ? r28046 : r28052;
return r28053;
}



Bits error versus x



Bits error versus y



Bits error versus z
if y < 249476286.0579074Initial program 1.1
Taylor expanded around 0 2.3
Simplified1.1
if 249476286.0579074 < y Initial program 2.6
rmApplied div-inv2.6
Applied associate-*l*0.1
Simplified0.1
Final simplification0.8
herbie shell --seed 2019362 +o rules:numerics
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))