\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\begin{array}{l}
\mathbf{if}\;z \le -7.55495103000838965807759585637091120332 \cdot 10^{171}:\\
\;\;\;\;\frac{t}{b} - \frac{a}{b}\\
\mathbf{elif}\;z \le 2.561533282437487876095016676791252623415 \cdot 10^{94}:\\
\;\;\;\;\frac{\mathsf{fma}\left(z, t - a, y \cdot x\right)}{\mathsf{fma}\left(b - y, z, y\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{t}{b} - \frac{a}{b}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r39904447 = x;
double r39904448 = y;
double r39904449 = r39904447 * r39904448;
double r39904450 = z;
double r39904451 = t;
double r39904452 = a;
double r39904453 = r39904451 - r39904452;
double r39904454 = r39904450 * r39904453;
double r39904455 = r39904449 + r39904454;
double r39904456 = b;
double r39904457 = r39904456 - r39904448;
double r39904458 = r39904450 * r39904457;
double r39904459 = r39904448 + r39904458;
double r39904460 = r39904455 / r39904459;
return r39904460;
}
double f(double x, double y, double z, double t, double a, double b) {
double r39904461 = z;
double r39904462 = -7.55495103000839e+171;
bool r39904463 = r39904461 <= r39904462;
double r39904464 = t;
double r39904465 = b;
double r39904466 = r39904464 / r39904465;
double r39904467 = a;
double r39904468 = r39904467 / r39904465;
double r39904469 = r39904466 - r39904468;
double r39904470 = 2.561533282437488e+94;
bool r39904471 = r39904461 <= r39904470;
double r39904472 = r39904464 - r39904467;
double r39904473 = y;
double r39904474 = x;
double r39904475 = r39904473 * r39904474;
double r39904476 = fma(r39904461, r39904472, r39904475);
double r39904477 = r39904465 - r39904473;
double r39904478 = fma(r39904477, r39904461, r39904473);
double r39904479 = r39904476 / r39904478;
double r39904480 = r39904471 ? r39904479 : r39904469;
double r39904481 = r39904463 ? r39904469 : r39904480;
return r39904481;
}




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.1 |
| Herbie | 19.3 |
if z < -7.55495103000839e+171 or 2.561533282437488e+94 < z Initial program 49.1
Simplified49.1
rmApplied clear-num49.1
Taylor expanded around inf 33.8
if -7.55495103000839e+171 < z < 2.561533282437488e+94Initial program 13.7
Simplified13.7
Final simplification19.3
herbie shell --seed 2019169 +o rules:numerics
(FPCore (x y z t a b)
:name "Development.Shake.Progress:decay from shake-0.15.5"
:herbie-target
(- (/ (+ (* z t) (* y x)) (+ y (* z (- b y)))) (/ a (+ (- b y) (/ y z))))
(/ (+ (* x y) (* z (- t a))) (+ y (* z (- b y)))))