1 #ifndef STAN_MATH_PRIM_MAT_FUN_TO_MATRIX_HPP 2 #define STAN_MATH_PRIM_MAT_FUN_TO_MATRIX_HPP 4 #include <boost/math/tools/promotion.hpp> 24 template <
typename T,
int R,
int C>
25 inline Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>
to_matrix(
26 const Eigen::Matrix<T, R, C>& x) {
39 inline Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>
to_matrix(
40 const std::vector<Eigen::Matrix<T, 1, Eigen::Dynamic> >& x) {
43 return Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>(0, 0);
44 int cols = x[0].size();
45 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> result(rows, cols);
46 for (
int i = 0, ij = 0; i <
cols; i++)
47 for (
int j = 0; j <
rows; j++, ij++)
61 inline Eigen::Matrix<typename boost::math::tools::promote_args<T, double>::type,
62 Eigen::Dynamic, Eigen::Dynamic>
64 using boost::math::tools::promote_args;
65 size_t rows = x.size();
67 return Eigen::Matrix<typename promote_args<T, double>::type, Eigen::Dynamic,
68 Eigen::Dynamic>(0, 0);
69 size_t cols = x[0].size();
70 Eigen::Matrix<typename promote_args<T, double>::type, Eigen::Dynamic,
73 for (
size_t i = 0, ij = 0; i <
cols; i++)
74 for (
size_t j = 0; j <
rows; j++, ij++)
91 template <
typename T,
int R,
int C>
92 inline Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>
to_matrix(
93 const Eigen::Matrix<T, R, C>& x,
int m,
int n) {
94 static const char*
function =
"to_matrix(matrix)";
95 check_size_match(
function,
"rows * columns", m * n,
"vector size", x.size());
96 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> y = x;
113 template <
typename T>
114 inline Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>
to_matrix(
115 const std::vector<T>& x,
int m,
int n) {
116 static const char*
function =
"to_matrix(array)";
117 check_size_match(
function,
"rows * columns", m * n,
"vector size", x.size());
118 return Eigen::Map<const Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> >(
133 inline Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>
to_matrix(
134 const std::vector<int>& x,
int m,
int n) {
135 static const char*
function =
"to_matrix(array)";
138 Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> result(m, n);
139 for (
int i = 0; i <
size; i++)
160 template <
typename T,
int R,
int C>
161 inline Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>
to_matrix(
162 const Eigen::Matrix<T, R, C>& x,
int m,
int n,
bool col_major) {
167 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> result(m, n);
168 for (
int i = 0, ij = 0; i < m; i++)
169 for (
int j = 0; j < n; j++, ij++)
170 result(i, j) = x(ij);
190 template <
typename T>
191 inline Eigen::Matrix<typename boost::math::tools::promote_args<T, double>::type,
192 Eigen::Dynamic, Eigen::Dynamic>
193 to_matrix(
const std::vector<T>& x,
int m,
int n,
bool col_major) {
198 Eigen::Matrix<typename boost::math::tools::promote_args<T, double>::type,
199 Eigen::Dynamic, Eigen::Dynamic>
201 for (
int i = 0, ij = 0; i < m; i++)
202 for (
int j = 0; j < n; j++, ij++)
203 result(i, j) = x[ij];
int rows(const Eigen::Matrix< T, R, C > &m)
Return the number of rows in the specified matrix, vector, or row vector.
void check_size_match(const char *function, const char *name_i, T_size1 i, const char *name_j, T_size2 j)
Check if the provided sizes match.
int cols(const Eigen::Matrix< T, R, C > &m)
Return the number of columns in the specified matrix, vector, or row vector.
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > to_matrix(const Eigen::Matrix< T, R, C > &x)
Returns a matrix with dynamic dimensions constructed from an Eigen matrix which is either a row vecto...
int size(const std::vector< T > &x)
Return the size of the specified standard vector.