\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.285204343974009 \cdot 10^{172} \lor \neg \left(z \le 1.6215554508775919 \cdot 10^{125}\right):\\
\;\;\;\;\frac{t}{b} - \frac{a}{b}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{\mathsf{fma}\left(z, b - y, y\right)}{\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 r686650 = x;
double r686651 = y;
double r686652 = r686650 * r686651;
double r686653 = z;
double r686654 = t;
double r686655 = a;
double r686656 = r686654 - r686655;
double r686657 = r686653 * r686656;
double r686658 = r686652 + r686657;
double r686659 = b;
double r686660 = r686659 - r686651;
double r686661 = r686653 * r686660;
double r686662 = r686651 + r686661;
double r686663 = r686658 / r686662;
return r686663;
}
double f(double x, double y, double z, double t, double a, double b) {
double r686664 = z;
double r686665 = -1.285204343974009e+172;
bool r686666 = r686664 <= r686665;
double r686667 = 1.621555450877592e+125;
bool r686668 = r686664 <= r686667;
double r686669 = !r686668;
bool r686670 = r686666 || r686669;
double r686671 = t;
double r686672 = b;
double r686673 = r686671 / r686672;
double r686674 = a;
double r686675 = r686674 / r686672;
double r686676 = r686673 - r686675;
double r686677 = 1.0;
double r686678 = y;
double r686679 = r686672 - r686678;
double r686680 = fma(r686664, r686679, r686678);
double r686681 = x;
double r686682 = r686671 - r686674;
double r686683 = r686664 * r686682;
double r686684 = fma(r686681, r686678, r686683);
double r686685 = r686680 / r686684;
double r686686 = r686677 / r686685;
double r686687 = r686670 ? r686676 : r686686;
return r686687;
}




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.8 |
|---|---|
| Target | 18.5 |
| Herbie | 19.7 |
if z < -1.285204343974009e+172 or 1.621555450877592e+125 < z Initial program 49.9
Simplified49.9
rmApplied clear-num49.9
Taylor expanded around inf 33.5
if -1.285204343974009e+172 < z < 1.621555450877592e+125Initial program 14.8
Simplified14.8
rmApplied clear-num14.9
Final simplification19.7
herbie shell --seed 2020047 +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)))))