Skip to content

Commit 1d109f3

Browse files
committed
addressed review comments
1 parent 0b513e9 commit 1d109f3

5 files changed

Lines changed: 9 additions & 13 deletions

File tree

stan/math/fwd/fun/quad_form.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ inline promote_scalar_t<return_type_t<EigMat1, EigMat2>, EigMat2> quad_form(
3131
const EigMat1& A, const EigMat2& B) {
3232
check_square("quad_form", "A", A);
3333
check_multiplicable("quad_form", "A", A, "B", B);
34-
return multiply(transpose(B), multiply(A, B));
34+
return multiply(B.transpose(), multiply(A, B));
3535
}
3636

3737
/**

stan/math/prim/fun/quad_form.hpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ namespace math {
1818
*
1919
* @param A square matrix
2020
* @param B second matrix
21-
* @return The quadratic form, which is a symmetric matrix of size CB.
21+
* @return The quadratic form, which is a symmetric matrix.
2222
* @throws std::invalid_argument if A is not square, or if A cannot be
2323
* multiplied by B
2424
*/
@@ -27,7 +27,9 @@ template <typename EigMat1, typename EigMat2,
2727
require_not_eigen_col_vector_t<EigMat2>* = nullptr,
2828
require_vt_same<EigMat1, EigMat2>* = nullptr,
2929
require_all_vt_arithmetic<EigMat1, EigMat2>* = nullptr>
30-
inline plain_type_t<EigMat2> quad_form(const EigMat1& A, const EigMat2& B) {
30+
inline Eigen::Matrix<value_type_t<EigMat2>, EigMat2::ColsAtCompileTime,
31+
EigMat2::ColsAtCompileTime>
32+
quad_form(const EigMat1& A, const EigMat2& B) {
3133
check_square("quad_form", "A", A);
3234
check_multiplicable("quad_form", "A", A, "B", B);
3335
return B.transpose() * A * B;

stan/math/prim/fun/quad_form_sym.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace math {
1717
*
1818
* @param A symmetric matrix
1919
* @param B second matrix
20-
* @return The quadratic form, which is a symmetric matrix of size CB.
20+
* @return The quadratic form, which is a symmetric matrix.
2121
* @throws std::invalid_argument if A is not symmetric, or if A cannot be
2222
* multiplied by B
2323
*/

stan/math/prim/fun/rep_matrix.hpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,14 @@ template <typename ColVec, require_eigen_col_vector_t<ColVec>* = nullptr>
2121
inline Eigen::Matrix<value_type_t<ColVec>, Eigen::Dynamic, Eigen::Dynamic>
2222
rep_matrix(const ColVec& v, int n) {
2323
check_nonnegative("rep_matrix", "rows", n);
24-
Eigen::Matrix<value_type_t<ColVec>, Eigen::Dynamic, Eigen::Dynamic> result(
25-
v.size(), n);
26-
result.colwise() = v;
27-
return result;
24+
return v.replicate(1, n);
2825
}
2926

3027
template <typename RowVec, require_eigen_row_vector_t<RowVec>* = nullptr>
3128
inline Eigen::Matrix<value_type_t<RowVec>, Eigen::Dynamic, Eigen::Dynamic>
3229
rep_matrix(const RowVec& rv, int m) {
3330
check_nonnegative("rep_matrix", "cols", m);
34-
Eigen::Matrix<value_type_t<RowVec>, Eigen::Dynamic, Eigen::Dynamic> result(
35-
m, rv.size());
36-
result.rowwise() = rv;
37-
return result;
31+
return rv.replicate(m, 1);
3832
}
3933
} // namespace math
4034
} // namespace stan

stan/math/rev/fun/quad_form.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ class quad_form_vari : public vari {
106106
*
107107
* @param A square matrix
108108
* @param B second matrix
109-
* @return The quadratic form, which is a symmetric matrix of size Cb.
109+
* @return The quadratic form, which is a symmetric matrix.
110110
* @throws std::invalid_argument if A is not square, or if A cannot be
111111
* multiplied by B
112112
*/

0 commit comments

Comments
 (0)