$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r68823 - trunk/boost/random
From: steven_at_[hidden]
Date: 2011-02-12 23:05:28
Author: steven_watanabe
Date: 2011-02-12 23:05:26 EST (Sat, 12 Feb 2011)
New Revision: 68823
URL: http://svn.boost.org/trac/boost/changeset/68823
Log:
Use unsigned types everywhere to be compatible with the standard, which is more restrictive in this respect.
Text files modified: 
   trunk/boost/random/additive_combine.hpp       |    12 ++++++------                            
   trunk/boost/random/inversive_congruential.hpp |     2 +-                                      
   trunk/boost/random/linear_congruential.hpp    |    18 +++++++++---------                      
   3 files changed, 16 insertions(+), 16 deletions(-)
Modified: trunk/boost/random/additive_combine.hpp
==============================================================================
--- trunk/boost/random/additive_combine.hpp	(original)
+++ trunk/boost/random/additive_combine.hpp	2011-02-12 23:05:26 EST (Sat, 12 Feb 2011)
@@ -184,10 +184,10 @@
 
     /** Returns the next value of the generator. */
     result_type operator()() {
-        result_type z = _mlcg1() - _mlcg2();
-        if(z < 1)
-            z += MLCG1::modulus-1;
-        return z;
+        result_type val1 = _mlcg1();
+        result_type val2 = _mlcg2();
+        if(val2 < val1) return val1 - val2;
+        else return val1 - val2 + MLCG1::modulus - 1;
     }
   
     /** Fills a range with random values */
@@ -276,8 +276,8 @@
  *  @endblockquote
  */
 typedef additive_combine_engine<
-    linear_congruential_engine<int32_t, 40014, 0, 2147483563>,
-    linear_congruential_engine<int32_t, 40692, 0, 2147483399>
+    linear_congruential_engine<uint32_t, 40014, 0, 2147483563>,
+    linear_congruential_engine<uint32_t, 40692, 0, 2147483399>
 > ecuyer1988;
 
 } // namespace random
Modified: trunk/boost/random/inversive_congruential.hpp
==============================================================================
--- trunk/boost/random/inversive_congruential.hpp	(original)
+++ trunk/boost/random/inversive_congruential.hpp	2011-02-12 23:05:26 EST (Sat, 12 Feb 2011)
@@ -260,7 +260,7 @@
  *  (editors), 1995, pp. 255-262. ftp://random.mat.sbg.ac.at/pub/data/wsc95.ps
  *  @endblockquote
  */
-typedef inversive_congruential_engine<int32_t, 9102, 2147483647-36884165,
+typedef inversive_congruential_engine<uint32_t, 9102, 2147483647-36884165,
   2147483647> hellekalek1995;
 
 } // namespace random
Modified: trunk/boost/random/linear_congruential.hpp
==============================================================================
--- trunk/boost/random/linear_congruential.hpp	(original)
+++ trunk/boost/random/linear_congruential.hpp	2011-02-12 23:05:26 EST (Sat, 12 Feb 2011)
@@ -299,7 +299,7 @@
  *  the ACM, Vol. 31, No. 10, October 1988, pp. 1192-1201 
  *  @endblockquote
  */
-typedef linear_congruential_engine<int32_t, 16807, 0, 2147483647> minstd_rand0;
+typedef linear_congruential_engine<uint32_t, 16807, 0, 2147483647> minstd_rand0;
 
 /** The specialization \minstd_rand was suggested in
  *
@@ -309,7 +309,7 @@
  *  the ACM, Vol. 31, No. 10, October 1988, pp. 1192-1201
  *  @endblockquote
  */
-typedef linear_congruential_engine<int32_t, 48271, 0, 2147483647> minstd_rand;
+typedef linear_congruential_engine<uint32_t, 48271, 0, 2147483647> minstd_rand;
 
 
 #if !defined(BOOST_NO_INT64_T) && !defined(BOOST_NO_INTEGRAL_INT64_T)
@@ -326,21 +326,21 @@
 class rand48 
 {
 public:
-    typedef int32_t result_type;
+    typedef uint32_t result_type;
 
     BOOST_STATIC_CONSTANT(bool, has_fixed_range = false);
     /**
      * Returns the smallest value that the generator can produce
      */
-    static int32_t min BOOST_PREVENT_MACRO_SUBSTITUTION () { return 0; }
+    static uint32_t min BOOST_PREVENT_MACRO_SUBSTITUTION () { return 0; }
     /**
      * Returns the largest value that the generator can produce
      */
-    static int32_t max BOOST_PREVENT_MACRO_SUBSTITUTION ()
-    { return (std::numeric_limits<int32_t>::max)(); }
+    static uint32_t max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+    { return 0x7FFFFFFF; }
   
     /** Seeds the generator with the default seed. */
-    rand48() : lcf(cnv(static_cast<int32_t>(1))) {}
+    rand48() : lcf(cnv(static_cast<uint32_t>(1))) {}
     /**
      * If T is an integral type smaller than int64_t, constructs
      * a \rand48 generator with x(0) := (x0 << 16) | 0x330e.  Otherwise
@@ -360,7 +360,7 @@
     // compiler-generated copy ctor and assignment operator are fine
 
     /** Seeds the generator with the default seed. */
-    void seed() { seed(static_cast<int32_t>(1)); }
+    void seed() { seed(static_cast<uint32_t>(1)); }
     /**
      * If T is an integral type smaller than int64_t, changes
      * the current value x(n) of the generator to (x0 << 16) | 0x330e.
@@ -378,7 +378,7 @@
     template<class SeedSeq> void seed(SeedSeq& seq) { lcf.seed(cnv(seq)); }
 
     /**  Returns the next value of the generator. */
-    int32_t operator()() { return static_cast<int32_t>(lcf() >> 17); }
+    uint32_t operator()() { return static_cast<uint32_t>(lcf() >> 17); }
     
 #ifndef BOOST_NO_LONG_LONG
     /** Advances the state of the generator by @c z. */