Automatic Differentiation
 
Loading...
Searching...
No Matches
check_consistent_sizes.hpp
Go to the documentation of this file.
1#ifndef STAN_MATH_PRIM_ERR_CHECK_CONSISTENT_SIZES_HPP
2#define STAN_MATH_PRIM_ERR_CHECK_CONSISTENT_SIZES_HPP
3
7#include <algorithm>
8#include <sstream>
9#include <string>
10
11namespace stan {
12namespace math {
13
15inline void check_consistent_sizes(const char*) { return; }
16
21template <typename T1>
22inline void check_consistent_sizes(const char*, const char*, const T1&) {
23 return;
24}
25
45template <typename T1, typename T2, typename... Ts>
46inline void check_consistent_sizes(const char* function, const char* name1,
47 const T1& x1, const char* name2,
48 const T2& x2, const Ts&... names_and_xs) {
50 check_consistent_sizes(function, name2, x2, name1, x1, names_and_xs...);
51 } else if (!is_vector<T2>::value) {
52 check_consistent_sizes(function, name1, x1, names_and_xs...);
53 } else if (stan::math::size(x1) == stan::math::size(x2)) {
54 check_consistent_sizes(function, name1, x1, names_and_xs...);
55 } else {
56 [&]() STAN_COLD_PATH {
57 size_t size_x1 = stan::math::size(x1);
58 size_t size_x2 = stan::math::size(x2);
59 std::stringstream msg;
60 msg << ", but " << name2 << " has size " << size_x2
61 << "; and they must be the same size.";
62 std::string msg_str(msg.str());
63 invalid_argument(function, name1, size_x1,
64 "has size = ", msg_str.c_str());
65 }();
66 }
67}
68
69} // namespace math
70} // namespace stan
71#endif
#define STAN_COLD_PATH
size_t size(const T &m)
Returns the size (number of the elements) of a matrix_cl or var_value<matrix_cl<T>>.
Definition size.hpp:18
void check_consistent_sizes(const char *)
Trivial no input case, this function is a no-op.
void invalid_argument(const char *function, const char *name, const T &y, const char *msg1, const char *msg2)
Throw an invalid_argument exception with a consistently formatted message.
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...
Definition fvar.hpp:9
If the input type T is either an eigen matrix with 1 column or 1 row at compile time or a standard ve...