Mercurial > hg > octave-nkf > gnulib-hg
comparison tests/test-frexp.c @ 13834:108bbfd6f03b
frexp, tests: work around ICC bug with -zero
* m4/frexp.m4 (gl_FUNC_FREXP_WORKS): Compute -0.0 in a way that
works with more compilers.
* tests/minus-zero.h: New file.
* modules/ceilf-tests (Files): Include it.
* modules/ceill-tests (Files): Likewise.
* modules/floorf-tests (Files): Likewise.
* modules/floorl-tests (Files): Likewise.
* modules/frexp-nolibm-tests (Files): Likewise.
* modules/frexp-tests (Files): Likewise.
* modules/frexpl-nolibm-tests (Files): Likewise.
* modules/frexpl-tests (Files): Likewise.
* modules/isnan-tests (Files): Likewise.
* modules/isnand-nolibm-tests (Files): Likewise.
* modules/isnand-tests (Files): Likewise.
* modules/isnanf-nolibm-tests (Files): Likewise.
* modules/isnanf-tests (Files): Likewise.
* modules/isnanl-nolibm-tests (Files): Likewise.
* modules/isnanl-tests (Files): Likewise.
* modules/round-tests (Files): Likewise.
* modules/roundf-tests (Files): Likewise.
* modules/roundl-tests (Files): Likewise.
* modules/ldexpl-tests (Files): Likewise.
* modules/signbit-tests (Files): Likewise.
* modules/snprintf-posix-tests (Files): Likewise.
* modules/sprintf-posix-tests (Files): Likewise.
* modules/strtod-tests (Files): Likewise.
* modules/trunc-tests (Files): Likewise.
* modules/truncf-tests (Files): Likewise.
* modules/truncl-tests (Files): Likewise.
* modules/vsnprintf-posix-tests (Files): Likewise.
* modules/vsprintf-posix-tests (Files): Likewise.
* modules/vasnprintf-posix-tests (Files): Likewise.
* modules/vasprintf-posix-tests (Files): Likewise.
* tests/test-ceilf1.c (main): Use it.
* tests/test-ceill.c (main): Likewise.
* tests/test-floorf1.c (main): Likewise.
* tests/test-floorl.c (main): Likewise.
* tests/test-frexp.c (main): Likewise.
* tests/test-frexpl.c (main): Likewise.
* tests/test-isnan.c (main): Likewise.
* tests/test-isnand.h (main): Likewise.
* tests/test-isnanf.h (main): Likewise.
* tests/test-isnanl.h (main): Likewise.
* tests/test-ldexpl.c (main): Likewise.
* tests/test-round.c (main): Likewise.
* tests/test-roundf.c (main): Likewise.
* tests/test-roundl.c (main): Likewise.
* tests/test-signbit.c (test_signbitf, test_signbitd)
(test_signbitl): Likewise.
* tests/test-snprintf-posix.h (test_function): Likewise.
* tests/test-sprintf-posix.h (test_function): Likewise.
* tests/test-strtod.c (main): Likewise.
* tests/test-trunc1.c (main): Likewise.
* tests/test-truncf1.c (main): Likewise.
* tests/test-truncl.c (main): Likewise.
Signed-off-by: Eric Blake <eblake@redhat.com>
author | Eric Blake <eblake@redhat.com> |
---|---|
date | Thu, 04 Nov 2010 12:29:27 -0600 |
parents | c2cbabec01dd |
children | 97fc9a21a8fb |
comparison
equal
deleted
inserted
replaced
13833:c58f1396894e | 13834:108bbfd6f03b |
---|---|
24 SIGNATURE_CHECK (frexp, double, (double, int *)); | 24 SIGNATURE_CHECK (frexp, double, (double, int *)); |
25 | 25 |
26 #include <float.h> | 26 #include <float.h> |
27 | 27 |
28 #include "isnand-nolibm.h" | 28 #include "isnand-nolibm.h" |
29 #include "minus-zero.h" | |
29 #include "nan.h" | 30 #include "nan.h" |
30 #include "macros.h" | 31 #include "macros.h" |
31 | 32 |
32 /* Avoid some warnings from "gcc -Wshadow". | 33 /* Avoid some warnings from "gcc -Wshadow". |
33 This file doesn't use the exp() function. */ | 34 This file doesn't use the exp() function. */ |
34 #undef exp | 35 #undef exp |
35 #define exp exponent | 36 #define exp exponent |
36 | |
37 /* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0. | |
38 So we use -zero instead. */ | |
39 double zero = 0.0; | |
40 | 37 |
41 static double | 38 static double |
42 my_ldexp (double x, int d) | 39 my_ldexp (double x, int d) |
43 { | 40 { |
44 for (; d > 0; d--) | 41 for (; d > 0; d--) |
94 } | 91 } |
95 | 92 |
96 { /* Negative zero. */ | 93 { /* Negative zero. */ |
97 int exp = -9999; | 94 int exp = -9999; |
98 double mantissa; | 95 double mantissa; |
99 x = -zero; | 96 x = minus_zerod; |
100 mantissa = frexp (x, &exp); | 97 mantissa = frexp (x, &exp); |
101 ASSERT (exp == 0); | 98 ASSERT (exp == 0); |
102 ASSERT (mantissa == x); | 99 ASSERT (mantissa == x); |
103 ASSERT (signbit (mantissa)); | 100 ASSERT (signbit (mantissa)); |
104 } | 101 } |