\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \leq -1.160409340095365 \cdot 10^{-34}:\\
\;\;\;\;\left|\frac{x + 4}{y} - x \cdot \left(\frac{1}{y} \cdot z\right)\right|\\
\mathbf{elif}\;x \leq 4.6080437301362304 \cdot 10^{-68}:\\
\;\;\;\;\left|\frac{1}{\frac{y}{4 + \left(x - x \cdot z\right)}}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{x + 4}{y} - x \cdot \frac{z}{y}\right|\\
\end{array}(FPCore (x y z) :precision binary64 (fabs (- (/ (+ x 4.0) y) (* (/ x y) z))))
(FPCore (x y z)
:precision binary64
(if (<= x -1.160409340095365e-34)
(fabs (- (/ (+ x 4.0) y) (* x (* (/ 1.0 y) z))))
(if (<= x 4.6080437301362304e-68)
(fabs (/ 1.0 (/ y (+ 4.0 (- x (* x z))))))
(fabs (- (/ (+ x 4.0) y) (* x (/ z y)))))))double code(double x, double y, double z) {
return fabs(((x + 4.0) / y) - ((x / y) * z));
}
double code(double x, double y, double z) {
double tmp;
if (x <= -1.160409340095365e-34) {
tmp = fabs(((x + 4.0) / y) - (x * ((1.0 / y) * z)));
} else if (x <= 4.6080437301362304e-68) {
tmp = fabs(1.0 / (y / (4.0 + (x - (x * z)))));
} else {
tmp = fabs(((x + 4.0) / y) - (x * (z / y)));
}
return tmp;
}



Bits error versus x



Bits error versus y



Bits error versus z
Results
if x < -1.16040934009536494e-34Initial program 0.2
rmApplied div-inv_binary640.3
Applied associate-*l*_binary640.4
if -1.16040934009536494e-34 < x < 4.60804373013623043e-68Initial program 2.8
Simplified0.1
rmApplied clear-num_binary640.1
Simplified0.1
if 4.60804373013623043e-68 < x Initial program 0.2
rmApplied div-inv_binary640.3
Applied associate-*l*_binary640.7
Simplified0.6
rmApplied *-un-lft-identity_binary640.6
Applied associate-/r*_binary640.6
Final simplification0.3
herbie shell --seed 2021155
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4.0) y) (* (/ x y) z))))