summaryrefslogtreecommitdiff
path: root/tests/test-truncf-ieee.c
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2010-12-22 16:08:29 +0100
committerBruno Haible <bruno@clisp.org>2010-12-22 16:08:29 +0100
commit7d056a378ac5faf9b48b85c8dffef5e85d9f0a88 (patch)
treef0d75b85df296ae704a3cc35e0183c361ebb7554 /tests/test-truncf-ieee.c
parent3be902cd0bdb566284ceb3f6fae538391da1faed (diff)
downloadgnulib-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.c11
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;
}