summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '3rdParty/Boost/src/boost/ratio')
-rw-r--r--3rdParty/Boost/src/boost/ratio/config.hpp6
-rw-r--r--3rdParty/Boost/src/boost/ratio/detail/mpl/abs.hpp8
-rw-r--r--3rdParty/Boost/src/boost/ratio/detail/mpl/gcd.hpp2
-rw-r--r--3rdParty/Boost/src/boost/ratio/detail/mpl/lcm.hpp2
-rw-r--r--3rdParty/Boost/src/boost/ratio/detail/mpl/sign.hpp8
-rw-r--r--3rdParty/Boost/src/boost/ratio/detail/overflow_helpers.hpp6
-rw-r--r--3rdParty/Boost/src/boost/ratio/ratio.hpp66
-rw-r--r--3rdParty/Boost/src/boost/ratio/ratio_fwd.hpp21
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
@@ -46,12 +46,18 @@
#ifdef INTMAX_C
#define BOOST_RATIO_INTMAX_C(a) INTMAX_C(a)
#else
#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)
#ifndef BOOST_NO_CXX11_STATIC_ASSERT
#define BOOST_RATIO_STATIC_ASSERT(CND, MSG, TYPES) static_assert(CND,MSG)
#elif defined(BOOST_RATIO_USES_STATIC_ASSERT)
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
@@ -1,29 +1,29 @@
////////////////////////////////////////////////////////////////////
//
// 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.
//
////////////////////////////////////////////////////////////////////
#ifndef BOOST_MPL_ABS_HPP_INCLUDED
#define BOOST_MPL_ABS_HPP_INCLUDED
#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) \
)
# define BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC_2
@@ -76,13 +76,13 @@ struct abs_impl<integral_c_tag>
#if defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC_2)
template< typename N > struct apply
: aux::abs_wknd< typename N::value_type, N::value >
#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
@@ -14,20 +14,20 @@
#include <boost/mpl/integral_c.hpp>
#include <boost/ratio/detail/mpl/abs.hpp>
#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>
#include <boost/cstdint.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) \
)
# define BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC_2
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
@@ -14,20 +14,20 @@
#include <boost/mpl/integral_c.hpp>
#include <boost/ratio/detail/mpl/abs.hpp>
#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>
#include <boost/cstdint.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) \
)
# define BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC_2
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
@@ -1,29 +1,29 @@
////////////////////////////////////////////////////////////////////
//
// 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.
//
////////////////////////////////////////////////////////////////////
#ifndef BOOST_MPL_SIGN_HPP_INCLUDED
#define BOOST_MPL_SIGN_HPP_INCLUDED
#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) \
)
# define BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC_2
@@ -76,13 +76,13 @@ struct sign_impl<integral_c_tag>
#if defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC_2)
template< typename N > struct apply
: aux::sign_wknd< typename N::value_type, N::value >
#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
@@ -37,13 +37,13 @@ time2_demo contained this comment:
#include <boost/ratio/detail/mpl/sign.hpp>
#include <cstdlib>
#include <climits>
#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>
//
// We simply cannot include this header on gcc without getting copious warnings of the kind:
//
// boost/integer.hpp:77:30: warning: use of C99 long long integer constant
@@ -130,13 +130,13 @@ namespace ratio_detail
};
template <boost::intmax_t X, boost::intmax_t Y>
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;
static const boost::intmax_t a_x = mpl::abs_c<boost::intmax_t, X>::value;
static const boost::intmax_t a_y = mpl::abs_c<boost::intmax_t, Y>::value;
@@ -169,13 +169,13 @@ namespace ratio_detail
};
// Not actually used but left here in case needed in future maintenance
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;
BOOST_RATIO_STATIC_ASSERT(X != nan, BOOST_RATIO_OVERFLOW_IN_DIV, ());
BOOST_RATIO_STATIC_ASSERT(Y != nan, BOOST_RATIO_OVERFLOW_IN_DIV, ());
BOOST_RATIO_STATIC_ASSERT(Y != 0, BOOST_RATIO_DIVIDE_BY_0, ());
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
@@ -39,13 +39,13 @@ time2_demo contained this comment:
#include <boost/ratio/detail/mpl/lcm.hpp>
#include <cstdlib>
#include <climits>
#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>
#ifdef BOOST_RATIO_EXTENSIONS
#include <boost/rational.hpp>
#include <boost/ratio/mpl/rational_c_tag.hpp>
@@ -125,13 +125,13 @@ const boost::intmax_t ratio<N, D>::num;
template <boost::intmax_t N, boost::intmax_t D>
const boost::intmax_t ratio<N, D>::den;
#endif
//----------------------------------------------------------------------------//
// //
-// 20.6.2 Arithmetic on ratio types [ratio.arithmetic] //
+// 20.6.2 Arithmetic on ratio types [ratio.arithmetic] //
// //
//----------------------------------------------------------------------------//
template <class R1, class R2>
struct ratio_add
: boost::ratio_detail::ratio_add<R1, R2>::type
@@ -155,13 +155,13 @@ struct ratio_divide
: boost::ratio_detail::ratio_divide<R1, R2>::type
{
};
//----------------------------------------------------------------------------//
// //
-// 20.6.3 Comparasion of ratio types [ratio.comparison] //
+// 20.6.3 Comparision of ratio types [ratio.comparison] //
// //
//----------------------------------------------------------------------------//
// ratio_equal
template <class R1, class R2>
@@ -201,12 +201,18 @@ template <class R1, class R2>
struct ratio_gcd :
ratio<mpl::gcd_c<boost::intmax_t, R1::num, R2::num>::value,
mpl::lcm_c<boost::intmax_t, R1::den, R2::den>::value>::type
{
};
+ //----------------------------------------------------------------------------//
+ // //
+ // More arithmetic on ratio types [ratio.arithmetic] //
+ // //
+ //----------------------------------------------------------------------------//
+
#ifdef BOOST_RATIO_EXTENSIONS
template <class R>
struct ratio_negate
: ratio<-R::num, R::den>::type
{
};
@@ -217,17 +223,71 @@ struct ratio_abs
};
template <class R>
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
#endif // BOOST_RATIO_RATIO_HPP
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
@@ -48,12 +48,20 @@ template <boost::intmax_t N, boost::intmax_t D = 1> class ratio;
// ratio arithmetic
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;
template <class R1, class R2> struct ratio_not_equal;
template <class R1, class R2> struct ratio_less;
template <class R1, class R2> struct ratio_less_equal;
@@ -75,10 +83,23 @@ typedef ratio< BOOST_RATIO_INTMAX_C(1000), BOOST_RATIO_INTMAX_C(1)
typedef ratio< BOOST_RATIO_INTMAX_C(1000000), BOOST_RATIO_INTMAX_C(1)> mega;
typedef ratio< BOOST_RATIO_INTMAX_C(1000000000), BOOST_RATIO_INTMAX_C(1)> giga;
typedef ratio< BOOST_RATIO_INTMAX_C(1000000000000), BOOST_RATIO_INTMAX_C(1)> tera;
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
#endif // BOOST_RATIO_HPP