1 #ifndef STAN_MATH_REV_CORE_PRECOMPUTED_GRADIENTS_HPP 2 #define STAN_MATH_REV_CORE_PRECOMPUTED_GRADIENTS_HPP 43 gradients_(gradients) {
58 const std::vector<var>& vars,
59 const std::vector<double>& gradients)
65 .alloc_array<double>(vars.
size())) {
67 "vars", vars,
"gradients", gradients);
68 for (
size_t i = 0; i < vars.size(); ++i)
69 varis_[i] = vars[i].vi_;
70 std::copy(gradients.begin(), gradients.end(),
gradients_);
78 for (
size_t i = 0; i <
size_; ++i)
79 varis_[i]->
adj_ +=
adj_ * gradients_[i];
96 const std::vector<var>& operands,
97 const std::vector<double>& gradients) {
The variable implementation base class.
Independent (input) and dependent (output) variables for gradients.
A variable implementation taking a sequence of operands and partial derivatives with respect to the o...
precomputed_gradients_vari(double val, const std::vector< var > &vars, const std::vector< double > &gradients)
Construct a precomputed vari with the specified value, operands, and gradients.
var precomputed_gradients(double value, const std::vector< var > &operands, const std::vector< double > &gradients)
This function returns a var for an expression that has the specified value, vector of operands...
void chain()
Implements the chain rule for this variable, using the prestored operands and gradient.
int size(const std::vector< T > &x)
Return the size of the specified standard vector.
double adj_
The adjoint of this variable, which is the partial derivative of this variable with respect to the ro...
void check_consistent_sizes(const char *function, const char *name1, const T1 &x1, const char *name2, const T2 &x2)
Check if the dimension of x1 is consistent with x2.
precomputed_gradients_vari(double val, size_t size, vari **varis, double *gradients)
Construct a precomputed vari with the specified value, operands, and gradients.