@@ -236,8 +236,8 @@ std::vector<std::vector<std::size_t>> BasicCpuContext::createInputVariates(const
236236 rng_ = std::make_unique<MersenneTwisterUniformRng>(settings_.rngSeed );
237237 }
238238
239- if (variates_.size () < dim * steps) {
240- for (std::size_t i = variates_.size (); i < dim * steps; ++i) {
239+ if (variates_.size () < numberOfVariates_[currentId_ - 1 ] + dim * steps) {
240+ for (std::size_t i = variates_.size (); i < numberOfVariates_[currentId_ - 1 ] + dim * steps; ++i) {
241241 variates_.push_back (RandomVariable (size_[currentId_ - 1 ]));
242242 for (std::size_t j = 0 ; j < variates_.back ().size (); ++j)
243243 variates_.back ().set (j, icn_ (rng_->nextReal ()));
@@ -247,11 +247,11 @@ std::vector<std::vector<std::size_t>> BasicCpuContext::createInputVariates(const
247247 std::vector<std::vector<std::size_t >> resultIds (dim, std::vector<std::size_t >(steps));
248248 for (std::size_t i = 0 ; i < dim; ++i) {
249249 for (std::size_t j = 0 ; j < steps; ++j) {
250- resultIds[i][j] = numberOfInputVars_[currentId_ - 1 ] + i * steps + j;
250+ resultIds[i][j] = numberOfInputVars_[currentId_ - 1 ] + numberOfVariates_[currentId_ - 1 ] + i * steps + j;
251251 }
252252 }
253253
254- numberOfVariates_[currentId_ - 1 ] = dim * steps;
254+ numberOfVariates_[currentId_ - 1 ] + = dim * steps;
255255
256256 return resultIds;
257257}
@@ -368,8 +368,9 @@ void BasicCpuContext::finalizeCalculation(std::vector<double*>& output) {
368368 RandomVariable* v;
369369 if (id < numberOfInputVars_[currentId_ - 1 ])
370370 v = &values_[id];
371- else if (id < numberOfInputVars_[currentId_ - 1 ] + numberOfVariates_[currentId_ - 1 ])
371+ else if (id < numberOfInputVars_[currentId_ - 1 ] + numberOfVariates_[currentId_ - 1 ]) {
372372 v = &variates_[id - numberOfInputVars_[currentId_ - 1 ]];
373+ }
373374 else
374375 v = &values_[id - numberOfVariates_[currentId_ - 1 ]];
375376 for (Size j = 0 ; j < size_[currentId_ - 1 ]; ++j) {
0 commit comments