1 #ifndef STAN__AGRAD__REV__MATRIX__MULTIPLY_LOWER_TRI_SELF_TRANSPOSE_HPP
2 #define STAN__AGRAD__REV__MATRIX__MULTIPLY_LOWER_TRI_SELF_TRANSPOSE_HPP
5 #include <boost/math/tools/promotion.hpp>
25 if (K == 0)
return LLt;
32 Knz = (K-J)*J + (J * (J + 1)) / 2;
34 Knz = (K * (K + 1)) / 2;
37 for (
int m = 0; m < K; ++m)
38 for (
int n = 0; n < ((J < (m+1))?J:(m+1)); ++n) {
39 vs[pos++] = L(m,n).vi_;
41 for (
int m = 0, mpos=0; m < K; ++m, mpos += (J < m)?J:m) {
42 LLt(m,m) =
var(
new dot_self_vari(vs + mpos, (J < (m+1))?J:(m+1)));
43 for (
int n = 0, npos = 0; n < m; ++n, npos += (J < n)?J:n) {
44 LLt(m,n) = LLt(n,m) =
var(
new dot_product_vari<var,var>(vs + mpos, vs + npos, (J < (n+1))?J:(n+1)));
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 > multiply_lower_tri_self_transpose(const Eigen::Matrix< fvar< T >, R, C > &m)