2020#include < ql/math/randomnumbers/burley2020sobolrsg.hpp>
2121#include < ql/math/randomnumbers/mt19937uniformrng.hpp>
2222#include < boost/functional/hash.hpp>
23+ #include < iostream>
2324
2425namespace QuantLib {
2526
@@ -106,15 +107,19 @@ namespace QuantLib {
106107 }
107108
108109 const std::vector<std::uint32_t >& Burley2020SobolRsg::nextInt32Sequence () const {
109- const auto & seq =
110- sobolRsg_->skipTo (nested_uniform_scramble (nextSequenceCounter_, group4Seeds_[0 ]));
110+ auto n = nested_uniform_scramble (nextSequenceCounter_, group4Seeds_[0 ]);
111+ const auto & seq = sobolRsg_->skipTo (n);
112+ std::cout << " nextInt32Sequence(): nested_uniform_scramble(" << nextSequenceCounter_ << " ," << group4Seeds_[0 ] << " ) = " << n << std::endl;
111113 std::copy (seq.begin (), seq.end (), integerSequence_.begin ());
112114 Size i = 0 , group = 0 ;
113115 do {
114116 Size seed = group4Seeds_[group++];
115117 for (Size g = 0 ; g < 4 && i < dimensionality_; ++g, ++i) {
116118 boost::hash_combine (seed, g);
117119 integerSequence_[i] = nested_uniform_scramble (integerSequence_[i], seed);
120+ std::cout << " nextInt32Sequence(): nested_uniform_scramble(" << integerSequence_[i]
121+ << " ," << seed << " ) = " << integerSequence_[i] << " (i=" << i
122+ << " )" << std::endl;
118123 }
119124 } while (i < dimensionality_);
120125 ++nextSequenceCounter_;
@@ -124,8 +129,11 @@ namespace QuantLib {
124129 const SobolRsg::sample_type& Burley2020SobolRsg::nextSequence () const {
125130 const std::vector<std::uint32_t >& v = nextInt32Sequence ();
126131 // normalize to get a double in (0,1)
127- for (Size k = 0 ; k < dimensionality_; ++k)
132+ for (Size k = 0 ; k < dimensionality_; ++k) {
128133 sequence_.value [k] = static_cast <double >(v[k]) / 4294967296.0 ;
134+ std::cout << " nextSequence(): " << v[k] << " / 4294967296.0 = " << sequence_.value [k]
135+ << " (k=" << k << " )" << std::endl;
136+ }
129137 return sequence_;
130138 }
131139}
0 commit comments