\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\begin{array}{l}
\mathbf{if}\;z \le -5.165500557925722713276939801225929782816 \cdot 10^{156}:\\
\;\;\;\;\frac{t}{b} - \frac{a}{b}\\
\mathbf{elif}\;z \le 8.554770822371756506342987216437881364805 \cdot 10^{73}:\\
\;\;\;\;\frac{\mathsf{fma}\left(x, y, z \cdot \left(t - a\right)\right)}{\mathsf{fma}\left(z, b - y, y\right)}\\
\mathbf{elif}\;z \le 9.130830894406563034137670928590187187137 \cdot 10^{119} \lor \neg \left(z \le 7.562322875695318426226340712787711622372 \cdot 10^{198}\right):\\
\;\;\;\;\frac{t}{b} - \frac{a}{b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{\mathsf{fma}\left(z, b - y, y\right)}}{\frac{1}{\mathsf{fma}\left(x, y, z \cdot \left(t - a\right)\right)}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r533147 = x;
double r533148 = y;
double r533149 = r533147 * r533148;
double r533150 = z;
double r533151 = t;
double r533152 = a;
double r533153 = r533151 - r533152;
double r533154 = r533150 * r533153;
double r533155 = r533149 + r533154;
double r533156 = b;
double r533157 = r533156 - r533148;
double r533158 = r533150 * r533157;
double r533159 = r533148 + r533158;
double r533160 = r533155 / r533159;
return r533160;
}
double f(double x, double y, double z, double t, double a, double b) {
double r533161 = z;
double r533162 = -5.165500557925723e+156;
bool r533163 = r533161 <= r533162;
double r533164 = t;
double r533165 = b;
double r533166 = r533164 / r533165;
double r533167 = a;
double r533168 = r533167 / r533165;
double r533169 = r533166 - r533168;
double r533170 = 8.554770822371757e+73;
bool r533171 = r533161 <= r533170;
double r533172 = x;
double r533173 = y;
double r533174 = r533164 - r533167;
double r533175 = r533161 * r533174;
double r533176 = fma(r533172, r533173, r533175);
double r533177 = r533165 - r533173;
double r533178 = fma(r533161, r533177, r533173);
double r533179 = r533176 / r533178;
double r533180 = 9.130830894406563e+119;
bool r533181 = r533161 <= r533180;
double r533182 = 7.562322875695318e+198;
bool r533183 = r533161 <= r533182;
double r533184 = !r533183;
bool r533185 = r533181 || r533184;
double r533186 = 1.0;
double r533187 = r533186 / r533178;
double r533188 = r533186 / r533176;
double r533189 = r533187 / r533188;
double r533190 = r533185 ? r533169 : r533189;
double r533191 = r533171 ? r533179 : r533190;
double r533192 = r533163 ? r533169 : r533191;
return r533192;
}




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.5 |
|---|---|
| Target | 18.2 |
| Herbie | 19.8 |
if z < -5.165500557925723e+156 or 8.554770822371757e+73 < z < 9.130830894406563e+119 or 7.562322875695318e+198 < z Initial program 48.6
Simplified48.6
rmApplied clear-num48.6
Taylor expanded around inf 33.8
if -5.165500557925723e+156 < z < 8.554770822371757e+73Initial program 13.0
Simplified13.0
if 9.130830894406563e+119 < z < 7.562322875695318e+198Initial program 40.0
Simplified40.0
rmApplied clear-num40.1
rmApplied div-inv40.1
Applied associate-/r*40.1
Final simplification19.8
herbie shell --seed 2019305 +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)))))