Skip to content
Snippets Groups Projects
Commit 171bd08c authored by Charles Schlosser's avatar Charles Schlosser Committed by Rasmus Munk Larsen
Browse files

fix 2849

parent db85838e
No related branches found
No related tags found
No related merge requests found
......@@ -603,9 +603,8 @@ class VectorwiseOp {
/** Returns the expression where each subvector is the product of the vector \a other
* by the corresponding subvector of \c *this */
template <typename OtherDerived>
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC
CwiseBinaryOp<internal::scalar_product_op<Scalar>, const ExpressionTypeNestedCleaned,
const typename ExtendedType<OtherDerived>::Type> EIGEN_DEVICE_FUNC
EIGEN_DEVICE_FUNC CwiseBinaryOp<internal::scalar_product_op<Scalar, typename OtherDerived::Scalar>,
const ExpressionTypeNestedCleaned, const typename ExtendedType<OtherDerived>::Type>
operator*(const DenseBase<OtherDerived>& other) const {
EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
EIGEN_STATIC_ASSERT_ARRAYXPR(ExpressionType)
......@@ -616,8 +615,8 @@ class VectorwiseOp {
/** Returns the expression where each subvector is the quotient of the corresponding
* subvector of \c *this by the vector \a other */
template <typename OtherDerived>
EIGEN_DEVICE_FUNC CwiseBinaryOp<internal::scalar_quotient_op<Scalar>, const ExpressionTypeNestedCleaned,
const typename ExtendedType<OtherDerived>::Type>
EIGEN_DEVICE_FUNC CwiseBinaryOp<internal::scalar_quotient_op<Scalar, typename OtherDerived::Scalar>,
const ExpressionTypeNestedCleaned, const typename ExtendedType<OtherDerived>::Type>
operator/(const DenseBase<OtherDerived>& other) const {
EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
EIGEN_STATIC_ASSERT_ARRAYXPR(ExpressionType)
......
......@@ -214,6 +214,17 @@ void vectorwiseop_matrix(const MatrixType& m) {
VERIFY_IS_EQUAL(m1.real().middleCols(0, fix<0>).colwise().maxCoeff().eval().cols(), 0);
}
void vectorwiseop_mixedscalar() {
Matrix4cd a = Matrix4cd::Random();
Vector4cd b = Vector4cd::Random();
b.imag().setZero();
Vector4d b_real = b.real();
Matrix4cd c = a.array().rowwise() * b.array().transpose();
Matrix4cd d = a.array().rowwise() * b_real.array().transpose();
VERIFY_IS_CWISE_EQUAL(c, d);
}
EIGEN_DECLARE_TEST(vectorwiseop) {
CALL_SUBTEST_1(vectorwiseop_array(Array22cd()));
CALL_SUBTEST_2(vectorwiseop_array(Array<double, 3, 2>()));
......@@ -226,4 +237,5 @@ EIGEN_DECLARE_TEST(vectorwiseop) {
MatrixXd(internal::random<int>(1, EIGEN_TEST_MAX_SIZE), internal::random<int>(1, EIGEN_TEST_MAX_SIZE))));
CALL_SUBTEST_7(vectorwiseop_matrix(VectorXd(internal::random<int>(1, EIGEN_TEST_MAX_SIZE))));
CALL_SUBTEST_7(vectorwiseop_matrix(RowVectorXd(internal::random<int>(1, EIGEN_TEST_MAX_SIZE))));
CALL_SUBTEST_8(vectorwiseop_mixedscalar());
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment