123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- // Copyright John Maddock 2007-8.
- // Use, modification and distribution are subject to the
- // Boost Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- #ifndef BOOST_MATH_REAL_TYPE_CONCEPT_HPP
- #define BOOST_MATH_REAL_TYPE_CONCEPT_HPP
- #include <boost/config.hpp>
- #ifdef BOOST_MSVC
- #pragma warning(push)
- #pragma warning(disable: 4100)
- #pragma warning(disable: 4510)
- #pragma warning(disable: 4610)
- #endif
- #include <boost/concept_check.hpp>
- #ifdef BOOST_MSVC
- #pragma warning(pop)
- #endif
- #include <boost/math/tools/config.hpp>
- #include <boost/math/tools/precision.hpp>
- namespace boost{ namespace math{ namespace concepts{
- template <class RealType>
- struct RealTypeConcept
- {
- template <class Other>
- void check_binary_ops(Other o)
- {
- RealType r(o);
- r = o;
- r -= o;
- r += o;
- r *= o;
- r /= o;
- r = r - o;
- r = o - r;
- r = r + o;
- r = o + r;
- r = o * r;
- r = r * o;
- r = r / o;
- r = o / r;
- bool b;
- b = r == o;
- suppress_unused_variable_warning(b);
- b = o == r;
- suppress_unused_variable_warning(b);
- b = r != o;
- suppress_unused_variable_warning(b);
- b = o != r;
- suppress_unused_variable_warning(b);
- b = r <= o;
- suppress_unused_variable_warning(b);
- b = o <= r;
- suppress_unused_variable_warning(b);
- b = r >= o;
- suppress_unused_variable_warning(b);
- b = o >= r;
- suppress_unused_variable_warning(b);
- b = r < o;
- suppress_unused_variable_warning(b);
- b = o < r;
- suppress_unused_variable_warning(b);
- b = r > o;
- suppress_unused_variable_warning(b);
- b = o > r;
- suppress_unused_variable_warning(b);
- }
- void constraints()
- {
- BOOST_MATH_STD_USING
- RealType r;
- check_binary_ops(r);
- check_binary_ops(0.5f);
- check_binary_ops(0.5);
- //check_binary_ops(0.5L);
- check_binary_ops(1);
- //check_binary_ops(1u);
- check_binary_ops(1L);
- //check_binary_ops(1uL);
- #ifndef BOOST_HAS_LONG_LONG
- check_binary_ops(1LL);
- #endif
- RealType r2 = +r;
- r2 = -r;
- r2 = fabs(r);
- r2 = abs(r);
- r2 = ceil(r);
- r2 = floor(r);
- r2 = exp(r);
- r2 = pow(r, r2);
- r2 = sqrt(r);
- r2 = log(r);
- r2 = cos(r);
- r2 = sin(r);
- r2 = tan(r);
- r2 = asin(r);
- r2 = acos(r);
- r2 = atan(r);
- int i;
- r2 = ldexp(r, i);
- r2 = frexp(r, &i);
- i = boost::math::tools::digits<RealType>();
- r2 = boost::math::tools::max_value<RealType>();
- r2 = boost::math::tools::min_value<RealType>();
- r2 = boost::math::tools::log_max_value<RealType>();
- r2 = boost::math::tools::log_min_value<RealType>();
- r2 = boost::math::tools::epsilon<RealType>();
- }
- }; // struct DistributionConcept
- }}} // namespaces
- #endif
|