#ifndef STOCHASTIC_NODE_H_ #define STOCHASTIC_NODE_H_ #include #include #include class Distribution; class StochasticNode : public Node { Distribution const * const _dist; std::vector _parameters; /* Forbid copying of Stochastic Nodes */ StochasticNode(StochasticNode const &orig); StochasticNode &operator=(StochasticNode const &rhs); public: StochasticNode(Distribution const *dist, Index const &dim = Index(1)); ~StochasticNode(); bool isBounded() const; SArray const *lowerBound(); SArray const *upperBound(); void setBounds(Node *lBound, Node *uBound); Distribution const *distribution() const; void setParameters(std::vector const ¶meters); std::vector const ¶meters() const; double logDensity() const; void forwardSample(); bool isStochastic() const; }; StochasticNode const *asStochastic(Node const *node); #endif /* STOCHASTIC_NODE_H_ */