mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-12 03:39:01 +08:00
Avoid division by a zero complex
This commit is contained in:
parent
973b0a90db
commit
6b4d255cab
@ -251,7 +251,7 @@ template<typename ArrayType> void array_real(const ArrayType& m)
|
|||||||
VERIFY((round(m1) <= ceil(m1) && round(m1) >= floor(m1)).all());
|
VERIFY((round(m1) <= ceil(m1) && round(m1) >= floor(m1)).all());
|
||||||
VERIFY(Eigen::isnan((m1*0.0)/0.0).all());
|
VERIFY(Eigen::isnan((m1*0.0)/0.0).all());
|
||||||
VERIFY(Eigen::isinf(m4/0.0).all());
|
VERIFY(Eigen::isinf(m4/0.0).all());
|
||||||
VERIFY((isfinite(m1) && !Eigen::isfinite(m1*0.0/0.0) && !Eigen::isfinite(m4/0.0)).all());
|
VERIFY((Eigen::isfinite(m1) && (!Eigen::isfinite(m1*0.0/0.0)) && (!Eigen::isfinite(m4/0.0))).all());
|
||||||
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)));
|
||||||
@ -358,7 +358,7 @@ template<typename ArrayType> void array_complex(const ArrayType& m)
|
|||||||
VERIFY(Eigen::isnan(m1*zero/zero).all());
|
VERIFY(Eigen::isnan(m1*zero/zero).all());
|
||||||
#if EIGEN_COMP_CLANG
|
#if EIGEN_COMP_CLANG
|
||||||
// clang's complex division is notoriously broken
|
// clang's complex division is notoriously broken
|
||||||
if(numext::isinf(m4(0,0)/Scalar(0))) {
|
if(numext::isinf(m4(0,0)/RealScalar(0))) {
|
||||||
#endif
|
#endif
|
||||||
VERIFY(Eigen::isinf(m4/zero).all());
|
VERIFY(Eigen::isinf(m4/zero).all());
|
||||||
#if EIGEN_COMP_CLANG
|
#if EIGEN_COMP_CLANG
|
||||||
@ -368,7 +368,7 @@ template<typename ArrayType> void array_complex(const ArrayType& m)
|
|||||||
VERIFY(isinf(m4.real()/zero.real()).all());
|
VERIFY(isinf(m4.real()/zero.real()).all());
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
VERIFY((isfinite(m1) && !Eigen::isfinite(m1*zero/zero) && !Eigen::isfinite(m1/zero)).all());
|
VERIFY((Eigen::isfinite(m1) && (!Eigen::isfinite(m1*zero/zero)) && (!Eigen::isfinite(m1/zero))).all());
|
||||||
|
|
||||||
VERIFY_IS_APPROX(inverse(inverse(m1)),m1);
|
VERIFY_IS_APPROX(inverse(inverse(m1)),m1);
|
||||||
VERIFY_IS_APPROX(conj(m1.conjugate()), m1);
|
VERIFY_IS_APPROX(conj(m1.conjugate()), m1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user