Stan Math Library  2.15.0
reverse mode automatic differentiation
check_consistent_sizes.hpp
Go to the documentation of this file.
1 #ifndef STAN_MATH_PRIM_SCAL_ERR_CHECK_CONSISTENT_SIZES_HPP
2 #define STAN_MATH_PRIM_SCAL_ERR_CHECK_CONSISTENT_SIZES_HPP
3 
5 
6 #include <algorithm>
7 
8 namespace stan {
9  namespace math {
10 
29  template <typename T1, typename T2>
30  inline void check_consistent_sizes(const char* function,
31  const char* name1,
32  const T1& x1,
33  const char* name2,
34  const T2& x2) {
35  using stan::is_vector;
38  check_consistent_size(function, name1, x1, max_size);
39  check_consistent_size(function, name2, x2, max_size);
40  }
41 
63  template <typename T1, typename T2, typename T3>
64  inline void check_consistent_sizes(const char* function,
65  const char* name1,
66  const T1& x1,
67  const char* name2,
68  const T2& x2,
69  const char* name3,
70  const T3& x3) {
74  check_consistent_size(function, name1, x1, max_size);
75  check_consistent_size(function, name2, x2, max_size);
76  check_consistent_size(function, name3, x3, max_size);
77  }
78 
103  template <typename T1, typename T2, typename T3, typename T4>
104  inline void check_consistent_sizes(const char* function,
105  const char* name1,
106  const T1& x1,
107  const char* name2,
108  const T2& x2,
109  const char* name3,
110  const T3& x3,
111  const char* name4,
112  const T4& x4) {
113  size_t max_size
117  is_vector<T4>::value * size_of(x4))));
118  check_consistent_size(function, name1, x1, max_size);
119  check_consistent_size(function, name2, x2, max_size);
120  check_consistent_size(function, name3, x3, max_size);
121  check_consistent_size(function, name4, x4, max_size);
122  }
123  template <typename T1, typename T2, typename T3, typename T4,
124  typename T5>
125  inline void check_consistent_sizes(const char* function,
126  const char* name1,
127  const T1& x1,
128  const char* name2,
129  const T2& x2,
130  const char* name3,
131  const T3& x3,
132  const char* name4,
133  const T4& x4,
134  const char* name5,
135  const T5& x5) {
136  size_t max_size = std::max(size_of(x1),
137  std::max(size_of(x2),
138  std::max(size_of(x3),
139  std::max(size_of(x4),
140  size_of(x5)))));
141  check_consistent_size(function, name1, x1, max_size);
142  check_consistent_size(function, name2, x2, max_size);
143  check_consistent_size(function, name3, x3, max_size);
144  check_consistent_size(function, name4, x4, max_size);
145  check_consistent_size(function, name5, x5, max_size);
146  }
147 
148  }
149 }
150 #endif
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...
size_t size_of(const T &x)
Definition: size_of.hpp:24
size_t max_size(const T1 &x1, const T2 &x2)
Definition: max_size.hpp:9
int max(const std::vector< int > &x)
Returns the maximum coefficient in the specified column vector.
Definition: max.hpp:22
void check_consistent_sizes(const char *function, const char *name1, const T1 &x1, const char *name2, const T2 &x2)
Check if the dimension of x1 is consistent with x2.

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