| @@ -1,14 +1,14 @@ | | | @@ -1,14 +1,14 @@ |
1 | /* $NetBSD: t_fpclassify.c,v 1.5 2024/05/09 14:13:08 riastradh Exp $ */ | | 1 | /* $NetBSD: t_fpclassify.c,v 1.6 2024/05/09 14:44:39 riastradh Exp $ */ |
2 | | | 2 | |
3 | /*- | | 3 | /*- |
4 | * Copyright (c) 2011 The NetBSD Foundation, Inc. | | 4 | * Copyright (c) 2011 The NetBSD Foundation, Inc. |
5 | * All rights reserved. | | 5 | * All rights reserved. |
6 | * | | 6 | * |
7 | * Redistribution and use in source and binary forms, with or without | | 7 | * Redistribution and use in source and binary forms, with or without |
8 | * modification, are permitted provided that the following conditions | | 8 | * modification, are permitted provided that the following conditions |
9 | * are met: | | 9 | * are met: |
10 | * 1. Redistributions of source code must retain the above copyright | | 10 | * 1. Redistributions of source code must retain the above copyright |
11 | * notice, this list of conditions and the following disclaimer. | | 11 | * notice, this list of conditions and the following disclaimer. |
12 | * 2. Redistributions in binary form must reproduce the above copyright | | 12 | * 2. Redistributions in binary form must reproduce the above copyright |
13 | * notice, this list of conditions and the following disclaimer in the | | 13 | * notice, this list of conditions and the following disclaimer in the |
14 | * documentation and/or other materials provided with the distribution. | | 14 | * documentation and/or other materials provided with the distribution. |
| @@ -23,41 +23,26 @@ | | | @@ -23,41 +23,26 @@ |
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | | 23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | | 24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | | 25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
26 | * POSSIBILITY OF SUCH DAMAGE. | | 26 | * POSSIBILITY OF SUCH DAMAGE. |
27 | */ | | 27 | */ |
28 | | | 28 | |
29 | #include <atf-c.h> | | 29 | #include <atf-c.h> |
30 | | | 30 | |
31 | #include <float.h> | | 31 | #include <float.h> |
32 | #include <math.h> | | 32 | #include <math.h> |
33 | #include <stdio.h> | | 33 | #include <stdio.h> |
34 | #include <string.h> | | 34 | #include <string.h> |
35 | | | 35 | |
36 | #ifndef _FLOAT_IEEE754 | | | |
37 | | | | |
38 | ATF_TC(no_test); | | | |
39 | ATF_TC_HEAD(no_test, tc) | | | |
40 | { | | | |
41 | atf_tc_set_md_var(tc, "descr", "Dummy test"); | | | |
42 | } | | | |
43 | | | | |
44 | ATF_TC_BODY(no_test,tc) | | | |
45 | { | | | |
46 | atf_tc_skip("Test not available on this architecture"); | | | |
47 | } | | | |
48 | | | | |
49 | #else /* defined(_FLOAT_IEEE754) */ | | | |
50 | | | | |
51 | ATF_TC(fpclassify_float); | | 36 | ATF_TC(fpclassify_float); |
52 | ATF_TC_HEAD(fpclassify_float, tc) | | 37 | ATF_TC_HEAD(fpclassify_float, tc) |
53 | { | | 38 | { |
54 | | | 39 | |
55 | atf_tc_set_md_var(tc, "descr", "Test float operations"); | | 40 | atf_tc_set_md_var(tc, "descr", "Test float operations"); |
56 | } | | 41 | } |
57 | | | 42 | |
58 | ATF_TC_BODY(fpclassify_float, tc) | | 43 | ATF_TC_BODY(fpclassify_float, tc) |
59 | { | | 44 | { |
60 | float d0, d1, d2, f, ip; | | 45 | float d0, d1, d2, f, ip; |
61 | int e, i; | | 46 | int e, i; |
62 | | | 47 | |
63 | d0 = FLT_MIN; | | 48 | d0 = FLT_MIN; |
| @@ -65,26 +50,27 @@ ATF_TC_BODY(fpclassify_float, tc) | | | @@ -65,26 +50,27 @@ ATF_TC_BODY(fpclassify_float, tc) |
65 | "fpclassify(%a)=%d FP_NORMAL=%d", | | 50 | "fpclassify(%a)=%d FP_NORMAL=%d", |
66 | d0, fpclassify(d0), FP_NORMAL); | | 51 | d0, fpclassify(d0), FP_NORMAL); |
67 | f = frexpf(d0, &e); | | 52 | f = frexpf(d0, &e); |
68 | ATF_CHECK_EQ_MSG(e, FLT_MIN_EXP, | | 53 | ATF_CHECK_EQ_MSG(e, FLT_MIN_EXP, |
69 | "frexpf(%a) returned normalized %a, exponent %d;" | | 54 | "frexpf(%a) returned normalized %a, exponent %d;" |
70 | " expected normalized %a, exponent %d", | | 55 | " expected normalized %a, exponent %d", |
71 | d0, f, e, 0.5, FLT_MIN_EXP); | | 56 | d0, f, e, 0.5, FLT_MIN_EXP); |
72 | ATF_CHECK_EQ_MSG(f, 0.5, | | 57 | ATF_CHECK_EQ_MSG(f, 0.5, |
73 | "frexpf(%a) returned normalized %a, exponent %d;" | | 58 | "frexpf(%a) returned normalized %a, exponent %d;" |
74 | " expected normalized %a, exponent %d", | | 59 | " expected normalized %a, exponent %d", |
75 | d0, f, e, 0.5, FLT_MIN_EXP); | | 60 | d0, f, e, 0.5, FLT_MIN_EXP); |
76 | d1 = d0; | | 61 | d1 = d0; |
77 | | | 62 | |
| | | 63 | #ifdef __FLT_HAS_DENORM__ |
78 | /* shift a "1" bit through the mantissa (skip the implicit bit) */ | | 64 | /* shift a "1" bit through the mantissa (skip the implicit bit) */ |
79 | for (i = 1; i < FLT_MANT_DIG; i++) { | | 65 | for (i = 1; i < FLT_MANT_DIG; i++) { |
80 | d1 /= 2; | | 66 | d1 /= 2; |
81 | ATF_CHECK_EQ_MSG(fpclassify(d1), FP_SUBNORMAL, | | 67 | ATF_CHECK_EQ_MSG(fpclassify(d1), FP_SUBNORMAL, |
82 | "[%d] fpclassify(%a)=%d FP_SUBNORMAL=%d", | | 68 | "[%d] fpclassify(%a)=%d FP_SUBNORMAL=%d", |
83 | i, d1, fpclassify(d1), FP_SUBNORMAL); | | 69 | i, d1, fpclassify(d1), FP_SUBNORMAL); |
84 | ATF_CHECK_MSG(d1 > 0 && d1 < d0, | | 70 | ATF_CHECK_MSG(d1 > 0 && d1 < d0, |
85 | "[%d] d1=%a d0=%a", i, d1, d0); | | 71 | "[%d] d1=%a d0=%a", i, d1, d0); |
86 | | | 72 | |
87 | d2 = ldexpf(d0, -i); | | 73 | d2 = ldexpf(d0, -i); |
88 | ATF_CHECK_EQ_MSG(d2, d1, "[%d] ldexpf(%a, -%d)=%a != %a", | | 74 | ATF_CHECK_EQ_MSG(d2, d1, "[%d] ldexpf(%a, -%d)=%a != %a", |
89 | i, d0, i, d2, d1); | | 75 | i, d0, i, d2, d1); |
90 | | | 76 | |
| @@ -98,26 +84,27 @@ ATF_TC_BODY(fpclassify_float, tc) | | | @@ -98,26 +84,27 @@ ATF_TC_BODY(fpclassify_float, tc) |
98 | " expected int %a, frac %a", | | 84 | " expected int %a, frac %a", |
99 | i, d1, ip, d2, 0., d1); | | 85 | i, d1, ip, d2, 0., d1); |
100 | | | 86 | |
101 | f = frexpf(d1, &e); | | 87 | f = frexpf(d1, &e); |
102 | ATF_CHECK_EQ_MSG(e, FLT_MIN_EXP - i, | | 88 | ATF_CHECK_EQ_MSG(e, FLT_MIN_EXP - i, |
103 | "[%d] frexpf(%a) returned normalized %a, exponent %d;" | | 89 | "[%d] frexpf(%a) returned normalized %a, exponent %d;" |
104 | " expected normalized %a, exponent %d", | | 90 | " expected normalized %a, exponent %d", |
105 | i, d1, f, e, 0.5, FLT_MIN_EXP - i); | | 91 | i, d1, f, e, 0.5, FLT_MIN_EXP - i); |
106 | ATF_CHECK_EQ_MSG(f, 0.5, | | 92 | ATF_CHECK_EQ_MSG(f, 0.5, |
107 | "[%d] frexpf(%a) returned normalized %a, exponent %d;" | | 93 | "[%d] frexpf(%a) returned normalized %a, exponent %d;" |
108 | " expected normalized %a, exponent %d", | | 94 | " expected normalized %a, exponent %d", |
109 | i, d1, f, e, 0.5, FLT_MIN_EXP - i); | | 95 | i, d1, f, e, 0.5, FLT_MIN_EXP - i); |
110 | } | | 96 | } |
| | | 97 | #endif |
111 | | | 98 | |
112 | d1 /= 2; | | 99 | d1 /= 2; |
113 | ATF_CHECK_EQ_MSG(fpclassify(d1), FP_ZERO, | | 100 | ATF_CHECK_EQ_MSG(fpclassify(d1), FP_ZERO, |
114 | "fpclassify(%a)=%d FP_ZERO=%d", | | 101 | "fpclassify(%a)=%d FP_ZERO=%d", |
115 | d1, fpclassify(d1), FP_ZERO); | | 102 | d1, fpclassify(d1), FP_ZERO); |
116 | f = frexpf(d1, &e); | | 103 | f = frexpf(d1, &e); |
117 | ATF_CHECK_EQ_MSG(e, 0, | | 104 | ATF_CHECK_EQ_MSG(e, 0, |
118 | "frexpf(%a) returned normalized %a, exponent %d;" | | 105 | "frexpf(%a) returned normalized %a, exponent %d;" |
119 | " expected normalized %a, exponent %d", | | 106 | " expected normalized %a, exponent %d", |
120 | d1, f, e, 0., 0); | | 107 | d1, f, e, 0., 0); |
121 | ATF_CHECK_EQ_MSG(f, 0, | | 108 | ATF_CHECK_EQ_MSG(f, 0, |
122 | "frexpf(%a) returned normalized %a, exponent %d;" | | 109 | "frexpf(%a) returned normalized %a, exponent %d;" |
123 | " expected normalized %a, exponent %d", | | 110 | " expected normalized %a, exponent %d", |
| @@ -141,26 +128,27 @@ ATF_TC_BODY(fpclassify_double, tc) | | | @@ -141,26 +128,27 @@ ATF_TC_BODY(fpclassify_double, tc) |
141 | "fpclassify(%a)=%d FP_NORMAL=%d", | | 128 | "fpclassify(%a)=%d FP_NORMAL=%d", |
142 | d0, fpclassify(d0), FP_NORMAL); | | 129 | d0, fpclassify(d0), FP_NORMAL); |
143 | f = frexp(d0, &e); | | 130 | f = frexp(d0, &e); |
144 | ATF_CHECK_EQ_MSG(e, DBL_MIN_EXP, | | 131 | ATF_CHECK_EQ_MSG(e, DBL_MIN_EXP, |
145 | "frexp(%a) returned normalized %a, exponent %d;" | | 132 | "frexp(%a) returned normalized %a, exponent %d;" |
146 | " expected normalized %a, exponent %d", | | 133 | " expected normalized %a, exponent %d", |
147 | d0, f, e, 0.5, DBL_MIN_EXP); | | 134 | d0, f, e, 0.5, DBL_MIN_EXP); |
148 | ATF_CHECK_EQ_MSG(f, 0.5, | | 135 | ATF_CHECK_EQ_MSG(f, 0.5, |
149 | "frexp(%a) returned normalized %a, exponent %d;" | | 136 | "frexp(%a) returned normalized %a, exponent %d;" |
150 | " expected normalized %a, exponent %d", | | 137 | " expected normalized %a, exponent %d", |
151 | d0, f, e, 0.5, DBL_MIN_EXP); | | 138 | d0, f, e, 0.5, DBL_MIN_EXP); |
152 | d1 = d0; | | 139 | d1 = d0; |
153 | | | 140 | |
| | | 141 | #ifdef __DBL_HAS_DENORM__ |
154 | /* shift a "1" bit through the mantissa (skip the implicit bit) */ | | 142 | /* shift a "1" bit through the mantissa (skip the implicit bit) */ |
155 | for (i = 1; i < DBL_MANT_DIG; i++) { | | 143 | for (i = 1; i < DBL_MANT_DIG; i++) { |
156 | d1 /= 2; | | 144 | d1 /= 2; |
157 | ATF_CHECK_EQ_MSG(fpclassify(d1), FP_SUBNORMAL, | | 145 | ATF_CHECK_EQ_MSG(fpclassify(d1), FP_SUBNORMAL, |
158 | "[%d] fpclassify(%a)=%d FP_SUBNORMAL=%d", | | 146 | "[%d] fpclassify(%a)=%d FP_SUBNORMAL=%d", |
159 | i, d1, fpclassify(d1), FP_SUBNORMAL); | | 147 | i, d1, fpclassify(d1), FP_SUBNORMAL); |
160 | ATF_CHECK_MSG(d1 > 0 && d1 < d0, | | 148 | ATF_CHECK_MSG(d1 > 0 && d1 < d0, |
161 | "[%d] d1=%a d0=%a", i, d1, d0); | | 149 | "[%d] d1=%a d0=%a", i, d1, d0); |
162 | | | 150 | |
163 | d2 = ldexp(d0, -i); | | 151 | d2 = ldexp(d0, -i); |
164 | ATF_CHECK_EQ_MSG(d2, d1, "[%d] ldexp(%a, -%d)=%a != %a", | | 152 | ATF_CHECK_EQ_MSG(d2, d1, "[%d] ldexp(%a, -%d)=%a != %a", |
165 | i, d0, i, d2, d1); | | 153 | i, d0, i, d2, d1); |
166 | | | 154 | |
| @@ -174,26 +162,27 @@ ATF_TC_BODY(fpclassify_double, tc) | | | @@ -174,26 +162,27 @@ ATF_TC_BODY(fpclassify_double, tc) |
174 | " expected int %a, frac %a", | | 162 | " expected int %a, frac %a", |
175 | i, d1, ip, d2, 0., d1); | | 163 | i, d1, ip, d2, 0., d1); |
176 | | | 164 | |
177 | f = frexp(d1, &e); | | 165 | f = frexp(d1, &e); |
178 | ATF_CHECK_EQ_MSG(e, DBL_MIN_EXP - i, | | 166 | ATF_CHECK_EQ_MSG(e, DBL_MIN_EXP - i, |
179 | "[%d] frexp(%a) returned normalized %a, exponent %d;" | | 167 | "[%d] frexp(%a) returned normalized %a, exponent %d;" |
180 | " expected normalized %a, exponent %d", | | 168 | " expected normalized %a, exponent %d", |
181 | i, d1, f, e, 0.5, DBL_MIN_EXP - i); | | 169 | i, d1, f, e, 0.5, DBL_MIN_EXP - i); |
182 | ATF_CHECK_EQ_MSG(f, 0.5, | | 170 | ATF_CHECK_EQ_MSG(f, 0.5, |
183 | "[%d] frexp(%a) returned normalized %a, exponent %d;" | | 171 | "[%d] frexp(%a) returned normalized %a, exponent %d;" |
184 | " expected normalized %a, exponent %d", | | 172 | " expected normalized %a, exponent %d", |
185 | i, d1, f, e, 0.5, DBL_MIN_EXP - i); | | 173 | i, d1, f, e, 0.5, DBL_MIN_EXP - i); |
186 | } | | 174 | } |
| | | 175 | #endif |
187 | | | 176 | |
188 | d1 /= 2; | | 177 | d1 /= 2; |
189 | ATF_CHECK_EQ_MSG(fpclassify(d1), FP_ZERO, | | 178 | ATF_CHECK_EQ_MSG(fpclassify(d1), FP_ZERO, |
190 | "fpclassify(%a)=%d FP_ZERO=%d", | | 179 | "fpclassify(%a)=%d FP_ZERO=%d", |
191 | d1, fpclassify(d1), FP_ZERO); | | 180 | d1, fpclassify(d1), FP_ZERO); |
192 | f = frexp(d1, &e); | | 181 | f = frexp(d1, &e); |
193 | ATF_CHECK_EQ_MSG(e, 0, | | 182 | ATF_CHECK_EQ_MSG(e, 0, |
194 | "frexp(%a) returned normalized %a, exponent %d;" | | 183 | "frexp(%a) returned normalized %a, exponent %d;" |
195 | " expected normalized %a, exponent %d", | | 184 | " expected normalized %a, exponent %d", |
196 | d1, f, e, 0., 0); | | 185 | d1, f, e, 0., 0); |
197 | ATF_CHECK_EQ_MSG(f, 0, | | 186 | ATF_CHECK_EQ_MSG(f, 0, |
198 | "frexp(%a) returned normalized %a, exponent %d;" | | 187 | "frexp(%a) returned normalized %a, exponent %d;" |
199 | " expected normalized %a, exponent %d", | | 188 | " expected normalized %a, exponent %d", |
| @@ -217,26 +206,27 @@ ATF_TC_BODY(fpclassify_long_double, tc) | | | @@ -217,26 +206,27 @@ ATF_TC_BODY(fpclassify_long_double, tc) |
217 | "fpclassify(%La)=%d FP_NORMAL=%d", | | 206 | "fpclassify(%La)=%d FP_NORMAL=%d", |
218 | d0, fpclassify(d0), FP_NORMAL); | | 207 | d0, fpclassify(d0), FP_NORMAL); |
219 | f = frexpl(d0, &e); | | 208 | f = frexpl(d0, &e); |
220 | ATF_CHECK_EQ_MSG(e, LDBL_MIN_EXP, | | 209 | ATF_CHECK_EQ_MSG(e, LDBL_MIN_EXP, |
221 | "frexpl(%La) returned normalized %La, exponent %d;" | | 210 | "frexpl(%La) returned normalized %La, exponent %d;" |
222 | " expected normalized %La, exponent %d", | | 211 | " expected normalized %La, exponent %d", |
223 | d0, f, e, 0.5L, LDBL_MIN_EXP); | | 212 | d0, f, e, 0.5L, LDBL_MIN_EXP); |
224 | ATF_CHECK_EQ_MSG(f, 0.5, | | 213 | ATF_CHECK_EQ_MSG(f, 0.5, |
225 | "frexpl(%La) returned normalized %La, exponent %d;" | | 214 | "frexpl(%La) returned normalized %La, exponent %d;" |
226 | " expected normalized %La, exponent %d", | | 215 | " expected normalized %La, exponent %d", |
227 | d0, f, e, 0.5L, LDBL_MIN_EXP); | | 216 | d0, f, e, 0.5L, LDBL_MIN_EXP); |
228 | d1 = d0; | | 217 | d1 = d0; |
229 | | | 218 | |
| | | 219 | #ifdef __LDBL_HAS_DENORM__ |
230 | /* shift a "1" bit through the mantissa (skip the implicit bit) */ | | 220 | /* shift a "1" bit through the mantissa (skip the implicit bit) */ |
231 | for (i = 1; i < LDBL_MANT_DIG; i++) { | | 221 | for (i = 1; i < LDBL_MANT_DIG; i++) { |
232 | d1 /= 2; | | 222 | d1 /= 2; |
233 | ATF_CHECK_EQ_MSG(fpclassify(d1), FP_SUBNORMAL, | | 223 | ATF_CHECK_EQ_MSG(fpclassify(d1), FP_SUBNORMAL, |
234 | "[%d] fpclassify(%La)=%d FP_SUBNORMAL=%d", | | 224 | "[%d] fpclassify(%La)=%d FP_SUBNORMAL=%d", |
235 | i, d1, fpclassify(d1), FP_SUBNORMAL); | | 225 | i, d1, fpclassify(d1), FP_SUBNORMAL); |
236 | ATF_CHECK_MSG(d1 > 0 && d1 < d0, | | 226 | ATF_CHECK_MSG(d1 > 0 && d1 < d0, |
237 | "[%d] d1=%La d0=%La", i, d1, d0); | | 227 | "[%d] d1=%La d0=%La", i, d1, d0); |
238 | | | 228 | |
239 | d2 = ldexpl(d0, -i); | | 229 | d2 = ldexpl(d0, -i); |
240 | ATF_CHECK_EQ_MSG(d2, d1, "[%d] ldexpl(%La, -%d)=%La != %La", | | 230 | ATF_CHECK_EQ_MSG(d2, d1, "[%d] ldexpl(%La, -%d)=%La != %La", |
241 | i, d0, i, d2, d1); | | 231 | i, d0, i, d2, d1); |
242 | | | 232 | |
| @@ -250,44 +240,39 @@ ATF_TC_BODY(fpclassify_long_double, tc) | | | @@ -250,44 +240,39 @@ ATF_TC_BODY(fpclassify_long_double, tc) |
250 | " expected int %La, frac %La", | | 240 | " expected int %La, frac %La", |
251 | i, d1, ip, d2, 0.L, d1); | | 241 | i, d1, ip, d2, 0.L, d1); |
252 | | | 242 | |
253 | f = frexpl(d1, &e); | | 243 | f = frexpl(d1, &e); |
254 | ATF_CHECK_EQ_MSG(e, LDBL_MIN_EXP - i, | | 244 | ATF_CHECK_EQ_MSG(e, LDBL_MIN_EXP - i, |
255 | "[%d] frexpl(%La) returned normalized %La, exponent %d;" | | 245 | "[%d] frexpl(%La) returned normalized %La, exponent %d;" |
256 | " expected normalized %La, exponent %d", | | 246 | " expected normalized %La, exponent %d", |
257 | i, d1, f, e, 0.5L, LDBL_MIN_EXP - i); | | 247 | i, d1, f, e, 0.5L, LDBL_MIN_EXP - i); |
258 | ATF_CHECK_EQ_MSG(f, 0.5, | | 248 | ATF_CHECK_EQ_MSG(f, 0.5, |
259 | "[%d] frexpl(%La) returned normalized %La, exponent %d;" | | 249 | "[%d] frexpl(%La) returned normalized %La, exponent %d;" |
260 | " expected normalized %La, exponent %d", | | 250 | " expected normalized %La, exponent %d", |
261 | i, d1, f, e, 0.5L, LDBL_MIN_EXP - i); | | 251 | i, d1, f, e, 0.5L, LDBL_MIN_EXP - i); |
262 | } | | 252 | } |
| | | 253 | #endif |
263 | | | 254 | |
264 | d1 /= 2; | | 255 | d1 /= 2; |
265 | ATF_CHECK_EQ_MSG(fpclassify(d1), FP_ZERO, | | 256 | ATF_CHECK_EQ_MSG(fpclassify(d1), FP_ZERO, |
266 | "fpclassify(%La)=%d FP_ZERO=%d", | | 257 | "fpclassify(%La)=%d FP_ZERO=%d", |
267 | d1, fpclassify(d1), FP_ZERO); | | 258 | d1, fpclassify(d1), FP_ZERO); |
268 | f = frexpl(d1, &e); | | 259 | f = frexpl(d1, &e); |
269 | ATF_CHECK_EQ_MSG(e, 0, | | 260 | ATF_CHECK_EQ_MSG(e, 0, |
270 | "frexpl(%La) returned normalized %La, exponent %d;" | | 261 | "frexpl(%La) returned normalized %La, exponent %d;" |
271 | " expected normalized %La, exponent %d", | | 262 | " expected normalized %La, exponent %d", |
272 | d1, f, e, 0.L, 0); | | 263 | d1, f, e, 0.L, 0); |
273 | ATF_CHECK_EQ_MSG(f, 0, | | 264 | ATF_CHECK_EQ_MSG(f, 0, |
274 | "frexpl(%La) returned normalized %La, exponent %d;" | | 265 | "frexpl(%La) returned normalized %La, exponent %d;" |
275 | " expected normalized %La, exponent %d", | | 266 | " expected normalized %La, exponent %d", |
276 | d1, f, e, 0.L, 0); | | 267 | d1, f, e, 0.L, 0); |
277 | } | | 268 | } |
278 | | | 269 | |
279 | #endif /* _FLOAT_IEEE754 */ | | | |
280 | | | | |
281 | ATF_TP_ADD_TCS(tp) | | 270 | ATF_TP_ADD_TCS(tp) |
282 | { | | 271 | { |
283 | | | 272 | |
284 | #ifndef _FLOAT_IEEE754 | | | |
285 | ATF_TP_ADD_TC(tp, no_test); | | | |
286 | #else | | | |
287 | ATF_TP_ADD_TC(tp, fpclassify_float); | | 273 | ATF_TP_ADD_TC(tp, fpclassify_float); |
288 | ATF_TP_ADD_TC(tp, fpclassify_double); | | 274 | ATF_TP_ADD_TC(tp, fpclassify_double); |
289 | ATF_TP_ADD_TC(tp, fpclassify_long_double); | | 275 | ATF_TP_ADD_TC(tp, fpclassify_long_double); |
290 | #endif /* _FLOAT_IEEE754 */ | | | |
291 | | | 276 | |
292 | return atf_no_error(); | | 277 | return atf_no_error(); |
293 | } | | 278 | } |