add fill() function as an alias for setConstant
diff --git a/Eigen/src/Core/CwiseNullaryOp.h b/Eigen/src/Core/CwiseNullaryOp.h index 0f914e7..691bc36 100644 --- a/Eigen/src/Core/CwiseNullaryOp.h +++ b/Eigen/src/Core/CwiseNullaryOp.h
@@ -238,9 +238,19 @@ return true; } +/** Alias for setConstant(): sets all coefficients in this expression to \a value. + * + * \sa setConstant(), Constant(), class CwiseNullaryOp + */ +template<typename Derived> +EIGEN_STRONG_INLINE void MatrixBase<Derived>::fill(const Scalar& value) +{ + setConstant(value); +} + /** Sets all coefficients in this expression to \a value. * - * \sa class CwiseNullaryOp, Zero(), Ones() + * \sa fill(), Constant(), class CwiseNullaryOp, setZero(), setOnes() */ template<typename Derived> EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::setConstant(const Scalar& value)
diff --git a/Eigen/src/Core/MatrixBase.h b/Eigen/src/Core/MatrixBase.h index 41dd894..5281e34 100644 --- a/Eigen/src/Core/MatrixBase.h +++ b/Eigen/src/Core/MatrixBase.h
@@ -446,6 +446,7 @@ const DiagonalMatrix<Derived> asDiagonal() const; + void fill(const Scalar& value); Derived& setConstant(const Scalar& value); Derived& setZero(); Derived& setOnes();
diff --git a/test/cwiseop.cpp b/test/cwiseop.cpp index 01f6361..3d98845 100644 --- a/test/cwiseop.cpp +++ b/test/cwiseop.cpp
@@ -46,6 +46,7 @@ MatrixType m1 = MatrixType::Random(rows, cols), m2 = MatrixType::Random(rows, cols), m3(rows, cols), + m4(rows, cols), mzero = MatrixType::Zero(rows, cols), mones = MatrixType::Ones(rows, cols), identity = Matrix<Scalar, MatrixType::RowsAtCompileTime, MatrixType::RowsAtCompileTime> @@ -57,6 +58,24 @@ int r = ei_random<int>(0, rows-1), c = ei_random<int>(0, cols-1); + + Scalar s1 = ei_random<Scalar>(); + + // test Zero, Ones, Constant, and the set* variants + m3 = MatrixType::Constant(rows, cols, s1); + for (int j=0; j<cols; ++j) + for (int i=0; i<rows; ++i) + { + VERIFY_IS_APPROX(mzero(i,j), Scalar(0)); + VERIFY_IS_APPROX(mones(i,j), Scalar(1)); + VERIFY_IS_APPROX(m3(i,j), s1); + } + VERIFY_IS_APPROX(m4.setConstant(s1), m3); + VERIFY_IS_APPROX(m4.setZero(), mzero); + VERIFY_IS_APPROX(m4.setOnes(), mones); + m4.fill(s1); + VERIFY_IS_APPROX(m4, m3); + m2 = m2.template binaryExpr<AddIfNull<Scalar> >(mones); @@ -85,9 +104,13 @@ VERIFY_IS_APPROX(m3.cwise().square(), m1.cwise().abs()); VERIFY_IS_APPROX(m1.cwise().square().cwise().sqrt(), m1.cwise().abs()); VERIFY_IS_APPROX(m1.cwise().abs().cwise().log().cwise().exp() , m1.cwise().abs()); + + VERIFY_IS_APPROX(m1.cwise().pow(2), m1.cwise().square()); + m3 = (m1.cwise().abs().cwise()<0.01).select(mones,m1); + VERIFY_IS_APPROX(m3.cwise().pow(-1), m3.cwise().inverse()); + m3 = m1.cwise().abs(); + VERIFY_IS_APPROX(m3.cwise().pow(0.5), m3.cwise().sqrt()); -// VERIFY_IS_APPROX(m1.cwise().pow(-1), m1.cwise().inverse()); -// VERIFY_IS_APPROX(m1.cwise().pow(0.5), m1.cwise().sqrt()); // VERIFY_IS_APPROX(m1.cwise().tan(), m1.cwise().sin().cwise() / m1.cwise().cos()); VERIFY_IS_APPROX(mones, m1.cwise().sin().cwise().square() + m1.cwise().cos().cwise().square()); m3 = m1;