mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-09-14 18:33:16 +08:00
ArrayBase::sign: add unit test and fix doc
This commit is contained in:
parent
da46b1ed54
commit
3f32f5ec22
@ -141,8 +141,7 @@ sqrt() const
|
|||||||
|
|
||||||
/** \returns an expression of the coefficient-wise signum of *this.
|
/** \returns an expression of the coefficient-wise signum of *this.
|
||||||
*
|
*
|
||||||
* This function computes the coefficient-wise signum. The function MatrixBase::sign() in the
|
* This function computes the coefficient-wise signum.
|
||||||
* unsupported module MatrixFunctions computes the matrix square root.
|
|
||||||
*
|
*
|
||||||
* Example: \include Cwise_sign.cpp
|
* Example: \include Cwise_sign.cpp
|
||||||
* Output: \verbinclude Cwise_sign.out
|
* Output: \verbinclude Cwise_sign.out
|
||||||
|
@ -230,6 +230,7 @@ template<typename ArrayType> void array_real(const ArrayType& m)
|
|||||||
VERIFY_IS_APPROX(m1.square(), square(m1));
|
VERIFY_IS_APPROX(m1.square(), square(m1));
|
||||||
VERIFY_IS_APPROX(m1.cube(), cube(m1));
|
VERIFY_IS_APPROX(m1.cube(), cube(m1));
|
||||||
VERIFY_IS_APPROX(cos(m1+RealScalar(3)*m2), cos((m1+RealScalar(3)*m2).eval()));
|
VERIFY_IS_APPROX(cos(m1+RealScalar(3)*m2), cos((m1+RealScalar(3)*m2).eval()));
|
||||||
|
VERIFY_IS_APPROX(m1.sign(), sign(m1));
|
||||||
|
|
||||||
|
|
||||||
// avoid NaNs with abs() so verification doesn't fail
|
// avoid NaNs with abs() so verification doesn't fail
|
||||||
@ -255,6 +256,9 @@ template<typename ArrayType> void array_real(const ArrayType& m)
|
|||||||
VERIFY_IS_APPROX(inverse(inverse(m1)),m1);
|
VERIFY_IS_APPROX(inverse(inverse(m1)),m1);
|
||||||
VERIFY((abs(m1) == m1 || abs(m1) == -m1).all());
|
VERIFY((abs(m1) == m1 || abs(m1) == -m1).all());
|
||||||
VERIFY_IS_APPROX(m3, sqrt(abs2(m1)));
|
VERIFY_IS_APPROX(m3, sqrt(abs2(m1)));
|
||||||
|
VERIFY_IS_APPROX( m1.sign(), -(-m1).sign() );
|
||||||
|
VERIFY_IS_APPROX( m1*m1.sign(),m1.abs());
|
||||||
|
VERIFY_IS_APPROX(m1.sign() * m1.abs(), m1);
|
||||||
|
|
||||||
VERIFY_IS_APPROX(numext::abs2(numext::real(m1)) + numext::abs2(numext::imag(m1)), numext::abs2(m1));
|
VERIFY_IS_APPROX(numext::abs2(numext::real(m1)) + numext::abs2(numext::imag(m1)), numext::abs2(m1));
|
||||||
VERIFY_IS_APPROX(numext::abs2(real(m1)) + numext::abs2(imag(m1)), numext::abs2(m1));
|
VERIFY_IS_APPROX(numext::abs2(real(m1)) + numext::abs2(imag(m1)), numext::abs2(m1));
|
||||||
@ -348,6 +352,7 @@ template<typename ArrayType> void array_complex(const ArrayType& m)
|
|||||||
VERIFY_IS_APPROX(m1.square(), square(m1));
|
VERIFY_IS_APPROX(m1.square(), square(m1));
|
||||||
VERIFY_IS_APPROX(m1.cube(), cube(m1));
|
VERIFY_IS_APPROX(m1.cube(), cube(m1));
|
||||||
VERIFY_IS_APPROX(cos(m1+RealScalar(3)*m2), cos((m1+RealScalar(3)*m2).eval()));
|
VERIFY_IS_APPROX(cos(m1+RealScalar(3)*m2), cos((m1+RealScalar(3)*m2).eval()));
|
||||||
|
VERIFY_IS_APPROX(m1.sign(), sign(m1));
|
||||||
|
|
||||||
|
|
||||||
VERIFY_IS_APPROX(m1.exp() * m2.exp(), exp(m1+m2));
|
VERIFY_IS_APPROX(m1.exp() * m2.exp(), exp(m1+m2));
|
||||||
@ -391,6 +396,9 @@ template<typename ArrayType> void array_complex(const ArrayType& m)
|
|||||||
VERIFY_IS_APPROX(abs(m1), sqrt(abs2(m1)));
|
VERIFY_IS_APPROX(abs(m1), sqrt(abs2(m1)));
|
||||||
VERIFY_IS_APPROX(log10(m1), log(m1)/log(10));
|
VERIFY_IS_APPROX(log10(m1), log(m1)/log(10));
|
||||||
|
|
||||||
|
VERIFY_IS_APPROX( m1.sign(), -(-m1).sign() );
|
||||||
|
VERIFY_IS_APPROX( m1.sign() * m1.abs(), m1);
|
||||||
|
|
||||||
// scalar by array division
|
// scalar by array division
|
||||||
const RealScalar tiny = sqrt(std::numeric_limits<RealScalar>::epsilon());
|
const RealScalar tiny = sqrt(std::numeric_limits<RealScalar>::epsilon());
|
||||||
s1 += Scalar(tiny);
|
s1 += Scalar(tiny);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user