limits.cc revision 296373
1252190Srpaulo// Static data members of -*- C++ -*- numeric_limits classes 2252190Srpaulo 3252190Srpaulo// Copyright (C) 1999, 2001, 2002, 2005, 2006 Free Software Foundation, Inc. 4252190Srpaulo// 5252190Srpaulo// This file is part of the GNU ISO C++ Library. This library is free 6252190Srpaulo// software; you can redistribute it and/or modify it under the 7252190Srpaulo// terms of the GNU General Public License as published by the 8252190Srpaulo// Free Software Foundation; either version 2, or (at your option) 9252190Srpaulo// any later version. 10252190Srpaulo 11252190Srpaulo// This library is distributed in the hope that it will be useful, 12252190Srpaulo// but WITHOUT ANY WARRANTY; without even the implied warranty of 13252190Srpaulo// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14252190Srpaulo// GNU General Public License for more details. 15252190Srpaulo 16252190Srpaulo// You should have received a copy of the GNU General Public License along 17252190Srpaulo// with this library; see the file COPYING. If not, write to the Free 18252190Srpaulo// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 19252190Srpaulo// USA. 20252190Srpaulo 21252190Srpaulo// As a special exception, you may use this file as part of a free software 22252190Srpaulo// library without restriction. Specifically, if other files instantiate 23252190Srpaulo// templates or use macros or inline functions from this file, or you compile 24252190Srpaulo// this file and link it with other files to produce an executable, this 25252190Srpaulo// file does not by itself cause the resulting executable to be covered by 26252190Srpaulo// the GNU General Public License. This exception does not however 27252190Srpaulo// invalidate any other reasons why the executable file might be covered by 28252190Srpaulo// the GNU General Public License. 29252190Srpaulo 30252190Srpaulo// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@cmla.ens-cachan.fr> 31252190Srpaulo 32252190Srpaulo// 33252190Srpaulo// ISO C++ 14882:1998 34252190Srpaulo// 18.2.1 35252190Srpaulo// 36252190Srpaulo 37252190Srpaulo#include <limits> 38252190Srpaulo 39252190Srpaulo_GLIBCXX_BEGIN_NAMESPACE(std) 40252190Srpaulo 41252190Srpaulo const bool __numeric_limits_base::is_specialized; 42252190Srpaulo const int __numeric_limits_base::digits; 43252190Srpaulo const int __numeric_limits_base::digits10; 44252190Srpaulo const bool __numeric_limits_base::is_signed; 45252190Srpaulo const bool __numeric_limits_base::is_integer; 46252190Srpaulo const bool __numeric_limits_base::is_exact; 47252190Srpaulo const int __numeric_limits_base::radix; 48252190Srpaulo const int __numeric_limits_base::min_exponent; 49252190Srpaulo const int __numeric_limits_base::min_exponent10; 50252190Srpaulo const int __numeric_limits_base::max_exponent; 51252190Srpaulo const int __numeric_limits_base::max_exponent10; 52252190Srpaulo const bool __numeric_limits_base::has_infinity; 53252190Srpaulo const bool __numeric_limits_base::has_quiet_NaN; 54252190Srpaulo const bool __numeric_limits_base::has_signaling_NaN; 55252190Srpaulo const float_denorm_style __numeric_limits_base::has_denorm; 56252190Srpaulo const bool __numeric_limits_base::has_denorm_loss; 57252190Srpaulo const bool __numeric_limits_base::is_iec559; 58252190Srpaulo const bool __numeric_limits_base::is_bounded; 59252190Srpaulo const bool __numeric_limits_base::is_modulo; 60252190Srpaulo const bool __numeric_limits_base::traps; 61252190Srpaulo const bool __numeric_limits_base::tinyness_before; 62252190Srpaulo const float_round_style __numeric_limits_base::round_style; 63252190Srpaulo 64252190Srpaulo // bool 65252190Srpaulo const bool numeric_limits<bool>::is_specialized; 66252190Srpaulo const int numeric_limits<bool>::digits; 67252190Srpaulo const int numeric_limits<bool>::digits10; 68252190Srpaulo const bool numeric_limits<bool>::is_signed; 69252190Srpaulo const bool numeric_limits<bool>::is_integer; 70252190Srpaulo const bool numeric_limits<bool>::is_exact; 71252190Srpaulo const int numeric_limits<bool>::radix; 72252190Srpaulo const int numeric_limits<bool>::min_exponent; 73252190Srpaulo const int numeric_limits<bool>::min_exponent10; 74252190Srpaulo const int numeric_limits<bool>::max_exponent; 75252190Srpaulo const int numeric_limits<bool>::max_exponent10; 76252190Srpaulo const bool numeric_limits<bool>::has_infinity; 77252190Srpaulo const bool numeric_limits<bool>::has_quiet_NaN; 78252190Srpaulo const bool numeric_limits<bool>::has_signaling_NaN; 79252190Srpaulo const float_denorm_style numeric_limits<bool>::has_denorm; 80252190Srpaulo const bool numeric_limits<bool>::has_denorm_loss; 81252190Srpaulo const bool numeric_limits<bool>::is_iec559; 82252190Srpaulo const bool numeric_limits<bool>::is_bounded; 83252190Srpaulo const bool numeric_limits<bool>::is_modulo; 84252190Srpaulo const bool numeric_limits<bool>::traps; 85252190Srpaulo const bool numeric_limits<bool>::tinyness_before; 86252190Srpaulo const float_round_style numeric_limits<bool>::round_style; 87252190Srpaulo 88252190Srpaulo // char 89252190Srpaulo const bool numeric_limits<char>::is_specialized; 90252190Srpaulo const int numeric_limits<char>::digits; 91252190Srpaulo const int numeric_limits<char>::digits10; 92252190Srpaulo const bool numeric_limits<char>::is_signed; 93252190Srpaulo const bool numeric_limits<char>::is_integer; 94252190Srpaulo const bool numeric_limits<char>::is_exact; 95252190Srpaulo const int numeric_limits<char>::radix; 96252190Srpaulo const int numeric_limits<char>::min_exponent; 97252190Srpaulo const int numeric_limits<char>::min_exponent10; 98252190Srpaulo const int numeric_limits<char>::max_exponent; 99252190Srpaulo const int numeric_limits<char>::max_exponent10; 100252190Srpaulo const bool numeric_limits<char>::has_infinity; 101252190Srpaulo const bool numeric_limits<char>::has_quiet_NaN; 102252190Srpaulo const bool numeric_limits<char>::has_signaling_NaN; 103252190Srpaulo const float_denorm_style numeric_limits<char>::has_denorm; 104252190Srpaulo const bool numeric_limits<char>::has_denorm_loss; 105252190Srpaulo const bool numeric_limits<char>::is_iec559; 106252190Srpaulo const bool numeric_limits<char>::is_bounded; 107252190Srpaulo const bool numeric_limits<char>::is_modulo; 108252190Srpaulo const bool numeric_limits<char>::traps; 109252190Srpaulo const bool numeric_limits<char>::tinyness_before; 110252190Srpaulo const float_round_style numeric_limits<char>::round_style; 111252190Srpaulo 112252190Srpaulo // signed char 113252190Srpaulo const bool numeric_limits<signed char>::is_specialized; 114252190Srpaulo const int numeric_limits<signed char>::digits; 115252190Srpaulo const int numeric_limits<signed char>::digits10; 116252190Srpaulo const bool numeric_limits<signed char>::is_signed; 117252190Srpaulo const bool numeric_limits<signed char>::is_integer; 118252190Srpaulo const bool numeric_limits<signed char>::is_exact; 119252190Srpaulo const int numeric_limits<signed char>::radix; 120252190Srpaulo const int numeric_limits<signed char>::min_exponent; 121252190Srpaulo const int numeric_limits<signed char>::min_exponent10; 122252190Srpaulo const int numeric_limits<signed char>::max_exponent; 123252190Srpaulo const int numeric_limits<signed char>::max_exponent10; 124252190Srpaulo const bool numeric_limits<signed char>::has_infinity; 125252190Srpaulo const bool numeric_limits<signed char>::has_quiet_NaN; 126252190Srpaulo const bool numeric_limits<signed char>::has_signaling_NaN; 127252190Srpaulo const float_denorm_style numeric_limits<signed char>::has_denorm; 128252190Srpaulo const bool numeric_limits<signed char>::has_denorm_loss; 129252190Srpaulo const bool numeric_limits<signed char>::is_iec559; 130252190Srpaulo const bool numeric_limits<signed char>::is_bounded; 131252190Srpaulo const bool numeric_limits<signed char>::is_modulo; 132252190Srpaulo const bool numeric_limits<signed char>::traps; 133252190Srpaulo const bool numeric_limits<signed char>::tinyness_before; 134252190Srpaulo const float_round_style numeric_limits<signed char>::round_style; 135252190Srpaulo 136252190Srpaulo // unsigned char 137252190Srpaulo const bool numeric_limits<unsigned char>::is_specialized; 138252190Srpaulo const int numeric_limits<unsigned char>::digits; 139252190Srpaulo const int numeric_limits<unsigned char>::digits10; 140252190Srpaulo const bool numeric_limits<unsigned char>::is_signed; 141252190Srpaulo const bool numeric_limits<unsigned char>::is_integer; 142252190Srpaulo const bool numeric_limits<unsigned char>::is_exact; 143252190Srpaulo const int numeric_limits<unsigned char>::radix; 144252190Srpaulo const int numeric_limits<unsigned char>::min_exponent; 145252190Srpaulo const int numeric_limits<unsigned char>::min_exponent10; 146252190Srpaulo const int numeric_limits<unsigned char>::max_exponent; 147252190Srpaulo const int numeric_limits<unsigned char>::max_exponent10; 148252190Srpaulo const bool numeric_limits<unsigned char>::has_infinity; 149252190Srpaulo const bool numeric_limits<unsigned char>::has_quiet_NaN; 150252190Srpaulo const bool numeric_limits<unsigned char>::has_signaling_NaN; 151252190Srpaulo const float_denorm_style numeric_limits<unsigned char>::has_denorm; 152252190Srpaulo const bool numeric_limits<unsigned char>::has_denorm_loss; 153252190Srpaulo const bool numeric_limits<unsigned char>::is_iec559; 154252190Srpaulo const bool numeric_limits<unsigned char>::is_bounded; 155252190Srpaulo const bool numeric_limits<unsigned char>::is_modulo; 156252190Srpaulo const bool numeric_limits<unsigned char>::traps; 157252190Srpaulo const bool numeric_limits<unsigned char>::tinyness_before; 158252190Srpaulo const float_round_style numeric_limits<unsigned char>::round_style; 159252190Srpaulo 160252190Srpaulo // wchar_t 161252190Srpaulo // This used to be problematic... 162252190Srpaulo#ifdef _GLIBCXX_USE_WCHAR_T 163252190Srpaulo const bool numeric_limits<wchar_t>::is_specialized; 164252190Srpaulo const int numeric_limits<wchar_t>::digits; 165252190Srpaulo const int numeric_limits<wchar_t>::digits10; 166252190Srpaulo const bool numeric_limits<wchar_t>::is_signed; 167252190Srpaulo const bool numeric_limits<wchar_t>::is_integer; 168252190Srpaulo const bool numeric_limits<wchar_t>::is_exact; 169252190Srpaulo const int numeric_limits<wchar_t>::radix; 170252190Srpaulo const int numeric_limits<wchar_t>::min_exponent; 171252190Srpaulo const int numeric_limits<wchar_t>::min_exponent10; 172252190Srpaulo const int numeric_limits<wchar_t>::max_exponent; 173252190Srpaulo const int numeric_limits<wchar_t>::max_exponent10; 174252190Srpaulo const bool numeric_limits<wchar_t>::has_infinity; 175252190Srpaulo const bool numeric_limits<wchar_t>::has_quiet_NaN; 176252190Srpaulo const bool numeric_limits<wchar_t>::has_signaling_NaN; 177252190Srpaulo const float_denorm_style numeric_limits<wchar_t>::has_denorm; 178252190Srpaulo const bool numeric_limits<wchar_t>::has_denorm_loss; 179252190Srpaulo const bool numeric_limits<wchar_t>::is_iec559; 180252190Srpaulo const bool numeric_limits<wchar_t>::is_bounded; 181252190Srpaulo const bool numeric_limits<wchar_t>::is_modulo; 182252190Srpaulo const bool numeric_limits<wchar_t>::traps; 183252190Srpaulo const bool numeric_limits<wchar_t>::tinyness_before; 184252190Srpaulo const float_round_style numeric_limits<wchar_t>::round_style; 185252190Srpaulo#endif // _GLIBCXX_USE_WCHAR_T 186252190Srpaulo 187252190Srpaulo // short 188252190Srpaulo const bool numeric_limits<short>::is_specialized; 189252190Srpaulo const int numeric_limits<short>::digits; 190252190Srpaulo const int numeric_limits<short>::digits10; 191252190Srpaulo const bool numeric_limits<short>::is_signed; 192252190Srpaulo const bool numeric_limits<short>::is_integer; 193252190Srpaulo const bool numeric_limits<short>::is_exact; 194252190Srpaulo const int numeric_limits<short>::radix; 195252190Srpaulo const int numeric_limits<short>::min_exponent; 196252190Srpaulo const int numeric_limits<short>::min_exponent10; 197252190Srpaulo const int numeric_limits<short>::max_exponent; 198252190Srpaulo const int numeric_limits<short>::max_exponent10; 199252190Srpaulo const bool numeric_limits<short>::has_infinity; 200252190Srpaulo const bool numeric_limits<short>::has_quiet_NaN; 201252190Srpaulo const bool numeric_limits<short>::has_signaling_NaN; 202 const float_denorm_style numeric_limits<short>::has_denorm; 203 const bool numeric_limits<short>::has_denorm_loss; 204 const bool numeric_limits<short>::is_iec559; 205 const bool numeric_limits<short>::is_bounded; 206 const bool numeric_limits<short>::is_modulo; 207 const bool numeric_limits<short>::traps; 208 const bool numeric_limits<short>::tinyness_before; 209 const float_round_style numeric_limits<short>::round_style; 210 211 // unsigned short 212 const bool numeric_limits<unsigned short>::is_specialized; 213 const int numeric_limits<unsigned short>::digits; 214 const int numeric_limits<unsigned short>::digits10; 215 const bool numeric_limits<unsigned short>::is_signed; 216 const bool numeric_limits<unsigned short>::is_integer; 217 const bool numeric_limits<unsigned short>::is_exact; 218 const int numeric_limits<unsigned short>::radix; 219 const int numeric_limits<unsigned short>::min_exponent; 220 const int numeric_limits<unsigned short>::min_exponent10; 221 const int numeric_limits<unsigned short>::max_exponent; 222 const int numeric_limits<unsigned short>::max_exponent10; 223 const bool numeric_limits<unsigned short>::has_infinity; 224 const bool numeric_limits<unsigned short>::has_quiet_NaN; 225 const bool numeric_limits<unsigned short>::has_signaling_NaN; 226 const float_denorm_style numeric_limits<unsigned short>::has_denorm; 227 const bool numeric_limits<unsigned short>::has_denorm_loss; 228 const bool numeric_limits<unsigned short>::is_iec559; 229 const bool numeric_limits<unsigned short>::is_bounded; 230 const bool numeric_limits<unsigned short>::is_modulo; 231 const bool numeric_limits<unsigned short>::traps; 232 const bool numeric_limits<unsigned short>::tinyness_before; 233 const float_round_style numeric_limits<unsigned short>::round_style; 234 235 // int 236 const bool numeric_limits<int>::is_specialized; 237 const int numeric_limits<int>::digits; 238 const int numeric_limits<int>::digits10; 239 const bool numeric_limits<int>::is_signed; 240 const bool numeric_limits<int>::is_integer; 241 const bool numeric_limits<int>::is_exact; 242 const int numeric_limits<int>::radix; 243 const int numeric_limits<int>::min_exponent; 244 const int numeric_limits<int>::min_exponent10; 245 const int numeric_limits<int>::max_exponent; 246 const int numeric_limits<int>::max_exponent10; 247 const bool numeric_limits<int>::has_infinity; 248 const bool numeric_limits<int>::has_quiet_NaN; 249 const bool numeric_limits<int>::has_signaling_NaN; 250 const float_denorm_style numeric_limits<int>::has_denorm; 251 const bool numeric_limits<int>::has_denorm_loss; 252 const bool numeric_limits<int>::is_iec559; 253 const bool numeric_limits<int>::is_bounded; 254 const bool numeric_limits<int>::is_modulo; 255 const bool numeric_limits<int>::traps; 256 const bool numeric_limits<int>::tinyness_before; 257 const float_round_style numeric_limits<int>::round_style; 258 259 // unsigned int 260 const bool numeric_limits<unsigned int>::is_specialized; 261 const int numeric_limits<unsigned int>::digits; 262 const int numeric_limits<unsigned int>::digits10; 263 const bool numeric_limits<unsigned int>::is_signed; 264 const bool numeric_limits<unsigned int>::is_integer; 265 const bool numeric_limits<unsigned int>::is_exact; 266 const int numeric_limits<unsigned int>::radix; 267 const int numeric_limits<unsigned int>::min_exponent; 268 const int numeric_limits<unsigned int>::min_exponent10; 269 const int numeric_limits<unsigned int>::max_exponent; 270 const int numeric_limits<unsigned int>::max_exponent10; 271 const bool numeric_limits<unsigned int>::has_infinity; 272 const bool numeric_limits<unsigned int>::has_quiet_NaN; 273 const bool numeric_limits<unsigned int>::has_signaling_NaN; 274 const float_denorm_style numeric_limits<unsigned int>::has_denorm; 275 const bool numeric_limits<unsigned int>::has_denorm_loss; 276 const bool numeric_limits<unsigned int>::is_iec559; 277 const bool numeric_limits<unsigned int>::is_bounded; 278 const bool numeric_limits<unsigned int>::is_modulo; 279 const bool numeric_limits<unsigned int>::traps; 280 const bool numeric_limits<unsigned int>::tinyness_before; 281 const float_round_style numeric_limits<unsigned int>::round_style; 282 283 // long 284 const bool numeric_limits<long>::is_specialized; 285 const int numeric_limits<long>::digits; 286 const int numeric_limits<long>::digits10; 287 const bool numeric_limits<long>::is_signed; 288 const bool numeric_limits<long>::is_integer; 289 const bool numeric_limits<long>::is_exact; 290 const int numeric_limits<long>::radix; 291 const int numeric_limits<long>::min_exponent; 292 const int numeric_limits<long>::min_exponent10; 293 const int numeric_limits<long>::max_exponent; 294 const int numeric_limits<long>::max_exponent10; 295 const bool numeric_limits<long>::has_infinity; 296 const bool numeric_limits<long>::has_quiet_NaN; 297 const bool numeric_limits<long>::has_signaling_NaN; 298 const float_denorm_style numeric_limits<long>::has_denorm; 299 const bool numeric_limits<long>::has_denorm_loss; 300 const bool numeric_limits<long>::is_iec559; 301 const bool numeric_limits<long>::is_bounded; 302 const bool numeric_limits<long>::is_modulo; 303 const bool numeric_limits<long>::traps; 304 const bool numeric_limits<long>::tinyness_before; 305 const float_round_style numeric_limits<long>::round_style; 306 307 // unsigned long 308 const bool numeric_limits<unsigned long>::is_specialized; 309 const int numeric_limits<unsigned long>::digits; 310 const int numeric_limits<unsigned long>::digits10; 311 const bool numeric_limits<unsigned long>::is_signed; 312 const bool numeric_limits<unsigned long>::is_integer; 313 const bool numeric_limits<unsigned long>::is_exact; 314 const int numeric_limits<unsigned long>::radix; 315 const int numeric_limits<unsigned long>::min_exponent; 316 const int numeric_limits<unsigned long>::min_exponent10; 317 const int numeric_limits<unsigned long>::max_exponent; 318 const int numeric_limits<unsigned long>::max_exponent10; 319 const bool numeric_limits<unsigned long>::has_infinity; 320 const bool numeric_limits<unsigned long>::has_quiet_NaN; 321 const bool numeric_limits<unsigned long>::has_signaling_NaN; 322 const float_denorm_style numeric_limits<unsigned long>::has_denorm; 323 const bool numeric_limits<unsigned long>::has_denorm_loss; 324 const bool numeric_limits<unsigned long>::is_iec559; 325 const bool numeric_limits<unsigned long>::is_bounded; 326 const bool numeric_limits<unsigned long>::is_modulo; 327 const bool numeric_limits<unsigned long>::traps; 328 const bool numeric_limits<unsigned long>::tinyness_before; 329 const float_round_style numeric_limits<unsigned long>::round_style; 330 331 // NOTA BENE: long long is an extension 332 const bool numeric_limits<long long>::is_specialized; 333 const int numeric_limits<long long>::digits; 334 const int numeric_limits<long long>::digits10; 335 const bool numeric_limits<long long>::is_signed; 336 const bool numeric_limits<long long>::is_integer; 337 const bool numeric_limits<long long>::is_exact; 338 const int numeric_limits<long long>::radix; 339 const int numeric_limits<long long>::min_exponent; 340 const int numeric_limits<long long>::min_exponent10; 341 const int numeric_limits<long long>::max_exponent; 342 const int numeric_limits<long long>::max_exponent10; 343 const bool numeric_limits<long long>::has_infinity; 344 const bool numeric_limits<long long>::has_quiet_NaN; 345 const bool numeric_limits<long long>::has_signaling_NaN; 346 const float_denorm_style numeric_limits<long long>::has_denorm; 347 const bool numeric_limits<long long>::has_denorm_loss; 348 const bool numeric_limits<long long>::is_iec559; 349 const bool numeric_limits<long long>::is_bounded; 350 const bool numeric_limits<long long>::is_modulo; 351 const bool numeric_limits<long long>::traps; 352 const bool numeric_limits<long long>::tinyness_before; 353 const float_round_style numeric_limits<long long>::round_style; 354 355 const bool numeric_limits<unsigned long long>::is_specialized; 356 const int numeric_limits<unsigned long long>::digits; 357 const int numeric_limits<unsigned long long>::digits10; 358 const bool numeric_limits<unsigned long long>::is_signed; 359 const bool numeric_limits<unsigned long long>::is_integer; 360 const bool numeric_limits<unsigned long long>::is_exact; 361 const int numeric_limits<unsigned long long>::radix; 362 const int numeric_limits<unsigned long long>::min_exponent; 363 const int numeric_limits<unsigned long long>::min_exponent10; 364 const int numeric_limits<unsigned long long>::max_exponent; 365 const int numeric_limits<unsigned long long>::max_exponent10; 366 const bool numeric_limits<unsigned long long>::has_infinity; 367 const bool numeric_limits<unsigned long long>::has_quiet_NaN; 368 const bool numeric_limits<unsigned long long>::has_signaling_NaN; 369 const float_denorm_style numeric_limits<unsigned long long>::has_denorm; 370 const bool numeric_limits<unsigned long long>::has_denorm_loss; 371 const bool numeric_limits<unsigned long long>::is_iec559; 372 const bool numeric_limits<unsigned long long>::is_bounded; 373 const bool numeric_limits<unsigned long long>::is_modulo; 374 const bool numeric_limits<unsigned long long>::traps; 375 const bool numeric_limits<unsigned long long>::tinyness_before; 376 const float_round_style numeric_limits<unsigned long long>::round_style; 377 378 // float 379 const bool numeric_limits<float>::is_specialized; 380 const int numeric_limits<float>::digits; 381 const int numeric_limits<float>::digits10; 382 const bool numeric_limits<float>::is_signed; 383 const bool numeric_limits<float>::is_integer; 384 const bool numeric_limits<float>::is_exact; 385 const int numeric_limits<float>::radix; 386 const int numeric_limits<float>::min_exponent; 387 const int numeric_limits<float>::min_exponent10; 388 const int numeric_limits<float>::max_exponent; 389 const int numeric_limits<float>::max_exponent10; 390 const bool numeric_limits<float>::has_infinity; 391 const bool numeric_limits<float>::has_quiet_NaN; 392 const bool numeric_limits<float>::has_signaling_NaN; 393 const float_denorm_style numeric_limits<float>::has_denorm; 394 const bool numeric_limits<float>::has_denorm_loss; 395 const bool numeric_limits<float>::is_iec559; 396 const bool numeric_limits<float>::is_bounded; 397 const bool numeric_limits<float>::is_modulo; 398 const bool numeric_limits<float>::traps; 399 const bool numeric_limits<float>::tinyness_before; 400 const float_round_style numeric_limits<float>::round_style; 401 402 // double 403 const bool numeric_limits<double>::is_specialized; 404 const int numeric_limits<double>::digits; 405 const int numeric_limits<double>::digits10; 406 const bool numeric_limits<double>::is_signed; 407 const bool numeric_limits<double>::is_integer; 408 const bool numeric_limits<double>::is_exact; 409 const int numeric_limits<double>::radix; 410 const int numeric_limits<double>::min_exponent; 411 const int numeric_limits<double>::min_exponent10; 412 const int numeric_limits<double>::max_exponent; 413 const int numeric_limits<double>::max_exponent10; 414 const bool numeric_limits<double>::has_infinity; 415 const bool numeric_limits<double>::has_quiet_NaN; 416 const bool numeric_limits<double>::has_signaling_NaN; 417 const float_denorm_style numeric_limits<double>::has_denorm; 418 const bool numeric_limits<double>::has_denorm_loss; 419 const bool numeric_limits<double>::is_iec559; 420 const bool numeric_limits<double>::is_bounded; 421 const bool numeric_limits<double>::is_modulo; 422 const bool numeric_limits<double>::traps; 423 const bool numeric_limits<double>::tinyness_before; 424 const float_round_style numeric_limits<double>::round_style; 425 426 // long double 427 const bool numeric_limits<long double>::is_specialized; 428 const int numeric_limits<long double>::digits; 429 const int numeric_limits<long double>::digits10; 430 const bool numeric_limits<long double>::is_signed; 431 const bool numeric_limits<long double>::is_integer; 432 const bool numeric_limits<long double>::is_exact; 433 const int numeric_limits<long double>::radix; 434 const int numeric_limits<long double>::min_exponent; 435 const int numeric_limits<long double>::min_exponent10; 436 const int numeric_limits<long double>::max_exponent; 437 const int numeric_limits<long double>::max_exponent10; 438 const bool numeric_limits<long double>::has_infinity; 439 const bool numeric_limits<long double>::has_quiet_NaN; 440 const bool numeric_limits<long double>::has_signaling_NaN; 441 const float_denorm_style numeric_limits<long double>::has_denorm; 442 const bool numeric_limits<long double>::has_denorm_loss; 443 const bool numeric_limits<long double>::is_iec559; 444 const bool numeric_limits<long double>::is_bounded; 445 const bool numeric_limits<long double>::is_modulo; 446 const bool numeric_limits<long double>::traps; 447 const bool numeric_limits<long double>::tinyness_before; 448 const float_round_style numeric_limits<long double>::round_style; 449 450_GLIBCXX_END_NAMESPACE 451 452// XXX GLIBCXX_ABI Deprecated 453#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT 454 455#define _GLIBCXX_NUM_LIM_COMPAT(type, member, len) \ 456 extern "C" type _ZNSt14numeric_limitsIeE ## len ## member ## E \ 457 __attribute__ ((alias ("_ZNSt14numeric_limitsIdE" #len #member "E"))) 458_GLIBCXX_NUM_LIM_COMPAT (bool, is_specialized, 14); 459_GLIBCXX_NUM_LIM_COMPAT (int, digits, 6); 460_GLIBCXX_NUM_LIM_COMPAT (int, digits10, 8); 461_GLIBCXX_NUM_LIM_COMPAT (bool, is_signed, 9); 462_GLIBCXX_NUM_LIM_COMPAT (bool, is_integer, 10); 463_GLIBCXX_NUM_LIM_COMPAT (bool, is_exact, 8); 464_GLIBCXX_NUM_LIM_COMPAT (int, radix, 5); 465_GLIBCXX_NUM_LIM_COMPAT (int, min_exponent, 12); 466_GLIBCXX_NUM_LIM_COMPAT (int, min_exponent10, 14); 467_GLIBCXX_NUM_LIM_COMPAT (int, max_exponent, 12); 468_GLIBCXX_NUM_LIM_COMPAT (int, max_exponent10, 14); 469_GLIBCXX_NUM_LIM_COMPAT (bool, has_infinity, 12); 470_GLIBCXX_NUM_LIM_COMPAT (bool, has_quiet_NaN, 13); 471_GLIBCXX_NUM_LIM_COMPAT (bool, has_signaling_NaN, 17); 472_GLIBCXX_NUM_LIM_COMPAT (std::float_denorm_style, has_denorm, 10); 473_GLIBCXX_NUM_LIM_COMPAT (bool, has_denorm_loss, 15); 474_GLIBCXX_NUM_LIM_COMPAT (bool, is_iec559, 9); 475_GLIBCXX_NUM_LIM_COMPAT (bool, is_bounded, 10); 476_GLIBCXX_NUM_LIM_COMPAT (bool, is_modulo, 9); 477_GLIBCXX_NUM_LIM_COMPAT (bool, traps, 5); 478_GLIBCXX_NUM_LIM_COMPAT (bool, tinyness_before, 15); 479_GLIBCXX_NUM_LIM_COMPAT (std::float_round_style, round_style, 11); 480 481#endif // _GLIBCXX_LONG_DOUBLE_COMPAT 482