Skip to content

Commit fcba3f9

Browse files
pcaspersjenkins
authored andcommitted
QPR-12028 random variates do not need to be variables
1 parent d0765fe commit fcba3f9

3 files changed

Lines changed: 5 additions & 3 deletions

File tree

OREData/ored/scripting/models/gaussiancamcg.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,7 @@ void GaussianCamCG::performCalculations() const {
217217
std::vector<std::size_t>(timeGrid_.size() - 1));
218218
for (Size j = 0; j < cam_->brownians() + cam_->auxBrownians(); ++j) {
219219
for (Size i = 0; i < timeGrid_.size() - 1; ++i) {
220-
randomVariates_[j][i] = cg_var(*g_, "__rv_" + std::to_string(j) + "_" + std::to_string(i),
221-
ComputationGraph::VarDoesntExist::Create);
220+
randomVariates_[j][i] = cg_insert(*g_);
222221
}
223222
}
224223

@@ -251,7 +250,7 @@ void GaussianCamCG::performCalculations() const {
251250

252251
std::size_t dateIndex = 1;
253252
for (Size i = 0; i < timeGrid_.size() - 1; ++i) {
254-
irState = cg_add(*g_, irState, cg_mult(*g_, diffusion[i], cg_var(*g_, "__rv_0_" + std::to_string(i))));
253+
irState = cg_add(*g_, irState, cg_mult(*g_, diffusion[i], randomVariates_[0][i]));
255254
if (positionInTimeGrid_[dateIndex] == i + 1) {
256255
irStates_[*std::next(effectiveSimulationDates_.begin(), dateIndex)][0] = irState;
257256
++dateIndex;

QuantExt/qle/ad/computationgraph.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,8 @@ double ComputationGraph::constantValue(const std::size_t node) const { return co
186186

187187
std::size_t cg_const(ComputationGraph& g, const double value) { return g.constant(value); }
188188

189+
std::size_t cg_insert(ComputationGraph& g, const std::string& label) { return g.insert(label); }
190+
189191
std::size_t cg_var(ComputationGraph& g, const std::string& name, const ComputationGraph::VarDoesntExist v) {
190192
return g.variable(name, v);
191193
}

QuantExt/qle/ad/computationgraph.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ class ComputationGraph {
9191
// methods to construct cg
9292

9393
std::size_t cg_const(ComputationGraph& g, const double value);
94+
std::size_t cg_insert(ComputationGraph& g, const std::string& label = std::string());
9495
std::size_t cg_var(ComputationGraph& g, const std::string& name,
9596
ComputationGraph::VarDoesntExist = ComputationGraph::VarDoesntExist::Throw);
9697
std::size_t cg_add(ComputationGraph& g, const std::size_t a, const std::size_t b,

0 commit comments

Comments
 (0)