1 // The template and inlines for the -*- C++ -*- numeric_limits classes.
3 // Copyright (C) 1999-2001 Free Software Foundation, Inc.
5 // This file is part of the GNU ISO C++ Library. This library is free
6 // software; you can redistribute it and/or modify it under the
7 // terms of the GNU General Public License as published by the
8 // Free Software Foundation; either version 2, or (at your option)
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with this library; see the file COPYING. If not, write to the Free
18 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
21 // As a special exception, you may use this file as part of a free software
22 // library without restriction. Specifically, if other files instantiate
23 // templates or use macros or inline functions from this file, or you compile
24 // this file and link it with other files to produce an executable, this
25 // file does not by itself cause the resulting executable to be covered by
26 // the GNU General Public License. This exception does not however
27 // invalidate any other reasons why the executable file might be covered by
28 // the GNU General Public License.
30 // Note: this is not a conforming implementation.
31 // Written by Gabriel Dos Reis <gdr@codesourcery.com>
38 #ifndef _CPP_NUMERIC_LIMITS
39 #define _CPP_NUMERIC_LIMITS 1
41 #pragma GCC system_header
43 #include <bits/cpu_limits.h>
44 #include <bits/c++config.h>
47 // The numeric_limits<> traits document implementation-defined aspects
48 // of fundamental arithmetic data types (integers and floating points).
49 // From Standard C++ point of view, there are 13 such types:
52 // char, signed char, unsigned char (3)
53 // short, unsigned short (2)
55 // long, unsigned long (2)
62 // GNU C++ undertstands (where supported by the host C-library)
64 // long long, unsigned long long (2)
66 // which brings us to 15 fundamental arithmetic data types in GNU C++.
69 // Since a numeric_limits<> is a bit tricky to get right, we rely on
70 // an interface composed of macros which should be defined in config/os
71 // or config/cpu when they differ from the generic (read arbitrary)
72 // definitions given here.
75 // These values can be overridden in the target configuration file.
76 // The default values are appropriate for many 32-bit targets.
78 #ifndef __glibcpp_char_bits
79 #define __glibcpp_char_bits 8
81 #ifdef __CHAR_UNSIGNED__
82 #define __glibcpp_plain_char_is_signed false
84 #define __glibcpp_plain_char_is_signed true
86 #ifndef __glibcpp_short_bits
87 #define __glibcpp_short_bits 16
89 #ifndef __glibcpp_int_bits
90 #define __glibcpp_int_bits 32
92 #ifndef __glibcpp_long_bits
93 #define __glibcpp_long_bits 32
95 #ifndef __glibcpp_wchar_t_bits
96 #define __glibcpp_wchar_t_bits 32
98 #ifndef __glibcpp_wchar_t_is_signed
99 #define __glibcpp_wchar_t_is_signed false
101 #ifdef _GLIBCPP_USE_LONG_LONG
102 #ifndef __glibcpp_long_long_bits
103 #define __glibcpp_long_long_bits 64
106 #ifndef __glibcpp_float_bits
107 #define __glibcpp_float_bits 32
109 #ifndef __glibcpp_double_bits
110 #define __glibcpp_double_bits 64
112 #ifndef __glibcpp_long_double_bits
113 #define __glibcpp_long_double_bits 128
116 #ifndef __glibcpp_char_traps
117 #define __glibcpp_char_traps true
119 #ifndef __glibcpp_short_traps
120 #define __glibcpp_short_traps true
122 #ifndef __glibcpp_int_traps
123 #define __glibcpp_int_traps true
125 #ifndef __glibcpp_long_traps
126 #define __glibcpp_long_traps true
128 #ifndef __glibcpp_wchar_t_traps
129 #define __glibcpp_wchar_t_traps true
131 #ifdef _GLIBCPP_USE_LONG_LONG
132 #ifndef __glibcpp_long_long_traps
133 #define __glibcpp_long_long_traps true
137 // You should not need to define any macros below this point, unless
138 // you have a machine with non-standard bit-widths.
140 // These values are the minimums and maximums for standard data types
143 #define __glibcpp_s8_max 127
144 #define __glibcpp_s8_min (-__glibcpp_s8_max - 1)
145 #define __glibcpp_s8_digits 7
146 #define __glibcpp_s8_digits10 3
147 #define __glibcpp_u8_min 0U
148 #define __glibcpp_u8_max (__glibcpp_s8_max * 2 + 1)
149 #define __glibcpp_u8_digits 8
150 #define __glibcpp_u8_digits10 3
151 #define __glibcpp_s16_max 32767
152 #define __glibcpp_s16_min (-__glibcpp_s16_max - 1)
153 #define __glibcpp_s16_digits 15
154 #define __glibcpp_s16_digits10 5
155 #define __glibcpp_u16_min 0U
156 #define __glibcpp_u16_max (__glibcpp_s16_max * 2 + 1)
157 #define __glibcpp_u16_digits 16
158 #define __glibcpp_u16_digits10 5
159 #define __glibcpp_s32_max 2147483647L
160 #define __glibcpp_s32_min (-__glibcpp_s32_max - 1)
161 #define __glibcpp_s32_digits 31
162 #define __glibcpp_s32_digits10 10
163 #define __glibcpp_u32_min 0UL
164 #define __glibcpp_u32_max (__glibcpp_s32_max * 2U + 1)
165 #define __glibcpp_u32_digits 32
166 #define __glibcpp_u32_digits10 10
167 #define __glibcpp_s64_max 9223372036854775807LL
168 #define __glibcpp_s64_min (-__glibcpp_s64_max - 1)
169 #define __glibcpp_s64_digits 63
170 #define __glibcpp_s64_digits10 19
171 #define __glibcpp_u64_min 0ULL
172 #define __glibcpp_u64_max (__glibcpp_s64_max * 2ULL + 1)
173 #define __glibcpp_u64_digits 64
174 #define __glibcpp_u64_digits10 19
176 #define __glibcpp_f32_min 1.17549435e-38F
177 #define __glibcpp_f32_max 3.40282347e+38F
178 #define __glibcpp_f32_digits 24
179 #define __glibcpp_f32_digits10 6
180 #define __glibcpp_f32_radix 2
181 #define __glibcpp_f32_epsilon 1.19209290e-07F
182 #define __glibcpp_f32_round_error 1.0F
183 #define __glibcpp_f32_min_exponent -125
184 #define __glibcpp_f32_min_exponent10 -37
185 #define __glibcpp_f32_max_exponent 128
186 #define __glibcpp_f32_max_exponent10 38
187 #define __glibcpp_f64_min 2.2250738585072014e-308
188 #define __glibcpp_f64_max 1.7976931348623157e+308
189 #define __glibcpp_f64_digits 53
190 #define __glibcpp_f64_digits10 15
191 #define __glibcpp_f64_radix 2
192 #define __glibcpp_f64_epsilon 2.2204460492503131e-16
193 #define __glibcpp_f64_round_error 1.0
194 #define __glibcpp_f64_min_exponent -1021
195 #define __glibcpp_f64_min_exponent10 -307
196 #define __glibcpp_f64_max_exponent 1024
197 #define __glibcpp_f64_max_exponent10 308
198 #define __glibcpp_f80_min 3.36210314311209350626e-4932L
199 #define __glibcpp_f80_max 1.18973149535723176502e+4932L
200 #define __glibcpp_f80_digits 64
201 #define __glibcpp_f80_digits10 18
202 #define __glibcpp_f80_radix 2
203 #define __glibcpp_f80_epsilon 1.08420217248550443401e-19L
204 #define __glibcpp_f80_round_error 1.0L
205 #define __glibcpp_f80_min_exponent -16381
206 #define __glibcpp_f80_min_exponent10 -4931
207 #define __glibcpp_f80_max_exponent 16384
208 #define __glibcpp_f80_max_exponent10 4932
209 #define __glibcpp_f96_min 1.68105157155604675313e-4932L
210 #define __glibcpp_f96_max 1.18973149535723176502e+4932L
211 #define __glibcpp_f96_digits 64
212 #define __glibcpp_f96_digits10 18
213 #define __glibcpp_f96_radix 2
214 #define __glibcpp_f96_epsilon 1.08420217248550443401e-19L
215 #define __glibcpp_f96_round_error 1.0L
216 #define __glibcpp_f96_min_exponent -16382
217 #define __glibcpp_f96_min_exponent10 -4931
218 #define __glibcpp_f96_max_exponent 16384
219 #define __glibcpp_f96_max_exponent10 4932
220 #define __glibcpp_f128_min 3.362103143112093506262677817321752603E-4932L
221 #define __glibcpp_f128_max 1.189731495357231765085759326628007016E+4932L
222 #define __glibcpp_f128_digits 113
223 #define __glibcpp_f128_digits10 33
224 #define __glibcpp_f128_radix 2
225 #define __glibcpp_f128_epsilon 1.925929944387235853055977942584927319E-34L
226 #define __glibcpp_f128_round_error 1.0L
227 #define __glibcpp_f128_min_exponent -16381
228 #define __glibcpp_f128_min_exponent10 -4931
229 #define __glibcpp_f128_max_exponent 16384
230 #define __glibcpp_f128_max_exponent10 4932
232 // bool-specific hooks:
233 // __glibcpp_bool_digits __glibcpp_int_traps __glibcpp_long_traps
235 // This is actually CHAR_BITS because the new ABI says a bool
236 // is one (1) byte wide.
238 #ifndef __glibcpp_bool_digits
239 #define __glibcpp_bool_digits __glibcpp_char_bits
244 #define __glibcpp_plain_char_traps true
245 #define __glibcpp_signed_char_traps true
246 #define __glibcpp_unsigned_char_traps true
247 #if __glibcpp_char_bits == 8
248 #define __glibcpp_signed_char_min __glibcpp_s8_min
249 #define __glibcpp_signed_char_max __glibcpp_s8_max
250 #define __glibcpp_signed_char_digits __glibcpp_s8_digits
251 #define __glibcpp_signed_char_digits10 __glibcpp_s8_digits10
252 #define __glibcpp_unsigned_char_min __glibcpp_u8_min
253 #define __glibcpp_unsigned_char_max __glibcpp_u8_max
254 #define __glibcpp_unsigned_char_digits __glibcpp_u8_digits
255 #define __glibcpp_unsigned_char_digits10 __glibcpp_u8_digits10
256 #elif __glibcpp_char_bits == 16
257 #define __glibcpp_signed_char_min __glibcpp_s16_min
258 #define __glibcpp_signed_char_max __glibcpp_s16_max
259 #define __glibcpp_signed_char_digits __glibcpp_s16_digits
260 #define __glibcpp_signed_char_digits10 __glibcpp_s16_digits10
261 #define __glibcpp_unsigned_char_min __glibcpp_u16_min
262 #define __glibcpp_unsigned_char_max __glibcpp_u16_max
263 #define __glibcpp_unsigned_char_digits __glibcpp_u16_digits
264 #define __glibcpp_unsigned_char_digits10 __glibcpp_u16_digits10
265 #elif __glibcpp_char_bits == 32
266 #define __glibcpp_signed_char_min (signed char)__glibcpp_s32_min
267 #define __glibcpp_signed_char_max (signed char)__glibcpp_s32_max
268 #define __glibcpp_signed_char_digits __glibcpp_s32_digits
269 #define __glibcpp_signed_char_digits10 __glibcpp_s32_digits10
270 #define __glibcpp_unsigned_char_min (unsigned char)__glibcpp_u32_min
271 #define __glibcpp_unsigned_char_max (unsigned char)__glibcpp_u32_max
272 #define __glibcpp_unsigned_char_digits __glibcpp_u32_digits
273 #define __glibcpp_unsigned_char_digits10 __glibcpp_u32_digits10
274 #elif __glibcpp_char_bits == 64
275 #define __glibcpp_signed_char_min (signed char)__glibcpp_s64_min
276 #define __glibcpp_signed_char_max (signed char)__glibcpp_s64_max
277 #define __glibcpp_signed_char_digits __glibcpp_s64_digits
278 #define __glibcpp_signed_char_digits10 __glibcpp_s64_digits10
279 #define __glibcpp_unsigned_char_min (unsigned char)__glibcpp_u64_min
280 #define __glibcpp_unsigned_char_max (unsigned char)__glibcpp_u64_max
281 #define __glibcpp_unsigned_char_digits __glibcpp_u64_digits
282 #define __glibcpp_unsigned_char_digits10 __glibcpp_u64_digits10
284 // You must define these macros in the configuration file.
287 #if __glibcpp_plain_char_is_signed
288 #define __glibcpp_char_min (char)__glibcpp_signed_char_min
289 #define __glibcpp_char_max (char)__glibcpp_signed_char_max
290 #define __glibcpp_char_digits __glibcpp_signed_char_digits
291 #define __glibcpp_char_digits10 __glibcpp_signed_char_digits
293 #define __glibcpp_char_min (char)__glibcpp_unsigned_char_min
294 #define __glibcpp_char_max (char)__glibcpp_unsigned_char_max
295 #define __glibcpp_char_digits __glibcpp_unsigned_char_digits
296 #define __glibcpp_char_digits10 __glibcpp_unsigned_char_digits
301 #define __glibcpp_signed_short_traps true
302 #define __glibcpp_unsigned_short_traps true
303 #if __glibcpp_short_bits == 8
304 #define __glibcpp_signed_short_min __glibcpp_s8_min
305 #define __glibcpp_signed_short_max __glibcpp_s8_max
306 #define __glibcpp_signed_short_digits __glibcpp_s8_digits
307 #define __glibcpp_signed_short_digits10 __glibcpp_s8_digits10
308 #define __glibcpp_unsigned_short_min __glibcpp_u8_min
309 #define __glibcpp_unsigned_short_max __glibcpp_u8_max
310 #define __glibcpp_unsigned_short_digits __glibcpp_u8_digits
311 #define __glibcpp_unsigned_short_digits10 __glibcpp_u8_digits10
312 #elif __glibcpp_short_bits == 16
313 #define __glibcpp_signed_short_min __glibcpp_s16_min
314 #define __glibcpp_signed_short_max __glibcpp_s16_max
315 #define __glibcpp_signed_short_digits __glibcpp_s16_digits
316 #define __glibcpp_signed_short_digits10 __glibcpp_s16_digits10
317 #define __glibcpp_unsigned_short_min __glibcpp_u16_min
318 #define __glibcpp_unsigned_short_max __glibcpp_u16_max
319 #define __glibcpp_unsigned_short_digits __glibcpp_u16_digits
320 #define __glibcpp_unsigned_short_digits10 __glibcpp_u16_digits10
321 #elif __glibcpp_short_bits == 32
322 #define __glibcpp_signed_short_min (short)__glibcpp_s32_min
323 #define __glibcpp_signed_short_max (short)__glibcpp_s32_max
324 #define __glibcpp_signed_short_digits __glibcpp_s32_digits
325 #define __glibcpp_signed_short_digits10 __glibcpp_s32_digits10
326 #define __glibcpp_unsigned_short_min (unsigned short)__glibcpp_u32_min
327 #define __glibcpp_unsigned_short_max (unsigned short)__glibcpp_u32_max
328 #define __glibcpp_unsigned_short_digits __glibcpp_u32_digits
329 #define __glibcpp_unsigned_short_digits10 __glibcpp_u32_digits10
330 #elif __glibcpp_short_bits == 64
331 #define __glibcpp_signed_short_min (short)__glibcpp_s64_min
332 #define __glibcpp_signed_short_max (short)__glibcpp_s64_max
333 #define __glibcpp_signed_short_digits __glibcpp_s64_digits
334 #define __glibcpp_signed_short_digits10 __glibcpp_s64_digits10
335 #define __glibcpp_unsigned_short_min (unsigned short)__glibcpp_u64_min
336 #define __glibcpp_unsigned_short_max (unsigned short)__glibcpp_u64_max
337 #define __glibcpp_unsigned_short_digits __glibcpp_u64_digits
338 #define __glibcpp_unsigned_short_digits10 __glibcpp_u64_digits10
340 // You must define these macros in the configuration file.
345 #define __glibcpp_signed_int_traps true
346 #define __glibcpp_unsigned_int_traps true
347 #if __glibcpp_int_bits == 8
348 #define __glibcpp_signed_int_min __glibcpp_s8_min
349 #define __glibcpp_signed_int_max __glibcpp_s8_max
350 #define __glibcpp_signed_int_digits __glibcpp_s8_digits
351 #define __glibcpp_signed_int_digits10 __glibcpp_s8_digits10
352 #define __glibcpp_unsigned_int_min __glibcpp_u8_min
353 #define __glibcpp_unsigned_int_max __glibcpp_u8_max
354 #define __glibcpp_unsigned_int_digits __glibcpp_u8_digits
355 #define __glibcpp_unsigned_int_digits10 __glibcpp_u8_digits10
356 #elif __glibcpp_int_bits == 16
357 #define __glibcpp_signed_int_min __glibcpp_s16_min
358 #define __glibcpp_signed_int_max __glibcpp_s16_max
359 #define __glibcpp_signed_int_digits __glibcpp_s16_digits
360 #define __glibcpp_signed_int_digits10 __glibcpp_s16_digits10
361 #define __glibcpp_unsigned_int_min __glibcpp_u16_min
362 #define __glibcpp_unsigned_int_max __glibcpp_u16_max
363 #define __glibcpp_unsigned_int_digits __glibcpp_u16_digits
364 #define __glibcpp_unsigned_int_digits10 __glibcpp_u16_digits10
365 #elif __glibcpp_int_bits == 32
366 #define __glibcpp_signed_int_min (int)__glibcpp_s32_min
367 #define __glibcpp_signed_int_max (int)__glibcpp_s32_max
368 #define __glibcpp_signed_int_digits __glibcpp_s32_digits
369 #define __glibcpp_signed_int_digits10 __glibcpp_s32_digits10
370 #define __glibcpp_unsigned_int_min (unsigned)__glibcpp_u32_min
371 #define __glibcpp_unsigned_int_max (unsigned)__glibcpp_u32_max
372 #define __glibcpp_unsigned_int_digits __glibcpp_u32_digits
373 #define __glibcpp_unsigned_int_digits10 __glibcpp_u32_digits10
374 #elif __glibcpp_int_bits == 64
375 #define __glibcpp_signed_int_min (int)__glibcpp_s64_min
376 #define __glibcpp_signed_int_max (int)__glibcpp_s64_max
377 #define __glibcpp_signed_int_digits __glibcpp_s64_digits
378 #define __glibcpp_signed_int_digits10 __glibcpp_s64_digits10
379 #define __glibcpp_unsigned_int_min (unsigned)__glibcpp_u64_min
380 #define __glibcpp_unsigned_int_max (unsigned)__glibcpp_u64_max
381 #define __glibcpp_unsigned_int_digits __glibcpp_u64_digits
382 #define __glibcpp_unsigned_int_digits10 __glibcpp_u64_digits10
384 // You must define these macros in the configuration file.
389 #define __glibcpp_signed_long_traps true
390 #define __glibcpp_unsigned_long_traps true
391 #if __glibcpp_long_bits == 8
392 #define __glibcpp_signed_long_min __glibcpp_s8_min
393 #define __glibcpp_signed_long_max __glibcpp_s8_max
394 #define __glibcpp_signed_long_digits __glibcpp_s8_digits
395 #define __glibcpp_signed_long_digits10 __glibcpp_s8_digits10
396 #define __glibcpp_unsigned_long_min __glibcpp_u8_min
397 #define __glibcpp_unsigned_long_max __glibcpp_u8_max
398 #define __glibcpp_unsigned_long_digits __glibcpp_u8_digits
399 #define __glibcpp_unsigned_long_digits10 __glibcpp_u8_digits10
400 #elif __glibcpp_long_bits == 16
401 #define __glibcpp_signed_long_min __glibcpp_s16_min
402 #define __glibcpp_signed_long_max __glibcpp_s16_max
403 #define __glibcpp_signed_long_digits __glibcpp_s16_digits
404 #define __glibcpp_signed_long_digits10 __glibcpp_s16_digits10
405 #define __glibcpp_unsigned_long_min __glibcpp_u16_min
406 #define __glibcpp_unsigned_long_max __glibcpp_u16_max
407 #define __glibcpp_unsigned_long_digits __glibcpp_u16_digits
408 #define __glibcpp_unsigned_long_digits10 __glibcpp_u16_digits10
409 #elif __glibcpp_long_bits == 32
410 #define __glibcpp_signed_long_min __glibcpp_s32_min
411 #define __glibcpp_signed_long_max __glibcpp_s32_max
412 #define __glibcpp_signed_long_digits __glibcpp_s32_digits
413 #define __glibcpp_signed_long_digits10 __glibcpp_s32_digits10
414 #define __glibcpp_unsigned_long_min __glibcpp_u32_min
415 #define __glibcpp_unsigned_long_max __glibcpp_u32_max
416 #define __glibcpp_unsigned_long_digits __glibcpp_u32_digits
417 #define __glibcpp_unsigned_long_digits10 __glibcpp_u32_digits10
418 #elif __glibcpp_long_bits == 64
419 #define __glibcpp_signed_long_min (long)__glibcpp_s64_min
420 #define __glibcpp_signed_long_max (long)__glibcpp_s64_max
421 #define __glibcpp_signed_long_digits __glibcpp_s64_digits
422 #define __glibcpp_signed_long_digits10 __glibcpp_s64_digits10
423 #define __glibcpp_unsigned_long_min (unsigned long)__glibcpp_u64_min
424 #define __glibcpp_unsigned_long_max (unsigned long)__glibcpp_u64_max
425 #define __glibcpp_unsigned_long_digits __glibcpp_u64_digits
426 #define __glibcpp_unsigned_long_digits10 __glibcpp_u64_digits10
428 // You must define these macros in the configuration file.
431 #ifdef _GLIBCPP_USE_LONG_LONG
435 #define __glibcpp_signed_long_long_traps true
436 #define __glibcpp_signed_long_long_traps true
437 #if __glibcpp_long_long_bits == 8
438 #define __glibcpp_signed_long_long_min __glibcpp_s8_min
439 #define __glibcpp_signed_long_long_max __glibcpp_s8_max
440 #define __glibcpp_signed_long_long_digits __glibcpp_s8_digits
441 #define __glibcpp_signed_long_long_digits10 __glibcpp_s8_digits10
442 #define __glibcpp_unsigned_long_long_min __glibcpp_u8_min
443 #define __glibcpp_unsigned_long_long_max __glibcpp_u8_max
444 #define __glibcpp_unsigned_long_long_digits __glibcpp_u8_digits
445 #define __glibcpp_unsigned_long_long_digits10 __glibcpp_u8_digits10
446 #elif __glibcpp_long_long_bits == 16
447 #define __glibcpp_signed_long_long_min __glibcpp_s16_min
448 #define __glibcpp_signed_long_long_max __glibcpp_s16_max
449 #define __glibcpp_signed_long_long_digits __glibcpp_s16_digits
450 #define __glibcpp_signed_long_long_digits10 __glibcpp_s16_digits10
451 #define __glibcpp_unsigned_long_long_min __glibcpp_u16_min
452 #define __glibcpp_unsigned_long_long_max __glibcpp_u16_max
453 #define __glibcpp_unsigned_long_long_digits __glibcpp_u16_digits
454 #define __glibcpp_unsigned_long_long_digits10 __glibcpp_u16_digits10
455 #elif __glibcpp_long_long_bits == 32
456 #define __glibcpp_signed_long_long_min __glibcpp_s32_min
457 #define __glibcpp_signed_long_long_max __glibcpp_s32_max
458 #define __glibcpp_signed_long_long_digits __glibcpp_s32_digits
459 #define __glibcpp_signed_long_long_digits10 __glibcpp_s32_digits10
460 #define __glibcpp_unsigned_long_long_min __glibcpp_u32_min
461 #define __glibcpp_unsigned_long_long_max __glibcpp_u32_max
462 #define __glibcpp_unsigned_long_long_digits __glibcpp_u32_digits
463 #define __glibcpp_unsigned_long_long_digits10 __glibcpp_u32_digits10
464 #elif __glibcpp_long_long_bits == 64
465 #define __glibcpp_signed_long_long_min __glibcpp_s64_min
466 #define __glibcpp_signed_long_long_max __glibcpp_s64_max
467 #define __glibcpp_signed_long_long_digits __glibcpp_s64_digits
468 #define __glibcpp_signed_long_long_digits10 __glibcpp_s64_digits10
469 #define __glibcpp_signed_long_long_traps true
470 #define __glibcpp_unsigned_long_long_min __glibcpp_u64_min
471 #define __glibcpp_unsigned_long_long_max __glibcpp_u64_max
472 #define __glibcpp_unsigned_long_long_digits __glibcpp_u64_digits
473 #define __glibcpp_unsigned_long_long_digits10 __glibcpp_u64_digits10
474 #define __glibcpp_unsigned_long_long_traps true
476 // You must define these macros in the configuration file.
483 #define __glibcpp_wchar_t_traps true
484 #if __glibcpp_wchar_t_is_signed
485 #if __glibcpp_wchar_t_bits == 8
486 #define __glibcpp_wchar_t_min __glibcpp_s8_min
487 #define __glibcpp_wchar_t_max __glibcpp_s8_max
488 #define __glibcpp_wchar_t_digits __glibcpp_s8_digits
489 #define __glibcpp_wchar_t_digits10 __glibcpp_s8_digits10
490 #elif __glibcpp_wchar_t_bits == 16
491 #define __glibcpp_wchar_t_min __glibcpp_s16_min
492 #define __glibcpp_wchar_t_max __glibcpp_s16_max
493 #define __glibcpp_wchar_t_digits __glibcpp_s16_digits
494 #define __glibcpp_wchar_t_digits10 __glibcpp_s16_digits10
495 #elif __glibcpp_wchar_t_bits == 32
496 #define __glibcpp_wchar_t_min (wchar_t)__glibcpp_s32_min
497 #define __glibcpp_wchar_t_max (wchar_t)__glibcpp_s32_max
498 #define __glibcpp_wchar_t_digits __glibcpp_s32_digits
499 #define __glibcpp_wchar_t_digits10 __glibcpp_s32_digits10
500 #elif __glibcpp_wchar_t_bits == 64
501 #define __glibcpp_wchar_t_min (wchar_t)__glibcpp_s64_min
502 #define __glibcpp_wchar_t_max (wchar_t)__glibcpp_s64_max
503 #define __glibcpp_wchar_t_digits __glibcpp_s64_digits
504 #define __glibcpp_wchar_t_digits10 __glibcpp_s64_digits10
506 // You must define these macros in the configuration file.
509 #if __glibcpp_wchar_t_bits == 8
510 #define __glibcpp_wchar_t_min __glibcpp_u8_min
511 #define __glibcpp_wchar_t_max __glibcpp_u8_max
512 #define __glibcpp_wchar_t_digits __glibcpp_u8_digits
513 #define __glibcpp_wchar_t_digits10 __glibcpp_u8_digits10
514 #elif __glibcpp_wchar_t_bits == 16
515 #define __glibcpp_wchar_t_min __glibcpp_u16_min
516 #define __glibcpp_wchar_t_max __glibcpp_u16_max
517 #define __glibcpp_wchar_t_digits __glibcpp_u16_digits
518 #define __glibcpp_wchar_t_digits10 __glibcpp_u16_digits10
519 #elif __glibcpp_wchar_t_bits == 32
520 #define __glibcpp_wchar_t_min (wchar_t)__glibcpp_u32_min
521 #define __glibcpp_wchar_t_max (wchar_t)__glibcpp_u32_max
522 #define __glibcpp_wchar_t_digits __glibcpp_u32_digits
523 #define __glibcpp_wchar_t_digits10 __glibcpp_u32_digits10
524 #elif __glibcpp_wchar_t_bits == 64
525 #define __glibcpp_wchar_t_min (wchar_t)__glibcpp_u64_min
526 #define __glibcpp_wchar_t_max (wchar_t)__glibcpp_u64_max
527 #define __glibcpp_wchar_t_digits __glibcpp_u64_digits
528 #define __glibcpp_wchar_t_digits10 __glibcpp_u64_digits10
530 // You must define these macros in the configuration file.
537 #if __glibcpp_float_bits == 32
538 #define __glibcpp_float_min __glibcpp_f32_min
539 #define __glibcpp_float_max __glibcpp_f32_max
540 #define __glibcpp_float_digits __glibcpp_f32_digits
541 #define __glibcpp_float_digits10 __glibcpp_f32_digits10
542 #define __glibcpp_float_radix __glibcpp_f32_radix
543 #define __glibcpp_float_epsilon __glibcpp_f32_epsilon
544 #define __glibcpp_float_round_error __glibcpp_f32_round_error
545 #define __glibcpp_float_min_exponent __glibcpp_f32_min_exponent
546 #define __glibcpp_float_min_exponent10 __glibcpp_f32_min_exponent10
547 #define __glibcpp_float_max_exponent __glibcpp_f32_max_exponent
548 #define __glibcpp_float_max_exponent10 __glibcpp_f32_max_exponent10
549 #elif __glibcpp_float_bits == 64
550 #define __glibcpp_float_min __glibcpp_f64_min
551 #define __glibcpp_float_max __glibcpp_f64_max
552 #define __glibcpp_float_digits __glibcpp_f64_digits
553 #define __glibcpp_float_digits10 __glibcpp_f64_digits10
554 #define __glibcpp_float_radix __glibcpp_f64_radix
555 #define __glibcpp_float_epsilon __glibcpp_f64_epsilon
556 #define __glibcpp_float_round_error __glibcpp_f64_round_error
557 #define __glibcpp_float_min_exponent __glibcpp_f64_min_exponent
558 #define __glibcpp_float_min_exponent10 __glibcpp_f64_min_exponent10
559 #define __glibcpp_float_max_exponent __glibcpp_f64_max_exponent
560 #define __glibcpp_float_max_exponent10 __glibcpp_f64_max_exponent10
561 #elif __glibcpp_float_bits == 80
562 #define __glibcpp_float_min __glibcpp_f80_min
563 #define __glibcpp_float_max __glibcpp_f80_max
564 #define __glibcpp_float_digits __glibcpp_f80_digits
565 #define __glibcpp_float_digits10 __glibcpp_f80_digits10
566 #define __glibcpp_float_radix __glibcpp_f80_radix
567 #define __glibcpp_float_epsilon __glibcpp_f80_epsilon
568 #define __glibcpp_float_round_error __glibcpp_f80_round_error
569 #define __glibcpp_float_min_exponent __glibcpp_f80_min_exponent
570 #define __glibcpp_float_min_exponent10 __glibcpp_f80_min_exponent10
571 #define __glibcpp_float_max_exponent __glibcpp_f80_max_exponent
572 #define __glibcpp_float_max_exponent10 __glibcpp_f80_max_exponent10
574 // You must define these macros in the configuration file.
577 // FIXME: These are just stubs and inkorrect
579 #ifndef __glibcpp_float_has_infinity
580 #define __glibcpp_float_has_infinity false
583 #ifndef __glibcpp_float_has_quiet_NaM
584 #define __glibcpp_float_has_quiet_NaN false
587 #ifndef __glibcpp_float_has_signaling_NaN
588 #define __glibcpp_float_has_signaling_NaN false
591 #ifndef __glibcpp_float_has_denorm
592 #define __glibcpp_float_has_denorm denorm_absent
595 #ifndef __glibcpp_float_has_denorm_loss
596 #define __glibcpp_float_has_denorm_loss false
599 #ifndef __glibcpp_float_infinity
600 #define __glibcpp_float_infinity 0.0F
603 #ifndef __glibcpp_float_quiet_NaN
604 #define __glibcpp_float_quiet_NaN 0.0F
607 #ifndef __glibcpp_float_signaling_NaN
608 #define __glibcpp_float_signaling_NaN 0.0F
611 #ifndef __glibcpp_float_denorm_min
612 #define __glibcpp_float_denorm_min 0.0F
615 #ifndef __glibcpp_float_is_iec559
616 #define __glibcpp_float_is_iec559 false
619 #ifndef __glibcpp_float_is_bounded
620 #define __glibcpp_float_is_bounded true
623 #ifndef __glibcpp_float_is_modulo
624 #define __glibcpp_float_is_modulo false
627 #ifndef __glibcpp_float_traps
628 #define __glibcpp_float_traps false
631 #ifndef __glibcpp_float_tinyness_before
632 #define __glibcpp_float_tinyness_before false
635 #ifndef __glibcpp_float_round_style
636 #define __glibcpp_float_round_style round_toward_zero
641 #if __glibcpp_double_bits == 32
642 #define __glibcpp_double_min __glibcpp_f32_min
643 #define __glibcpp_double_max __glibcpp_f32_max
644 #define __glibcpp_double_digits __glibcpp_f32_digits
645 #define __glibcpp_double_digits10 __glibcpp_f32_digits10
646 #define __glibcpp_double_radix __glibcpp_f32_radix
647 #define __glibcpp_double_epsilon __glibcpp_f32_epsilon
648 #define __glibcpp_double_round_error __glibcpp_f32_round_error
649 #define __glibcpp_double_min_exponent __glibcpp_f32_min_exponent
650 #define __glibcpp_double_min_exponent10 __glibcpp_f32_min_exponent10
651 #define __glibcpp_double_max_exponent __glibcpp_f32_max_exponent
652 #define __glibcpp_double_max_exponent10 __glibcpp_f32_max_exponent10
653 #elif __glibcpp_double_bits == 64
654 #define __glibcpp_double_min __glibcpp_f64_min
655 #define __glibcpp_double_max __glibcpp_f64_max
656 #define __glibcpp_double_digits __glibcpp_f64_digits
657 #define __glibcpp_double_digits10 __glibcpp_f64_digits10
658 #define __glibcpp_double_radix __glibcpp_f64_radix
659 #define __glibcpp_double_epsilon __glibcpp_f64_epsilon
660 #define __glibcpp_double_round_error __glibcpp_f64_round_error
661 #define __glibcpp_double_min_exponent __glibcpp_f64_min_exponent
662 #define __glibcpp_double_min_exponent10 __glibcpp_f64_min_exponent10
663 #define __glibcpp_double_max_exponent __glibcpp_f64_max_exponent
664 #define __glibcpp_double_max_exponent10 __glibcpp_f64_max_exponent10
665 #elif __glibcpp_double_bits == 80
666 #define __glibcpp_double_min __glibcpp_f80_min
667 #define __glibcpp_double_max __glibcpp_f80_max
668 #define __glibcpp_double_digits __glibcpp_f80_digits
669 #define __glibcpp_double_digits10 __glibcpp_f80_digits10
670 #define __glibcpp_double_radix __glibcpp_f80_radix
671 #define __glibcpp_double_epsilon __glibcpp_f80_epsilon
672 #define __glibcpp_double_round_error __glibcpp_f80_round_error
673 #define __glibcpp_double_min_exponent __glibcpp_f80_min_exponent
674 #define __glibcpp_double_min_exponent10 __glibcpp_f80_min_exponent10
675 #define __glibcpp_double_max_exponent __glibcpp_f80_max_exponent
676 #define __glibcpp_double_max_exponent10 __glibcpp_f80_max_exponent10
678 // You must define these macros in the configuration file.
681 // FIXME: These are just stubs and inkorrect
683 #ifndef __glibcpp_double_has_infinity
684 #define __glibcpp_double_has_infinity false
687 #ifndef __glibcpp_double_has_quiet_NaM
688 #define __glibcpp_double_has_quiet_NaN false
691 #ifndef __glibcpp_double_has_signaling_NaN
692 #define __glibcpp_double_has_signaling_NaN false
695 #ifndef __glibcpp_double_has_denorm
696 #define __glibcpp_double_has_denorm denorm_absent
699 #ifndef __glibcpp_double_has_denorm_loss
700 #define __glibcpp_double_has_denorm_loss false
703 #ifndef __glibcpp_double_infinity
704 #define __glibcpp_double_infinity 0.0
707 #ifndef __glibcpp_double_quiet_NaN
708 #define __glibcpp_double_quiet_NaN 0.0
711 #ifndef __glibcpp_double_signaling_NaN
712 #define __glibcpp_double_signaling_NaN 0.0
715 #ifndef __glibcpp_double_denorm_min
716 #define __glibcpp_double_denorm_min 0.0
719 #ifndef __glibcpp_double_is_iec559
720 #define __glibcpp_double_is_iec559 false
723 #ifndef __glibcpp_double_is_bounded
724 #define __glibcpp_double_is_bounded true
727 #ifndef __glibcpp_double_is_modulo
728 #define __glibcpp_double_is_modulo false
731 #ifndef __glibcpp_double_traps
732 #define __glibcpp_double_traps false
735 #ifndef __glibcpp_double_tinyness_before
736 #define __glibcpp_double_tinyness_before false
739 #ifndef __glibcpp_double_round_style
740 #define __glibcpp_double_round_style round_toward_zero
745 #if __glibcpp_long_double_bits == 32
746 #define __glibcpp_long_double_min __glibcpp_f32_min
747 #define __glibcpp_long_double_max __glibcpp_f32_max
748 #define __glibcpp_long_double_digits __glibcpp_f32_digits
749 #define __glibcpp_long_double_digits10 __glibcpp_f32_digits10
750 #define __glibcpp_long_double_radix __glibcpp_f32_radix
751 #define __glibcpp_long_double_epsilon __glibcpp_f32_epsilon
752 #define __glibcpp_long_double_round_error __glibcpp_f32_round_error
753 #define __glibcpp_long_double_min_exponent __glibcpp_f32_min_exponent
754 #define __glibcpp_long_double_min_exponent10 __glibcpp_f32_min_exponent10
755 #define __glibcpp_long_double_max_exponent __glibcpp_f32_max_exponent
756 #define __glibcpp_long_double_max_exponent10 __glibcpp_f32_max_exponent10
757 #elif __glibcpp_long_double_bits == 64
758 #define __glibcpp_long_double_min __glibcpp_f64_min
759 #define __glibcpp_long_double_max __glibcpp_f64_max
760 #define __glibcpp_long_double_digits __glibcpp_f64_digits
761 #define __glibcpp_long_double_digits10 __glibcpp_f64_digits10
762 #define __glibcpp_long_double_radix __glibcpp_f64_radix
763 #define __glibcpp_long_double_epsilon __glibcpp_f64_epsilon
764 #define __glibcpp_long_double_round_error __glibcpp_f64_round_error
765 #define __glibcpp_long_double_min_exponent __glibcpp_f64_min_exponent
766 #define __glibcpp_long_double_min_exponent10 __glibcpp_f64_min_exponent10
767 #define __glibcpp_long_double_max_exponent __glibcpp_f64_max_exponent
768 #define __glibcpp_long_double_max_exponent10 __glibcpp_f64_max_exponent10
769 #elif __glibcpp_long_double_bits == 80
770 #define __glibcpp_long_double_min __glibcpp_f80_min
771 #define __glibcpp_long_double_max __glibcpp_f80_max
772 #define __glibcpp_long_double_digits __glibcpp_f80_digits
773 #define __glibcpp_long_double_digits10 __glibcpp_f80_digits10
774 #define __glibcpp_long_double_radix __glibcpp_f80_radix
775 #define __glibcpp_long_double_epsilon __glibcpp_f80_epsilon
776 #define __glibcpp_long_double_round_error __glibcpp_f80_round_error
777 #define __glibcpp_long_double_min_exponent __glibcpp_f80_min_exponent
778 #define __glibcpp_long_double_min_exponent10 __glibcpp_f80_min_exponent10
779 #define __glibcpp_long_double_max_exponent __glibcpp_f80_max_exponent
780 #define __glibcpp_long_double_max_exponent10 __glibcpp_f80_max_exponent10
781 #elif __glibcpp_long_double_bits == 96
782 #define __glibcpp_long_double_min __glibcpp_f96_min
783 #define __glibcpp_long_double_max __glibcpp_f96_max
784 #define __glibcpp_long_double_digits __glibcpp_f96_digits
785 #define __glibcpp_long_double_digits10 __glibcpp_f96_digits10
786 #define __glibcpp_long_double_radix __glibcpp_f96_radix
787 #define __glibcpp_long_double_epsilon __glibcpp_f96_epsilon
788 #define __glibcpp_long_double_round_error __glibcpp_f96_round_error
789 #define __glibcpp_long_double_min_exponent __glibcpp_f96_min_exponent
790 #define __glibcpp_long_double_min_exponent10 __glibcpp_f96_min_exponent10
791 #define __glibcpp_long_double_max_exponent __glibcpp_f96_max_exponent
792 #define __glibcpp_long_double_max_exponent10 __glibcpp_f96_max_exponent10
793 #elif __glibcpp_long_double_bits == 128
794 #define __glibcpp_long_double_min __glibcpp_f128_min
795 #define __glibcpp_long_double_max __glibcpp_f128_max
796 #define __glibcpp_long_double_digits __glibcpp_f128_digits
797 #define __glibcpp_long_double_digits10 __glibcpp_f128_digits10
798 #define __glibcpp_long_double_radix __glibcpp_f128_radix
799 #define __glibcpp_long_double_epsilon __glibcpp_f128_epsilon
800 #define __glibcpp_long_double_round_error __glibcpp_f128_round_error
801 #define __glibcpp_long_double_min_exponent __glibcpp_f128_min_exponent
802 #define __glibcpp_long_double_min_exponent10 __glibcpp_f128_min_exponent10
803 #define __glibcpp_long_double_max_exponent __glibcpp_f128_max_exponent
804 #define __glibcpp_long_double_max_exponent10 __glibcpp_f128_max_exponent10
806 // You must define these macros in the configuration file.
809 // FIXME: These are just stubs and inkorrect
811 #ifndef __glibcpp_long_double_has_infinity
812 #define __glibcpp_long_double_has_infinity false
815 #ifndef __glibcpp_long_double_has_quiet_NaN
816 #define __glibcpp_long_double_has_quiet_NaN false
819 #ifndef __glibcpp_long_double_has_signaling_NaN
820 #define __glibcpp_long_double_has_signaling_NaN false
823 #ifndef __glibcpp_long_double_has_denorm
824 #define __glibcpp_long_double_has_denorm denorm_absent
827 #ifndef __glibcpp_long_double_has_denorm_loss
828 #define __glibcpp_long_double_has_denorm_loss false
831 #ifndef __glibcpp_long_double_infinity
832 #define __glibcpp_long_double_infinity 0.0L
835 #ifndef __glibcpp_long_double_quiet_NaN
836 #define __glibcpp_long_double_quiet_NaN 0.0L
839 #ifndef __glibcpp_long_double_signaling_NaN
840 #define __glibcpp_long_double_signaling_NaN 0.0L
843 #ifndef __glibcpp_long_double_denorm_min
844 #define __glibcpp_long_double_denorm_min 0.0L
847 #ifndef __glibcpp_long_double_is_iec559
848 #define __glibcpp_long_double_is_iec559 false
851 #ifndef __glibcpp_long_double_is_bounded
852 #define __glibcpp_long_double_is_bounded false
855 #ifndef __glibcpp_long_double_is_modulo
856 #define __glibcpp_long_double_is_modulo false
859 #ifndef __glibcpp_long_double_traps
860 #define __glibcpp_long_double_traps false
863 #ifndef __glibcpp_long_double_tinyness_before
864 #define __glibcpp_long_double_tinyness_before false
867 #ifndef __glibcpp_long_double_round_style
868 #define __glibcpp_long_double_round_style round_toward_zero
874 enum float_round_style
876 round_indeterminate = -1,
877 round_toward_zero = 0,
878 round_to_nearest = 1,
879 round_toward_infinity = 2,
880 round_toward_neg_infinity = 3
883 enum float_denorm_style
885 denorm_indeterminate = -1,
891 // The primary class traits
893 template<typename _Tp>
894 struct numeric_limits
896 static const bool is_specialized = false;
898 static _Tp min() throw() { return static_cast<_Tp>(0); }
899 static _Tp max() throw() { return static_cast<_Tp>(0); }
901 static const int digits = 0;
902 static const int digits10 = 0;
903 static const bool is_signed = false;
904 static const bool is_integer = false;
905 static const bool is_exact = false;
906 static const int radix = 0;
908 static _Tp epsilon() throw() { return static_cast<_Tp>(0); }
909 static _Tp round_error() throw() { return static_cast<_Tp>(0); }
911 static const int min_exponent = 0;
912 static const int min_exponent10 = 0;
913 static const int max_exponent = 0;
914 static const int max_exponent10 = 0;
916 static const bool has_infinity = false;
917 static const bool has_quiet_NaN = false;
918 static const bool has_signaling_NaN = false;
919 static const float_denorm_style has_denorm = denorm_absent;
920 static const bool has_denorm_loss = false;
922 static _Tp infinity() throw() { return static_cast<_Tp>(0); }
923 static _Tp quiet_NaN() throw() { return static_cast<_Tp>(0); }
924 static _Tp signaling_NaN() throw() { return static_cast<_Tp>(0); }
925 static _Tp denorm_min() throw() { return static_cast<_Tp>(0); }
927 static const bool is_iec559 = false;
928 static const bool is_bounded = false;
929 static const bool is_modulo = false;
931 static const bool traps = false;
932 static const bool tinyness_before = false;
933 static const float_round_style round_style = round_toward_zero;
936 template<typename _Tp>
938 numeric_limits<_Tp>::is_specialized;
940 template<typename _Tp>
942 numeric_limits<_Tp>::digits;
944 template<typename _Tp>
946 numeric_limits<_Tp>::digits10;
948 template<typename _Tp>
950 numeric_limits<_Tp>::is_signed;
952 template<typename _Tp>
954 numeric_limits<_Tp>::is_integer;
956 template<typename _Tp>
958 numeric_limits<_Tp>::is_exact;
960 template<typename _Tp>
962 numeric_limits<_Tp>::radix;
964 template<typename _Tp>
966 numeric_limits<_Tp>::min_exponent;
968 template<typename _Tp>
970 numeric_limits<_Tp>::min_exponent10;
972 template<typename _Tp>
974 numeric_limits<_Tp>::max_exponent;
976 template<typename _Tp>
978 numeric_limits<_Tp>::max_exponent10;
980 template<typename _Tp>
982 numeric_limits<_Tp>::has_infinity;
984 template<typename _Tp>
986 numeric_limits<_Tp>::has_quiet_NaN;
988 template<typename _Tp>
990 numeric_limits<_Tp>::has_signaling_NaN;
992 template<typename _Tp>
993 const float_denorm_style
994 numeric_limits<_Tp>::has_denorm;
996 template<typename _Tp>
998 numeric_limits<_Tp>::has_denorm_loss;
1000 template<typename _Tp>
1002 numeric_limits<_Tp>::is_iec559;
1004 template<typename _Tp>
1006 numeric_limits<_Tp>::is_bounded;
1008 template<typename _Tp>
1010 numeric_limits<_Tp>::is_modulo;
1012 template<typename _Tp>
1014 numeric_limits<_Tp>::traps;
1016 template<typename _Tp>
1018 numeric_limits<_Tp>::tinyness_before;
1020 template<typename _Tp>
1021 const float_round_style
1022 numeric_limits<_Tp>::round_style;
1024 // Now there follow 15 explicit specializations. Yes, 15. Make sure
1025 // you get the count right.
1028 struct numeric_limits<bool>
1030 static const bool is_specialized = true;
1032 static bool min() throw()
1035 static bool max() throw()
1038 static const int digits = __glibcpp_bool_digits;
1039 static const int digits10 = 1;
1040 static const bool is_signed = false;
1041 static const bool is_integer = true;
1042 static const bool is_exact = true;
1043 static const int radix = 2;
1044 static bool epsilon() throw()
1046 static bool round_error() throw()
1049 static const int min_exponent = 0;
1050 static const int min_exponent10 = 0;
1051 static const int max_exponent = 0;
1052 static const int max_exponent10 = 0;
1054 static const bool has_infinity = false;
1055 static const bool has_quiet_NaN = false;
1056 static const bool has_signaling_NaN = false;
1057 static const float_denorm_style has_denorm = denorm_absent;
1058 static const bool has_denorm_loss = false;
1060 static bool infinity() throw()
1062 static bool quiet_NaN() throw()
1064 static bool signaling_NaN() throw()
1066 static bool denorm_min() throw()
1069 static const bool is_iec559 = true;
1070 static const bool is_bounded = true;
1071 static const bool is_modulo = true;
1073 // It is not clear what it means for a boolean type to trap.
1074 // This is a DR on the LWG issue list. Here, I use integer
1075 // promotion semantics.
1076 static const bool traps = __glibcpp_signed_int_traps
1077 || __glibcpp_signed_long_traps;
1078 static const bool tinyness_before = false;
1079 static const float_round_style round_style = round_toward_zero;
1082 #undef __glibcpp_bool_digits
1085 struct numeric_limits<char>
1087 static const bool is_specialized = true;
1089 static char min() throw()
1090 { return __glibcpp_char_min; }
1091 static char max() throw()
1092 { return __glibcpp_char_max; }
1094 static const int digits = __glibcpp_char_digits;
1095 static const int digits10 = __glibcpp_char_digits10;
1096 static const bool is_signed = __glibcpp_plain_char_is_signed;
1097 static const bool is_integer = true;
1098 static const bool is_exact = true;
1099 static const int radix = 2;
1100 static char epsilon() throw()
1102 static char round_error() throw()
1105 static const int min_exponent = 0;
1106 static const int min_exponent10 = 0;
1107 static const int max_exponent = 0;
1108 static const int max_exponent10 = 0;
1110 static const bool has_infinity = false;
1111 static const bool has_quiet_NaN = false;
1112 static const bool has_signaling_NaN = false;
1113 static const float_denorm_style has_denorm = denorm_absent;
1114 static const bool has_denorm_loss = false;
1116 static char infinity() throw()
1118 static char quiet_NaN() throw()
1120 static char signaling_NaN() throw()
1122 static char denorm_min() throw()
1123 { return static_cast<char>(0); }
1125 static const bool is_iec559 = false;
1126 static const bool is_bounded = true;
1127 static const bool is_modulo = false;
1129 static const bool traps = __glibcpp_signed_char_traps;
1130 static const bool tinyness_before = false;
1131 static const float_round_style round_style = round_toward_zero;
1134 #undef __glibcpp_char_min
1135 #undef __glibcpp_char_max
1136 #undef __glibcpp_char_digits
1137 #undef __glibcpp_char_digits10
1138 #undef __glibcpp_char_is_signed
1139 #undef __glibcpp_char_traps
1143 struct numeric_limits<signed char>
1145 static const bool is_specialized = true;
1147 static signed char min() throw()
1148 { return __glibcpp_signed_char_min; }
1149 static signed char max() throw()
1150 { return __glibcpp_signed_char_max; }
1152 static const int digits = __glibcpp_signed_char_digits;
1153 static const int digits10 = __glibcpp_signed_char_digits10;
1154 static const bool is_signed = true;
1155 static const bool is_integer = true;
1156 static const bool is_exact = true;
1157 static const int radix = 2;
1158 static signed char epsilon() throw()
1160 static signed char round_error() throw()
1163 static const int min_exponent = 0;
1164 static const int min_exponent10 = 0;
1165 static const int max_exponent = 0;
1166 static const int max_exponent10 = 0;
1168 static const bool has_infinity = false;
1169 static const bool has_quiet_NaN = false;
1170 static const bool has_signaling_NaN = false;
1171 static const float_denorm_style has_denorm = denorm_absent;
1172 static const bool has_denorm_loss = false;
1174 static signed char infinity() throw()
1175 { return static_cast<signed char>(0); }
1176 static signed char quiet_NaN() throw()
1177 { return static_cast<signed char>(0); }
1178 static signed char signaling_NaN() throw()
1179 { return static_cast<signed char>(0); }
1180 static signed char denorm_min() throw()
1181 { return static_cast<signed char>(0); }
1183 static const bool is_iec559 = false;
1184 static const bool is_bounded = true;
1185 static const bool is_modulo = false;
1187 static const bool traps = __glibcpp_signed_char_traps;
1188 static const bool tinyness_before = false;
1189 static const float_round_style round_style = round_toward_zero;
1192 #undef __glibcpp_signed_char_min
1193 #undef __glibcpp_signed_char_max
1194 #undef __glibcpp_signed_char_digits
1195 #undef __glibcpp_signed_char_digits10
1196 #undef __glibcpp_signed_char_traps
1199 struct numeric_limits<unsigned char>
1201 static const bool is_specialized = true;
1203 static unsigned char min() throw()
1205 static unsigned char max() throw()
1206 { return __glibcpp_unsigned_char_max; }
1208 static const int digits = __glibcpp_unsigned_char_digits;
1209 static const int digits10 = __glibcpp_unsigned_char_digits10;
1210 static const bool is_signed = false;
1211 static const bool is_integer = true;
1212 static const bool is_exact = true;
1213 static const int radix = 2;
1214 static unsigned char epsilon() throw()
1216 static unsigned char round_error() throw()
1219 static const int min_exponent = 0;
1220 static const int min_exponent10 = 0;
1221 static const int max_exponent = 0;
1222 static const int max_exponent10 = 0;
1224 static const bool has_infinity = false;
1225 static const bool has_quiet_NaN = false;
1226 static const bool has_signaling_NaN = false;
1227 static const float_denorm_style has_denorm = denorm_absent;
1228 static const bool has_denorm_loss = false;
1230 static unsigned char infinity() throw()
1231 { return static_cast<unsigned char>(0); }
1232 static unsigned char quiet_NaN() throw()
1233 { return static_cast<unsigned char>(0); }
1234 static unsigned char signaling_NaN() throw()
1235 { return static_cast<unsigned char>(0); }
1236 static unsigned char denorm_min() throw()
1237 { return static_cast<unsigned char>(0); }
1239 static const bool is_iec559 = false;
1240 static const bool is_bounded = true;
1241 static const bool is_modulo = true;
1243 static const bool traps = __glibcpp_unsigned_char_traps;
1244 static const bool tinyness_before = false;
1245 static const float_round_style round_style = round_toward_zero;
1248 #undef __glibcpp_unsigned_char_max
1249 #undef __glibcpp_unsigned_char_digits
1250 #undef __glibcpp_unsigned_char_digits10
1251 #undef __glibcpp_unsigned_char_traps
1254 struct numeric_limits<wchar_t>
1256 static const bool is_specialized = true;
1258 static wchar_t min() throw()
1259 { return __glibcpp_wchar_t_min; }
1260 static wchar_t max() throw()
1261 { return __glibcpp_wchar_t_max; }
1263 static const int digits = __glibcpp_wchar_t_digits;
1264 static const int digits10 = __glibcpp_wchar_t_digits10;
1265 static const bool is_signed = __glibcpp_wchar_t_is_signed;
1266 static const bool is_integer = true;
1267 static const bool is_exact = true;
1268 static const int radix = 2;
1269 static wchar_t epsilon() throw()
1271 static wchar_t round_error() throw()
1274 static const int min_exponent = 0;
1275 static const int min_exponent10 = 0;
1276 static const int max_exponent = 0;
1277 static const int max_exponent10 = 0;
1279 static const bool has_infinity = false;
1280 static const bool has_quiet_NaN = false;
1281 static const bool has_signaling_NaN = false;
1282 static const float_denorm_style has_denorm = denorm_absent;
1283 static const bool has_denorm_loss = false;
1285 static wchar_t infinity() throw()
1286 { return wchar_t(); }
1287 static wchar_t quiet_NaN() throw()
1288 { return wchar_t(); }
1289 static wchar_t signaling_NaN() throw()
1290 { return wchar_t(); }
1291 static wchar_t denorm_min() throw()
1292 { return wchar_t(); }
1294 static const bool is_iec559 = false;
1295 static const bool is_bounded = true;
1296 static const bool is_modulo = false;
1298 static const bool traps = __glibcpp_wchar_t_traps;
1299 static const bool tinyness_before = false;
1300 static const float_round_style round_style = round_toward_zero;
1303 #undef __glibcpp_wchar_t_min
1304 #undef __glibcpp_wchar_t_max
1305 #undef __glibcpp_wchar_t_digits
1306 #undef __glibcpp_wchar_t_digits10
1307 #undef __glibcpp_wchar_t_is_signed
1308 #undef __glibcpp_wchar_t_traps
1311 struct numeric_limits<short>
1313 static const bool is_specialized = true;
1315 static short min() throw()
1316 { return __glibcpp_signed_short_min; }
1317 static short max() throw()
1318 { return __glibcpp_signed_short_max; }
1320 static const int digits = __glibcpp_signed_short_digits;
1321 static const int digits10 = __glibcpp_signed_short_digits10;
1322 static const bool is_signed = true;
1323 static const bool is_integer = true;
1324 static const bool is_exact = true;
1325 static const int radix = 2;
1326 static short epsilon() throw()
1328 static short round_error() throw()
1331 static const int min_exponent = 0;
1332 static const int min_exponent10 = 0;
1333 static const int max_exponent = 0;
1334 static const int max_exponent10 = 0;
1336 static const bool has_infinity = false;
1337 static const bool has_quiet_NaN = false;
1338 static const bool has_signaling_NaN = false;
1339 static const float_denorm_style has_denorm = denorm_absent;
1340 static const bool has_denorm_loss = false;
1342 static short infinity() throw()
1344 static short quiet_NaN() throw()
1346 static short signaling_NaN() throw()
1348 static short denorm_min() throw()
1351 static const bool is_iec559 = true;
1352 static const bool is_bounded = true;
1353 static const bool is_modulo = false;
1355 static const bool traps = __glibcpp_signed_short_traps;
1356 static const bool tinyness_before = false;
1357 static const float_round_style round_style = round_toward_zero;
1360 #undef __glibcpp_signed_short_min
1361 #undef __glibcpp_signed_short_max
1362 #undef __glibcpp_signed_short_digits
1363 #undef __glibcpp_signed_short_digits10
1364 #undef __glibcpp_signed_short_traps
1367 struct numeric_limits<unsigned short>
1369 static const bool is_specialized = true;
1371 static unsigned short min() throw()
1373 static unsigned short max() throw()
1374 { return __glibcpp_unsigned_short_max; }
1376 static const int digits = __glibcpp_unsigned_short_digits;
1377 static const int digits10 = __glibcpp_unsigned_short_digits10;
1378 static const bool is_signed = false;
1379 static const bool is_integer = true;
1380 static const bool is_exact = true;
1381 static const int radix = 2;
1382 static unsigned short epsilon() throw()
1384 static unsigned short round_error() throw()
1387 static const int min_exponent = 0;
1388 static const int min_exponent10 = 0;
1389 static const int max_exponent = 0;
1390 static const int max_exponent10 = 0;
1392 static const bool has_infinity = false;
1393 static const bool has_quiet_NaN = false;
1394 static const bool has_signaling_NaN = false;
1395 static const float_denorm_style has_denorm = denorm_absent;
1396 static const bool has_denorm_loss = false;
1398 static unsigned short infinity() throw()
1399 { return static_cast<unsigned short>(0); }
1400 static unsigned short quiet_NaN() throw()
1401 { return static_cast<unsigned short>(0); }
1402 static unsigned short signaling_NaN() throw()
1403 { return static_cast<unsigned short>(0); }
1404 static unsigned short denorm_min() throw()
1405 { return static_cast<unsigned short>(0); }
1407 static const bool is_iec559 = true;
1408 static const bool is_bounded = true;
1409 static const bool is_modulo = true;
1411 static const bool traps = __glibcpp_unsigned_short_traps;
1412 static const bool tinyness_before = false;
1413 static const float_round_style round_style = round_toward_zero;
1416 #undef __glibcpp_unsigned_short_max
1417 #undef __glibcpp_unsigned_short_digits
1418 #undef __glibcpp_unsigned_short_digits10
1419 #undef __glibcpp_unsigned_short_traps
1422 struct numeric_limits<int>
1424 static const bool is_specialized = true;
1426 static int min() throw()
1427 { return __glibcpp_signed_int_min; }
1428 static int max() throw()
1429 { return __glibcpp_signed_int_max; }
1431 static const int digits = __glibcpp_signed_int_digits;
1432 static const int digits10 = __glibcpp_signed_int_digits10;
1433 static const bool is_signed = true;
1434 static const bool is_integer = true;
1435 static const bool is_exact = true;
1436 static const int radix = 2;
1437 static int epsilon() throw()
1439 static int round_error() throw()
1442 static const int min_exponent = 0;
1443 static const int min_exponent10 = 0;
1444 static const int max_exponent = 0;
1445 static const int max_exponent10 = 0;
1447 static const bool has_infinity = false;
1448 static const bool has_quiet_NaN = false;
1449 static const bool has_signaling_NaN = false;
1450 static const float_denorm_style has_denorm = denorm_absent;
1451 static const bool has_denorm_loss = false;
1453 static int infinity() throw()
1454 { return static_cast<int>(0); }
1455 static int quiet_NaN() throw()
1456 { return static_cast<int>(0); }
1457 static int signaling_NaN() throw()
1458 { return static_cast<int>(0); }
1459 static int denorm_min() throw()
1460 { return static_cast<int>(0); }
1462 static const bool is_iec559 = true;
1463 static const bool is_bounded = true;
1464 static const bool is_modulo = false;
1466 static const bool traps = __glibcpp_signed_int_traps;
1467 static const bool tinyness_before = false;
1468 static const float_round_style round_style = round_toward_zero;
1471 #undef __glibcpp_signed_int_min
1472 #undef __glibcpp_signed_int_max
1473 #undef __glibcpp_signed_int_digits
1474 #undef __glibcpp_signed_int_digits10
1475 #undef __glibcpp_signed_int_traps
1478 struct numeric_limits<unsigned int>
1480 static const bool is_specialized = true;
1482 static unsigned int min() throw()
1484 static unsigned int max() throw()
1485 { return __glibcpp_unsigned_int_max; }
1487 static const int digits = __glibcpp_unsigned_int_digits;
1488 static const int digits10 = __glibcpp_unsigned_int_digits10;
1489 static const bool is_signed = false;
1490 static const bool is_integer = true;
1491 static const bool is_exact = true;
1492 static const int radix = 2;
1493 static unsigned int epsilon() throw()
1495 static unsigned int round_error() throw()
1498 static const int min_exponent = 0;
1499 static const int min_exponent10 = 0;
1500 static const int max_exponent = 0;
1501 static const int max_exponent10 = 0;
1503 static const bool has_infinity = false;
1504 static const bool has_quiet_NaN = false;
1505 static const bool has_signaling_NaN = false;
1506 static const float_denorm_style has_denorm = denorm_absent;
1507 static const bool has_denorm_loss = false;
1509 static unsigned int infinity() throw()
1510 { return static_cast<unsigned int>(0); }
1511 static unsigned int quiet_NaN() throw()
1512 { return static_cast<unsigned int>(0); }
1513 static unsigned int signaling_NaN() throw()
1514 { return static_cast<unsigned int>(0); }
1515 static unsigned int denorm_min() throw()
1516 { return static_cast<unsigned int>(0); }
1518 static const bool is_iec559 = true;
1519 static const bool is_bounded = true;
1520 static const bool is_modulo = true;
1522 static const bool traps = __glibcpp_unsigned_int_traps;
1523 static const bool tinyness_before = false;
1524 static const float_round_style round_style = round_toward_zero;
1527 #undef __glibcpp_unsigned_int_max
1528 #undef __glibcpp_unsigned_int_digits
1529 #undef __glibcpp_unsigned_int_digits10
1530 #undef __glibcpp_unsigned_int_traps
1533 struct numeric_limits<long>
1535 static const bool is_specialized = true;
1537 static long min() throw()
1538 { return __glibcpp_signed_long_min; }
1539 static long max() throw()
1540 { return __glibcpp_signed_long_max; }
1542 static const int digits = __glibcpp_signed_long_digits;
1543 static const int digits10 = __glibcpp_signed_long_digits10;
1544 static const bool is_signed = true;
1545 static const bool is_integer = true;
1546 static const bool is_exact = true;
1547 static const int radix = 2;
1548 static long epsilon() throw()
1550 static long round_error() throw()
1553 static const int min_exponent = 0;
1554 static const int min_exponent10 = 0;
1555 static const int max_exponent = 0;
1556 static const int max_exponent10 = 0;
1558 static const bool has_infinity = false;
1559 static const bool has_quiet_NaN = false;
1560 static const bool has_signaling_NaN = false;
1561 static const float_denorm_style has_denorm = denorm_absent;
1562 static const bool has_denorm_loss = false;
1564 static long infinity() throw()
1565 { return static_cast<long>(0); }
1566 static long quiet_NaN() throw()
1567 { return static_cast<long>(0); }
1568 static long signaling_NaN() throw()
1569 { return static_cast<long>(0); }
1570 static long denorm_min() throw()
1571 { return static_cast<long>(0); }
1573 static const bool is_iec559 = true;
1574 static const bool is_bounded = true;
1575 static const bool is_modulo = false;
1577 static const bool traps = __glibcpp_signed_long_traps;
1578 static const bool tinyness_before = false;
1579 static const float_round_style round_style = round_toward_zero;
1582 #undef __glibcpp_signed_long_min
1583 #undef __glibcpp_signed_long_max
1584 #undef __glibcpp_signed_long_digits
1585 #undef __glibcpp_signed_long_digits10
1586 #undef __glibcpp_signed_long_traps
1589 struct numeric_limits<unsigned long>
1591 static const bool is_specialized = true;
1593 static unsigned long min() throw()
1595 static unsigned long max() throw()
1596 { return __glibcpp_unsigned_long_max; }
1598 static const int digits = __glibcpp_unsigned_long_digits;
1599 static const int digits10 = __glibcpp_unsigned_long_digits10;
1600 static const bool is_signed = false;
1601 static const bool is_integer = true;
1602 static const bool is_exact = true;
1603 static const int radix = 2;
1604 static unsigned long epsilon() throw()
1606 static unsigned long round_error() throw()
1609 static const int min_exponent = 0;
1610 static const int min_exponent10 = 0;
1611 static const int max_exponent = 0;
1612 static const int max_exponent10 = 0;
1614 static const bool has_infinity = false;
1615 static const bool has_quiet_NaN = false;
1616 static const bool has_signaling_NaN = false;
1617 static const float_denorm_style has_denorm = denorm_absent;
1618 static const bool has_denorm_loss = false;
1620 static unsigned long infinity() throw()
1621 { return static_cast<unsigned long>(0); }
1622 static unsigned long quiet_NaN() throw()
1623 { return static_cast<unsigned long>(0); }
1624 static unsigned long signaling_NaN() throw()
1625 { return static_cast<unsigned long>(0); }
1626 static unsigned long denorm_min() throw()
1627 { return static_cast<unsigned long>(0); }
1629 static const bool is_iec559 = true;
1630 static const bool is_bounded = true;
1631 static const bool is_modulo = true;
1633 static const bool traps = __glibcpp_unsigned_long_traps;
1634 static const bool tinyness_before = false;
1635 static const float_round_style round_style = round_toward_zero;
1638 #undef __glibcpp_unsigned_long_max
1639 #undef __glibcpp_unsigned_long_digits
1640 #undef __glibcpp_unsigned_long_digits10
1641 #undef __glibcpp_unsigned_long_traps
1643 #ifdef _GLIBCPP_USE_LONG_LONG
1646 struct numeric_limits<long long>
1648 static const bool is_specialized = true;
1650 static long long min() throw()
1651 { return __glibcpp_signed_long_long_min; }
1652 static long long max() throw()
1653 { return __glibcpp_signed_long_long_max; }
1655 static const int digits = __glibcpp_signed_long_long_digits;
1656 static const int digits10 = __glibcpp_signed_long_long_digits10;
1657 static const bool is_signed = true;
1658 static const bool is_integer = true;
1659 static const bool is_exact = true;
1660 static const int radix = 2;
1661 static long long epsilon() throw()
1663 static long long round_error() throw()
1666 static const int min_exponent = 0;
1667 static const int min_exponent10 = 0;
1668 static const int max_exponent = 0;
1669 static const int max_exponent10 = 0;
1671 static const bool has_infinity = false;
1672 static const bool has_quiet_NaN = false;
1673 static const bool has_signaling_NaN = false;
1674 static const float_denorm_style has_denorm = denorm_absent;
1675 static const bool has_denorm_loss = false;
1677 static long long infinity() throw()
1678 { return static_cast<long long>(0); }
1679 static long long quiet_NaN() throw()
1680 { return static_cast<long long>(0); }
1681 static long long signaling_NaN() throw()
1682 { return static_cast<long long>(0); }
1683 static long long denorm_min() throw()
1684 { return static_cast<long long>(0); }
1686 static const bool is_iec559 = true;
1687 static const bool is_bounded = true;
1688 static const bool is_modulo = false;
1690 static const bool traps = __glibcpp_signed_long_long_traps;
1691 static const bool tinyness_before = false;
1692 static const float_round_style round_style = round_toward_zero;
1695 #undef __glibcpp_signed_long_long_min
1696 #undef __glibcpp_signed_long_long_max
1697 #undef __glibcpp_signed_long_long_digits
1698 #undef __glibcpp_signed_long_long_digits10
1699 #undef __glibcpp_signed_long_long_traps
1702 struct numeric_limits<unsigned long long>
1704 static const bool is_specialized = true;
1706 static unsigned long long min() throw()
1708 static unsigned long long max() throw()
1709 { return __glibcpp_unsigned_long_long_max; }
1711 static const int digits = __glibcpp_unsigned_long_long_digits;
1712 static const int digits10 = __glibcpp_unsigned_long_long_digits10;
1713 static const bool is_signed = false;
1714 static const bool is_integer = true;
1715 static const bool is_exact = true;
1716 static const int radix = 2;
1717 static unsigned long long epsilon() throw()
1719 static unsigned long long round_error() throw()
1722 static const int min_exponent = 0;
1723 static const int min_exponent10 = 0;
1724 static const int max_exponent = 0;
1725 static const int max_exponent10 = 0;
1727 static const bool has_infinity = false;
1728 static const bool has_quiet_NaN = false;
1729 static const bool has_signaling_NaN = false;
1730 static const float_denorm_style has_denorm = denorm_absent;
1731 static const bool has_denorm_loss = false;
1733 static unsigned long long infinity() throw()
1734 { return static_cast<unsigned long long>(0); }
1735 static unsigned long long quiet_NaN() throw()
1736 { return static_cast<unsigned long long>(0); }
1737 static unsigned long long signaling_NaN() throw()
1738 { return static_cast<unsigned long long>(0); }
1739 static unsigned long long denorm_min() throw()
1740 { return static_cast<unsigned long long>(0); }
1742 static const bool is_iec559 = true;
1743 static const bool is_bounded = true;
1744 static const bool is_modulo = true;
1746 static const bool traps = true;
1747 static const bool tinyness_before = false;
1748 static const float_round_style round_style = round_toward_zero;
1751 #undef __glibcpp_unsigned_long_long_max
1752 #undef __glibcpp_unsigned_long_long_digits
1753 #undef __glibcpp_unsigned_long_long_digits10
1754 #undef __glibcpp_unsigned_long_long_traps
1756 #endif // _GLIBCPP_USE_LONG_LONG
1760 struct numeric_limits<float>
1762 static const bool is_specialized = true;
1764 static float min() throw()
1765 { return __glibcpp_float_min; }
1766 static float max() throw()
1767 { return __glibcpp_float_max; }
1769 static const int digits = __glibcpp_float_digits;
1770 static const int digits10 = __glibcpp_float_digits10;
1771 static const bool is_signed = true;
1772 static const bool is_integer = false;
1773 static const bool is_exact = false;
1774 static const int radix = __glibcpp_float_radix;
1775 static float epsilon() throw()
1776 { return __glibcpp_float_epsilon; }
1777 static float round_error() throw()
1778 { return __glibcpp_float_round_error; }
1780 static const int min_exponent = __glibcpp_float_min_exponent;
1781 static const int min_exponent10 = __glibcpp_float_min_exponent10;
1782 static const int max_exponent = __glibcpp_float_max_exponent;
1783 static const int max_exponent10 = __glibcpp_float_max_exponent10;
1785 static const bool has_infinity = __glibcpp_float_has_infinity;
1786 static const bool has_quiet_NaN = __glibcpp_float_has_quiet_NaN;
1787 static const bool has_signaling_NaN = __glibcpp_float_has_signaling_NaN;
1788 static const float_denorm_style has_denorm = __glibcpp_float_has_denorm;
1789 static const bool has_denorm_loss = __glibcpp_float_has_denorm_loss;
1791 static float infinity() throw()
1792 { return __glibcpp_float_infinity; }
1793 static float quiet_NaN() throw()
1794 { return __glibcpp_float_quiet_NaN; }
1795 static float signaling_NaN() throw()
1796 { return __glibcpp_float_signaling_NaN; }
1797 static float denorm_min() throw()
1798 { return __glibcpp_float_denorm_min; }
1800 static const bool is_iec559 = __glibcpp_float_is_iec559;
1801 static const bool is_bounded = __glibcpp_float_is_bounded;
1802 static const bool is_modulo = __glibcpp_float_is_modulo;
1804 static const bool traps = __glibcpp_float_traps;
1805 static const bool tinyness_before = __glibcpp_float_tinyness_before;
1806 static const float_round_style round_style = __glibcpp_float_round_style;
1809 #undef __glibcpp_float_min
1810 #undef __glibcpp_float_max
1811 #undef __glibcpp_float_digits
1812 #undef __glibcpp_float_digits10
1813 #undef __glibcpp_float_radix
1814 #undef __glibcpp_float_round_error
1815 #undef __glibcpp_float_min_exponent
1816 #undef __glibcpp_float_min_exponent10
1817 #undef __glibcpp_float_max_exponent
1818 #undef __glibcpp_float_max_exponent10
1819 #undef __glibcpp_float_has_infinity
1820 #undef __glibcpp_float_has_quiet_NaN
1821 #undef __glibcpp_float_has_signaling_NaN
1822 #undef __glibcpp_float_has_denorm
1823 #undef __glibcpp_float_has_denorm_loss
1824 #undef __glibcpp_float_infinity
1825 #undef __glibcpp_float_quiet_NaN
1826 #undef __glibcpp_float_signaling_NaN
1827 #undef __glibcpp_float_denorm_min
1828 #undef __glibcpp_float_is_iec559
1829 #undef __glibcpp_float_is_bounded
1830 #undef __glibcpp_float_is_modulo
1831 #undef __glibcpp_float_traps
1832 #undef __glibcpp_float_tinyness_before
1833 #undef __glibcpp_float_round_style
1836 struct numeric_limits<double>
1838 static const bool is_specialized = true;
1840 static double min() throw()
1841 { return __glibcpp_double_min; }
1842 static double max() throw()
1843 { return __glibcpp_double_max; }
1845 static const int digits = __glibcpp_double_digits;
1846 static const int digits10 = __glibcpp_double_digits10;
1847 static const bool is_signed = true;
1848 static const bool is_integer = false;
1849 static const bool is_exact = false;
1850 static const int radix = __glibcpp_double_radix;
1851 static double epsilon() throw()
1852 { return __glibcpp_double_epsilon; }
1853 static double round_error() throw()
1854 { return __glibcpp_double_round_error; }
1856 static const int min_exponent = __glibcpp_double_min_exponent;
1857 static const int min_exponent10 = __glibcpp_double_min_exponent10;
1858 static const int max_exponent = __glibcpp_double_max_exponent;
1859 static const int max_exponent10 = __glibcpp_double_max_exponent10;
1861 static const bool has_infinity = __glibcpp_double_has_infinity;
1862 static const bool has_quiet_NaN = __glibcpp_double_has_quiet_NaN;
1863 static const bool has_signaling_NaN = __glibcpp_double_has_signaling_NaN;
1864 static const float_denorm_style has_denorm =
1865 __glibcpp_double_has_denorm;
1866 static const bool has_denorm_loss = __glibcpp_double_has_denorm_loss;
1868 static double infinity() throw()
1869 { return __glibcpp_double_infinity; }
1870 static double quiet_NaN() throw()
1871 { return __glibcpp_double_quiet_NaN; }
1872 static double signaling_NaN() throw()
1873 { return __glibcpp_double_signaling_NaN; }
1874 static double denorm_min() throw()
1875 { return __glibcpp_double_denorm_min; }
1877 static const bool is_iec559 = __glibcpp_double_is_iec559;
1878 static const bool is_bounded = __glibcpp_double_is_bounded;
1879 static const bool is_modulo = __glibcpp_double_is_modulo;
1881 static const bool traps = __glibcpp_double_traps;
1882 static const bool tinyness_before = __glibcpp_double_tinyness_before;
1883 static const float_round_style round_style =
1884 __glibcpp_double_round_style;
1887 #undef __glibcpp_double_min
1888 #undef __glibcpp_double_max
1889 #undef __glibcpp_double_digits
1890 #undef __glibcpp_double_digits10
1891 #undef __glibcpp_double_radix
1892 #undef __glibcpp_double_round_error
1893 #undef __glibcpp_double_min_exponent
1894 #undef __glibcpp_double_min_exponent10
1895 #undef __glibcpp_double_max_exponent
1896 #undef __glibcpp_double_max_exponent10
1897 #undef __glibcpp_double_has_infinity
1898 #undef __glibcpp_double_has_quiet_NaN
1899 #undef __glibcpp_double_has_signaling_NaN
1900 #undef __glibcpp_double_has_denorm
1901 #undef __glibcpp_double_has_denorm_loss
1902 #undef __glibcpp_double_infinity
1903 #undef __glibcpp_double_quiet_NaN
1904 #undef __glibcpp_double_signaling_NaN
1905 #undef __glibcpp_double_denorm_min
1906 #undef __glibcpp_double_is_iec559
1907 #undef __glibcpp_double_is_bounded
1908 #undef __glibcpp_double_is_modulo
1909 #undef __glibcpp_double_traps
1910 #undef __glibcpp_double_tinyness_before
1911 #undef __glibcpp_double_round_style
1915 struct numeric_limits<long double>
1917 static const bool is_specialized = true;
1919 static long double min() throw()
1920 { return __glibcpp_long_double_min; }
1921 static long double max() throw()
1922 { return __glibcpp_long_double_max; }
1924 static const int digits = __glibcpp_long_double_digits;
1925 static const int digits10 = __glibcpp_long_double_digits10;
1926 static const bool is_signed = true;
1927 static const bool is_integer = false;
1928 static const bool is_exact = false;
1929 static const int radix = __glibcpp_long_double_radix;
1930 static long double epsilon() throw()
1931 { return __glibcpp_long_double_epsilon; }
1932 static long double round_error() throw()
1933 { return __glibcpp_long_double_round_error; }
1935 static const int min_exponent = __glibcpp_long_double_min_exponent;
1936 static const int min_exponent10 = __glibcpp_long_double_min_exponent10;
1937 static const int max_exponent = __glibcpp_long_double_max_exponent;
1938 static const int max_exponent10 = __glibcpp_long_double_max_exponent10;
1940 static const bool has_infinity = __glibcpp_long_double_has_infinity;
1941 static const bool has_quiet_NaN = __glibcpp_long_double_has_quiet_NaN;
1942 static const bool has_signaling_NaN =
1943 __glibcpp_long_double_has_signaling_NaN;
1944 static const float_denorm_style has_denorm =
1945 __glibcpp_long_double_has_denorm;
1946 static const bool has_denorm_loss =
1947 __glibcpp_long_double_has_denorm_loss;
1949 static long double infinity() throw()
1950 { return __glibcpp_long_double_infinity; }
1951 static long double quiet_NaN() throw()
1952 { return __glibcpp_long_double_quiet_NaN; }
1953 static long double signaling_NaN() throw()
1954 { return __glibcpp_long_double_signaling_NaN; }
1955 static long double denorm_min() throw()
1956 { return __glibcpp_long_double_denorm_min; }
1958 static const bool is_iec559 = __glibcpp_long_double_is_iec559;
1959 static const bool is_bounded = __glibcpp_long_double_is_bounded;
1960 static const bool is_modulo = __glibcpp_long_double_is_modulo;
1962 static const bool traps = __glibcpp_long_double_traps;
1963 static const bool tinyness_before = __glibcpp_long_double_tinyness_before;
1964 static const float_round_style round_style =
1965 __glibcpp_long_double_round_style;
1968 #undef __glibcpp_long_double_min
1969 #undef __glibcpp_long_double_max
1970 #undef __glibcpp_long_double_digits
1971 #undef __glibcpp_long_double_digits10
1972 #undef __glibcpp_long_double_radix
1973 #undef __glibcpp_long_double_round_error
1974 #undef __glibcpp_long_double_min_exponent
1975 #undef __glibcpp_long_double_min_exponent10
1976 #undef __glibcpp_long_double_max_exponent
1977 #undef __glibcpp_long_double_max_exponent10
1978 #undef __glibcpp_long_double_has_infinity
1979 #undef __glibcpp_long_double_has_quiet_NaN
1980 #undef __glibcpp_long_double_has_signaling_NaN
1981 #undef __glibcpp_long_double_has_denorm
1982 #undef __glibcpp_long_double_has_denorm_loss
1983 #undef __glibcpp_long_double_infinity
1984 #undef __glibcpp_long_double_quiet_NaN
1985 #undef __glibcpp_long_double_signaling_NaN
1986 #undef __glibcpp_long_double_denorm_min
1987 #undef __glibcpp_long_double_is_iec559
1988 #undef __glibcpp_long_double_is_bounded
1989 #undef __glibcpp_long_double_is_modulo
1990 #undef __glibcpp_long_double_traps
1991 #undef __glibcpp_long_double_tinyness_before
1992 #undef __glibcpp_long_double_round_style
1996 #endif // _CPP_NUMERIC_LIMITS