File indexing completed on 2025-09-13 08:39:58
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #ifndef BOOST_MATH_TOOLS_NUMERIC_LIMITS_HPP
0016 #define BOOST_MATH_TOOLS_NUMERIC_LIMITS_HPP
0017
0018 #include <boost/math/tools/config.hpp>
0019
0020 #ifndef BOOST_MATH_HAS_NVRTC
0021
0022 #include <type_traits>
0023 #include <limits>
0024 #include <climits>
0025 #include <cfloat>
0026
0027 #endif
0028
0029 namespace boost {
0030 namespace math {
0031
0032 template <typename T>
0033 struct numeric_limits
0034 #ifndef BOOST_MATH_HAS_NVRTC
0035 : public std::numeric_limits<T> {};
0036 #else
0037 {};
0038 #endif
0039
0040 #if defined(BOOST_MATH_HAS_GPU_SUPPORT) && !defined(BOOST_MATH_HAS_NVRTC)
0041
0042 template <>
0043 struct numeric_limits<float>
0044 {
0045 BOOST_MATH_STATIC constexpr bool is_specialized = std::numeric_limits<float>::is_specialized;
0046 BOOST_MATH_STATIC constexpr bool is_signed = std::numeric_limits<float>::is_signed;
0047 BOOST_MATH_STATIC constexpr bool is_integer = std::numeric_limits<float>::is_integer;
0048 BOOST_MATH_STATIC constexpr bool is_exact = std::numeric_limits<float>::is_exact;
0049 BOOST_MATH_STATIC constexpr bool has_infinity = std::numeric_limits<float>::has_infinity;
0050 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = std::numeric_limits<float>::has_quiet_NaN;
0051 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = std::numeric_limits<float>::has_signaling_NaN;
0052
0053 BOOST_MATH_STATIC constexpr std::float_round_style round_style = std::numeric_limits<float>::round_style;
0054 BOOST_MATH_STATIC constexpr bool is_iec559 = std::numeric_limits<float>::is_iec559;
0055 BOOST_MATH_STATIC constexpr bool is_bounded = std::numeric_limits<float>::is_bounded;
0056 BOOST_MATH_STATIC constexpr bool is_modulo = std::numeric_limits<float>::is_modulo;
0057 BOOST_MATH_STATIC constexpr int digits = std::numeric_limits<float>::digits;
0058 BOOST_MATH_STATIC constexpr int digits10 = std::numeric_limits<float>::digits10;
0059 BOOST_MATH_STATIC constexpr int max_digits10 = std::numeric_limits<float>::max_digits10;
0060 BOOST_MATH_STATIC constexpr int radix = std::numeric_limits<float>::radix;
0061 BOOST_MATH_STATIC constexpr int min_exponent = std::numeric_limits<float>::min_exponent;
0062 BOOST_MATH_STATIC constexpr int min_exponent10 = std::numeric_limits<float>::min_exponent10;
0063 BOOST_MATH_STATIC constexpr int max_exponent = std::numeric_limits<float>::max_exponent;
0064 BOOST_MATH_STATIC constexpr int max_exponent10 = std::numeric_limits<float>::max_exponent10;
0065 BOOST_MATH_STATIC constexpr bool traps = std::numeric_limits<float>::traps;
0066 BOOST_MATH_STATIC constexpr bool tinyness_before = std::numeric_limits<float>::tinyness_before;
0067
0068
0069 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr float (min) () { return FLT_MIN; }
0070 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr float (max) () { return FLT_MAX; }
0071 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr float lowest () { return -FLT_MAX; }
0072 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr float epsilon () { return FLT_EPSILON; }
0073 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr float round_error () { return 0.5F; }
0074 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr float infinity () { return static_cast<float>(INFINITY); }
0075 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr float quiet_NaN () { return static_cast<float>(NAN); }
0076 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr float signaling_NaN ()
0077 {
0078 #ifdef FLT_SNAN
0079 return FLT_SNAN;
0080 #else
0081 return static_cast<float>(NAN);
0082 #endif
0083 }
0084 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr float denorm_min () { return FLT_TRUE_MIN; }
0085 };
0086
0087 template <>
0088 struct numeric_limits<double>
0089 {
0090 BOOST_MATH_STATIC constexpr bool is_specialized = std::numeric_limits<double>::is_specialized;
0091 BOOST_MATH_STATIC constexpr bool is_signed = std::numeric_limits<double>::is_signed;
0092 BOOST_MATH_STATIC constexpr bool is_integer = std::numeric_limits<double>::is_integer;
0093 BOOST_MATH_STATIC constexpr bool is_exact = std::numeric_limits<double>::is_exact;
0094 BOOST_MATH_STATIC constexpr bool has_infinity = std::numeric_limits<double>::has_infinity;
0095 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = std::numeric_limits<double>::has_quiet_NaN;
0096 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = std::numeric_limits<double>::has_signaling_NaN;
0097
0098 BOOST_MATH_STATIC constexpr std::float_round_style round_style = std::numeric_limits<double>::round_style;
0099 BOOST_MATH_STATIC constexpr bool is_iec559 = std::numeric_limits<double>::is_iec559;
0100 BOOST_MATH_STATIC constexpr bool is_bounded = std::numeric_limits<double>::is_bounded;
0101 BOOST_MATH_STATIC constexpr bool is_modulo = std::numeric_limits<double>::is_modulo;
0102 BOOST_MATH_STATIC constexpr int digits = std::numeric_limits<double>::digits;
0103 BOOST_MATH_STATIC constexpr int digits10 = std::numeric_limits<double>::digits10;
0104 BOOST_MATH_STATIC constexpr int max_digits10 = std::numeric_limits<double>::max_digits10;
0105 BOOST_MATH_STATIC constexpr int radix = std::numeric_limits<double>::radix;
0106 BOOST_MATH_STATIC constexpr int min_exponent = std::numeric_limits<double>::min_exponent;
0107 BOOST_MATH_STATIC constexpr int min_exponent10 = std::numeric_limits<double>::min_exponent10;
0108 BOOST_MATH_STATIC constexpr int max_exponent = std::numeric_limits<double>::max_exponent;
0109 BOOST_MATH_STATIC constexpr int max_exponent10 = std::numeric_limits<double>::max_exponent10;
0110 BOOST_MATH_STATIC constexpr bool traps = std::numeric_limits<double>::traps;
0111 BOOST_MATH_STATIC constexpr bool tinyness_before = std::numeric_limits<double>::tinyness_before;
0112
0113
0114 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr double (min) () { return DBL_MIN; }
0115 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr double (max) () { return DBL_MAX; }
0116 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr double lowest () { return -DBL_MAX; }
0117 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr double epsilon () { return DBL_EPSILON; }
0118 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr double round_error () { return 0.5; }
0119 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr double infinity () { return static_cast<double>(INFINITY); }
0120 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr double quiet_NaN () { return static_cast<double>(NAN); }
0121 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr double signaling_NaN ()
0122 {
0123 #ifdef DBL_SNAN
0124 return DBL_SNAN;
0125 #else
0126 return static_cast<double>(NAN);
0127 #endif
0128 }
0129 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr double denorm_min () { return DBL_TRUE_MIN; }
0130 };
0131
0132 template <>
0133 struct numeric_limits<short>
0134 {
0135 BOOST_MATH_STATIC constexpr bool is_specialized = std::numeric_limits<short>::is_specialized;
0136 BOOST_MATH_STATIC constexpr bool is_signed = std::numeric_limits<short>::is_signed;
0137 BOOST_MATH_STATIC constexpr bool is_integer = std::numeric_limits<short>::is_integer;
0138 BOOST_MATH_STATIC constexpr bool is_exact = std::numeric_limits<short>::is_exact;
0139 BOOST_MATH_STATIC constexpr bool has_infinity = std::numeric_limits<short>::has_infinity;
0140 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = std::numeric_limits<short>::has_quiet_NaN;
0141 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = std::numeric_limits<short>::has_signaling_NaN;
0142
0143 BOOST_MATH_STATIC constexpr std::float_round_style round_style = std::numeric_limits<short>::round_style;
0144 BOOST_MATH_STATIC constexpr bool is_iec559 = std::numeric_limits<short>::is_iec559;
0145 BOOST_MATH_STATIC constexpr bool is_bounded = std::numeric_limits<short>::is_bounded;
0146 BOOST_MATH_STATIC constexpr bool is_modulo = std::numeric_limits<short>::is_modulo;
0147 BOOST_MATH_STATIC constexpr int digits = std::numeric_limits<short>::digits;
0148 BOOST_MATH_STATIC constexpr int digits10 = std::numeric_limits<short>::digits10;
0149 BOOST_MATH_STATIC constexpr int max_digits10 = std::numeric_limits<short>::max_digits10;
0150 BOOST_MATH_STATIC constexpr int radix = std::numeric_limits<short>::radix;
0151 BOOST_MATH_STATIC constexpr int min_exponent = std::numeric_limits<short>::min_exponent;
0152 BOOST_MATH_STATIC constexpr int min_exponent10 = std::numeric_limits<short>::min_exponent10;
0153 BOOST_MATH_STATIC constexpr int max_exponent = std::numeric_limits<short>::max_exponent;
0154 BOOST_MATH_STATIC constexpr int max_exponent10 = std::numeric_limits<short>::max_exponent10;
0155 BOOST_MATH_STATIC constexpr bool traps = std::numeric_limits<short>::traps;
0156 BOOST_MATH_STATIC constexpr bool tinyness_before = std::numeric_limits<short>::tinyness_before;
0157
0158
0159 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr short (min) () { return SHRT_MIN; }
0160 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr short (max) () { return SHRT_MAX; }
0161 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr short lowest () { return SHRT_MIN; }
0162 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr short epsilon () { return 0; }
0163 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr short round_error () { return 0; }
0164 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr short infinity () { return 0; }
0165 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr short quiet_NaN () { return 0; }
0166 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr short signaling_NaN () { return 0; }
0167 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr short denorm_min () { return 0; }
0168 };
0169
0170 template <>
0171 struct numeric_limits<unsigned short>
0172 {
0173 BOOST_MATH_STATIC constexpr bool is_specialized = std::numeric_limits<unsigned short>::is_specialized;
0174 BOOST_MATH_STATIC constexpr bool is_signed = std::numeric_limits<unsigned short>::is_signed;
0175 BOOST_MATH_STATIC constexpr bool is_integer = std::numeric_limits<unsigned short>::is_integer;
0176 BOOST_MATH_STATIC constexpr bool is_exact = std::numeric_limits<unsigned short>::is_exact;
0177 BOOST_MATH_STATIC constexpr bool has_infinity = std::numeric_limits<unsigned short>::has_infinity;
0178 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = std::numeric_limits<unsigned short>::has_quiet_NaN;
0179 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = std::numeric_limits<unsigned short>::has_signaling_NaN;
0180
0181 BOOST_MATH_STATIC constexpr std::float_round_style round_style = std::numeric_limits<unsigned short>::round_style;
0182 BOOST_MATH_STATIC constexpr bool is_iec559 = std::numeric_limits<unsigned short>::is_iec559;
0183 BOOST_MATH_STATIC constexpr bool is_bounded = std::numeric_limits<unsigned short>::is_bounded;
0184 BOOST_MATH_STATIC constexpr bool is_modulo = std::numeric_limits<unsigned short>::is_modulo;
0185 BOOST_MATH_STATIC constexpr int digits = std::numeric_limits<unsigned short>::digits;
0186 BOOST_MATH_STATIC constexpr int digits10 = std::numeric_limits<unsigned short>::digits10;
0187 BOOST_MATH_STATIC constexpr int max_digits10 = std::numeric_limits<unsigned short>::max_digits10;
0188 BOOST_MATH_STATIC constexpr int radix = std::numeric_limits<unsigned short>::radix;
0189 BOOST_MATH_STATIC constexpr int min_exponent = std::numeric_limits<unsigned short>::min_exponent;
0190 BOOST_MATH_STATIC constexpr int min_exponent10 = std::numeric_limits<unsigned short>::min_exponent10;
0191 BOOST_MATH_STATIC constexpr int max_exponent = std::numeric_limits<unsigned short>::max_exponent;
0192 BOOST_MATH_STATIC constexpr int max_exponent10 = std::numeric_limits<unsigned short>::max_exponent10;
0193 BOOST_MATH_STATIC constexpr bool traps = std::numeric_limits<unsigned short>::traps;
0194 BOOST_MATH_STATIC constexpr bool tinyness_before = std::numeric_limits<unsigned short>::tinyness_before;
0195
0196
0197 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned short (min) () { return 0; }
0198 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned short (max) () { return USHRT_MAX; }
0199 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned short lowest () { return 0; }
0200 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned short epsilon () { return 0; }
0201 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned short round_error () { return 0; }
0202 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned short infinity () { return 0; }
0203 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned short quiet_NaN () { return 0; }
0204 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned short signaling_NaN () { return 0; }
0205 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned short denorm_min () { return 0; }
0206 };
0207
0208 template <>
0209 struct numeric_limits<int>
0210 {
0211 BOOST_MATH_STATIC constexpr bool is_specialized = std::numeric_limits<int>::is_specialized;
0212 BOOST_MATH_STATIC constexpr bool is_signed = std::numeric_limits<int>::is_signed;
0213 BOOST_MATH_STATIC constexpr bool is_integer = std::numeric_limits<int>::is_integer;
0214 BOOST_MATH_STATIC constexpr bool is_exact = std::numeric_limits<int>::is_exact;
0215 BOOST_MATH_STATIC constexpr bool has_infinity = std::numeric_limits<int>::has_infinity;
0216 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = std::numeric_limits<int>::has_quiet_NaN;
0217 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = std::numeric_limits<int>::has_signaling_NaN;
0218
0219 BOOST_MATH_STATIC constexpr std::float_round_style round_style = std::numeric_limits<int>::round_style;
0220 BOOST_MATH_STATIC constexpr bool is_iec559 = std::numeric_limits<int>::is_iec559;
0221 BOOST_MATH_STATIC constexpr bool is_bounded = std::numeric_limits<int>::is_bounded;
0222 BOOST_MATH_STATIC constexpr bool is_modulo = std::numeric_limits<int>::is_modulo;
0223 BOOST_MATH_STATIC constexpr int digits = std::numeric_limits<int>::digits;
0224 BOOST_MATH_STATIC constexpr int digits10 = std::numeric_limits<int>::digits10;
0225 BOOST_MATH_STATIC constexpr int max_digits10 = std::numeric_limits<int>::max_digits10;
0226 BOOST_MATH_STATIC constexpr int radix = std::numeric_limits<int>::radix;
0227 BOOST_MATH_STATIC constexpr int min_exponent = std::numeric_limits<int>::min_exponent;
0228 BOOST_MATH_STATIC constexpr int min_exponent10 = std::numeric_limits<int>::min_exponent10;
0229 BOOST_MATH_STATIC constexpr int max_exponent = std::numeric_limits<int>::max_exponent;
0230 BOOST_MATH_STATIC constexpr int max_exponent10 = std::numeric_limits<int>::max_exponent10;
0231 BOOST_MATH_STATIC constexpr bool traps = std::numeric_limits<int>::traps;
0232 BOOST_MATH_STATIC constexpr bool tinyness_before = std::numeric_limits<int>::tinyness_before;
0233
0234
0235 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr int (min) () { return INT_MIN; }
0236 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr int (max) () { return INT_MAX; }
0237 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr int lowest () { return INT_MIN; }
0238 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr int epsilon () { return 0; }
0239 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr int round_error () { return 0; }
0240 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr int infinity () { return 0; }
0241 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr int quiet_NaN () { return 0; }
0242 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr int signaling_NaN () { return 0; }
0243 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr int denorm_min () { return 0; }
0244 };
0245
0246 template <>
0247 struct numeric_limits<unsigned int>
0248 {
0249 BOOST_MATH_STATIC constexpr bool is_specialized = std::numeric_limits<unsigned int>::is_specialized;
0250 BOOST_MATH_STATIC constexpr bool is_signed = std::numeric_limits<unsigned int>::is_signed;
0251 BOOST_MATH_STATIC constexpr bool is_integer = std::numeric_limits<unsigned int>::is_integer;
0252 BOOST_MATH_STATIC constexpr bool is_exact = std::numeric_limits<unsigned int>::is_exact;
0253 BOOST_MATH_STATIC constexpr bool has_infinity = std::numeric_limits<unsigned int>::has_infinity;
0254 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = std::numeric_limits<unsigned int>::has_quiet_NaN;
0255 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = std::numeric_limits<unsigned int>::has_signaling_NaN;
0256
0257 BOOST_MATH_STATIC constexpr std::float_round_style round_style = std::numeric_limits<unsigned int>::round_style;
0258 BOOST_MATH_STATIC constexpr bool is_iec559 = std::numeric_limits<unsigned int>::is_iec559;
0259 BOOST_MATH_STATIC constexpr bool is_bounded = std::numeric_limits<unsigned int>::is_bounded;
0260 BOOST_MATH_STATIC constexpr bool is_modulo = std::numeric_limits<unsigned int>::is_modulo;
0261 BOOST_MATH_STATIC constexpr int digits = std::numeric_limits<unsigned int>::digits;
0262 BOOST_MATH_STATIC constexpr int digits10 = std::numeric_limits<unsigned int>::digits10;
0263 BOOST_MATH_STATIC constexpr int max_digits10 = std::numeric_limits<unsigned int>::max_digits10;
0264 BOOST_MATH_STATIC constexpr int radix = std::numeric_limits<unsigned int>::radix;
0265 BOOST_MATH_STATIC constexpr int min_exponent = std::numeric_limits<unsigned int>::min_exponent;
0266 BOOST_MATH_STATIC constexpr int min_exponent10 = std::numeric_limits<unsigned int>::min_exponent10;
0267 BOOST_MATH_STATIC constexpr int max_exponent = std::numeric_limits<unsigned int>::max_exponent;
0268 BOOST_MATH_STATIC constexpr int max_exponent10 = std::numeric_limits<unsigned int>::max_exponent10;
0269 BOOST_MATH_STATIC constexpr bool traps = std::numeric_limits<unsigned int>::traps;
0270 BOOST_MATH_STATIC constexpr bool tinyness_before = std::numeric_limits<unsigned int>::tinyness_before;
0271
0272
0273 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned int (min) () { return 0; }
0274 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned int (max) () { return UINT_MAX; }
0275 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned int lowest () { return 0; }
0276 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned int epsilon () { return 0; }
0277 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned int round_error () { return 0; }
0278 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned int infinity () { return 0; }
0279 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned int quiet_NaN () { return 0; }
0280 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned int signaling_NaN () { return 0; }
0281 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned int denorm_min () { return 0; }
0282 };
0283
0284 template <>
0285 struct numeric_limits<long>
0286 {
0287 BOOST_MATH_STATIC constexpr bool is_specialized = std::numeric_limits<long>::is_specialized;
0288 BOOST_MATH_STATIC constexpr bool is_signed = std::numeric_limits<long>::is_signed;
0289 BOOST_MATH_STATIC constexpr bool is_integer = std::numeric_limits<long>::is_integer;
0290 BOOST_MATH_STATIC constexpr bool is_exact = std::numeric_limits<long>::is_exact;
0291 BOOST_MATH_STATIC constexpr bool has_infinity = std::numeric_limits<long>::has_infinity;
0292 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = std::numeric_limits<long>::has_quiet_NaN;
0293 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = std::numeric_limits<long>::has_signaling_NaN;
0294
0295 BOOST_MATH_STATIC constexpr std::float_round_style round_style = std::numeric_limits<long>::round_style;
0296 BOOST_MATH_STATIC constexpr bool is_iec559 = std::numeric_limits<long>::is_iec559;
0297 BOOST_MATH_STATIC constexpr bool is_bounded = std::numeric_limits<long>::is_bounded;
0298 BOOST_MATH_STATIC constexpr bool is_modulo = std::numeric_limits<long>::is_modulo;
0299 BOOST_MATH_STATIC constexpr int digits = std::numeric_limits<long>::digits;
0300 BOOST_MATH_STATIC constexpr int digits10 = std::numeric_limits<long>::digits10;
0301 BOOST_MATH_STATIC constexpr int max_digits10 = std::numeric_limits<long>::max_digits10;
0302 BOOST_MATH_STATIC constexpr int radix = std::numeric_limits<long>::radix;
0303 BOOST_MATH_STATIC constexpr int min_exponent = std::numeric_limits<long>::min_exponent;
0304 BOOST_MATH_STATIC constexpr int min_exponent10 = std::numeric_limits<long>::min_exponent10;
0305 BOOST_MATH_STATIC constexpr int max_exponent = std::numeric_limits<long>::max_exponent;
0306 BOOST_MATH_STATIC constexpr int max_exponent10 = std::numeric_limits<long>::max_exponent10;
0307 BOOST_MATH_STATIC constexpr bool traps = std::numeric_limits<long>::traps;
0308 BOOST_MATH_STATIC constexpr bool tinyness_before = std::numeric_limits<long>::tinyness_before;
0309
0310
0311 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long (min) () { return LONG_MIN; }
0312 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long (max) () { return LONG_MAX; }
0313 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long lowest () { return LONG_MIN; }
0314 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long epsilon () { return 0; }
0315 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long round_error () { return 0; }
0316 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long infinity () { return 0; }
0317 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long quiet_NaN () { return 0; }
0318 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long signaling_NaN () { return 0; }
0319 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long denorm_min () { return 0; }
0320 };
0321
0322 template <>
0323 struct numeric_limits<unsigned long>
0324 {
0325 BOOST_MATH_STATIC constexpr bool is_specialized = std::numeric_limits<unsigned long>::is_specialized;
0326 BOOST_MATH_STATIC constexpr bool is_signed = std::numeric_limits<unsigned long>::is_signed;
0327 BOOST_MATH_STATIC constexpr bool is_integer = std::numeric_limits<unsigned long>::is_integer;
0328 BOOST_MATH_STATIC constexpr bool is_exact = std::numeric_limits<unsigned long>::is_exact;
0329 BOOST_MATH_STATIC constexpr bool has_infinity = std::numeric_limits<unsigned long>::has_infinity;
0330 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = std::numeric_limits<unsigned long>::has_quiet_NaN;
0331 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = std::numeric_limits<unsigned long>::has_signaling_NaN;
0332
0333 BOOST_MATH_STATIC constexpr std::float_round_style round_style = std::numeric_limits<unsigned long>::round_style;
0334 BOOST_MATH_STATIC constexpr bool is_iec559 = std::numeric_limits<unsigned long>::is_iec559;
0335 BOOST_MATH_STATIC constexpr bool is_bounded = std::numeric_limits<unsigned long>::is_bounded;
0336 BOOST_MATH_STATIC constexpr bool is_modulo = std::numeric_limits<unsigned long>::is_modulo;
0337 BOOST_MATH_STATIC constexpr int digits = std::numeric_limits<unsigned long>::digits;
0338 BOOST_MATH_STATIC constexpr int digits10 = std::numeric_limits<unsigned long>::digits10;
0339 BOOST_MATH_STATIC constexpr int max_digits10 = std::numeric_limits<unsigned long>::max_digits10;
0340 BOOST_MATH_STATIC constexpr int radix = std::numeric_limits<unsigned long>::radix;
0341 BOOST_MATH_STATIC constexpr int min_exponent = std::numeric_limits<unsigned long>::min_exponent;
0342 BOOST_MATH_STATIC constexpr int min_exponent10 = std::numeric_limits<unsigned long>::min_exponent10;
0343 BOOST_MATH_STATIC constexpr int max_exponent = std::numeric_limits<unsigned long>::max_exponent;
0344 BOOST_MATH_STATIC constexpr int max_exponent10 = std::numeric_limits<unsigned long>::max_exponent10;
0345 BOOST_MATH_STATIC constexpr bool traps = std::numeric_limits<unsigned long>::traps;
0346 BOOST_MATH_STATIC constexpr bool tinyness_before = std::numeric_limits<unsigned long>::tinyness_before;
0347
0348
0349 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long (min) () { return 0; }
0350 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long (max) () { return ULONG_MAX; }
0351 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long lowest () { return 0; }
0352 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long epsilon () { return 0; }
0353 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long round_error () { return 0; }
0354 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long infinity () { return 0; }
0355 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long quiet_NaN () { return 0; }
0356 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long signaling_NaN () { return 0; }
0357 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long denorm_min () { return 0; }
0358 };
0359
0360 template <>
0361 struct numeric_limits<long long>
0362 {
0363 BOOST_MATH_STATIC constexpr bool is_specialized = std::numeric_limits<long long>::is_specialized;
0364 BOOST_MATH_STATIC constexpr bool is_signed = std::numeric_limits<long long>::is_signed;
0365 BOOST_MATH_STATIC constexpr bool is_integer = std::numeric_limits<long long>::is_integer;
0366 BOOST_MATH_STATIC constexpr bool is_exact = std::numeric_limits<long long>::is_exact;
0367 BOOST_MATH_STATIC constexpr bool has_infinity = std::numeric_limits<long long>::has_infinity;
0368 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = std::numeric_limits<long long>::has_quiet_NaN;
0369 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = std::numeric_limits<long long>::has_signaling_NaN;
0370
0371 BOOST_MATH_STATIC constexpr std::float_round_style round_style = std::numeric_limits<long long>::round_style;
0372 BOOST_MATH_STATIC constexpr bool is_iec559 = std::numeric_limits<long long>::is_iec559;
0373 BOOST_MATH_STATIC constexpr bool is_bounded = std::numeric_limits<long long>::is_bounded;
0374 BOOST_MATH_STATIC constexpr bool is_modulo = std::numeric_limits<long long>::is_modulo;
0375 BOOST_MATH_STATIC constexpr int digits = std::numeric_limits<long long>::digits;
0376 BOOST_MATH_STATIC constexpr int digits10 = std::numeric_limits<long long>::digits10;
0377 BOOST_MATH_STATIC constexpr int max_digits10 = std::numeric_limits<long long>::max_digits10;
0378 BOOST_MATH_STATIC constexpr int radix = std::numeric_limits<long long>::radix;
0379 BOOST_MATH_STATIC constexpr int min_exponent = std::numeric_limits<long long>::min_exponent;
0380 BOOST_MATH_STATIC constexpr int min_exponent10 = std::numeric_limits<long long>::min_exponent10;
0381 BOOST_MATH_STATIC constexpr int max_exponent = std::numeric_limits<long long>::max_exponent;
0382 BOOST_MATH_STATIC constexpr int max_exponent10 = std::numeric_limits<long long>::max_exponent10;
0383 BOOST_MATH_STATIC constexpr bool traps = std::numeric_limits<long long>::traps;
0384 BOOST_MATH_STATIC constexpr bool tinyness_before = std::numeric_limits<long long>::tinyness_before;
0385
0386
0387 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long long (min) () { return LLONG_MIN; }
0388 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long long (max) () { return LLONG_MAX; }
0389 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long long lowest () { return LLONG_MIN; }
0390 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long long epsilon () { return 0; }
0391 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long long round_error () { return 0; }
0392 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long long infinity () { return 0; }
0393 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long long quiet_NaN () { return 0; }
0394 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long long signaling_NaN () { return 0; }
0395 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long long denorm_min () { return 0; }
0396 };
0397
0398 template <>
0399 struct numeric_limits<unsigned long long>
0400 {
0401 BOOST_MATH_STATIC constexpr bool is_specialized = std::numeric_limits<unsigned long long>::is_specialized;
0402 BOOST_MATH_STATIC constexpr bool is_signed = std::numeric_limits<unsigned long long>::is_signed;
0403 BOOST_MATH_STATIC constexpr bool is_integer = std::numeric_limits<unsigned long long>::is_integer;
0404 BOOST_MATH_STATIC constexpr bool is_exact = std::numeric_limits<unsigned long long>::is_exact;
0405 BOOST_MATH_STATIC constexpr bool has_infinity = std::numeric_limits<unsigned long long>::has_infinity;
0406 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = std::numeric_limits<unsigned long long>::has_quiet_NaN;
0407 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = std::numeric_limits<unsigned long long>::has_signaling_NaN;
0408
0409 BOOST_MATH_STATIC constexpr std::float_round_style round_style = std::numeric_limits<unsigned long long>::round_style;
0410 BOOST_MATH_STATIC constexpr bool is_iec559 = std::numeric_limits<unsigned long long>::is_iec559;
0411 BOOST_MATH_STATIC constexpr bool is_bounded = std::numeric_limits<unsigned long long>::is_bounded;
0412 BOOST_MATH_STATIC constexpr bool is_modulo = std::numeric_limits<unsigned long long>::is_modulo;
0413 BOOST_MATH_STATIC constexpr int digits = std::numeric_limits<unsigned long long>::digits;
0414 BOOST_MATH_STATIC constexpr int digits10 = std::numeric_limits<unsigned long long>::digits10;
0415 BOOST_MATH_STATIC constexpr int max_digits10 = std::numeric_limits<unsigned long long>::max_digits10;
0416 BOOST_MATH_STATIC constexpr int radix = std::numeric_limits<unsigned long long>::radix;
0417 BOOST_MATH_STATIC constexpr int min_exponent = std::numeric_limits<unsigned long long>::min_exponent;
0418 BOOST_MATH_STATIC constexpr int min_exponent10 = std::numeric_limits<unsigned long long>::min_exponent10;
0419 BOOST_MATH_STATIC constexpr int max_exponent = std::numeric_limits<unsigned long long>::max_exponent;
0420 BOOST_MATH_STATIC constexpr int max_exponent10 = std::numeric_limits<unsigned long long>::max_exponent10;
0421 BOOST_MATH_STATIC constexpr bool traps = std::numeric_limits<unsigned long long>::traps;
0422 BOOST_MATH_STATIC constexpr bool tinyness_before = std::numeric_limits<unsigned long long>::tinyness_before;
0423
0424
0425 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long long (min) () { return 0; }
0426 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long long (max) () { return ULLONG_MAX; }
0427 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long long lowest () { return 0; }
0428 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long long epsilon () { return 0; }
0429 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long long round_error () { return 0; }
0430 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long long infinity () { return 0; }
0431 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long long quiet_NaN () { return 0; }
0432 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long long signaling_NaN () { return 0; }
0433 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long long denorm_min () { return 0; }
0434 };
0435
0436 template <>
0437 struct numeric_limits<bool>
0438 {
0439 BOOST_MATH_STATIC constexpr bool is_specialized = std::numeric_limits<bool>::is_specialized;
0440 BOOST_MATH_STATIC constexpr bool is_signed = std::numeric_limits<bool>::is_signed;
0441 BOOST_MATH_STATIC constexpr bool is_integer = std::numeric_limits<bool>::is_integer;
0442 BOOST_MATH_STATIC constexpr bool is_exact = std::numeric_limits<bool>::is_exact;
0443 BOOST_MATH_STATIC constexpr bool has_infinity = std::numeric_limits<bool>::has_infinity;
0444 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = std::numeric_limits<bool>::has_quiet_NaN;
0445 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = std::numeric_limits<bool>::has_signaling_NaN;
0446
0447 BOOST_MATH_STATIC constexpr std::float_round_style round_style = std::numeric_limits<bool>::round_style;
0448 BOOST_MATH_STATIC constexpr bool is_iec559 = std::numeric_limits<bool>::is_iec559;
0449 BOOST_MATH_STATIC constexpr bool is_bounded = std::numeric_limits<bool>::is_bounded;
0450 BOOST_MATH_STATIC constexpr bool is_modulo = std::numeric_limits<bool>::is_modulo;
0451 BOOST_MATH_STATIC constexpr int digits = std::numeric_limits<bool>::digits;
0452 BOOST_MATH_STATIC constexpr int digits10 = std::numeric_limits<bool>::digits10;
0453 BOOST_MATH_STATIC constexpr int max_digits10 = std::numeric_limits<bool>::max_digits10;
0454 BOOST_MATH_STATIC constexpr int radix = std::numeric_limits<bool>::radix;
0455 BOOST_MATH_STATIC constexpr int min_exponent = std::numeric_limits<bool>::min_exponent;
0456 BOOST_MATH_STATIC constexpr int min_exponent10 = std::numeric_limits<bool>::min_exponent10;
0457 BOOST_MATH_STATIC constexpr int max_exponent = std::numeric_limits<bool>::max_exponent;
0458 BOOST_MATH_STATIC constexpr int max_exponent10 = std::numeric_limits<bool>::max_exponent10;
0459 BOOST_MATH_STATIC constexpr bool traps = std::numeric_limits<bool>::traps;
0460 BOOST_MATH_STATIC constexpr bool tinyness_before = std::numeric_limits<bool>::tinyness_before;
0461
0462
0463 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr bool (min) () { return false; }
0464 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr bool (max) () { return true; }
0465 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr bool lowest () { return false; }
0466 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr bool epsilon () { return false; }
0467 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr bool round_error () { return false; }
0468 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr bool infinity () { return false; }
0469 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr bool quiet_NaN () { return false; }
0470 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr bool signaling_NaN () { return false; }
0471 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr bool denorm_min () { return false; }
0472 };
0473
0474 #elif defined(BOOST_MATH_HAS_NVRTC)
0475
0476 template <>
0477 struct numeric_limits<float>
0478 {
0479 BOOST_MATH_STATIC constexpr bool is_specialized = true;
0480 BOOST_MATH_STATIC constexpr bool is_signed = true;
0481 BOOST_MATH_STATIC constexpr bool is_integer = false;
0482 BOOST_MATH_STATIC constexpr bool is_exact = false;
0483 BOOST_MATH_STATIC constexpr bool has_infinity = true;
0484 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = true;
0485 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = true;
0486
0487 BOOST_MATH_STATIC constexpr bool is_iec559 = true;
0488 BOOST_MATH_STATIC constexpr bool is_bounded = true;
0489 BOOST_MATH_STATIC constexpr bool is_modulo = false;
0490 BOOST_MATH_STATIC constexpr int digits = 24;
0491 BOOST_MATH_STATIC constexpr int digits10 = 6;
0492 BOOST_MATH_STATIC constexpr int max_digits10 = 9;
0493 BOOST_MATH_STATIC constexpr int radix = 2;
0494 BOOST_MATH_STATIC constexpr int min_exponent = -125;
0495 BOOST_MATH_STATIC constexpr int min_exponent10 = -37;
0496 BOOST_MATH_STATIC constexpr int max_exponent = 128;
0497 BOOST_MATH_STATIC constexpr int max_exponent10 = 38;
0498 BOOST_MATH_STATIC constexpr bool traps = false;
0499 BOOST_MATH_STATIC constexpr bool tinyness_before = false;
0500
0501
0502 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr float (min) () { return 1.17549435e-38F; }
0503 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr float (max) () { return 3.40282347e+38F; }
0504 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr float lowest () { return -3.40282347e+38F; }
0505 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr float epsilon () { return 1.1920929e-07; }
0506 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr float round_error () { return 0.5F; }
0507 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr float infinity () { return __int_as_float(0x7f800000); }
0508 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr float quiet_NaN () { return __int_as_float(0x7fc00000); }
0509 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr float signaling_NaN () { return __int_as_float(0x7fa00000); }
0510 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr float denorm_min () { return 1.4013e-45F; }
0511 };
0512
0513 template <>
0514 struct numeric_limits<double>
0515 {
0516 BOOST_MATH_STATIC constexpr bool is_specialized = true;
0517 BOOST_MATH_STATIC constexpr bool is_signed = true;
0518 BOOST_MATH_STATIC constexpr bool is_integer = false;
0519 BOOST_MATH_STATIC constexpr bool is_exact = false;
0520 BOOST_MATH_STATIC constexpr bool has_infinity = true;
0521 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = true;
0522 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = true;
0523
0524 BOOST_MATH_STATIC constexpr bool is_iec559 = true;
0525 BOOST_MATH_STATIC constexpr bool is_bounded = true;
0526 BOOST_MATH_STATIC constexpr bool is_modulo = false;
0527 BOOST_MATH_STATIC constexpr int digits = 53;
0528 BOOST_MATH_STATIC constexpr int digits10 = 15;
0529 BOOST_MATH_STATIC constexpr int max_digits10 = 21;
0530 BOOST_MATH_STATIC constexpr int radix = 2;
0531 BOOST_MATH_STATIC constexpr int min_exponent = -1021;
0532 BOOST_MATH_STATIC constexpr int min_exponent10 = -307;
0533 BOOST_MATH_STATIC constexpr int max_exponent = 1024;
0534 BOOST_MATH_STATIC constexpr int max_exponent10 = 308;
0535 BOOST_MATH_STATIC constexpr bool traps = false;
0536 BOOST_MATH_STATIC constexpr bool tinyness_before = false;
0537
0538
0539 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr double (min) () { return 2.2250738585072014e-308; }
0540 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr double (max) () { return 1.7976931348623157e+308; }
0541 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr double lowest () { return -1.7976931348623157e+308; }
0542 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr double epsilon () { return 2.2204460492503131e-16; }
0543 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr double round_error () { return 0.5; }
0544 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr double infinity () { return __longlong_as_double(0x7ff0000000000000ULL); }
0545 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr double quiet_NaN () { return __longlong_as_double(0x7ff8000000000000ULL); }
0546 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr double signaling_NaN () { return __longlong_as_double(0x7ff4000000000000ULL); }
0547 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr double denorm_min () { return 4.9406564584124654e-324; }
0548 };
0549
0550 template <>
0551 struct numeric_limits<short>
0552 {
0553 BOOST_MATH_STATIC constexpr bool is_specialized = true;
0554 BOOST_MATH_STATIC constexpr bool is_signed = true;
0555 BOOST_MATH_STATIC constexpr bool is_integer = true;
0556 BOOST_MATH_STATIC constexpr bool is_exact = true;
0557 BOOST_MATH_STATIC constexpr bool has_infinity = false;
0558 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = false;
0559 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = false;
0560
0561 BOOST_MATH_STATIC constexpr bool is_iec559 = false;
0562 BOOST_MATH_STATIC constexpr bool is_bounded = true;
0563 BOOST_MATH_STATIC constexpr bool is_modulo = false;
0564 BOOST_MATH_STATIC constexpr int digits = 15;
0565 BOOST_MATH_STATIC constexpr int digits10 = 4;
0566 BOOST_MATH_STATIC constexpr int max_digits10 = 0;
0567 BOOST_MATH_STATIC constexpr int radix = 2;
0568 BOOST_MATH_STATIC constexpr int min_exponent = 0;
0569 BOOST_MATH_STATIC constexpr int min_exponent10 = 0;
0570 BOOST_MATH_STATIC constexpr int max_exponent = 0;
0571 BOOST_MATH_STATIC constexpr int max_exponent10 = 0;
0572 BOOST_MATH_STATIC constexpr bool traps = true;
0573 BOOST_MATH_STATIC constexpr bool tinyness_before = false;
0574
0575
0576 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr short (min) () { return -32768; }
0577 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr short (max) () { return 32767; }
0578 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr short lowest () { return -32768; }
0579 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr short epsilon () { return 0; }
0580 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr short round_error () { return 0; }
0581 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr short infinity () { return 0; }
0582 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr short quiet_NaN () { return 0; }
0583 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr short signaling_NaN () { return 0; }
0584 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr short denorm_min () { return 0; }
0585 };
0586
0587 template <>
0588 struct numeric_limits<unsigned short>
0589 {
0590 BOOST_MATH_STATIC constexpr bool is_specialized = true;
0591 BOOST_MATH_STATIC constexpr bool is_signed = false;
0592 BOOST_MATH_STATIC constexpr bool is_integer = true;
0593 BOOST_MATH_STATIC constexpr bool is_exact = true;
0594 BOOST_MATH_STATIC constexpr bool has_infinity = false;
0595 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = false;
0596 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = false;
0597
0598 BOOST_MATH_STATIC constexpr bool is_iec559 = false;
0599 BOOST_MATH_STATIC constexpr bool is_bounded = true;
0600 BOOST_MATH_STATIC constexpr bool is_modulo = true;
0601 BOOST_MATH_STATIC constexpr int digits = 16;
0602 BOOST_MATH_STATIC constexpr int digits10 = 4;
0603 BOOST_MATH_STATIC constexpr int max_digits10 = 0;
0604 BOOST_MATH_STATIC constexpr int radix = 2;
0605 BOOST_MATH_STATIC constexpr int min_exponent = 0;
0606 BOOST_MATH_STATIC constexpr int min_exponent10 = 0;
0607 BOOST_MATH_STATIC constexpr int max_exponent = 0;
0608 BOOST_MATH_STATIC constexpr int max_exponent10 = 0;
0609 BOOST_MATH_STATIC constexpr bool traps = true;
0610 BOOST_MATH_STATIC constexpr bool tinyness_before = false;
0611
0612
0613 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned short (min) () { return 0; }
0614 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned short (max) () { return 65535U; }
0615 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned short lowest () { return 0; }
0616 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned short epsilon () { return 0; }
0617 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned short round_error () { return 0; }
0618 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned short infinity () { return 0; }
0619 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned short quiet_NaN () { return 0; }
0620 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned short signaling_NaN () { return 0; }
0621 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned short denorm_min () { return 0; }
0622 };
0623
0624 template <>
0625 struct numeric_limits<int>
0626 {
0627 BOOST_MATH_STATIC constexpr bool is_specialized = true;
0628 BOOST_MATH_STATIC constexpr bool is_signed = true;
0629 BOOST_MATH_STATIC constexpr bool is_integer = true;
0630 BOOST_MATH_STATIC constexpr bool is_exact = true;
0631 BOOST_MATH_STATIC constexpr bool has_infinity = false;
0632 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = false;
0633 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = false;
0634
0635 BOOST_MATH_STATIC constexpr bool is_iec559 = false;
0636 BOOST_MATH_STATIC constexpr bool is_bounded = true;
0637 BOOST_MATH_STATIC constexpr bool is_modulo = false;
0638 BOOST_MATH_STATIC constexpr int digits = 31;
0639 BOOST_MATH_STATIC constexpr int digits10 = 9;
0640 BOOST_MATH_STATIC constexpr int max_digits10 = 0;
0641 BOOST_MATH_STATIC constexpr int radix = 2;
0642 BOOST_MATH_STATIC constexpr int min_exponent = 0;
0643 BOOST_MATH_STATIC constexpr int min_exponent10 = 0;
0644 BOOST_MATH_STATIC constexpr int max_exponent = 0;
0645 BOOST_MATH_STATIC constexpr int max_exponent10 = 0;
0646 BOOST_MATH_STATIC constexpr bool traps = true;
0647 BOOST_MATH_STATIC constexpr bool tinyness_before = false;
0648
0649
0650 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr int (min) () { return -2147483648; }
0651 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr int (max) () { return 2147483647; }
0652 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr int lowest () { return -2147483648; }
0653 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr int epsilon () { return 0; }
0654 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr int round_error () { return 0; }
0655 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr int infinity () { return 0; }
0656 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr int quiet_NaN () { return 0; }
0657 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr int signaling_NaN () { return 0; }
0658 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr int denorm_min () { return 0; }
0659 };
0660
0661 template <>
0662 struct numeric_limits<unsigned int>
0663 {
0664 BOOST_MATH_STATIC constexpr bool is_specialized = true;
0665 BOOST_MATH_STATIC constexpr bool is_signed = false;
0666 BOOST_MATH_STATIC constexpr bool is_integer = true;
0667 BOOST_MATH_STATIC constexpr bool is_exact = true;
0668 BOOST_MATH_STATIC constexpr bool has_infinity = false;
0669 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = false;
0670 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = false;
0671
0672 BOOST_MATH_STATIC constexpr bool is_iec559 = false;
0673 BOOST_MATH_STATIC constexpr bool is_bounded = true;
0674 BOOST_MATH_STATIC constexpr bool is_modulo = true;
0675 BOOST_MATH_STATIC constexpr int digits = 32;
0676 BOOST_MATH_STATIC constexpr int digits10 = 9;
0677 BOOST_MATH_STATIC constexpr int max_digits10 = 0;
0678 BOOST_MATH_STATIC constexpr int radix = 2;
0679 BOOST_MATH_STATIC constexpr int min_exponent = 0;
0680 BOOST_MATH_STATIC constexpr int min_exponent10 = 0;
0681 BOOST_MATH_STATIC constexpr int max_exponent = 0;
0682 BOOST_MATH_STATIC constexpr int max_exponent10 = 0;
0683 BOOST_MATH_STATIC constexpr bool traps = true;
0684 BOOST_MATH_STATIC constexpr bool tinyness_before = false;
0685
0686
0687 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned int (min) () { return 0; }
0688 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned int (max) () { return 4294967295U; }
0689 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned int lowest () { return 0; }
0690 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned int epsilon () { return 0; }
0691 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned int round_error () { return 0; }
0692 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned int infinity () { return 0; }
0693 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned int quiet_NaN () { return 0; }
0694 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned int signaling_NaN () { return 0; }
0695 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned int denorm_min () { return 0; }
0696 };
0697
0698 template <>
0699 struct numeric_limits<long>
0700 {
0701 BOOST_MATH_STATIC constexpr bool is_specialized = true;
0702 BOOST_MATH_STATIC constexpr bool is_signed = true;
0703 BOOST_MATH_STATIC constexpr bool is_integer = true;
0704 BOOST_MATH_STATIC constexpr bool is_exact = true;
0705 BOOST_MATH_STATIC constexpr bool has_infinity = false;
0706 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = false;
0707 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = false;
0708
0709 BOOST_MATH_STATIC constexpr bool is_iec559 = false;
0710 BOOST_MATH_STATIC constexpr bool is_bounded = true;
0711 BOOST_MATH_STATIC constexpr bool is_modulo = false;
0712 BOOST_MATH_STATIC constexpr int digits = 63;
0713 BOOST_MATH_STATIC constexpr int digits10 = 18;
0714 BOOST_MATH_STATIC constexpr int max_digits10 = 0;
0715 BOOST_MATH_STATIC constexpr int radix = 2;
0716 BOOST_MATH_STATIC constexpr int min_exponent = 0;
0717 BOOST_MATH_STATIC constexpr int min_exponent10 = 0;
0718 BOOST_MATH_STATIC constexpr int max_exponent = 0;
0719 BOOST_MATH_STATIC constexpr int max_exponent10 = 0;
0720 BOOST_MATH_STATIC constexpr bool traps = true;
0721 BOOST_MATH_STATIC constexpr bool tinyness_before = false;
0722
0723
0724 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long (min) () { return -9223372036854775808L; }
0725 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long (max) () { return 9223372036854775807L; }
0726 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long lowest () { return -9223372036854775808L; }
0727 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long epsilon () { return 0; }
0728 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long round_error () { return 0; }
0729 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long infinity () { return 0; }
0730 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long quiet_NaN () { return 0; }
0731 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long signaling_NaN () { return 0; }
0732 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long denorm_min () { return 0; }
0733 };
0734
0735 template <>
0736 struct numeric_limits<unsigned long>
0737 {
0738 BOOST_MATH_STATIC constexpr bool is_specialized = true;
0739 BOOST_MATH_STATIC constexpr bool is_signed = false;
0740 BOOST_MATH_STATIC constexpr bool is_integer = true;
0741 BOOST_MATH_STATIC constexpr bool is_exact = true;
0742 BOOST_MATH_STATIC constexpr bool has_infinity = false;
0743 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = false;
0744 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = false;
0745
0746 BOOST_MATH_STATIC constexpr bool is_iec559 = false;
0747 BOOST_MATH_STATIC constexpr bool is_bounded = true;
0748 BOOST_MATH_STATIC constexpr bool is_modulo = true;
0749 BOOST_MATH_STATIC constexpr int digits = 64;
0750 BOOST_MATH_STATIC constexpr int digits10 = 19;
0751 BOOST_MATH_STATIC constexpr int max_digits10 = 0;
0752 BOOST_MATH_STATIC constexpr int radix = 2;
0753 BOOST_MATH_STATIC constexpr int min_exponent = 0;
0754 BOOST_MATH_STATIC constexpr int min_exponent10 = 0;
0755 BOOST_MATH_STATIC constexpr int max_exponent = 0;
0756 BOOST_MATH_STATIC constexpr int max_exponent10 = 0;
0757 BOOST_MATH_STATIC constexpr bool traps = true;
0758 BOOST_MATH_STATIC constexpr bool tinyness_before = false;
0759
0760
0761 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long (min) () { return 0; }
0762 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long (max) () { return 18446744073709551615UL; }
0763 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long lowest () { return 0; }
0764 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long epsilon () { return 0; }
0765 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long round_error () { return 0; }
0766 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long infinity () { return 0; }
0767 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long quiet_NaN () { return 0; }
0768 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long signaling_NaN () { return 0; }
0769 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long denorm_min () { return 0; }
0770 };
0771
0772 template <>
0773 struct numeric_limits<long long>
0774 {
0775 BOOST_MATH_STATIC constexpr bool is_specialized = true;
0776 BOOST_MATH_STATIC constexpr bool is_signed = true;
0777 BOOST_MATH_STATIC constexpr bool is_integer = true;
0778 BOOST_MATH_STATIC constexpr bool is_exact = true;
0779 BOOST_MATH_STATIC constexpr bool has_infinity = false;
0780 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = false;
0781 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = false;
0782
0783 BOOST_MATH_STATIC constexpr bool is_iec559 = false;
0784 BOOST_MATH_STATIC constexpr bool is_bounded = true;
0785 BOOST_MATH_STATIC constexpr bool is_modulo = false;
0786 BOOST_MATH_STATIC constexpr int digits = 63;
0787 BOOST_MATH_STATIC constexpr int digits10 = 18;
0788 BOOST_MATH_STATIC constexpr int max_digits10 = 0;
0789 BOOST_MATH_STATIC constexpr int radix = 2;
0790 BOOST_MATH_STATIC constexpr int min_exponent = 0;
0791 BOOST_MATH_STATIC constexpr int min_exponent10 = 0;
0792 BOOST_MATH_STATIC constexpr int max_exponent = 0;
0793 BOOST_MATH_STATIC constexpr int max_exponent10 = 0;
0794 BOOST_MATH_STATIC constexpr bool traps = true;
0795 BOOST_MATH_STATIC constexpr bool tinyness_before = false;
0796
0797
0798 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long long (min) () { return -9223372036854775808LL; }
0799 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long long (max) () { return 9223372036854775807LL; }
0800 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long long lowest () { return -9223372036854775808LL; }
0801 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long long epsilon () { return 0; }
0802 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long long round_error () { return 0; }
0803 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long long infinity () { return 0; }
0804 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long long quiet_NaN () { return 0; }
0805 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long long signaling_NaN () { return 0; }
0806 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr long long denorm_min () { return 0; }
0807 };
0808
0809 template <>
0810 struct numeric_limits<unsigned long long>
0811 {
0812 BOOST_MATH_STATIC constexpr bool is_specialized = true;
0813 BOOST_MATH_STATIC constexpr bool is_signed = false;
0814 BOOST_MATH_STATIC constexpr bool is_integer = true;
0815 BOOST_MATH_STATIC constexpr bool is_exact = true;
0816 BOOST_MATH_STATIC constexpr bool has_infinity = false;
0817 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = false;
0818 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = false;
0819
0820 BOOST_MATH_STATIC constexpr bool is_iec559 = false;
0821 BOOST_MATH_STATIC constexpr bool is_bounded = true;
0822 BOOST_MATH_STATIC constexpr bool is_modulo = true;
0823 BOOST_MATH_STATIC constexpr int digits = 64;
0824 BOOST_MATH_STATIC constexpr int digits10 = 19;
0825 BOOST_MATH_STATIC constexpr int max_digits10 = 0;
0826 BOOST_MATH_STATIC constexpr int radix = 2;
0827 BOOST_MATH_STATIC constexpr int min_exponent = 0;
0828 BOOST_MATH_STATIC constexpr int min_exponent10 = 0;
0829 BOOST_MATH_STATIC constexpr int max_exponent = 0;
0830 BOOST_MATH_STATIC constexpr int max_exponent10 = 0;
0831 BOOST_MATH_STATIC constexpr bool traps = true;
0832 BOOST_MATH_STATIC constexpr bool tinyness_before = false;
0833
0834
0835 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long long (min) () { return 0; }
0836 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long long (max) () { return 18446744073709551615UL; }
0837 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long long lowest () { return 0; }
0838 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long long epsilon () { return 0; }
0839 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long long round_error () { return 0; }
0840 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long long infinity () { return 0; }
0841 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long long quiet_NaN () { return 0; }
0842 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long long signaling_NaN () { return 0; }
0843 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr unsigned long long denorm_min () { return 0; }
0844 };
0845
0846 template <>
0847 struct numeric_limits<bool>
0848 {
0849 BOOST_MATH_STATIC constexpr bool is_specialized = true;
0850 BOOST_MATH_STATIC constexpr bool is_signed = false;
0851 BOOST_MATH_STATIC constexpr bool is_integer = true;
0852 BOOST_MATH_STATIC constexpr bool is_exact = true;
0853 BOOST_MATH_STATIC constexpr bool has_infinity = false;
0854 BOOST_MATH_STATIC constexpr bool has_quiet_NaN = false;
0855 BOOST_MATH_STATIC constexpr bool has_signaling_NaN = false;
0856
0857 BOOST_MATH_STATIC constexpr bool is_iec559 = false;
0858 BOOST_MATH_STATIC constexpr bool is_bounded = true;
0859 BOOST_MATH_STATIC constexpr bool is_modulo = false;
0860 BOOST_MATH_STATIC constexpr int digits = 1;
0861 BOOST_MATH_STATIC constexpr int digits10 = 0;
0862 BOOST_MATH_STATIC constexpr int max_digits10 = 0;
0863 BOOST_MATH_STATIC constexpr int radix = 2;
0864 BOOST_MATH_STATIC constexpr int min_exponent = 0;
0865 BOOST_MATH_STATIC constexpr int min_exponent10 = 0;
0866 BOOST_MATH_STATIC constexpr int max_exponent = 0;
0867 BOOST_MATH_STATIC constexpr int max_exponent10 = 0;
0868 BOOST_MATH_STATIC constexpr bool traps = false;
0869 BOOST_MATH_STATIC constexpr bool tinyness_before = false;
0870
0871
0872 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr bool (min) () { return false; }
0873 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr bool (max) () { return true; }
0874 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr bool lowest () { return false; }
0875 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr bool epsilon () { return false; }
0876 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr bool round_error () { return false; }
0877 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr bool infinity () { return false; }
0878 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr bool quiet_NaN () { return false; }
0879 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr bool signaling_NaN () { return false; }
0880 BOOST_MATH_GPU_ENABLED BOOST_MATH_STATIC constexpr bool denorm_min () { return false; }
0881 };
0882
0883 #endif
0884
0885 }
0886 }
0887
0888 #endif