# limits

Go to the documentation of this file.

    00001 // The template and inlines for the -*- C++ -*- numeric_limits classes.
    00002
    00003 // Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
    00004 //
    00005 // This file is part of the GNU ISO C++ Library.  This library is free
    00006 // software; you can redistribute it and/or modify it under the
    00007 // terms of the GNU General Public License as published by the
    00008 // Free Software Foundation; either version 2, or (at your option)
    00009 // any later version.
    00010
    00011 // This library is distributed in the hope that it will be useful,
    00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
    00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    00014 // GNU General Public License for more details.
    00015
    00016 // You should have received a copy of the GNU General Public License along
    00017 // with this library; see the file COPYING.  If not, write to the Free
    00018 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
    00019 // USA.
    00020
    00021 // As a special exception, you may use this file as part of a free software
    00022 // library without restriction.  Specifically, if other files instantiate
    00023 // templates or use macros or inline functions from this file, or you compile
    00024 // this file and link it with other files to produce an executable, this
    00025 // file does not by itself cause the resulting executable to be covered by
    00026 // the GNU General Public License.  This exception does not however
    00027 // invalidate any other reasons why the executable file might be covered by
    00028 // the GNU General Public License.
    00029
    00030 // Note: this is not a conforming implementation.
    00031 // Written by Gabriel Dos Reis <gdr@codesourcery.com>
    00032
    00033 //
    00034 // ISO 14882:1998
    00035 // 18.2.1
    00036 //
    00037
    00043 #ifndef _CPP_NUMERIC_LIMITS
    00044 #define _CPP_NUMERIC_LIMITS 1
    00045
    00046 #pragma GCC system_header
    00047
    00048 #include <bits/cpu_limits.h>
    00049 #include <bits/c++config.h>
    00050
    00051 //
    00052 // The numeric_limits<> traits document implementation-defined aspects
    00053 // of fundamental arithmetic data types (integers and floating points).
    00054 // From Standard C++ point of view, there are 13 such types:
    00055 //   * integers
    00056 //         bool                             (1)
    00057 //         char, signed char, unsigned char         (3)
    00058 //         short, unsigned short                (2)
    00059 //         int, unsigned                    (2)
    00060 //         long, unsigned long                  (2)
    00061 //
    00062 //   * floating points
    00063 //         float                        (1)
    00064 //         double                       (1)
    00065 //         long double                      (1)
    00066 //
    00067 // GNU C++ undertstands (where supported by the host C-library)
    00068 //   * integer
    00069 //         long long, unsigned long long            (2)
    00070 //
    00071 // which brings us to 15 fundamental arithmetic data types in GNU C++.
    00072 //
    00073 //
    00074 // Since a numeric_limits<> is a bit tricky to get right, we rely on
    00075 // an interface composed of macros which should be defined in config/os
    00076 // or config/cpu when they differ from the generic (read arbitrary)
    00077 // definitions given here.
    00078 //
    00079
    00080 // These values can be overridden in the target configuration file.
    00081 // The default values are appropriate for many 32-bit targets.
    00082
    00083 #ifndef __glibcpp_char_bits
    00084 #define __glibcpp_char_bits 8
    00085 #endif
    00086 #ifdef __CHAR_UNSIGNED__
    00087 #define __glibcpp_plain_char_is_signed false
    00088 #else
    00089 #define __glibcpp_plain_char_is_signed true
    00090 #endif
    00091 #ifndef __glibcpp_short_bits
    00092 #define __glibcpp_short_bits 16
    00093 #endif
    00094 #ifndef __glibcpp_int_bits
    00095 #define __glibcpp_int_bits 32
    00096 #endif
    00097 #ifndef __glibcpp_long_bits
    00098 #define __glibcpp_long_bits 32
    00099 #endif
    00100 #ifndef __glibcpp_wchar_t_bits
    00101 #define __glibcpp_wchar_t_bits 32
    00102 #endif
    00103 #ifndef __glibcpp_wchar_t_is_signed
    00104 #define __glibcpp_wchar_t_is_signed true
    00105 #endif
    00106 #ifndef __glibcpp_long_long_bits
    00107 #define __glibcpp_long_long_bits 64
    00108 #endif
    00109 #ifndef __glibcpp_float_bits
    00110 #define __glibcpp_float_bits 32
    00111 #endif
    00112 #ifndef __glibcpp_double_bits
    00113 #define __glibcpp_double_bits 64
    00114 #endif
    00115 #ifndef __glibcpp_long_double_bits
    00116 #define __glibcpp_long_double_bits 128
    00117 #endif
    00118
    00119 #ifndef __glibcpp_char_traps
    00120 #define __glibcpp_char_traps true
    00121 #endif
    00122 #ifndef __glibcpp_short_traps
    00123 #define __glibcpp_short_traps true
    00124 #endif
    00125 #ifndef __glibcpp_int_traps
    00126 #define __glibcpp_int_traps true
    00127 #endif
    00128 #ifndef __glibcpp_long_traps
    00129 #define __glibcpp_long_traps true
    00130 #endif
    00131 #ifndef __glibcpp_wchar_t_traps
    00132 #define __glibcpp_wchar_t_traps true
    00133 #endif
    00134 #ifndef __glibcpp_long_long_traps
    00135 #define __glibcpp_long_long_traps true
    00136 #endif
    00137
    00138 // You should not need to define any macros below this point, unless
    00139 // you have a machine with non-standard bit-widths.
    00140
    00141 // These values are the minimums and maximums for standard data types
    00142 // of common widths.
    00143
    00144 #define __glibcpp_s8_max 127
    00145 #define __glibcpp_s8_min (-__glibcpp_s8_max - 1)
    00146 #define __glibcpp_s8_digits 7
    00147 #define __glibcpp_s8_digits10 2
    00148 #define __glibcpp_u8_min 0U
    00149 #define __glibcpp_u8_max (__glibcpp_s8_max * 2 + 1)
    00150 #define __glibcpp_u8_digits 8
    00151 #define __glibcpp_u8_digits10 2
    00152 #define __glibcpp_s16_max 32767
    00153 #define __glibcpp_s16_min (-__glibcpp_s16_max - 1)
    00154 #define __glibcpp_s16_digits 15
    00155 #define __glibcpp_s16_digits10 4
    00156 #define __glibcpp_u16_min 0U
    00157 #define __glibcpp_u16_max (__glibcpp_s16_max * 2 + 1)
    00158 #define __glibcpp_u16_digits 16
    00159 #define __glibcpp_u16_digits10 4
    00160 #define __glibcpp_s32_max 2147483647L
    00161 #define __glibcpp_s32_min (-__glibcpp_s32_max - 1)
    00162 #define __glibcpp_s32_digits 31
    00163 #define __glibcpp_s32_digits10 9
    00164 #define __glibcpp_u32_min 0UL
    00165 #define __glibcpp_u32_max (__glibcpp_s32_max * 2U + 1)
    00166 #define __glibcpp_u32_digits 32
    00167 #define __glibcpp_u32_digits10 9
    00168 #define __glibcpp_s64_max 9223372036854775807LL
    00169 #define __glibcpp_s64_min (-__glibcpp_s64_max - 1)
    00170 #define __glibcpp_s64_digits 63
    00171 #define __glibcpp_s64_digits10 18
    00172 #define __glibcpp_u64_min 0ULL
    00173 #define __glibcpp_u64_max (__glibcpp_s64_max * 2ULL + 1)
    00174 #define __glibcpp_u64_digits 64
    00175 #define __glibcpp_u64_digits10 19
    00176
    00177 #define __glibcpp_f32_min 1.17549435e-38F
    00178 #define __glibcpp_f32_max 3.40282347e+38F
    00179 #define __glibcpp_f32_digits 24
    00180 #define __glibcpp_f32_digits10 6
    00181 #define __glibcpp_f32_radix 2
    00182 #define __glibcpp_f32_epsilon 1.19209290e-07F
    00183 #define __glibcpp_f32_round_error 1.0F
    00184 #define __glibcpp_f32_min_exponent -125
    00185 #define __glibcpp_f32_min_exponent10 -37
    00186 #define __glibcpp_f32_max_exponent 128
    00187 #define __glibcpp_f32_max_exponent10 38
    00188 #define __glibcpp_f64_min 2.2250738585072014e-308
    00189 #define __glibcpp_f64_max 1.7976931348623157e+308
    00190 #define __glibcpp_f64_digits 53
    00191 #define __glibcpp_f64_digits10 15
    00192 #define __glibcpp_f64_radix 2
    00193 #define __glibcpp_f64_epsilon 2.2204460492503131e-16
    00194 #define __glibcpp_f64_round_error 1.0
    00195 #define __glibcpp_f64_min_exponent -1021
    00196 #define __glibcpp_f64_min_exponent10 -307
    00197 #define __glibcpp_f64_max_exponent 1024
    00198 #define __glibcpp_f64_max_exponent10 308
    00199 #define __glibcpp_f80_min 3.36210314311209350626e-4932L
    00200 #define __glibcpp_f80_max 1.18973149535723176502e+4932L
    00201 #define __glibcpp_f80_digits 64
    00202 #define __glibcpp_f80_digits10 18
    00203 #define __glibcpp_f80_radix 2
    00204 #define __glibcpp_f80_epsilon 1.08420217248550443401e-19L
    00205 #define __glibcpp_f80_round_error 1.0L
    00206 #define __glibcpp_f80_min_exponent -16381
    00207 #define __glibcpp_f80_min_exponent10 -4931
    00208 #define __glibcpp_f80_max_exponent 16384
    00209 #define __glibcpp_f80_max_exponent10 4932
    00210 #define __glibcpp_f96_min 1.68105157155604675313e-4932L
    00211 #define __glibcpp_f96_max 1.18973149535723176502e+4932L
    00212 #define __glibcpp_f96_digits 64
    00213 #define __glibcpp_f96_digits10 18
    00214 #define __glibcpp_f96_radix 2
    00215 #define __glibcpp_f96_epsilon 1.08420217248550443401e-19L
    00216 #define __glibcpp_f96_round_error 1.0L
    00217 #define __glibcpp_f96_min_exponent -16382
    00218 #define __glibcpp_f96_min_exponent10 -4931
    00219 #define __glibcpp_f96_max_exponent 16384
    00220 #define __glibcpp_f96_max_exponent10 4932
    00221 #define __glibcpp_f128_min 3.362103143112093506262677817321752603E-4932L
    00222 #define __glibcpp_f128_max 1.189731495357231765085759326628007016E+4932L
    00223 #define __glibcpp_f128_digits 113
    00224 #define __glibcpp_f128_digits10 33
    00225 #define __glibcpp_f128_radix 2
    00226 #define __glibcpp_f128_epsilon 1.925929944387235853055977942584927319E-34L
    00227 #define __glibcpp_f128_round_error 1.0L
    00228 #define __glibcpp_f128_min_exponent -16381
    00229 #define __glibcpp_f128_min_exponent10 -4931
    00230 #define __glibcpp_f128_max_exponent 16384
    00231 #define __glibcpp_f128_max_exponent10 4932
    00232
    00233 // bool-specific hooks:
    00234 //     __glibcpp_bool_digits  __glibcpp_int_traps __glibcpp_long_traps
    00235
    00236 #ifndef __glibcpp_bool_digits
    00237 #define __glibcpp_bool_digits 1
    00238 #endif
    00239
    00240 // char.
    00241
    00242 #define __glibcpp_plain_char_traps true
    00243 #define __glibcpp_signed_char_traps true
    00244 #define __glibcpp_unsigned_char_traps true
    00245 #ifndef __glibcpp_char_is_modulo
    00246 #define __glibcpp_char_is_modulo true
    00247 #endif
    00248 #ifndef __glibcpp_signed_char_is_modulo
    00249 #define __glibcpp_signed_char_is_modulo true
    00250 #endif
    00251 #if __glibcpp_char_bits == 8
    00252 #define __glibcpp_signed_char_min __glibcpp_s8_min
    00253 #define __glibcpp_signed_char_max __glibcpp_s8_max
    00254 #define __glibcpp_signed_char_digits __glibcpp_s8_digits
    00255 #define __glibcpp_signed_char_digits10 __glibcpp_s8_digits10
    00256 #define __glibcpp_unsigned_char_min __glibcpp_u8_min
    00257 #define __glibcpp_unsigned_char_max __glibcpp_u8_max
    00258 #define __glibcpp_unsigned_char_digits __glibcpp_u8_digits
    00259 #define __glibcpp_unsigned_char_digits10 __glibcpp_u8_digits10
    00260 #elif __glibcpp_char_bits == 16
    00261 #define __glibcpp_signed_char_min __glibcpp_s16_min
    00262 #define __glibcpp_signed_char_max __glibcpp_s16_max
    00263 #define __glibcpp_signed_char_digits __glibcpp_s16_digits
    00264 #define __glibcpp_signed_char_digits10 __glibcpp_s16_digits10
    00265 #define __glibcpp_unsigned_char_min __glibcpp_u16_min
    00266 #define __glibcpp_unsigned_char_max __glibcpp_u16_max
    00267 #define __glibcpp_unsigned_char_digits __glibcpp_u16_digits
    00268 #define __glibcpp_unsigned_char_digits10 __glibcpp_u16_digits10
    00269 #elif __glibcpp_char_bits == 32
    00270 #define __glibcpp_signed_char_min (signed char)__glibcpp_s32_min
    00271 #define __glibcpp_signed_char_max (signed char)__glibcpp_s32_max
    00272 #define __glibcpp_signed_char_digits __glibcpp_s32_digits
    00273 #define __glibcpp_signed_char_digits10 __glibcpp_s32_digits10
    00274 #define __glibcpp_unsigned_char_min (unsigned char)__glibcpp_u32_min
    00275 #define __glibcpp_unsigned_char_max (unsigned char)__glibcpp_u32_max
    00276 #define __glibcpp_unsigned_char_digits __glibcpp_u32_digits
    00277 #define __glibcpp_unsigned_char_digits10 __glibcpp_u32_digits10
    00278 #elif __glibcpp_char_bits == 64
    00279 #define __glibcpp_signed_char_min (signed char)__glibcpp_s64_min
    00280 #define __glibcpp_signed_char_max (signed char)__glibcpp_s64_max
    00281 #define __glibcpp_signed_char_digits __glibcpp_s64_digits
    00282 #define __glibcpp_signed_char_digits10 __glibcpp_s64_digits10
    00283 #define __glibcpp_unsigned_char_min (unsigned char)__glibcpp_u64_min
    00284 #define __glibcpp_unsigned_char_max (unsigned char)__glibcpp_u64_max
    00285 #define __glibcpp_unsigned_char_digits __glibcpp_u64_digits
    00286 #define __glibcpp_unsigned_char_digits10 __glibcpp_u64_digits10
    00287 #else
    00288 // You must define these macros in the configuration file.
    00289 #endif
    00290
    00291 #if __glibcpp_plain_char_is_signed
    00292 #define __glibcpp_char_min (char)__glibcpp_signed_char_min
    00293 #define __glibcpp_char_max (char)__glibcpp_signed_char_max
    00294 #define __glibcpp_char_digits __glibcpp_signed_char_digits
    00295 #define __glibcpp_char_digits10 __glibcpp_signed_char_digits
    00296 #else
    00297 #define __glibcpp_char_min (char)__glibcpp_unsigned_char_min
    00298 #define __glibcpp_char_max (char)__glibcpp_unsigned_char_max
    00299 #define __glibcpp_char_digits __glibcpp_unsigned_char_digits
    00300 #define __glibcpp_char_digits10 __glibcpp_unsigned_char_digits
    00301 #endif
    00302
    00303 // short
    00304
    00305 #define __glibcpp_signed_short_traps true
    00306 #define __glibcpp_unsigned_short_traps true
    00307 #ifndef __glibcpp_signed_short_is_modulo
    00308 #define __glibcpp_signed_short_is_modulo true
    00309 #endif
    00310 #if __glibcpp_short_bits == 8
    00311 #define __glibcpp_signed_short_min __glibcpp_s8_min
    00312 #define __glibcpp_signed_short_max __glibcpp_s8_max
    00313 #define __glibcpp_signed_short_digits __glibcpp_s8_digits
    00314 #define __glibcpp_signed_short_digits10 __glibcpp_s8_digits10
    00315 #define __glibcpp_unsigned_short_min __glibcpp_u8_min
    00316 #define __glibcpp_unsigned_short_max __glibcpp_u8_max
    00317 #define __glibcpp_unsigned_short_digits __glibcpp_u8_digits
    00318 #define __glibcpp_unsigned_short_digits10 __glibcpp_u8_digits10
    00319 #elif __glibcpp_short_bits == 16
    00320 #define __glibcpp_signed_short_min __glibcpp_s16_min
    00321 #define __glibcpp_signed_short_max __glibcpp_s16_max
    00322 #define __glibcpp_signed_short_digits __glibcpp_s16_digits
    00323 #define __glibcpp_signed_short_digits10 __glibcpp_s16_digits10
    00324 #define __glibcpp_unsigned_short_min __glibcpp_u16_min
    00325 #define __glibcpp_unsigned_short_max __glibcpp_u16_max
    00326 #define __glibcpp_unsigned_short_digits __glibcpp_u16_digits
    00327 #define __glibcpp_unsigned_short_digits10 __glibcpp_u16_digits10
    00328 #elif __glibcpp_short_bits == 32
    00329 #define __glibcpp_signed_short_min (short)__glibcpp_s32_min
    00330 #define __glibcpp_signed_short_max (short)__glibcpp_s32_max
    00331 #define __glibcpp_signed_short_digits __glibcpp_s32_digits
    00332 #define __glibcpp_signed_short_digits10 __glibcpp_s32_digits10
    00333 #define __glibcpp_unsigned_short_min (unsigned short)__glibcpp_u32_min
    00334 #define __glibcpp_unsigned_short_max (unsigned short)__glibcpp_u32_max
    00335 #define __glibcpp_unsigned_short_digits __glibcpp_u32_digits
    00336 #define __glibcpp_unsigned_short_digits10 __glibcpp_u32_digits10
    00337 #elif __glibcpp_short_bits == 64
    00338 #define __glibcpp_signed_short_min (short)__glibcpp_s64_min
    00339 #define __glibcpp_signed_short_max (short)__glibcpp_s64_max
    00340 #define __glibcpp_signed_short_digits __glibcpp_s64_digits
    00341 #define __glibcpp_signed_short_digits10 __glibcpp_s64_digits10
    00342 #define __glibcpp_unsigned_short_min (unsigned short)__glibcpp_u64_min
    00343 #define __glibcpp_unsigned_short_max (unsigned short)__glibcpp_u64_max
    00344 #define __glibcpp_unsigned_short_digits __glibcpp_u64_digits
    00345 #define __glibcpp_unsigned_short_digits10 __glibcpp_u64_digits10
    00346 #else
    00347 // You must define these macros in the configuration file.
    00348 #endif
    00349
    00350 // int
    00351
    00352 #define __glibcpp_signed_int_traps true
    00353 #define __glibcpp_unsigned_int_traps true
    00354 #ifndef __glibcpp_signed_int_is_modulo
    00355 #define __glibcpp_signed_int_is_modulo true
    00356 #endif
    00357 #if __glibcpp_int_bits == 8
    00358 #define __glibcpp_signed_int_min __glibcpp_s8_min
    00359 #define __glibcpp_signed_int_max __glibcpp_s8_max
    00360 #define __glibcpp_signed_int_digits __glibcpp_s8_digits
    00361 #define __glibcpp_signed_int_digits10 __glibcpp_s8_digits10
    00362 #define __glibcpp_unsigned_int_min __glibcpp_u8_min
    00363 #define __glibcpp_unsigned_int_max __glibcpp_u8_max
    00364 #define __glibcpp_unsigned_int_digits __glibcpp_u8_digits
    00365 #define __glibcpp_unsigned_int_digits10 __glibcpp_u8_digits10
    00366 #elif __glibcpp_int_bits == 16
    00367 #define __glibcpp_signed_int_min __glibcpp_s16_min
    00368 #define __glibcpp_signed_int_max __glibcpp_s16_max
    00369 #define __glibcpp_signed_int_digits __glibcpp_s16_digits
    00370 #define __glibcpp_signed_int_digits10 __glibcpp_s16_digits10
    00371 #define __glibcpp_unsigned_int_min __glibcpp_u16_min
    00372 #define __glibcpp_unsigned_int_max __glibcpp_u16_max
    00373 #define __glibcpp_unsigned_int_digits __glibcpp_u16_digits
    00374 #define __glibcpp_unsigned_int_digits10 __glibcpp_u16_digits10
    00375 #elif __glibcpp_int_bits == 32
    00376 #define __glibcpp_signed_int_min (int)__glibcpp_s32_min
    00377 #define __glibcpp_signed_int_max (int)__glibcpp_s32_max
    00378 #define __glibcpp_signed_int_digits __glibcpp_s32_digits
    00379 #define __glibcpp_signed_int_digits10 __glibcpp_s32_digits10
    00380 #define __glibcpp_unsigned_int_min (unsigned)__glibcpp_u32_min
    00381 #define __glibcpp_unsigned_int_max (unsigned)__glibcpp_u32_max
    00382 #define __glibcpp_unsigned_int_digits __glibcpp_u32_digits
    00383 #define __glibcpp_unsigned_int_digits10 __glibcpp_u32_digits10
    00384 #elif __glibcpp_int_bits == 64
    00385 #define __glibcpp_signed_int_min (int)__glibcpp_s64_min
    00386 #define __glibcpp_signed_int_max (int)__glibcpp_s64_max
    00387 #define __glibcpp_signed_int_digits __glibcpp_s64_digits
    00388 #define __glibcpp_signed_int_digits10 __glibcpp_s64_digits10
    00389 #define __glibcpp_unsigned_int_min (unsigned)__glibcpp_u64_min
    00390 #define __glibcpp_unsigned_int_max (unsigned)__glibcpp_u64_max
    00391 #define __glibcpp_unsigned_int_digits __glibcpp_u64_digits
    00392 #define __glibcpp_unsigned_int_digits10 __glibcpp_u64_digits10
    00393 #else
    00394 // You must define these macros in the configuration file.
    00395 #endif
    00396
    00397 // long
    00398
    00399 #define __glibcpp_signed_long_traps true
    00400 #define __glibcpp_unsigned_long_traps true
    00401 #ifndef __glibcpp_signed_long_is_modulo
    00402 #define __glibcpp_signed_long_is_modulo true
    00403 #endif
    00404 #if __glibcpp_long_bits == 8
    00405 #define __glibcpp_signed_long_min __glibcpp_s8_min
    00406 #define __glibcpp_signed_long_max __glibcpp_s8_max
    00407 #define __glibcpp_signed_long_digits __glibcpp_s8_digits
    00408 #define __glibcpp_signed_long_digits10 __glibcpp_s8_digits10
    00409 #define __glibcpp_unsigned_long_min __glibcpp_u8_min
    00410 #define __glibcpp_unsigned_long_max __glibcpp_u8_max
    00411 #define __glibcpp_unsigned_long_digits __glibcpp_u8_digits
    00412 #define __glibcpp_unsigned_long_digits10 __glibcpp_u8_digits10
    00413 #elif __glibcpp_long_bits == 16
    00414 #define __glibcpp_signed_long_min __glibcpp_s16_min
    00415 #define __glibcpp_signed_long_max __glibcpp_s16_max
    00416 #define __glibcpp_signed_long_digits __glibcpp_s16_digits
    00417 #define __glibcpp_signed_long_digits10 __glibcpp_s16_digits10
    00418 #define __glibcpp_unsigned_long_min __glibcpp_u16_min
    00419 #define __glibcpp_unsigned_long_max __glibcpp_u16_max
    00420 #define __glibcpp_unsigned_long_digits __glibcpp_u16_digits
    00421 #define __glibcpp_unsigned_long_digits10 __glibcpp_u16_digits10
    00422 #elif __glibcpp_long_bits == 32
    00423 #define __glibcpp_signed_long_min __glibcpp_s32_min
    00424 #define __glibcpp_signed_long_max __glibcpp_s32_max
    00425 #define __glibcpp_signed_long_digits __glibcpp_s32_digits
    00426 #define __glibcpp_signed_long_digits10 __glibcpp_s32_digits10
    00427 #define __glibcpp_unsigned_long_min __glibcpp_u32_min
    00428 #define __glibcpp_unsigned_long_max __glibcpp_u32_max
    00429 #define __glibcpp_unsigned_long_digits __glibcpp_u32_digits
    00430 #define __glibcpp_unsigned_long_digits10 __glibcpp_u32_digits10
    00431 #elif __glibcpp_long_bits == 64
    00432 #define __glibcpp_signed_long_min (long)__glibcpp_s64_min
    00433 #define __glibcpp_signed_long_max (long)__glibcpp_s64_max
    00434 #define __glibcpp_signed_long_digits __glibcpp_s64_digits
    00435 #define __glibcpp_signed_long_digits10 __glibcpp_s64_digits10
    00436 #define __glibcpp_unsigned_long_min (unsigned long)__glibcpp_u64_min
    00437 #define __glibcpp_unsigned_long_max (unsigned long)__glibcpp_u64_max
    00438 #define __glibcpp_unsigned_long_digits __glibcpp_u64_digits
    00439 #define __glibcpp_unsigned_long_digits10 __glibcpp_u64_digits10
    00440 #else
    00441 // You must define these macros in the configuration file.
    00442 #endif
    00443
    00444 // long long
    00445
    00446 #define __glibcpp_signed_long_long_traps true
    00447 #define __glibcpp_signed_long_long_traps true
    00448 #ifndef __glibcpp_signed_long_long_is_modulo
    00449 #define __glibcpp_signed_long_long_is_modulo true
    00450 #endif
    00451 #if __glibcpp_long_long_bits == 8
    00452 #define __glibcpp_signed_long_long_min __glibcpp_s8_min
    00453 #define __glibcpp_signed_long_long_max __glibcpp_s8_max
    00454 #define __glibcpp_signed_long_long_digits __glibcpp_s8_digits
    00455 #define __glibcpp_signed_long_long_digits10 __glibcpp_s8_digits10
    00456 #define __glibcpp_unsigned_long_long_min __glibcpp_u8_min
    00457 #define __glibcpp_unsigned_long_long_max __glibcpp_u8_max
    00458 #define __glibcpp_unsigned_long_long_digits __glibcpp_u8_digits
    00459 #define __glibcpp_unsigned_long_long_digits10 __glibcpp_u8_digits10
    00460 #elif __glibcpp_long_long_bits == 16
    00461 #define __glibcpp_signed_long_long_min __glibcpp_s16_min
    00462 #define __glibcpp_signed_long_long_max __glibcpp_s16_max
    00463 #define __glibcpp_signed_long_long_digits __glibcpp_s16_digits
    00464 #define __glibcpp_signed_long_long_digits10 __glibcpp_s16_digits10
    00465 #define __glibcpp_unsigned_long_long_min __glibcpp_u16_min
    00466 #define __glibcpp_unsigned_long_long_max __glibcpp_u16_max
    00467 #define __glibcpp_unsigned_long_long_digits __glibcpp_u16_digits
    00468 #define __glibcpp_unsigned_long_long_digits10 __glibcpp_u16_digits10
    00469 #elif __glibcpp_long_long_bits == 32
    00470 #define __glibcpp_signed_long_long_min __glibcpp_s32_min
    00471 #define __glibcpp_signed_long_long_max __glibcpp_s32_max
    00472 #define __glibcpp_signed_long_long_digits __glibcpp_s32_digits
    00473 #define __glibcpp_signed_long_long_digits10 __glibcpp_s32_digits10
    00474 #define __glibcpp_unsigned_long_long_min __glibcpp_u32_min
    00475 #define __glibcpp_unsigned_long_long_max __glibcpp_u32_max
    00476 #define __glibcpp_unsigned_long_long_digits __glibcpp_u32_digits
    00477 #define __glibcpp_unsigned_long_long_digits10 __glibcpp_u32_digits10
    00478 #elif __glibcpp_long_long_bits == 64
    00479 #define __glibcpp_signed_long_long_min __glibcpp_s64_min
    00480 #define __glibcpp_signed_long_long_max __glibcpp_s64_max
    00481 #define __glibcpp_signed_long_long_digits __glibcpp_s64_digits
    00482 #define __glibcpp_signed_long_long_digits10 __glibcpp_s64_digits10
    00483 #define __glibcpp_signed_long_long_traps true
    00484 #define __glibcpp_unsigned_long_long_min __glibcpp_u64_min
    00485 #define __glibcpp_unsigned_long_long_max __glibcpp_u64_max
    00486 #define __glibcpp_unsigned_long_long_digits __glibcpp_u64_digits
    00487 #define __glibcpp_unsigned_long_long_digits10 __glibcpp_u64_digits10
    00488 #define __glibcpp_unsigned_long_long_traps true
    00489 #else
    00490 // You must define these macros in the configuration file.
    00491 #endif
    00492
    00493 // wchar_t
    00494
    00495 #define __glibcpp_wchar_t_traps true
    00496 #ifndef __glibcpp_wchar_t_is_modulo
    00497 #define __glibcpp_wchar_t_is_modulo true
    00498 #endif
    00499 #if __glibcpp_wchar_t_is_signed
    00500 #if __glibcpp_wchar_t_bits == 8
    00501 #define __glibcpp_wchar_t_min __glibcpp_s8_min
    00502 #define __glibcpp_wchar_t_max __glibcpp_s8_max
    00503 #define __glibcpp_wchar_t_digits __glibcpp_s8_digits
    00504 #define __glibcpp_wchar_t_digits10 __glibcpp_s8_digits10
    00505 #elif __glibcpp_wchar_t_bits == 16
    00506 #define __glibcpp_wchar_t_min __glibcpp_s16_min
    00507 #define __glibcpp_wchar_t_max __glibcpp_s16_max
    00508 #define __glibcpp_wchar_t_digits __glibcpp_s16_digits
    00509 #define __glibcpp_wchar_t_digits10 __glibcpp_s16_digits10
    00510 #elif __glibcpp_wchar_t_bits == 32
    00511 #define __glibcpp_wchar_t_min (wchar_t)__glibcpp_s32_min
    00512 #define __glibcpp_wchar_t_max (wchar_t)__glibcpp_s32_max
    00513 #define __glibcpp_wchar_t_digits __glibcpp_s32_digits
    00514 #define __glibcpp_wchar_t_digits10 __glibcpp_s32_digits10
    00515 #elif __glibcpp_wchar_t_bits == 64
    00516 #define __glibcpp_wchar_t_min (wchar_t)__glibcpp_s64_min
    00517 #define __glibcpp_wchar_t_max (wchar_t)__glibcpp_s64_max
    00518 #define __glibcpp_wchar_t_digits __glibcpp_s64_digits
    00519 #define __glibcpp_wchar_t_digits10 __glibcpp_s64_digits10
    00520 #else
    00521 // You must define these macros in the configuration file.
    00522 #endif
    00523 #else
    00524 #if __glibcpp_wchar_t_bits == 8
    00525 #define __glibcpp_wchar_t_min __glibcpp_u8_min
    00526 #define __glibcpp_wchar_t_max __glibcpp_u8_max
    00527 #define __glibcpp_wchar_t_digits __glibcpp_u8_digits
    00528 #define __glibcpp_wchar_t_digits10 __glibcpp_u8_digits10
    00529 #elif __glibcpp_wchar_t_bits == 16
    00530 #define __glibcpp_wchar_t_min __glibcpp_u16_min
    00531 #define __glibcpp_wchar_t_max __glibcpp_u16_max
    00532 #define __glibcpp_wchar_t_digits __glibcpp_u16_digits
    00533 #define __glibcpp_wchar_t_digits10 __glibcpp_u16_digits10
    00534 #elif __glibcpp_wchar_t_bits == 32
    00535 #define __glibcpp_wchar_t_min (wchar_t)__glibcpp_u32_min
    00536 #define __glibcpp_wchar_t_max (wchar_t)__glibcpp_u32_max
    00537 #define __glibcpp_wchar_t_digits __glibcpp_u32_digits
    00538 #define __glibcpp_wchar_t_digits10 __glibcpp_u32_digits10
    00539 #elif __glibcpp_wchar_t_bits == 64
    00540 #define __glibcpp_wchar_t_min (wchar_t)__glibcpp_u64_min
    00541 #define __glibcpp_wchar_t_max (wchar_t)__glibcpp_u64_max
    00542 #define __glibcpp_wchar_t_digits __glibcpp_u64_digits
    00543 #define __glibcpp_wchar_t_digits10 __glibcpp_u64_digits10
    00544 #else
    00545 // You must define these macros in the configuration file.
    00546 #endif
    00547 #endif
    00548
    00549 // float
    00550 //
    00551
    00552 #if __glibcpp_float_bits == 32
    00553 #define __glibcpp_float_min __glibcpp_f32_min
    00554 #define __glibcpp_float_max __glibcpp_f32_max
    00555 #define __glibcpp_float_digits __glibcpp_f32_digits
    00556 #define __glibcpp_float_digits10 __glibcpp_f32_digits10
    00557 #define __glibcpp_float_radix __glibcpp_f32_radix
    00558 #define __glibcpp_float_epsilon __glibcpp_f32_epsilon
    00559 #define __glibcpp_float_round_error __glibcpp_f32_round_error
    00560 #define __glibcpp_float_min_exponent __glibcpp_f32_min_exponent
    00561 #define __glibcpp_float_min_exponent10 __glibcpp_f32_min_exponent10
    00562 #define __glibcpp_float_max_exponent __glibcpp_f32_max_exponent
    00563 #define __glibcpp_float_max_exponent10 __glibcpp_f32_max_exponent10
    00564 #elif __glibcpp_float_bits == 64
    00565 #define __glibcpp_float_min __glibcpp_f64_min
    00566 #define __glibcpp_float_max __glibcpp_f64_max
    00567 #define __glibcpp_float_digits __glibcpp_f64_digits
    00568 #define __glibcpp_float_digits10 __glibcpp_f64_digits10
    00569 #define __glibcpp_float_radix __glibcpp_f64_radix
    00570 #define __glibcpp_float_epsilon __glibcpp_f64_epsilon
    00571 #define __glibcpp_float_round_error __glibcpp_f64_round_error
    00572 #define __glibcpp_float_min_exponent __glibcpp_f64_min_exponent
    00573 #define __glibcpp_float_min_exponent10 __glibcpp_f64_min_exponent10
    00574 #define __glibcpp_float_max_exponent __glibcpp_f64_max_exponent
    00575 #define __glibcpp_float_max_exponent10 __glibcpp_f64_max_exponent10
    00576 #elif __glibcpp_float_bits == 80
    00577 #define __glibcpp_float_min __glibcpp_f80_min
    00578 #define __glibcpp_float_max __glibcpp_f80_max
    00579 #define __glibcpp_float_digits __glibcpp_f80_digits
    00580 #define __glibcpp_float_digits10 __glibcpp_f80_digits10
    00581 #define __glibcpp_float_radix __glibcpp_f80_radix
    00582 #define __glibcpp_float_epsilon __glibcpp_f80_epsilon
    00583 #define __glibcpp_float_round_error __glibcpp_f80_round_error
    00584 #define __glibcpp_float_min_exponent __glibcpp_f80_min_exponent
    00585 #define __glibcpp_float_min_exponent10 __glibcpp_f80_min_exponent10
    00586 #define __glibcpp_float_max_exponent __glibcpp_f80_max_exponent
    00587 #define __glibcpp_float_max_exponent10 __glibcpp_f80_max_exponent10
    00588 #else
    00589 // You must define these macros in the configuration file.
    00590 #endif
    00591
    00592 // FIXME: These are just stubs and inkorrect
    00593
    00594 #ifndef __glibcpp_float_has_infinity
    00595 #define __glibcpp_float_has_infinity false
    00596 #endif
    00597
    00598 #ifndef __glibcpp_float_has_quiet_NaN
    00599 #define __glibcpp_float_has_quiet_NaN false
    00600 #endif
    00601
    00602 #ifndef __glibcpp_float_has_signaling_NaN
    00603 #define __glibcpp_float_has_signaling_NaN false
    00604 #endif
    00605
    00606 #ifndef __glibcpp_float_has_denorm
    00607 #define __glibcpp_float_has_denorm denorm_absent
    00608 #endif
    00609
    00610 #ifndef __glibcpp_float_has_denorm_loss
    00611 #define __glibcpp_float_has_denorm_loss false
    00612 #endif
    00613
    00614 #ifndef __glibcpp_float_infinity
    00615 #define __glibcpp_float_infinity 0.0F
    00616 #endif
    00617
    00618 #ifndef __glibcpp_float_quiet_NaN
    00619 #define __glibcpp_float_quiet_NaN 0.0F
    00620 #endif
    00621
    00622 #ifndef __glibcpp_float_signaling_NaN
    00623 #define __glibcpp_float_signaling_NaN 0.0F
    00624 #endif
    00625
    00626 #ifndef __glibcpp_float_denorm_min
    00627 #define __glibcpp_float_denorm_min 0.0F
    00628 #endif
    00629
    00630 #ifndef __glibcpp_float_is_iec559
    00631 #define __glibcpp_float_is_iec559 false
    00632 #endif
    00633
    00634 #ifndef __glibcpp_float_is_bounded
    00635 #define __glibcpp_float_is_bounded true
    00636 #endif
    00637
    00638 #ifndef __glibcpp_float_is_modulo
    00639 #define __glibcpp_float_is_modulo false
    00640 #endif
    00641
    00642 #ifndef __glibcpp_float_traps
    00643 #define __glibcpp_float_traps false
    00644 #endif
    00645
    00646 #ifndef __glibcpp_float_tinyness_before
    00647 #define __glibcpp_float_tinyness_before false
    00648 #endif
    00649
    00650 #ifndef __glibcpp_float_round_style
    00651 #define __glibcpp_float_round_style round_toward_zero
    00652 #endif
    00653
    00654 // double
    00655
    00656 #if __glibcpp_double_bits == 32
    00657 #define __glibcpp_double_min __glibcpp_f32_min
    00658 #define __glibcpp_double_max __glibcpp_f32_max
    00659 #define __glibcpp_double_digits __glibcpp_f32_digits
    00660 #define __glibcpp_double_digits10 __glibcpp_f32_digits10
    00661 #define __glibcpp_double_radix __glibcpp_f32_radix
    00662 #define __glibcpp_double_epsilon __glibcpp_f32_epsilon
    00663 #define __glibcpp_double_round_error __glibcpp_f32_round_error
    00664 #define __glibcpp_double_min_exponent __glibcpp_f32_min_exponent
    00665 #define __glibcpp_double_min_exponent10 __glibcpp_f32_min_exponent10
    00666 #define __glibcpp_double_max_exponent __glibcpp_f32_max_exponent
    00667 #define __glibcpp_double_max_exponent10 __glibcpp_f32_max_exponent10
    00668 #elif __glibcpp_double_bits == 64
    00669 #define __glibcpp_double_min __glibcpp_f64_min
    00670 #define __glibcpp_double_max __glibcpp_f64_max
    00671 #define __glibcpp_double_digits __glibcpp_f64_digits
    00672 #define __glibcpp_double_digits10 __glibcpp_f64_digits10
    00673 #define __glibcpp_double_radix __glibcpp_f64_radix
    00674 #define __glibcpp_double_epsilon __glibcpp_f64_epsilon
    00675 #define __glibcpp_double_round_error __glibcpp_f64_round_error
    00676 #define __glibcpp_double_min_exponent __glibcpp_f64_min_exponent
    00677 #define __glibcpp_double_min_exponent10 __glibcpp_f64_min_exponent10
    00678 #define __glibcpp_double_max_exponent __glibcpp_f64_max_exponent
    00679 #define __glibcpp_double_max_exponent10 __glibcpp_f64_max_exponent10
    00680 #elif __glibcpp_double_bits == 80
    00681 #define __glibcpp_double_min __glibcpp_f80_min
    00682 #define __glibcpp_double_max __glibcpp_f80_max
    00683 #define __glibcpp_double_digits __glibcpp_f80_digits
    00684 #define __glibcpp_double_digits10 __glibcpp_f80_digits10
    00685 #define __glibcpp_double_radix __glibcpp_f80_radix
    00686 #define __glibcpp_double_epsilon __glibcpp_f80_epsilon
    00687 #define __glibcpp_double_round_error __glibcpp_f80_round_error
    00688 #define __glibcpp_double_min_exponent __glibcpp_f80_min_exponent
    00689 #define __glibcpp_double_min_exponent10 __glibcpp_f80_min_exponent10
    00690 #define __glibcpp_double_max_exponent __glibcpp_f80_max_exponent
    00691 #define __glibcpp_double_max_exponent10 __glibcpp_f80_max_exponent10
    00692 #else
    00693 // You must define these macros in the configuration file.
    00694 #endif
    00695
    00696 // FIXME: These are just stubs and inkorrect
    00697
    00698 #ifndef __glibcpp_double_has_infinity
    00699 #define __glibcpp_double_has_infinity false
    00700 #endif
    00701
    00702 #ifndef __glibcpp_double_has_quiet_NaN
    00703 #define __glibcpp_double_has_quiet_NaN false
    00704 #endif
    00705
    00706 #ifndef __glibcpp_double_has_signaling_NaN
    00707 #define __glibcpp_double_has_signaling_NaN false
    00708 #endif
    00709
    00710 #ifndef __glibcpp_double_has_denorm
    00711 #define __glibcpp_double_has_denorm denorm_absent
    00712 #endif
    00713
    00714 #ifndef __glibcpp_double_has_denorm_loss
    00715 #define __glibcpp_double_has_denorm_loss false
    00716 #endif
    00717
    00718 #ifndef __glibcpp_double_infinity
    00719 #define __glibcpp_double_infinity 0.0
    00720 #endif
    00721
    00722 #ifndef __glibcpp_double_quiet_NaN
    00723 #define __glibcpp_double_quiet_NaN 0.0
    00724 #endif
    00725
    00726 #ifndef __glibcpp_double_signaling_NaN
    00727 #define __glibcpp_double_signaling_NaN 0.0
    00728 #endif
    00729
    00730 #ifndef __glibcpp_double_denorm_min
    00731 #define __glibcpp_double_denorm_min 0.0
    00732 #endif
    00733
    00734 #ifndef __glibcpp_double_is_iec559
    00735 #define __glibcpp_double_is_iec559 false
    00736 #endif
    00737
    00738 #ifndef __glibcpp_double_is_bounded
    00739 #define __glibcpp_double_is_bounded true
    00740 #endif
    00741
    00742 #ifndef __glibcpp_double_is_modulo
    00743 #define __glibcpp_double_is_modulo false
    00744 #endif
    00745
    00746 #ifndef __glibcpp_double_traps
    00747 #define __glibcpp_double_traps false
    00748 #endif
    00749
    00750 #ifndef __glibcpp_double_tinyness_before
    00751 #define __glibcpp_double_tinyness_before false
    00752 #endif
    00753
    00754 #ifndef __glibcpp_double_round_style
    00755 #define __glibcpp_double_round_style round_toward_zero
    00756 #endif
    00757
    00758 // long double
    00759
    00760 #if __glibcpp_long_double_bits == 32
    00761 #define __glibcpp_long_double_min __glibcpp_f32_min
    00762 #define __glibcpp_long_double_max __glibcpp_f32_max
    00763 #define __glibcpp_long_double_digits __glibcpp_f32_digits
    00764 #define __glibcpp_long_double_digits10 __glibcpp_f32_digits10
    00765 #define __glibcpp_long_double_radix __glibcpp_f32_radix
    00766 #define __glibcpp_long_double_epsilon __glibcpp_f32_epsilon
    00767 #define __glibcpp_long_double_round_error __glibcpp_f32_round_error
    00768 #define __glibcpp_long_double_min_exponent __glibcpp_f32_min_exponent
    00769 #define __glibcpp_long_double_min_exponent10 __glibcpp_f32_min_exponent10
    00770 #define __glibcpp_long_double_max_exponent __glibcpp_f32_max_exponent
    00771 #define __glibcpp_long_double_max_exponent10 __glibcpp_f32_max_exponent10
    00772 #elif __glibcpp_long_double_bits == 64
    00773 #define __glibcpp_long_double_min __glibcpp_f64_min
    00774 #define __glibcpp_long_double_max __glibcpp_f64_max
    00775 #define __glibcpp_long_double_digits __glibcpp_f64_digits
    00776 #define __glibcpp_long_double_digits10 __glibcpp_f64_digits10
    00777 #define __glibcpp_long_double_radix __glibcpp_f64_radix
    00778 #define __glibcpp_long_double_epsilon __glibcpp_f64_epsilon
    00779 #define __glibcpp_long_double_round_error __glibcpp_f64_round_error
    00780 #define __glibcpp_long_double_min_exponent __glibcpp_f64_min_exponent
    00781 #define __glibcpp_long_double_min_exponent10 __glibcpp_f64_min_exponent10
    00782 #define __glibcpp_long_double_max_exponent __glibcpp_f64_max_exponent
    00783 #define __glibcpp_long_double_max_exponent10 __glibcpp_f64_max_exponent10
    00784 #elif __glibcpp_long_double_bits == 80
    00785 #define __glibcpp_long_double_min __glibcpp_f80_min
    00786 #define __glibcpp_long_double_max __glibcpp_f80_max
    00787 #define __glibcpp_long_double_digits __glibcpp_f80_digits
    00788 #define __glibcpp_long_double_digits10 __glibcpp_f80_digits10
    00789 #define __glibcpp_long_double_radix __glibcpp_f80_radix
    00790 #define __glibcpp_long_double_epsilon __glibcpp_f80_epsilon
    00791 #define __glibcpp_long_double_round_error __glibcpp_f80_round_error
    00792 #define __glibcpp_long_double_min_exponent __glibcpp_f80_min_exponent
    00793 #define __glibcpp_long_double_min_exponent10 __glibcpp_f80_min_exponent10
    00794 #define __glibcpp_long_double_max_exponent __glibcpp_f80_max_exponent
    00795 #define __glibcpp_long_double_max_exponent10 __glibcpp_f80_max_exponent10
    00796 #elif __glibcpp_long_double_bits == 96
    00797 #define __glibcpp_long_double_min __glibcpp_f96_min
    00798 #define __glibcpp_long_double_max __glibcpp_f96_max
    00799 #define __glibcpp_long_double_digits __glibcpp_f96_digits
    00800 #define __glibcpp_long_double_digits10 __glibcpp_f96_digits10
    00801 #define __glibcpp_long_double_radix __glibcpp_f96_radix
    00802 #define __glibcpp_long_double_epsilon __glibcpp_f96_epsilon
    00803 #define __glibcpp_long_double_round_error __glibcpp_f96_round_error
    00804 #define __glibcpp_long_double_min_exponent __glibcpp_f96_min_exponent
    00805 #define __glibcpp_long_double_min_exponent10 __glibcpp_f96_min_exponent10
    00806 #define __glibcpp_long_double_max_exponent __glibcpp_f96_max_exponent
    00807 #define __glibcpp_long_double_max_exponent10 __glibcpp_f96_max_exponent10
    00808 #elif __glibcpp_long_double_bits == 128
    00809 #define __glibcpp_long_double_min __glibcpp_f128_min
    00810 #define __glibcpp_long_double_max __glibcpp_f128_max
    00811 #define __glibcpp_long_double_digits __glibcpp_f128_digits
    00812 #define __glibcpp_long_double_digits10 __glibcpp_f128_digits10
    00813 #define __glibcpp_long_double_radix __glibcpp_f128_radix
    00814 #define __glibcpp_long_double_epsilon __glibcpp_f128_epsilon
    00815 #define __glibcpp_long_double_round_error __glibcpp_f128_round_error
    00816 #define __glibcpp_long_double_min_exponent __glibcpp_f128_min_exponent
    00817 #define __glibcpp_long_double_min_exponent10 __glibcpp_f128_min_exponent10
    00818 #define __glibcpp_long_double_max_exponent __glibcpp_f128_max_exponent
    00819 #define __glibcpp_long_double_max_exponent10 __glibcpp_f128_max_exponent10
    00820 #else
    00821 // You must define these macros in the configuration file.
    00822 #endif
    00823
    00824 // FIXME: These are just stubs and inkorrect
    00825
    00826 #ifndef __glibcpp_long_double_has_infinity
    00827 #define __glibcpp_long_double_has_infinity false
    00828 #endif
    00829
    00830 #ifndef __glibcpp_long_double_has_quiet_NaN
    00831 #define __glibcpp_long_double_has_quiet_NaN false
    00832 #endif
    00833
    00834 #ifndef __glibcpp_long_double_has_signaling_NaN
    00835 #define __glibcpp_long_double_has_signaling_NaN false
    00836 #endif
    00837
    00838 #ifndef __glibcpp_long_double_has_denorm
    00839 #define __glibcpp_long_double_has_denorm denorm_absent
    00840 #endif
    00841
    00842 #ifndef __glibcpp_long_double_has_denorm_loss
    00843 #define __glibcpp_long_double_has_denorm_loss false
    00844 #endif
    00845
    00846 #ifndef __glibcpp_long_double_infinity
    00847 #define __glibcpp_long_double_infinity 0.0L
    00848 #endif
    00849
    00850 #ifndef __glibcpp_long_double_quiet_NaN
    00851 #define __glibcpp_long_double_quiet_NaN 0.0L
    00852 #endif
    00853
    00854 #ifndef __glibcpp_long_double_signaling_NaN
    00855 #define __glibcpp_long_double_signaling_NaN 0.0L
    00856 #endif
    00857
    00858 #ifndef __glibcpp_long_double_denorm_min
    00859 #define __glibcpp_long_double_denorm_min 0.0L
    00860 #endif
    00861
    00862 #ifndef __glibcpp_long_double_is_iec559
    00863 #define __glibcpp_long_double_is_iec559 false
    00864 #endif
    00865
    00866 #ifndef __glibcpp_long_double_is_bounded
    00867 #define __glibcpp_long_double_is_bounded true
    00868 #endif
    00869
    00870 #ifndef __glibcpp_long_double_is_modulo
    00871 #define __glibcpp_long_double_is_modulo false
    00872 #endif
    00873
    00874 #ifndef __glibcpp_long_double_traps
    00875 #define __glibcpp_long_double_traps false
    00876 #endif
    00877
    00878 #ifndef __glibcpp_long_double_tinyness_before
    00879 #define __glibcpp_long_double_tinyness_before false
    00880 #endif
    00881
    00882 #ifndef __glibcpp_long_double_round_style
    00883 #define __glibcpp_long_double_round_style round_toward_zero
    00884 #endif
    00885
    00886
    00887 namespace std
    00888 {
    00889   enum float_round_style
    00890   {
    00891     round_indeterminate       = -1,
    00892     round_toward_zero         = 0,
    00893     round_to_nearest          = 1,
    00894     round_toward_infinity     = 2,
    00895     round_toward_neg_infinity = 3
    00896   };
    00897
    00898   enum float_denorm_style
    00899   {
    00900     denorm_indeterminate = -1,
    00901     denorm_absent        = 0,
    00902     denorm_present       = 1
    00903   };
    00904
    00905   //
    00906   // The primary class traits
    00907   //
    00908   struct __numeric_limits_base
    00909   {
    00910     static const bool is_specialized = false;
    00911
    00912     static const int digits = 0;
    00913     static const int digits10 = 0;
    00914     static const bool is_signed = false;
    00915     static const bool is_integer = false;
    00916     static const bool is_exact = false;
    00917     static const int radix = 0;
    00918
    00919     static const int min_exponent = 0;
    00920     static const int min_exponent10 = 0;
    00921     static const int max_exponent = 0;
    00922     static const int max_exponent10 = 0;
    00923
    00924     static const bool has_infinity = false;
    00925     static const bool has_quiet_NaN = false;
    00926     static const bool has_signaling_NaN = false;
    00927     static const float_denorm_style has_denorm = denorm_absent;
    00928     static const bool has_denorm_loss = false;
    00929
    00930     static const bool is_iec559 = false;
    00931     static const bool is_bounded = false;
    00932     static const bool is_modulo = false;
    00933
    00934     static const bool traps = false;
    00935     static const bool tinyness_before = false;
    00936     static const float_round_style round_style = round_toward_zero;
    00937   };
    00938
    00939   template<typename _Tp>
    00940     struct numeric_limits : public __numeric_limits_base
    00941     {
    00942       static _Tp min() throw() { return static_cast<_Tp>(0); }
    00943       static _Tp max() throw() { return static_cast<_Tp>(0); }
    00944       static _Tp epsilon() throw() { return static_cast<_Tp>(0); }
    00945       static _Tp round_error() throw() { return static_cast<_Tp>(0); }
    00946       static _Tp infinity() throw()  { return static_cast<_Tp>(0); }
    00947       static _Tp quiet_NaN() throw() { return static_cast<_Tp>(0); }
    00948       static _Tp signaling_NaN() throw() { return static_cast<_Tp>(0); }
    00949       static _Tp denorm_min() throw() { return static_cast<_Tp>(0); }
    00950     };
    00951
    00952   // Now there follow 15 explicit specializations.  Yes, 15.  Make sure
    00953   // you get the count right.
    00954   template<>
    00955     struct numeric_limits<bool>
    00956     {
    00957       static const bool is_specialized = true;
    00958
    00959       static bool min() throw()
    00960       { return false; }
    00961
    00962       static bool max() throw()
    00963       { return true; }
    00964
    00965       static const int digits = __glibcpp_bool_digits;
    00966       static const int digits10 = 0;
    00967       static const bool is_signed = false;
    00968       static const bool is_integer = true;
    00969       static const bool is_exact = true;
    00970       static const int radix = 2;
    00971       static bool epsilon() throw()
    00972       { return false; }
    00973       static bool round_error() throw()
    00974       { return false; }
    00975
    00976       static const int min_exponent = 0;
    00977       static const int min_exponent10 = 0;
    00978       static const int max_exponent = 0;
    00979       static const int max_exponent10 = 0;
    00980
    00981       static const bool has_infinity = false;
    00982       static const bool has_quiet_NaN = false;
    00983       static const bool has_signaling_NaN = false;
    00984       static const float_denorm_style has_denorm = denorm_absent;
    00985       static const bool has_denorm_loss = false;
    00986
    00987       static bool infinity() throw()
    00988       { return false; }
    00989       static bool quiet_NaN() throw()
    00990       { return false; }
    00991       static bool signaling_NaN() throw()
    00992       { return false; }
    00993       static bool denorm_min() throw()
    00994       { return false; }
    00995
    00996       static const bool is_iec559 = false;
    00997       static const bool is_bounded = true;
    00998       static const bool is_modulo = false;
    00999
    01000       // It is not clear what it means for a boolean type to trap.
    01001       // This is a DR on the LWG issue list.  Here, I use integer
    01002       // promotion semantics.
    01003       static const bool traps = __glibcpp_signed_int_traps
    01004                || __glibcpp_signed_long_traps;
    01005       static const bool tinyness_before = false;
    01006       static const float_round_style round_style = round_toward_zero;
    01007     };
    01008
    01009 #undef __glibcpp_bool_digits
    01010
    01011   template<>
    01012     struct numeric_limits<char>
    01013     {
    01014       static const bool is_specialized = true;
    01015
    01016       static char min() throw()
    01017       { return __glibcpp_char_min; }
    01018       static char max() throw()
    01019       { return __glibcpp_char_max; }
    01020
    01021       static const int digits = __glibcpp_char_digits;
    01022       static const int digits10 = __glibcpp_char_digits10;
    01023       static const bool is_signed = __glibcpp_plain_char_is_signed;
    01024       static const bool is_integer = true;
    01025       static const bool is_exact = true;
    01026       static const int radix = 2;
    01027       static char epsilon() throw()
    01028       { return char(); }
    01029       static char round_error() throw()
    01030       { return char(); }
    01031
    01032       static const int min_exponent = 0;
    01033       static const int min_exponent10 = 0;
    01034       static const int max_exponent = 0;
    01035       static const int max_exponent10 = 0;
    01036
    01037       static const bool has_infinity = false;
    01038       static const bool has_quiet_NaN = false;
    01039       static const bool has_signaling_NaN = false;
    01040       static const float_denorm_style has_denorm = denorm_absent;
    01041       static const bool has_denorm_loss = false;
    01042
    01043       static char infinity() throw()
    01044       { return char(); }
    01045       static char quiet_NaN() throw()
    01046       { return char(); }
    01047       static char signaling_NaN() throw()
    01048       { return char(); }
    01049       static char denorm_min() throw()
    01050       { return static_cast<char>(0); }
    01051
    01052       static const bool is_iec559 = false;
    01053       static const bool is_bounded = true;
    01054       static const bool is_modulo = __glibcpp_char_is_modulo;
    01055
    01056       static const bool traps = __glibcpp_char_traps;
    01057       static const bool tinyness_before = false;
    01058       static const float_round_style round_style = round_toward_zero;
    01059     };
    01060
    01061 #undef __glibcpp_char_min
    01062 #undef __glibcpp_char_max
    01063 #undef __glibcpp_char_digits
    01064 #undef __glibcpp_char_digits10
    01065 #undef __glibcpp_char_is_signed
    01066 #undef __glibcpp_char_is_modulo
    01067 #undef __glibcpp_char_traps
    01068
    01069
    01070
    01071   template<>
    01072     struct numeric_limits<signed char>
    01073     {
    01074       static const bool is_specialized = true;
    01075
    01076       static signed char min() throw()
    01077       { return __glibcpp_signed_char_min; }
    01078       static signed char max() throw()
    01079       { return __glibcpp_signed_char_max; }
    01080
    01081       static const int digits = __glibcpp_signed_char_digits;
    01082       static const int digits10 = __glibcpp_signed_char_digits10;
    01083       static const bool is_signed = true;
    01084       static const bool is_integer = true;
    01085       static const bool is_exact = true;
    01086       static const int radix = 2;
    01087       static signed char epsilon() throw()
    01088       { return 0; }
    01089       static signed char round_error() throw()
    01090       { return 0; }
    01091
    01092       static const int min_exponent = 0;
    01093       static const int min_exponent10 = 0;
    01094       static const int max_exponent = 0;
    01095       static const int max_exponent10 = 0;
    01096
    01097       static const bool has_infinity = false;
    01098       static const bool has_quiet_NaN = false;
    01099       static const bool has_signaling_NaN = false;
    01100       static const float_denorm_style has_denorm = denorm_absent;
    01101       static const bool has_denorm_loss = false;
    01102
    01103       static signed char infinity() throw()
    01104       { return static_cast<signed char>(0); }
    01105       static signed char quiet_NaN() throw()
    01106       { return static_cast<signed char>(0); }
    01107       static signed char signaling_NaN() throw()
    01108       { return static_cast<signed char>(0); }
    01109       static signed char denorm_min() throw()
    01110       { return static_cast<signed char>(0); }
    01111
    01112       static const bool is_iec559 = false;
    01113       static const bool is_bounded = true;
    01114       static const bool is_modulo = __glibcpp_signed_char_is_modulo;
    01115
    01116       static const bool traps = __glibcpp_signed_char_traps;
    01117       static const bool tinyness_before = false;
    01118       static const float_round_style round_style = round_toward_zero;
    01119     };
    01120
    01121 #undef __glibcpp_signed_char_min
    01122 #undef __glibcpp_signed_char_max
    01123 #undef __glibcpp_signed_char_digits
    01124 #undef __glibcpp_signed_char_digits10
    01125 #undef __glibcpp_signed_char_is_modulo
    01126 #undef __glibcpp_signed_char_traps
    01127
    01128   template<>
    01129     struct numeric_limits<unsigned char>
    01130     {
    01131       static const bool is_specialized = true;
    01132
    01133       static unsigned char min() throw()
    01134       { return 0; }
    01135       static unsigned char max() throw()
    01136       { return __glibcpp_unsigned_char_max; }
    01137
    01138       static const int digits = __glibcpp_unsigned_char_digits;
    01139       static const int digits10 = __glibcpp_unsigned_char_digits10;
    01140       static const bool is_signed = false;
    01141       static const bool is_integer = true;
    01142       static const bool is_exact = true;
    01143       static const int radix = 2;
    01144       static unsigned char epsilon() throw()
    01145       { return 0; }
    01146       static unsigned char round_error() throw()
    01147       { return 0; }
    01148
    01149       static const int min_exponent = 0;
    01150       static const int min_exponent10 = 0;
    01151       static const int max_exponent = 0;
    01152       static const int max_exponent10 = 0;
    01153
    01154       static const bool has_infinity = false;
    01155       static const bool has_quiet_NaN = false;
    01156       static const bool has_signaling_NaN = false;
    01157       static const float_denorm_style has_denorm = denorm_absent;
    01158       static const bool has_denorm_loss = false;
    01159
    01160       static unsigned char infinity() throw()
    01161       { return static_cast<unsigned char>(0); }
    01162       static unsigned char quiet_NaN() throw()
    01163       { return static_cast<unsigned char>(0); }
    01164       static unsigned char signaling_NaN() throw()
    01165       { return static_cast<unsigned char>(0); }
    01166       static unsigned char denorm_min() throw()
    01167       { return static_cast<unsigned char>(0); }
    01168
    01169       static const bool is_iec559 = false;
    01170       static const bool is_bounded = true;
    01171       static const bool is_modulo = true;
    01172
    01173       static const bool traps = __glibcpp_unsigned_char_traps;
    01174       static const bool tinyness_before = false;
    01175       static const float_round_style round_style = round_toward_zero;
    01176     };
    01177
    01178 #undef __glibcpp_unsigned_char_max
    01179 #undef __glibcpp_unsigned_char_digits
    01180 #undef __glibcpp_unsigned_char_digits10
    01181 #undef __glibcpp_unsigned_char_traps
    01182
    01183   template<>
    01184     struct numeric_limits<wchar_t>
    01185     {
    01186       static const bool is_specialized = true;
    01187
    01188       static wchar_t min() throw()
    01189       { return __glibcpp_wchar_t_min; }
    01190       static wchar_t max() throw()
    01191       { return __glibcpp_wchar_t_max; }
    01192
    01193       static const int digits = __glibcpp_wchar_t_digits;
    01194       static const int digits10 = __glibcpp_wchar_t_digits10;
    01195       static const bool is_signed = __glibcpp_wchar_t_is_signed;
    01196       static const bool is_integer = true;
    01197       static const bool is_exact = true;
    01198       static const int radix = 2;
    01199       static wchar_t epsilon() throw()
    01200       { return 0; }
    01201       static wchar_t round_error() throw()
    01202       { return 0; }
    01203
    01204       static const int min_exponent = 0;
    01205       static const int min_exponent10 = 0;
    01206       static const int max_exponent = 0;
    01207       static const int max_exponent10 = 0;
    01208
    01209       static const bool has_infinity = false;
    01210       static const bool has_quiet_NaN = false;
    01211       static const bool has_signaling_NaN = false;
    01212       static const float_denorm_style has_denorm = denorm_absent;
    01213       static const bool has_denorm_loss = false;
    01214
    01215       static wchar_t infinity() throw()
    01216       { return wchar_t(); }
    01217       static wchar_t quiet_NaN() throw()
    01218       { return wchar_t(); }
    01219       static wchar_t signaling_NaN() throw()
    01220       { return wchar_t(); }
    01221       static wchar_t denorm_min() throw()
    01222       { return wchar_t(); }
    01223
    01224       static const bool is_iec559 = false;
    01225       static const bool is_bounded = true;
    01226       static const bool is_modulo = __glibcpp_wchar_t_is_modulo;
    01227
    01228       static const bool traps = __glibcpp_wchar_t_traps;
    01229       static const bool tinyness_before = false;
    01230       static const float_round_style round_style = round_toward_zero;
    01231     };
    01232
    01233 #undef __glibcpp_wchar_t_min
    01234 #undef __glibcpp_wchar_t_max
    01235 #undef __glibcpp_wchar_t_digits
    01236 #undef __glibcpp_wchar_t_digits10
    01237 #undef __glibcpp_wchar_t_is_signed
    01238 #undef __glibcpp_wchar_t_is_modulo
    01239 #undef __glibcpp_wchar_t_traps
    01240
    01241   template<>
    01242     struct numeric_limits<short>
    01243     {
    01244       static const bool is_specialized = true;
    01245
    01246       static short min() throw()
    01247       { return __glibcpp_signed_short_min; }
    01248       static short max() throw()
    01249       { return __glibcpp_signed_short_max; }
    01250
    01251       static const int digits = __glibcpp_signed_short_digits;
    01252       static const int digits10 = __glibcpp_signed_short_digits10;
    01253       static const bool is_signed = true;
    01254       static const bool is_integer = true;
    01255       static const bool is_exact = true;
    01256       static const int radix = 2;
    01257       static short epsilon() throw()
    01258       { return 0; }
    01259       static short round_error() throw()
    01260       { return 0; }
    01261
    01262       static const int min_exponent = 0;
    01263       static const int min_exponent10 = 0;
    01264       static const int max_exponent = 0;
    01265       static const int max_exponent10 = 0;
    01266
    01267       static const bool has_infinity = false;
    01268       static const bool has_quiet_NaN = false;
    01269       static const bool has_signaling_NaN = false;
    01270       static const float_denorm_style has_denorm = denorm_absent;
    01271       static const bool has_denorm_loss = false;
    01272
    01273       static short infinity() throw()
    01274       { return short(); }
    01275       static short quiet_NaN() throw()
    01276       { return short(); }
    01277       static short signaling_NaN() throw()
    01278       { return short(); }
    01279       static short denorm_min() throw()
    01280       { return short(); }
    01281
    01282       static const bool is_iec559 = true;
    01283       static const bool is_bounded = true;
    01284       static const bool is_modulo = __glibcpp_signed_short_is_modulo;
    01285
    01286       static const bool traps = __glibcpp_signed_short_traps;
    01287       static const bool tinyness_before = false;
    01288       static const float_round_style round_style = round_toward_zero;
    01289     };
    01290
    01291 #undef __glibcpp_signed_short_min
    01292 #undef __glibcpp_signed_short_max
    01293 #undef __glibcpp_signed_short_digits
    01294 #undef __glibcpp_signed_short_digits10
    01295 #undef __glibcpp_signed_short_is_modulo
    01296 #undef __glibcpp_signed_short_traps
    01297
    01298   template<>
    01299     struct numeric_limits<unsigned short>
    01300     {
    01301       static const bool is_specialized = true;
    01302
    01303       static unsigned short min() throw()
    01304       { return 0; }
    01305       static unsigned short max() throw()
    01306       { return __glibcpp_unsigned_short_max; }
    01307
    01308       static const int digits = __glibcpp_unsigned_short_digits;
    01309       static const int digits10 = __glibcpp_unsigned_short_digits10;
    01310       static const bool is_signed = false;
    01311       static const bool is_integer = true;
    01312       static const bool is_exact = true;
    01313       static const int radix = 2;
    01314       static unsigned short epsilon() throw()
    01315       { return 0; }
    01316       static unsigned short round_error() throw()
    01317       { return 0; }
    01318
    01319       static const int min_exponent = 0;
    01320       static const int min_exponent10 = 0;
    01321       static const int max_exponent = 0;
    01322       static const int max_exponent10 = 0;
    01323
    01324       static const bool has_infinity = false;
    01325       static const bool has_quiet_NaN = false;
    01326       static const bool has_signaling_NaN = false;
    01327       static const float_denorm_style has_denorm = denorm_absent;
    01328       static const bool has_denorm_loss = false;
    01329
    01330       static unsigned short infinity() throw()
    01331       { return static_cast<unsigned short>(0); }
    01332       static unsigned short quiet_NaN() throw()
    01333       { return static_cast<unsigned short>(0); }
    01334       static unsigned short signaling_NaN() throw()
    01335       { return static_cast<unsigned short>(0); }
    01336       static unsigned short denorm_min() throw()
    01337       { return static_cast<unsigned short>(0); }
    01338
    01339       static const bool is_iec559 = true;
    01340       static const bool is_bounded = true;
    01341       static const bool is_modulo = true;
    01342
    01343       static const bool traps = __glibcpp_unsigned_short_traps;
    01344       static const bool tinyness_before = false;
    01345       static const float_round_style round_style = round_toward_zero;
    01346     };
    01347
    01348 #undef __glibcpp_unsigned_short_max
    01349 #undef __glibcpp_unsigned_short_digits
    01350 #undef __glibcpp_unsigned_short_digits10
    01351 #undef __glibcpp_unsigned_short_traps
    01352
    01353   template<>
    01354     struct numeric_limits<int>
    01355     {
    01356       static const bool is_specialized = true;
    01357
    01358       static int min() throw()
    01359       { return __glibcpp_signed_int_min; }
    01360       static int max() throw()
    01361       { return __glibcpp_signed_int_max; }
    01362
    01363       static const int digits = __glibcpp_signed_int_digits;
    01364       static const int digits10 = __glibcpp_signed_int_digits10;
    01365       static const bool is_signed = true;
    01366       static const bool is_integer = true;
    01367       static const bool is_exact = true;
    01368       static const int radix = 2;
    01369       static int epsilon() throw()
    01370       { return 0; }
    01371       static int round_error() throw()
    01372       { return 0; }
    01373
    01374       static const int min_exponent = 0;
    01375       static const int min_exponent10 = 0;
    01376       static const int max_exponent = 0;
    01377       static const int max_exponent10 = 0;
    01378
    01379       static const bool has_infinity = false;
    01380       static const bool has_quiet_NaN = false;
    01381       static const bool has_signaling_NaN = false;
    01382       static const float_denorm_style has_denorm = denorm_absent;
    01383       static const bool has_denorm_loss = false;
    01384
    01385       static int infinity() throw()
    01386       { return static_cast<int>(0); }
    01387       static int quiet_NaN() throw()
    01388       { return static_cast<int>(0); }
    01389       static int signaling_NaN() throw()
    01390       { return static_cast<int>(0); }
    01391       static int denorm_min() throw()
    01392       { return static_cast<int>(0); }
    01393
    01394       static const bool is_iec559 = true;
    01395       static const bool is_bounded = true;
    01396       static const bool is_modulo = __glibcpp_signed_int_is_modulo;
    01397
    01398       static const bool traps = __glibcpp_signed_int_traps;
    01399       static const bool tinyness_before = false;
    01400       static const float_round_style round_style = round_toward_zero;
    01401     };
    01402
    01403 #undef __glibcpp_signed_int_min
    01404 #undef __glibcpp_signed_int_max
    01405 #undef __glibcpp_signed_int_digits
    01406 #undef __glibcpp_signed_int_digits10
    01407 #undef __glibcpp_signed_int_is_modulo
    01408 #undef __glibcpp_signed_int_traps
    01409
    01410   template<>
    01411     struct numeric_limits<unsigned int>
    01412     {
    01413       static const bool is_specialized = true;
    01414
    01415       static unsigned int min() throw()
    01416       { return 0; }
    01417           static unsigned int max() throw()
    01418       { return __glibcpp_unsigned_int_max; }
    01419
    01420       static const int digits = __glibcpp_unsigned_int_digits;
    01421       static const int digits10 = __glibcpp_unsigned_int_digits10;
    01422       static const bool is_signed = false;
    01423       static const bool is_integer = true;
    01424       static const bool is_exact = true;
    01425       static const int radix = 2;
    01426       static unsigned int epsilon() throw()
    01427       { return 0; }
    01428       static unsigned int round_error() throw()
    01429       { return 0; }
    01430
    01431       static const int min_exponent = 0;
    01432       static const int min_exponent10 = 0;
    01433       static const int max_exponent = 0;
    01434       static const int max_exponent10 = 0;
    01435
    01436       static const bool has_infinity = false;
    01437       static const bool has_quiet_NaN = false;
    01438       static const bool has_signaling_NaN = false;
    01439       static const float_denorm_style has_denorm = denorm_absent;
    01440       static const bool has_denorm_loss = false;
    01441
    01442       static unsigned int infinity() throw()
    01443       { return static_cast<unsigned int>(0); }
    01444       static unsigned int quiet_NaN() throw()
    01445       { return static_cast<unsigned int>(0); }
    01446       static unsigned int signaling_NaN() throw()
    01447       { return static_cast<unsigned int>(0); }
    01448       static unsigned int denorm_min() throw()
    01449       { return static_cast<unsigned int>(0); }
    01450
    01451       static const bool is_iec559 = true;
    01452       static const bool is_bounded = true;
    01453       static const bool is_modulo = true;
    01454
    01455       static const bool traps = __glibcpp_unsigned_int_traps;
    01456       static const bool tinyness_before = false;
    01457       static const float_round_style round_style = round_toward_zero;
    01458     };
    01459
    01460 #undef __glibcpp_unsigned_int_max
    01461 #undef __glibcpp_unsigned_int_digits
    01462 #undef __glibcpp_unsigned_int_digits10
    01463 #undef __glibcpp_unsigned_int_traps
    01464
    01465   template<>
    01466     struct numeric_limits<long>
    01467     {
    01468       static const bool is_specialized = true;
    01469
    01470       static long min() throw()
    01471       { return __glibcpp_signed_long_min; }
    01472       static long max() throw()
    01473       { return __glibcpp_signed_long_max; }
    01474
    01475       static const int digits = __glibcpp_signed_long_digits;
    01476       static const int digits10 = __glibcpp_signed_long_digits10;
    01477       static const bool is_signed = true;
    01478       static const bool is_integer = true;
    01479       static const bool is_exact = true;
    01480       static const int radix = 2;
    01481       static long epsilon() throw()
    01482       { return 0; }
    01483       static long round_error() throw()
    01484       { return 0; }
    01485
    01486       static const int min_exponent = 0;
    01487       static const int min_exponent10 = 0;
    01488       static const int max_exponent = 0;
    01489       static const int max_exponent10 = 0;
    01490
    01491       static const bool has_infinity = false;
    01492       static const bool has_quiet_NaN = false;
    01493       static const bool has_signaling_NaN = false;
    01494       static const float_denorm_style has_denorm = denorm_absent;
    01495       static const bool has_denorm_loss = false;
    01496
    01497       static long infinity() throw()
    01498       { return static_cast<long>(0); }
    01499       static long quiet_NaN() throw()
    01500       { return static_cast<long>(0); }
    01501       static long signaling_NaN() throw()
    01502       { return static_cast<long>(0); }
    01503       static long denorm_min() throw()
    01504       { return static_cast<long>(0); }
    01505
    01506       static const bool is_iec559 = true;
    01507       static const bool is_bounded = true;
    01508       static const bool is_modulo = __glibcpp_signed_long_is_modulo;
    01509
    01510       static const bool traps = __glibcpp_signed_long_traps;
    01511       static const bool tinyness_before = false;
    01512       static const float_round_style round_style = round_toward_zero;
    01513     };
    01514
    01515 #undef __glibcpp_signed_long_min
    01516 #undef __glibcpp_signed_long_max
    01517 #undef __glibcpp_signed_long_digits
    01518 #undef __glibcpp_signed_long_digits10
    01519 #undef __glibcpp_signed_long_is_modulo
    01520 #undef __glibcpp_signed_long_traps
    01521
    01522   template<>
    01523     struct numeric_limits<unsigned long>
    01524     {
    01525       static const bool is_specialized = true;
    01526
    01527       static unsigned long min() throw()
    01528       { return 0; }
    01529       static unsigned long max() throw()
    01530       { return __glibcpp_unsigned_long_max; }
    01531
    01532       static const int digits = __glibcpp_unsigned_long_digits;
    01533       static const int digits10 = __glibcpp_unsigned_long_digits10;
    01534       static const bool is_signed = false;
    01535       static const bool is_integer = true;
    01536       static const bool is_exact = true;
    01537       static const int radix = 2;
    01538       static unsigned long epsilon() throw()
    01539       { return 0; }
    01540       static unsigned long round_error() throw()
    01541       { return 0; }
    01542
    01543       static const int min_exponent = 0;
    01544       static const int min_exponent10 = 0;
    01545       static const int max_exponent = 0;
    01546       static const int max_exponent10 = 0;
    01547
    01548       static const bool has_infinity = false;
    01549       static const bool has_quiet_NaN = false;
    01550       static const bool has_signaling_NaN = false;
    01551       static const float_denorm_style has_denorm = denorm_absent;
    01552       static const bool has_denorm_loss = false;
    01553
    01554       static unsigned long infinity() throw()
    01555       { return static_cast<unsigned long>(0); }
    01556       static unsigned long quiet_NaN() throw()
    01557       { return static_cast<unsigned long>(0); }
    01558       static unsigned long signaling_NaN() throw()
    01559       { return static_cast<unsigned long>(0); }
    01560       static unsigned long denorm_min() throw()
    01561       { return static_cast<unsigned long>(0); }
    01562
    01563       static const bool is_iec559 = true;
    01564       static const bool is_bounded = true;
    01565       static const bool is_modulo = true;
    01566
    01567       static const bool traps = __glibcpp_unsigned_long_traps;
    01568       static const bool tinyness_before = false;
    01569       static const float_round_style round_style = round_toward_zero;
    01570     };
    01571
    01572 #undef __glibcpp_unsigned_long_max
    01573 #undef __glibcpp_unsigned_long_digits
    01574 #undef __glibcpp_unsigned_long_digits10
    01575 #undef __glibcpp_unsigned_long_traps
    01576
    01577   template<>
    01578     struct numeric_limits<long long>
    01579     {
    01580       static const bool is_specialized = true;
    01581
    01582       static long long min() throw()
    01583       { return __glibcpp_signed_long_long_min; }
    01584       static long long max() throw()
    01585       { return __glibcpp_signed_long_long_max; }
    01586
    01587       static const int digits = __glibcpp_signed_long_long_digits;
    01588       static const int digits10 = __glibcpp_signed_long_long_digits10;
    01589       static const bool is_signed = true;
    01590       static const bool is_integer = true;
    01591       static const bool is_exact = true;
    01592       static const int radix = 2;
    01593       static long long epsilon() throw()
    01594       { return 0; }
    01595       static long long round_error() throw()
    01596       { return 0; }
    01597
    01598       static const int min_exponent = 0;
    01599       static const int min_exponent10 = 0;
    01600       static const int max_exponent = 0;
    01601       static const int max_exponent10 = 0;
    01602
    01603       static const bool has_infinity = false;
    01604       static const bool has_quiet_NaN = false;
    01605       static const bool has_signaling_NaN = false;
    01606       static const float_denorm_style has_denorm = denorm_absent;
    01607       static const bool has_denorm_loss = false;
    01608
    01609       static long long infinity() throw()
    01610       { return static_cast<long long>(0); }
    01611       static long long quiet_NaN() throw()
    01612       { return static_cast<long long>(0); }
    01613       static long long signaling_NaN() throw()
    01614       { return static_cast<long long>(0); }
    01615       static long long denorm_min() throw()
    01616       { return static_cast<long long>(0); }
    01617
    01618       static const bool is_iec559 = true;
    01619       static const bool is_bounded = true;
    01620       static const bool is_modulo = __glibcpp_signed_long_long_is_modulo;
    01621
    01622       static const bool traps = __glibcpp_signed_long_long_traps;
    01623       static const bool tinyness_before = false;
    01624       static const float_round_style round_style = round_toward_zero;
    01625     };
    01626
    01627 #undef __glibcpp_signed_long_long_min
    01628 #undef __glibcpp_signed_long_long_max
    01629 #undef __glibcpp_signed_long_long_digits
    01630 #undef __glibcpp_signed_long_long_digits10
    01631 #undef __glibcpp_signed_long_long_is_modulo
    01632 #undef __glibcpp_signed_long_long_traps
    01633
    01634   template<>
    01635     struct numeric_limits<unsigned long long>
    01636     {
    01637       static const bool is_specialized = true;
    01638
    01639       static unsigned long long min() throw()
    01640       { return 0; }
    01641       static unsigned long long max() throw()
    01642       { return __glibcpp_unsigned_long_long_max; }
    01643
    01644       static const int digits = __glibcpp_unsigned_long_long_digits;
    01645       static const int digits10 = __glibcpp_unsigned_long_long_digits10;
    01646       static const bool is_signed = false;
    01647       static const bool is_integer = true;
    01648       static const bool is_exact = true;
    01649       static const int radix = 2;
    01650       static unsigned long long epsilon() throw()
    01651       { return 0; }
    01652       static unsigned long long round_error() throw()
    01653       { return 0; }
    01654
    01655       static const int min_exponent = 0;
    01656       static const int min_exponent10 = 0;
    01657       static const int max_exponent = 0;
    01658       static const int max_exponent10 = 0;
    01659
    01660       static const bool has_infinity = false;
    01661       static const bool has_quiet_NaN = false;
    01662       static const bool has_signaling_NaN = false;
    01663       static const float_denorm_style has_denorm = denorm_absent;
    01664       static const bool has_denorm_loss = false;
    01665
    01666       static unsigned long long infinity() throw()
    01667       { return static_cast<unsigned long long>(0); }
    01668       static unsigned long long quiet_NaN() throw()
    01669       { return static_cast<unsigned long long>(0); }
    01670       static unsigned long long signaling_NaN() throw()
    01671       { return static_cast<unsigned long long>(0); }
    01672       static unsigned long long denorm_min() throw()
    01673       { return static_cast<unsigned long long>(0); }
    01674
    01675       static const bool is_iec559 = true;
    01676       static const bool is_bounded = true;
    01677       static const bool is_modulo = true;
    01678
    01679       static const bool traps = true;
    01680       static const bool tinyness_before = false;
    01681       static const float_round_style round_style = round_toward_zero;
    01682     };
    01683
    01684 #undef __glibcpp_unsigned_long_long_max
    01685 #undef __glibcpp_unsigned_long_long_digits
    01686 #undef __glibcpp_unsigned_long_long_digits10
    01687 #undef __glibcpp_unsigned_long_long_traps
    01688
    01689   template<>
    01690     struct numeric_limits<float>
    01691     {
    01692       static const bool is_specialized = true;
    01693
    01694       static float min() throw()
    01695       { return __glibcpp_float_min; }
    01696       static float max() throw()
    01697       { return __glibcpp_float_max; }
    01698
    01699       static const int digits = __glibcpp_float_digits;
    01700       static const int digits10 = __glibcpp_float_digits10;
    01701       static const bool is_signed = true;
    01702       static const bool is_integer = false;
    01703       static const bool is_exact = false;
    01704       static const int radix = __glibcpp_float_radix;
    01705       static float epsilon() throw()
    01706       { return __glibcpp_float_epsilon; }
    01707       static float round_error() throw()
    01708       { return __glibcpp_float_round_error; }
    01709
    01710       static const int min_exponent = __glibcpp_float_min_exponent;
    01711       static const int min_exponent10 = __glibcpp_float_min_exponent10;
    01712       static const int max_exponent = __glibcpp_float_max_exponent;
    01713       static const int max_exponent10 = __glibcpp_float_max_exponent10;
    01714
    01715       static const bool has_infinity = __glibcpp_float_has_infinity;
    01716       static const bool has_quiet_NaN = __glibcpp_float_has_quiet_NaN;
    01717       static const bool has_signaling_NaN = __glibcpp_float_has_signaling_NaN;
    01718       static const float_denorm_style has_denorm = __glibcpp_float_has_denorm;
    01719       static const bool has_denorm_loss = __glibcpp_float_has_denorm_loss;
    01720
    01721       static float infinity() throw()
    01722       { return __glibcpp_float_infinity; }
    01723       static float quiet_NaN() throw()
    01724       { return __glibcpp_float_quiet_NaN; }
    01725       static float signaling_NaN() throw()
    01726       { return __glibcpp_float_signaling_NaN; }
    01727       static float denorm_min() throw()
    01728       { return __glibcpp_float_denorm_min; }
    01729
    01730       static const bool is_iec559 = __glibcpp_float_is_iec559;
    01731       static const bool is_bounded = __glibcpp_float_is_bounded;
    01732       static const bool is_modulo = __glibcpp_float_is_modulo;
    01733
    01734       static const bool traps = __glibcpp_float_traps;
    01735       static const bool tinyness_before = __glibcpp_float_tinyness_before;
    01736       static const float_round_style round_style = __glibcpp_float_round_style;
    01737     };
    01738
    01739 #undef __glibcpp_float_min
    01740 #undef __glibcpp_float_max
    01741 #undef __glibcpp_float_digits
    01742 #undef __glibcpp_float_digits10
    01743 #undef __glibcpp_float_radix
    01744 #undef __glibcpp_float_round_error
    01745 #undef __glibcpp_float_min_exponent
    01746 #undef __glibcpp_float_min_exponent10
    01747 #undef __glibcpp_float_max_exponent
    01748 #undef __glibcpp_float_max_exponent10
    01749 #undef __glibcpp_float_has_infinity
    01750 #undef __glibcpp_float_has_quiet_NaN
    01751 #undef __glibcpp_float_has_signaling_NaN
    01752 #undef __glibcpp_float_has_denorm
    01753 #undef __glibcpp_float_has_denorm_loss
    01754 #undef __glibcpp_float_infinity
    01755 #undef __glibcpp_float_quiet_NaN
    01756 #undef __glibcpp_float_signaling_NaN
    01757 #undef __glibcpp_float_denorm_min
    01758 #undef __glibcpp_float_is_iec559
    01759 #undef __glibcpp_float_is_bounded
    01760 #undef __glibcpp_float_is_modulo
    01761 #undef __glibcpp_float_traps
    01762 #undef __glibcpp_float_tinyness_before
    01763 #undef __glibcpp_float_round_style
    01764
    01765   template<>
    01766     struct numeric_limits<double>
    01767     {
    01768       static const bool is_specialized = true;
    01769
    01770       static double min() throw()
    01771       { return __glibcpp_double_min; }
    01772       static double max() throw()
    01773       { return __glibcpp_double_max; }
    01774
    01775       static const int digits = __glibcpp_double_digits;
    01776       static const int digits10 = __glibcpp_double_digits10;
    01777       static const bool is_signed = true;
    01778       static const bool is_integer = false;
    01779       static const bool is_exact = false;
    01780       static const int radix = __glibcpp_double_radix;
    01781       static double epsilon() throw()
    01782       { return __glibcpp_double_epsilon; }
    01783       static double round_error() throw()
    01784       { return __glibcpp_double_round_error; }
    01785
    01786       static const int min_exponent = __glibcpp_double_min_exponent;
    01787       static const int min_exponent10 = __glibcpp_double_min_exponent10;
    01788       static const int max_exponent = __glibcpp_double_max_exponent;
    01789       static const int max_exponent10 = __glibcpp_double_max_exponent10;
    01790
    01791       static const bool has_infinity = __glibcpp_double_has_infinity;
    01792       static const bool has_quiet_NaN = __glibcpp_double_has_quiet_NaN;
    01793       static const bool has_signaling_NaN = __glibcpp_double_has_signaling_NaN;
    01794       static const float_denorm_style has_denorm =
    01795               __glibcpp_double_has_denorm;
    01796       static const bool has_denorm_loss = __glibcpp_double_has_denorm_loss;
    01797
    01798       static double infinity() throw()
    01799       { return __glibcpp_double_infinity; }
    01800       static double quiet_NaN() throw()
    01801       { return __glibcpp_double_quiet_NaN; }
    01802       static double signaling_NaN() throw()
    01803       { return __glibcpp_double_signaling_NaN; }
    01804       static double denorm_min() throw()
    01805       { return __glibcpp_double_denorm_min; }
    01806
    01807       static const bool is_iec559 = __glibcpp_double_is_iec559;
    01808       static const bool is_bounded = __glibcpp_double_is_bounded;
    01809       static const bool is_modulo = __glibcpp_double_is_modulo;
    01810
    01811       static const bool traps = __glibcpp_double_traps;
    01812       static const bool tinyness_before = __glibcpp_double_tinyness_before;
    01813       static const float_round_style round_style =
    01814               __glibcpp_double_round_style;
    01815     };
    01816
    01817 #undef __glibcpp_double_min
    01818 #undef __glibcpp_double_max
    01819 #undef __glibcpp_double_digits
    01820 #undef __glibcpp_double_digits10
    01821 #undef __glibcpp_double_radix
    01822 #undef __glibcpp_double_round_error
    01823 #undef __glibcpp_double_min_exponent
    01824 #undef __glibcpp_double_min_exponent10
    01825 #undef __glibcpp_double_max_exponent
    01826 #undef __glibcpp_double_max_exponent10
    01827 #undef __glibcpp_double_has_infinity
    01828 #undef __glibcpp_double_has_quiet_NaN
    01829 #undef __glibcpp_double_has_signaling_NaN
    01830 #undef __glibcpp_double_has_denorm
    01831 #undef __glibcpp_double_has_denorm_loss
    01832 #undef __glibcpp_double_infinity
    01833 #undef __glibcpp_double_quiet_NaN
    01834 #undef __glibcpp_double_signaling_NaN
    01835 #undef __glibcpp_double_denorm_min
    01836 #undef __glibcpp_double_is_iec559
    01837 #undef __glibcpp_double_is_bounded
    01838 #undef __glibcpp_double_is_modulo
    01839 #undef __glibcpp_double_traps
    01840 #undef __glibcpp_double_tinyness_before
    01841 #undef __glibcpp_double_round_style
    01842
    01843
    01844   template<>
    01845     struct numeric_limits<long double>
    01846     {
    01847       static const bool is_specialized = true;
    01848
    01849       static long double min() throw()
    01850       { return __glibcpp_long_double_min; }
    01851       static long double max() throw()
    01852       { return __glibcpp_long_double_max; }
    01853
    01854       static const int digits = __glibcpp_long_double_digits;
    01855       static const int digits10 = __glibcpp_long_double_digits10;
    01856       static const bool is_signed = true;
    01857       static const bool is_integer = false;
    01858       static const bool is_exact = false;
    01859       static const int radix = __glibcpp_long_double_radix;
    01860       static long double epsilon() throw()
    01861       { return __glibcpp_long_double_epsilon; }
    01862       static long double round_error() throw()
    01863       { return __glibcpp_long_double_round_error; }
    01864
    01865       static const int min_exponent = __glibcpp_long_double_min_exponent;
    01866       static const int min_exponent10 = __glibcpp_long_double_min_exponent10;
    01867       static const int max_exponent = __glibcpp_long_double_max_exponent;
    01868       static const int max_exponent10 = __glibcpp_long_double_max_exponent10;
    01869
    01870       static const bool has_infinity = __glibcpp_long_double_has_infinity;
    01871       static const bool has_quiet_NaN = __glibcpp_long_double_has_quiet_NaN;
    01872       static const bool has_signaling_NaN =
    01873                 __glibcpp_long_double_has_signaling_NaN;
    01874       static const float_denorm_style has_denorm =
    01875                 __glibcpp_long_double_has_denorm;
    01876       static const bool has_denorm_loss =
    01877                 __glibcpp_long_double_has_denorm_loss;
    01878
    01879       static long double infinity() throw()
    01880       { return __glibcpp_long_double_infinity; }
    01881       static long double quiet_NaN() throw()
    01882       { return __glibcpp_long_double_quiet_NaN; }
    01883       static long double signaling_NaN() throw()
    01884       { return __glibcpp_long_double_signaling_NaN; }
    01885       static long double denorm_min() throw()
    01886       { return __glibcpp_long_double_denorm_min; }
    01887
    01888       static const bool is_iec559 = __glibcpp_long_double_is_iec559;
    01889       static const bool is_bounded = __glibcpp_long_double_is_bounded;
    01890       static const bool is_modulo = __glibcpp_long_double_is_modulo;
    01891
    01892       static const bool traps = __glibcpp_long_double_traps;
    01893       static const bool tinyness_before = __glibcpp_long_double_tinyness_before;
    01894       static const float_round_style round_style =
    01895         __glibcpp_long_double_round_style;
    01896     };
    01897
    01898 #undef __glibcpp_long_double_min
    01899 #undef __glibcpp_long_double_max
    01900 #undef __glibcpp_long_double_digits
    01901 #undef __glibcpp_long_double_digits10
    01902 #undef __glibcpp_long_double_radix
    01903 #undef __glibcpp_long_double_round_error
    01904 #undef __glibcpp_long_double_min_exponent
    01905 #undef __glibcpp_long_double_min_exponent10
    01906 #undef __glibcpp_long_double_max_exponent
    01907 #undef __glibcpp_long_double_max_exponent10
    01908 #undef __glibcpp_long_double_has_infinity
    01909 #undef __glibcpp_long_double_has_quiet_NaN
    01910 #undef __glibcpp_long_double_has_signaling_NaN
    01911 #undef __glibcpp_long_double_has_denorm
    01912 #undef __glibcpp_long_double_has_denorm_loss
    01913 #undef __glibcpp_long_double_infinity
    01914 #undef __glibcpp_long_double_quiet_NaN
    01915 #undef __glibcpp_long_double_signaling_NaN
    01916 #undef __glibcpp_long_double_denorm_min
    01917 #undef __glibcpp_long_double_is_iec559
    01918 #undef __glibcpp_long_double_is_bounded
    01919 #undef __glibcpp_long_double_is_modulo
    01920 #undef __glibcpp_long_double_traps
    01921 #undef __glibcpp_long_double_tinyness_before
    01922 #undef __glibcpp_long_double_round_style
    01923
    01924 } // namespace std
    01925
    01926 #endif // _CPP_NUMERIC_LIMITS