Stan Math Library  2.20.0
reverse mode automatic differentiation
add_diag.hpp
Go to the documentation of this file.
1 #ifndef STAN_MATH_PRIM_MAT_FUN_ADD_DIAG_HPP
2 #define STAN_MATH_PRIM_MAT_FUN_ADD_DIAG_HPP
3 
7 #include <algorithm>
8 
9 namespace stan {
10 namespace math {
20 template <typename T_m, typename T_a>
21 inline typename Eigen::Matrix<typename return_type<T_m, T_a>::type,
22  Eigen::Dynamic, Eigen::Dynamic>
23 add_diag(const Eigen::Matrix<T_m, Eigen::Dynamic, Eigen::Dynamic> &mat,
24  const T_a &to_add) {
25  Eigen::Matrix<typename return_type<T_m, T_a>::type, Eigen::Dynamic,
26  Eigen::Dynamic>
27  out = mat;
28  out.diagonal().array() += to_add;
29  return out;
30 }
31 
43 template <typename T_m, typename T_a, int R, int C>
44 inline typename Eigen::Matrix<typename return_type<T_m, T_a>::type,
45  Eigen::Dynamic, Eigen::Dynamic>
46 add_diag(const Eigen::Matrix<T_m, Eigen::Dynamic, Eigen::Dynamic> &mat,
47  const Eigen::Matrix<T_a, R, C> &to_add) {
48  const size_t length_diag = std::min(mat.rows(), mat.cols());
49  check_consistent_size("add_diag", "number of elements of to_add", to_add,
50  length_diag);
51 
52  Eigen::Matrix<typename return_type<T_m, T_a>::type, Eigen::Dynamic,
53  Eigen::Dynamic>
54  out = mat;
55  out.diagonal() += to_add;
56  return out;
57 }
58 } // namespace math
59 } // namespace stan
60 #endif
int min(const std::vector< int > &x)
Returns the minimum coefficient in the specified column vector.
Definition: min.hpp:20
Eigen::Matrix< typename return_type< T_m, T_a >::type, Eigen::Dynamic, Eigen::Dynamic > add_diag(const Eigen::Matrix< T_m, Eigen::Dynamic, Eigen::Dynamic > &mat, const T_a &to_add)
Returns a Matrix with values added along the main diagonal.
Definition: add_diag.hpp:23
void check_consistent_size(const char *function, const char *name, const T &x, size_t expected_size)
Check if the dimension of x is consistent, which is defined to be expected_size if x is a vector or 1...

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