25#include <boost/integer.hpp>
38 static std::size_t
nan;
42 std::size_t
size()
const;
43 std::size_t
insert(
const std::string& label = std::string());
45 const std::string& label = std::string());
46 const std::vector<std::size_t>&
predecessors(
const std::size_t node)
const;
47 std::size_t
opId(
const std::size_t node)
const;
51 std::size_t
constant(
const double c);
52 const std::map<double, std::size_t>&
constants()
const;
57 const std::map<std::string, std::size_t>&
variables()
const;
58 void setVariable(
const std::string& name,
const std::size_t node);
61 const std::map<std::size_t, std::set<std::string>>&
labels()
const;
65 std::size_t
redBlockId(
const std::size_t node)
const;
66 const std::vector<std::pair<std::size_t, std::size_t>>&
redBlockRanges()
const;
83 std::map<std::size_t, std::set<std::string>>
labels_;
98 const std::string& label = std::string());
101std::size_t
cg_mult(
ComputationGraph& g,
const std::size_t a,
const std::size_t b,
const std::string& label = std::string());
102std::size_t
cg_div(
ComputationGraph& g,
const std::size_t a,
const std::size_t b,
const std::string& label = std::string());
104 const std::vector<std::size_t>& regressor,
const std::size_t filter,
105 const std::string& label = std::string());
107 const std::string& label = std::string());
109 const std::string& label = std::string());
111 const std::string& label = std::string());
112std::size_t
cg_min(
ComputationGraph& g,
const std::size_t a,
const std::size_t b,
const std::string& label = std::string());
113std::size_t
cg_max(
ComputationGraph& g,
const std::size_t a,
const std::size_t b,
const std::string& label = std::string());
118std::size_t
cg_pow(
ComputationGraph& g,
const std::size_t a,
const std::size_t b,
const std::string& label = std::string());
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)