From 53a01425831b7cc404d13d5d38fb80faaeeaab4f Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Wed, 12 Sep 2012 17:50:07 +0200 Subject: [PATCH] fix compilation with m.array().min/max(scalar) (transplanted from 0c584dcf4d840effa622045b91486dbed0777213 ) --- Eigen/src/plugins/ArrayCwiseBinaryOps.h | 6 ++++-- Eigen/src/plugins/ArrayCwiseUnaryOps.h | 1 + test/array_for_matrix.cpp | 6 ++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Eigen/src/plugins/ArrayCwiseBinaryOps.h b/Eigen/src/plugins/ArrayCwiseBinaryOps.h index 5b979ebf8..1e751ad62 100644 --- a/Eigen/src/plugins/ArrayCwiseBinaryOps.h +++ b/Eigen/src/plugins/ArrayCwiseBinaryOps.h @@ -33,7 +33,8 @@ EIGEN_MAKE_CWISE_BINARY_OP(min,internal::scalar_min_op) * * \sa max() */ -EIGEN_STRONG_INLINE const CwiseBinaryOp, const Derived, const ConstantReturnType> +EIGEN_STRONG_INLINE const CwiseBinaryOp, const Derived, + const CwiseNullaryOp, PlainObject> > (min)(const Scalar &other) const { return (min)(Derived::PlainObject::Constant(rows(), cols(), other)); @@ -52,7 +53,8 @@ EIGEN_MAKE_CWISE_BINARY_OP(max,internal::scalar_max_op) * * \sa min() */ -EIGEN_STRONG_INLINE const CwiseBinaryOp, const Derived, const ConstantReturnType> +EIGEN_STRONG_INLINE const CwiseBinaryOp, const Derived, + const CwiseNullaryOp, PlainObject> > (max)(const Scalar &other) const { return (max)(Derived::PlainObject::Constant(rows(), cols(), other)); diff --git a/Eigen/src/plugins/ArrayCwiseUnaryOps.h b/Eigen/src/plugins/ArrayCwiseUnaryOps.h index 0dffaf413..a59636790 100644 --- a/Eigen/src/plugins/ArrayCwiseUnaryOps.h +++ b/Eigen/src/plugins/ArrayCwiseUnaryOps.h @@ -200,3 +200,4 @@ EIGEN_MAKE_SCALAR_CWISE_UNARY_OP(operator<=, std::less_equal) EIGEN_MAKE_SCALAR_CWISE_UNARY_OP(operator>, std::greater) EIGEN_MAKE_SCALAR_CWISE_UNARY_OP(operator>=, std::greater_equal) + diff --git a/test/array_for_matrix.cpp b/test/array_for_matrix.cpp index a9cd54294..5a599c321 100644 --- a/test/array_for_matrix.cpp +++ b/test/array_for_matrix.cpp @@ -168,6 +168,12 @@ template void cwise_min_max(const MatrixType& m) VERIFY_IS_APPROX(MatrixType::Constant(rows,cols, maxM1), m1.cwiseMax( maxM1)); VERIFY_IS_APPROX(m1, m1.cwiseMax( minM1)); + VERIFY_IS_APPROX(MatrixType::Constant(rows,cols, minM1).array(), (m1.array().min)( minM1)); + VERIFY_IS_APPROX(m1.array(), (m1.array().min)( maxM1)); + + VERIFY_IS_APPROX(MatrixType::Constant(rows,cols, maxM1).array(), (m1.array().max)( maxM1)); + VERIFY_IS_APPROX(m1.array(), (m1.array().max)( minM1)); + } template void resize(const MatrixTraits& t)