1 #ifndef STAN_MATH_FWD_MAT_FUN_DOT_PRODUCT_HPP
2 #define STAN_MATH_FWD_MAT_FUN_DOT_PRODUCT_HPP
15 template<
typename T,
int R1,
int C1,
int R2,
int C2>
19 const Eigen::Matrix<
fvar<T>, R2, C2>& v2) {
30 template<
typename T,
int R1,
int C1,
int R2,
int C2>
34 const Eigen::Matrix<double, R2, C2>& v2) {
45 template<
typename T,
int R1,
int C1,
int R2,
int C2>
49 const Eigen::Matrix<
fvar<T>, R2, C2>& v2) {
60 template<
typename T,
int R1,
int C1,
int R2,
int C2>
64 const Eigen::Matrix<
fvar<T>, R2, C2>& v2,
75 template<
typename T,
int R1,
int C1,
int R2,
int C2>
79 const Eigen::Matrix<double, R2, C2>& v2,
90 template<
typename T,
int R1,
int C1,
int R2,
int C2>
94 const Eigen::Matrix<
fvar<T>, R2, C2>& v2,
101 ret += v1(i) * v2(i);
109 const std::vector<
fvar<T> >& v2) {
112 for (
size_t i = 0; i < v1.size(); i++)
113 ret += v1.at(i) * v2.at(i);
121 const std::vector<
fvar<T> >& v2) {
124 for (
size_t i = 0; i < v1.size(); i++)
125 ret += v1.at(i) * v2.at(i);
133 const std::vector<double>& v2) {
136 for (
size_t i = 0; i < v1.size(); i++)
137 ret += v1.at(i) * v2.at(i);
145 const std::vector<
fvar<T> >& v2,
149 ret += v1.at(i) * v2.at(i);
157 const std::vector<
fvar<T> >& v2,
161 ret += v1.at(i) * v2.at(i);
169 const std::vector<double>& v2,
173 ret += v1.at(i) * v2.at(i);
bool check_vector(const char *function, const char *name, const Eigen::Matrix< T, R, C > &x)
Return true if the matrix is either a row vector or column vector.
size_t length(const std::vector< T > &x)
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic >::Index size_type
Type for sizes and indexes in an Eigen matrix with double e.
bool check_matching_sizes(const char *function, const char *name1, const T_y1 &y1, const char *name2, const T_y2 &y2)
Return true if two structures at the same size.
fvar< T > dot_product(const Eigen::Matrix< fvar< T >, R1, C1 > &v1, const Eigen::Matrix< fvar< T >, R2, C2 > &v2)