1 #ifndef STAN_MATH_REV_CORE_PRECOMPUTED_GRADIENTS_HPP 2 #define STAN_MATH_REV_CORE_PRECOMPUTED_GRADIENTS_HPP 38 :
vari(val), size_(size), varis_(varis), gradients_(gradients) {}
52 const std::vector<double>& gradients)
57 gradients_(
ChainableStack::instance_->memalloc_.alloc_array<double>(
60 "gradients", gradients);
61 for (
size_t i = 0; i < vars.size(); ++i)
62 varis_[i] = vars[i].vi_;
71 for (
size_t i = 0; i <
size_; ++i)
72 varis_[i]->
adj_ +=
adj_ * gradients_[i];
89 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...
This struct always provides access to the autodiff stack using the singleton pattern.
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.
const kernel_cl< in_buffer, out_buffer, int, int > copy("copy", {indexing_helpers, copy_kernel_code})
See the docs for copy() .