Mercurial > hg > octave-lojdl > gnulib-hg
annotate tests/test-copysign.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 |
rev | line source |
---|---|
12783 | 1 /* Test of copysign() function. |
14079
97fc9a21a8fb
maint: update almost all copyright ranges to include 2011
Jim Meyering <meyering@redhat.com>
parents:
13836
diff
changeset
|
2 Copyright (C) 2010-2011 Free Software Foundation, Inc. |
12783 | 3 |
4 This program is free software: you can redistribute it and/or modify | |
5 it under the terms of the GNU General Public License as published by | |
6 the Free Software Foundation; either version 3 of the License, or | |
7 (at your option) any later version. | |
8 | |
9 This program is distributed in the hope that it will be useful, | |
10 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 GNU General Public License for more details. | |
13 | |
14 You should have received a copy of the GNU General Public License | |
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
16 | |
17 /* Written by Bruno Haible <bruno@clisp.org>, 2010. */ | |
18 | |
19 #include <config.h> | |
20 | |
21 #include <math.h> | |
22 | |
23 #include "signature.h" | |
24 SIGNATURE_CHECK (copysign, double, (double, double)); | |
25 | |
26 #include "macros.h" | |
13836 | 27 #include "minus-zero.h" |
28 | |
29 #include <string.h> | |
12783 | 30 |
31 volatile double x; | |
32 volatile double y; | |
33 double z; | |
13836 | 34 double zero = 0.0; |
12783 | 35 |
36 int | |
37 main () | |
38 { | |
39 /* A particular value in the first quadrant. */ | |
40 x = 0.6; | |
41 y = 0.8; | |
42 z = copysign (x, y); | |
43 ASSERT (z == 0.6); | |
44 | |
45 /* A particular value in the second quadrant. */ | |
46 x = -0.6; | |
47 y = 0.8; | |
48 z = copysign (x, y); | |
49 ASSERT (z == 0.6); | |
50 | |
51 /* A particular value in the third quadrant. */ | |
52 x = -0.6; | |
53 y = -0.8; | |
54 z = copysign (x, y); | |
55 ASSERT (z == -0.6); | |
56 | |
57 /* A particular value in the fourth quadrant. */ | |
58 x = 0.6; | |
59 y = -0.8; | |
60 z = copysign (x, y); | |
61 ASSERT (z == -0.6); | |
62 | |
13836 | 63 /* From signed zero. */ |
64 x = 1.0; | |
65 y = 0.0; | |
66 z = copysign (x, y); | |
67 ASSERT (z == 1.0); | |
68 | |
69 x = 1.0; | |
70 y = minus_zerod; | |
71 z = copysign (x, y); | |
72 /* Assume all gnulib targets support -0.0, until proven otherwise. */ | |
73 ASSERT (z == -1.0); | |
74 | |
75 x = -1.0; | |
76 y = 0.0; | |
77 z = copysign (x, y); | |
78 ASSERT (z == 1.0); | |
79 | |
80 x = -1.0; | |
81 y = minus_zerod; | |
82 z = copysign (x, y); | |
83 ASSERT (z == -1.0); | |
84 | |
85 /* To signed zero. */ | |
86 x = 0.0; | |
87 y = 1.0; | |
88 z = copysign (x, y); | |
89 ASSERT (z == 0.0); | |
90 ASSERT (memcmp (&z, &zero, sizeof z) == 0); | |
91 | |
92 x = 0.0; | |
93 y = -1.0; | |
94 z = copysign (x, y); | |
95 ASSERT (z == 0.0); | |
96 ASSERT (memcmp (&z, &zero, sizeof z) != 0); | |
97 | |
98 x = minus_zerod; | |
99 y = 1.0; | |
100 z = copysign (x, y); | |
101 ASSERT (z == 0.0); | |
102 ASSERT (memcmp (&z, &zero, sizeof z) == 0); | |
103 | |
104 x = minus_zerod; | |
105 y = -1.0; | |
106 z = copysign (x, y); | |
107 ASSERT (z == 0.0); | |
108 ASSERT (memcmp (&z, &zero, sizeof z) != 0); | |
109 | |
12783 | 110 return 0; |
111 } |