\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\begin{array}{l}
\mathbf{if}\;z \le -3.01373759864766076 \cdot 10^{106} \lor \neg \left(z \le 9.0608695367454199 \cdot 10^{67}\right):\\
\;\;\;\;\frac{t}{b} - \frac{a}{b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{\mathsf{fma}\left(b - y, z, y\right)}}{\frac{1}{x \cdot y + z \cdot \left(t - a\right)}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r763495 = x;
double r763496 = y;
double r763497 = r763495 * r763496;
double r763498 = z;
double r763499 = t;
double r763500 = a;
double r763501 = r763499 - r763500;
double r763502 = r763498 * r763501;
double r763503 = r763497 + r763502;
double r763504 = b;
double r763505 = r763504 - r763496;
double r763506 = r763498 * r763505;
double r763507 = r763496 + r763506;
double r763508 = r763503 / r763507;
return r763508;
}
double f(double x, double y, double z, double t, double a, double b) {
double r763509 = z;
double r763510 = -3.0137375986476608e+106;
bool r763511 = r763509 <= r763510;
double r763512 = 9.06086953674542e+67;
bool r763513 = r763509 <= r763512;
double r763514 = !r763513;
bool r763515 = r763511 || r763514;
double r763516 = t;
double r763517 = b;
double r763518 = r763516 / r763517;
double r763519 = a;
double r763520 = r763519 / r763517;
double r763521 = r763518 - r763520;
double r763522 = 1.0;
double r763523 = y;
double r763524 = r763517 - r763523;
double r763525 = fma(r763524, r763509, r763523);
double r763526 = r763522 / r763525;
double r763527 = x;
double r763528 = r763527 * r763523;
double r763529 = r763516 - r763519;
double r763530 = r763509 * r763529;
double r763531 = r763528 + r763530;
double r763532 = r763522 / r763531;
double r763533 = r763526 / r763532;
double r763534 = r763515 ? r763521 : r763533;
return r763534;
}




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.6 |
|---|---|
| Target | 18.0 |
| Herbie | 19.7 |
if z < -3.0137375986476608e+106 or 9.06086953674542e+67 < z Initial program 45.6
rmApplied clear-num45.7
rmApplied div-inv45.7
Applied associate-/r*45.7
Simplified45.7
Taylor expanded around inf 34.1
if -3.0137375986476608e+106 < z < 9.06086953674542e+67Initial program 11.5
rmApplied clear-num11.6
rmApplied div-inv11.8
Applied associate-/r*11.7
Simplified11.7
Final simplification19.7
herbie shell --seed 2020036 +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)))))