\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}
\begin{array}{l}
t_1 := {\left(b - y\right)}^{2}\\
t_2 := \mathsf{fma}\left(\frac{y}{b - y}, \frac{x}{z}, \mathsf{fma}\left(\frac{a}{t_1}, \frac{y}{z}, \frac{t}{b - y}\right)\right) - \mathsf{fma}\left(\frac{y}{t_1}, \frac{t}{z}, \frac{a}{b - y}\right)\\
t_3 := \mathsf{fma}\left(z, b, y\right) - z \cdot y\\
\mathbf{if}\;z \leq -1436070.5237032003:\\
\;\;\;\;t_2\\
\mathbf{elif}\;z \leq 2.906422781926676 \cdot 10^{+61}:\\
\;\;\;\;\left(\frac{z \cdot t}{\left(y + z \cdot b\right) - z \cdot y} + x \cdot \frac{y}{t_3}\right) - \frac{a}{\frac{t_3}{z}}\\
\mathbf{else}:\\
\;\;\;\;t_2\\
\end{array}
(FPCore (x y z t a b) :precision binary64 (/ (+ (* x y) (* z (- t a))) (+ y (* z (- b y)))))
(FPCore (x y z t a b)
:precision binary64
(let* ((t_1 (pow (- b y) 2.0))
(t_2
(-
(fma (/ y (- b y)) (/ x z) (fma (/ a t_1) (/ y z) (/ t (- b y))))
(fma (/ y t_1) (/ t z) (/ a (- b y)))))
(t_3 (- (fma z b y) (* z y))))
(if (<= z -1436070.5237032003)
t_2
(if (<= z 2.906422781926676e+61)
(-
(+ (/ (* z t) (- (+ y (* z b)) (* z y))) (* x (/ y t_3)))
(/ a (/ t_3 z)))
t_2))))double code(double x, double y, double z, double t, double a, double b) {
return ((x * y) + (z * (t - a))) / (y + (z * (b - y)));
}
double code(double x, double y, double z, double t, double a, double b) {
double t_1 = pow((b - y), 2.0);
double t_2 = fma((y / (b - y)), (x / z), fma((a / t_1), (y / z), (t / (b - y)))) - fma((y / t_1), (t / z), (a / (b - y)));
double t_3 = fma(z, b, y) - (z * y);
double tmp;
if (z <= -1436070.5237032003) {
tmp = t_2;
} else if (z <= 2.906422781926676e+61) {
tmp = (((z * t) / ((y + (z * b)) - (z * y))) + (x * (y / t_3))) - (a / (t_3 / z));
} else {
tmp = t_2;
}
return tmp;
}




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 | 22.8 |
|---|---|
| Target | 17.1 |
| Herbie | 2.7 |
if z < -1436070.5237032003 or 2.9064227819266759e61 < z Initial program 40.7
Simplified40.7
Taylor expanded in z around inf 22.3
Simplified3.2
if -1436070.5237032003 < z < 2.9064227819266759e61Initial program 8.9
Simplified8.9
Taylor expanded in x around 0 8.9
Applied egg-rr9.2
Applied egg-rr2.2
Applied egg-rr2.3
Final simplification2.7
herbie shell --seed 2022130
(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)))))