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>
26 if (K == 0)
return LLt;
33 Knz = (K-J)*J + (J * (J + 1)) / 2;
35 Knz = (K * (K + 1)) / 2;
38 for (
int m = 0; m < K; ++m)
39 for (
int n = 0; n < ((J < (m+1))?J:(m+1)); ++n) {
40 vs[pos++] = L(m,n).vi_;
42 for (
int m = 0, mpos=0; m < K; ++m, mpos += (J < m)?J:m) {
43 LLt(m,m) =
var(
new dot_self_vari(vs + mpos, (J < (m+1))?J:(m+1)));
44 for (
int n = 0, npos = 0; n < m; ++n, npos += (J < n)?J:n) {
45 LLt(m,n) = LLt(n,m) =
var(
new dot_product_vv_vari(vs + mpos, vs + npos, (J < (n+1))?J:(n+1)));