\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\begin{array}{l}
\mathbf{if}\;z \le -1.42426219294870413 \cdot 10^{78}:\\
\;\;\;\;1 \cdot \left(\frac{t}{b} - \frac{a}{b}\right)\\
\mathbf{elif}\;z \le -3.533788581774126 \cdot 10^{-305}:\\
\;\;\;\;1 \cdot \frac{1}{\frac{\mathsf{fma}\left(b - y, z, y\right)}{\mathsf{fma}\left(x, y, z \cdot \left(t - a\right)\right)}}\\
\mathbf{elif}\;z \le 6.448648093686567 \cdot 10^{-244}:\\
\;\;\;\;1 \cdot x\\
\mathbf{elif}\;z \le 1.2504401644554392 \cdot 10^{144}:\\
\;\;\;\;1 \cdot \frac{1}{\frac{\mathsf{fma}\left(b - y, z, y\right)}{\mathsf{fma}\left(x, y, z \cdot \left(t - a\right)\right)}}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{t}{b} - \frac{a}{b}\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r825064 = x;
double r825065 = y;
double r825066 = r825064 * r825065;
double r825067 = z;
double r825068 = t;
double r825069 = a;
double r825070 = r825068 - r825069;
double r825071 = r825067 * r825070;
double r825072 = r825066 + r825071;
double r825073 = b;
double r825074 = r825073 - r825065;
double r825075 = r825067 * r825074;
double r825076 = r825065 + r825075;
double r825077 = r825072 / r825076;
return r825077;
}
double f(double x, double y, double z, double t, double a, double b) {
double r825078 = z;
double r825079 = -1.4242621929487041e+78;
bool r825080 = r825078 <= r825079;
double r825081 = 1.0;
double r825082 = t;
double r825083 = b;
double r825084 = r825082 / r825083;
double r825085 = a;
double r825086 = r825085 / r825083;
double r825087 = r825084 - r825086;
double r825088 = r825081 * r825087;
double r825089 = -3.533788581774126e-305;
bool r825090 = r825078 <= r825089;
double r825091 = y;
double r825092 = r825083 - r825091;
double r825093 = fma(r825092, r825078, r825091);
double r825094 = x;
double r825095 = r825082 - r825085;
double r825096 = r825078 * r825095;
double r825097 = fma(r825094, r825091, r825096);
double r825098 = r825093 / r825097;
double r825099 = r825081 / r825098;
double r825100 = r825081 * r825099;
double r825101 = 6.448648093686567e-244;
bool r825102 = r825078 <= r825101;
double r825103 = r825081 * r825094;
double r825104 = 1.2504401644554392e+144;
bool r825105 = r825078 <= r825104;
double r825106 = r825105 ? r825100 : r825088;
double r825107 = r825102 ? r825103 : r825106;
double r825108 = r825090 ? r825100 : r825107;
double r825109 = r825080 ? r825088 : r825108;
return r825109;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
| Original | 23.1 |
|---|---|
| Target | 18.0 |
| Herbie | 20.0 |
if z < -1.4242621929487041e+78 or 1.2504401644554392e+144 < z Initial program 46.1
rmApplied div-inv46.1
rmApplied *-un-lft-identity46.1
Applied associate-*l*46.1
Simplified46.1
rmApplied clear-num46.1
Taylor expanded around inf 34.3
if -1.4242621929487041e+78 < z < -3.533788581774126e-305 or 6.448648093686567e-244 < z < 1.2504401644554392e+144Initial program 12.8
rmApplied div-inv12.8
rmApplied *-un-lft-identity12.8
Applied associate-*l*12.8
Simplified12.8
rmApplied clear-num12.9
if -3.533788581774126e-305 < z < 6.448648093686567e-244Initial program 10.0
rmApplied div-inv10.1
rmApplied *-un-lft-identity10.1
Applied associate-*l*10.1
Simplified9.9
rmApplied clear-num10.1
Taylor expanded around 0 19.6
Final simplification20.0
herbie shell --seed 2020027 +o rules:numerics
(FPCore (x y z t a b)
:name "Development.Shake.Progress:decay from shake-0.15.5"
:precision binary64
:herbie-target
(- (/ (+ (* z t) (* y x)) (+ y (* z (- b y)))) (/ a (+ (- b y) (/ y z))))
(/ (+ (* x y) (* z (- t a))) (+ y (* z (- b y)))))