X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-ldexpl.c;h=5fbe35664d88cf32e3e74bf339eb99ee911c9b9b;hb=c9f0960c2cd1acf9c29b27860589698ea54fa4ec;hp=5e921f61e8e6b7001b0ddf64a6be1e278a03b90b;hpb=cf00d49188ce187174233c0a5e7bd018340a8aab;p=gnulib.git diff --git a/tests/test-ldexpl.c b/tests/test-ldexpl.c index 5e921f61e..5fbe35664 100644 --- a/tests/test-ldexpl.c +++ b/tests/test-ldexpl.c @@ -1,5 +1,5 @@ /* Test of multiplying a 'long double' by a power of 2. - Copyright (C) 2007-2011 Free Software Foundation, Inc. + Copyright (C) 2007-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 @@ -32,85 +32,29 @@ SIGNATURE_CHECK (ldexpl, long double, (long double, int)); #include "nan.h" #include "macros.h" +#undef INFINITY +#undef NAN + +#define DOUBLE long double +#define ISNAN isnanl +#define INFINITY Infinityl () +#define NAN NaNl () +#define L_(literal) literal##L +#define MINUS_ZERO minus_zerol +#define MIN_EXP LDBL_MIN_EXP +#define MAX_EXP LDBL_MAX_EXP +#define LDEXP ldexpl +#define RANDOM randoml +#include "test-ldexp.h" + int main () { - int i; - long double x; - long double y; DECL_LONG_DOUBLE_ROUNDING BEGIN_LONG_DOUBLE_ROUNDING (); - { /* NaN. */ - x = NaNl (); - y = ldexpl (x, 0); ASSERT (isnanl (y)); - y = ldexpl (x, 5); ASSERT (isnanl (y)); - y = ldexpl (x, -5); ASSERT (isnanl (y)); - } - - { /* Positive infinity. */ - x = Infinityl (); - y = ldexpl (x, 0); ASSERT (y == x); - y = ldexpl (x, 5); ASSERT (y == x); - y = ldexpl (x, -5); ASSERT (y == x); - } - - { /* Negative infinity. */ - x = - Infinityl (); - y = ldexpl (x, 0); ASSERT (y == x); - y = ldexpl (x, 5); ASSERT (y == x); - y = ldexpl (x, -5); ASSERT (y == x); - } - - { /* Positive zero. */ - x = 0.0L; - y = ldexpl (x, 0); ASSERT (y == x); ASSERT (!signbit (x)); - y = ldexpl (x, 5); ASSERT (y == x); ASSERT (!signbit (x)); - y = ldexpl (x, -5); ASSERT (y == x); ASSERT (!signbit (x)); - } - - { /* Negative zero. */ - x = minus_zerol; - y = ldexpl (x, 0); ASSERT (y == x); ASSERT (signbit (x)); - y = ldexpl (x, 5); ASSERT (y == x); ASSERT (signbit (x)); - y = ldexpl (x, -5); ASSERT (y == x); ASSERT (signbit (x)); - } - - { /* Positive finite number. */ - x = 1.73205L; - y = ldexpl (x, 0); ASSERT (y == x); - y = ldexpl (x, 5); ASSERT (y == x * 32.0L); - y = ldexpl (x, -5); ASSERT (y == x * 0.03125L); - } - - { /* Negative finite number. */ - x = -20.085536923187667742L; - y = ldexpl (x, 0); ASSERT (y == x); - y = ldexpl (x, 5); ASSERT (y == x * 32.0L); - y = ldexpl (x, -5); ASSERT (y == x * 0.03125L); - } - - for (i = 1, x = 1.73205L; i <= LDBL_MAX_EXP; i++, x *= 2.0L) - { - y = ldexpl (x, 0); ASSERT (y == x); - y = ldexpl (x, 5); ASSERT (y == x * 32.0L); - y = ldexpl (x, -5); ASSERT (y == x * 0.03125L); - } - for (i = 1, x = 1.73205L; i >= LDBL_MIN_EXP; i--, x *= 0.5L) - { - y = ldexpl (x, 0); ASSERT (y == x); - y = ldexpl (x, 5); ASSERT (y == x * 32.0L); - if (i - 5 >= LDBL_MIN_EXP) - { - y = ldexpl (x, -5); ASSERT (y == x * 0.03125L); - } - } - for (; i >= LDBL_MIN_EXP - 100 && x > 0.0L; i--, x *= 0.5L) - { - y = ldexpl (x, 0); ASSERT (y == x); - y = ldexpl (x, 5); ASSERT (y == x * 32.0L); - } + test_function (); return 0; }