annotate DEPENDENCIES/generic/include/boost/math/cstdfloat/cstdfloat_limits.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents f46d142149f5
children
rev   line source
Chris@102 1 ///////////////////////////////////////////////////////////////////////////////
Chris@102 2 // Copyright Christopher Kormanyos 2014.
Chris@102 3 // Copyright John Maddock 2014.
Chris@102 4 // Copyright Paul Bristow 2014.
Chris@102 5 // Distributed under the Boost Software License,
Chris@102 6 // Version 1.0. (See accompanying file LICENSE_1_0.txt
Chris@102 7 // or copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@102 8 //
Chris@102 9
Chris@102 10 // Implement quadruple-precision std::numeric_limits<> support.
Chris@102 11
Chris@102 12 #ifndef _BOOST_CSTDFLOAT_LIMITS_2014_01_09_HPP_
Chris@102 13 #define _BOOST_CSTDFLOAT_LIMITS_2014_01_09_HPP_
Chris@102 14
Chris@102 15 #include <boost/math/cstdfloat/cstdfloat_types.hpp>
Chris@102 16
Chris@102 17 #if defined(BOOST_CSTDFLOAT_HAS_INTERNAL_FLOAT128_T) && defined(BOOST_MATH_USE_FLOAT128) && !defined(BOOST_CSTDFLOAT_NO_LIBQUADMATH_SUPPORT)
Chris@102 18
Chris@102 19 #include <limits>
Chris@102 20
Chris@102 21 // Define the name of the global quadruple-precision function to be used for
Chris@102 22 // calculating quiet_NaN() in the specialization of std::numeric_limits<>.
Chris@102 23 #if defined(BOOST_INTEL)
Chris@102 24 #define BOOST_CSTDFLOAT_FLOAT128_SQRT __sqrtq
Chris@102 25 #elif defined(__GNUC__)
Chris@102 26 #define BOOST_CSTDFLOAT_FLOAT128_SQRT sqrtq
Chris@102 27 #endif
Chris@102 28
Chris@102 29 // Forward declaration of the quadruple-precision square root function.
Chris@102 30 extern "C" boost::math::cstdfloat::detail::float_internal128_t BOOST_CSTDFLOAT_FLOAT128_SQRT(boost::math::cstdfloat::detail::float_internal128_t) throw();
Chris@102 31
Chris@102 32 namespace std
Chris@102 33 {
Chris@102 34 template<>
Chris@102 35 class numeric_limits<boost::math::cstdfloat::detail::float_internal128_t>
Chris@102 36 {
Chris@102 37 public:
Chris@102 38 BOOST_STATIC_CONSTEXPR bool is_specialized = true;
Chris@102 39 static boost::math::cstdfloat::detail::float_internal128_t (min) () BOOST_NOEXCEPT { return BOOST_CSTDFLOAT_FLOAT128_MIN; }
Chris@102 40 static boost::math::cstdfloat::detail::float_internal128_t (max) () BOOST_NOEXCEPT { return BOOST_CSTDFLOAT_FLOAT128_MAX; }
Chris@102 41 static boost::math::cstdfloat::detail::float_internal128_t lowest() BOOST_NOEXCEPT { return -(max)(); }
Chris@102 42 BOOST_STATIC_CONSTEXPR int digits = 113;
Chris@102 43 BOOST_STATIC_CONSTEXPR int digits10 = 34;
Chris@102 44 BOOST_STATIC_CONSTEXPR int max_digits10 = 36;
Chris@102 45 BOOST_STATIC_CONSTEXPR bool is_signed = true;
Chris@102 46 BOOST_STATIC_CONSTEXPR bool is_integer = false;
Chris@102 47 BOOST_STATIC_CONSTEXPR bool is_exact = false;
Chris@102 48 BOOST_STATIC_CONSTEXPR int radix = 2;
Chris@102 49 static boost::math::cstdfloat::detail::float_internal128_t epsilon () { return BOOST_CSTDFLOAT_FLOAT128_EPS; }
Chris@102 50 static boost::math::cstdfloat::detail::float_internal128_t round_error() { return BOOST_FLOAT128_C(0.5); }
Chris@102 51 BOOST_STATIC_CONSTEXPR int min_exponent = -16381;
Chris@102 52 BOOST_STATIC_CONSTEXPR int min_exponent10 = static_cast<int>((min_exponent * 301L) / 1000L);
Chris@102 53 BOOST_STATIC_CONSTEXPR int max_exponent = +16384;
Chris@102 54 BOOST_STATIC_CONSTEXPR int max_exponent10 = static_cast<int>((max_exponent * 301L) / 1000L);
Chris@102 55 BOOST_STATIC_CONSTEXPR bool has_infinity = true;
Chris@102 56 BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = true;
Chris@102 57 BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = false;
Chris@102 58 BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = denorm_absent;
Chris@102 59 BOOST_STATIC_CONSTEXPR bool has_denorm_loss = false;
Chris@102 60 static boost::math::cstdfloat::detail::float_internal128_t infinity () { return BOOST_FLOAT128_C(1.0) / BOOST_FLOAT128_C(0.0); }
Chris@102 61 static boost::math::cstdfloat::detail::float_internal128_t quiet_NaN () { return ::BOOST_CSTDFLOAT_FLOAT128_SQRT(BOOST_FLOAT128_C(-1.0)); }
Chris@102 62 static boost::math::cstdfloat::detail::float_internal128_t signaling_NaN() { return BOOST_FLOAT128_C(0.0); }
Chris@102 63 static boost::math::cstdfloat::detail::float_internal128_t denorm_min () { return BOOST_FLOAT128_C(0.0); }
Chris@102 64 BOOST_STATIC_CONSTEXPR bool is_iec559 = true;
Chris@102 65 BOOST_STATIC_CONSTEXPR bool is_bounded = false;
Chris@102 66 BOOST_STATIC_CONSTEXPR bool is_modulo = false;
Chris@102 67 BOOST_STATIC_CONSTEXPR bool traps = false;
Chris@102 68 BOOST_STATIC_CONSTEXPR bool tinyness_before = false;
Chris@102 69 BOOST_STATIC_CONSTEXPR float_round_style round_style = round_to_nearest;
Chris@102 70 };
Chris@102 71 } // namespace std
Chris@102 72
Chris@102 73 #endif // Not BOOST_CSTDFLOAT_NO_LIBQUADMATH_SUPPORT (i.e., the user would like to have libquadmath support)
Chris@102 74
Chris@102 75 #endif // _BOOST_CSTDFLOAT_LIMITS_2014_01_09_HPP_