diff options
Diffstat (limited to '3rdParty/Boost/src/boost/ratio')
-rw-r--r-- | 3rdParty/Boost/src/boost/ratio/config.hpp | 6 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/ratio/detail/mpl/abs.hpp | 8 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/ratio/detail/mpl/gcd.hpp | 2 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/ratio/detail/mpl/lcm.hpp | 2 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/ratio/detail/mpl/sign.hpp | 8 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/ratio/detail/overflow_helpers.hpp | 6 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/ratio/ratio.hpp | 66 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/ratio/ratio_fwd.hpp | 21 |
8 files changed, 103 insertions, 16 deletions
diff --git a/3rdParty/Boost/src/boost/ratio/config.hpp b/3rdParty/Boost/src/boost/ratio/config.hpp index 67a60fc..992a256 100644 --- a/3rdParty/Boost/src/boost/ratio/config.hpp +++ b/3rdParty/Boost/src/boost/ratio/config.hpp @@ -49,6 +49,12 @@ #define BOOST_RATIO_INTMAX_C(a) a##LL #endif +#ifdef UINTMAX_C +#define BOOST_RATIO_UINTMAX_C(a) UINTMAX_C(a) +#else +#define BOOST_RATIO_UINTMAX_C(a) a##ULL +#endif + #define BOOST_RATIO_INTMAX_T_MAX (0x7FFFFFFFFFFFFFFELL) diff --git a/3rdParty/Boost/src/boost/ratio/detail/mpl/abs.hpp b/3rdParty/Boost/src/boost/ratio/detail/mpl/abs.hpp index 4be1274..9154588 100644 --- a/3rdParty/Boost/src/boost/ratio/detail/mpl/abs.hpp +++ b/3rdParty/Boost/src/boost/ratio/detail/mpl/abs.hpp @@ -2,8 +2,8 @@ // // Copyright Vicente J. Botet Escriba 2010 // -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at +// Distributed under 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) // // See http://www.boost.org/libs/mpl for documentation. @@ -15,12 +15,12 @@ #include <boost/mpl/integral_c.hpp> #include <boost/mpl/aux_/na_spec.hpp> #include <boost/mpl/aux_/lambda_support.hpp> -#include <boost/mpl/aux_/config/eti.hpp> #include <boost/mpl/aux_/config/integral.hpp> #include <boost/mpl/aux_/config/static_constant.hpp> #if !defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC_2) \ && !defined(BOOST_MPL_PREPROCESSING_MODE) \ + && !defined(__CUDACC__) \ && ( defined(BOOST_MSVC) \ || BOOST_WORKAROUND(__EDG_VERSION__, <= 238) \ ) @@ -79,7 +79,7 @@ struct abs_impl<integral_c_tag> #else template< typename N > struct apply : integral_c< typename N::value_type, ((N::value < 0) ? (-N::value) : N::value ) > -#endif +#endif { }; }; diff --git a/3rdParty/Boost/src/boost/ratio/detail/mpl/gcd.hpp b/3rdParty/Boost/src/boost/ratio/detail/mpl/gcd.hpp index c8258cf..30ba1db 100644 --- a/3rdParty/Boost/src/boost/ratio/detail/mpl/gcd.hpp +++ b/3rdParty/Boost/src/boost/ratio/detail/mpl/gcd.hpp @@ -17,7 +17,6 @@ #include <boost/mpl/aux_/largest_int.hpp> #include <boost/mpl/aux_/na_spec.hpp> #include <boost/mpl/aux_/lambda_support.hpp> -#include <boost/mpl/aux_/config/eti.hpp> #include <boost/mpl/aux_/config/integral.hpp> #include <boost/mpl/aux_/config/static_constant.hpp> #include <boost/mpl/aux_/config/dependent_nttp.hpp> @@ -25,6 +24,7 @@ #if !defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC_2) \ && !defined(BOOST_MPL_PREPROCESSING_MODE) \ + && !defined(__CUDACC__) \ && ( defined(BOOST_MSVC) \ || BOOST_WORKAROUND(__EDG_VERSION__, <= 238) \ ) diff --git a/3rdParty/Boost/src/boost/ratio/detail/mpl/lcm.hpp b/3rdParty/Boost/src/boost/ratio/detail/mpl/lcm.hpp index 546d0e1..1792660 100644 --- a/3rdParty/Boost/src/boost/ratio/detail/mpl/lcm.hpp +++ b/3rdParty/Boost/src/boost/ratio/detail/mpl/lcm.hpp @@ -17,7 +17,6 @@ #include <boost/mpl/aux_/largest_int.hpp> #include <boost/mpl/aux_/na_spec.hpp> #include <boost/mpl/aux_/lambda_support.hpp> -#include <boost/mpl/aux_/config/eti.hpp> #include <boost/mpl/aux_/config/integral.hpp> #include <boost/mpl/aux_/config/static_constant.hpp> #include <boost/mpl/aux_/config/dependent_nttp.hpp> @@ -25,6 +24,7 @@ #if !defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC_2) \ && !defined(BOOST_MPL_PREPROCESSING_MODE) \ + && !defined(__CUDACC__) \ && ( defined(BOOST_MSVC) \ || BOOST_WORKAROUND(__EDG_VERSION__, <= 238) \ ) diff --git a/3rdParty/Boost/src/boost/ratio/detail/mpl/sign.hpp b/3rdParty/Boost/src/boost/ratio/detail/mpl/sign.hpp index af201eb..fa1c555 100644 --- a/3rdParty/Boost/src/boost/ratio/detail/mpl/sign.hpp +++ b/3rdParty/Boost/src/boost/ratio/detail/mpl/sign.hpp @@ -2,8 +2,8 @@ // // Copyright Vicente J. Botet Escriba 2010 // -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at +// Distributed under 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) // // See http://www.boost.org/libs/mpl for documentation. @@ -15,12 +15,12 @@ #include <boost/mpl/integral_c.hpp> #include <boost/mpl/aux_/na_spec.hpp> #include <boost/mpl/aux_/lambda_support.hpp> -#include <boost/mpl/aux_/config/eti.hpp> #include <boost/mpl/aux_/config/integral.hpp> #include <boost/mpl/aux_/config/static_constant.hpp> #if !defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC_2) \ && !defined(BOOST_MPL_PREPROCESSING_MODE) \ + && !defined(__CUDACC__) \ && ( defined(BOOST_MSVC) \ || BOOST_WORKAROUND(__EDG_VERSION__, <= 238) \ ) @@ -79,7 +79,7 @@ struct sign_impl<integral_c_tag> #else template< typename N > struct apply : integral_c< typename N::value_type, (N::value == 0 ? 0 : (N::value < 0 ? -1 : 1)) > -#endif +#endif { }; }; diff --git a/3rdParty/Boost/src/boost/ratio/detail/overflow_helpers.hpp b/3rdParty/Boost/src/boost/ratio/detail/overflow_helpers.hpp index 0e292fa..ffaa603 100644 --- a/3rdParty/Boost/src/boost/ratio/detail/overflow_helpers.hpp +++ b/3rdParty/Boost/src/boost/ratio/detail/overflow_helpers.hpp @@ -40,7 +40,7 @@ time2_demo contained this comment: #include <limits> #include <boost/cstdint.hpp> #include <boost/type_traits/integral_constant.hpp> -#include <boost/utility/enable_if.hpp> +#include <boost/core/enable_if.hpp> #include <boost/integer_traits.hpp> // @@ -133,7 +133,7 @@ namespace ratio_detail class br_mul { static const boost::intmax_t nan = - (BOOST_RATIO_INTMAX_C(1) << (sizeof(boost::intmax_t) * CHAR_BIT - 1)); + boost::intmax_t(BOOST_RATIO_UINTMAX_C(1) << (sizeof(boost::intmax_t) * CHAR_BIT - 1)); static const boost::intmax_t min = boost::integer_traits<boost::intmax_t>::const_min; static const boost::intmax_t max = boost::integer_traits<boost::intmax_t>::const_max; @@ -172,7 +172,7 @@ namespace ratio_detail template <boost::intmax_t X, boost::intmax_t Y> class br_div { - static const boost::intmax_t nan = (1LL << (sizeof(boost::intmax_t) * CHAR_BIT - 1)); + static const boost::intmax_t nan = boost::intmax_t(BOOST_RATIO_UINTMAX_C(1) << (sizeof(boost::intmax_t) * CHAR_BIT - 1)); static const boost::intmax_t min = boost::integer_traits<boost::intmax_t>::const_min; static const boost::intmax_t max = boost::integer_traits<boost::intmax_t>::const_max; diff --git a/3rdParty/Boost/src/boost/ratio/ratio.hpp b/3rdParty/Boost/src/boost/ratio/ratio.hpp index 546e8f0..824cbf0 100644 --- a/3rdParty/Boost/src/boost/ratio/ratio.hpp +++ b/3rdParty/Boost/src/boost/ratio/ratio.hpp @@ -42,7 +42,7 @@ time2_demo contained this comment: #include <limits> #include <boost/cstdint.hpp> #include <boost/type_traits/integral_constant.hpp> -#include <boost/utility/enable_if.hpp> +#include <boost/core/enable_if.hpp> #include <boost/integer_traits.hpp> #include <boost/ratio/ratio_fwd.hpp> #include <boost/ratio/detail/overflow_helpers.hpp> @@ -128,7 +128,7 @@ const boost::intmax_t ratio<N, D>::den; //----------------------------------------------------------------------------// // // -// 20.6.2 Arithmetic on ratio types [ratio.arithmetic] // +// 20.6.2 Arithmetic on ratio types [ratio.arithmetic] // // // //----------------------------------------------------------------------------// @@ -158,7 +158,7 @@ struct ratio_divide //----------------------------------------------------------------------------// // // -// 20.6.3 Comparasion of ratio types [ratio.comparison] // +// 20.6.3 Comparision of ratio types [ratio.comparison] // // // //----------------------------------------------------------------------------// @@ -204,6 +204,12 @@ struct ratio_gcd : { }; + //----------------------------------------------------------------------------// + // // + // More arithmetic on ratio types [ratio.arithmetic] // + // // + //----------------------------------------------------------------------------// + #ifdef BOOST_RATIO_EXTENSIONS template <class R> struct ratio_negate @@ -220,12 +226,66 @@ struct ratio_sign : mpl::sign_c<boost::intmax_t, R::num> { }; + +template <class R> +struct ratio_inverse + : ratio<R::den, R::num>::type +{ +}; + + template <class R1, class R2> struct ratio_lcm : ratio<mpl::lcm_c<boost::intmax_t, R1::num, R2::num>::value, mpl::gcd_c<boost::intmax_t, R1::den, R2::den>::value>::type { }; + +template <class R1, class R2> +struct ratio_modulo : + ratio<(R1::num * R2::den) % (R2::num * R1::den), R1::den * R2::den>::type +{ +}; + +namespace detail { + template <class R1, class R2, bool r1ltr2> + struct ratio_min : R1 {}; + template <class R1, class R2> + struct ratio_min<R1,R2,false> : R2 {}; + + template <class R1, class R2, bool r1ltr2> + struct ratio_max : R2 {}; + template <class R1, class R2> + struct ratio_max<R1,R2,false> : R1 {}; +} + +template <class R1, class R2> +struct ratio_min : detail::ratio_min<R1, R2, ratio_less<R1,R2>::value>::type +{ +}; + +template <class R1, class R2> +struct ratio_max : detail::ratio_max<R1, R2, ratio_less<R1,R2>::value>::type +{ +}; + +template<typename R, int p> +struct ratio_power : + ratio_multiply< + typename ratio_power<R, p%2>::type, + typename ratio_power<typename ratio_multiply<R, R>::type, p/2>::type + >::type +{}; + +template<typename R> +struct ratio_power<R, 0> : ratio<1>::type {}; + +template<typename R> +struct ratio_power<R, 1> : R {}; + +template<typename R> +struct ratio_power<R, -1> : ratio_divide<ratio<1>, R>::type {}; + #endif } // namespace boost diff --git a/3rdParty/Boost/src/boost/ratio/ratio_fwd.hpp b/3rdParty/Boost/src/boost/ratio/ratio_fwd.hpp index 0882e0b..0836d55 100644 --- a/3rdParty/Boost/src/boost/ratio/ratio_fwd.hpp +++ b/3rdParty/Boost/src/boost/ratio/ratio_fwd.hpp @@ -51,6 +51,14 @@ template <class R1, class R2> struct ratio_add; template <class R1, class R2> struct ratio_subtract; template <class R1, class R2> struct ratio_multiply; template <class R1, class R2> struct ratio_divide; +#ifdef BOOST_RATIO_EXTENSIONS +template <class R1, class R2> struct ratio_gcd; +template <class R1, class R2> struct ratio_lcm; +template <class R> struct ratio_negate; +template <class R> struct ratio_abs; +template <class R> struct ratio_sign; +template <class R, int P> struct ratio_power; +#endif // ratio comparison template <class R1, class R2> struct ratio_equal; @@ -78,6 +86,19 @@ typedef ratio< BOOST_RATIO_INTMAX_C(1000000000000), BOOST_RATIO_INTMAX_C(1) typedef ratio< BOOST_RATIO_INTMAX_C(1000000000000000), BOOST_RATIO_INTMAX_C(1)> peta; typedef ratio<BOOST_RATIO_INTMAX_C(1000000000000000000), BOOST_RATIO_INTMAX_C(1)> exa; +#ifdef BOOST_RATIO_EXTENSIONS + +#define BOOST_RATIO_1024 BOOST_RATIO_INTMAX_C(1024) + +// convenience IEC typedefs +typedef ratio< BOOST_RATIO_1024> kibi; +typedef ratio< BOOST_RATIO_1024*BOOST_RATIO_1024> mebi; +typedef ratio< BOOST_RATIO_1024*BOOST_RATIO_1024*BOOST_RATIO_1024> gibi; +typedef ratio< BOOST_RATIO_1024*BOOST_RATIO_1024*BOOST_RATIO_1024*BOOST_RATIO_1024> tebi; +typedef ratio< BOOST_RATIO_1024*BOOST_RATIO_1024*BOOST_RATIO_1024*BOOST_RATIO_1024*BOOST_RATIO_1024> pebi; +typedef ratio<BOOST_RATIO_1024*BOOST_RATIO_1024*BOOST_RATIO_1024*BOOST_RATIO_1024*BOOST_RATIO_1024*BOOST_RATIO_1024> exbi; + +#endif } // namespace boost |