comparison tests/test-signbit.c @ 15595:328819af1c02

Support for MSVC compiler: Avoid division by a literal 0. * lib/math.in.h (NAN): Define through a function call also on MSVC. * m4/frexp.m4 (gl_FUNC_FREXP_WORKS): Divide by 'zero' instead of 0.0. * m4/printf.m4 (gl_PRINTF_INFINITE, gl_PRINTF_DIRECTIVE_A, gl_PRINTF_DIRECTIVE_F, gl_PRINTF_FLAG_ZERO): Likewise. (gl_PRINTF_INFINITE_LONG_DOUBLE): Divide by 'zeroL' instead of 0.0L. * tests/infinity.h: New file. * tests/nan.h (NaNf, NaNd, NaNl): Define through a function call also on MSVC. * tests/test-ceilf1.c: Include infinity.h. (main): Use Infinityf. * tests/test-ceil1.c: Include infinity.h. (main): Use Infinityd. * tests/test-ceill.c: Include infinity.h. (main): Use Infinityl. * tests/test-dprintf-posix.c: Include infinity.h. (test_function): Use Infinityd. * tests/test-floorf1.c: Include infinity.h. (main): Use Infinityf. * tests/test-floor1.c: Include infinity.h. (main): Use Infinityd. * tests/test-floorl.c: Include infinity.h. (main): Use Infinityl. * tests/test-fprintf-posix.c: Include infinity.h. (test_function): Use Infinityd. * tests/test-frexp.c: Include infinity.h. (main): Use Infinityd. * tests/test-frexpl.c: Include infinity.h. (main): Use Infinityl. * tests/test-isfinite.c: Include infinity.h. (test_isfinitef): Use Infinityf. (test_isfinited): Use Infinityd. (test_isfinitel): Use Infinityl. * tests/test-isinf.c: Include infinity.h. (test_isinff): Use Infinityf. (test_isinfd): Use Infinityd. (test_isinfl): Use Infinityl. * tests/test-isnan.c: Include infinity.h. (test_float): Use Infinityf. (test_double): Use Infinityd. (test_long_double): Use Infinityl. * tests/test-isnanf.h: Include infinity.h. (main): Use Infinityf. * tests/test-isnand.h: Include infinity.h. (main): Use Infinityd. * tests/test-isnanl.h: Include infinity.h. (main): Use Infinityl. * tests/test-ldexpl.c: Include infinity.h. (main): Use Infinityl. * tests/test-printf-posix.h: Include infinity.h. (test_function): Use Infinityd. * tests/test-roundf1.c: Include infinity.h. (main): Use Infinityf. * tests/test-round1.c: Include infinity.h. (main): Use Infinityd. * tests/test-roundl.c: Include infinity.h. (main): Use Infinityl. * tests/test-signbit.c: Include infinity.h. (test_signbitf): Use Infinityf. (test_signbitd): Use Infinityd. (test_signbitl): Use Infinityl. * tests/test-snprintf-posix.h: Include infinity.h. (test_function): Use Infinityd, Infinityl. * tests/test-sprintf-posix.h: Include infinity.h. (test_function): Use Infinityd, Infinityl. * tests/test-truncf1.c: Include infinity.h. (main): Use Infinityf. * tests/test-trunc1.c: Include infinity.h. (main): Use Infinityd. * tests/test-truncl.c: Include infinity.h. (main): Use Infinityl. * tests/test-vasnprintf-posix.c: Include infinity.h. (test_function): Use Infinityd, Infinityl. * tests/test-vasprintf-posix.c: Include infinity.h. (test_function): Use Infinityd, Infinityl. * modules/ceilf-tests (Files): Add tests/infinity.h. * modules/ceil-tests (Files): Likewise. * modules/ceill-tests (Files): Likewise. * modules/dprintf-posix-tests (Files): Likewise. * modules/floorf-tests (Files): Likewise. * modules/floor-tests (Files): Likewise. * modules/floorl-tests (Files): Likewise. * modules/fprintf-posix-tests (Files): Likewise. * modules/frexp-tests (Files): Likewise. * modules/frexp-nolibm-tests (Files): Likewise. * modules/frexpl-tests (Files): Likewise. * modules/frexpl-nolibm-tests (Files): Likewise. * modules/isfinite-tests (Files): Likewise. * modules/isinf-tests (Files): Likewise. * modules/isnan-tests (Files): Likewise. * modules/isnanf-tests (Files): Likewise. * modules/isnanf-nolibm-tests (Files): Likewise. * modules/isnand-tests (Files): Likewise. * modules/isnand-nolibm-tests (Files): Likewise. * modules/isnanl-tests (Files): Likewise. * modules/isnanl-nolibm-tests (Files): Likewise. * modules/ldexpl-tests (Files): Likewise. * modules/printf-posix-tests (Files): Likewise. * modules/roundf-tests (Files): Likewise. * modules/round-tests (Files): Likewise. * modules/roundl-tests (Files): Likewise. * modules/signbit-tests (Files): Likewise. * modules/snprintf-posix-tests (Files): Likewise. * modules/sprintf-posix-tests (Files): Likewise. * modules/truncf-tests (Files): Likewise. * modules/trunc-tests (Files): Likewise. * modules/truncl-tests (Files): Likewise. * modules/vasnprintf-posix-tests (Files): Likewise. * modules/vasprintf-posix-tests (Files): Likewise. * modules/vdprintf-posix-tests (Files): Likewise. * modules/vfprintf-posix-tests (Files): Likewise. * modules/vprintf-posix-tests (Files): Likewise. * modules/vsnprintf-posix-tests (Files): Likewise. * modules/vsprintf-posix-tests (Files): Likewise. * modules/xprintf-posix-tests (Files): Likewise.
author Bruno Haible <bruno@clisp.org>
date Sun, 11 Sep 2011 17:29:11 +0200
parents 97fc9a21a8fb
children 8250f2777afc
comparison
equal deleted inserted replaced
15594:f4cfbb6036d8 15595:328819af1c02
27 27
28 #include <float.h> 28 #include <float.h>
29 #include <limits.h> 29 #include <limits.h>
30 30
31 #include "minus-zero.h" 31 #include "minus-zero.h"
32 #include "infinity.h"
32 #include "macros.h" 33 #include "macros.h"
33 34
34 float zerof = 0.0f; 35 float zerof = 0.0f;
35 double zerod = 0.0; 36 double zerod = 0.0;
36 long double zerol = 0.0L; 37 long double zerol = 0.0L;
50 if (1.0f / minus_zerof < 0) 51 if (1.0f / minus_zerof < 0)
51 ASSERT (signbit (minus_zerof)); 52 ASSERT (signbit (minus_zerof));
52 else 53 else
53 ASSERT (!signbit (minus_zerof)); 54 ASSERT (!signbit (minus_zerof));
54 /* Infinite values. */ 55 /* Infinite values. */
55 ASSERT (!signbit (1.0f / 0.0f)); 56 ASSERT (!signbit (Infinityf ()));
56 ASSERT (signbit (-1.0f / 0.0f)); 57 ASSERT (signbit (- Infinityf ()));
57 /* Quiet NaN. */ 58 /* Quiet NaN. */
58 (void) signbit (zerof / zerof); 59 (void) signbit (zerof / zerof);
59 #if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT 60 #if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
60 /* Signalling NaN. */ 61 /* Signalling NaN. */
61 { 62 {
95 if (1.0 / minus_zerod < 0) 96 if (1.0 / minus_zerod < 0)
96 ASSERT (signbit (minus_zerod)); 97 ASSERT (signbit (minus_zerod));
97 else 98 else
98 ASSERT (!signbit (minus_zerod)); 99 ASSERT (!signbit (minus_zerod));
99 /* Infinite values. */ 100 /* Infinite values. */
100 ASSERT (!signbit (1.0 / 0.0)); 101 ASSERT (!signbit (Infinityd ()));
101 ASSERT (signbit (-1.0 / 0.0)); 102 ASSERT (signbit (- Infinityd ()));
102 /* Quiet NaN. */ 103 /* Quiet NaN. */
103 (void) signbit (zerod / zerod); 104 (void) signbit (zerod / zerod);
104 #if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT 105 #if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
105 /* Signalling NaN. */ 106 /* Signalling NaN. */
106 { 107 {
138 if (1.0L / minus_zerol < 0) 139 if (1.0L / minus_zerol < 0)
139 ASSERT (signbit (minus_zerol)); 140 ASSERT (signbit (minus_zerol));
140 else 141 else
141 ASSERT (!signbit (minus_zerol)); 142 ASSERT (!signbit (minus_zerol));
142 /* Infinite values. */ 143 /* Infinite values. */
143 ASSERT (!signbit (1.0L / 0.0L)); 144 ASSERT (!signbit (Infinityl ()));
144 ASSERT (signbit (-1.0L / 0.0L)); 145 ASSERT (signbit (- Infinityl ()));
145 /* Quiet NaN. */ 146 /* Quiet NaN. */
146 (void) signbit (zerol / zerol); 147 (void) signbit (zerol / zerol);
147 #if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT 148 #if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT
148 /* Signalling NaN. */ 149 /* Signalling NaN. */
149 { 150 {