14684ddb6SLionel Sambuc// -*- C++ -*- 24684ddb6SLionel Sambuc//===---------------------------- limits ----------------------------------===// 34684ddb6SLionel Sambuc// 44684ddb6SLionel Sambuc// The LLVM Compiler Infrastructure 54684ddb6SLionel Sambuc// 64684ddb6SLionel Sambuc// This file is dual licensed under the MIT and the University of Illinois Open 74684ddb6SLionel Sambuc// Source Licenses. See LICENSE.TXT for details. 84684ddb6SLionel Sambuc// 94684ddb6SLionel Sambuc//===----------------------------------------------------------------------===// 104684ddb6SLionel Sambuc 114684ddb6SLionel Sambuc#ifndef _LIBCPP_LIMITS 124684ddb6SLionel Sambuc#define _LIBCPP_LIMITS 134684ddb6SLionel Sambuc 144684ddb6SLionel Sambuc/* 154684ddb6SLionel Sambuc limits synopsis 164684ddb6SLionel Sambuc 174684ddb6SLionel Sambucnamespace std 184684ddb6SLionel Sambuc{ 194684ddb6SLionel Sambuc 204684ddb6SLionel Sambuctemplate<class T> 214684ddb6SLionel Sambucclass numeric_limits 224684ddb6SLionel Sambuc{ 234684ddb6SLionel Sambucpublic: 244684ddb6SLionel Sambuc static constexpr bool is_specialized = false; 254684ddb6SLionel Sambuc static constexpr T min() noexcept; 264684ddb6SLionel Sambuc static constexpr T max() noexcept; 274684ddb6SLionel Sambuc static constexpr T lowest() noexcept; 284684ddb6SLionel Sambuc 294684ddb6SLionel Sambuc static constexpr int digits = 0; 304684ddb6SLionel Sambuc static constexpr int digits10 = 0; 314684ddb6SLionel Sambuc static constexpr int max_digits10 = 0; 324684ddb6SLionel Sambuc static constexpr bool is_signed = false; 334684ddb6SLionel Sambuc static constexpr bool is_integer = false; 344684ddb6SLionel Sambuc static constexpr bool is_exact = false; 354684ddb6SLionel Sambuc static constexpr int radix = 0; 364684ddb6SLionel Sambuc static constexpr T epsilon() noexcept; 374684ddb6SLionel Sambuc static constexpr T round_error() noexcept; 384684ddb6SLionel Sambuc 394684ddb6SLionel Sambuc static constexpr int min_exponent = 0; 404684ddb6SLionel Sambuc static constexpr int min_exponent10 = 0; 414684ddb6SLionel Sambuc static constexpr int max_exponent = 0; 424684ddb6SLionel Sambuc static constexpr int max_exponent10 = 0; 434684ddb6SLionel Sambuc 444684ddb6SLionel Sambuc static constexpr bool has_infinity = false; 454684ddb6SLionel Sambuc static constexpr bool has_quiet_NaN = false; 464684ddb6SLionel Sambuc static constexpr bool has_signaling_NaN = false; 474684ddb6SLionel Sambuc static constexpr float_denorm_style has_denorm = denorm_absent; 484684ddb6SLionel Sambuc static constexpr bool has_denorm_loss = false; 494684ddb6SLionel Sambuc static constexpr T infinity() noexcept; 504684ddb6SLionel Sambuc static constexpr T quiet_NaN() noexcept; 514684ddb6SLionel Sambuc static constexpr T signaling_NaN() noexcept; 524684ddb6SLionel Sambuc static constexpr T denorm_min() noexcept; 534684ddb6SLionel Sambuc 544684ddb6SLionel Sambuc static constexpr bool is_iec559 = false; 554684ddb6SLionel Sambuc static constexpr bool is_bounded = false; 564684ddb6SLionel Sambuc static constexpr bool is_modulo = false; 574684ddb6SLionel Sambuc 584684ddb6SLionel Sambuc static constexpr bool traps = false; 594684ddb6SLionel Sambuc static constexpr bool tinyness_before = false; 604684ddb6SLionel Sambuc static constexpr float_round_style round_style = round_toward_zero; 614684ddb6SLionel Sambuc}; 624684ddb6SLionel Sambuc 634684ddb6SLionel Sambucenum float_round_style 644684ddb6SLionel Sambuc{ 654684ddb6SLionel Sambuc round_indeterminate = -1, 664684ddb6SLionel Sambuc round_toward_zero = 0, 674684ddb6SLionel Sambuc round_to_nearest = 1, 684684ddb6SLionel Sambuc round_toward_infinity = 2, 694684ddb6SLionel Sambuc round_toward_neg_infinity = 3 704684ddb6SLionel Sambuc}; 714684ddb6SLionel Sambuc 724684ddb6SLionel Sambucenum float_denorm_style 734684ddb6SLionel Sambuc{ 744684ddb6SLionel Sambuc denorm_indeterminate = -1, 754684ddb6SLionel Sambuc denorm_absent = 0, 764684ddb6SLionel Sambuc denorm_present = 1 774684ddb6SLionel Sambuc}; 784684ddb6SLionel Sambuc 794684ddb6SLionel Sambuctemplate<> class numeric_limits<cv bool>; 804684ddb6SLionel Sambuc 814684ddb6SLionel Sambuctemplate<> class numeric_limits<cv char>; 824684ddb6SLionel Sambuctemplate<> class numeric_limits<cv signed char>; 834684ddb6SLionel Sambuctemplate<> class numeric_limits<cv unsigned char>; 844684ddb6SLionel Sambuctemplate<> class numeric_limits<cv wchar_t>; 854684ddb6SLionel Sambuctemplate<> class numeric_limits<cv char16_t>; 864684ddb6SLionel Sambuctemplate<> class numeric_limits<cv char32_t>; 874684ddb6SLionel Sambuc 884684ddb6SLionel Sambuctemplate<> class numeric_limits<cv short>; 894684ddb6SLionel Sambuctemplate<> class numeric_limits<cv int>; 904684ddb6SLionel Sambuctemplate<> class numeric_limits<cv long>; 914684ddb6SLionel Sambuctemplate<> class numeric_limits<cv long long>; 924684ddb6SLionel Sambuctemplate<> class numeric_limits<cv unsigned short>; 934684ddb6SLionel Sambuctemplate<> class numeric_limits<cv unsigned int>; 944684ddb6SLionel Sambuctemplate<> class numeric_limits<cv unsigned long>; 954684ddb6SLionel Sambuctemplate<> class numeric_limits<cv unsigned long long>; 964684ddb6SLionel Sambuc 974684ddb6SLionel Sambuctemplate<> class numeric_limits<cv float>; 984684ddb6SLionel Sambuctemplate<> class numeric_limits<cv double>; 994684ddb6SLionel Sambuctemplate<> class numeric_limits<cv long double>; 1004684ddb6SLionel Sambuc 1014684ddb6SLionel Sambuc} // std 1024684ddb6SLionel Sambuc 1034684ddb6SLionel Sambuc*/ 1044684ddb6SLionel Sambuc 1054684ddb6SLionel Sambuc#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 1064684ddb6SLionel Sambuc#pragma GCC system_header 1074684ddb6SLionel Sambuc#endif 1084684ddb6SLionel Sambuc 1094684ddb6SLionel Sambuc#include <__config> 1104684ddb6SLionel Sambuc#include <type_traits> 1114684ddb6SLionel Sambuc 1124684ddb6SLionel Sambuc#include <__undef_min_max> 1134684ddb6SLionel Sambuc 1144684ddb6SLionel Sambuc#if defined(_LIBCPP_MSVCRT) 1154684ddb6SLionel Sambuc#include "support/win32/limits_win32.h" 1164684ddb6SLionel Sambuc#endif // _LIBCPP_MSVCRT 1174684ddb6SLionel Sambuc 1184684ddb6SLionel Sambuc#if defined(__IBMCPP__) 1194684ddb6SLionel Sambuc#include "support/ibm/limits.h" 1204684ddb6SLionel Sambuc#endif // __IBMCPP__ 1214684ddb6SLionel Sambuc 1224684ddb6SLionel Sambuc_LIBCPP_BEGIN_NAMESPACE_STD 1234684ddb6SLionel Sambuc 1244684ddb6SLionel Sambucenum float_round_style 1254684ddb6SLionel Sambuc{ 1264684ddb6SLionel Sambuc round_indeterminate = -1, 1274684ddb6SLionel Sambuc round_toward_zero = 0, 1284684ddb6SLionel Sambuc round_to_nearest = 1, 1294684ddb6SLionel Sambuc round_toward_infinity = 2, 1304684ddb6SLionel Sambuc round_toward_neg_infinity = 3 1314684ddb6SLionel Sambuc}; 1324684ddb6SLionel Sambuc 1334684ddb6SLionel Sambucenum float_denorm_style 1344684ddb6SLionel Sambuc{ 1354684ddb6SLionel Sambuc denorm_indeterminate = -1, 1364684ddb6SLionel Sambuc denorm_absent = 0, 1374684ddb6SLionel Sambuc denorm_present = 1 1384684ddb6SLionel Sambuc}; 1394684ddb6SLionel Sambuc 1404684ddb6SLionel Sambuctemplate <class _Tp, bool = is_arithmetic<_Tp>::value> 1414684ddb6SLionel Sambucclass __libcpp_numeric_limits 1424684ddb6SLionel Sambuc{ 1434684ddb6SLionel Sambucprotected: 1444684ddb6SLionel Sambuc typedef _Tp type; 1454684ddb6SLionel Sambuc 1464684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_specialized = false; 1474684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return type();} 1484684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return type();} 1494684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return type();} 1504684ddb6SLionel Sambuc 1514684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits = 0; 1524684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits10 = 0; 1534684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_digits10 = 0; 1544684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_signed = false; 1554684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_integer = false; 1564684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_exact = false; 1574684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int radix = 0; 1584684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return type();} 1594684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return type();} 1604684ddb6SLionel Sambuc 1614684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent = 0; 1624684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent10 = 0; 1634684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent = 0; 1644684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent10 = 0; 1654684ddb6SLionel Sambuc 1664684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_infinity = false; 1674684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = false; 1684684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = false; 1694684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_absent; 1704684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; 1714684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return type();} 1724684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return type();} 1734684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return type();} 1744684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return type();} 1754684ddb6SLionel Sambuc 1764684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_iec559 = false; 1774684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_bounded = false; 1784684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_modulo = false; 1794684ddb6SLionel Sambuc 1804684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool traps = false; 1814684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool tinyness_before = false; 1824684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_round_style round_style = round_toward_zero; 1834684ddb6SLionel Sambuc}; 1844684ddb6SLionel Sambuc 1854684ddb6SLionel Sambuctemplate <class _Tp, int digits, bool is_signed> 1864684ddb6SLionel Sambucstruct __libcpp_compute_min 1874684ddb6SLionel Sambuc{ 1884684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const _Tp value = _Tp(_Tp(1) << digits); 1894684ddb6SLionel Sambuc}; 1904684ddb6SLionel Sambuc 1914684ddb6SLionel Sambuctemplate <class _Tp, int digits> 1924684ddb6SLionel Sambucstruct __libcpp_compute_min<_Tp, digits, false> 1934684ddb6SLionel Sambuc{ 1944684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const _Tp value = _Tp(0); 1954684ddb6SLionel Sambuc}; 1964684ddb6SLionel Sambuc 1974684ddb6SLionel Sambuctemplate <class _Tp> 1984684ddb6SLionel Sambucclass __libcpp_numeric_limits<_Tp, true> 1994684ddb6SLionel Sambuc{ 2004684ddb6SLionel Sambucprotected: 2014684ddb6SLionel Sambuc typedef _Tp type; 2024684ddb6SLionel Sambuc 2034684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_specialized = true; 2044684ddb6SLionel Sambuc 2054684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_signed = type(-1) < type(0); 2064684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits = static_cast<int>(sizeof(type) * __CHAR_BIT__ - is_signed); 2074684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits10 = digits * 3 / 10; 2084684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_digits10 = 0; 2094684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const type __min = __libcpp_compute_min<type, digits, is_signed>::value; 2104684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const type __max = is_signed ? type(type(~0) ^ __min) : type(~0); 2114684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __min;} 2124684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __max;} 2134684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return min();} 2144684ddb6SLionel Sambuc 2154684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_integer = true; 2164684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_exact = true; 2174684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int radix = 2; 2184684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return type(0);} 2194684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return type(0);} 2204684ddb6SLionel Sambuc 2214684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent = 0; 2224684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent10 = 0; 2234684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent = 0; 2244684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent10 = 0; 2254684ddb6SLionel Sambuc 2264684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_infinity = false; 2274684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = false; 2284684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = false; 2294684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_absent; 2304684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; 2314684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return type(0);} 2324684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return type(0);} 2334684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return type(0);} 2344684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return type(0);} 2354684ddb6SLionel Sambuc 2364684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_iec559 = false; 2374684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_bounded = true; 238*0a6a1f1dSLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_modulo = !_VSTD::is_signed<_Tp>::value; 2394684ddb6SLionel Sambuc 240*0a6a1f1dSLionel Sambuc#if defined(__i386__) || defined(__x86_64__) || defined(__pnacl__) 2414684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool traps = true; 2424684ddb6SLionel Sambuc#else 2434684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool traps = false; 2444684ddb6SLionel Sambuc#endif 2454684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool tinyness_before = false; 2464684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_round_style round_style = round_toward_zero; 2474684ddb6SLionel Sambuc}; 2484684ddb6SLionel Sambuc 2494684ddb6SLionel Sambuctemplate <> 2504684ddb6SLionel Sambucclass __libcpp_numeric_limits<bool, true> 2514684ddb6SLionel Sambuc{ 2524684ddb6SLionel Sambucprotected: 2534684ddb6SLionel Sambuc typedef bool type; 2544684ddb6SLionel Sambuc 2554684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_specialized = true; 2564684ddb6SLionel Sambuc 2574684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_signed = false; 2584684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits = 1; 2594684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits10 = 0; 2604684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_digits10 = 0; 2614684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const type __min = false; 2624684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const type __max = true; 2634684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __min;} 2644684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __max;} 2654684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return min();} 2664684ddb6SLionel Sambuc 2674684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_integer = true; 2684684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_exact = true; 2694684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int radix = 2; 2704684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return type(0);} 2714684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return type(0);} 2724684ddb6SLionel Sambuc 2734684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent = 0; 2744684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent10 = 0; 2754684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent = 0; 2764684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent10 = 0; 2774684ddb6SLionel Sambuc 2784684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_infinity = false; 2794684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = false; 2804684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = false; 2814684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_absent; 2824684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; 2834684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return type(0);} 2844684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return type(0);} 2854684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return type(0);} 2864684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return type(0);} 2874684ddb6SLionel Sambuc 2884684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_iec559 = false; 2894684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_bounded = true; 2904684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_modulo = false; 2914684ddb6SLionel Sambuc 2924684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool traps = false; 2934684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool tinyness_before = false; 2944684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_round_style round_style = round_toward_zero; 2954684ddb6SLionel Sambuc}; 2964684ddb6SLionel Sambuc 2974684ddb6SLionel Sambuctemplate <> 2984684ddb6SLionel Sambucclass __libcpp_numeric_limits<float, true> 2994684ddb6SLionel Sambuc{ 3004684ddb6SLionel Sambucprotected: 3014684ddb6SLionel Sambuc typedef float type; 3024684ddb6SLionel Sambuc 3034684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_specialized = true; 3044684ddb6SLionel Sambuc 3054684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_signed = true; 3064684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits = __FLT_MANT_DIG__; 3074684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits10 = __FLT_DIG__; 3084684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_digits10 = 2+(digits * 30103)/100000; 3094684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __FLT_MIN__;} 3104684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __FLT_MAX__;} 3114684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return -max();} 3124684ddb6SLionel Sambuc 3134684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_integer = false; 3144684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_exact = false; 3154684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int radix = __FLT_RADIX__; 3164684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __FLT_EPSILON__;} 3174684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return 0.5F;} 3184684ddb6SLionel Sambuc 3194684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent = __FLT_MIN_EXP__; 3204684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent10 = __FLT_MIN_10_EXP__; 3214684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent = __FLT_MAX_EXP__; 3224684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent10 = __FLT_MAX_10_EXP__; 3234684ddb6SLionel Sambuc 3244684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_infinity = true; 3254684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = true; 3264684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = true; 3274684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_present; 3284684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; 3294684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __builtin_huge_valf();} 3304684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __builtin_nanf("");} 3314684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __builtin_nansf("");} 3324684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __FLT_DENORM_MIN__;} 3334684ddb6SLionel Sambuc 3344684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_iec559 = true; 3354684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_bounded = true; 3364684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_modulo = false; 3374684ddb6SLionel Sambuc 3384684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool traps = false; 3394684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool tinyness_before = false; 3404684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_round_style round_style = round_to_nearest; 3414684ddb6SLionel Sambuc}; 3424684ddb6SLionel Sambuc 3434684ddb6SLionel Sambuctemplate <> 3444684ddb6SLionel Sambucclass __libcpp_numeric_limits<double, true> 3454684ddb6SLionel Sambuc{ 3464684ddb6SLionel Sambucprotected: 3474684ddb6SLionel Sambuc typedef double type; 3484684ddb6SLionel Sambuc 3494684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_specialized = true; 3504684ddb6SLionel Sambuc 3514684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_signed = true; 3524684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits = __DBL_MANT_DIG__; 3534684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits10 = __DBL_DIG__; 3544684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_digits10 = 2+(digits * 30103)/100000; 3554684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __DBL_MIN__;} 3564684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __DBL_MAX__;} 3574684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return -max();} 3584684ddb6SLionel Sambuc 3594684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_integer = false; 3604684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_exact = false; 3614684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int radix = __FLT_RADIX__; 3624684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __DBL_EPSILON__;} 3634684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return 0.5;} 3644684ddb6SLionel Sambuc 3654684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent = __DBL_MIN_EXP__; 3664684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent10 = __DBL_MIN_10_EXP__; 3674684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent = __DBL_MAX_EXP__; 3684684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent10 = __DBL_MAX_10_EXP__; 3694684ddb6SLionel Sambuc 3704684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_infinity = true; 3714684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = true; 3724684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = true; 3734684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_present; 3744684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; 3754684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __builtin_huge_val();} 3764684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __builtin_nan("");} 3774684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __builtin_nans("");} 3784684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __DBL_DENORM_MIN__;} 3794684ddb6SLionel Sambuc 3804684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_iec559 = true; 3814684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_bounded = true; 3824684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_modulo = false; 3834684ddb6SLionel Sambuc 3844684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool traps = false; 3854684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool tinyness_before = false; 3864684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_round_style round_style = round_to_nearest; 3874684ddb6SLionel Sambuc}; 3884684ddb6SLionel Sambuc 3894684ddb6SLionel Sambuctemplate <> 3904684ddb6SLionel Sambucclass __libcpp_numeric_limits<long double, true> 3914684ddb6SLionel Sambuc{ 3924684ddb6SLionel Sambucprotected: 3934684ddb6SLionel Sambuc typedef long double type; 3944684ddb6SLionel Sambuc 3954684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_specialized = true; 3964684ddb6SLionel Sambuc 3974684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_signed = true; 3984684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits = __LDBL_MANT_DIG__; 3994684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits10 = __LDBL_DIG__; 4004684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_digits10 = 2+(digits * 30103)/100000; 4014684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __LDBL_MIN__;} 4024684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __LDBL_MAX__;} 4034684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return -max();} 4044684ddb6SLionel Sambuc 4054684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_integer = false; 4064684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_exact = false; 4074684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int radix = __FLT_RADIX__; 4084684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __LDBL_EPSILON__;} 4094684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return 0.5;} 4104684ddb6SLionel Sambuc 4114684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent = __LDBL_MIN_EXP__; 4124684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent10 = __LDBL_MIN_10_EXP__; 4134684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent = __LDBL_MAX_EXP__; 4144684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent10 = __LDBL_MAX_10_EXP__; 4154684ddb6SLionel Sambuc 4164684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_infinity = true; 4174684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = true; 4184684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = true; 4194684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_present; 4204684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; 4214684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __builtin_huge_vall();} 4224684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __builtin_nanl("");} 4234684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __builtin_nansl("");} 4244684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __LDBL_DENORM_MIN__;} 4254684ddb6SLionel Sambuc 4264684ddb6SLionel Sambuc#if (defined(__ppc__) || defined(__ppc64__)) 4274684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_iec559 = false; 4284684ddb6SLionel Sambuc#else 4294684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_iec559 = true; 4304684ddb6SLionel Sambuc#endif 4314684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_bounded = true; 4324684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_modulo = false; 4334684ddb6SLionel Sambuc 4344684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool traps = false; 4354684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool tinyness_before = false; 4364684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_round_style round_style = round_to_nearest; 4374684ddb6SLionel Sambuc}; 4384684ddb6SLionel Sambuc 4394684ddb6SLionel Sambuctemplate <class _Tp> 4404684ddb6SLionel Sambucclass _LIBCPP_TYPE_VIS_ONLY numeric_limits 4414684ddb6SLionel Sambuc : private __libcpp_numeric_limits<typename remove_cv<_Tp>::type> 4424684ddb6SLionel Sambuc{ 4434684ddb6SLionel Sambuc typedef __libcpp_numeric_limits<typename remove_cv<_Tp>::type> __base; 4444684ddb6SLionel Sambuc typedef typename __base::type type; 4454684ddb6SLionel Sambucpublic: 4464684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized; 4474684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();} 4484684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();} 4494684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();} 4504684ddb6SLionel Sambuc 4514684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits = __base::digits; 4524684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10; 4534684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10; 4544684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed; 4554684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer; 4564684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact; 4574684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int radix = __base::radix; 4584684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();} 4594684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();} 4604684ddb6SLionel Sambuc 4614684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent; 4624684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10; 4634684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent; 4644684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10; 4654684ddb6SLionel Sambuc 4664684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity; 4674684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN; 4684684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN; 4694684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm; 4704684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss; 4714684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();} 4724684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();} 4734684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();} 4744684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();} 4754684ddb6SLionel Sambuc 4764684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559; 4774684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded; 4784684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo; 4794684ddb6SLionel Sambuc 4804684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool traps = __base::traps; 4814684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before; 4824684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style; 4834684ddb6SLionel Sambuc}; 4844684ddb6SLionel Sambuc 4854684ddb6SLionel Sambuctemplate <class _Tp> 4864684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_specialized; 4874684ddb6SLionel Sambuctemplate <class _Tp> 4884684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::digits; 4894684ddb6SLionel Sambuctemplate <class _Tp> 4904684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::digits10; 4914684ddb6SLionel Sambuctemplate <class _Tp> 4924684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::max_digits10; 4934684ddb6SLionel Sambuctemplate <class _Tp> 4944684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_signed; 4954684ddb6SLionel Sambuctemplate <class _Tp> 4964684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_integer; 4974684ddb6SLionel Sambuctemplate <class _Tp> 4984684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_exact; 4994684ddb6SLionel Sambuctemplate <class _Tp> 5004684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::radix; 5014684ddb6SLionel Sambuctemplate <class _Tp> 5024684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::min_exponent; 5034684ddb6SLionel Sambuctemplate <class _Tp> 5044684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::min_exponent10; 5054684ddb6SLionel Sambuctemplate <class _Tp> 5064684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::max_exponent; 5074684ddb6SLionel Sambuctemplate <class _Tp> 5084684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::max_exponent10; 5094684ddb6SLionel Sambuctemplate <class _Tp> 5104684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_infinity; 5114684ddb6SLionel Sambuctemplate <class _Tp> 5124684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_quiet_NaN; 5134684ddb6SLionel Sambuctemplate <class _Tp> 5144684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_signaling_NaN; 5154684ddb6SLionel Sambuctemplate <class _Tp> 5164684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<_Tp>::has_denorm; 5174684ddb6SLionel Sambuctemplate <class _Tp> 5184684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_denorm_loss; 5194684ddb6SLionel Sambuctemplate <class _Tp> 5204684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_iec559; 5214684ddb6SLionel Sambuctemplate <class _Tp> 5224684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_bounded; 5234684ddb6SLionel Sambuctemplate <class _Tp> 5244684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_modulo; 5254684ddb6SLionel Sambuctemplate <class _Tp> 5264684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::traps; 5274684ddb6SLionel Sambuctemplate <class _Tp> 5284684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::tinyness_before; 5294684ddb6SLionel Sambuctemplate <class _Tp> 5304684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const float_round_style numeric_limits<_Tp>::round_style; 5314684ddb6SLionel Sambuc 5324684ddb6SLionel Sambuctemplate <class _Tp> 5334684ddb6SLionel Sambucclass _LIBCPP_TYPE_VIS_ONLY numeric_limits<const _Tp> 5344684ddb6SLionel Sambuc : private numeric_limits<_Tp> 5354684ddb6SLionel Sambuc{ 5364684ddb6SLionel Sambuc typedef numeric_limits<_Tp> __base; 5374684ddb6SLionel Sambuc typedef _Tp type; 5384684ddb6SLionel Sambucpublic: 5394684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized; 5404684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();} 5414684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();} 5424684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();} 5434684ddb6SLionel Sambuc 5444684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits = __base::digits; 5454684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10; 5464684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10; 5474684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed; 5484684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer; 5494684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact; 5504684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int radix = __base::radix; 5514684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();} 5524684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();} 5534684ddb6SLionel Sambuc 5544684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent; 5554684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10; 5564684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent; 5574684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10; 5584684ddb6SLionel Sambuc 5594684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity; 5604684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN; 5614684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN; 5624684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm; 5634684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss; 5644684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();} 5654684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();} 5664684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();} 5674684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();} 5684684ddb6SLionel Sambuc 5694684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559; 5704684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded; 5714684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo; 5724684ddb6SLionel Sambuc 5734684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool traps = __base::traps; 5744684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before; 5754684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style; 5764684ddb6SLionel Sambuc}; 5774684ddb6SLionel Sambuc 5784684ddb6SLionel Sambuctemplate <class _Tp> 5794684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_specialized; 5804684ddb6SLionel Sambuctemplate <class _Tp> 5814684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::digits; 5824684ddb6SLionel Sambuctemplate <class _Tp> 5834684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::digits10; 5844684ddb6SLionel Sambuctemplate <class _Tp> 5854684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::max_digits10; 5864684ddb6SLionel Sambuctemplate <class _Tp> 5874684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_signed; 5884684ddb6SLionel Sambuctemplate <class _Tp> 5894684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_integer; 5904684ddb6SLionel Sambuctemplate <class _Tp> 5914684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_exact; 5924684ddb6SLionel Sambuctemplate <class _Tp> 5934684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::radix; 5944684ddb6SLionel Sambuctemplate <class _Tp> 5954684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::min_exponent; 5964684ddb6SLionel Sambuctemplate <class _Tp> 5974684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::min_exponent10; 5984684ddb6SLionel Sambuctemplate <class _Tp> 5994684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::max_exponent; 6004684ddb6SLionel Sambuctemplate <class _Tp> 6014684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::max_exponent10; 6024684ddb6SLionel Sambuctemplate <class _Tp> 6034684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_infinity; 6044684ddb6SLionel Sambuctemplate <class _Tp> 6054684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_quiet_NaN; 6064684ddb6SLionel Sambuctemplate <class _Tp> 6074684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_signaling_NaN; 6084684ddb6SLionel Sambuctemplate <class _Tp> 6094684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<const _Tp>::has_denorm; 6104684ddb6SLionel Sambuctemplate <class _Tp> 6114684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_denorm_loss; 6124684ddb6SLionel Sambuctemplate <class _Tp> 6134684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_iec559; 6144684ddb6SLionel Sambuctemplate <class _Tp> 6154684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_bounded; 6164684ddb6SLionel Sambuctemplate <class _Tp> 6174684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_modulo; 6184684ddb6SLionel Sambuctemplate <class _Tp> 6194684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::traps; 6204684ddb6SLionel Sambuctemplate <class _Tp> 6214684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::tinyness_before; 6224684ddb6SLionel Sambuctemplate <class _Tp> 6234684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const float_round_style numeric_limits<const _Tp>::round_style; 6244684ddb6SLionel Sambuc 6254684ddb6SLionel Sambuctemplate <class _Tp> 6264684ddb6SLionel Sambucclass _LIBCPP_TYPE_VIS_ONLY numeric_limits<volatile _Tp> 6274684ddb6SLionel Sambuc : private numeric_limits<_Tp> 6284684ddb6SLionel Sambuc{ 6294684ddb6SLionel Sambuc typedef numeric_limits<_Tp> __base; 6304684ddb6SLionel Sambuc typedef _Tp type; 6314684ddb6SLionel Sambucpublic: 6324684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized; 6334684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();} 6344684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();} 6354684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();} 6364684ddb6SLionel Sambuc 6374684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits = __base::digits; 6384684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10; 6394684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10; 6404684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed; 6414684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer; 6424684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact; 6434684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int radix = __base::radix; 6444684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();} 6454684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();} 6464684ddb6SLionel Sambuc 6474684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent; 6484684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10; 6494684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent; 6504684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10; 6514684ddb6SLionel Sambuc 6524684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity; 6534684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN; 6544684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN; 6554684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm; 6564684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss; 6574684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();} 6584684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();} 6594684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();} 6604684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();} 6614684ddb6SLionel Sambuc 6624684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559; 6634684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded; 6644684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo; 6654684ddb6SLionel Sambuc 6664684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool traps = __base::traps; 6674684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before; 6684684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style; 6694684ddb6SLionel Sambuc}; 6704684ddb6SLionel Sambuc 6714684ddb6SLionel Sambuctemplate <class _Tp> 6724684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_specialized; 6734684ddb6SLionel Sambuctemplate <class _Tp> 6744684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::digits; 6754684ddb6SLionel Sambuctemplate <class _Tp> 6764684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::digits10; 6774684ddb6SLionel Sambuctemplate <class _Tp> 6784684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::max_digits10; 6794684ddb6SLionel Sambuctemplate <class _Tp> 6804684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_signed; 6814684ddb6SLionel Sambuctemplate <class _Tp> 6824684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_integer; 6834684ddb6SLionel Sambuctemplate <class _Tp> 6844684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_exact; 6854684ddb6SLionel Sambuctemplate <class _Tp> 6864684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::radix; 6874684ddb6SLionel Sambuctemplate <class _Tp> 6884684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::min_exponent; 6894684ddb6SLionel Sambuctemplate <class _Tp> 6904684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::min_exponent10; 6914684ddb6SLionel Sambuctemplate <class _Tp> 6924684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::max_exponent; 6934684ddb6SLionel Sambuctemplate <class _Tp> 6944684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::max_exponent10; 6954684ddb6SLionel Sambuctemplate <class _Tp> 6964684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_infinity; 6974684ddb6SLionel Sambuctemplate <class _Tp> 6984684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_quiet_NaN; 6994684ddb6SLionel Sambuctemplate <class _Tp> 7004684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_signaling_NaN; 7014684ddb6SLionel Sambuctemplate <class _Tp> 7024684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<volatile _Tp>::has_denorm; 7034684ddb6SLionel Sambuctemplate <class _Tp> 7044684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_denorm_loss; 7054684ddb6SLionel Sambuctemplate <class _Tp> 7064684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_iec559; 7074684ddb6SLionel Sambuctemplate <class _Tp> 7084684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_bounded; 7094684ddb6SLionel Sambuctemplate <class _Tp> 7104684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_modulo; 7114684ddb6SLionel Sambuctemplate <class _Tp> 7124684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::traps; 7134684ddb6SLionel Sambuctemplate <class _Tp> 7144684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::tinyness_before; 7154684ddb6SLionel Sambuctemplate <class _Tp> 7164684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const float_round_style numeric_limits<volatile _Tp>::round_style; 7174684ddb6SLionel Sambuc 7184684ddb6SLionel Sambuctemplate <class _Tp> 7194684ddb6SLionel Sambucclass _LIBCPP_TYPE_VIS_ONLY numeric_limits<const volatile _Tp> 7204684ddb6SLionel Sambuc : private numeric_limits<_Tp> 7214684ddb6SLionel Sambuc{ 7224684ddb6SLionel Sambuc typedef numeric_limits<_Tp> __base; 7234684ddb6SLionel Sambuc typedef _Tp type; 7244684ddb6SLionel Sambucpublic: 7254684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized; 7264684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();} 7274684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();} 7284684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();} 7294684ddb6SLionel Sambuc 7304684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits = __base::digits; 7314684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10; 7324684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10; 7334684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed; 7344684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer; 7354684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact; 7364684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int radix = __base::radix; 7374684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();} 7384684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();} 7394684ddb6SLionel Sambuc 7404684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent; 7414684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10; 7424684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent; 7434684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10; 7444684ddb6SLionel Sambuc 7454684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity; 7464684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN; 7474684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN; 7484684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm; 7494684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss; 7504684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();} 7514684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();} 7524684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();} 7534684ddb6SLionel Sambuc _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();} 7544684ddb6SLionel Sambuc 7554684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559; 7564684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded; 7574684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo; 7584684ddb6SLionel Sambuc 7594684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool traps = __base::traps; 7604684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before; 7614684ddb6SLionel Sambuc static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style; 7624684ddb6SLionel Sambuc}; 7634684ddb6SLionel Sambuc 7644684ddb6SLionel Sambuctemplate <class _Tp> 7654684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_specialized; 7664684ddb6SLionel Sambuctemplate <class _Tp> 7674684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::digits; 7684684ddb6SLionel Sambuctemplate <class _Tp> 7694684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::digits10; 7704684ddb6SLionel Sambuctemplate <class _Tp> 771*0a6a1f1dSLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::max_digits10; 7724684ddb6SLionel Sambuctemplate <class _Tp> 7734684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_signed; 7744684ddb6SLionel Sambuctemplate <class _Tp> 7754684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_integer; 7764684ddb6SLionel Sambuctemplate <class _Tp> 7774684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_exact; 7784684ddb6SLionel Sambuctemplate <class _Tp> 7794684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::radix; 7804684ddb6SLionel Sambuctemplate <class _Tp> 7814684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::min_exponent; 7824684ddb6SLionel Sambuctemplate <class _Tp> 7834684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::min_exponent10; 7844684ddb6SLionel Sambuctemplate <class _Tp> 7854684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::max_exponent; 7864684ddb6SLionel Sambuctemplate <class _Tp> 7874684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::max_exponent10; 7884684ddb6SLionel Sambuctemplate <class _Tp> 7894684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_infinity; 7904684ddb6SLionel Sambuctemplate <class _Tp> 7914684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_quiet_NaN; 7924684ddb6SLionel Sambuctemplate <class _Tp> 7934684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_signaling_NaN; 7944684ddb6SLionel Sambuctemplate <class _Tp> 7954684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<const volatile _Tp>::has_denorm; 7964684ddb6SLionel Sambuctemplate <class _Tp> 7974684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_denorm_loss; 7984684ddb6SLionel Sambuctemplate <class _Tp> 7994684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_iec559; 8004684ddb6SLionel Sambuctemplate <class _Tp> 8014684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_bounded; 8024684ddb6SLionel Sambuctemplate <class _Tp> 8034684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_modulo; 8044684ddb6SLionel Sambuctemplate <class _Tp> 8054684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::traps; 8064684ddb6SLionel Sambuctemplate <class _Tp> 8074684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::tinyness_before; 8084684ddb6SLionel Sambuctemplate <class _Tp> 8094684ddb6SLionel Sambuc _LIBCPP_CONSTEXPR const float_round_style numeric_limits<const volatile _Tp>::round_style; 8104684ddb6SLionel Sambuc 8114684ddb6SLionel Sambuc_LIBCPP_END_NAMESPACE_STD 8124684ddb6SLionel Sambuc 8134684ddb6SLionel Sambuc#endif // _LIBCPP_LIMITS 814