diff options
Diffstat (limited to '3rdParty/Boost/src/boost/random')
17 files changed, 92 insertions, 89 deletions
| diff --git a/3rdParty/Boost/src/boost/random/detail/config.hpp b/3rdParty/Boost/src/boost/random/detail/config.hpp index d6bc0cc..724ab19 100644 --- a/3rdParty/Boost/src/boost/random/detail/config.hpp +++ b/3rdParty/Boost/src/boost/random/detail/config.hpp @@ -8,5 +8,5 @@   * See http://www.boost.org for most recent version including documentation.   * - * $Id: config.hpp 52492 2009-04-19 14:55:57Z steven_watanabe $ + * $Id$   */ diff --git a/3rdParty/Boost/src/boost/random/detail/const_mod.hpp b/3rdParty/Boost/src/boost/random/detail/const_mod.hpp index 9778f55..07f4ea7 100644 --- a/3rdParty/Boost/src/boost/random/detail/const_mod.hpp +++ b/3rdParty/Boost/src/boost/random/detail/const_mod.hpp @@ -8,5 +8,5 @@   * See http://www.boost.org for most recent version including documentation.   * - * $Id: const_mod.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $ + * $Id$   *   * Revision history diff --git a/3rdParty/Boost/src/boost/random/detail/disable_warnings.hpp b/3rdParty/Boost/src/boost/random/detail/disable_warnings.hpp index f3ade5e..d875004 100644 --- a/3rdParty/Boost/src/boost/random/detail/disable_warnings.hpp +++ b/3rdParty/Boost/src/boost/random/detail/disable_warnings.hpp @@ -8,5 +8,5 @@   * See http://www.boost.org for most recent version including documentation.   * - * $Id: disable_warnings.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $ + * $Id$   *   */ @@ -22,2 +22,7 @@  #pragma warning(disable:4724)  #endif + +#if defined(BOOST_GCC) && BOOST_GCC >= 40600 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wlogical-op" +#endif diff --git a/3rdParty/Boost/src/boost/random/detail/enable_warnings.hpp b/3rdParty/Boost/src/boost/random/detail/enable_warnings.hpp index 26184ea..24f3bb3 100644 --- a/3rdParty/Boost/src/boost/random/detail/enable_warnings.hpp +++ b/3rdParty/Boost/src/boost/random/detail/enable_warnings.hpp @@ -8,5 +8,5 @@   * See http://www.boost.org for most recent version including documentation.   * - * $Id: enable_warnings.hpp 58649 2010-01-02 21:23:17Z steven_watanabe $ + * $Id$   *   */ @@ -17,2 +17,6 @@  #pragma warning(pop)  #endif + +#if defined(BOOST_GCC) && BOOST_GCC >= 40600 +#pragma GCC diagnostic pop +#endif diff --git a/3rdParty/Boost/src/boost/random/detail/generator_bits.hpp b/3rdParty/Boost/src/boost/random/detail/generator_bits.hpp index 44b4248..0527614 100644 --- a/3rdParty/Boost/src/boost/random/detail/generator_bits.hpp +++ b/3rdParty/Boost/src/boost/random/detail/generator_bits.hpp @@ -8,5 +8,5 @@   * See http://www.boost.org for most recent version including documentation.   * - * $Id: generator_bits.hpp 72951 2011-07-07 04:57:37Z steven_watanabe $ + * $Id$   *   */ diff --git a/3rdParty/Boost/src/boost/random/detail/generator_seed_seq.hpp b/3rdParty/Boost/src/boost/random/detail/generator_seed_seq.hpp index 6aaf98f..7e13483 100644 --- a/3rdParty/Boost/src/boost/random/detail/generator_seed_seq.hpp +++ b/3rdParty/Boost/src/boost/random/detail/generator_seed_seq.hpp @@ -9,5 +9,5 @@   * See http://www.boost.org for most recent version including documentation.   * - * $Id: generator_seed_seq.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $ + * $Id$   *   */ diff --git a/3rdParty/Boost/src/boost/random/detail/integer_log2.hpp b/3rdParty/Boost/src/boost/random/detail/integer_log2.hpp index baee426..248243a 100644 --- a/3rdParty/Boost/src/boost/random/detail/integer_log2.hpp +++ b/3rdParty/Boost/src/boost/random/detail/integer_log2.hpp @@ -8,5 +8,5 @@   * See http://www.boost.org for most recent version including documentation.   * - * $Id: integer_log2.hpp 76145 2011-12-24 19:05:17Z danieljames $ + * $Id$   *   */ @@ -23,10 +23,10 @@ namespace random {  namespace detail { -#if !defined(BOOST_NO_CONSTEXPR) +#if !defined(BOOST_NO_CXX11_CONSTEXPR)  #define BOOST_RANDOM_DETAIL_CONSTEXPR constexpr  #elif defined(BOOST_MSVC)  #define BOOST_RANDOM_DETAIL_CONSTEXPR __forceinline  #elif defined(__GNUC__) && __GNUC__ >= 4 -#define BOOST_RANDOM_DETAIL_CONSTEXPR __attribute__((const)) __attribute__((always_inline)) +#define BOOST_RANDOM_DETAIL_CONSTEXPR inline __attribute__((__const__)) __attribute__((__always_inline__))  #else  #define BOOST_RANDOM_DETAIL_CONSTEXPR inline @@ -36,5 +36,5 @@ template<int Shift>  struct integer_log2_impl  { -#if defined(BOOST_NO_CONSTEXPR) +#if defined(BOOST_NO_CXX11_CONSTEXPR)      template<class T>      BOOST_RANDOM_DETAIL_CONSTEXPR static int apply(T t, int accum) diff --git a/3rdParty/Boost/src/boost/random/detail/large_arithmetic.hpp b/3rdParty/Boost/src/boost/random/detail/large_arithmetic.hpp index 24177dc..66f6b4e 100644 --- a/3rdParty/Boost/src/boost/random/detail/large_arithmetic.hpp +++ b/3rdParty/Boost/src/boost/random/detail/large_arithmetic.hpp @@ -8,5 +8,5 @@   * See http://www.boost.org for most recent version including documentation.   * - * $Id: large_arithmetic.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $ + * $Id$   */ @@ -32,7 +32,7 @@ struct div_t {  inline div_t muldivmod(boost::uintmax_t a, boost::uintmax_t b, boost::uintmax_t m)  { -    static const int bits = +    const int bits =          ::std::numeric_limits< ::boost::uintmax_t>::digits / 2; -    static const ::boost::uintmax_t mask = (::boost::uintmax_t(1) << bits) - 1; +    const ::boost::uintmax_t mask = (::boost::uintmax_t(1) << bits) - 1;      typedef ::boost::uint_t<bits>::fast digit_t; @@ -97,6 +97,6 @@ inline div_t muldivmod(boost::uintmax_t a, boost::uintmax_t b, boost::uintmax_t          quotient[i - 2] = q;          product[i] = 0; -        product[i-1] = (rem >> bits) & mask; -        product[i-2] = rem & mask; +        product[i-1] = static_cast<digit_t>((rem >> bits) & mask); +        product[i-2] = static_cast<digit_t>(rem & mask);      } diff --git a/3rdParty/Boost/src/boost/random/detail/operators.hpp b/3rdParty/Boost/src/boost/random/detail/operators.hpp index f27839a..597343c 100644 --- a/3rdParty/Boost/src/boost/random/detail/operators.hpp +++ b/3rdParty/Boost/src/boost/random/detail/operators.hpp @@ -8,5 +8,5 @@   * See http://www.boost.org for most recent version including documentation.   * - * $Id: operators.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $ + * $Id$   */ diff --git a/3rdParty/Boost/src/boost/random/detail/ptr_helper.hpp b/3rdParty/Boost/src/boost/random/detail/ptr_helper.hpp index 3f3fbdd..f1b983d 100644 --- a/3rdParty/Boost/src/boost/random/detail/ptr_helper.hpp +++ b/3rdParty/Boost/src/boost/random/detail/ptr_helper.hpp @@ -8,5 +8,5 @@   * See http://www.boost.org for most recent version including documentation.   * - * $Id: ptr_helper.hpp 24096 2004-07-27 03:43:34Z dgregor $ + * $Id$   *   */ @@ -33,5 +33,4 @@ struct ptr_helper  }; -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION  template<class T>  struct ptr_helper<T&> @@ -53,5 +52,4 @@ struct ptr_helper<T*>    static const T& ref(const T * p) { return *p; }  }; -#endif  } // namespace detail @@ -65,30 +63,5 @@ struct ptr_helper<T*>  //  ptr_helper.  // -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -# define BOOST_RANDOM_PTR_HELPER_SPEC(T)                \ -namespace boost { namespace random { namespace detail { \ -template<>                                              \ -struct ptr_helper<T&>                                   \ -{                                                       \ -  typedef T value_type;                                 \ -  typedef T& reference_type;                            \ -  typedef T& rvalue_type;                               \ -  static reference_type ref(T& r) { return r; }         \ -  static const T& ref(const T& r) { return r; }         \ -};                                                      \ -                                                        \ -template<>                                              \ -struct ptr_helper<T*>                                   \ -{                                                       \ -  typedef T value_type;                                 \ -  typedef T& reference_type;                            \ -  typedef T* rvalue_type;                               \ -  static reference_type ref(T * p) { return *p; }       \ -  static const T& ref(const T * p) { return *p; }       \ -};                                                      \ -}}} -#else  # define BOOST_RANDOM_PTR_HELPER_SPEC(T) -#endif   #endif // BOOST_RANDOM_DETAIL_PTR_HELPER_HPP diff --git a/3rdParty/Boost/src/boost/random/detail/seed.hpp b/3rdParty/Boost/src/boost/random/detail/seed.hpp index 979db29..55b2fa6 100644 --- a/3rdParty/Boost/src/boost/random/detail/seed.hpp +++ b/3rdParty/Boost/src/boost/random/detail/seed.hpp @@ -8,5 +8,5 @@   * See http://www.boost.org for most recent version including documentation.   * - * $Id: seed.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $ + * $Id$   */ diff --git a/3rdParty/Boost/src/boost/random/detail/seed_impl.hpp b/3rdParty/Boost/src/boost/random/detail/seed_impl.hpp index e044d45..f88cab2 100644 --- a/3rdParty/Boost/src/boost/random/detail/seed_impl.hpp +++ b/3rdParty/Boost/src/boost/random/detail/seed_impl.hpp @@ -8,5 +8,5 @@   * See http://www.boost.org for most recent version including documentation.   * - * $Id: seed_impl.hpp 72951 2011-07-07 04:57:37Z steven_watanabe $ + * $Id$   */ @@ -16,4 +16,5 @@  #include <stdexcept>  #include <boost/cstdint.hpp> +#include <boost/throw_exception.hpp>  #include <boost/config/no_tr1/cmath.hpp>  #include <boost/integer/integer_mask.hpp> @@ -254,5 +255,5 @@ IntType get_one_int(Iter& first, Iter last)      for(int j = 0; j < k; ++j) {          if(first == last) { -            throw ::std::invalid_argument("Not enough elements in call to seed."); +            boost::throw_exception(::std::invalid_argument("Not enough elements in call to seed."));          }          IntType digit = const_mod<IntType, m>::apply(IntType(*first++)); @@ -304,5 +305,5 @@ void fill_array_int_impl(Iter& first, Iter last, UIntType (&x)[n])          for(std::size_t k = 0; k < (w+31)/32; ++k) {              if(first == last) { -                throw std::invalid_argument("Not enough elements in call to seed."); +                boost::throw_exception(std::invalid_argument("Not enough elements in call to seed."));              }              val += static_cast<UIntType>(*first++) << 32*k; @@ -374,10 +375,10 @@ void fill_array_real(Iter& first, Iter last, RealType (&x)[n])          RealType mult = divisor;          for(int k = 0; k < w/32; ++k, ++first) { -            if(first == last) throw std::invalid_argument("Not enough elements in call to seed."); +            if(first == last) boost::throw_exception(std::invalid_argument("Not enough elements in call to seed."));              val += *first * mult;              mult *= two32;          }          if(mask != 0) { -            if(first == last) throw std::invalid_argument("Not enough elements in call to seed."); +            if(first == last) boost::throw_exception(std::invalid_argument("Not enough elements in call to seed."));              val += (*first & mask) * mult;              ++first; diff --git a/3rdParty/Boost/src/boost/random/detail/uniform_int_float.hpp b/3rdParty/Boost/src/boost/random/detail/uniform_int_float.hpp index ef20915..393c455 100644 --- a/3rdParty/Boost/src/boost/random/detail/uniform_int_float.hpp +++ b/3rdParty/Boost/src/boost/random/detail/uniform_int_float.hpp @@ -9,5 +9,5 @@   * See http://www.boost.org for most recent version including documentation.   * - * $Id: uniform_int_float.hpp 72951 2011-07-07 04:57:37Z steven_watanabe $ + * $Id$   *   */ diff --git a/3rdParty/Boost/src/boost/random/mersenne_twister.hpp b/3rdParty/Boost/src/boost/random/mersenne_twister.hpp index be60389..3878fee 100644 --- a/3rdParty/Boost/src/boost/random/mersenne_twister.hpp +++ b/3rdParty/Boost/src/boost/random/mersenne_twister.hpp @@ -9,7 +9,8 @@   * See http://www.boost.org for most recent version including documentation.   * - * $Id: mersenne_twister.hpp 74867 2011-10-09 23:13:31Z steven_watanabe $ + * $Id$   *   * Revision history + *  2013-10-14  fixed some warnings with Wshadow (mgaunard)   *  2001-02-18  moved to individual header files   */ @@ -41,5 +42,5 @@ namespace random {   *  pseudo-random number generator", Makoto Matsumoto and Takuji Nishimura,   *  ACM Transactions on Modeling and Computer Simulation: Special Issue on - *  Uniform Random Number Generation, Vol. 8, No. 1, January 1998, pp. 3-30.  + *  Uniform Random Number Generation, Vol. 8, No. 1, January 1998, pp. 3-30.   *  @endblockquote   * @@ -52,5 +53,5 @@ namespace random {   * The seeding from an integer was changed in April 2005 to address a   * <a href="http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html">weakness</a>. - *  + *   * The quality of the generator crucially depends on the choice of the   * parameters.  User code should employ one of the sensibly parameterized @@ -84,5 +85,5 @@ public:      BOOST_STATIC_CONSTANT(UIntType, initialization_multiplier = f);      BOOST_STATIC_CONSTANT(UIntType, default_seed = 5489u); -   +      // backwards compatibility      BOOST_STATIC_CONSTANT(UIntType, parameter_a = a); @@ -93,5 +94,5 @@ public:      BOOST_STATIC_CONSTANT(UIntType, output_c = c);      BOOST_STATIC_CONSTANT(std::size_t, output_l = l); -     +      // old Boost.Random concept requirements      BOOST_STATIC_CONSTANT(bool, has_fixed_range = false); @@ -137,5 +138,5 @@ public:      BOOST_RANDOM_DETAIL_ARITHMETIC_SEED(mersenne_twister_engine, UIntType, value)      { -        // New seeding algorithm from  +        // New seeding algorithm from          // http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html          // In the previous versions, MSBs of the seed affected only MSBs of the @@ -148,6 +149,8 @@ public:              x[i] = (f * (x[i-1] ^ (x[i-1] >> (w-2))) + i) & mask;          } + +        normalize_state();      } -     +      /**       * Seeds a mersenne_twister_engine using values produced by seq.generate(). @@ -158,11 +161,5 @@ public:          i = n; -        // fix up the state if it's all zeroes. -        if((x[0] & (~static_cast<UIntType>(0) << r)) == 0) { -            for(std::size_t j = 1; j < n; ++j) { -                if(x[j] != 0) return; -            } -            x[0] = static_cast<UIntType>(1) << (w-1); -        } +        normalize_state();      } @@ -174,13 +171,7 @@ public:          i = n; -        // fix up the state if it's all zeroes. -        if((x[0] & (~static_cast<UIntType>(0) << r)) == 0) { -            for(std::size_t j = 1; j < n; ++j) { -                if(x[j] != 0) return; -            } -            x[0] = static_cast<UIntType>(1) << (w-1); -        } +        normalize_state();      } -   +      /** Returns the smallest value that the generator can produce. */      static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () @@ -189,5 +180,5 @@ public:      static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()      { return boost::low_bits_mask_t<w>::sig_bits; } -     +      /** Produces the next value of the generator. */      result_type operator()(); @@ -224,5 +215,5 @@ public:          return os;      } -     +      /** Reads a mersenne_twister_engine from a @c std::istream */      template<class CharT, class Traits> @@ -245,17 +236,17 @@ public:       * and will thus produce identical sequences.       */ -    friend bool operator==(const mersenne_twister_engine& x, -                           const mersenne_twister_engine& y) +    friend bool operator==(const mersenne_twister_engine& x_, +                           const mersenne_twister_engine& y_)      { -        if(x.i < y.i) return x.equal_imp(y); -        else return y.equal_imp(x); +        if(x_.i < y_.i) return x_.equal_imp(y_); +        else return y_.equal_imp(x_);      } -     +      /**       * Returns true if the two generators are in different states.       */ -    friend bool operator!=(const mersenne_twister_engine& x, -                           const mersenne_twister_engine& y) -    { return !(x == y); } +    friend bool operator!=(const mersenne_twister_engine& x_, +                           const mersenne_twister_engine& y_) +    { return !(x_ == y_); }  private: @@ -334,4 +325,33 @@ private:      /** +     * Converts an arbitrary array into a valid generator state. +     * First we normalize x[0], so that it contains the same +     * value we would get by running the generator forwards +     * and then in reverse.  (The low order r bits are redundant). +     * Then, if the state consists of all zeros, we set the +     * high order bit of x[0] to 1.  This function only needs to +     * be called by seed, since the state transform preserves +     * this relationship. +     */ +    void normalize_state() +    { +        const UIntType upper_mask = (~static_cast<UIntType>(0)) << r; +        const UIntType lower_mask = ~upper_mask; +        UIntType y0 = x[m-1] ^ x[n-1]; +        if(y0 & (static_cast<UIntType>(1) << (w-1))) { +            y0 = ((y0 ^ a) << 1) | 1; +        } else { +            y0 = y0 << 1; +        } +        x[0] = (x[0] & upper_mask) | (y0 & lower_mask); + +        // fix up the state if it's all zeroes. +        for(std::size_t j = 0; j < n; ++j) { +            if(x[j] != 0) return; +        } +        x[0] = static_cast<UIntType>(1) << (w-1); +    } + +    /**       * Given a pointer to the last element of the rewind array,       * and the current size of the rewind array, finds an element @@ -355,5 +375,5 @@ private:      //  x(i-k) ... x(i) x(i+1) ... x(i-k+n-1) -    UIntType x[n];  +    UIntType x[n];      std::size_t i;  }; @@ -469,5 +489,5 @@ mersenne_twister_engine<UIntType,w,n,m,r,a,u,d,s,b,t,c,l,f>::operator()()   *  and Takuji Nishimura, ACM Transactions on Modeling and   *  Computer Simulation: Special Issue on Uniform Random Number - *  Generation, Vol. 8, No. 1, January 1998, pp. 3-30.  + *  Generation, Vol. 8, No. 1, January 1998, pp. 3-30.   *  @endblockquote   */ @@ -483,5 +503,5 @@ typedef mersenne_twister_engine<uint32_t,32,351,175,19,0xccab8ee7,   *  and Takuji Nishimura, ACM Transactions on Modeling and   *  Computer Simulation: Special Issue on Uniform Random Number - *  Generation, Vol. 8, No. 1, January 1998, pp. 3-30.  + *  Generation, Vol. 8, No. 1, January 1998, pp. 3-30.   *  @endblockquote   */ diff --git a/3rdParty/Boost/src/boost/random/uniform_int.hpp b/3rdParty/Boost/src/boost/random/uniform_int.hpp index 7ae3b92..4362652 100644 --- a/3rdParty/Boost/src/boost/random/uniform_int.hpp +++ b/3rdParty/Boost/src/boost/random/uniform_int.hpp @@ -8,5 +8,5 @@   * See http://www.boost.org for most recent version including documentation.   * - * $Id: uniform_int.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $ + * $Id$   *   * Revision history diff --git a/3rdParty/Boost/src/boost/random/uniform_int_distribution.hpp b/3rdParty/Boost/src/boost/random/uniform_int_distribution.hpp index 0612028..a175025 100644 --- a/3rdParty/Boost/src/boost/random/uniform_int_distribution.hpp +++ b/3rdParty/Boost/src/boost/random/uniform_int_distribution.hpp @@ -9,5 +9,5 @@   * See http://www.boost.org for most recent version including documentation.   * - * $Id: uniform_int_distribution.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $ + * $Id$   *   * Revision history diff --git a/3rdParty/Boost/src/boost/random/variate_generator.hpp b/3rdParty/Boost/src/boost/random/variate_generator.hpp index ac69800..6d5aac4 100644 --- a/3rdParty/Boost/src/boost/random/variate_generator.hpp +++ b/3rdParty/Boost/src/boost/random/variate_generator.hpp @@ -9,5 +9,5 @@   * See http://www.boost.org for most recent version including documentation.   * - * $Id: variate_generator.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $ + * $Id$   *   */ | 
 Swift
 Swift