1 #ifndef STAN__AGRAD__REV__MATRIX__TCROSSPROD_HPP
2 #define STAN__AGRAD__REV__MATRIX__TCROSSPROD_HPP
5 #include <boost/math/tools/promotion.hpp>
39 for (
int m = 0; m < M.rows(); ++m)
40 for (
int n = 0; n < M.cols(); ++n)
41 vs[pos++] = M(m,n).vi_;
42 for (
int m = 0; m < M.rows(); ++m)
43 MMt(m,m) =
var(
new dot_self_vari(vs + m * M.cols(),M.cols()));
44 for (
int m = 0; m < M.rows(); ++m) {
45 for (
int n = 0; n < m; ++n) {
46 MMt(m,n) =
var(
new dot_product_vari<var,var>(vs + m * M.cols(),
memory::stack_alloc memalloc_
Eigen::Matrix< var, Eigen::Dynamic, Eigen::Dynamic > matrix_v
The type of a matrix holding stan::agrad::var values.
The variable implementation base class.
void * alloc(size_t len)
Return a newly allocated block of memory of the appropriate size managed by the stack allocator...
Independent (input) and dependent (output) variables for gradients.
Eigen::Matrix< fvar< T >, R, R > tcrossprod(const Eigen::Matrix< fvar< T >, R, C > &m)