cartobase 6.0.6
limits_gcc3.h
Go to the documentation of this file.
1/* This software and supporting documentation are distributed by
2 * Institut Federatif de Recherche 49
3 * CEA/NeuroSpin, Batiment 145,
4 * 91191 Gif-sur-Yvette cedex
5 * France
6 *
7 * This software is governed by the CeCILL-B license under
8 * French law and abiding by the rules of distribution of free software.
9 * You can use, modify and/or redistribute the software under the
10 * terms of the CeCILL-B license as circulated by CEA, CNRS
11 * and INRIA at the following URL "http://www.cecill.info".
12 *
13 * As a counterpart to the access to the source code and rights to copy,
14 * modify and redistribute granted by the license, users are provided only
15 * with a limited warranty and the software's author, the holder of the
16 * economic rights, and the successive licensors have only limited
17 * liability.
18 *
19 * In this respect, the user's attention is drawn to the risks associated
20 * with loading, using, modifying and/or developing or reproducing the
21 * software by the user in light of its specific status of free software,
22 * that may mean that it is complicated to manipulate, and that also
23 * therefore means that it is reserved for developers and experienced
24 * professionals having in-depth computer knowledge. Users are therefore
25 * encouraged to load and test the software's suitability as regards their
26 * requirements in conditions enabling the security of their systems and/or
27 * data to be ensured and, more generally, to use and operate it in the
28 * same conditions as regards security.
29 *
30 * The fact that you are presently reading this means that you have had
31 * knowledge of the CeCILL-B license and that you accept its terms.
32 */
33
34// Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
35//
36// This file is part of the GNU ISO C++ Library. This library is free
37// software; you can redistribute it and/or modify it under the
38// terms of the GNU General Public License as published by the
39// Free Software Foundation; either version 2, or (at your option)
40// any later version.
41
42// This library is distributed in the hope that it will be useful,
43// but WITHOUT ANY WARRANTY; without even the implied warranty of
44// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
45// GNU General Public License for more details.
46
47// You should have received a copy of the GNU General Public License along
48// with this library; see the file COPYING. If not, write to the Free
49// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
50// USA.
51
52// As a special exception, you may use this file as part of a free software
53// library without restriction. Specifically, if other files instantiate
54// templates or use macros or inline functions from this file, or you compile
55// this file and link it with other files to produce an executable, this
56// file does not by itself cause the resulting executable to be covered by
57// the GNU General Public License. This exception does not however
58// invalidate any other reasons why the executable file might be covered by
59// the GNU General Public License.
60
61// Note: this is not a conforming implementation.
62// Written by Gabriel Dos Reis <gdr@codesourcery.com>
63
64//
65// ISO 14882:1998
66// 18.2.1
67//
68
73
74#ifndef _CPP_NUMERIC_LIMITS
75#define _CPP_NUMERIC_LIMITS 1
76
77#if defined( __GNUC__ ) && (__GNUC__-0 >= 3)
78
79#error This header should not be included, it should be in the standard C++ \
80library
81
82#else
83
84//
85// The numeric_limits<> traits document implementation-defined aspects
86// of fundamental arithmetic data types (integers and floating points).
87// From Standard C++ point of view, there are 13 such types:
88// * integers
89// bool (1)
90// char, signed char, unsigned char (3)
91// short, unsigned short (2)
92// int, unsigned (2)
93// long, unsigned long (2)
94//
95// * floating points
96// float (1)
97// double (1)
98// long double (1)
99//
100// GNU C++ understands (where supported by the host C-library)
101// * integer
102// long long, unsigned long long (2)
103//
104// which brings us to 15 fundamental arithmetic data types in GNU C++.
105//
106//
107// Since a numeric_limits<> is a bit tricky to get right, we rely on
108// an interface composed of macros which should be defined in config/os
109// or config/cpu when they differ from the generic (read arbitrary)
110// definitions given here.
111//
112
113// These values can be overridden in the target configuration file.
114// The default values are appropriate for many 32-bit targets.
115
116#include <climits>
117#include <cfloat>
118
119/* I don't really understand the direct relationship between max exponent
120 and the number of bits to store them... */
121#define __carto_expo_bits( x ) ( x >= 16384 ? 15 : ( x >= 384 ? 11 : 8 ) )
122#define __carto_float_bits ( FLT_MANT_DIG + __carto_expo_bits(FLT_MAX_EXP) )
123#define __carto_double_bits ( DBL_MANT_DIG + __carto_expo_bits(DBL_MAX_EXP) )
124#define __carto_ldouble_bits1 ( LDBL_MANT_DIG + __carto_expo_bits(LDBL_MAX_EXP) )
125/* long double should be 80 bits for linux/32, 64 bits for irix/mips and 128
126 bits for solaris/sparc */
127#define __carto_ldouble_bits ( __carto_ldouble_bits1 == 79 ? 80 : __carto_ldouble_bits1 )
128
129// --
130
131
132#ifndef __glibcpp_char_bits
133#define __glibcpp_char_bits 8
134#endif
135#ifdef __CHAR_UNSIGNED__
136#define __glibcpp_plain_char_is_signed false
137#else
138#define __glibcpp_plain_char_is_signed true
139#endif
140#ifndef __glibcpp_short_bits
141#define __glibcpp_short_bits 16
142#endif
143#ifndef __glibcpp_int_bits
144#define __glibcpp_int_bits 32
145#endif
146#ifndef __glibcpp_long_bits
147#define __glibcpp_long_bits 32
148#endif
149#ifndef __glibcpp_wchar_t_bits
150#define __glibcpp_wchar_t_bits 32
151#endif
152#ifndef __glibcpp_wchar_t_is_signed
153#define __glibcpp_wchar_t_is_signed true
154#endif
155#ifndef __glibcpp_long_long_bits
156#define __glibcpp_long_long_bits 64
157#endif
158#ifndef __glibcpp_float_bits
159#define __glibcpp_float_bits __carto_float_bits
160#endif
161#ifndef __glibcpp_double_bits
162#define __glibcpp_double_bits __carto_double_bits
163#endif
164#ifndef __glibcpp_long_double_bits
165#define __glibcpp_long_double_bits __carto_ldouble_bits
166#endif
167
168#ifndef __glibcpp_char_traps
169#define __glibcpp_char_traps true
170#endif
171#ifndef __glibcpp_short_traps
172#define __glibcpp_short_traps true
173#endif
174#ifndef __glibcpp_int_traps
175#define __glibcpp_int_traps true
176#endif
177#ifndef __glibcpp_long_traps
178#define __glibcpp_long_traps true
179#endif
180#ifndef __glibcpp_wchar_t_traps
181#define __glibcpp_wchar_t_traps true
182#endif
183#ifndef __glibcpp_long_long_traps
184#define __glibcpp_long_long_traps true
185#endif
186
187// You should not need to define any macros below this point, unless
188// you have a machine with non-standard bit-widths.
189
190// These values are the minimums and maximums for standard data types
191// of common widths.
192
193#define __glibcpp_s8_max 127
194#define __glibcpp_s8_min (-__glibcpp_s8_max - 1)
195#define __glibcpp_s8_digits 7
196#define __glibcpp_s8_digits10 2
197#define __glibcpp_u8_min 0U
198#define __glibcpp_u8_max (__glibcpp_s8_max * 2 + 1)
199#define __glibcpp_u8_digits 8
200#define __glibcpp_u8_digits10 2
201#define __glibcpp_s16_max 32767
202#define __glibcpp_s16_min (-__glibcpp_s16_max - 1)
203#define __glibcpp_s16_digits 15
204#define __glibcpp_s16_digits10 4
205#define __glibcpp_u16_min 0U
206#define __glibcpp_u16_max (__glibcpp_s16_max * 2 + 1)
207#define __glibcpp_u16_digits 16
208#define __glibcpp_u16_digits10 4
209#define __glibcpp_s32_max 2147483647L
210#define __glibcpp_s32_min (-__glibcpp_s32_max - 1)
211#define __glibcpp_s32_digits 31
212#define __glibcpp_s32_digits10 9
213#define __glibcpp_u32_min 0UL
214#define __glibcpp_u32_max (__glibcpp_s32_max * 2U + 1)
215#define __glibcpp_u32_digits 32
216#define __glibcpp_u32_digits10 9
217#define __glibcpp_s64_max 9223372036854775807LL
218#define __glibcpp_s64_min (-__glibcpp_s64_max - 1)
219#define __glibcpp_s64_digits 63
220#define __glibcpp_s64_digits10 18
221#define __glibcpp_u64_min 0ULL
222#define __glibcpp_u64_max (__glibcpp_s64_max * 2ULL + 1)
223#define __glibcpp_u64_digits 64
224#define __glibcpp_u64_digits10 19
225
226#define __glibcpp_f32_min 1.17549435e-38F
227#define __glibcpp_f32_max 3.40282347e+38F
228#define __glibcpp_f32_digits 24
229#define __glibcpp_f32_digits10 6
230#define __glibcpp_f32_radix 2
231#define __glibcpp_f32_epsilon 1.19209290e-07F
232#define __glibcpp_f32_round_error 1.0F
233#define __glibcpp_f32_min_exponent -125
234#define __glibcpp_f32_min_exponent10 -37
235#define __glibcpp_f32_max_exponent 128
236#define __glibcpp_f32_max_exponent10 38
237#define __glibcpp_f64_min 2.2250738585072014e-308
238#define __glibcpp_f64_max 1.7976931348623157e+308
239#define __glibcpp_f64_digits 53
240#define __glibcpp_f64_digits10 15
241#define __glibcpp_f64_radix 2
242#define __glibcpp_f64_epsilon 2.2204460492503131e-16
243#define __glibcpp_f64_round_error 1.0
244#define __glibcpp_f64_min_exponent -1021
245#define __glibcpp_f64_min_exponent10 -307
246#define __glibcpp_f64_max_exponent 1024
247#define __glibcpp_f64_max_exponent10 308
248#define __glibcpp_f80_min 3.36210314311209350626e-4932L
249#define __glibcpp_f80_max 1.18973149535723176502e+4932L
250#define __glibcpp_f80_digits 64
251#define __glibcpp_f80_digits10 18
252#define __glibcpp_f80_radix 2
253#define __glibcpp_f80_epsilon 1.08420217248550443401e-19L
254#define __glibcpp_f80_round_error 1.0L
255#define __glibcpp_f80_min_exponent -16381
256#define __glibcpp_f80_min_exponent10 -4931
257#define __glibcpp_f80_max_exponent 16384
258#define __glibcpp_f80_max_exponent10 4932
259#define __glibcpp_f96_min 1.68105157155604675313e-4932L
260#define __glibcpp_f96_max 1.18973149535723176502e+4932L
261#define __glibcpp_f96_digits 64
262#define __glibcpp_f96_digits10 18
263#define __glibcpp_f96_radix 2
264#define __glibcpp_f96_epsilon 1.08420217248550443401e-19L
265#define __glibcpp_f96_round_error 1.0L
266#define __glibcpp_f96_min_exponent -16382
267#define __glibcpp_f96_min_exponent10 -4931
268#define __glibcpp_f96_max_exponent 16384
269#define __glibcpp_f96_max_exponent10 4932
270#define __glibcpp_f128_min 3.362103143112093506262677817321752603E-4932L
271#define __glibcpp_f128_max 1.189731495357231765085759326628007016E+4932L
272#define __glibcpp_f128_digits 113
273#define __glibcpp_f128_digits10 33
274#define __glibcpp_f128_radix 2
275#define __glibcpp_f128_epsilon 1.925929944387235853055977942584927319E-34L
276#define __glibcpp_f128_round_error 1.0L
277#define __glibcpp_f128_min_exponent -16381
278#define __glibcpp_f128_min_exponent10 -4931
279#define __glibcpp_f128_max_exponent 16384
280#define __glibcpp_f128_max_exponent10 4932
281
282// bool-specific hooks:
283// __glibcpp_bool_digits __glibcpp_int_traps __glibcpp_long_traps
284
285#ifndef __glibcpp_bool_digits
286#define __glibcpp_bool_digits 1
287#endif
288
289// char.
290
291#define __glibcpp_plain_char_traps true
292#define __glibcpp_signed_char_traps true
293#define __glibcpp_unsigned_char_traps true
294#ifndef __glibcpp_char_is_modulo
295#define __glibcpp_char_is_modulo true
296#endif
297#ifndef __glibcpp_signed_char_is_modulo
298#define __glibcpp_signed_char_is_modulo true
299#endif
300#if __glibcpp_char_bits == 8
301#define __glibcpp_signed_char_min __glibcpp_s8_min
302#define __glibcpp_signed_char_max __glibcpp_s8_max
303#define __glibcpp_signed_char_digits __glibcpp_s8_digits
304#define __glibcpp_signed_char_digits10 __glibcpp_s8_digits10
305#define __glibcpp_unsigned_char_min __glibcpp_u8_min
306#define __glibcpp_unsigned_char_max __glibcpp_u8_max
307#define __glibcpp_unsigned_char_digits __glibcpp_u8_digits
308#define __glibcpp_unsigned_char_digits10 __glibcpp_u8_digits10
309#elif __glibcpp_char_bits == 16
310#define __glibcpp_signed_char_min __glibcpp_s16_min
311#define __glibcpp_signed_char_max __glibcpp_s16_max
312#define __glibcpp_signed_char_digits __glibcpp_s16_digits
313#define __glibcpp_signed_char_digits10 __glibcpp_s16_digits10
314#define __glibcpp_unsigned_char_min __glibcpp_u16_min
315#define __glibcpp_unsigned_char_max __glibcpp_u16_max
316#define __glibcpp_unsigned_char_digits __glibcpp_u16_digits
317#define __glibcpp_unsigned_char_digits10 __glibcpp_u16_digits10
318#elif __glibcpp_char_bits == 32
319#define __glibcpp_signed_char_min (signed char)__glibcpp_s32_min
320#define __glibcpp_signed_char_max (signed char)__glibcpp_s32_max
321#define __glibcpp_signed_char_digits __glibcpp_s32_digits
322#define __glibcpp_signed_char_digits10 __glibcpp_s32_digits10
323#define __glibcpp_unsigned_char_min (unsigned char)__glibcpp_u32_min
324#define __glibcpp_unsigned_char_max (unsigned char)__glibcpp_u32_max
325#define __glibcpp_unsigned_char_digits __glibcpp_u32_digits
326#define __glibcpp_unsigned_char_digits10 __glibcpp_u32_digits10
327#elif __glibcpp_char_bits == 64
328#define __glibcpp_signed_char_min (signed char)__glibcpp_s64_min
329#define __glibcpp_signed_char_max (signed char)__glibcpp_s64_max
330#define __glibcpp_signed_char_digits __glibcpp_s64_digits
331#define __glibcpp_signed_char_digits10 __glibcpp_s64_digits10
332#define __glibcpp_unsigned_char_min (unsigned char)__glibcpp_u64_min
333#define __glibcpp_unsigned_char_max (unsigned char)__glibcpp_u64_max
334#define __glibcpp_unsigned_char_digits __glibcpp_u64_digits
335#define __glibcpp_unsigned_char_digits10 __glibcpp_u64_digits10
336#else
337// You must define these macros in the configuration file.
338#endif
339
340#if __glibcpp_plain_char_is_signed
341#define __glibcpp_char_min (char)__glibcpp_signed_char_min
342#define __glibcpp_char_max (char)__glibcpp_signed_char_max
343#define __glibcpp_char_digits __glibcpp_signed_char_digits
344#define __glibcpp_char_digits10 __glibcpp_signed_char_digits10
345#else
346#define __glibcpp_char_min (char)__glibcpp_unsigned_char_min
347#define __glibcpp_char_max (char)__glibcpp_unsigned_char_max
348#define __glibcpp_char_digits __glibcpp_unsigned_char_digits
349#define __glibcpp_char_digits10 __glibcpp_unsigned_char_digits10
350#endif
351
352// short
353
354#define __glibcpp_signed_short_traps true
355#define __glibcpp_unsigned_short_traps true
356#ifndef __glibcpp_signed_short_is_modulo
357#define __glibcpp_signed_short_is_modulo true
358#endif
359#if __glibcpp_short_bits == 8
360#define __glibcpp_signed_short_min __glibcpp_s8_min
361#define __glibcpp_signed_short_max __glibcpp_s8_max
362#define __glibcpp_signed_short_digits __glibcpp_s8_digits
363#define __glibcpp_signed_short_digits10 __glibcpp_s8_digits10
364#define __glibcpp_unsigned_short_min __glibcpp_u8_min
365#define __glibcpp_unsigned_short_max __glibcpp_u8_max
366#define __glibcpp_unsigned_short_digits __glibcpp_u8_digits
367#define __glibcpp_unsigned_short_digits10 __glibcpp_u8_digits10
368#elif __glibcpp_short_bits == 16
369#define __glibcpp_signed_short_min __glibcpp_s16_min
370#define __glibcpp_signed_short_max __glibcpp_s16_max
371#define __glibcpp_signed_short_digits __glibcpp_s16_digits
372#define __glibcpp_signed_short_digits10 __glibcpp_s16_digits10
373#define __glibcpp_unsigned_short_min __glibcpp_u16_min
374#define __glibcpp_unsigned_short_max __glibcpp_u16_max
375#define __glibcpp_unsigned_short_digits __glibcpp_u16_digits
376#define __glibcpp_unsigned_short_digits10 __glibcpp_u16_digits10
377#elif __glibcpp_short_bits == 32
378#define __glibcpp_signed_short_min (short)__glibcpp_s32_min
379#define __glibcpp_signed_short_max (short)__glibcpp_s32_max
380#define __glibcpp_signed_short_digits __glibcpp_s32_digits
381#define __glibcpp_signed_short_digits10 __glibcpp_s32_digits10
382#define __glibcpp_unsigned_short_min (unsigned short)__glibcpp_u32_min
383#define __glibcpp_unsigned_short_max (unsigned short)__glibcpp_u32_max
384#define __glibcpp_unsigned_short_digits __glibcpp_u32_digits
385#define __glibcpp_unsigned_short_digits10 __glibcpp_u32_digits10
386#elif __glibcpp_short_bits == 64
387#define __glibcpp_signed_short_min (short)__glibcpp_s64_min
388#define __glibcpp_signed_short_max (short)__glibcpp_s64_max
389#define __glibcpp_signed_short_digits __glibcpp_s64_digits
390#define __glibcpp_signed_short_digits10 __glibcpp_s64_digits10
391#define __glibcpp_unsigned_short_min (unsigned short)__glibcpp_u64_min
392#define __glibcpp_unsigned_short_max (unsigned short)__glibcpp_u64_max
393#define __glibcpp_unsigned_short_digits __glibcpp_u64_digits
394#define __glibcpp_unsigned_short_digits10 __glibcpp_u64_digits10
395#else
396// You must define these macros in the configuration file.
397#endif
398
399// int
400
401#define __glibcpp_signed_int_traps true
402#define __glibcpp_unsigned_int_traps true
403#ifndef __glibcpp_signed_int_is_modulo
404#define __glibcpp_signed_int_is_modulo true
405#endif
406#if __glibcpp_int_bits == 8
407#define __glibcpp_signed_int_min __glibcpp_s8_min
408#define __glibcpp_signed_int_max __glibcpp_s8_max
409#define __glibcpp_signed_int_digits __glibcpp_s8_digits
410#define __glibcpp_signed_int_digits10 __glibcpp_s8_digits10
411#define __glibcpp_unsigned_int_min __glibcpp_u8_min
412#define __glibcpp_unsigned_int_max __glibcpp_u8_max
413#define __glibcpp_unsigned_int_digits __glibcpp_u8_digits
414#define __glibcpp_unsigned_int_digits10 __glibcpp_u8_digits10
415#elif __glibcpp_int_bits == 16
416#define __glibcpp_signed_int_min __glibcpp_s16_min
417#define __glibcpp_signed_int_max __glibcpp_s16_max
418#define __glibcpp_signed_int_digits __glibcpp_s16_digits
419#define __glibcpp_signed_int_digits10 __glibcpp_s16_digits10
420#define __glibcpp_unsigned_int_min __glibcpp_u16_min
421#define __glibcpp_unsigned_int_max __glibcpp_u16_max
422#define __glibcpp_unsigned_int_digits __glibcpp_u16_digits
423#define __glibcpp_unsigned_int_digits10 __glibcpp_u16_digits10
424#elif __glibcpp_int_bits == 32
425#define __glibcpp_signed_int_min (int)__glibcpp_s32_min
426#define __glibcpp_signed_int_max (int)__glibcpp_s32_max
427#define __glibcpp_signed_int_digits __glibcpp_s32_digits
428#define __glibcpp_signed_int_digits10 __glibcpp_s32_digits10
429#define __glibcpp_unsigned_int_min (unsigned)__glibcpp_u32_min
430#define __glibcpp_unsigned_int_max (unsigned)__glibcpp_u32_max
431#define __glibcpp_unsigned_int_digits __glibcpp_u32_digits
432#define __glibcpp_unsigned_int_digits10 __glibcpp_u32_digits10
433#elif __glibcpp_int_bits == 64
434#define __glibcpp_signed_int_min (int)__glibcpp_s64_min
435#define __glibcpp_signed_int_max (int)__glibcpp_s64_max
436#define __glibcpp_signed_int_digits __glibcpp_s64_digits
437#define __glibcpp_signed_int_digits10 __glibcpp_s64_digits10
438#define __glibcpp_unsigned_int_min (unsigned)__glibcpp_u64_min
439#define __glibcpp_unsigned_int_max (unsigned)__glibcpp_u64_max
440#define __glibcpp_unsigned_int_digits __glibcpp_u64_digits
441#define __glibcpp_unsigned_int_digits10 __glibcpp_u64_digits10
442#else
443// You must define these macros in the configuration file.
444#endif
445
446// long
447
448#define __glibcpp_signed_long_traps true
449#define __glibcpp_unsigned_long_traps true
450#ifndef __glibcpp_signed_long_is_modulo
451#define __glibcpp_signed_long_is_modulo true
452#endif
453#if __glibcpp_long_bits == 8
454#define __glibcpp_signed_long_min __glibcpp_s8_min
455#define __glibcpp_signed_long_max __glibcpp_s8_max
456#define __glibcpp_signed_long_digits __glibcpp_s8_digits
457#define __glibcpp_signed_long_digits10 __glibcpp_s8_digits10
458#define __glibcpp_unsigned_long_min __glibcpp_u8_min
459#define __glibcpp_unsigned_long_max __glibcpp_u8_max
460#define __glibcpp_unsigned_long_digits __glibcpp_u8_digits
461#define __glibcpp_unsigned_long_digits10 __glibcpp_u8_digits10
462#elif __glibcpp_long_bits == 16
463#define __glibcpp_signed_long_min __glibcpp_s16_min
464#define __glibcpp_signed_long_max __glibcpp_s16_max
465#define __glibcpp_signed_long_digits __glibcpp_s16_digits
466#define __glibcpp_signed_long_digits10 __glibcpp_s16_digits10
467#define __glibcpp_unsigned_long_min __glibcpp_u16_min
468#define __glibcpp_unsigned_long_max __glibcpp_u16_max
469#define __glibcpp_unsigned_long_digits __glibcpp_u16_digits
470#define __glibcpp_unsigned_long_digits10 __glibcpp_u16_digits10
471#elif __glibcpp_long_bits == 32
472#define __glibcpp_signed_long_min __glibcpp_s32_min
473#define __glibcpp_signed_long_max __glibcpp_s32_max
474#define __glibcpp_signed_long_digits __glibcpp_s32_digits
475#define __glibcpp_signed_long_digits10 __glibcpp_s32_digits10
476#define __glibcpp_unsigned_long_min __glibcpp_u32_min
477#define __glibcpp_unsigned_long_max __glibcpp_u32_max
478#define __glibcpp_unsigned_long_digits __glibcpp_u32_digits
479#define __glibcpp_unsigned_long_digits10 __glibcpp_u32_digits10
480#elif __glibcpp_long_bits == 64
481#define __glibcpp_signed_long_min (long)__glibcpp_s64_min
482#define __glibcpp_signed_long_max (long)__glibcpp_s64_max
483#define __glibcpp_signed_long_digits __glibcpp_s64_digits
484#define __glibcpp_signed_long_digits10 __glibcpp_s64_digits10
485#define __glibcpp_unsigned_long_min (unsigned long)__glibcpp_u64_min
486#define __glibcpp_unsigned_long_max (unsigned long)__glibcpp_u64_max
487#define __glibcpp_unsigned_long_digits __glibcpp_u64_digits
488#define __glibcpp_unsigned_long_digits10 __glibcpp_u64_digits10
489#else
490// You must define these macros in the configuration file.
491#endif
492
493// long long
494
495#define __glibcpp_signed_long_long_traps true
496#define __glibcpp_signed_long_long_traps true
497#ifndef __glibcpp_signed_long_long_is_modulo
498#define __glibcpp_signed_long_long_is_modulo true
499#endif
500#if __glibcpp_long_long_bits == 8
501#define __glibcpp_signed_long_long_min __glibcpp_s8_min
502#define __glibcpp_signed_long_long_max __glibcpp_s8_max
503#define __glibcpp_signed_long_long_digits __glibcpp_s8_digits
504#define __glibcpp_signed_long_long_digits10 __glibcpp_s8_digits10
505#define __glibcpp_unsigned_long_long_min __glibcpp_u8_min
506#define __glibcpp_unsigned_long_long_max __glibcpp_u8_max
507#define __glibcpp_unsigned_long_long_digits __glibcpp_u8_digits
508#define __glibcpp_unsigned_long_long_digits10 __glibcpp_u8_digits10
509#elif __glibcpp_long_long_bits == 16
510#define __glibcpp_signed_long_long_min __glibcpp_s16_min
511#define __glibcpp_signed_long_long_max __glibcpp_s16_max
512#define __glibcpp_signed_long_long_digits __glibcpp_s16_digits
513#define __glibcpp_signed_long_long_digits10 __glibcpp_s16_digits10
514#define __glibcpp_unsigned_long_long_min __glibcpp_u16_min
515#define __glibcpp_unsigned_long_long_max __glibcpp_u16_max
516#define __glibcpp_unsigned_long_long_digits __glibcpp_u16_digits
517#define __glibcpp_unsigned_long_long_digits10 __glibcpp_u16_digits10
518#elif __glibcpp_long_long_bits == 32
519#define __glibcpp_signed_long_long_min __glibcpp_s32_min
520#define __glibcpp_signed_long_long_max __glibcpp_s32_max
521#define __glibcpp_signed_long_long_digits __glibcpp_s32_digits
522#define __glibcpp_signed_long_long_digits10 __glibcpp_s32_digits10
523#define __glibcpp_unsigned_long_long_min __glibcpp_u32_min
524#define __glibcpp_unsigned_long_long_max __glibcpp_u32_max
525#define __glibcpp_unsigned_long_long_digits __glibcpp_u32_digits
526#define __glibcpp_unsigned_long_long_digits10 __glibcpp_u32_digits10
527#elif __glibcpp_long_long_bits == 64
528#define __glibcpp_signed_long_long_min __glibcpp_s64_min
529#define __glibcpp_signed_long_long_max __glibcpp_s64_max
530#define __glibcpp_signed_long_long_digits __glibcpp_s64_digits
531#define __glibcpp_signed_long_long_digits10 __glibcpp_s64_digits10
532#define __glibcpp_signed_long_long_traps true
533#define __glibcpp_unsigned_long_long_min __glibcpp_u64_min
534#define __glibcpp_unsigned_long_long_max __glibcpp_u64_max
535#define __glibcpp_unsigned_long_long_digits __glibcpp_u64_digits
536#define __glibcpp_unsigned_long_long_digits10 __glibcpp_u64_digits10
537#define __glibcpp_unsigned_long_long_traps true
538#else
539// You must define these macros in the configuration file.
540#endif
541
542// wchar_t
543
544#define __glibcpp_wchar_t_traps true
545#ifndef __glibcpp_wchar_t_is_modulo
546#define __glibcpp_wchar_t_is_modulo true
547#endif
548#if __glibcpp_wchar_t_is_signed
549#if __glibcpp_wchar_t_bits == 8
550#define __glibcpp_wchar_t_min __glibcpp_s8_min
551#define __glibcpp_wchar_t_max __glibcpp_s8_max
552#define __glibcpp_wchar_t_digits __glibcpp_s8_digits
553#define __glibcpp_wchar_t_digits10 __glibcpp_s8_digits10
554#elif __glibcpp_wchar_t_bits == 16
555#define __glibcpp_wchar_t_min __glibcpp_s16_min
556#define __glibcpp_wchar_t_max __glibcpp_s16_max
557#define __glibcpp_wchar_t_digits __glibcpp_s16_digits
558#define __glibcpp_wchar_t_digits10 __glibcpp_s16_digits10
559#elif __glibcpp_wchar_t_bits == 32
560#define __glibcpp_wchar_t_min (wchar_t)__glibcpp_s32_min
561#define __glibcpp_wchar_t_max (wchar_t)__glibcpp_s32_max
562#define __glibcpp_wchar_t_digits __glibcpp_s32_digits
563#define __glibcpp_wchar_t_digits10 __glibcpp_s32_digits10
564#elif __glibcpp_wchar_t_bits == 64
565#define __glibcpp_wchar_t_min (wchar_t)__glibcpp_s64_min
566#define __glibcpp_wchar_t_max (wchar_t)__glibcpp_s64_max
567#define __glibcpp_wchar_t_digits __glibcpp_s64_digits
568#define __glibcpp_wchar_t_digits10 __glibcpp_s64_digits10
569#else
570// You must define these macros in the configuration file.
571#endif
572#else
573#if __glibcpp_wchar_t_bits == 8
574#define __glibcpp_wchar_t_min __glibcpp_u8_min
575#define __glibcpp_wchar_t_max __glibcpp_u8_max
576#define __glibcpp_wchar_t_digits __glibcpp_u8_digits
577#define __glibcpp_wchar_t_digits10 __glibcpp_u8_digits10
578#elif __glibcpp_wchar_t_bits == 16
579#define __glibcpp_wchar_t_min __glibcpp_u16_min
580#define __glibcpp_wchar_t_max __glibcpp_u16_max
581#define __glibcpp_wchar_t_digits __glibcpp_u16_digits
582#define __glibcpp_wchar_t_digits10 __glibcpp_u16_digits10
583#elif __glibcpp_wchar_t_bits == 32
584#define __glibcpp_wchar_t_min (wchar_t)__glibcpp_u32_min
585#define __glibcpp_wchar_t_max (wchar_t)__glibcpp_u32_max
586#define __glibcpp_wchar_t_digits __glibcpp_u32_digits
587#define __glibcpp_wchar_t_digits10 __glibcpp_u32_digits10
588#elif __glibcpp_wchar_t_bits == 64
589#define __glibcpp_wchar_t_min (wchar_t)__glibcpp_u64_min
590#define __glibcpp_wchar_t_max (wchar_t)__glibcpp_u64_max
591#define __glibcpp_wchar_t_digits __glibcpp_u64_digits
592#define __glibcpp_wchar_t_digits10 __glibcpp_u64_digits10
593#else
594// You must define these macros in the configuration file.
595#endif
596#endif
597
598// float
599//
600
601#if __glibcpp_float_bits == 32
602#define __glibcpp_float_min __glibcpp_f32_min
603#define __glibcpp_float_max __glibcpp_f32_max
604#define __glibcpp_float_digits __glibcpp_f32_digits
605#define __glibcpp_float_digits10 __glibcpp_f32_digits10
606#define __glibcpp_float_radix __glibcpp_f32_radix
607#define __glibcpp_float_epsilon __glibcpp_f32_epsilon
608#define __glibcpp_float_round_error __glibcpp_f32_round_error
609#define __glibcpp_float_min_exponent __glibcpp_f32_min_exponent
610#define __glibcpp_float_min_exponent10 __glibcpp_f32_min_exponent10
611#define __glibcpp_float_max_exponent __glibcpp_f32_max_exponent
612#define __glibcpp_float_max_exponent10 __glibcpp_f32_max_exponent10
613#elif __glibcpp_float_bits == 64
614#define __glibcpp_float_min __glibcpp_f64_min
615#define __glibcpp_float_max __glibcpp_f64_max
616#define __glibcpp_float_digits __glibcpp_f64_digits
617#define __glibcpp_float_digits10 __glibcpp_f64_digits10
618#define __glibcpp_float_radix __glibcpp_f64_radix
619#define __glibcpp_float_epsilon __glibcpp_f64_epsilon
620#define __glibcpp_float_round_error __glibcpp_f64_round_error
621#define __glibcpp_float_min_exponent __glibcpp_f64_min_exponent
622#define __glibcpp_float_min_exponent10 __glibcpp_f64_min_exponent10
623#define __glibcpp_float_max_exponent __glibcpp_f64_max_exponent
624#define __glibcpp_float_max_exponent10 __glibcpp_f64_max_exponent10
625#elif __glibcpp_float_bits == 80
626#define __glibcpp_float_min __glibcpp_f80_min
627#define __glibcpp_float_max __glibcpp_f80_max
628#define __glibcpp_float_digits __glibcpp_f80_digits
629#define __glibcpp_float_digits10 __glibcpp_f80_digits10
630#define __glibcpp_float_radix __glibcpp_f80_radix
631#define __glibcpp_float_epsilon __glibcpp_f80_epsilon
632#define __glibcpp_float_round_error __glibcpp_f80_round_error
633#define __glibcpp_float_min_exponent __glibcpp_f80_min_exponent
634#define __glibcpp_float_min_exponent10 __glibcpp_f80_min_exponent10
635#define __glibcpp_float_max_exponent __glibcpp_f80_max_exponent
636#define __glibcpp_float_max_exponent10 __glibcpp_f80_max_exponent10
637#else
638// You must define these macros in the configuration file.
639#endif
640
641// FIXME: These are just stubs and inkorrect
642
643#ifndef __glibcpp_float_has_infinity
644#define __glibcpp_float_has_infinity false
645#endif
646
647#ifndef __glibcpp_float_has_quiet_NaN
648#define __glibcpp_float_has_quiet_NaN false
649#endif
650
651#ifndef __glibcpp_float_has_signaling_NaN
652#define __glibcpp_float_has_signaling_NaN false
653#endif
654
655#ifndef __glibcpp_float_has_denorm
656#define __glibcpp_float_has_denorm denorm_absent
657#endif
658
659#ifndef __glibcpp_float_has_denorm_loss
660#define __glibcpp_float_has_denorm_loss false
661#endif
662
663#ifndef __glibcpp_float_infinity
664#define __glibcpp_float_infinity 0.0F
665#endif
666
667#ifndef __glibcpp_float_quiet_NaN
668#define __glibcpp_float_quiet_NaN 0.0F
669#endif
670
671#ifndef __glibcpp_float_signaling_NaN
672#define __glibcpp_float_signaling_NaN 0.0F
673#endif
674
675#ifndef __glibcpp_float_denorm_min
676#define __glibcpp_float_denorm_min 0.0F
677#endif
678
679#ifndef __glibcpp_float_is_iec559
680#define __glibcpp_float_is_iec559 false
681#endif
682
683#ifndef __glibcpp_float_is_bounded
684#define __glibcpp_float_is_bounded true
685#endif
686
687#ifndef __glibcpp_float_is_modulo
688#define __glibcpp_float_is_modulo false
689#endif
690
691#ifndef __glibcpp_float_traps
692#define __glibcpp_float_traps false
693#endif
694
695#ifndef __glibcpp_float_tinyness_before
696#define __glibcpp_float_tinyness_before false
697#endif
698
699#ifndef __glibcpp_float_round_style
700#define __glibcpp_float_round_style round_toward_zero
701#endif
702
703// double
704
705#if __glibcpp_double_bits == 32
706#define __glibcpp_double_min __glibcpp_f32_min
707#define __glibcpp_double_max __glibcpp_f32_max
708#define __glibcpp_double_digits __glibcpp_f32_digits
709#define __glibcpp_double_digits10 __glibcpp_f32_digits10
710#define __glibcpp_double_radix __glibcpp_f32_radix
711#define __glibcpp_double_epsilon __glibcpp_f32_epsilon
712#define __glibcpp_double_round_error __glibcpp_f32_round_error
713#define __glibcpp_double_min_exponent __glibcpp_f32_min_exponent
714#define __glibcpp_double_min_exponent10 __glibcpp_f32_min_exponent10
715#define __glibcpp_double_max_exponent __glibcpp_f32_max_exponent
716#define __glibcpp_double_max_exponent10 __glibcpp_f32_max_exponent10
717#elif __glibcpp_double_bits == 64
718#define __glibcpp_double_min __glibcpp_f64_min
719#define __glibcpp_double_max __glibcpp_f64_max
720#define __glibcpp_double_digits __glibcpp_f64_digits
721#define __glibcpp_double_digits10 __glibcpp_f64_digits10
722#define __glibcpp_double_radix __glibcpp_f64_radix
723#define __glibcpp_double_epsilon __glibcpp_f64_epsilon
724#define __glibcpp_double_round_error __glibcpp_f64_round_error
725#define __glibcpp_double_min_exponent __glibcpp_f64_min_exponent
726#define __glibcpp_double_min_exponent10 __glibcpp_f64_min_exponent10
727#define __glibcpp_double_max_exponent __glibcpp_f64_max_exponent
728#define __glibcpp_double_max_exponent10 __glibcpp_f64_max_exponent10
729#elif __glibcpp_double_bits == 80
730#define __glibcpp_double_min __glibcpp_f80_min
731#define __glibcpp_double_max __glibcpp_f80_max
732#define __glibcpp_double_digits __glibcpp_f80_digits
733#define __glibcpp_double_digits10 __glibcpp_f80_digits10
734#define __glibcpp_double_radix __glibcpp_f80_radix
735#define __glibcpp_double_epsilon __glibcpp_f80_epsilon
736#define __glibcpp_double_round_error __glibcpp_f80_round_error
737#define __glibcpp_double_min_exponent __glibcpp_f80_min_exponent
738#define __glibcpp_double_min_exponent10 __glibcpp_f80_min_exponent10
739#define __glibcpp_double_max_exponent __glibcpp_f80_max_exponent
740#define __glibcpp_double_max_exponent10 __glibcpp_f80_max_exponent10
741#else
742// You must define these macros in the configuration file.
743#endif
744
745// FIXME: These are just stubs and inkorrect
746
747#ifndef __glibcpp_double_has_infinity
748#define __glibcpp_double_has_infinity false
749#endif
750
751#ifndef __glibcpp_double_has_quiet_NaN
752#define __glibcpp_double_has_quiet_NaN false
753#endif
754
755#ifndef __glibcpp_double_has_signaling_NaN
756#define __glibcpp_double_has_signaling_NaN false
757#endif
758
759#ifndef __glibcpp_double_has_denorm
760#define __glibcpp_double_has_denorm denorm_absent
761#endif
762
763#ifndef __glibcpp_double_has_denorm_loss
764#define __glibcpp_double_has_denorm_loss false
765#endif
766
767#ifndef __glibcpp_double_infinity
768#define __glibcpp_double_infinity 0.0
769#endif
770
771#ifndef __glibcpp_double_quiet_NaN
772#define __glibcpp_double_quiet_NaN 0.0
773#endif
774
775#ifndef __glibcpp_double_signaling_NaN
776#define __glibcpp_double_signaling_NaN 0.0
777#endif
778
779#ifndef __glibcpp_double_denorm_min
780#define __glibcpp_double_denorm_min 0.0
781#endif
782
783#ifndef __glibcpp_double_is_iec559
784#define __glibcpp_double_is_iec559 false
785#endif
786
787#ifndef __glibcpp_double_is_bounded
788#define __glibcpp_double_is_bounded true
789#endif
790
791#ifndef __glibcpp_double_is_modulo
792#define __glibcpp_double_is_modulo false
793#endif
794
795#ifndef __glibcpp_double_traps
796#define __glibcpp_double_traps false
797#endif
798
799#ifndef __glibcpp_double_tinyness_before
800#define __glibcpp_double_tinyness_before false
801#endif
802
803#ifndef __glibcpp_double_round_style
804#define __glibcpp_double_round_style round_toward_zero
805#endif
806
807// long double
808
809#if __glibcpp_long_double_bits == 32
810#define __glibcpp_long_double_min __glibcpp_f32_min
811#define __glibcpp_long_double_max __glibcpp_f32_max
812#define __glibcpp_long_double_digits __glibcpp_f32_digits
813#define __glibcpp_long_double_digits10 __glibcpp_f32_digits10
814#define __glibcpp_long_double_radix __glibcpp_f32_radix
815#define __glibcpp_long_double_epsilon __glibcpp_f32_epsilon
816#define __glibcpp_long_double_round_error __glibcpp_f32_round_error
817#define __glibcpp_long_double_min_exponent __glibcpp_f32_min_exponent
818#define __glibcpp_long_double_min_exponent10 __glibcpp_f32_min_exponent10
819#define __glibcpp_long_double_max_exponent __glibcpp_f32_max_exponent
820#define __glibcpp_long_double_max_exponent10 __glibcpp_f32_max_exponent10
821#elif __glibcpp_long_double_bits == 64
822#define __glibcpp_long_double_min __glibcpp_f64_min
823#define __glibcpp_long_double_max __glibcpp_f64_max
824#define __glibcpp_long_double_digits __glibcpp_f64_digits
825#define __glibcpp_long_double_digits10 __glibcpp_f64_digits10
826#define __glibcpp_long_double_radix __glibcpp_f64_radix
827#define __glibcpp_long_double_epsilon __glibcpp_f64_epsilon
828#define __glibcpp_long_double_round_error __glibcpp_f64_round_error
829#define __glibcpp_long_double_min_exponent __glibcpp_f64_min_exponent
830#define __glibcpp_long_double_min_exponent10 __glibcpp_f64_min_exponent10
831#define __glibcpp_long_double_max_exponent __glibcpp_f64_max_exponent
832#define __glibcpp_long_double_max_exponent10 __glibcpp_f64_max_exponent10
833#elif __glibcpp_long_double_bits == 80
834#define __glibcpp_long_double_min __glibcpp_f80_min
835#define __glibcpp_long_double_max __glibcpp_f80_max
836#define __glibcpp_long_double_digits __glibcpp_f80_digits
837#define __glibcpp_long_double_digits10 __glibcpp_f80_digits10
838#define __glibcpp_long_double_radix __glibcpp_f80_radix
839#define __glibcpp_long_double_epsilon __glibcpp_f80_epsilon
840#define __glibcpp_long_double_round_error __glibcpp_f80_round_error
841#define __glibcpp_long_double_min_exponent __glibcpp_f80_min_exponent
842#define __glibcpp_long_double_min_exponent10 __glibcpp_f80_min_exponent10
843#define __glibcpp_long_double_max_exponent __glibcpp_f80_max_exponent
844#define __glibcpp_long_double_max_exponent10 __glibcpp_f80_max_exponent10
845#elif __glibcpp_long_double_bits == 96
846#define __glibcpp_long_double_min __glibcpp_f96_min
847#define __glibcpp_long_double_max __glibcpp_f96_max
848#define __glibcpp_long_double_digits __glibcpp_f96_digits
849#define __glibcpp_long_double_digits10 __glibcpp_f96_digits10
850#define __glibcpp_long_double_radix __glibcpp_f96_radix
851#define __glibcpp_long_double_epsilon __glibcpp_f96_epsilon
852#define __glibcpp_long_double_round_error __glibcpp_f96_round_error
853#define __glibcpp_long_double_min_exponent __glibcpp_f96_min_exponent
854#define __glibcpp_long_double_min_exponent10 __glibcpp_f96_min_exponent10
855#define __glibcpp_long_double_max_exponent __glibcpp_f96_max_exponent
856#define __glibcpp_long_double_max_exponent10 __glibcpp_f96_max_exponent10
857#elif __glibcpp_long_double_bits == 128
858#define __glibcpp_long_double_min __glibcpp_f128_min
859#define __glibcpp_long_double_max __glibcpp_f128_max
860#define __glibcpp_long_double_digits __glibcpp_f128_digits
861#define __glibcpp_long_double_digits10 __glibcpp_f128_digits10
862#define __glibcpp_long_double_radix __glibcpp_f128_radix
863#define __glibcpp_long_double_epsilon __glibcpp_f128_epsilon
864#define __glibcpp_long_double_round_error __glibcpp_f128_round_error
865#define __glibcpp_long_double_min_exponent __glibcpp_f128_min_exponent
866#define __glibcpp_long_double_min_exponent10 __glibcpp_f128_min_exponent10
867#define __glibcpp_long_double_max_exponent __glibcpp_f128_max_exponent
868#define __glibcpp_long_double_max_exponent10 __glibcpp_f128_max_exponent10
869#else
870// You must define these macros in the configuration file.
871#endif
872
873// FIXME: These are just stubs and inkorrect
874
875#ifndef __glibcpp_long_double_has_infinity
876#define __glibcpp_long_double_has_infinity false
877#endif
878
879#ifndef __glibcpp_long_double_has_quiet_NaN
880#define __glibcpp_long_double_has_quiet_NaN false
881#endif
882
883#ifndef __glibcpp_long_double_has_signaling_NaN
884#define __glibcpp_long_double_has_signaling_NaN false
885#endif
886
887#ifndef __glibcpp_long_double_has_denorm
888#define __glibcpp_long_double_has_denorm denorm_absent
889#endif
890
891#ifndef __glibcpp_long_double_has_denorm_loss
892#define __glibcpp_long_double_has_denorm_loss false
893#endif
894
895#ifndef __glibcpp_long_double_infinity
896#define __glibcpp_long_double_infinity 0.0L
897#endif
898
899#ifndef __glibcpp_long_double_quiet_NaN
900#define __glibcpp_long_double_quiet_NaN 0.0L
901#endif
902
903#ifndef __glibcpp_long_double_signaling_NaN
904#define __glibcpp_long_double_signaling_NaN 0.0L
905#endif
906
907#ifndef __glibcpp_long_double_denorm_min
908#define __glibcpp_long_double_denorm_min 0.0L
909#endif
910
911#ifndef __glibcpp_long_double_is_iec559
912#define __glibcpp_long_double_is_iec559 false
913#endif
914
915#ifndef __glibcpp_long_double_is_bounded
916#define __glibcpp_long_double_is_bounded true
917#endif
918
919#ifndef __glibcpp_long_double_is_modulo
920#define __glibcpp_long_double_is_modulo false
921#endif
922
923#ifndef __glibcpp_long_double_traps
924#define __glibcpp_long_double_traps false
925#endif
926
927#ifndef __glibcpp_long_double_tinyness_before
928#define __glibcpp_long_double_tinyness_before false
929#endif
930
931#ifndef __glibcpp_long_double_round_style
932#define __glibcpp_long_double_round_style round_toward_zero
933#endif
934
935
936namespace std
937{
946
953
954 //
955 // The primary class traits
956 //
958 {
959 static const bool is_specialized = false;
960
961 static const int digits = 0;
962 static const int digits10 = 0;
963 static const bool is_signed = false;
964 static const bool is_integer = false;
965 static const bool is_exact = false;
966 static const int radix = 0;
967
968 static const int min_exponent = 0;
969 static const int min_exponent10 = 0;
970 static const int max_exponent = 0;
971 static const int max_exponent10 = 0;
972
973 static const bool has_infinity = false;
974 static const bool has_quiet_NaN = false;
975 static const bool has_signaling_NaN = false;
977 static const bool has_denorm_loss = false;
978
979 static const bool is_iec559 = false;
980 static const bool is_bounded = false;
981 static const bool is_modulo = false;
982
983 static const bool traps = false;
984 static const bool tinyness_before = false;
986 };
987
988 template<typename _Tp>
990 {
991 static _Tp min() throw() { return static_cast<_Tp>(0); }
992 static _Tp max() throw() { return static_cast<_Tp>(0); }
993 static _Tp epsilon() throw() { return static_cast<_Tp>(0); }
994 static _Tp round_error() throw() { return static_cast<_Tp>(0); }
995 static _Tp infinity() throw() { return static_cast<_Tp>(0); }
996 static _Tp quiet_NaN() throw() { return static_cast<_Tp>(0); }
997 static _Tp signaling_NaN() throw() { return static_cast<_Tp>(0); }
998 static _Tp denorm_min() throw() { return static_cast<_Tp>(0); }
999 };
1000
1001 // Now there follow 15 explicit specializations. Yes, 15. Make sure
1002 // you get the count right.
1003 template<>
1004 struct numeric_limits<bool>
1005 {
1006 static const bool is_specialized = true;
1007
1008 static bool min() throw()
1009 { return false; }
1010
1011 static bool max() throw()
1012 { return true; }
1013
1014 static const int digits = __glibcpp_bool_digits;
1015 static const int digits10 = 0;
1016 static const bool is_signed = false;
1017 static const bool is_integer = true;
1018 static const bool is_exact = true;
1019 static const int radix = 2;
1020 static bool epsilon() throw()
1021 { return false; }
1022 static bool round_error() throw()
1023 { return false; }
1024
1025 static const int min_exponent = 0;
1026 static const int min_exponent10 = 0;
1027 static const int max_exponent = 0;
1028 static const int max_exponent10 = 0;
1029
1030 static const bool has_infinity = false;
1031 static const bool has_quiet_NaN = false;
1032 static const bool has_signaling_NaN = false;
1034 static const bool has_denorm_loss = false;
1035
1036 static bool infinity() throw()
1037 { return false; }
1038 static bool quiet_NaN() throw()
1039 { return false; }
1040 static bool signaling_NaN() throw()
1041 { return false; }
1042 static bool denorm_min() throw()
1043 { return false; }
1044
1045 static const bool is_iec559 = false;
1046 static const bool is_bounded = true;
1047 static const bool is_modulo = false;
1048
1049 // It is not clear what it means for a boolean type to trap.
1050 // This is a DR on the LWG issue list. Here, I use integer
1051 // promotion semantics.
1054 static const bool tinyness_before = false;
1056 };
1057
1058#undef __glibcpp_bool_digits
1059
1060 template<>
1061 struct numeric_limits<char>
1062 {
1063 static const bool is_specialized = true;
1064
1065 static char min() throw()
1066 { return __glibcpp_char_min; }
1067 static char max() throw()
1068 { return __glibcpp_char_max; }
1069
1070 static const int digits = __glibcpp_char_digits;
1073 static const bool is_integer = true;
1074 static const bool is_exact = true;
1075 static const int radix = 2;
1076 static char epsilon() throw()
1077 { return char(); }
1078 static char round_error() throw()
1079 { return char(); }
1080
1081 static const int min_exponent = 0;
1082 static const int min_exponent10 = 0;
1083 static const int max_exponent = 0;
1084 static const int max_exponent10 = 0;
1085
1086 static const bool has_infinity = false;
1087 static const bool has_quiet_NaN = false;
1088 static const bool has_signaling_NaN = false;
1090 static const bool has_denorm_loss = false;
1091
1092 static char infinity() throw()
1093 { return char(); }
1094 static char quiet_NaN() throw()
1095 { return char(); }
1096 static char signaling_NaN() throw()
1097 { return char(); }
1098 static char denorm_min() throw()
1099 { return static_cast<char>(0); }
1100
1101 static const bool is_iec559 = false;
1102 static const bool is_bounded = true;
1104
1105 static const bool traps = __glibcpp_char_traps;
1106 static const bool tinyness_before = false;
1108 };
1109
1110#undef __glibcpp_char_min
1111#undef __glibcpp_char_max
1112#undef __glibcpp_char_digits
1113#undef __glibcpp_char_digits10
1114#undef __glibcpp_char_is_signed
1115#undef __glibcpp_char_is_modulo
1116#undef __glibcpp_char_traps
1117
1118
1119
1120 template<>
1121 struct numeric_limits<signed char>
1122 {
1123 static const bool is_specialized = true;
1124
1125 static signed char min() throw()
1126 { return __glibcpp_signed_char_min; }
1127 static signed char max() throw()
1128 { return __glibcpp_signed_char_max; }
1129
1132 static const bool is_signed = true;
1133 static const bool is_integer = true;
1134 static const bool is_exact = true;
1135 static const int radix = 2;
1136 static signed char epsilon() throw()
1137 { return 0; }
1138 static signed char round_error() throw()
1139 { return 0; }
1140
1141 static const int min_exponent = 0;
1142 static const int min_exponent10 = 0;
1143 static const int max_exponent = 0;
1144 static const int max_exponent10 = 0;
1145
1146 static const bool has_infinity = false;
1147 static const bool has_quiet_NaN = false;
1148 static const bool has_signaling_NaN = false;
1150 static const bool has_denorm_loss = false;
1151
1152 static signed char infinity() throw()
1153 { return static_cast<signed char>(0); }
1154 static signed char quiet_NaN() throw()
1155 { return static_cast<signed char>(0); }
1156 static signed char signaling_NaN() throw()
1157 { return static_cast<signed char>(0); }
1158 static signed char denorm_min() throw()
1159 { return static_cast<signed char>(0); }
1160
1161 static const bool is_iec559 = false;
1162 static const bool is_bounded = true;
1164
1166 static const bool tinyness_before = false;
1168 };
1169
1170#undef __glibcpp_signed_char_min
1171#undef __glibcpp_signed_char_max
1172#undef __glibcpp_signed_char_digits
1173#undef __glibcpp_signed_char_digits10
1174#undef __glibcpp_signed_char_is_modulo
1175#undef __glibcpp_signed_char_traps
1176
1177 template<>
1178 struct numeric_limits<unsigned char>
1179 {
1180 static const bool is_specialized = true;
1181
1182 static unsigned char min() throw()
1183 { return 0; }
1184 static unsigned char max() throw()
1185 { return __glibcpp_unsigned_char_max; }
1186
1189 static const bool is_signed = false;
1190 static const bool is_integer = true;
1191 static const bool is_exact = true;
1192 static const int radix = 2;
1193 static unsigned char epsilon() throw()
1194 { return 0; }
1195 static unsigned char round_error() throw()
1196 { return 0; }
1197
1198 static const int min_exponent = 0;
1199 static const int min_exponent10 = 0;
1200 static const int max_exponent = 0;
1201 static const int max_exponent10 = 0;
1202
1203 static const bool has_infinity = false;
1204 static const bool has_quiet_NaN = false;
1205 static const bool has_signaling_NaN = false;
1207 static const bool has_denorm_loss = false;
1208
1209 static unsigned char infinity() throw()
1210 { return static_cast<unsigned char>(0); }
1211 static unsigned char quiet_NaN() throw()
1212 { return static_cast<unsigned char>(0); }
1213 static unsigned char signaling_NaN() throw()
1214 { return static_cast<unsigned char>(0); }
1215 static unsigned char denorm_min() throw()
1216 { return static_cast<unsigned char>(0); }
1217
1218 static const bool is_iec559 = false;
1219 static const bool is_bounded = true;
1220 static const bool is_modulo = true;
1221
1223 static const bool tinyness_before = false;
1225 };
1226
1227#undef __glibcpp_unsigned_char_max
1228#undef __glibcpp_unsigned_char_digits
1229#undef __glibcpp_unsigned_char_digits10
1230#undef __glibcpp_unsigned_char_traps
1231
1232 template<>
1233 struct numeric_limits<wchar_t>
1234 {
1235 static const bool is_specialized = true;
1236
1237 static wchar_t min() throw()
1238 { return __glibcpp_wchar_t_min; }
1239 static wchar_t max() throw()
1240 { return __glibcpp_wchar_t_max; }
1241
1245 static const bool is_integer = true;
1246 static const bool is_exact = true;
1247 static const int radix = 2;
1248 static wchar_t epsilon() throw()
1249 { return 0; }
1250 static wchar_t round_error() throw()
1251 { return 0; }
1252
1253 static const int min_exponent = 0;
1254 static const int min_exponent10 = 0;
1255 static const int max_exponent = 0;
1256 static const int max_exponent10 = 0;
1257
1258 static const bool has_infinity = false;
1259 static const bool has_quiet_NaN = false;
1260 static const bool has_signaling_NaN = false;
1262 static const bool has_denorm_loss = false;
1263
1264 static wchar_t infinity() throw()
1265 { return wchar_t(); }
1266 static wchar_t quiet_NaN() throw()
1267 { return wchar_t(); }
1268 static wchar_t signaling_NaN() throw()
1269 { return wchar_t(); }
1270 static wchar_t denorm_min() throw()
1271 { return wchar_t(); }
1272
1273 static const bool is_iec559 = false;
1274 static const bool is_bounded = true;
1276
1277 static const bool traps = __glibcpp_wchar_t_traps;
1278 static const bool tinyness_before = false;
1280 };
1281
1282#undef __glibcpp_wchar_t_min
1283#undef __glibcpp_wchar_t_max
1284#undef __glibcpp_wchar_t_digits
1285#undef __glibcpp_wchar_t_digits10
1286#undef __glibcpp_wchar_t_is_signed
1287#undef __glibcpp_wchar_t_is_modulo
1288#undef __glibcpp_wchar_t_traps
1289
1290 template<>
1291 struct numeric_limits<short>
1292 {
1293 static const bool is_specialized = true;
1294
1295 static short min() throw()
1296 { return __glibcpp_signed_short_min; }
1297 static short max() throw()
1298 { return __glibcpp_signed_short_max; }
1299
1302 static const bool is_signed = true;
1303 static const bool is_integer = true;
1304 static const bool is_exact = true;
1305 static const int radix = 2;
1306 static short epsilon() throw()
1307 { return 0; }
1308 static short round_error() throw()
1309 { return 0; }
1310
1311 static const int min_exponent = 0;
1312 static const int min_exponent10 = 0;
1313 static const int max_exponent = 0;
1314 static const int max_exponent10 = 0;
1315
1316 static const bool has_infinity = false;
1317 static const bool has_quiet_NaN = false;
1318 static const bool has_signaling_NaN = false;
1320 static const bool has_denorm_loss = false;
1321
1322 static short infinity() throw()
1323 { return short(); }
1324 static short quiet_NaN() throw()
1325 { return short(); }
1326 static short signaling_NaN() throw()
1327 { return short(); }
1328 static short denorm_min() throw()
1329 { return short(); }
1330
1331 static const bool is_iec559 = true;
1332 static const bool is_bounded = true;
1334
1336 static const bool tinyness_before = false;
1338 };
1339
1340#undef __glibcpp_signed_short_min
1341#undef __glibcpp_signed_short_max
1342#undef __glibcpp_signed_short_digits
1343#undef __glibcpp_signed_short_digits10
1344#undef __glibcpp_signed_short_is_modulo
1345#undef __glibcpp_signed_short_traps
1346
1347 template<>
1348 struct numeric_limits<unsigned short>
1349 {
1350 static const bool is_specialized = true;
1351
1352 static unsigned short min() throw()
1353 { return 0; }
1354 static unsigned short max() throw()
1356
1359 static const bool is_signed = false;
1360 static const bool is_integer = true;
1361 static const bool is_exact = true;
1362 static const int radix = 2;
1363 static unsigned short epsilon() throw()
1364 { return 0; }
1365 static unsigned short round_error() throw()
1366 { return 0; }
1367
1368 static const int min_exponent = 0;
1369 static const int min_exponent10 = 0;
1370 static const int max_exponent = 0;
1371 static const int max_exponent10 = 0;
1372
1373 static const bool has_infinity = false;
1374 static const bool has_quiet_NaN = false;
1375 static const bool has_signaling_NaN = false;
1377 static const bool has_denorm_loss = false;
1378
1379 static unsigned short infinity() throw()
1380 { return static_cast<unsigned short>(0); }
1381 static unsigned short quiet_NaN() throw()
1382 { return static_cast<unsigned short>(0); }
1383 static unsigned short signaling_NaN() throw()
1384 { return static_cast<unsigned short>(0); }
1385 static unsigned short denorm_min() throw()
1386 { return static_cast<unsigned short>(0); }
1387
1388 static const bool is_iec559 = true;
1389 static const bool is_bounded = true;
1390 static const bool is_modulo = true;
1391
1393 static const bool tinyness_before = false;
1395 };
1396
1397#undef __glibcpp_unsigned_short_max
1398#undef __glibcpp_unsigned_short_digits
1399#undef __glibcpp_unsigned_short_digits10
1400#undef __glibcpp_unsigned_short_traps
1401
1402 template<>
1403 struct numeric_limits<int>
1404 {
1405 static const bool is_specialized = true;
1406
1407 static int min() throw()
1408 { return __glibcpp_signed_int_min; }
1409 static int max() throw()
1410 { return __glibcpp_signed_int_max; }
1411
1414 static const bool is_signed = true;
1415 static const bool is_integer = true;
1416 static const bool is_exact = true;
1417 static const int radix = 2;
1418 static int epsilon() throw()
1419 { return 0; }
1420 static int round_error() throw()
1421 { return 0; }
1422
1423 static const int min_exponent = 0;
1424 static const int min_exponent10 = 0;
1425 static const int max_exponent = 0;
1426 static const int max_exponent10 = 0;
1427
1428 static const bool has_infinity = false;
1429 static const bool has_quiet_NaN = false;
1430 static const bool has_signaling_NaN = false;
1432 static const bool has_denorm_loss = false;
1433
1434 static int infinity() throw()
1435 { return static_cast<int>(0); }
1436 static int quiet_NaN() throw()
1437 { return static_cast<int>(0); }
1438 static int signaling_NaN() throw()
1439 { return static_cast<int>(0); }
1440 static int denorm_min() throw()
1441 { return static_cast<int>(0); }
1442
1443 static const bool is_iec559 = true;
1444 static const bool is_bounded = true;
1446
1448 static const bool tinyness_before = false;
1450 };
1451
1452#undef __glibcpp_signed_int_min
1453#undef __glibcpp_signed_int_max
1454#undef __glibcpp_signed_int_digits
1455#undef __glibcpp_signed_int_digits10
1456#undef __glibcpp_signed_int_is_modulo
1457#undef __glibcpp_signed_int_traps
1458
1459 template<>
1460 struct numeric_limits<unsigned int>
1461 {
1462 static const bool is_specialized = true;
1463
1464 static unsigned int min() throw()
1465 { return 0; }
1466 static unsigned int max() throw()
1467 { return __glibcpp_unsigned_int_max; }
1468
1471 static const bool is_signed = false;
1472 static const bool is_integer = true;
1473 static const bool is_exact = true;
1474 static const int radix = 2;
1475 static unsigned int epsilon() throw()
1476 { return 0; }
1477 static unsigned int round_error() throw()
1478 { return 0; }
1479
1480 static const int min_exponent = 0;
1481 static const int min_exponent10 = 0;
1482 static const int max_exponent = 0;
1483 static const int max_exponent10 = 0;
1484
1485 static const bool has_infinity = false;
1486 static const bool has_quiet_NaN = false;
1487 static const bool has_signaling_NaN = false;
1489 static const bool has_denorm_loss = false;
1490
1491 static unsigned int infinity() throw()
1492 { return static_cast<unsigned int>(0); }
1493 static unsigned int quiet_NaN() throw()
1494 { return static_cast<unsigned int>(0); }
1495 static unsigned int signaling_NaN() throw()
1496 { return static_cast<unsigned int>(0); }
1497 static unsigned int denorm_min() throw()
1498 { return static_cast<unsigned int>(0); }
1499
1500 static const bool is_iec559 = true;
1501 static const bool is_bounded = true;
1502 static const bool is_modulo = true;
1503
1505 static const bool tinyness_before = false;
1507 };
1508
1509#undef __glibcpp_unsigned_int_max
1510#undef __glibcpp_unsigned_int_digits
1511#undef __glibcpp_unsigned_int_digits10
1512#undef __glibcpp_unsigned_int_traps
1513
1514 template<>
1515 struct numeric_limits<long>
1516 {
1517 static const bool is_specialized = true;
1518
1519 static long min() throw()
1520 { return __glibcpp_signed_long_min; }
1521 static long max() throw()
1522 { return __glibcpp_signed_long_max; }
1523
1526 static const bool is_signed = true;
1527 static const bool is_integer = true;
1528 static const bool is_exact = true;
1529 static const int radix = 2;
1530 static long epsilon() throw()
1531 { return 0; }
1532 static long round_error() throw()
1533 { return 0; }
1534
1535 static const int min_exponent = 0;
1536 static const int min_exponent10 = 0;
1537 static const int max_exponent = 0;
1538 static const int max_exponent10 = 0;
1539
1540 static const bool has_infinity = false;
1541 static const bool has_quiet_NaN = false;
1542 static const bool has_signaling_NaN = false;
1544 static const bool has_denorm_loss = false;
1545
1546 static long infinity() throw()
1547 { return static_cast<long>(0); }
1548 static long quiet_NaN() throw()
1549 { return static_cast<long>(0); }
1550 static long signaling_NaN() throw()
1551 { return static_cast<long>(0); }
1552 static long denorm_min() throw()
1553 { return static_cast<long>(0); }
1554
1555 static const bool is_iec559 = true;
1556 static const bool is_bounded = true;
1558
1560 static const bool tinyness_before = false;
1562 };
1563
1564#undef __glibcpp_signed_long_min
1565#undef __glibcpp_signed_long_max
1566#undef __glibcpp_signed_long_digits
1567#undef __glibcpp_signed_long_digits10
1568#undef __glibcpp_signed_long_is_modulo
1569#undef __glibcpp_signed_long_traps
1570
1571 template<>
1572 struct numeric_limits<unsigned long>
1573 {
1574 static const bool is_specialized = true;
1575
1576 static unsigned long min() throw()
1577 { return 0; }
1578 static unsigned long max() throw()
1579 { return __glibcpp_unsigned_long_max; }
1580
1583 static const bool is_signed = false;
1584 static const bool is_integer = true;
1585 static const bool is_exact = true;
1586 static const int radix = 2;
1587 static unsigned long epsilon() throw()
1588 { return 0; }
1589 static unsigned long round_error() throw()
1590 { return 0; }
1591
1592 static const int min_exponent = 0;
1593 static const int min_exponent10 = 0;
1594 static const int max_exponent = 0;
1595 static const int max_exponent10 = 0;
1596
1597 static const bool has_infinity = false;
1598 static const bool has_quiet_NaN = false;
1599 static const bool has_signaling_NaN = false;
1601 static const bool has_denorm_loss = false;
1602
1603 static unsigned long infinity() throw()
1604 { return static_cast<unsigned long>(0); }
1605 static unsigned long quiet_NaN() throw()
1606 { return static_cast<unsigned long>(0); }
1607 static unsigned long signaling_NaN() throw()
1608 { return static_cast<unsigned long>(0); }
1609 static unsigned long denorm_min() throw()
1610 { return static_cast<unsigned long>(0); }
1611
1612 static const bool is_iec559 = true;
1613 static const bool is_bounded = true;
1614 static const bool is_modulo = true;
1615
1617 static const bool tinyness_before = false;
1619 };
1620
1621#undef __glibcpp_unsigned_long_max
1622#undef __glibcpp_unsigned_long_digits
1623#undef __glibcpp_unsigned_long_digits10
1624#undef __glibcpp_unsigned_long_traps
1625
1626 template<>
1627 struct numeric_limits<long long>
1628 {
1629 static const bool is_specialized = true;
1630
1631 static long long min() throw()
1633 static long long max() throw()
1635
1638 static const bool is_signed = true;
1639 static const bool is_integer = true;
1640 static const bool is_exact = true;
1641 static const int radix = 2;
1642 static long long epsilon() throw()
1643 { return 0; }
1644 static long long round_error() throw()
1645 { return 0; }
1646
1647 static const int min_exponent = 0;
1648 static const int min_exponent10 = 0;
1649 static const int max_exponent = 0;
1650 static const int max_exponent10 = 0;
1651
1652 static const bool has_infinity = false;
1653 static const bool has_quiet_NaN = false;
1654 static const bool has_signaling_NaN = false;
1656 static const bool has_denorm_loss = false;
1657
1658 static long long infinity() throw()
1659 { return static_cast<long long>(0); }
1660 static long long quiet_NaN() throw()
1661 { return static_cast<long long>(0); }
1662 static long long signaling_NaN() throw()
1663 { return static_cast<long long>(0); }
1664 static long long denorm_min() throw()
1665 { return static_cast<long long>(0); }
1666
1667 static const bool is_iec559 = true;
1668 static const bool is_bounded = true;
1670
1672 static const bool tinyness_before = false;
1674 };
1675
1676#undef __glibcpp_signed_long_long_min
1677#undef __glibcpp_signed_long_long_max
1678#undef __glibcpp_signed_long_long_digits
1679#undef __glibcpp_signed_long_long_digits10
1680#undef __glibcpp_signed_long_long_is_modulo
1681#undef __glibcpp_signed_long_long_traps
1682
1683 template<>
1684 struct numeric_limits<unsigned long long>
1685 {
1686 static const bool is_specialized = true;
1687
1688 static unsigned long long min() throw()
1689 { return 0; }
1690 static unsigned long long max() throw()
1692
1695 static const bool is_signed = false;
1696 static const bool is_integer = true;
1697 static const bool is_exact = true;
1698 static const int radix = 2;
1699 static unsigned long long epsilon() throw()
1700 { return 0; }
1701 static unsigned long long round_error() throw()
1702 { return 0; }
1703
1704 static const int min_exponent = 0;
1705 static const int min_exponent10 = 0;
1706 static const int max_exponent = 0;
1707 static const int max_exponent10 = 0;
1708
1709 static const bool has_infinity = false;
1710 static const bool has_quiet_NaN = false;
1711 static const bool has_signaling_NaN = false;
1713 static const bool has_denorm_loss = false;
1714
1715 static unsigned long long infinity() throw()
1716 { return static_cast<unsigned long long>(0); }
1717 static unsigned long long quiet_NaN() throw()
1718 { return static_cast<unsigned long long>(0); }
1719 static unsigned long long signaling_NaN() throw()
1720 { return static_cast<unsigned long long>(0); }
1721 static unsigned long long denorm_min() throw()
1722 { return static_cast<unsigned long long>(0); }
1723
1724 static const bool is_iec559 = true;
1725 static const bool is_bounded = true;
1726 static const bool is_modulo = true;
1727
1728 static const bool traps = true;
1729 static const bool tinyness_before = false;
1731 };
1732
1733#undef __glibcpp_unsigned_long_long_max
1734#undef __glibcpp_unsigned_long_long_digits
1735#undef __glibcpp_unsigned_long_long_digits10
1736#undef __glibcpp_unsigned_long_long_traps
1737
1738 template<>
1739 struct numeric_limits<float>
1740 {
1741 static const bool is_specialized = true;
1742
1743 static float min() throw()
1744 { return __glibcpp_float_min; }
1745 static float max() throw()
1746 { return __glibcpp_float_max; }
1747
1748 static const int digits = __glibcpp_float_digits;
1749 static const int digits10 = __glibcpp_float_digits10;
1750 static const bool is_signed = true;
1751 static const bool is_integer = false;
1752 static const bool is_exact = false;
1753 static const int radix = __glibcpp_float_radix;
1754 static float epsilon() throw()
1755 { return __glibcpp_float_epsilon; }
1756 static float round_error() throw()
1757 { return __glibcpp_float_round_error; }
1758
1759 static const int min_exponent = __glibcpp_float_min_exponent;
1760 static const int min_exponent10 = __glibcpp_float_min_exponent10;
1761 static const int max_exponent = __glibcpp_float_max_exponent;
1762 static const int max_exponent10 = __glibcpp_float_max_exponent10;
1763
1769
1770 static float infinity() throw()
1771 { return __glibcpp_float_infinity; }
1772 static float quiet_NaN() throw()
1773 { return __glibcpp_float_quiet_NaN; }
1774 static float signaling_NaN() throw()
1776 static float denorm_min() throw()
1777 { return __glibcpp_float_denorm_min; }
1778
1782
1783 static const bool traps = __glibcpp_float_traps;
1786 };
1787
1788#undef __glibcpp_float_min
1789#undef __glibcpp_float_max
1790#undef __glibcpp_float_digits
1791#undef __glibcpp_float_digits10
1792#undef __glibcpp_float_radix
1793#undef __glibcpp_float_round_error
1794#undef __glibcpp_float_min_exponent
1795#undef __glibcpp_float_min_exponent10
1796#undef __glibcpp_float_max_exponent
1797#undef __glibcpp_float_max_exponent10
1798#undef __glibcpp_float_has_infinity
1799#undef __glibcpp_float_has_quiet_NaN
1800#undef __glibcpp_float_has_signaling_NaN
1801#undef __glibcpp_float_has_denorm
1802#undef __glibcpp_float_has_denorm_loss
1803#undef __glibcpp_float_infinity
1804#undef __glibcpp_float_quiet_NaN
1805#undef __glibcpp_float_signaling_NaN
1806#undef __glibcpp_float_denorm_min
1807#undef __glibcpp_float_is_iec559
1808#undef __glibcpp_float_is_bounded
1809#undef __glibcpp_float_is_modulo
1810#undef __glibcpp_float_traps
1811#undef __glibcpp_float_tinyness_before
1812#undef __glibcpp_float_round_style
1813
1814 template<>
1815 struct numeric_limits<double>
1816 {
1817 static const bool is_specialized = true;
1818
1819 static double min() throw()
1820 { return __glibcpp_double_min; }
1821 static double max() throw()
1822 { return __glibcpp_double_max; }
1823
1824 static const int digits = __glibcpp_double_digits;
1825 static const int digits10 = __glibcpp_double_digits10;
1826 static const bool is_signed = true;
1827 static const bool is_integer = false;
1828 static const bool is_exact = false;
1829 static const int radix = __glibcpp_double_radix;
1830 static double epsilon() throw()
1831 { return __glibcpp_double_epsilon; }
1832 static double round_error() throw()
1833 { return __glibcpp_double_round_error; }
1834
1835 static const int min_exponent = __glibcpp_double_min_exponent;
1836 static const int min_exponent10 = __glibcpp_double_min_exponent10;
1837 static const int max_exponent = __glibcpp_double_max_exponent;
1838 static const int max_exponent10 = __glibcpp_double_max_exponent10;
1839
1846
1847 static double infinity() throw()
1848 { return __glibcpp_double_infinity; }
1849 static double quiet_NaN() throw()
1850 { return __glibcpp_double_quiet_NaN; }
1851 static double signaling_NaN() throw()
1853 static double denorm_min() throw()
1854 { return __glibcpp_double_denorm_min; }
1855
1859
1860 static const bool traps = __glibcpp_double_traps;
1864 };
1865
1866#undef __glibcpp_double_min
1867#undef __glibcpp_double_max
1868#undef __glibcpp_double_digits
1869#undef __glibcpp_double_digits10
1870#undef __glibcpp_double_radix
1871#undef __glibcpp_double_round_error
1872#undef __glibcpp_double_min_exponent
1873#undef __glibcpp_double_min_exponent10
1874#undef __glibcpp_double_max_exponent
1875#undef __glibcpp_double_max_exponent10
1876#undef __glibcpp_double_has_infinity
1877#undef __glibcpp_double_has_quiet_NaN
1878#undef __glibcpp_double_has_signaling_NaN
1879#undef __glibcpp_double_has_denorm
1880#undef __glibcpp_double_has_denorm_loss
1881#undef __glibcpp_double_infinity
1882#undef __glibcpp_double_quiet_NaN
1883#undef __glibcpp_double_signaling_NaN
1884#undef __glibcpp_double_denorm_min
1885#undef __glibcpp_double_is_iec559
1886#undef __glibcpp_double_is_bounded
1887#undef __glibcpp_double_is_modulo
1888#undef __glibcpp_double_traps
1889#undef __glibcpp_double_tinyness_before
1890#undef __glibcpp_double_round_style
1891
1892
1893 template<>
1894 struct numeric_limits<long double>
1895 {
1896 static const bool is_specialized = true;
1897
1898 static long double min() throw()
1899 { return __glibcpp_long_double_min; }
1900 static long double max() throw()
1901 { return __glibcpp_long_double_max; }
1902
1903 static const int digits = __glibcpp_long_double_digits;
1904 static const int digits10 = __glibcpp_long_double_digits10;
1905 static const bool is_signed = true;
1906 static const bool is_integer = false;
1907 static const bool is_exact = false;
1908 static const int radix = __glibcpp_long_double_radix;
1909 static long double epsilon() throw()
1910 { return __glibcpp_long_double_epsilon; }
1911 static long double round_error() throw()
1912 { return __glibcpp_long_double_round_error; }
1913
1914 static const int min_exponent = __glibcpp_long_double_min_exponent;
1915 static const int min_exponent10 = __glibcpp_long_double_min_exponent10;
1916 static const int max_exponent = __glibcpp_long_double_max_exponent;
1917 static const int max_exponent10 = __glibcpp_long_double_max_exponent10;
1918
1921 static const bool has_signaling_NaN =
1925 static const bool has_denorm_loss =
1927
1928 static long double infinity() throw()
1930 static long double quiet_NaN() throw()
1932 static long double signaling_NaN() throw()
1934 static long double denorm_min() throw()
1936
1940
1945 };
1946
1947#undef __glibcpp_long_double_min
1948#undef __glibcpp_long_double_max
1949#undef __glibcpp_long_double_digits
1950#undef __glibcpp_long_double_digits10
1951#undef __glibcpp_long_double_radix
1952#undef __glibcpp_long_double_round_error
1953#undef __glibcpp_long_double_min_exponent
1954#undef __glibcpp_long_double_min_exponent10
1955#undef __glibcpp_long_double_max_exponent
1956#undef __glibcpp_long_double_max_exponent10
1957#undef __glibcpp_long_double_has_infinity
1958#undef __glibcpp_long_double_has_quiet_NaN
1959#undef __glibcpp_long_double_has_signaling_NaN
1960#undef __glibcpp_long_double_has_denorm
1961#undef __glibcpp_long_double_has_denorm_loss
1962#undef __glibcpp_long_double_infinity
1963#undef __glibcpp_long_double_quiet_NaN
1964#undef __glibcpp_long_double_signaling_NaN
1965#undef __glibcpp_long_double_denorm_min
1966#undef __glibcpp_long_double_is_iec559
1967#undef __glibcpp_long_double_is_bounded
1968#undef __glibcpp_long_double_is_modulo
1969#undef __glibcpp_long_double_traps
1970#undef __glibcpp_long_double_tinyness_before
1971#undef __glibcpp_long_double_round_style
1972
1973} // namespace std
1974
1975#endif // gcc < 3
1976
1977#endif // _CPP_NUMERIC_LIMITS
#define __glibcpp_long_double_round_style
#define __glibcpp_double_quiet_NaN
#define __glibcpp_float_has_infinity
#define __glibcpp_double_is_iec559
#define __glibcpp_double_has_signaling_NaN
#define __glibcpp_float_is_iec559
#define __glibcpp_signed_long_long_min
#define __glibcpp_long_double_has_infinity
#define __glibcpp_signed_char_is_modulo
#define __glibcpp_signed_char_min
#define __glibcpp_wchar_t_digits
#define __glibcpp_unsigned_long_long_digits
#define __glibcpp_signed_long_long_digits
#define __glibcpp_long_double_denorm_min
#define __glibcpp_float_round_style
#define __glibcpp_wchar_t_digits10
#define __glibcpp_signed_long_min
#define __glibcpp_float_signaling_NaN
#define __glibcpp_long_double_traps
#define __glibcpp_signed_short_traps
#define __glibcpp_wchar_t_is_modulo
#define __glibcpp_unsigned_short_max
#define __glibcpp_char_digits10
#define __glibcpp_unsigned_int_digits10
#define __glibcpp_float_is_bounded
#define __glibcpp_float_quiet_NaN
#define __glibcpp_long_double_is_modulo
#define __glibcpp_long_double_quiet_NaN
#define __glibcpp_plain_char_is_signed
#define __glibcpp_long_double_has_denorm
#define __glibcpp_unsigned_short_digits
#define __glibcpp_float_is_modulo
#define __glibcpp_char_max
#define __glibcpp_wchar_t_min
#define __glibcpp_unsigned_long_digits
#define __glibcpp_unsigned_long_long_digits10
#define __glibcpp_unsigned_long_digits10
#define __glibcpp_wchar_t_is_signed
#define __glibcpp_unsigned_char_traps
#define __glibcpp_unsigned_int_digits
#define __glibcpp_long_double_has_denorm_loss
#define __glibcpp_signed_char_digits10
#define __glibcpp_signed_short_digits10
#define __glibcpp_unsigned_long_long_max
#define __glibcpp_signed_int_is_modulo
#define __glibcpp_unsigned_int_max
#define __glibcpp_char_traps
#define __glibcpp_unsigned_char_digits
#define __glibcpp_char_min
#define __glibcpp_signed_long_long_digits10
#define __glibcpp_float_has_denorm
#define __glibcpp_signed_int_max
#define __glibcpp_signed_long_digits10
#define __glibcpp_bool_digits
#define __glibcpp_signed_char_traps
#define __glibcpp_float_has_signaling_NaN
#define __glibcpp_wchar_t_max
#define __glibcpp_double_is_bounded
#define __glibcpp_signed_int_traps
#define __glibcpp_unsigned_char_max
#define __glibcpp_signed_int_digits
#define __glibcpp_signed_long_long_is_modulo
#define __glibcpp_float_tinyness_before
#define __glibcpp_float_infinity
#define __glibcpp_signed_long_is_modulo
#define __glibcpp_signed_long_digits
#define __glibcpp_long_double_is_iec559
#define __glibcpp_unsigned_int_traps
#define __glibcpp_long_double_is_bounded
#define __glibcpp_double_round_style
#define __glibcpp_signed_char_digits
#define __glibcpp_float_traps
#define __glibcpp_double_traps
#define __glibcpp_long_double_has_quiet_NaN
#define __glibcpp_signed_long_traps
#define __glibcpp_long_double_signaling_NaN
#define __glibcpp_double_tinyness_before
#define __glibcpp_signed_short_min
#define __glibcpp_double_infinity
#define __glibcpp_float_has_quiet_NaN
#define __glibcpp_signed_int_digits10
#define __glibcpp_signed_long_long_max
#define __glibcpp_double_is_modulo
#define __glibcpp_unsigned_short_traps
#define __glibcpp_double_has_infinity
#define __glibcpp_float_has_denorm_loss
#define __glibcpp_long_double_has_signaling_NaN
#define __glibcpp_unsigned_long_max
#define __glibcpp_unsigned_char_digits10
#define __glibcpp_char_is_modulo
#define __glibcpp_signed_short_digits
#define __glibcpp_long_double_tinyness_before
#define __glibcpp_signed_short_max
#define __glibcpp_signed_char_max
#define __glibcpp_signed_short_is_modulo
#define __glibcpp_signed_long_max
#define __glibcpp_signed_long_long_traps
#define __glibcpp_float_denorm_min
#define __glibcpp_double_signaling_NaN
#define __glibcpp_signed_int_min
#define __glibcpp_unsigned_short_digits10
#define __glibcpp_unsigned_long_traps
#define __glibcpp_double_denorm_min
#define __glibcpp_wchar_t_traps
#define __glibcpp_double_has_quiet_NaN
#define __glibcpp_double_has_denorm_loss
#define __glibcpp_char_digits
#define __glibcpp_double_has_denorm
#define __glibcpp_long_double_infinity
STL namespace.
float_round_style
@ round_toward_zero
@ round_toward_infinity
@ round_to_nearest
@ round_toward_neg_infinity
@ round_indeterminate
float_denorm_style
@ denorm_present
@ denorm_indeterminate
@ denorm_absent
static const bool is_modulo
static const bool is_integer
static const int digits
static const bool is_iec559
static const int min_exponent
static const bool is_exact
static const bool traps
static const int max_exponent10
static const bool has_quiet_NaN
static const bool is_signed
static const bool tinyness_before
static const int min_exponent10
static const bool has_signaling_NaN
static const float_round_style round_style
static const int max_exponent
static const bool is_bounded
static const bool has_infinity
static const bool has_denorm_loss
static const bool is_specialized
static const float_denorm_style has_denorm
static const int digits10
static const bool is_integer
static const bool is_signed
static const bool has_denorm_loss
static const int min_exponent10
static const bool is_bounded
static const bool tinyness_before
static const bool is_iec559
static const int max_exponent
static const bool is_modulo
static const float_round_style round_style
static const int max_exponent10
static const bool has_infinity
static const int min_exponent
static const bool has_quiet_NaN
static const bool has_signaling_NaN
static const float_denorm_style has_denorm
static const bool is_specialized
static const bool is_exact
static const bool is_integer
static const bool is_bounded
static const bool is_signed
static const bool has_denorm_loss
static const bool is_iec559
static const int max_exponent10
static const bool is_modulo
static const bool is_exact
static const int min_exponent10
static const int min_exponent
static const float_denorm_style has_denorm
static const bool has_signaling_NaN
static const bool is_specialized
static const bool has_quiet_NaN
static const bool has_infinity
static const bool tinyness_before
static const int max_exponent
static const float_round_style round_style
static const int min_exponent10
static const bool has_denorm_loss
static const bool has_signaling_NaN
static const bool has_quiet_NaN
static const bool has_infinity
static const bool tinyness_before
static const int max_exponent10
static const bool is_specialized
static const float_round_style round_style
static const float_denorm_style has_denorm
static const bool is_bounded
static const float_denorm_style has_denorm
static const bool tinyness_before
static const bool has_signaling_NaN
static const bool is_specialized
static const bool is_signed
static const float_round_style round_style
static const int min_exponent10
static const bool is_integer
static const int min_exponent
static const int max_exponent
static const bool has_quiet_NaN
static const bool is_iec559
static const int max_exponent10
static const bool is_modulo
static const bool has_infinity
static const bool has_denorm_loss
static const int max_exponent10
static const bool is_modulo
static const bool tinyness_before
static const bool is_signed
static const bool is_integer
static const float_round_style round_style
static const bool is_exact
static const bool is_bounded
static const int digits10
static const bool has_quiet_NaN
static const bool has_infinity
static const int max_exponent
static const int min_exponent10
static const bool traps
static const bool is_specialized
static const bool is_iec559
static const float_denorm_style has_denorm
static const bool has_denorm_loss
static const int min_exponent
static const bool has_signaling_NaN
static const float_denorm_style has_denorm
static const float_round_style round_style
static const int min_exponent
static const bool is_exact
static const bool has_denorm_loss
static const bool is_iec559
static const int min_exponent10
static const bool has_signaling_NaN
static const bool has_quiet_NaN
static const bool is_modulo
static const bool is_integer
static const int max_exponent
static const bool is_bounded
static const int max_exponent10
static const bool tinyness_before
static const bool is_specialized
static const bool has_infinity
static const bool is_signed
static long double signaling_NaN()
static const float_round_style round_style
static const float_denorm_style has_denorm
static const bool has_signaling_NaN
static const float_denorm_style has_denorm
static const float_round_style round_style
static const bool is_bounded
static const bool has_infinity
static const bool is_modulo
static const bool has_signaling_NaN
static const bool has_denorm_loss
static const bool has_quiet_NaN
static const bool is_specialized
static const float_round_style round_style
static const int max_exponent
static const bool is_integer
static const int max_exponent10
static const int min_exponent10
static const bool tinyness_before
static const float_denorm_style has_denorm
static const bool is_iec559
static const int min_exponent
static const bool is_signed
static const float_round_style round_style
static signed char signaling_NaN()
static const float_denorm_style has_denorm
static const float_denorm_style has_denorm
static unsigned char signaling_NaN()
static unsigned char denorm_min()
static const float_round_style round_style
static unsigned char round_error()
static const float_round_style round_style
static unsigned int signaling_NaN()
static const float_denorm_style has_denorm
static unsigned int round_error()
static const float_round_style round_style
static unsigned long round_error()
static unsigned long signaling_NaN()
static const float_denorm_style has_denorm
static unsigned long denorm_min()
static unsigned long long infinity()
static unsigned long long quiet_NaN()
static unsigned long long round_error()
static const float_round_style round_style
static const float_denorm_style has_denorm
static unsigned long long epsilon()
static unsigned long long denorm_min()
static unsigned long long signaling_NaN()
static unsigned short denorm_min()
static unsigned short signaling_NaN()
static const float_round_style round_style
static const float_denorm_style has_denorm
static unsigned short quiet_NaN()
static unsigned short round_error()
static const float_denorm_style has_denorm
static const float_round_style round_style
static const bool has_signaling_NaN
static const bool tinyness_before
static const bool has_quiet_NaN
static const bool is_specialized
static const bool has_denorm_loss
static _Tp round_error()
static _Tp signaling_NaN()
static _Tp epsilon()
static _Tp infinity()
static _Tp denorm_min()
static _Tp quiet_NaN()