1 #ifndef STAN_MATH_FWD_MAT_FUN_DOT_PRODUCT_HPP
2 #define STAN_MATH_FWD_MAT_FUN_DOT_PRODUCT_HPP
17 template<
typename T,
int R1,
int C1,
int R2,
int C2>
21 const Eigen::Matrix<
fvar<T>, R2, C2>& v2) {
34 template<
typename T,
int R1,
int C1,
int R2,
int C2>
38 const Eigen::Matrix<double, R2, C2>& v2) {
51 template<
typename T,
int R1,
int C1,
int R2,
int C2>
55 const Eigen::Matrix<
fvar<T>, R2, C2>& v2) {
68 template<
typename T,
int R1,
int C1,
int R2,
int C2>
72 const Eigen::Matrix<
fvar<T>, R2, C2>& v2,
83 template<
typename T,
int R1,
int C1,
int R2,
int C2>
87 const Eigen::Matrix<double, R2, C2>& v2,
98 template<
typename T,
int R1,
int C1,
int R2,
int C2>
102 const Eigen::Matrix<
fvar<T>, R2, C2>& v2,
109 ret += v1(i) * v2(i);
117 const std::vector<
fvar<T> >& v2) {
122 for (
size_t i = 0; i < v1.size(); i++)
123 ret += v1.at(i) * v2.at(i);
131 const std::vector<
fvar<T> >& v2) {
136 for (
size_t i = 0; i < v1.size(); i++)
137 ret += v1.at(i) * v2.at(i);
145 const std::vector<double>& v2) {
150 for (
size_t i = 0; i < v1.size(); i++)
151 ret += v1.at(i) * v2.at(i);
159 const std::vector<
fvar<T> >& v2,
163 ret += v1.at(i) * v2.at(i);
171 const std::vector<
fvar<T> >& v2,
175 ret += v1.at(i) * v2.at(i);
183 const std::vector<double>& v2,
187 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)