1
/* Test mpz_fits_*_p */
4
Copyright 2001 Free Software Foundation, Inc.
6
This file is part of the GNU MP Library.
8
The GNU MP Library is free software; you can redistribute it and/or modify
9
it under the terms of the GNU Lesser General Public License as published by
10
the Free Software Foundation; either version 2.1 of the License, or (at your
11
option) any later version.
13
The GNU MP Library is distributed in the hope that it will be useful, but
14
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
16
License for more details.
18
You should have received a copy of the GNU Lesser General Public License
19
along with the GNU MP Library; see the file COPYING.LIB. If not, write to
20
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
31
/* Nothing sophisticated here, just exercise mpz_fits_*_p on a small amount
34
#define EXPECT_S(fun,name,answer) \
38
printf ("%s (%s) got %d want %d\n", name, expr, got, answer); \
39
printf (" z size %d\n", SIZ(z)); \
40
printf (" z dec "); mpz_out_str (stdout, 10, z); printf ("\n"); \
41
printf (" z hex "); mpz_out_str (stdout, 16, z); printf ("\n"); \
46
#define EXPECT(fun,answer) EXPECT_S(fun,#fun,answer)
48
#define EXPECT(fun,answer) EXPECT_S(fun,"fun",answer)
64
EXPECT (mpz_fits_ulong_p, 1);
65
EXPECT (mpz_fits_uint_p, 1);
66
EXPECT (mpz_fits_ushort_p, 1);
67
EXPECT (mpz_fits_slong_p, 1);
68
EXPECT (mpz_fits_sint_p, 1);
69
EXPECT (mpz_fits_sshort_p, 1);
73
EXPECT (mpz_fits_ulong_p, 1);
74
EXPECT (mpz_fits_uint_p, 1);
75
EXPECT (mpz_fits_ushort_p, 1);
76
EXPECT (mpz_fits_slong_p, 1);
77
EXPECT (mpz_fits_sint_p, 1);
78
EXPECT (mpz_fits_sshort_p, 1);
82
EXPECT (mpz_fits_ulong_p, 0);
83
EXPECT (mpz_fits_uint_p, 0);
84
EXPECT (mpz_fits_ushort_p, 0);
85
EXPECT (mpz_fits_slong_p, 1);
86
EXPECT (mpz_fits_sint_p, 1);
87
EXPECT (mpz_fits_sshort_p, 1);
90
mpz_mul_2exp (z, z, 5L*BITS_PER_MP_LIMB);
92
EXPECT (mpz_fits_ulong_p, 0);
93
EXPECT (mpz_fits_uint_p, 0);
94
EXPECT (mpz_fits_ushort_p, 0);
95
EXPECT (mpz_fits_slong_p, 0);
96
EXPECT (mpz_fits_sint_p, 0);
97
EXPECT (mpz_fits_sshort_p, 0);
100
mpz_set_ui (z, (unsigned long) USHRT_MAX);
102
EXPECT (mpz_fits_ulong_p, 1);
103
EXPECT (mpz_fits_uint_p, 1);
104
EXPECT (mpz_fits_ushort_p, 1);
106
mpz_set_ui (z, (unsigned long) USHRT_MAX);
107
mpz_add_ui (z, z, 1L);
108
expr = "USHRT_MAX + 1";
109
EXPECT (mpz_fits_ushort_p, 0);
112
mpz_set_ui (z, (unsigned long) UINT_MAX);
114
EXPECT (mpz_fits_ulong_p, 1);
115
EXPECT (mpz_fits_uint_p, 1);
117
mpz_set_ui (z, (unsigned long) UINT_MAX);
118
mpz_add_ui (z, z, 1L);
119
expr = "UINT_MAX + 1";
120
EXPECT (mpz_fits_uint_p, 0);
123
mpz_set_ui (z, ULONG_MAX);
125
EXPECT (mpz_fits_ulong_p, 1);
127
mpz_set_ui (z, ULONG_MAX);
128
mpz_add_ui (z, z, 1L);
129
expr = "ULONG_MAX + 1";
130
EXPECT (mpz_fits_ulong_p, 0);
133
mpz_set_si (z, (long) SHRT_MAX);
135
EXPECT (mpz_fits_slong_p, 1);
136
EXPECT (mpz_fits_sint_p, 1);
137
EXPECT (mpz_fits_sshort_p, 1);
139
mpz_set_si (z, (long) SHRT_MAX);
140
mpz_add_ui (z, z, 1L);
141
expr = "SHRT_MAX + 1";
142
EXPECT (mpz_fits_sshort_p, 0);
145
mpz_set_si (z, (long) INT_MAX);
147
EXPECT (mpz_fits_slong_p, 1);
148
EXPECT (mpz_fits_sint_p, 1);
150
mpz_set_si (z, (long) INT_MAX);
151
mpz_add_ui (z, z, 1L);
152
expr = "INT_MAX + 1";
153
EXPECT (mpz_fits_sint_p, 0);
156
mpz_set_si (z, LONG_MAX);
158
EXPECT (mpz_fits_slong_p, 1);
160
mpz_set_si (z, LONG_MAX);
161
mpz_add_ui (z, z, 1L);
162
expr = "LONG_MAX + 1";
163
EXPECT (mpz_fits_slong_p, 0);
166
mpz_set_si (z, (long) SHRT_MIN);
168
EXPECT (mpz_fits_slong_p, 1);
169
EXPECT (mpz_fits_sint_p, 1);
170
EXPECT (mpz_fits_sshort_p, 1);
172
mpz_set_si (z, (long) SHRT_MIN);
173
mpz_sub_ui (z, z, 1L);
174
expr = "SHRT_MIN + 1";
175
EXPECT (mpz_fits_sshort_p, 0);
178
mpz_set_si (z, (long) INT_MIN);
180
EXPECT (mpz_fits_slong_p, 1);
181
EXPECT (mpz_fits_sint_p, 1);
183
mpz_set_si (z, (long) INT_MIN);
184
mpz_sub_ui (z, z, 1L);
185
expr = "INT_MIN + 1";
186
EXPECT (mpz_fits_sint_p, 0);
189
mpz_set_si (z, LONG_MIN);
191
EXPECT (mpz_fits_slong_p, 1);
193
mpz_set_si (z, LONG_MIN);
194
mpz_sub_ui (z, z, 1L);
195
expr = "LONG_MIN + 1";
196
EXPECT (mpz_fits_slong_p, 0);