\frac{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}{\left(x + t\right) + y}\begin{array}{l}
\mathbf{if}\;y \le -8.350665119324792 \cdot 10^{+143}:\\
\;\;\;\;\left(a + z\right) - b\\
\mathbf{elif}\;y \le -0.00770456067478284:\\
\;\;\;\;\frac{a \cdot \left(y + t\right) + \left(\left(x + y\right) \cdot z - y \cdot b\right)}{x + \left(y + t\right)}\\
\mathbf{elif}\;y \le -6.93026971257094 \cdot 10^{-86}:\\
\;\;\;\;\left(a + z\right) - b\\
\mathbf{elif}\;y \le 3.579931215395551 \cdot 10^{+40}:\\
\;\;\;\;\frac{a \cdot \left(y + t\right) + \left(\left(x + y\right) \cdot z - y \cdot b\right)}{x + \left(y + t\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(a + z\right) - b\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r41055777 = x;
double r41055778 = y;
double r41055779 = r41055777 + r41055778;
double r41055780 = z;
double r41055781 = r41055779 * r41055780;
double r41055782 = t;
double r41055783 = r41055782 + r41055778;
double r41055784 = a;
double r41055785 = r41055783 * r41055784;
double r41055786 = r41055781 + r41055785;
double r41055787 = b;
double r41055788 = r41055778 * r41055787;
double r41055789 = r41055786 - r41055788;
double r41055790 = r41055777 + r41055782;
double r41055791 = r41055790 + r41055778;
double r41055792 = r41055789 / r41055791;
return r41055792;
}
double f(double x, double y, double z, double t, double a, double b) {
double r41055793 = y;
double r41055794 = -8.350665119324792e+143;
bool r41055795 = r41055793 <= r41055794;
double r41055796 = a;
double r41055797 = z;
double r41055798 = r41055796 + r41055797;
double r41055799 = b;
double r41055800 = r41055798 - r41055799;
double r41055801 = -0.00770456067478284;
bool r41055802 = r41055793 <= r41055801;
double r41055803 = t;
double r41055804 = r41055793 + r41055803;
double r41055805 = r41055796 * r41055804;
double r41055806 = x;
double r41055807 = r41055806 + r41055793;
double r41055808 = r41055807 * r41055797;
double r41055809 = r41055793 * r41055799;
double r41055810 = r41055808 - r41055809;
double r41055811 = r41055805 + r41055810;
double r41055812 = r41055806 + r41055804;
double r41055813 = r41055811 / r41055812;
double r41055814 = -6.93026971257094e-86;
bool r41055815 = r41055793 <= r41055814;
double r41055816 = 3.579931215395551e+40;
bool r41055817 = r41055793 <= r41055816;
double r41055818 = r41055817 ? r41055813 : r41055800;
double r41055819 = r41055815 ? r41055800 : r41055818;
double r41055820 = r41055802 ? r41055813 : r41055819;
double r41055821 = r41055795 ? r41055800 : r41055820;
return r41055821;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 27.3 |
|---|---|
| Target | 11.7 |
| Herbie | 17.8 |
if y < -8.350665119324792e+143 or -0.00770456067478284 < y < -6.93026971257094e-86 or 3.579931215395551e+40 < y Initial program 39.7
Simplified39.7
Taylor expanded around inf 17.6
if -8.350665119324792e+143 < y < -0.00770456067478284 or -6.93026971257094e-86 < y < 3.579931215395551e+40Initial program 17.9
Simplified17.9
Final simplification17.8
herbie shell --seed 2019165
(FPCore (x y z t a b)
:name "AI.Clustering.Hierarchical.Internal:ward from clustering-0.2.1"
:herbie-target
(if (< (/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)) -3.5813117084150564e+153) (- (+ z a) b) (if (< (/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)) 1.2285964308315609e+82) (/ 1.0 (/ (+ (+ x t) y) (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)))) (- (+ z a) b)))
(/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)))