1 #ifndef STAN_MATH_REV_MAT_FUN_MULTIPLY_LOWER_TRI_SELF_TRANSPOSE_HPP
2 #define STAN_MATH_REV_MAT_FUN_MULTIPLY_LOWER_TRI_SELF_TRANSPOSE_HPP
12 #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;
39 for (
int m = 0; m < K; ++m)
40 for (
int n = 0; n < ((J < (m+1)) ? J : (m+1)); ++n) {
41 vs[pos++] = L(m, n).vi_;
43 for (
int m = 0, mpos=0; m < K; ++m, mpos += (J < m) ? J : m) {
44 LLt(m, m) =
var(
new dot_self_vari(vs + mpos, (J < (m+1)) ? J : (m+1)));
45 for (
int n = 0, npos = 0; n < m; ++n, npos += (J < n) ? J : n) {
48 =
var(
new dot_product_vari<var, var>(vs + mpos, vs + npos,
49 (J < (n+1))?J:(n+1)));
static stack_alloc memalloc_
The variable implementation base class.
Independent (input) and dependent (output) variables for gradients.
Eigen::Matrix< var, Eigen::Dynamic, Eigen::Dynamic > matrix_v
The type of a matrix holding var values.
Eigen::Matrix< fvar< T >, R, R > multiply_lower_tri_self_transpose(const Eigen::Matrix< fvar< T >, R, C > &m)
void * alloc(size_t len)
Return a newly allocated block of memory of the appropriate size managed by the stack allocator...