\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\begin{array}{l}
\mathbf{if}\;x \le -5.761115116279560819897916091491976758654 \cdot 10^{-47}:\\
\;\;\;\;\left|\frac{x + 4}{y} - x \cdot \frac{z}{y}\right|\\
\mathbf{elif}\;x \le 2.987849844254570348767285954039240447636 \cdot 10^{-47}:\\
\;\;\;\;\left|\frac{x + 4}{y} - \left(x \cdot z\right) \cdot \frac{1}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\mathsf{fma}\left(4, \frac{1}{y}, \frac{x}{y} \cdot \left(1 - z\right)\right)\right|\\
\end{array}double f(double x, double y, double z) {
double r29782 = x;
double r29783 = 4.0;
double r29784 = r29782 + r29783;
double r29785 = y;
double r29786 = r29784 / r29785;
double r29787 = r29782 / r29785;
double r29788 = z;
double r29789 = r29787 * r29788;
double r29790 = r29786 - r29789;
double r29791 = fabs(r29790);
return r29791;
}
double f(double x, double y, double z) {
double r29792 = x;
double r29793 = -5.761115116279561e-47;
bool r29794 = r29792 <= r29793;
double r29795 = 4.0;
double r29796 = r29792 + r29795;
double r29797 = y;
double r29798 = r29796 / r29797;
double r29799 = z;
double r29800 = r29799 / r29797;
double r29801 = r29792 * r29800;
double r29802 = r29798 - r29801;
double r29803 = fabs(r29802);
double r29804 = 2.9878498442545703e-47;
bool r29805 = r29792 <= r29804;
double r29806 = r29792 * r29799;
double r29807 = 1.0;
double r29808 = r29807 / r29797;
double r29809 = r29806 * r29808;
double r29810 = r29798 - r29809;
double r29811 = fabs(r29810);
double r29812 = r29792 / r29797;
double r29813 = r29807 - r29799;
double r29814 = r29812 * r29813;
double r29815 = fma(r29795, r29808, r29814);
double r29816 = fabs(r29815);
double r29817 = r29805 ? r29811 : r29816;
double r29818 = r29794 ? r29803 : r29817;
return r29818;
}



Bits error versus x



Bits error versus y



Bits error versus z
if x < -5.761115116279561e-47Initial program 0.4
rmApplied div-inv0.4
Applied associate-*l*0.3
Simplified0.3
if -5.761115116279561e-47 < x < 2.9878498442545703e-47Initial program 3.2
rmApplied div-inv3.2
Applied associate-*l*6.6
Simplified6.6
rmApplied div-inv6.6
Applied associate-*r*0.1
if 2.9878498442545703e-47 < x Initial program 0.3
Taylor expanded around 0 7.2
Simplified0.3
Final simplification0.2
herbie shell --seed 2020002 +o rules:numerics
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4) y) (* (/ x y) z))))