| Stan Math Library 2.12.0 reverse mode automatic differentiation

- Main Page
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

LDLT_alloc.hpp
Go to the documentation of this file.
1 #ifndef STAN_MATH_REV_MAT_FUN_LDLT_ALLOC_HPP
2 #define STAN_MATH_REV_MAT_FUN_LDLT_ALLOC_HPP
3
4 #include <stan/math/prim/mat/fun/Eigen.hpp>
5 #include <stan/math/rev/core.hpp>
6
7 namespace stan {
8 namespace math {
19 template<int R, int C>
20 class LDLT_alloc : public chainable_alloc {
21 public:
22 LDLT_alloc() : N_(0) {}
23 explicit LDLT_alloc(const Eigen::Matrix<var, R, C> &A) : N_(0) {
24 compute(A);
25 }
26
32 inline void compute(const Eigen::Matrix<var, R, C> &A) {
33 Eigen::Matrix<double, R, C> Ad(A.rows(), A.cols());
34
35 N_ = A.rows();
36 variA_.resize(A.rows(), A.cols());
37
38 for (size_t j = 0; j < N_; j++) {
39 for (size_t i = 0; i < N_; i++) {
40 Ad(i, j) = A(i, j).val();
41 variA_(i, j) = A(i, j).vi_;
42 }
43 }
44
45 ldlt_.compute(Ad);
46 }
47
48 // Compute the log(abs(det(A))). This is just a convenience function.
49 inline double log_abs_det() const {
50 return ldlt_.vectorD().array().log().sum();
51 }
52
53 size_t N_;
54 Eigen::LDLT<Eigen::Matrix<double, R, C> > ldlt_;
55 Eigen::Matrix<vari*, R, C> variA_;
56 };
57 }
58 }
59 #endif
stan::math::LDLT_alloc::ldlt_
Eigen::LDLT< Eigen::Matrix< double, R, C > > ldlt_
Definition: LDLT_alloc.hpp:54
core.hpp
stan::math::LDLT_alloc::LDLT_alloc
LDLT_alloc()
Definition: LDLT_alloc.hpp:22
stan::math::LDLT_alloc::N_
size_t N_
Definition: LDLT_alloc.hpp:53
stan
Definition: log_sum_exp.hpp:8
stan::math::LDLT_alloc
This object stores the actual (double typed) LDLT factorization of an Eigen::Matrix along with p...
Definition: LDLT_alloc.hpp:20
stan::math::LDLT_alloc::LDLT_alloc
LDLT_alloc(const Eigen::Matrix< var, R, C > &A)
Definition: LDLT_alloc.hpp:23
Eigen.hpp
stan::math::chainable_alloc
A chainable_alloc is an object which is constructed and destructed normally but the memory lifespan i...
Definition: chainable_alloc.hpp:16
stan::math::LDLT_alloc::log_abs_det
double log_abs_det() const
Definition: LDLT_alloc.hpp:49
stan::math::LDLT_alloc::variA_
Eigen::Matrix< vari *, R, C > variA_
Definition: LDLT_alloc.hpp:55
stan::math::LDLT_alloc::compute
void compute(const Eigen::Matrix< var, R, C > &A)
Compute the LDLT factorization and store pointers to the vari's of the matrix entries to be used when...
Definition: LDLT_alloc.hpp:32

[ Stan Home Page ] © 2011–2016, Stan Development Team.