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