diff options
author | Bruno Haible <bruno@clisp.org> | 2010-12-22 16:08:29 +0100 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2010-12-22 16:08:29 +0100 |
commit | 7d056a378ac5faf9b48b85c8dffef5e85d9f0a88 (patch) | |
tree | f0d75b85df296ae704a3cc35e0183c361ebb7554 /tests/test-truncf-ieee.c | |
parent | 3be902cd0bdb566284ceb3f6fae538391da1faed (diff) | |
download | gnulib-7d056a378ac5faf9b48b85c8dffef5e85d9f0a88.tar.gz |
trunc: Implement result sign according to IEEE 754.
* lib/trunc.c (MIN, MINUS_ZERO): New macros.
(FUNC): Return +0.0 for 0 < x < 1 and -0.0 for -1 < x < 0.
* tests/test-trunc2.c: Include minus-zero.h.
(MINUS_ZERO): New macro.
(trunc_reference): Keep in sync with lib/trunc.c.
* tests/test-truncf2.c: Include minus-zero.h.
(MINUS_ZERO): New macro.
(truncf_reference): Keep in sync with lib/trunc.c.
* tests/test-truncf-ieee.c (main): Test also values between -1 and 1.
* tests/test-trunc-ieee.c (main): Likewise.
* tests/test-truncl-ieee.c (main): Likewise.
Diffstat (limited to 'tests/test-truncf-ieee.c')
-rw-r--r-- | tests/test-truncf-ieee.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/tests/test-truncf-ieee.c b/tests/test-truncf-ieee.c index c5c779ae70..76d06079e8 100644 --- a/tests/test-truncf-ieee.c +++ b/tests/test-truncf-ieee.c @@ -24,9 +24,20 @@ int main () { + /* 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 (truncf (0.0f))); ASSERT (!!signbit (truncf (minus_zerof)) == !!signbit (minus_zerof)); + /* Positive numbers. */ + ASSERT (!signbit (truncf (0.3f))); + ASSERT (!signbit (truncf (0.7f))); + /* Negative numbers. */ + ASSERT (!!signbit (truncf (-0.3f)) == !!signbit (minus_zerof)); + ASSERT (!!signbit (truncf (-0.7f)) == !!signbit (minus_zerof)); return 0; } |