X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-floorl-ieee.c;h=24f9b775cf1496a9dfcbc96ceeb7644dc4da6853;hb=032debd69f3b84239767c727598fb3237a3eeaca;hp=05e836e516e410a5b530c1c0855b70c843c9f44d;hpb=cb33aca29894edd6d93b61676fac09666352f610;p=gnulib.git diff --git a/tests/test-floorl-ieee.c b/tests/test-floorl-ieee.c index 05e836e51..24f9b775c 100644 --- a/tests/test-floorl-ieee.c +++ b/tests/test-floorl-ieee.c @@ -1,5 +1,5 @@ /* Test of rounding towards negative infinity. - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010-2012 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,7 +19,10 @@ #include #include "fpucw.h" +#include "isnanl-nolibm.h" #include "minus-zero.h" +#include "infinity.h" +#include "nan.h" #include "macros.h" int @@ -29,9 +32,28 @@ main () BEGIN_LONG_DOUBLE_ROUNDING (); + /* See IEEE 754, section 6.3: + "the sign of the result of the round floating-point number to + integral value operation is the sign of the operand. These rules + shall apply even when operands or results are zero or infinite." */ + /* Zero. */ ASSERT (!signbit (floorl (0.0L))); ASSERT (!!signbit (floorl (minus_zerol)) == !!signbit (minus_zerol)); + /* Positive numbers. */ + ASSERT (!signbit (floorl (0.3L))); + ASSERT (!signbit (floorl (0.7L))); + /* Negative numbers. */ + ASSERT (!!signbit (floorl (-0.3L)) == !!signbit (minus_zerol)); + ASSERT (!!signbit (floorl (-0.7L)) == !!signbit (minus_zerol)); + + /* [MX] shaded specification in POSIX. */ + + /* NaN. */ + ASSERT (isnanl (floorl (NaNl ()))); + /* Infinity. */ + ASSERT (floorl (Infinityl ()) == Infinityl ()); + ASSERT (floorl (- Infinityl ()) == - Infinityl ()); return 0; }