1 #ifndef __STAN__AGRAD__MATRIX_CPP__
2 #define __STAN__AGRAD__MATRIX_CPP__
10 var determinant(
const Eigen::Matrix<var, Eigen::Dynamic, Eigen::Dynamic>& m) {
11 if (m.rows() != m.cols())
12 throw std::domain_error (
"m must be a square matrix");
13 return m.determinant();
31 return v.asDiagonal();
39 return rv.transpose();
54 stan::math::softmax<vector_v,stan::agrad::var>(x,theta);
61 Eigen::EigenSolver<matrix_v> solver(m,
false);
63 return solver.eigenvalues().real();
69 Eigen::EigenSolver<matrix_v> solver(m);
70 return solver.eigenvectors().real();
76 Eigen::EigenSolver<matrix_v> solver(m);
77 eigenvalues = solver.eigenvalues().real();
78 eigenvectors = solver.eigenvectors().real();
84 Eigen::SelfAdjointEigenSolver<matrix_v> solver(m,Eigen::EigenvaluesOnly);
85 return solver.eigenvalues().real();
91 Eigen::SelfAdjointEigenSolver<matrix_v> solver(m);
92 return solver.eigenvectors().real();
98 Eigen::SelfAdjointEigenSolver<matrix_v> solver(m);
99 eigenvalues = solver.eigenvalues().real();
100 eigenvectors = solver.eigenvectors().real();
105 Eigen::LLT<matrix_v> llt(m.rows());
107 return llt.matrixL();
111 Eigen::JacobiSVD<matrix_v>
svd(m);
112 return svd.singularValues();
119 static const unsigned int THIN_SVD_OPTIONS
120 = Eigen::ComputeThinU | Eigen::ComputeThinV;
121 Eigen::JacobiSVD<matrix_v>
svd(m, THIN_SVD_OPTIONS);
124 s = svd.singularValues();