\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;\frac{x + 4}{y} - \frac{x}{y} \cdot z \le -6.23403900926287088 \cdot 10^{81} \lor \neg \left(\frac{x + 4}{y} - \frac{x}{y} \cdot z \le 2.88731983193916299 \cdot 10^{143}\right):\\
\;\;\;\;\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\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 r29242 = x;
double r29243 = 4.0;
double r29244 = r29242 + r29243;
double r29245 = y;
double r29246 = r29244 / r29245;
double r29247 = r29242 / r29245;
double r29248 = z;
double r29249 = r29247 * r29248;
double r29250 = r29246 - r29249;
double r29251 = fabs(r29250);
return r29251;
}
double f(double x, double y, double z) {
double r29252 = x;
double r29253 = 4.0;
double r29254 = r29252 + r29253;
double r29255 = y;
double r29256 = r29254 / r29255;
double r29257 = r29252 / r29255;
double r29258 = z;
double r29259 = r29257 * r29258;
double r29260 = r29256 - r29259;
double r29261 = -6.234039009262871e+81;
bool r29262 = r29260 <= r29261;
double r29263 = 2.887319831939163e+143;
bool r29264 = r29260 <= r29263;
double r29265 = !r29264;
bool r29266 = r29262 || r29265;
double r29267 = fabs(r29260);
double r29268 = r29258 / r29255;
double r29269 = r29252 * r29268;
double r29270 = r29256 - r29269;
double r29271 = fabs(r29270);
double r29272 = r29266 ? r29267 : r29271;
return r29272;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if (- (/ (+ x 4.0) y) (* (/ x y) z)) < -6.234039009262871e+81 or 2.887319831939163e+143 < (- (/ (+ x 4.0) y) (* (/ x y) z)) Initial program 0.1
if -6.234039009262871e+81 < (- (/ (+ x 4.0) y) (* (/ x y) z)) < 2.887319831939163e+143Initial program 2.7
rmApplied div-inv2.7
Applied associate-*l*0.3
Simplified0.3
Final simplification0.2
herbie shell --seed 2020060 +o rules:numerics
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))