1*38fd1498Szrj // Static data members of -*- C++ -*- numeric_limits classes 2*38fd1498Szrj 3*38fd1498Szrj // Copyright (C) 1999-2018 Free Software Foundation, Inc. 4*38fd1498Szrj // 5*38fd1498Szrj // This file is part of the GNU ISO C++ Library. This library is free 6*38fd1498Szrj // software; you can redistribute it and/or modify it under the 7*38fd1498Szrj // terms of the GNU General Public License as published by the 8*38fd1498Szrj // Free Software Foundation; either version 3, or (at your option) 9*38fd1498Szrj // any later version. 10*38fd1498Szrj 11*38fd1498Szrj // This library is distributed in the hope that it will be useful, 12*38fd1498Szrj // but WITHOUT ANY WARRANTY; without even the implied warranty of 13*38fd1498Szrj // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*38fd1498Szrj // GNU General Public License for more details. 15*38fd1498Szrj 16*38fd1498Szrj // Under Section 7 of GPL version 3, you are granted additional 17*38fd1498Szrj // permissions described in the GCC Runtime Library Exception, version 18*38fd1498Szrj // 3.1, as published by the Free Software Foundation. 19*38fd1498Szrj 20*38fd1498Szrj // You should have received a copy of the GNU General Public License and 21*38fd1498Szrj // a copy of the GCC Runtime Library Exception along with this program; 22*38fd1498Szrj // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23*38fd1498Szrj // <http://www.gnu.org/licenses/>. 24*38fd1498Szrj 25*38fd1498Szrj // Written by Gabriel Dos Reis <Gabriel.Dos-Reis@cmla.ens-cachan.fr> 26*38fd1498Szrj 27*38fd1498Szrj // 28*38fd1498Szrj // ISO C++ 14882:1998 29*38fd1498Szrj // 18.2.1 30*38fd1498Szrj // 31*38fd1498Szrj 32*38fd1498Szrj #include <limits> 33*38fd1498Szrj 34*38fd1498Szrj namespace std _GLIBCXX_VISIBILITY(default) 35*38fd1498Szrj { 36*38fd1498Szrj _GLIBCXX_BEGIN_NAMESPACE_VERSION 37*38fd1498Szrj 38*38fd1498Szrj #define const _GLIBCXX_USE_CONSTEXPR 39*38fd1498Szrj 40*38fd1498Szrj const bool __numeric_limits_base::is_specialized; 41*38fd1498Szrj const int __numeric_limits_base::digits; 42*38fd1498Szrj const int __numeric_limits_base::digits10; 43*38fd1498Szrj const int __numeric_limits_base::max_digits10; 44*38fd1498Szrj const bool __numeric_limits_base::is_signed; 45*38fd1498Szrj const bool __numeric_limits_base::is_integer; 46*38fd1498Szrj const bool __numeric_limits_base::is_exact; 47*38fd1498Szrj const int __numeric_limits_base::radix; 48*38fd1498Szrj const int __numeric_limits_base::min_exponent; 49*38fd1498Szrj const int __numeric_limits_base::min_exponent10; 50*38fd1498Szrj const int __numeric_limits_base::max_exponent; 51*38fd1498Szrj const int __numeric_limits_base::max_exponent10; 52*38fd1498Szrj const bool __numeric_limits_base::has_infinity; 53*38fd1498Szrj const bool __numeric_limits_base::has_quiet_NaN; 54*38fd1498Szrj const bool __numeric_limits_base::has_signaling_NaN; 55*38fd1498Szrj const float_denorm_style __numeric_limits_base::has_denorm; 56*38fd1498Szrj const bool __numeric_limits_base::has_denorm_loss; 57*38fd1498Szrj const bool __numeric_limits_base::is_iec559; 58*38fd1498Szrj const bool __numeric_limits_base::is_bounded; 59*38fd1498Szrj const bool __numeric_limits_base::is_modulo; 60*38fd1498Szrj const bool __numeric_limits_base::traps; 61*38fd1498Szrj const bool __numeric_limits_base::tinyness_before; 62*38fd1498Szrj const float_round_style __numeric_limits_base::round_style; 63*38fd1498Szrj 64*38fd1498Szrj // bool 65*38fd1498Szrj const bool numeric_limits<bool>::is_specialized; 66*38fd1498Szrj const int numeric_limits<bool>::digits; 67*38fd1498Szrj const int numeric_limits<bool>::digits10; 68*38fd1498Szrj const int numeric_limits<bool>::max_digits10; 69*38fd1498Szrj const bool numeric_limits<bool>::is_signed; 70*38fd1498Szrj const bool numeric_limits<bool>::is_integer; 71*38fd1498Szrj const bool numeric_limits<bool>::is_exact; 72*38fd1498Szrj const int numeric_limits<bool>::radix; 73*38fd1498Szrj const int numeric_limits<bool>::min_exponent; 74*38fd1498Szrj const int numeric_limits<bool>::min_exponent10; 75*38fd1498Szrj const int numeric_limits<bool>::max_exponent; 76*38fd1498Szrj const int numeric_limits<bool>::max_exponent10; 77*38fd1498Szrj const bool numeric_limits<bool>::has_infinity; 78*38fd1498Szrj const bool numeric_limits<bool>::has_quiet_NaN; 79*38fd1498Szrj const bool numeric_limits<bool>::has_signaling_NaN; 80*38fd1498Szrj const float_denorm_style numeric_limits<bool>::has_denorm; 81*38fd1498Szrj const bool numeric_limits<bool>::has_denorm_loss; 82*38fd1498Szrj const bool numeric_limits<bool>::is_iec559; 83*38fd1498Szrj const bool numeric_limits<bool>::is_bounded; 84*38fd1498Szrj const bool numeric_limits<bool>::is_modulo; 85*38fd1498Szrj const bool numeric_limits<bool>::traps; 86*38fd1498Szrj const bool numeric_limits<bool>::tinyness_before; 87*38fd1498Szrj const float_round_style numeric_limits<bool>::round_style; 88*38fd1498Szrj 89*38fd1498Szrj // char 90*38fd1498Szrj const bool numeric_limits<char>::is_specialized; 91*38fd1498Szrj const int numeric_limits<char>::digits; 92*38fd1498Szrj const int numeric_limits<char>::digits10; 93*38fd1498Szrj const int numeric_limits<char>::max_digits10; 94*38fd1498Szrj const bool numeric_limits<char>::is_signed; 95*38fd1498Szrj const bool numeric_limits<char>::is_integer; 96*38fd1498Szrj const bool numeric_limits<char>::is_exact; 97*38fd1498Szrj const int numeric_limits<char>::radix; 98*38fd1498Szrj const int numeric_limits<char>::min_exponent; 99*38fd1498Szrj const int numeric_limits<char>::min_exponent10; 100*38fd1498Szrj const int numeric_limits<char>::max_exponent; 101*38fd1498Szrj const int numeric_limits<char>::max_exponent10; 102*38fd1498Szrj const bool numeric_limits<char>::has_infinity; 103*38fd1498Szrj const bool numeric_limits<char>::has_quiet_NaN; 104*38fd1498Szrj const bool numeric_limits<char>::has_signaling_NaN; 105*38fd1498Szrj const float_denorm_style numeric_limits<char>::has_denorm; 106*38fd1498Szrj const bool numeric_limits<char>::has_denorm_loss; 107*38fd1498Szrj const bool numeric_limits<char>::is_iec559; 108*38fd1498Szrj const bool numeric_limits<char>::is_bounded; 109*38fd1498Szrj const bool numeric_limits<char>::is_modulo; 110*38fd1498Szrj const bool numeric_limits<char>::traps; 111*38fd1498Szrj const bool numeric_limits<char>::tinyness_before; 112*38fd1498Szrj const float_round_style numeric_limits<char>::round_style; 113*38fd1498Szrj 114*38fd1498Szrj // signed char 115*38fd1498Szrj const bool numeric_limits<signed char>::is_specialized; 116*38fd1498Szrj const int numeric_limits<signed char>::digits; 117*38fd1498Szrj const int numeric_limits<signed char>::digits10; 118*38fd1498Szrj const int numeric_limits<signed char>::max_digits10; 119*38fd1498Szrj const bool numeric_limits<signed char>::is_signed; 120*38fd1498Szrj const bool numeric_limits<signed char>::is_integer; 121*38fd1498Szrj const bool numeric_limits<signed char>::is_exact; 122*38fd1498Szrj const int numeric_limits<signed char>::radix; 123*38fd1498Szrj const int numeric_limits<signed char>::min_exponent; 124*38fd1498Szrj const int numeric_limits<signed char>::min_exponent10; 125*38fd1498Szrj const int numeric_limits<signed char>::max_exponent; 126*38fd1498Szrj const int numeric_limits<signed char>::max_exponent10; 127*38fd1498Szrj const bool numeric_limits<signed char>::has_infinity; 128*38fd1498Szrj const bool numeric_limits<signed char>::has_quiet_NaN; 129*38fd1498Szrj const bool numeric_limits<signed char>::has_signaling_NaN; 130*38fd1498Szrj const float_denorm_style numeric_limits<signed char>::has_denorm; 131*38fd1498Szrj const bool numeric_limits<signed char>::has_denorm_loss; 132*38fd1498Szrj const bool numeric_limits<signed char>::is_iec559; 133*38fd1498Szrj const bool numeric_limits<signed char>::is_bounded; 134*38fd1498Szrj const bool numeric_limits<signed char>::is_modulo; 135*38fd1498Szrj const bool numeric_limits<signed char>::traps; 136*38fd1498Szrj const bool numeric_limits<signed char>::tinyness_before; 137*38fd1498Szrj const float_round_style numeric_limits<signed char>::round_style; 138*38fd1498Szrj 139*38fd1498Szrj // unsigned char 140*38fd1498Szrj const bool numeric_limits<unsigned char>::is_specialized; 141*38fd1498Szrj const int numeric_limits<unsigned char>::digits; 142*38fd1498Szrj const int numeric_limits<unsigned char>::digits10; 143*38fd1498Szrj const int numeric_limits<unsigned char>::max_digits10; 144*38fd1498Szrj const bool numeric_limits<unsigned char>::is_signed; 145*38fd1498Szrj const bool numeric_limits<unsigned char>::is_integer; 146*38fd1498Szrj const bool numeric_limits<unsigned char>::is_exact; 147*38fd1498Szrj const int numeric_limits<unsigned char>::radix; 148*38fd1498Szrj const int numeric_limits<unsigned char>::min_exponent; 149*38fd1498Szrj const int numeric_limits<unsigned char>::min_exponent10; 150*38fd1498Szrj const int numeric_limits<unsigned char>::max_exponent; 151*38fd1498Szrj const int numeric_limits<unsigned char>::max_exponent10; 152*38fd1498Szrj const bool numeric_limits<unsigned char>::has_infinity; 153*38fd1498Szrj const bool numeric_limits<unsigned char>::has_quiet_NaN; 154*38fd1498Szrj const bool numeric_limits<unsigned char>::has_signaling_NaN; 155*38fd1498Szrj const float_denorm_style numeric_limits<unsigned char>::has_denorm; 156*38fd1498Szrj const bool numeric_limits<unsigned char>::has_denorm_loss; 157*38fd1498Szrj const bool numeric_limits<unsigned char>::is_iec559; 158*38fd1498Szrj const bool numeric_limits<unsigned char>::is_bounded; 159*38fd1498Szrj const bool numeric_limits<unsigned char>::is_modulo; 160*38fd1498Szrj const bool numeric_limits<unsigned char>::traps; 161*38fd1498Szrj const bool numeric_limits<unsigned char>::tinyness_before; 162*38fd1498Szrj const float_round_style numeric_limits<unsigned char>::round_style; 163*38fd1498Szrj 164*38fd1498Szrj // wchar_t 165*38fd1498Szrj // This used to be problematic... 166*38fd1498Szrj #ifdef _GLIBCXX_USE_WCHAR_T 167*38fd1498Szrj const bool numeric_limits<wchar_t>::is_specialized; 168*38fd1498Szrj const int numeric_limits<wchar_t>::digits; 169*38fd1498Szrj const int numeric_limits<wchar_t>::digits10; 170*38fd1498Szrj const int numeric_limits<wchar_t>::max_digits10; 171*38fd1498Szrj const bool numeric_limits<wchar_t>::is_signed; 172*38fd1498Szrj const bool numeric_limits<wchar_t>::is_integer; 173*38fd1498Szrj const bool numeric_limits<wchar_t>::is_exact; 174*38fd1498Szrj const int numeric_limits<wchar_t>::radix; 175*38fd1498Szrj const int numeric_limits<wchar_t>::min_exponent; 176*38fd1498Szrj const int numeric_limits<wchar_t>::min_exponent10; 177*38fd1498Szrj const int numeric_limits<wchar_t>::max_exponent; 178*38fd1498Szrj const int numeric_limits<wchar_t>::max_exponent10; 179*38fd1498Szrj const bool numeric_limits<wchar_t>::has_infinity; 180*38fd1498Szrj const bool numeric_limits<wchar_t>::has_quiet_NaN; 181*38fd1498Szrj const bool numeric_limits<wchar_t>::has_signaling_NaN; 182*38fd1498Szrj const float_denorm_style numeric_limits<wchar_t>::has_denorm; 183*38fd1498Szrj const bool numeric_limits<wchar_t>::has_denorm_loss; 184*38fd1498Szrj const bool numeric_limits<wchar_t>::is_iec559; 185*38fd1498Szrj const bool numeric_limits<wchar_t>::is_bounded; 186*38fd1498Szrj const bool numeric_limits<wchar_t>::is_modulo; 187*38fd1498Szrj const bool numeric_limits<wchar_t>::traps; 188*38fd1498Szrj const bool numeric_limits<wchar_t>::tinyness_before; 189*38fd1498Szrj const float_round_style numeric_limits<wchar_t>::round_style; 190*38fd1498Szrj #endif // _GLIBCXX_USE_WCHAR_T 191*38fd1498Szrj 192*38fd1498Szrj // short 193*38fd1498Szrj const bool numeric_limits<short>::is_specialized; 194*38fd1498Szrj const int numeric_limits<short>::digits; 195*38fd1498Szrj const int numeric_limits<short>::digits10; 196*38fd1498Szrj const int numeric_limits<short>::max_digits10; 197*38fd1498Szrj const bool numeric_limits<short>::is_signed; 198*38fd1498Szrj const bool numeric_limits<short>::is_integer; 199*38fd1498Szrj const bool numeric_limits<short>::is_exact; 200*38fd1498Szrj const int numeric_limits<short>::radix; 201*38fd1498Szrj const int numeric_limits<short>::min_exponent; 202*38fd1498Szrj const int numeric_limits<short>::min_exponent10; 203*38fd1498Szrj const int numeric_limits<short>::max_exponent; 204*38fd1498Szrj const int numeric_limits<short>::max_exponent10; 205*38fd1498Szrj const bool numeric_limits<short>::has_infinity; 206*38fd1498Szrj const bool numeric_limits<short>::has_quiet_NaN; 207*38fd1498Szrj const bool numeric_limits<short>::has_signaling_NaN; 208*38fd1498Szrj const float_denorm_style numeric_limits<short>::has_denorm; 209*38fd1498Szrj const bool numeric_limits<short>::has_denorm_loss; 210*38fd1498Szrj const bool numeric_limits<short>::is_iec559; 211*38fd1498Szrj const bool numeric_limits<short>::is_bounded; 212*38fd1498Szrj const bool numeric_limits<short>::is_modulo; 213*38fd1498Szrj const bool numeric_limits<short>::traps; 214*38fd1498Szrj const bool numeric_limits<short>::tinyness_before; 215*38fd1498Szrj const float_round_style numeric_limits<short>::round_style; 216*38fd1498Szrj 217*38fd1498Szrj // unsigned short 218*38fd1498Szrj const bool numeric_limits<unsigned short>::is_specialized; 219*38fd1498Szrj const int numeric_limits<unsigned short>::digits; 220*38fd1498Szrj const int numeric_limits<unsigned short>::digits10; 221*38fd1498Szrj const int numeric_limits<unsigned short>::max_digits10; 222*38fd1498Szrj const bool numeric_limits<unsigned short>::is_signed; 223*38fd1498Szrj const bool numeric_limits<unsigned short>::is_integer; 224*38fd1498Szrj const bool numeric_limits<unsigned short>::is_exact; 225*38fd1498Szrj const int numeric_limits<unsigned short>::radix; 226*38fd1498Szrj const int numeric_limits<unsigned short>::min_exponent; 227*38fd1498Szrj const int numeric_limits<unsigned short>::min_exponent10; 228*38fd1498Szrj const int numeric_limits<unsigned short>::max_exponent; 229*38fd1498Szrj const int numeric_limits<unsigned short>::max_exponent10; 230*38fd1498Szrj const bool numeric_limits<unsigned short>::has_infinity; 231*38fd1498Szrj const bool numeric_limits<unsigned short>::has_quiet_NaN; 232*38fd1498Szrj const bool numeric_limits<unsigned short>::has_signaling_NaN; 233*38fd1498Szrj const float_denorm_style numeric_limits<unsigned short>::has_denorm; 234*38fd1498Szrj const bool numeric_limits<unsigned short>::has_denorm_loss; 235*38fd1498Szrj const bool numeric_limits<unsigned short>::is_iec559; 236*38fd1498Szrj const bool numeric_limits<unsigned short>::is_bounded; 237*38fd1498Szrj const bool numeric_limits<unsigned short>::is_modulo; 238*38fd1498Szrj const bool numeric_limits<unsigned short>::traps; 239*38fd1498Szrj const bool numeric_limits<unsigned short>::tinyness_before; 240*38fd1498Szrj const float_round_style numeric_limits<unsigned short>::round_style; 241*38fd1498Szrj 242*38fd1498Szrj // int 243*38fd1498Szrj const bool numeric_limits<int>::is_specialized; 244*38fd1498Szrj const int numeric_limits<int>::digits; 245*38fd1498Szrj const int numeric_limits<int>::digits10; 246*38fd1498Szrj const int numeric_limits<int>::max_digits10; 247*38fd1498Szrj const bool numeric_limits<int>::is_signed; 248*38fd1498Szrj const bool numeric_limits<int>::is_integer; 249*38fd1498Szrj const bool numeric_limits<int>::is_exact; 250*38fd1498Szrj const int numeric_limits<int>::radix; 251*38fd1498Szrj const int numeric_limits<int>::min_exponent; 252*38fd1498Szrj const int numeric_limits<int>::min_exponent10; 253*38fd1498Szrj const int numeric_limits<int>::max_exponent; 254*38fd1498Szrj const int numeric_limits<int>::max_exponent10; 255*38fd1498Szrj const bool numeric_limits<int>::has_infinity; 256*38fd1498Szrj const bool numeric_limits<int>::has_quiet_NaN; 257*38fd1498Szrj const bool numeric_limits<int>::has_signaling_NaN; 258*38fd1498Szrj const float_denorm_style numeric_limits<int>::has_denorm; 259*38fd1498Szrj const bool numeric_limits<int>::has_denorm_loss; 260*38fd1498Szrj const bool numeric_limits<int>::is_iec559; 261*38fd1498Szrj const bool numeric_limits<int>::is_bounded; 262*38fd1498Szrj const bool numeric_limits<int>::is_modulo; 263*38fd1498Szrj const bool numeric_limits<int>::traps; 264*38fd1498Szrj const bool numeric_limits<int>::tinyness_before; 265*38fd1498Szrj const float_round_style numeric_limits<int>::round_style; 266*38fd1498Szrj 267*38fd1498Szrj // unsigned int 268*38fd1498Szrj const bool numeric_limits<unsigned int>::is_specialized; 269*38fd1498Szrj const int numeric_limits<unsigned int>::digits; 270*38fd1498Szrj const int numeric_limits<unsigned int>::digits10; 271*38fd1498Szrj const int numeric_limits<unsigned int>::max_digits10; 272*38fd1498Szrj const bool numeric_limits<unsigned int>::is_signed; 273*38fd1498Szrj const bool numeric_limits<unsigned int>::is_integer; 274*38fd1498Szrj const bool numeric_limits<unsigned int>::is_exact; 275*38fd1498Szrj const int numeric_limits<unsigned int>::radix; 276*38fd1498Szrj const int numeric_limits<unsigned int>::min_exponent; 277*38fd1498Szrj const int numeric_limits<unsigned int>::min_exponent10; 278*38fd1498Szrj const int numeric_limits<unsigned int>::max_exponent; 279*38fd1498Szrj const int numeric_limits<unsigned int>::max_exponent10; 280*38fd1498Szrj const bool numeric_limits<unsigned int>::has_infinity; 281*38fd1498Szrj const bool numeric_limits<unsigned int>::has_quiet_NaN; 282*38fd1498Szrj const bool numeric_limits<unsigned int>::has_signaling_NaN; 283*38fd1498Szrj const float_denorm_style numeric_limits<unsigned int>::has_denorm; 284*38fd1498Szrj const bool numeric_limits<unsigned int>::has_denorm_loss; 285*38fd1498Szrj const bool numeric_limits<unsigned int>::is_iec559; 286*38fd1498Szrj const bool numeric_limits<unsigned int>::is_bounded; 287*38fd1498Szrj const bool numeric_limits<unsigned int>::is_modulo; 288*38fd1498Szrj const bool numeric_limits<unsigned int>::traps; 289*38fd1498Szrj const bool numeric_limits<unsigned int>::tinyness_before; 290*38fd1498Szrj const float_round_style numeric_limits<unsigned int>::round_style; 291*38fd1498Szrj 292*38fd1498Szrj // long 293*38fd1498Szrj const bool numeric_limits<long>::is_specialized; 294*38fd1498Szrj const int numeric_limits<long>::digits; 295*38fd1498Szrj const int numeric_limits<long>::digits10; 296*38fd1498Szrj const int numeric_limits<long>::max_digits10; 297*38fd1498Szrj const bool numeric_limits<long>::is_signed; 298*38fd1498Szrj const bool numeric_limits<long>::is_integer; 299*38fd1498Szrj const bool numeric_limits<long>::is_exact; 300*38fd1498Szrj const int numeric_limits<long>::radix; 301*38fd1498Szrj const int numeric_limits<long>::min_exponent; 302*38fd1498Szrj const int numeric_limits<long>::min_exponent10; 303*38fd1498Szrj const int numeric_limits<long>::max_exponent; 304*38fd1498Szrj const int numeric_limits<long>::max_exponent10; 305*38fd1498Szrj const bool numeric_limits<long>::has_infinity; 306*38fd1498Szrj const bool numeric_limits<long>::has_quiet_NaN; 307*38fd1498Szrj const bool numeric_limits<long>::has_signaling_NaN; 308*38fd1498Szrj const float_denorm_style numeric_limits<long>::has_denorm; 309*38fd1498Szrj const bool numeric_limits<long>::has_denorm_loss; 310*38fd1498Szrj const bool numeric_limits<long>::is_iec559; 311*38fd1498Szrj const bool numeric_limits<long>::is_bounded; 312*38fd1498Szrj const bool numeric_limits<long>::is_modulo; 313*38fd1498Szrj const bool numeric_limits<long>::traps; 314*38fd1498Szrj const bool numeric_limits<long>::tinyness_before; 315*38fd1498Szrj const float_round_style numeric_limits<long>::round_style; 316*38fd1498Szrj 317*38fd1498Szrj // unsigned long 318*38fd1498Szrj const bool numeric_limits<unsigned long>::is_specialized; 319*38fd1498Szrj const int numeric_limits<unsigned long>::digits; 320*38fd1498Szrj const int numeric_limits<unsigned long>::digits10; 321*38fd1498Szrj const int numeric_limits<unsigned long>::max_digits10; 322*38fd1498Szrj const bool numeric_limits<unsigned long>::is_signed; 323*38fd1498Szrj const bool numeric_limits<unsigned long>::is_integer; 324*38fd1498Szrj const bool numeric_limits<unsigned long>::is_exact; 325*38fd1498Szrj const int numeric_limits<unsigned long>::radix; 326*38fd1498Szrj const int numeric_limits<unsigned long>::min_exponent; 327*38fd1498Szrj const int numeric_limits<unsigned long>::min_exponent10; 328*38fd1498Szrj const int numeric_limits<unsigned long>::max_exponent; 329*38fd1498Szrj const int numeric_limits<unsigned long>::max_exponent10; 330*38fd1498Szrj const bool numeric_limits<unsigned long>::has_infinity; 331*38fd1498Szrj const bool numeric_limits<unsigned long>::has_quiet_NaN; 332*38fd1498Szrj const bool numeric_limits<unsigned long>::has_signaling_NaN; 333*38fd1498Szrj const float_denorm_style numeric_limits<unsigned long>::has_denorm; 334*38fd1498Szrj const bool numeric_limits<unsigned long>::has_denorm_loss; 335*38fd1498Szrj const bool numeric_limits<unsigned long>::is_iec559; 336*38fd1498Szrj const bool numeric_limits<unsigned long>::is_bounded; 337*38fd1498Szrj const bool numeric_limits<unsigned long>::is_modulo; 338*38fd1498Szrj const bool numeric_limits<unsigned long>::traps; 339*38fd1498Szrj const bool numeric_limits<unsigned long>::tinyness_before; 340*38fd1498Szrj const float_round_style numeric_limits<unsigned long>::round_style; 341*38fd1498Szrj 342*38fd1498Szrj // NOTA BENE: long long is an extension 343*38fd1498Szrj const bool numeric_limits<long long>::is_specialized; 344*38fd1498Szrj const int numeric_limits<long long>::digits; 345*38fd1498Szrj const int numeric_limits<long long>::digits10; 346*38fd1498Szrj const int numeric_limits<long long>::max_digits10; 347*38fd1498Szrj const bool numeric_limits<long long>::is_signed; 348*38fd1498Szrj const bool numeric_limits<long long>::is_integer; 349*38fd1498Szrj const bool numeric_limits<long long>::is_exact; 350*38fd1498Szrj const int numeric_limits<long long>::radix; 351*38fd1498Szrj const int numeric_limits<long long>::min_exponent; 352*38fd1498Szrj const int numeric_limits<long long>::min_exponent10; 353*38fd1498Szrj const int numeric_limits<long long>::max_exponent; 354*38fd1498Szrj const int numeric_limits<long long>::max_exponent10; 355*38fd1498Szrj const bool numeric_limits<long long>::has_infinity; 356*38fd1498Szrj const bool numeric_limits<long long>::has_quiet_NaN; 357*38fd1498Szrj const bool numeric_limits<long long>::has_signaling_NaN; 358*38fd1498Szrj const float_denorm_style numeric_limits<long long>::has_denorm; 359*38fd1498Szrj const bool numeric_limits<long long>::has_denorm_loss; 360*38fd1498Szrj const bool numeric_limits<long long>::is_iec559; 361*38fd1498Szrj const bool numeric_limits<long long>::is_bounded; 362*38fd1498Szrj const bool numeric_limits<long long>::is_modulo; 363*38fd1498Szrj const bool numeric_limits<long long>::traps; 364*38fd1498Szrj const bool numeric_limits<long long>::tinyness_before; 365*38fd1498Szrj const float_round_style numeric_limits<long long>::round_style; 366*38fd1498Szrj 367*38fd1498Szrj const bool numeric_limits<unsigned long long>::is_specialized; 368*38fd1498Szrj const int numeric_limits<unsigned long long>::digits; 369*38fd1498Szrj const int numeric_limits<unsigned long long>::digits10; 370*38fd1498Szrj const int numeric_limits<unsigned long long>::max_digits10; 371*38fd1498Szrj const bool numeric_limits<unsigned long long>::is_signed; 372*38fd1498Szrj const bool numeric_limits<unsigned long long>::is_integer; 373*38fd1498Szrj const bool numeric_limits<unsigned long long>::is_exact; 374*38fd1498Szrj const int numeric_limits<unsigned long long>::radix; 375*38fd1498Szrj const int numeric_limits<unsigned long long>::min_exponent; 376*38fd1498Szrj const int numeric_limits<unsigned long long>::min_exponent10; 377*38fd1498Szrj const int numeric_limits<unsigned long long>::max_exponent; 378*38fd1498Szrj const int numeric_limits<unsigned long long>::max_exponent10; 379*38fd1498Szrj const bool numeric_limits<unsigned long long>::has_infinity; 380*38fd1498Szrj const bool numeric_limits<unsigned long long>::has_quiet_NaN; 381*38fd1498Szrj const bool numeric_limits<unsigned long long>::has_signaling_NaN; 382*38fd1498Szrj const float_denorm_style numeric_limits<unsigned long long>::has_denorm; 383*38fd1498Szrj const bool numeric_limits<unsigned long long>::has_denorm_loss; 384*38fd1498Szrj const bool numeric_limits<unsigned long long>::is_iec559; 385*38fd1498Szrj const bool numeric_limits<unsigned long long>::is_bounded; 386*38fd1498Szrj const bool numeric_limits<unsigned long long>::is_modulo; 387*38fd1498Szrj const bool numeric_limits<unsigned long long>::traps; 388*38fd1498Szrj const bool numeric_limits<unsigned long long>::tinyness_before; 389*38fd1498Szrj const float_round_style numeric_limits<unsigned long long>::round_style; 390*38fd1498Szrj 391*38fd1498Szrj #define INT_N(__INT_N_TYPE) \ 392*38fd1498Szrj const bool numeric_limits<__INT_N_TYPE>::is_specialized; \ 393*38fd1498Szrj const int numeric_limits<__INT_N_TYPE>::digits; \ 394*38fd1498Szrj const int numeric_limits<__INT_N_TYPE>::digits10; \ 395*38fd1498Szrj const int numeric_limits<__INT_N_TYPE>::max_digits10; \ 396*38fd1498Szrj const bool numeric_limits<__INT_N_TYPE>::is_signed; \ 397*38fd1498Szrj const bool numeric_limits<__INT_N_TYPE>::is_integer; \ 398*38fd1498Szrj const bool numeric_limits<__INT_N_TYPE>::is_exact; \ 399*38fd1498Szrj const int numeric_limits<__INT_N_TYPE>::radix; \ 400*38fd1498Szrj const int numeric_limits<__INT_N_TYPE>::min_exponent; \ 401*38fd1498Szrj const int numeric_limits<__INT_N_TYPE>::min_exponent10; \ 402*38fd1498Szrj const int numeric_limits<__INT_N_TYPE>::max_exponent; \ 403*38fd1498Szrj const int numeric_limits<__INT_N_TYPE>::max_exponent10; \ 404*38fd1498Szrj const bool numeric_limits<__INT_N_TYPE>::has_infinity; \ 405*38fd1498Szrj const bool numeric_limits<__INT_N_TYPE>::has_quiet_NaN; \ 406*38fd1498Szrj const bool numeric_limits<__INT_N_TYPE>::has_signaling_NaN; \ 407*38fd1498Szrj const float_denorm_style numeric_limits<__INT_N_TYPE>::has_denorm; \ 408*38fd1498Szrj const bool numeric_limits<__INT_N_TYPE>::has_denorm_loss; \ 409*38fd1498Szrj const bool numeric_limits<__INT_N_TYPE>::is_iec559; \ 410*38fd1498Szrj const bool numeric_limits<__INT_N_TYPE>::is_bounded; \ 411*38fd1498Szrj const bool numeric_limits<__INT_N_TYPE>::is_modulo; \ 412*38fd1498Szrj const bool numeric_limits<__INT_N_TYPE>::traps; \ 413*38fd1498Szrj const bool numeric_limits<__INT_N_TYPE>::tinyness_before; \ 414*38fd1498Szrj const float_round_style numeric_limits<__INT_N_TYPE>::round_style; \ 415*38fd1498Szrj \ 416*38fd1498Szrj const bool numeric_limits<unsigned __INT_N_TYPE>::is_specialized; \ 417*38fd1498Szrj const int numeric_limits<unsigned __INT_N_TYPE>::digits; \ 418*38fd1498Szrj const int numeric_limits<unsigned __INT_N_TYPE>::digits10; \ 419*38fd1498Szrj const int numeric_limits<unsigned __INT_N_TYPE>::max_digits10; \ 420*38fd1498Szrj const bool numeric_limits<unsigned __INT_N_TYPE>::is_signed; \ 421*38fd1498Szrj const bool numeric_limits<unsigned __INT_N_TYPE>::is_integer; \ 422*38fd1498Szrj const bool numeric_limits<unsigned __INT_N_TYPE>::is_exact; \ 423*38fd1498Szrj const int numeric_limits<unsigned __INT_N_TYPE>::radix; \ 424*38fd1498Szrj const int numeric_limits<unsigned __INT_N_TYPE>::min_exponent; \ 425*38fd1498Szrj const int numeric_limits<unsigned __INT_N_TYPE>::min_exponent10; \ 426*38fd1498Szrj const int numeric_limits<unsigned __INT_N_TYPE>::max_exponent; \ 427*38fd1498Szrj const int numeric_limits<unsigned __INT_N_TYPE>::max_exponent10; \ 428*38fd1498Szrj const bool numeric_limits<unsigned __INT_N_TYPE>::has_infinity; \ 429*38fd1498Szrj const bool numeric_limits<unsigned __INT_N_TYPE>::has_quiet_NaN; \ 430*38fd1498Szrj const bool numeric_limits<unsigned __INT_N_TYPE>::has_signaling_NaN; \ 431*38fd1498Szrj const float_denorm_style numeric_limits<unsigned __INT_N_TYPE>::has_denorm; \ 432*38fd1498Szrj const bool numeric_limits<unsigned __INT_N_TYPE>::has_denorm_loss; \ 433*38fd1498Szrj const bool numeric_limits<unsigned __INT_N_TYPE>::is_iec559; \ 434*38fd1498Szrj const bool numeric_limits<unsigned __INT_N_TYPE>::is_bounded; \ 435*38fd1498Szrj const bool numeric_limits<unsigned __INT_N_TYPE>::is_modulo; \ 436*38fd1498Szrj const bool numeric_limits<unsigned __INT_N_TYPE>::traps; \ 437*38fd1498Szrj const bool numeric_limits<unsigned __INT_N_TYPE>::tinyness_before; \ 438*38fd1498Szrj const float_round_style numeric_limits<unsigned __INT_N_TYPE>::round_style; 439*38fd1498Szrj 440*38fd1498Szrj #ifdef __GLIBCXX_TYPE_INT_N_0 441*38fd1498Szrj INT_N (__GLIBCXX_TYPE_INT_N_0) 442*38fd1498Szrj #endif 443*38fd1498Szrj #ifdef __GLIBCXX_TYPE_INT_N_1 444*38fd1498Szrj INT_N (__GLIBCXX_TYPE_INT_N_1) 445*38fd1498Szrj #endif 446*38fd1498Szrj #ifdef __GLIBCXX_TYPE_INT_N_2 447*38fd1498Szrj INT_N (__GLIBCXX_TYPE_INT_N_2) 448*38fd1498Szrj #endif 449*38fd1498Szrj #ifdef __GLIBCXX_TYPE_INT_N_3 450*38fd1498Szrj INT_N (__GLIBCXX_TYPE_INT_N_3) 451*38fd1498Szrj #endif 452*38fd1498Szrj 453*38fd1498Szrj // float 454*38fd1498Szrj const bool numeric_limits<float>::is_specialized; 455*38fd1498Szrj const int numeric_limits<float>::digits; 456*38fd1498Szrj const int numeric_limits<float>::digits10; 457*38fd1498Szrj const int numeric_limits<float>::max_digits10; 458*38fd1498Szrj const bool numeric_limits<float>::is_signed; 459*38fd1498Szrj const bool numeric_limits<float>::is_integer; 460*38fd1498Szrj const bool numeric_limits<float>::is_exact; 461*38fd1498Szrj const int numeric_limits<float>::radix; 462*38fd1498Szrj const int numeric_limits<float>::min_exponent; 463*38fd1498Szrj const int numeric_limits<float>::min_exponent10; 464*38fd1498Szrj const int numeric_limits<float>::max_exponent; 465*38fd1498Szrj const int numeric_limits<float>::max_exponent10; 466*38fd1498Szrj const bool numeric_limits<float>::has_infinity; 467*38fd1498Szrj const bool numeric_limits<float>::has_quiet_NaN; 468*38fd1498Szrj const bool numeric_limits<float>::has_signaling_NaN; 469*38fd1498Szrj const float_denorm_style numeric_limits<float>::has_denorm; 470*38fd1498Szrj const bool numeric_limits<float>::has_denorm_loss; 471*38fd1498Szrj const bool numeric_limits<float>::is_iec559; 472*38fd1498Szrj const bool numeric_limits<float>::is_bounded; 473*38fd1498Szrj const bool numeric_limits<float>::is_modulo; 474*38fd1498Szrj const bool numeric_limits<float>::traps; 475*38fd1498Szrj const bool numeric_limits<float>::tinyness_before; 476*38fd1498Szrj const float_round_style numeric_limits<float>::round_style; 477*38fd1498Szrj 478*38fd1498Szrj // double 479*38fd1498Szrj const bool numeric_limits<double>::is_specialized; 480*38fd1498Szrj const int numeric_limits<double>::digits; 481*38fd1498Szrj const int numeric_limits<double>::digits10; 482*38fd1498Szrj const int numeric_limits<double>::max_digits10; 483*38fd1498Szrj const bool numeric_limits<double>::is_signed; 484*38fd1498Szrj const bool numeric_limits<double>::is_integer; 485*38fd1498Szrj const bool numeric_limits<double>::is_exact; 486*38fd1498Szrj const int numeric_limits<double>::radix; 487*38fd1498Szrj const int numeric_limits<double>::min_exponent; 488*38fd1498Szrj const int numeric_limits<double>::min_exponent10; 489*38fd1498Szrj const int numeric_limits<double>::max_exponent; 490*38fd1498Szrj const int numeric_limits<double>::max_exponent10; 491*38fd1498Szrj const bool numeric_limits<double>::has_infinity; 492*38fd1498Szrj const bool numeric_limits<double>::has_quiet_NaN; 493*38fd1498Szrj const bool numeric_limits<double>::has_signaling_NaN; 494*38fd1498Szrj const float_denorm_style numeric_limits<double>::has_denorm; 495*38fd1498Szrj const bool numeric_limits<double>::has_denorm_loss; 496*38fd1498Szrj const bool numeric_limits<double>::is_iec559; 497*38fd1498Szrj const bool numeric_limits<double>::is_bounded; 498*38fd1498Szrj const bool numeric_limits<double>::is_modulo; 499*38fd1498Szrj const bool numeric_limits<double>::traps; 500*38fd1498Szrj const bool numeric_limits<double>::tinyness_before; 501*38fd1498Szrj const float_round_style numeric_limits<double>::round_style; 502*38fd1498Szrj 503*38fd1498Szrj // long double 504*38fd1498Szrj const bool numeric_limits<long double>::is_specialized; 505*38fd1498Szrj const int numeric_limits<long double>::digits; 506*38fd1498Szrj const int numeric_limits<long double>::digits10; 507*38fd1498Szrj const int numeric_limits<long double>::max_digits10; 508*38fd1498Szrj const bool numeric_limits<long double>::is_signed; 509*38fd1498Szrj const bool numeric_limits<long double>::is_integer; 510*38fd1498Szrj const bool numeric_limits<long double>::is_exact; 511*38fd1498Szrj const int numeric_limits<long double>::radix; 512*38fd1498Szrj const int numeric_limits<long double>::min_exponent; 513*38fd1498Szrj const int numeric_limits<long double>::min_exponent10; 514*38fd1498Szrj const int numeric_limits<long double>::max_exponent; 515*38fd1498Szrj const int numeric_limits<long double>::max_exponent10; 516*38fd1498Szrj const bool numeric_limits<long double>::has_infinity; 517*38fd1498Szrj const bool numeric_limits<long double>::has_quiet_NaN; 518*38fd1498Szrj const bool numeric_limits<long double>::has_signaling_NaN; 519*38fd1498Szrj const float_denorm_style numeric_limits<long double>::has_denorm; 520*38fd1498Szrj const bool numeric_limits<long double>::has_denorm_loss; 521*38fd1498Szrj const bool numeric_limits<long double>::is_iec559; 522*38fd1498Szrj const bool numeric_limits<long double>::is_bounded; 523*38fd1498Szrj const bool numeric_limits<long double>::is_modulo; 524*38fd1498Szrj const bool numeric_limits<long double>::traps; 525*38fd1498Szrj const bool numeric_limits<long double>::tinyness_before; 526*38fd1498Szrj const float_round_style numeric_limits<long double>::round_style; 527*38fd1498Szrj 528*38fd1498Szrj // char16_t 529*38fd1498Szrj const bool numeric_limits<char16_t>::is_specialized; 530*38fd1498Szrj const int numeric_limits<char16_t>::digits; 531*38fd1498Szrj const int numeric_limits<char16_t>::digits10; 532*38fd1498Szrj const int numeric_limits<char16_t>::max_digits10; 533*38fd1498Szrj const bool numeric_limits<char16_t>::is_signed; 534*38fd1498Szrj const bool numeric_limits<char16_t>::is_integer; 535*38fd1498Szrj const bool numeric_limits<char16_t>::is_exact; 536*38fd1498Szrj const int numeric_limits<char16_t>::radix; 537*38fd1498Szrj const int numeric_limits<char16_t>::min_exponent; 538*38fd1498Szrj const int numeric_limits<char16_t>::min_exponent10; 539*38fd1498Szrj const int numeric_limits<char16_t>::max_exponent; 540*38fd1498Szrj const int numeric_limits<char16_t>::max_exponent10; 541*38fd1498Szrj const bool numeric_limits<char16_t>::has_infinity; 542*38fd1498Szrj const bool numeric_limits<char16_t>::has_quiet_NaN; 543*38fd1498Szrj const bool numeric_limits<char16_t>::has_signaling_NaN; 544*38fd1498Szrj const float_denorm_style numeric_limits<char16_t>::has_denorm; 545*38fd1498Szrj const bool numeric_limits<char16_t>::has_denorm_loss; 546*38fd1498Szrj const bool numeric_limits<char16_t>::is_iec559; 547*38fd1498Szrj const bool numeric_limits<char16_t>::is_bounded; 548*38fd1498Szrj const bool numeric_limits<char16_t>::is_modulo; 549*38fd1498Szrj const bool numeric_limits<char16_t>::traps; 550*38fd1498Szrj const bool numeric_limits<char16_t>::tinyness_before; 551*38fd1498Szrj const float_round_style numeric_limits<char16_t>::round_style; 552*38fd1498Szrj 553*38fd1498Szrj // char32_t 554*38fd1498Szrj const bool numeric_limits<char32_t>::is_specialized; 555*38fd1498Szrj const int numeric_limits<char32_t>::digits; 556*38fd1498Szrj const int numeric_limits<char32_t>::digits10; 557*38fd1498Szrj const int numeric_limits<char32_t>::max_digits10; 558*38fd1498Szrj const bool numeric_limits<char32_t>::is_signed; 559*38fd1498Szrj const bool numeric_limits<char32_t>::is_integer; 560*38fd1498Szrj const bool numeric_limits<char32_t>::is_exact; 561*38fd1498Szrj const int numeric_limits<char32_t>::radix; 562*38fd1498Szrj const int numeric_limits<char32_t>::min_exponent; 563*38fd1498Szrj const int numeric_limits<char32_t>::min_exponent10; 564*38fd1498Szrj const int numeric_limits<char32_t>::max_exponent; 565*38fd1498Szrj const int numeric_limits<char32_t>::max_exponent10; 566*38fd1498Szrj const bool numeric_limits<char32_t>::has_infinity; 567*38fd1498Szrj const bool numeric_limits<char32_t>::has_quiet_NaN; 568*38fd1498Szrj const bool numeric_limits<char32_t>::has_signaling_NaN; 569*38fd1498Szrj const float_denorm_style numeric_limits<char32_t>::has_denorm; 570*38fd1498Szrj const bool numeric_limits<char32_t>::has_denorm_loss; 571*38fd1498Szrj const bool numeric_limits<char32_t>::is_iec559; 572*38fd1498Szrj const bool numeric_limits<char32_t>::is_bounded; 573*38fd1498Szrj const bool numeric_limits<char32_t>::is_modulo; 574*38fd1498Szrj const bool numeric_limits<char32_t>::traps; 575*38fd1498Szrj const bool numeric_limits<char32_t>::tinyness_before; 576*38fd1498Szrj const float_round_style numeric_limits<char32_t>::round_style; 577*38fd1498Szrj 578*38fd1498Szrj #undef const 579*38fd1498Szrj 580*38fd1498Szrj _GLIBCXX_END_NAMESPACE_VERSION 581*38fd1498Szrj } // namespace 582*38fd1498Szrj 583*38fd1498Szrj // XXX GLIBCXX_ABI Deprecated 584*38fd1498Szrj #ifdef _GLIBCXX_LONG_DOUBLE_COMPAT 585*38fd1498Szrj 586*38fd1498Szrj #define _GLIBCXX_NUM_LIM_COMPAT(type, member, len) \ 587*38fd1498Szrj extern "C" type _ZNSt14numeric_limitsIeE ## len ## member ## E \ 588*38fd1498Szrj __attribute__ ((alias ("_ZNSt14numeric_limitsIdE" #len #member "E"))) 589*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (bool, is_specialized, 14); 590*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (int, digits, 6); 591*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (int, digits10, 8); 592*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (bool, is_signed, 9); 593*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (bool, is_integer, 10); 594*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (bool, is_exact, 8); 595*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (int, radix, 5); 596*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (int, min_exponent, 12); 597*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (int, min_exponent10, 14); 598*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (int, max_exponent, 12); 599*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (int, max_exponent10, 14); 600*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (bool, has_infinity, 12); 601*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (bool, has_quiet_NaN, 13); 602*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (bool, has_signaling_NaN, 17); 603*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (std::float_denorm_style, has_denorm, 10); 604*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (bool, has_denorm_loss, 15); 605*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (bool, is_iec559, 9); 606*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (bool, is_bounded, 10); 607*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (bool, is_modulo, 9); 608*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (bool, traps, 5); 609*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (bool, tinyness_before, 15); 610*38fd1498Szrj _GLIBCXX_NUM_LIM_COMPAT (std::float_round_style, round_style, 11); 611*38fd1498Szrj 612*38fd1498Szrj #endif // _GLIBCXX_LONG_DOUBLE_COMPAT 613