1 #ifndef STAN__AGRAD__FWD__MATRIX__DOT_PRODUCT_HPP
2 #define STAN__AGRAD__FWD__MATRIX__DOT_PRODUCT_HPP
17 template<
typename T,
int R1,
int C1,
int R2,
int C2>
21 const Eigen::Matrix<
fvar<T>, R2, C2>& v2) {
33 template<
typename T,
int R1,
int C1,
int R2,
int C2>
37 const Eigen::Matrix<double, R2, C2>& v2) {
49 template<
typename T,
int R1,
int C1,
int R2,
int C2>
53 const Eigen::Matrix<
fvar<T>, R2, C2>& v2) {
65 template<
typename T,
int R1,
int C1,
int R2,
int C2>
69 const Eigen::Matrix<
fvar<T>, R2, C2>& v2,
80 template<
typename T,
int R1,
int C1,
int R2,
int C2>
84 const Eigen::Matrix<double, R2, C2>& v2,
95 template<
typename T,
int R1,
int C1,
int R2,
int C2>
99 const Eigen::Matrix<
fvar<T>, R2, C2>& v2,
106 ret += v1(i) * v2(i);
114 const std::vector<
fvar<T> >& v2) {
118 for (
size_t i = 0; i < v1.size(); i++)
119 ret += v1.at(i) * v2.at(i);
127 const std::vector<
fvar<T> >& v2) {
131 for (
size_t i = 0; i < v1.size(); i++)
132 ret += v1.at(i) * v2.at(i);
140 const std::vector<double>& v2) {
144 for (
size_t i = 0; i < v1.size(); i++)
145 ret += v1.at(i) * v2.at(i);
153 const std::vector<
fvar<T> >& v2,
157 ret += v1.at(i) * v2.at(i);
165 const std::vector<
fvar<T> >& v2,
169 ret += v1.at(i) * v2.at(i);
177 const std::vector<double>& v2,
181 ret += v1.at(i) * v2.at(i);
bool check_vector(const char *function, const Eigen::Matrix< T, R, C > &x, const char *name, T_result *result)
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic >::Index size_type
fvar< T > dot_product(const Eigen::Matrix< fvar< T >, R1, C1 > &v1, const Eigen::Matrix< fvar< T >, R2, C2 > &v2)
bool check_matching_sizes(const char *function, const T_y1 &y1, const char *name1, const T_y2 &y2, const char *name2, T_result *result)