1*58b9f456SAndroid Build Coastguard Worker// -*- C++ -*- 2*58b9f456SAndroid Build Coastguard Worker//===---------------------------- limits ----------------------------------===// 3*58b9f456SAndroid Build Coastguard Worker// 4*58b9f456SAndroid Build Coastguard Worker// The LLVM Compiler Infrastructure 5*58b9f456SAndroid Build Coastguard Worker// 6*58b9f456SAndroid Build Coastguard Worker// This file is dual licensed under the MIT and the University of Illinois Open 7*58b9f456SAndroid Build Coastguard Worker// Source Licenses. See LICENSE.TXT for details. 8*58b9f456SAndroid Build Coastguard Worker// 9*58b9f456SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 10*58b9f456SAndroid Build Coastguard Worker 11*58b9f456SAndroid Build Coastguard Worker#ifndef _LIBCPP_LIMITS 12*58b9f456SAndroid Build Coastguard Worker#define _LIBCPP_LIMITS 13*58b9f456SAndroid Build Coastguard Worker 14*58b9f456SAndroid Build Coastguard Worker/* 15*58b9f456SAndroid Build Coastguard Worker limits synopsis 16*58b9f456SAndroid Build Coastguard Worker 17*58b9f456SAndroid Build Coastguard Workernamespace std 18*58b9f456SAndroid Build Coastguard Worker{ 19*58b9f456SAndroid Build Coastguard Worker 20*58b9f456SAndroid Build Coastguard Workertemplate<class T> 21*58b9f456SAndroid Build Coastguard Workerclass numeric_limits 22*58b9f456SAndroid Build Coastguard Worker{ 23*58b9f456SAndroid Build Coastguard Workerpublic: 24*58b9f456SAndroid Build Coastguard Worker static constexpr bool is_specialized = false; 25*58b9f456SAndroid Build Coastguard Worker static constexpr T min() noexcept; 26*58b9f456SAndroid Build Coastguard Worker static constexpr T max() noexcept; 27*58b9f456SAndroid Build Coastguard Worker static constexpr T lowest() noexcept; 28*58b9f456SAndroid Build Coastguard Worker 29*58b9f456SAndroid Build Coastguard Worker static constexpr int digits = 0; 30*58b9f456SAndroid Build Coastguard Worker static constexpr int digits10 = 0; 31*58b9f456SAndroid Build Coastguard Worker static constexpr int max_digits10 = 0; 32*58b9f456SAndroid Build Coastguard Worker static constexpr bool is_signed = false; 33*58b9f456SAndroid Build Coastguard Worker static constexpr bool is_integer = false; 34*58b9f456SAndroid Build Coastguard Worker static constexpr bool is_exact = false; 35*58b9f456SAndroid Build Coastguard Worker static constexpr int radix = 0; 36*58b9f456SAndroid Build Coastguard Worker static constexpr T epsilon() noexcept; 37*58b9f456SAndroid Build Coastguard Worker static constexpr T round_error() noexcept; 38*58b9f456SAndroid Build Coastguard Worker 39*58b9f456SAndroid Build Coastguard Worker static constexpr int min_exponent = 0; 40*58b9f456SAndroid Build Coastguard Worker static constexpr int min_exponent10 = 0; 41*58b9f456SAndroid Build Coastguard Worker static constexpr int max_exponent = 0; 42*58b9f456SAndroid Build Coastguard Worker static constexpr int max_exponent10 = 0; 43*58b9f456SAndroid Build Coastguard Worker 44*58b9f456SAndroid Build Coastguard Worker static constexpr bool has_infinity = false; 45*58b9f456SAndroid Build Coastguard Worker static constexpr bool has_quiet_NaN = false; 46*58b9f456SAndroid Build Coastguard Worker static constexpr bool has_signaling_NaN = false; 47*58b9f456SAndroid Build Coastguard Worker static constexpr float_denorm_style has_denorm = denorm_absent; 48*58b9f456SAndroid Build Coastguard Worker static constexpr bool has_denorm_loss = false; 49*58b9f456SAndroid Build Coastguard Worker static constexpr T infinity() noexcept; 50*58b9f456SAndroid Build Coastguard Worker static constexpr T quiet_NaN() noexcept; 51*58b9f456SAndroid Build Coastguard Worker static constexpr T signaling_NaN() noexcept; 52*58b9f456SAndroid Build Coastguard Worker static constexpr T denorm_min() noexcept; 53*58b9f456SAndroid Build Coastguard Worker 54*58b9f456SAndroid Build Coastguard Worker static constexpr bool is_iec559 = false; 55*58b9f456SAndroid Build Coastguard Worker static constexpr bool is_bounded = false; 56*58b9f456SAndroid Build Coastguard Worker static constexpr bool is_modulo = false; 57*58b9f456SAndroid Build Coastguard Worker 58*58b9f456SAndroid Build Coastguard Worker static constexpr bool traps = false; 59*58b9f456SAndroid Build Coastguard Worker static constexpr bool tinyness_before = false; 60*58b9f456SAndroid Build Coastguard Worker static constexpr float_round_style round_style = round_toward_zero; 61*58b9f456SAndroid Build Coastguard Worker}; 62*58b9f456SAndroid Build Coastguard Worker 63*58b9f456SAndroid Build Coastguard Workerenum float_round_style 64*58b9f456SAndroid Build Coastguard Worker{ 65*58b9f456SAndroid Build Coastguard Worker round_indeterminate = -1, 66*58b9f456SAndroid Build Coastguard Worker round_toward_zero = 0, 67*58b9f456SAndroid Build Coastguard Worker round_to_nearest = 1, 68*58b9f456SAndroid Build Coastguard Worker round_toward_infinity = 2, 69*58b9f456SAndroid Build Coastguard Worker round_toward_neg_infinity = 3 70*58b9f456SAndroid Build Coastguard Worker}; 71*58b9f456SAndroid Build Coastguard Worker 72*58b9f456SAndroid Build Coastguard Workerenum float_denorm_style 73*58b9f456SAndroid Build Coastguard Worker{ 74*58b9f456SAndroid Build Coastguard Worker denorm_indeterminate = -1, 75*58b9f456SAndroid Build Coastguard Worker denorm_absent = 0, 76*58b9f456SAndroid Build Coastguard Worker denorm_present = 1 77*58b9f456SAndroid Build Coastguard Worker}; 78*58b9f456SAndroid Build Coastguard Worker 79*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv bool>; 80*58b9f456SAndroid Build Coastguard Worker 81*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv char>; 82*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv signed char>; 83*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv unsigned char>; 84*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv wchar_t>; 85*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv char8_t>; // C++20 86*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv char16_t>; 87*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv char32_t>; 88*58b9f456SAndroid Build Coastguard Worker 89*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv short>; 90*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv int>; 91*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv long>; 92*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv long long>; 93*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv unsigned short>; 94*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv unsigned int>; 95*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv unsigned long>; 96*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv unsigned long long>; 97*58b9f456SAndroid Build Coastguard Worker 98*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv float>; 99*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv double>; 100*58b9f456SAndroid Build Coastguard Workertemplate<> class numeric_limits<cv long double>; 101*58b9f456SAndroid Build Coastguard Worker 102*58b9f456SAndroid Build Coastguard Worker} // std 103*58b9f456SAndroid Build Coastguard Worker 104*58b9f456SAndroid Build Coastguard Worker*/ 105*58b9f456SAndroid Build Coastguard Worker#include <__config> 106*58b9f456SAndroid Build Coastguard Worker#include <type_traits> 107*58b9f456SAndroid Build Coastguard Worker 108*58b9f456SAndroid Build Coastguard Worker#if defined(_LIBCPP_COMPILER_MSVC) 109*58b9f456SAndroid Build Coastguard Worker#include "support/win32/limits_msvc_win32.h" 110*58b9f456SAndroid Build Coastguard Worker#endif // _LIBCPP_MSVCRT 111*58b9f456SAndroid Build Coastguard Worker 112*58b9f456SAndroid Build Coastguard Worker#if defined(__IBMCPP__) 113*58b9f456SAndroid Build Coastguard Worker#include "support/ibm/limits.h" 114*58b9f456SAndroid Build Coastguard Worker#endif // __IBMCPP__ 115*58b9f456SAndroid Build Coastguard Worker 116*58b9f456SAndroid Build Coastguard Worker#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 117*58b9f456SAndroid Build Coastguard Worker#pragma GCC system_header 118*58b9f456SAndroid Build Coastguard Worker#endif 119*58b9f456SAndroid Build Coastguard Worker 120*58b9f456SAndroid Build Coastguard Worker_LIBCPP_PUSH_MACROS 121*58b9f456SAndroid Build Coastguard Worker#include <__undef_macros> 122*58b9f456SAndroid Build Coastguard Worker#include <version> 123*58b9f456SAndroid Build Coastguard Worker 124*58b9f456SAndroid Build Coastguard Worker 125*58b9f456SAndroid Build Coastguard Worker_LIBCPP_BEGIN_NAMESPACE_STD 126*58b9f456SAndroid Build Coastguard Worker 127*58b9f456SAndroid Build Coastguard Workerenum float_round_style 128*58b9f456SAndroid Build Coastguard Worker{ 129*58b9f456SAndroid Build Coastguard Worker round_indeterminate = -1, 130*58b9f456SAndroid Build Coastguard Worker round_toward_zero = 0, 131*58b9f456SAndroid Build Coastguard Worker round_to_nearest = 1, 132*58b9f456SAndroid Build Coastguard Worker round_toward_infinity = 2, 133*58b9f456SAndroid Build Coastguard Worker round_toward_neg_infinity = 3 134*58b9f456SAndroid Build Coastguard Worker}; 135*58b9f456SAndroid Build Coastguard Worker 136*58b9f456SAndroid Build Coastguard Workerenum float_denorm_style 137*58b9f456SAndroid Build Coastguard Worker{ 138*58b9f456SAndroid Build Coastguard Worker denorm_indeterminate = -1, 139*58b9f456SAndroid Build Coastguard Worker denorm_absent = 0, 140*58b9f456SAndroid Build Coastguard Worker denorm_present = 1 141*58b9f456SAndroid Build Coastguard Worker}; 142*58b9f456SAndroid Build Coastguard Worker 143*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, bool = is_arithmetic<_Tp>::value> 144*58b9f456SAndroid Build Coastguard Workerclass __libcpp_numeric_limits 145*58b9f456SAndroid Build Coastguard Worker{ 146*58b9f456SAndroid Build Coastguard Workerprotected: 147*58b9f456SAndroid Build Coastguard Worker typedef _Tp type; 148*58b9f456SAndroid Build Coastguard Worker 149*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_specialized = false; 150*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return type();} 151*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return type();} 152*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return type();} 153*58b9f456SAndroid Build Coastguard Worker 154*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits = 0; 155*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits10 = 0; 156*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_digits10 = 0; 157*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_signed = false; 158*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_integer = false; 159*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_exact = false; 160*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int radix = 0; 161*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return type();} 162*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return type();} 163*58b9f456SAndroid Build Coastguard Worker 164*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent = 0; 165*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent10 = 0; 166*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent = 0; 167*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent10 = 0; 168*58b9f456SAndroid Build Coastguard Worker 169*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_infinity = false; 170*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = false; 171*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = false; 172*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_absent; 173*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; 174*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return type();} 175*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return type();} 176*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return type();} 177*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return type();} 178*58b9f456SAndroid Build Coastguard Worker 179*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_iec559 = false; 180*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_bounded = false; 181*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_modulo = false; 182*58b9f456SAndroid Build Coastguard Worker 183*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool traps = false; 184*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool tinyness_before = false; 185*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_round_style round_style = round_toward_zero; 186*58b9f456SAndroid Build Coastguard Worker}; 187*58b9f456SAndroid Build Coastguard Worker 188*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, int __digits, bool _IsSigned> 189*58b9f456SAndroid Build Coastguard Workerstruct __libcpp_compute_min 190*58b9f456SAndroid Build Coastguard Worker{ 191*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const _Tp value = _Tp(_Tp(1) << __digits); 192*58b9f456SAndroid Build Coastguard Worker}; 193*58b9f456SAndroid Build Coastguard Worker 194*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, int __digits> 195*58b9f456SAndroid Build Coastguard Workerstruct __libcpp_compute_min<_Tp, __digits, false> 196*58b9f456SAndroid Build Coastguard Worker{ 197*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const _Tp value = _Tp(0); 198*58b9f456SAndroid Build Coastguard Worker}; 199*58b9f456SAndroid Build Coastguard Worker 200*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 201*58b9f456SAndroid Build Coastguard Workerclass __libcpp_numeric_limits<_Tp, true> 202*58b9f456SAndroid Build Coastguard Worker{ 203*58b9f456SAndroid Build Coastguard Workerprotected: 204*58b9f456SAndroid Build Coastguard Worker typedef _Tp type; 205*58b9f456SAndroid Build Coastguard Worker 206*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_specialized = true; 207*58b9f456SAndroid Build Coastguard Worker 208*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_signed = type(-1) < type(0); 209*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits = static_cast<int>(sizeof(type) * __CHAR_BIT__ - is_signed); 210*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits10 = digits * 3 / 10; 211*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_digits10 = 0; 212*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const type __min = __libcpp_compute_min<type, digits, is_signed>::value; 213*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const type __max = is_signed ? type(type(~0) ^ __min) : type(~0); 214*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __min;} 215*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __max;} 216*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return min();} 217*58b9f456SAndroid Build Coastguard Worker 218*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_integer = true; 219*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_exact = true; 220*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int radix = 2; 221*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return type(0);} 222*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return type(0);} 223*58b9f456SAndroid Build Coastguard Worker 224*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent = 0; 225*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent10 = 0; 226*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent = 0; 227*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent10 = 0; 228*58b9f456SAndroid Build Coastguard Worker 229*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_infinity = false; 230*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = false; 231*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = false; 232*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_absent; 233*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; 234*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return type(0);} 235*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return type(0);} 236*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return type(0);} 237*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return type(0);} 238*58b9f456SAndroid Build Coastguard Worker 239*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_iec559 = false; 240*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_bounded = true; 241*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_modulo = !_VSTD::is_signed<_Tp>::value; 242*58b9f456SAndroid Build Coastguard Worker 243*58b9f456SAndroid Build Coastguard Worker#if defined(__i386__) || defined(__x86_64__) || defined(__pnacl__) || \ 244*58b9f456SAndroid Build Coastguard Worker defined(__wasm__) 245*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool traps = true; 246*58b9f456SAndroid Build Coastguard Worker#else 247*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool traps = false; 248*58b9f456SAndroid Build Coastguard Worker#endif 249*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool tinyness_before = false; 250*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_round_style round_style = round_toward_zero; 251*58b9f456SAndroid Build Coastguard Worker}; 252*58b9f456SAndroid Build Coastguard Worker 253*58b9f456SAndroid Build Coastguard Workertemplate <> 254*58b9f456SAndroid Build Coastguard Workerclass __libcpp_numeric_limits<bool, true> 255*58b9f456SAndroid Build Coastguard Worker{ 256*58b9f456SAndroid Build Coastguard Workerprotected: 257*58b9f456SAndroid Build Coastguard Worker typedef bool type; 258*58b9f456SAndroid Build Coastguard Worker 259*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_specialized = true; 260*58b9f456SAndroid Build Coastguard Worker 261*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_signed = false; 262*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits = 1; 263*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits10 = 0; 264*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_digits10 = 0; 265*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const type __min = false; 266*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const type __max = true; 267*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __min;} 268*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __max;} 269*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return min();} 270*58b9f456SAndroid Build Coastguard Worker 271*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_integer = true; 272*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_exact = true; 273*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int radix = 2; 274*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return type(0);} 275*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return type(0);} 276*58b9f456SAndroid Build Coastguard Worker 277*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent = 0; 278*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent10 = 0; 279*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent = 0; 280*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent10 = 0; 281*58b9f456SAndroid Build Coastguard Worker 282*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_infinity = false; 283*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = false; 284*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = false; 285*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_absent; 286*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; 287*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return type(0);} 288*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return type(0);} 289*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return type(0);} 290*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return type(0);} 291*58b9f456SAndroid Build Coastguard Worker 292*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_iec559 = false; 293*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_bounded = true; 294*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_modulo = false; 295*58b9f456SAndroid Build Coastguard Worker 296*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool traps = false; 297*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool tinyness_before = false; 298*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_round_style round_style = round_toward_zero; 299*58b9f456SAndroid Build Coastguard Worker}; 300*58b9f456SAndroid Build Coastguard Worker 301*58b9f456SAndroid Build Coastguard Workertemplate <> 302*58b9f456SAndroid Build Coastguard Workerclass __libcpp_numeric_limits<float, true> 303*58b9f456SAndroid Build Coastguard Worker{ 304*58b9f456SAndroid Build Coastguard Workerprotected: 305*58b9f456SAndroid Build Coastguard Worker typedef float type; 306*58b9f456SAndroid Build Coastguard Worker 307*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_specialized = true; 308*58b9f456SAndroid Build Coastguard Worker 309*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_signed = true; 310*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits = __FLT_MANT_DIG__; 311*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits10 = __FLT_DIG__; 312*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_digits10 = 2+(digits * 30103l)/100000l; 313*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __FLT_MIN__;} 314*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __FLT_MAX__;} 315*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return -max();} 316*58b9f456SAndroid Build Coastguard Worker 317*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_integer = false; 318*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_exact = false; 319*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int radix = __FLT_RADIX__; 320*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __FLT_EPSILON__;} 321*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return 0.5F;} 322*58b9f456SAndroid Build Coastguard Worker 323*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent = __FLT_MIN_EXP__; 324*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent10 = __FLT_MIN_10_EXP__; 325*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent = __FLT_MAX_EXP__; 326*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent10 = __FLT_MAX_10_EXP__; 327*58b9f456SAndroid Build Coastguard Worker 328*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_infinity = true; 329*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = true; 330*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = true; 331*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_present; 332*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; 333*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __builtin_huge_valf();} 334*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __builtin_nanf("");} 335*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __builtin_nansf("");} 336*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __FLT_DENORM_MIN__;} 337*58b9f456SAndroid Build Coastguard Worker 338*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_iec559 = true; 339*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_bounded = true; 340*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_modulo = false; 341*58b9f456SAndroid Build Coastguard Worker 342*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool traps = false; 343*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool tinyness_before = false; 344*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_round_style round_style = round_to_nearest; 345*58b9f456SAndroid Build Coastguard Worker}; 346*58b9f456SAndroid Build Coastguard Worker 347*58b9f456SAndroid Build Coastguard Workertemplate <> 348*58b9f456SAndroid Build Coastguard Workerclass __libcpp_numeric_limits<double, true> 349*58b9f456SAndroid Build Coastguard Worker{ 350*58b9f456SAndroid Build Coastguard Workerprotected: 351*58b9f456SAndroid Build Coastguard Worker typedef double type; 352*58b9f456SAndroid Build Coastguard Worker 353*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_specialized = true; 354*58b9f456SAndroid Build Coastguard Worker 355*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_signed = true; 356*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits = __DBL_MANT_DIG__; 357*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits10 = __DBL_DIG__; 358*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_digits10 = 2+(digits * 30103l)/100000l; 359*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __DBL_MIN__;} 360*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __DBL_MAX__;} 361*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return -max();} 362*58b9f456SAndroid Build Coastguard Worker 363*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_integer = false; 364*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_exact = false; 365*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int radix = __FLT_RADIX__; 366*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __DBL_EPSILON__;} 367*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return 0.5;} 368*58b9f456SAndroid Build Coastguard Worker 369*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent = __DBL_MIN_EXP__; 370*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent10 = __DBL_MIN_10_EXP__; 371*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent = __DBL_MAX_EXP__; 372*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent10 = __DBL_MAX_10_EXP__; 373*58b9f456SAndroid Build Coastguard Worker 374*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_infinity = true; 375*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = true; 376*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = true; 377*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_present; 378*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; 379*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __builtin_huge_val();} 380*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __builtin_nan("");} 381*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __builtin_nans("");} 382*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __DBL_DENORM_MIN__;} 383*58b9f456SAndroid Build Coastguard Worker 384*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_iec559 = true; 385*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_bounded = true; 386*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_modulo = false; 387*58b9f456SAndroid Build Coastguard Worker 388*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool traps = false; 389*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool tinyness_before = false; 390*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_round_style round_style = round_to_nearest; 391*58b9f456SAndroid Build Coastguard Worker}; 392*58b9f456SAndroid Build Coastguard Worker 393*58b9f456SAndroid Build Coastguard Workertemplate <> 394*58b9f456SAndroid Build Coastguard Workerclass __libcpp_numeric_limits<long double, true> 395*58b9f456SAndroid Build Coastguard Worker{ 396*58b9f456SAndroid Build Coastguard Workerprotected: 397*58b9f456SAndroid Build Coastguard Worker typedef long double type; 398*58b9f456SAndroid Build Coastguard Worker 399*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_specialized = true; 400*58b9f456SAndroid Build Coastguard Worker 401*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_signed = true; 402*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits = __LDBL_MANT_DIG__; 403*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits10 = __LDBL_DIG__; 404*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_digits10 = 2+(digits * 30103l)/100000l; 405*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __LDBL_MIN__;} 406*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __LDBL_MAX__;} 407*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return -max();} 408*58b9f456SAndroid Build Coastguard Worker 409*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_integer = false; 410*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_exact = false; 411*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int radix = __FLT_RADIX__; 412*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __LDBL_EPSILON__;} 413*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return 0.5;} 414*58b9f456SAndroid Build Coastguard Worker 415*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent = __LDBL_MIN_EXP__; 416*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent10 = __LDBL_MIN_10_EXP__; 417*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent = __LDBL_MAX_EXP__; 418*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent10 = __LDBL_MAX_10_EXP__; 419*58b9f456SAndroid Build Coastguard Worker 420*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_infinity = true; 421*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = true; 422*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = true; 423*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_present; 424*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; 425*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __builtin_huge_vall();} 426*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __builtin_nanl("");} 427*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __builtin_nansl("");} 428*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __LDBL_DENORM_MIN__;} 429*58b9f456SAndroid Build Coastguard Worker 430*58b9f456SAndroid Build Coastguard Worker#if (defined(__ppc__) || defined(__ppc64__)) 431*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_iec559 = false; 432*58b9f456SAndroid Build Coastguard Worker#else 433*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_iec559 = true; 434*58b9f456SAndroid Build Coastguard Worker#endif 435*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_bounded = true; 436*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_modulo = false; 437*58b9f456SAndroid Build Coastguard Worker 438*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool traps = false; 439*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool tinyness_before = false; 440*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_round_style round_style = round_to_nearest; 441*58b9f456SAndroid Build Coastguard Worker}; 442*58b9f456SAndroid Build Coastguard Worker 443*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 444*58b9f456SAndroid Build Coastguard Workerclass _LIBCPP_TEMPLATE_VIS numeric_limits 445*58b9f456SAndroid Build Coastguard Worker : private __libcpp_numeric_limits<typename remove_cv<_Tp>::type> 446*58b9f456SAndroid Build Coastguard Worker{ 447*58b9f456SAndroid Build Coastguard Worker typedef __libcpp_numeric_limits<typename remove_cv<_Tp>::type> __base; 448*58b9f456SAndroid Build Coastguard Worker typedef typename __base::type type; 449*58b9f456SAndroid Build Coastguard Workerpublic: 450*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized; 451*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();} 452*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();} 453*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();} 454*58b9f456SAndroid Build Coastguard Worker 455*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits = __base::digits; 456*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10; 457*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10; 458*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed; 459*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer; 460*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact; 461*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int radix = __base::radix; 462*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();} 463*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();} 464*58b9f456SAndroid Build Coastguard Worker 465*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent; 466*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10; 467*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent; 468*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10; 469*58b9f456SAndroid Build Coastguard Worker 470*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity; 471*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN; 472*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN; 473*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm; 474*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss; 475*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();} 476*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();} 477*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();} 478*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();} 479*58b9f456SAndroid Build Coastguard Worker 480*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559; 481*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded; 482*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo; 483*58b9f456SAndroid Build Coastguard Worker 484*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool traps = __base::traps; 485*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before; 486*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style; 487*58b9f456SAndroid Build Coastguard Worker}; 488*58b9f456SAndroid Build Coastguard Worker 489*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 490*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_specialized; 491*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 492*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::digits; 493*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 494*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::digits10; 495*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 496*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::max_digits10; 497*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 498*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_signed; 499*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 500*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_integer; 501*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 502*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_exact; 503*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 504*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::radix; 505*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 506*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::min_exponent; 507*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 508*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::min_exponent10; 509*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 510*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::max_exponent; 511*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 512*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::max_exponent10; 513*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 514*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_infinity; 515*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 516*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_quiet_NaN; 517*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 518*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_signaling_NaN; 519*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 520*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<_Tp>::has_denorm; 521*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 522*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_denorm_loss; 523*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 524*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_iec559; 525*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 526*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_bounded; 527*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 528*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_modulo; 529*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 530*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::traps; 531*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 532*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::tinyness_before; 533*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 534*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const float_round_style numeric_limits<_Tp>::round_style; 535*58b9f456SAndroid Build Coastguard Worker 536*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 537*58b9f456SAndroid Build Coastguard Workerclass _LIBCPP_TEMPLATE_VIS numeric_limits<const _Tp> 538*58b9f456SAndroid Build Coastguard Worker : private numeric_limits<_Tp> 539*58b9f456SAndroid Build Coastguard Worker{ 540*58b9f456SAndroid Build Coastguard Worker typedef numeric_limits<_Tp> __base; 541*58b9f456SAndroid Build Coastguard Worker typedef _Tp type; 542*58b9f456SAndroid Build Coastguard Workerpublic: 543*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized; 544*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();} 545*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();} 546*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();} 547*58b9f456SAndroid Build Coastguard Worker 548*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits = __base::digits; 549*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10; 550*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10; 551*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed; 552*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer; 553*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact; 554*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int radix = __base::radix; 555*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();} 556*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();} 557*58b9f456SAndroid Build Coastguard Worker 558*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent; 559*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10; 560*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent; 561*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10; 562*58b9f456SAndroid Build Coastguard Worker 563*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity; 564*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN; 565*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN; 566*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm; 567*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss; 568*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();} 569*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();} 570*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();} 571*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();} 572*58b9f456SAndroid Build Coastguard Worker 573*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559; 574*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded; 575*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo; 576*58b9f456SAndroid Build Coastguard Worker 577*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool traps = __base::traps; 578*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before; 579*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style; 580*58b9f456SAndroid Build Coastguard Worker}; 581*58b9f456SAndroid Build Coastguard Worker 582*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 583*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_specialized; 584*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 585*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::digits; 586*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 587*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::digits10; 588*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 589*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::max_digits10; 590*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 591*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_signed; 592*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 593*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_integer; 594*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 595*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_exact; 596*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 597*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::radix; 598*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 599*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::min_exponent; 600*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 601*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::min_exponent10; 602*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 603*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::max_exponent; 604*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 605*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::max_exponent10; 606*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 607*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_infinity; 608*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 609*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_quiet_NaN; 610*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 611*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_signaling_NaN; 612*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 613*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<const _Tp>::has_denorm; 614*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 615*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_denorm_loss; 616*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 617*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_iec559; 618*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 619*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_bounded; 620*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 621*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_modulo; 622*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 623*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::traps; 624*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 625*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::tinyness_before; 626*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 627*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const float_round_style numeric_limits<const _Tp>::round_style; 628*58b9f456SAndroid Build Coastguard Worker 629*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 630*58b9f456SAndroid Build Coastguard Workerclass _LIBCPP_TEMPLATE_VIS numeric_limits<volatile _Tp> 631*58b9f456SAndroid Build Coastguard Worker : private numeric_limits<_Tp> 632*58b9f456SAndroid Build Coastguard Worker{ 633*58b9f456SAndroid Build Coastguard Worker typedef numeric_limits<_Tp> __base; 634*58b9f456SAndroid Build Coastguard Worker typedef _Tp type; 635*58b9f456SAndroid Build Coastguard Workerpublic: 636*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized; 637*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();} 638*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();} 639*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();} 640*58b9f456SAndroid Build Coastguard Worker 641*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits = __base::digits; 642*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10; 643*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10; 644*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed; 645*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer; 646*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact; 647*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int radix = __base::radix; 648*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();} 649*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();} 650*58b9f456SAndroid Build Coastguard Worker 651*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent; 652*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10; 653*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent; 654*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10; 655*58b9f456SAndroid Build Coastguard Worker 656*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity; 657*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN; 658*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN; 659*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm; 660*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss; 661*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();} 662*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();} 663*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();} 664*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();} 665*58b9f456SAndroid Build Coastguard Worker 666*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559; 667*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded; 668*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo; 669*58b9f456SAndroid Build Coastguard Worker 670*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool traps = __base::traps; 671*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before; 672*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style; 673*58b9f456SAndroid Build Coastguard Worker}; 674*58b9f456SAndroid Build Coastguard Worker 675*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 676*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_specialized; 677*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 678*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::digits; 679*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 680*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::digits10; 681*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 682*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::max_digits10; 683*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 684*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_signed; 685*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 686*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_integer; 687*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 688*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_exact; 689*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 690*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::radix; 691*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 692*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::min_exponent; 693*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 694*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::min_exponent10; 695*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 696*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::max_exponent; 697*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 698*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::max_exponent10; 699*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 700*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_infinity; 701*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 702*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_quiet_NaN; 703*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 704*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_signaling_NaN; 705*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 706*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<volatile _Tp>::has_denorm; 707*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 708*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_denorm_loss; 709*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 710*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_iec559; 711*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 712*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_bounded; 713*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 714*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_modulo; 715*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 716*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::traps; 717*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 718*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::tinyness_before; 719*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 720*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const float_round_style numeric_limits<volatile _Tp>::round_style; 721*58b9f456SAndroid Build Coastguard Worker 722*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 723*58b9f456SAndroid Build Coastguard Workerclass _LIBCPP_TEMPLATE_VIS numeric_limits<const volatile _Tp> 724*58b9f456SAndroid Build Coastguard Worker : private numeric_limits<_Tp> 725*58b9f456SAndroid Build Coastguard Worker{ 726*58b9f456SAndroid Build Coastguard Worker typedef numeric_limits<_Tp> __base; 727*58b9f456SAndroid Build Coastguard Worker typedef _Tp type; 728*58b9f456SAndroid Build Coastguard Workerpublic: 729*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized; 730*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();} 731*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();} 732*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();} 733*58b9f456SAndroid Build Coastguard Worker 734*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits = __base::digits; 735*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10; 736*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10; 737*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed; 738*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer; 739*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact; 740*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int radix = __base::radix; 741*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();} 742*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();} 743*58b9f456SAndroid Build Coastguard Worker 744*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent; 745*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10; 746*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent; 747*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10; 748*58b9f456SAndroid Build Coastguard Worker 749*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity; 750*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN; 751*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN; 752*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm; 753*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss; 754*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();} 755*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();} 756*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();} 757*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();} 758*58b9f456SAndroid Build Coastguard Worker 759*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559; 760*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded; 761*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo; 762*58b9f456SAndroid Build Coastguard Worker 763*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool traps = __base::traps; 764*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before; 765*58b9f456SAndroid Build Coastguard Worker static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style; 766*58b9f456SAndroid Build Coastguard Worker}; 767*58b9f456SAndroid Build Coastguard Worker 768*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 769*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_specialized; 770*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 771*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::digits; 772*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 773*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::digits10; 774*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 775*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::max_digits10; 776*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 777*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_signed; 778*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 779*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_integer; 780*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 781*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_exact; 782*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 783*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::radix; 784*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 785*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::min_exponent; 786*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 787*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::min_exponent10; 788*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 789*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::max_exponent; 790*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 791*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::max_exponent10; 792*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 793*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_infinity; 794*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 795*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_quiet_NaN; 796*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 797*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_signaling_NaN; 798*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 799*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<const volatile _Tp>::has_denorm; 800*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 801*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_denorm_loss; 802*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 803*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_iec559; 804*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 805*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_bounded; 806*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 807*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_modulo; 808*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 809*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::traps; 810*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 811*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::tinyness_before; 812*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp> 813*58b9f456SAndroid Build Coastguard Worker _LIBCPP_CONSTEXPR const float_round_style numeric_limits<const volatile _Tp>::round_style; 814*58b9f456SAndroid Build Coastguard Worker 815*58b9f456SAndroid Build Coastguard Worker_LIBCPP_END_NAMESPACE_STD 816*58b9f456SAndroid Build Coastguard Worker 817*58b9f456SAndroid Build Coastguard Worker_LIBCPP_POP_MACROS 818*58b9f456SAndroid Build Coastguard Worker 819*58b9f456SAndroid Build Coastguard Worker#endif // _LIBCPP_LIMITS 820