23#include <ql/errors.hpp>
24#include <ql/math/comparison.hpp>
26#include <boost/math/distributions/normal.hpp>
61 const std::string& label) {
106 labels_[node].insert(std::to_string(x));
119 variables_.insert(std::make_pair(name, node));
133 QL_FAIL(
"ComputationGraph::variable(" << name <<
") not found.");
135 QL_FAIL(
"ComputationGraph::variable(): internal error, VarDoesntExist enum '" <<
static_cast<int>(v)
136 <<
"' not covered.");
145 if (v->second != node) {
170 QL_REQUIRE(
currentRedBlockId_ > 0,
"ComputationGraph::endRedBlock(): not in an active red block.");
249 const std::vector<std::size_t>& regressor,
const std::size_t filter,
250 const std::string& label) {
253 std::vector<size_t> args;
254 args.push_back(regressand);
255 args.push_back(filter);
256 args.insert(args.end(), regressor.begin(), regressor.end());
327 static const boost::math::normal_distribution<double> n;
334 static const boost::math::normal_distribution<double> n;
std::set< std::size_t > redBlockDependencies_
const std::set< std::size_t > & redBlockDependencies() const
const std::map< std::size_t, std::set< std::string > > & labels() const
const std::map< double, std::size_t > & constants() const
std::vector< bool > isConstant_
std::size_t constant(const double c)
std::map< std::size_t, std::set< std::string > > labels_
std::size_t variable(const std::string &name, const VarDoesntExist v=VarDoesntExist::Throw)
std::map< std::string, std::size_t > variableVersion_
std::map< double, std::size_t > constants_
std::size_t nextRedBlockId_
std::vector< std::pair< std::size_t, std::size_t > > redBlockRange_
void setVariable(const std::string &name, const std::size_t node)
std::vector< double > constantValue_
const std::vector< std::size_t > & predecessors(const std::size_t node) const
std::vector< std::size_t > redBlockId_
std::size_t currentRedBlockId_
double constantValue(const std::size_t node) const
std::size_t maxNodeRequiringArg(const std::size_t node) const
std::map< std::string, std::size_t > variables_
std::size_t redBlockId(const std::size_t node) const
std::size_t insert(const std::string &label=std::string())
const std::map< std::string, std::size_t > & variables() const
std::vector< std::vector< std::size_t > > predecessors_
bool isConstant(const std::size_t node) const
std::vector< std::size_t > opId_
const std::vector< std::pair< std::size_t, std::size_t > > & redBlockRanges() const
std::vector< std::size_t > maxNodeRequiringArg_
void enableLabels(const bool b=true)
std::size_t opId(const std::size_t node) const
std::size_t cg_min(ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label)
std::size_t cg_const(ComputationGraph &g, const double value)
std::size_t cg_insert(ComputationGraph &g, const std::string &label)
std::size_t cg_indicatorGeq(ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label)
std::size_t cg_subtract(ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label)
std::size_t cg_max(ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label)
std::size_t cg_pow(ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label)
std::size_t cg_exp(ComputationGraph &g, const std::size_t a, const std::string &label)
std::size_t cg_negative(ComputationGraph &g, const std::size_t a, const std::string &label)
std::size_t cg_mult(ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label)
std::size_t cg_add(ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label)
std::size_t cg_normalCdf(ComputationGraph &g, const std::size_t a, const std::string &label)
std::size_t cg_log(ComputationGraph &g, const std::size_t a, const std::string &label)
std::size_t cg_abs(ComputationGraph &g, const std::size_t a, const std::string &label)
std::size_t cg_conditionalExpectation(ComputationGraph &g, const std::size_t regressand, const std::vector< std::size_t > ®ressor, const std::size_t filter, const std::string &label)
std::size_t cg_var(ComputationGraph &g, const std::string &name, const ComputationGraph::VarDoesntExist v)
std::size_t cg_sqrt(ComputationGraph &g, const std::size_t a, const std::string &label)
std::size_t cg_div(ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label)
std::size_t cg_normalPdf(ComputationGraph &g, const std::size_t a, const std::string &label)
std::size_t cg_indicatorEq(ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label)
std::size_t cg_indicatorGt(ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label)
static constexpr std::size_t Sqrt
static constexpr std::size_t IndicatorEq
static constexpr std::size_t Max
static constexpr std::size_t Add
static constexpr std::size_t Mult
static constexpr std::size_t IndicatorGeq
static constexpr std::size_t Log
static constexpr std::size_t Pow
static constexpr std::size_t Min
static constexpr std::size_t Negative
static constexpr std::size_t Subtract
static constexpr std::size_t NormalCdf
static constexpr std::size_t NormalPdf
static constexpr std::size_t Abs
static constexpr std::size_t ConditionalExpectation
static constexpr std::size_t IndicatorGt
static constexpr std::size_t Div
static constexpr std::size_t Exp