On Thu, Jan 30, 2014 at 5:41 PM, Ilya Tocar <tocarip.in...@gmail.com> wrote:
> This patch removes possible division by zero. > Make check passes. Ok for trunk? > > 2014-01-30 Ilya Tocar <ilya.to...@intel.com> > > * gcc.target/i386/m512-check.h: Use correct rounding values. > > --- > gcc/testsuite/gcc.target/i386/m512-check.h | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/gcc/testsuite/gcc.target/i386/m512-check.h > b/gcc/testsuite/gcc.target/i386/m512-check.h > index 3209039..8441784 100644 > --- a/gcc/testsuite/gcc.target/i386/m512-check.h > +++ b/gcc/testsuite/gcc.target/i386/m512-check.h > @@ -58,7 +58,8 @@ check_rough_##UINON_TYPE (UINON_TYPE u, const VALUE_TYPE > *v, \ > \ > for (i = 0; i < ARRAY_SIZE (u.a); i++) \ > { \ > - VALUE_TYPE rel_err = (u.a[i] - v[i]) / v[i]; \ > + VALUE_TYPE rel_err; \ > + rel_err = v[i] != 0 ? (u.a[i] - v[i]) / v[i] : u.a[i]; \ > if (((rel_err < 0) ? -rel_err : rel_err) > eps) \ > { \ > err++; \ We won't get zero from exponential function, so expecting zero result is flawed anyway. If we would like to introduce universal epsilon comparisons into the testsuite, then please read [1]. Being overly pedantic, the definition should be "|(v[i] - u.a[i]) / v[i]|", as stated in [2]. [1] http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/ [2] http://en.wikipedia.org/wiki/Relative_error Uros.