1*404b540aSrobert // Static data members of -*- C++ -*- numeric_limits classes 2*404b540aSrobert 3*404b540aSrobert // Copyright (C) 1999, 2001, 2002, 2005, 2006 Free Software Foundation, Inc. 4*404b540aSrobert // 5*404b540aSrobert // This file is part of the GNU ISO C++ Library. This library is free 6*404b540aSrobert // software; you can redistribute it and/or modify it under the 7*404b540aSrobert // terms of the GNU General Public License as published by the 8*404b540aSrobert // Free Software Foundation; either version 2, or (at your option) 9*404b540aSrobert // any later version. 10*404b540aSrobert 11*404b540aSrobert // This library is distributed in the hope that it will be useful, 12*404b540aSrobert // but WITHOUT ANY WARRANTY; without even the implied warranty of 13*404b540aSrobert // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*404b540aSrobert // GNU General Public License for more details. 15*404b540aSrobert 16*404b540aSrobert // You should have received a copy of the GNU General Public License along 17*404b540aSrobert // with this library; see the file COPYING. If not, write to the Free 18*404b540aSrobert // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 19*404b540aSrobert // USA. 20*404b540aSrobert 21*404b540aSrobert // As a special exception, you may use this file as part of a free software 22*404b540aSrobert // library without restriction. Specifically, if other files instantiate 23*404b540aSrobert // templates or use macros or inline functions from this file, or you compile 24*404b540aSrobert // this file and link it with other files to produce an executable, this 25*404b540aSrobert // file does not by itself cause the resulting executable to be covered by 26*404b540aSrobert // the GNU General Public License. This exception does not however 27*404b540aSrobert // invalidate any other reasons why the executable file might be covered by 28*404b540aSrobert // the GNU General Public License. 29*404b540aSrobert 30*404b540aSrobert // Written by Gabriel Dos Reis <Gabriel.Dos-Reis@cmla.ens-cachan.fr> 31*404b540aSrobert 32*404b540aSrobert // 33*404b540aSrobert // ISO C++ 14882:1998 34*404b540aSrobert // 18.2.1 35*404b540aSrobert // 36*404b540aSrobert 37*404b540aSrobert #include <limits> 38*404b540aSrobert 39*404b540aSrobert _GLIBCXX_BEGIN_NAMESPACE(std) 40*404b540aSrobert 41*404b540aSrobert const bool __numeric_limits_base::is_specialized; 42*404b540aSrobert const int __numeric_limits_base::digits; 43*404b540aSrobert const int __numeric_limits_base::digits10; 44*404b540aSrobert const bool __numeric_limits_base::is_signed; 45*404b540aSrobert const bool __numeric_limits_base::is_integer; 46*404b540aSrobert const bool __numeric_limits_base::is_exact; 47*404b540aSrobert const int __numeric_limits_base::radix; 48*404b540aSrobert const int __numeric_limits_base::min_exponent; 49*404b540aSrobert const int __numeric_limits_base::min_exponent10; 50*404b540aSrobert const int __numeric_limits_base::max_exponent; 51*404b540aSrobert const int __numeric_limits_base::max_exponent10; 52*404b540aSrobert const bool __numeric_limits_base::has_infinity; 53*404b540aSrobert const bool __numeric_limits_base::has_quiet_NaN; 54*404b540aSrobert const bool __numeric_limits_base::has_signaling_NaN; 55*404b540aSrobert const float_denorm_style __numeric_limits_base::has_denorm; 56*404b540aSrobert const bool __numeric_limits_base::has_denorm_loss; 57*404b540aSrobert const bool __numeric_limits_base::is_iec559; 58*404b540aSrobert const bool __numeric_limits_base::is_bounded; 59*404b540aSrobert const bool __numeric_limits_base::is_modulo; 60*404b540aSrobert const bool __numeric_limits_base::traps; 61*404b540aSrobert const bool __numeric_limits_base::tinyness_before; 62*404b540aSrobert const float_round_style __numeric_limits_base::round_style; 63*404b540aSrobert 64*404b540aSrobert // bool 65*404b540aSrobert const bool numeric_limits<bool>::is_specialized; 66*404b540aSrobert const int numeric_limits<bool>::digits; 67*404b540aSrobert const int numeric_limits<bool>::digits10; 68*404b540aSrobert const bool numeric_limits<bool>::is_signed; 69*404b540aSrobert const bool numeric_limits<bool>::is_integer; 70*404b540aSrobert const bool numeric_limits<bool>::is_exact; 71*404b540aSrobert const int numeric_limits<bool>::radix; 72*404b540aSrobert const int numeric_limits<bool>::min_exponent; 73*404b540aSrobert const int numeric_limits<bool>::min_exponent10; 74*404b540aSrobert const int numeric_limits<bool>::max_exponent; 75*404b540aSrobert const int numeric_limits<bool>::max_exponent10; 76*404b540aSrobert const bool numeric_limits<bool>::has_infinity; 77*404b540aSrobert const bool numeric_limits<bool>::has_quiet_NaN; 78*404b540aSrobert const bool numeric_limits<bool>::has_signaling_NaN; 79*404b540aSrobert const float_denorm_style numeric_limits<bool>::has_denorm; 80*404b540aSrobert const bool numeric_limits<bool>::has_denorm_loss; 81*404b540aSrobert const bool numeric_limits<bool>::is_iec559; 82*404b540aSrobert const bool numeric_limits<bool>::is_bounded; 83*404b540aSrobert const bool numeric_limits<bool>::is_modulo; 84*404b540aSrobert const bool numeric_limits<bool>::traps; 85*404b540aSrobert const bool numeric_limits<bool>::tinyness_before; 86*404b540aSrobert const float_round_style numeric_limits<bool>::round_style; 87*404b540aSrobert 88*404b540aSrobert // char 89*404b540aSrobert const bool numeric_limits<char>::is_specialized; 90*404b540aSrobert const int numeric_limits<char>::digits; 91*404b540aSrobert const int numeric_limits<char>::digits10; 92*404b540aSrobert const bool numeric_limits<char>::is_signed; 93*404b540aSrobert const bool numeric_limits<char>::is_integer; 94*404b540aSrobert const bool numeric_limits<char>::is_exact; 95*404b540aSrobert const int numeric_limits<char>::radix; 96*404b540aSrobert const int numeric_limits<char>::min_exponent; 97*404b540aSrobert const int numeric_limits<char>::min_exponent10; 98*404b540aSrobert const int numeric_limits<char>::max_exponent; 99*404b540aSrobert const int numeric_limits<char>::max_exponent10; 100*404b540aSrobert const bool numeric_limits<char>::has_infinity; 101*404b540aSrobert const bool numeric_limits<char>::has_quiet_NaN; 102*404b540aSrobert const bool numeric_limits<char>::has_signaling_NaN; 103*404b540aSrobert const float_denorm_style numeric_limits<char>::has_denorm; 104*404b540aSrobert const bool numeric_limits<char>::has_denorm_loss; 105*404b540aSrobert const bool numeric_limits<char>::is_iec559; 106*404b540aSrobert const bool numeric_limits<char>::is_bounded; 107*404b540aSrobert const bool numeric_limits<char>::is_modulo; 108*404b540aSrobert const bool numeric_limits<char>::traps; 109*404b540aSrobert const bool numeric_limits<char>::tinyness_before; 110*404b540aSrobert const float_round_style numeric_limits<char>::round_style; 111*404b540aSrobert 112*404b540aSrobert // signed char 113*404b540aSrobert const bool numeric_limits<signed char>::is_specialized; 114*404b540aSrobert const int numeric_limits<signed char>::digits; 115*404b540aSrobert const int numeric_limits<signed char>::digits10; 116*404b540aSrobert const bool numeric_limits<signed char>::is_signed; 117*404b540aSrobert const bool numeric_limits<signed char>::is_integer; 118*404b540aSrobert const bool numeric_limits<signed char>::is_exact; 119*404b540aSrobert const int numeric_limits<signed char>::radix; 120*404b540aSrobert const int numeric_limits<signed char>::min_exponent; 121*404b540aSrobert const int numeric_limits<signed char>::min_exponent10; 122*404b540aSrobert const int numeric_limits<signed char>::max_exponent; 123*404b540aSrobert const int numeric_limits<signed char>::max_exponent10; 124*404b540aSrobert const bool numeric_limits<signed char>::has_infinity; 125*404b540aSrobert const bool numeric_limits<signed char>::has_quiet_NaN; 126*404b540aSrobert const bool numeric_limits<signed char>::has_signaling_NaN; 127*404b540aSrobert const float_denorm_style numeric_limits<signed char>::has_denorm; 128*404b540aSrobert const bool numeric_limits<signed char>::has_denorm_loss; 129*404b540aSrobert const bool numeric_limits<signed char>::is_iec559; 130*404b540aSrobert const bool numeric_limits<signed char>::is_bounded; 131*404b540aSrobert const bool numeric_limits<signed char>::is_modulo; 132*404b540aSrobert const bool numeric_limits<signed char>::traps; 133*404b540aSrobert const bool numeric_limits<signed char>::tinyness_before; 134*404b540aSrobert const float_round_style numeric_limits<signed char>::round_style; 135*404b540aSrobert 136*404b540aSrobert // unsigned char 137*404b540aSrobert const bool numeric_limits<unsigned char>::is_specialized; 138*404b540aSrobert const int numeric_limits<unsigned char>::digits; 139*404b540aSrobert const int numeric_limits<unsigned char>::digits10; 140*404b540aSrobert const bool numeric_limits<unsigned char>::is_signed; 141*404b540aSrobert const bool numeric_limits<unsigned char>::is_integer; 142*404b540aSrobert const bool numeric_limits<unsigned char>::is_exact; 143*404b540aSrobert const int numeric_limits<unsigned char>::radix; 144*404b540aSrobert const int numeric_limits<unsigned char>::min_exponent; 145*404b540aSrobert const int numeric_limits<unsigned char>::min_exponent10; 146*404b540aSrobert const int numeric_limits<unsigned char>::max_exponent; 147*404b540aSrobert const int numeric_limits<unsigned char>::max_exponent10; 148*404b540aSrobert const bool numeric_limits<unsigned char>::has_infinity; 149*404b540aSrobert const bool numeric_limits<unsigned char>::has_quiet_NaN; 150*404b540aSrobert const bool numeric_limits<unsigned char>::has_signaling_NaN; 151*404b540aSrobert const float_denorm_style numeric_limits<unsigned char>::has_denorm; 152*404b540aSrobert const bool numeric_limits<unsigned char>::has_denorm_loss; 153*404b540aSrobert const bool numeric_limits<unsigned char>::is_iec559; 154*404b540aSrobert const bool numeric_limits<unsigned char>::is_bounded; 155*404b540aSrobert const bool numeric_limits<unsigned char>::is_modulo; 156*404b540aSrobert const bool numeric_limits<unsigned char>::traps; 157*404b540aSrobert const bool numeric_limits<unsigned char>::tinyness_before; 158*404b540aSrobert const float_round_style numeric_limits<unsigned char>::round_style; 159*404b540aSrobert 160*404b540aSrobert // wchar_t 161*404b540aSrobert // This used to be problematic... 162*404b540aSrobert #ifdef _GLIBCXX_USE_WCHAR_T 163*404b540aSrobert const bool numeric_limits<wchar_t>::is_specialized; 164*404b540aSrobert const int numeric_limits<wchar_t>::digits; 165*404b540aSrobert const int numeric_limits<wchar_t>::digits10; 166*404b540aSrobert const bool numeric_limits<wchar_t>::is_signed; 167*404b540aSrobert const bool numeric_limits<wchar_t>::is_integer; 168*404b540aSrobert const bool numeric_limits<wchar_t>::is_exact; 169*404b540aSrobert const int numeric_limits<wchar_t>::radix; 170*404b540aSrobert const int numeric_limits<wchar_t>::min_exponent; 171*404b540aSrobert const int numeric_limits<wchar_t>::min_exponent10; 172*404b540aSrobert const int numeric_limits<wchar_t>::max_exponent; 173*404b540aSrobert const int numeric_limits<wchar_t>::max_exponent10; 174*404b540aSrobert const bool numeric_limits<wchar_t>::has_infinity; 175*404b540aSrobert const bool numeric_limits<wchar_t>::has_quiet_NaN; 176*404b540aSrobert const bool numeric_limits<wchar_t>::has_signaling_NaN; 177*404b540aSrobert const float_denorm_style numeric_limits<wchar_t>::has_denorm; 178*404b540aSrobert const bool numeric_limits<wchar_t>::has_denorm_loss; 179*404b540aSrobert const bool numeric_limits<wchar_t>::is_iec559; 180*404b540aSrobert const bool numeric_limits<wchar_t>::is_bounded; 181*404b540aSrobert const bool numeric_limits<wchar_t>::is_modulo; 182*404b540aSrobert const bool numeric_limits<wchar_t>::traps; 183*404b540aSrobert const bool numeric_limits<wchar_t>::tinyness_before; 184*404b540aSrobert const float_round_style numeric_limits<wchar_t>::round_style; 185*404b540aSrobert #endif // _GLIBCXX_USE_WCHAR_T 186*404b540aSrobert 187*404b540aSrobert // short 188*404b540aSrobert const bool numeric_limits<short>::is_specialized; 189*404b540aSrobert const int numeric_limits<short>::digits; 190*404b540aSrobert const int numeric_limits<short>::digits10; 191*404b540aSrobert const bool numeric_limits<short>::is_signed; 192*404b540aSrobert const bool numeric_limits<short>::is_integer; 193*404b540aSrobert const bool numeric_limits<short>::is_exact; 194*404b540aSrobert const int numeric_limits<short>::radix; 195*404b540aSrobert const int numeric_limits<short>::min_exponent; 196*404b540aSrobert const int numeric_limits<short>::min_exponent10; 197*404b540aSrobert const int numeric_limits<short>::max_exponent; 198*404b540aSrobert const int numeric_limits<short>::max_exponent10; 199*404b540aSrobert const bool numeric_limits<short>::has_infinity; 200*404b540aSrobert const bool numeric_limits<short>::has_quiet_NaN; 201*404b540aSrobert const bool numeric_limits<short>::has_signaling_NaN; 202*404b540aSrobert const float_denorm_style numeric_limits<short>::has_denorm; 203*404b540aSrobert const bool numeric_limits<short>::has_denorm_loss; 204*404b540aSrobert const bool numeric_limits<short>::is_iec559; 205*404b540aSrobert const bool numeric_limits<short>::is_bounded; 206*404b540aSrobert const bool numeric_limits<short>::is_modulo; 207*404b540aSrobert const bool numeric_limits<short>::traps; 208*404b540aSrobert const bool numeric_limits<short>::tinyness_before; 209*404b540aSrobert const float_round_style numeric_limits<short>::round_style; 210*404b540aSrobert 211*404b540aSrobert // unsigned short 212*404b540aSrobert const bool numeric_limits<unsigned short>::is_specialized; 213*404b540aSrobert const int numeric_limits<unsigned short>::digits; 214*404b540aSrobert const int numeric_limits<unsigned short>::digits10; 215*404b540aSrobert const bool numeric_limits<unsigned short>::is_signed; 216*404b540aSrobert const bool numeric_limits<unsigned short>::is_integer; 217*404b540aSrobert const bool numeric_limits<unsigned short>::is_exact; 218*404b540aSrobert const int numeric_limits<unsigned short>::radix; 219*404b540aSrobert const int numeric_limits<unsigned short>::min_exponent; 220*404b540aSrobert const int numeric_limits<unsigned short>::min_exponent10; 221*404b540aSrobert const int numeric_limits<unsigned short>::max_exponent; 222*404b540aSrobert const int numeric_limits<unsigned short>::max_exponent10; 223*404b540aSrobert const bool numeric_limits<unsigned short>::has_infinity; 224*404b540aSrobert const bool numeric_limits<unsigned short>::has_quiet_NaN; 225*404b540aSrobert const bool numeric_limits<unsigned short>::has_signaling_NaN; 226*404b540aSrobert const float_denorm_style numeric_limits<unsigned short>::has_denorm; 227*404b540aSrobert const bool numeric_limits<unsigned short>::has_denorm_loss; 228*404b540aSrobert const bool numeric_limits<unsigned short>::is_iec559; 229*404b540aSrobert const bool numeric_limits<unsigned short>::is_bounded; 230*404b540aSrobert const bool numeric_limits<unsigned short>::is_modulo; 231*404b540aSrobert const bool numeric_limits<unsigned short>::traps; 232*404b540aSrobert const bool numeric_limits<unsigned short>::tinyness_before; 233*404b540aSrobert const float_round_style numeric_limits<unsigned short>::round_style; 234*404b540aSrobert 235*404b540aSrobert // int 236*404b540aSrobert const bool numeric_limits<int>::is_specialized; 237*404b540aSrobert const int numeric_limits<int>::digits; 238*404b540aSrobert const int numeric_limits<int>::digits10; 239*404b540aSrobert const bool numeric_limits<int>::is_signed; 240*404b540aSrobert const bool numeric_limits<int>::is_integer; 241*404b540aSrobert const bool numeric_limits<int>::is_exact; 242*404b540aSrobert const int numeric_limits<int>::radix; 243*404b540aSrobert const int numeric_limits<int>::min_exponent; 244*404b540aSrobert const int numeric_limits<int>::min_exponent10; 245*404b540aSrobert const int numeric_limits<int>::max_exponent; 246*404b540aSrobert const int numeric_limits<int>::max_exponent10; 247*404b540aSrobert const bool numeric_limits<int>::has_infinity; 248*404b540aSrobert const bool numeric_limits<int>::has_quiet_NaN; 249*404b540aSrobert const bool numeric_limits<int>::has_signaling_NaN; 250*404b540aSrobert const float_denorm_style numeric_limits<int>::has_denorm; 251*404b540aSrobert const bool numeric_limits<int>::has_denorm_loss; 252*404b540aSrobert const bool numeric_limits<int>::is_iec559; 253*404b540aSrobert const bool numeric_limits<int>::is_bounded; 254*404b540aSrobert const bool numeric_limits<int>::is_modulo; 255*404b540aSrobert const bool numeric_limits<int>::traps; 256*404b540aSrobert const bool numeric_limits<int>::tinyness_before; 257*404b540aSrobert const float_round_style numeric_limits<int>::round_style; 258*404b540aSrobert 259*404b540aSrobert // unsigned int 260*404b540aSrobert const bool numeric_limits<unsigned int>::is_specialized; 261*404b540aSrobert const int numeric_limits<unsigned int>::digits; 262*404b540aSrobert const int numeric_limits<unsigned int>::digits10; 263*404b540aSrobert const bool numeric_limits<unsigned int>::is_signed; 264*404b540aSrobert const bool numeric_limits<unsigned int>::is_integer; 265*404b540aSrobert const bool numeric_limits<unsigned int>::is_exact; 266*404b540aSrobert const int numeric_limits<unsigned int>::radix; 267*404b540aSrobert const int numeric_limits<unsigned int>::min_exponent; 268*404b540aSrobert const int numeric_limits<unsigned int>::min_exponent10; 269*404b540aSrobert const int numeric_limits<unsigned int>::max_exponent; 270*404b540aSrobert const int numeric_limits<unsigned int>::max_exponent10; 271*404b540aSrobert const bool numeric_limits<unsigned int>::has_infinity; 272*404b540aSrobert const bool numeric_limits<unsigned int>::has_quiet_NaN; 273*404b540aSrobert const bool numeric_limits<unsigned int>::has_signaling_NaN; 274*404b540aSrobert const float_denorm_style numeric_limits<unsigned int>::has_denorm; 275*404b540aSrobert const bool numeric_limits<unsigned int>::has_denorm_loss; 276*404b540aSrobert const bool numeric_limits<unsigned int>::is_iec559; 277*404b540aSrobert const bool numeric_limits<unsigned int>::is_bounded; 278*404b540aSrobert const bool numeric_limits<unsigned int>::is_modulo; 279*404b540aSrobert const bool numeric_limits<unsigned int>::traps; 280*404b540aSrobert const bool numeric_limits<unsigned int>::tinyness_before; 281*404b540aSrobert const float_round_style numeric_limits<unsigned int>::round_style; 282*404b540aSrobert 283*404b540aSrobert // long 284*404b540aSrobert const bool numeric_limits<long>::is_specialized; 285*404b540aSrobert const int numeric_limits<long>::digits; 286*404b540aSrobert const int numeric_limits<long>::digits10; 287*404b540aSrobert const bool numeric_limits<long>::is_signed; 288*404b540aSrobert const bool numeric_limits<long>::is_integer; 289*404b540aSrobert const bool numeric_limits<long>::is_exact; 290*404b540aSrobert const int numeric_limits<long>::radix; 291*404b540aSrobert const int numeric_limits<long>::min_exponent; 292*404b540aSrobert const int numeric_limits<long>::min_exponent10; 293*404b540aSrobert const int numeric_limits<long>::max_exponent; 294*404b540aSrobert const int numeric_limits<long>::max_exponent10; 295*404b540aSrobert const bool numeric_limits<long>::has_infinity; 296*404b540aSrobert const bool numeric_limits<long>::has_quiet_NaN; 297*404b540aSrobert const bool numeric_limits<long>::has_signaling_NaN; 298*404b540aSrobert const float_denorm_style numeric_limits<long>::has_denorm; 299*404b540aSrobert const bool numeric_limits<long>::has_denorm_loss; 300*404b540aSrobert const bool numeric_limits<long>::is_iec559; 301*404b540aSrobert const bool numeric_limits<long>::is_bounded; 302*404b540aSrobert const bool numeric_limits<long>::is_modulo; 303*404b540aSrobert const bool numeric_limits<long>::traps; 304*404b540aSrobert const bool numeric_limits<long>::tinyness_before; 305*404b540aSrobert const float_round_style numeric_limits<long>::round_style; 306*404b540aSrobert 307*404b540aSrobert // unsigned long 308*404b540aSrobert const bool numeric_limits<unsigned long>::is_specialized; 309*404b540aSrobert const int numeric_limits<unsigned long>::digits; 310*404b540aSrobert const int numeric_limits<unsigned long>::digits10; 311*404b540aSrobert const bool numeric_limits<unsigned long>::is_signed; 312*404b540aSrobert const bool numeric_limits<unsigned long>::is_integer; 313*404b540aSrobert const bool numeric_limits<unsigned long>::is_exact; 314*404b540aSrobert const int numeric_limits<unsigned long>::radix; 315*404b540aSrobert const int numeric_limits<unsigned long>::min_exponent; 316*404b540aSrobert const int numeric_limits<unsigned long>::min_exponent10; 317*404b540aSrobert const int numeric_limits<unsigned long>::max_exponent; 318*404b540aSrobert const int numeric_limits<unsigned long>::max_exponent10; 319*404b540aSrobert const bool numeric_limits<unsigned long>::has_infinity; 320*404b540aSrobert const bool numeric_limits<unsigned long>::has_quiet_NaN; 321*404b540aSrobert const bool numeric_limits<unsigned long>::has_signaling_NaN; 322*404b540aSrobert const float_denorm_style numeric_limits<unsigned long>::has_denorm; 323*404b540aSrobert const bool numeric_limits<unsigned long>::has_denorm_loss; 324*404b540aSrobert const bool numeric_limits<unsigned long>::is_iec559; 325*404b540aSrobert const bool numeric_limits<unsigned long>::is_bounded; 326*404b540aSrobert const bool numeric_limits<unsigned long>::is_modulo; 327*404b540aSrobert const bool numeric_limits<unsigned long>::traps; 328*404b540aSrobert const bool numeric_limits<unsigned long>::tinyness_before; 329*404b540aSrobert const float_round_style numeric_limits<unsigned long>::round_style; 330*404b540aSrobert 331*404b540aSrobert // NOTA BENE: long long is an extension 332*404b540aSrobert const bool numeric_limits<long long>::is_specialized; 333*404b540aSrobert const int numeric_limits<long long>::digits; 334*404b540aSrobert const int numeric_limits<long long>::digits10; 335*404b540aSrobert const bool numeric_limits<long long>::is_signed; 336*404b540aSrobert const bool numeric_limits<long long>::is_integer; 337*404b540aSrobert const bool numeric_limits<long long>::is_exact; 338*404b540aSrobert const int numeric_limits<long long>::radix; 339*404b540aSrobert const int numeric_limits<long long>::min_exponent; 340*404b540aSrobert const int numeric_limits<long long>::min_exponent10; 341*404b540aSrobert const int numeric_limits<long long>::max_exponent; 342*404b540aSrobert const int numeric_limits<long long>::max_exponent10; 343*404b540aSrobert const bool numeric_limits<long long>::has_infinity; 344*404b540aSrobert const bool numeric_limits<long long>::has_quiet_NaN; 345*404b540aSrobert const bool numeric_limits<long long>::has_signaling_NaN; 346*404b540aSrobert const float_denorm_style numeric_limits<long long>::has_denorm; 347*404b540aSrobert const bool numeric_limits<long long>::has_denorm_loss; 348*404b540aSrobert const bool numeric_limits<long long>::is_iec559; 349*404b540aSrobert const bool numeric_limits<long long>::is_bounded; 350*404b540aSrobert const bool numeric_limits<long long>::is_modulo; 351*404b540aSrobert const bool numeric_limits<long long>::traps; 352*404b540aSrobert const bool numeric_limits<long long>::tinyness_before; 353*404b540aSrobert const float_round_style numeric_limits<long long>::round_style; 354*404b540aSrobert 355*404b540aSrobert const bool numeric_limits<unsigned long long>::is_specialized; 356*404b540aSrobert const int numeric_limits<unsigned long long>::digits; 357*404b540aSrobert const int numeric_limits<unsigned long long>::digits10; 358*404b540aSrobert const bool numeric_limits<unsigned long long>::is_signed; 359*404b540aSrobert const bool numeric_limits<unsigned long long>::is_integer; 360*404b540aSrobert const bool numeric_limits<unsigned long long>::is_exact; 361*404b540aSrobert const int numeric_limits<unsigned long long>::radix; 362*404b540aSrobert const int numeric_limits<unsigned long long>::min_exponent; 363*404b540aSrobert const int numeric_limits<unsigned long long>::min_exponent10; 364*404b540aSrobert const int numeric_limits<unsigned long long>::max_exponent; 365*404b540aSrobert const int numeric_limits<unsigned long long>::max_exponent10; 366*404b540aSrobert const bool numeric_limits<unsigned long long>::has_infinity; 367*404b540aSrobert const bool numeric_limits<unsigned long long>::has_quiet_NaN; 368*404b540aSrobert const bool numeric_limits<unsigned long long>::has_signaling_NaN; 369*404b540aSrobert const float_denorm_style numeric_limits<unsigned long long>::has_denorm; 370*404b540aSrobert const bool numeric_limits<unsigned long long>::has_denorm_loss; 371*404b540aSrobert const bool numeric_limits<unsigned long long>::is_iec559; 372*404b540aSrobert const bool numeric_limits<unsigned long long>::is_bounded; 373*404b540aSrobert const bool numeric_limits<unsigned long long>::is_modulo; 374*404b540aSrobert const bool numeric_limits<unsigned long long>::traps; 375*404b540aSrobert const bool numeric_limits<unsigned long long>::tinyness_before; 376*404b540aSrobert const float_round_style numeric_limits<unsigned long long>::round_style; 377*404b540aSrobert 378*404b540aSrobert // float 379*404b540aSrobert const bool numeric_limits<float>::is_specialized; 380*404b540aSrobert const int numeric_limits<float>::digits; 381*404b540aSrobert const int numeric_limits<float>::digits10; 382*404b540aSrobert const bool numeric_limits<float>::is_signed; 383*404b540aSrobert const bool numeric_limits<float>::is_integer; 384*404b540aSrobert const bool numeric_limits<float>::is_exact; 385*404b540aSrobert const int numeric_limits<float>::radix; 386*404b540aSrobert const int numeric_limits<float>::min_exponent; 387*404b540aSrobert const int numeric_limits<float>::min_exponent10; 388*404b540aSrobert const int numeric_limits<float>::max_exponent; 389*404b540aSrobert const int numeric_limits<float>::max_exponent10; 390*404b540aSrobert const bool numeric_limits<float>::has_infinity; 391*404b540aSrobert const bool numeric_limits<float>::has_quiet_NaN; 392*404b540aSrobert const bool numeric_limits<float>::has_signaling_NaN; 393*404b540aSrobert const float_denorm_style numeric_limits<float>::has_denorm; 394*404b540aSrobert const bool numeric_limits<float>::has_denorm_loss; 395*404b540aSrobert const bool numeric_limits<float>::is_iec559; 396*404b540aSrobert const bool numeric_limits<float>::is_bounded; 397*404b540aSrobert const bool numeric_limits<float>::is_modulo; 398*404b540aSrobert const bool numeric_limits<float>::traps; 399*404b540aSrobert const bool numeric_limits<float>::tinyness_before; 400*404b540aSrobert const float_round_style numeric_limits<float>::round_style; 401*404b540aSrobert 402*404b540aSrobert // double 403*404b540aSrobert const bool numeric_limits<double>::is_specialized; 404*404b540aSrobert const int numeric_limits<double>::digits; 405*404b540aSrobert const int numeric_limits<double>::digits10; 406*404b540aSrobert const bool numeric_limits<double>::is_signed; 407*404b540aSrobert const bool numeric_limits<double>::is_integer; 408*404b540aSrobert const bool numeric_limits<double>::is_exact; 409*404b540aSrobert const int numeric_limits<double>::radix; 410*404b540aSrobert const int numeric_limits<double>::min_exponent; 411*404b540aSrobert const int numeric_limits<double>::min_exponent10; 412*404b540aSrobert const int numeric_limits<double>::max_exponent; 413*404b540aSrobert const int numeric_limits<double>::max_exponent10; 414*404b540aSrobert const bool numeric_limits<double>::has_infinity; 415*404b540aSrobert const bool numeric_limits<double>::has_quiet_NaN; 416*404b540aSrobert const bool numeric_limits<double>::has_signaling_NaN; 417*404b540aSrobert const float_denorm_style numeric_limits<double>::has_denorm; 418*404b540aSrobert const bool numeric_limits<double>::has_denorm_loss; 419*404b540aSrobert const bool numeric_limits<double>::is_iec559; 420*404b540aSrobert const bool numeric_limits<double>::is_bounded; 421*404b540aSrobert const bool numeric_limits<double>::is_modulo; 422*404b540aSrobert const bool numeric_limits<double>::traps; 423*404b540aSrobert const bool numeric_limits<double>::tinyness_before; 424*404b540aSrobert const float_round_style numeric_limits<double>::round_style; 425*404b540aSrobert 426*404b540aSrobert // long double 427*404b540aSrobert const bool numeric_limits<long double>::is_specialized; 428*404b540aSrobert const int numeric_limits<long double>::digits; 429*404b540aSrobert const int numeric_limits<long double>::digits10; 430*404b540aSrobert const bool numeric_limits<long double>::is_signed; 431*404b540aSrobert const bool numeric_limits<long double>::is_integer; 432*404b540aSrobert const bool numeric_limits<long double>::is_exact; 433*404b540aSrobert const int numeric_limits<long double>::radix; 434*404b540aSrobert const int numeric_limits<long double>::min_exponent; 435*404b540aSrobert const int numeric_limits<long double>::min_exponent10; 436*404b540aSrobert const int numeric_limits<long double>::max_exponent; 437*404b540aSrobert const int numeric_limits<long double>::max_exponent10; 438*404b540aSrobert const bool numeric_limits<long double>::has_infinity; 439*404b540aSrobert const bool numeric_limits<long double>::has_quiet_NaN; 440*404b540aSrobert const bool numeric_limits<long double>::has_signaling_NaN; 441*404b540aSrobert const float_denorm_style numeric_limits<long double>::has_denorm; 442*404b540aSrobert const bool numeric_limits<long double>::has_denorm_loss; 443*404b540aSrobert const bool numeric_limits<long double>::is_iec559; 444*404b540aSrobert const bool numeric_limits<long double>::is_bounded; 445*404b540aSrobert const bool numeric_limits<long double>::is_modulo; 446*404b540aSrobert const bool numeric_limits<long double>::traps; 447*404b540aSrobert const bool numeric_limits<long double>::tinyness_before; 448*404b540aSrobert const float_round_style numeric_limits<long double>::round_style; 449*404b540aSrobert 450*404b540aSrobert _GLIBCXX_END_NAMESPACE 451*404b540aSrobert 452*404b540aSrobert // XXX GLIBCXX_ABI Deprecated 453*404b540aSrobert #ifdef _GLIBCXX_LONG_DOUBLE_COMPAT 454*404b540aSrobert 455*404b540aSrobert #define _GLIBCXX_NUM_LIM_COMPAT(type, member, len) \ 456*404b540aSrobert extern "C" type _ZNSt14numeric_limitsIeE ## len ## member ## E \ 457*404b540aSrobert __attribute__ ((alias ("_ZNSt14numeric_limitsIdE" #len #member "E"))) 458*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (bool, is_specialized, 14); 459*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (int, digits, 6); 460*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (int, digits10, 8); 461*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (bool, is_signed, 9); 462*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (bool, is_integer, 10); 463*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (bool, is_exact, 8); 464*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (int, radix, 5); 465*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (int, min_exponent, 12); 466*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (int, min_exponent10, 14); 467*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (int, max_exponent, 12); 468*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (int, max_exponent10, 14); 469*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (bool, has_infinity, 12); 470*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (bool, has_quiet_NaN, 13); 471*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (bool, has_signaling_NaN, 17); 472*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (std::float_denorm_style, has_denorm, 10); 473*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (bool, has_denorm_loss, 15); 474*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (bool, is_iec559, 9); 475*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (bool, is_bounded, 10); 476*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (bool, is_modulo, 9); 477*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (bool, traps, 5); 478*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (bool, tinyness_before, 15); 479*404b540aSrobert _GLIBCXX_NUM_LIM_COMPAT (std::float_round_style, round_style, 11); 480*404b540aSrobert 481*404b540aSrobert #endif // _GLIBCXX_LONG_DOUBLE_COMPAT 482