1 #ifndef __STAN__AGRAD__REV__MATRIX__LOG_DETERMINANT_HPP__
2 #define __STAN__AGRAD__REV__MATRIX__LOG_DETERMINANT_HPP__
20 class log_determinant_vari :
public vari {
26 log_determinant_vari(
const Eigen::Matrix<var,R,C> &A)
27 : vari(log_determinant_vari_calc(A)),
30 _A((double*)stan::agrad::
memalloc_.alloc(sizeof(double)
38 _A[pos] = A(i,j).val();
44 double log_determinant_vari_calc(
const Eigen::Matrix<var,R,C> &A)
46 Eigen::Matrix<double,R,C> Ad(A.rows(),A.cols());
49 Ad(i,j) = A(i,j).val();
50 return Ad.fullPivHouseholderQr().logAbsDeterminant();
52 virtual void chain() {
69 template <
int R,
int C>
72 return var(
new log_determinant_vari<R,C>(m));