mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-13 20:26:03 +08:00
Make MatrixBase::is* methods aware of nested_eval.
This commit is contained in:
parent
f42b105f73
commit
29eaa2b0f1
@ -300,9 +300,10 @@ template<typename Derived>
|
|||||||
bool DenseBase<Derived>::isApproxToConstant
|
bool DenseBase<Derived>::isApproxToConstant
|
||||||
(const Scalar& val, const RealScalar& prec) const
|
(const Scalar& val, const RealScalar& prec) const
|
||||||
{
|
{
|
||||||
|
typename internal::nested_eval<Derived,1>::type self(derived());
|
||||||
for(Index j = 0; j < cols(); ++j)
|
for(Index j = 0; j < cols(); ++j)
|
||||||
for(Index i = 0; i < rows(); ++i)
|
for(Index i = 0; i < rows(); ++i)
|
||||||
if(!internal::isApprox(this->coeff(i, j), val, prec))
|
if(!internal::isApprox(self.coeff(i, j), val, prec))
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -484,9 +485,10 @@ DenseBase<Derived>::Zero()
|
|||||||
template<typename Derived>
|
template<typename Derived>
|
||||||
bool DenseBase<Derived>::isZero(const RealScalar& prec) const
|
bool DenseBase<Derived>::isZero(const RealScalar& prec) const
|
||||||
{
|
{
|
||||||
|
typename internal::nested_eval<Derived,1>::type self(derived());
|
||||||
for(Index j = 0; j < cols(); ++j)
|
for(Index j = 0; j < cols(); ++j)
|
||||||
for(Index i = 0; i < rows(); ++i)
|
for(Index i = 0; i < rows(); ++i)
|
||||||
if(!internal::isMuchSmallerThan(this->coeff(i, j), static_cast<Scalar>(1), prec))
|
if(!internal::isMuchSmallerThan(self.coeff(i, j), static_cast<Scalar>(1), prec))
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -719,18 +721,19 @@ template<typename Derived>
|
|||||||
bool MatrixBase<Derived>::isIdentity
|
bool MatrixBase<Derived>::isIdentity
|
||||||
(const RealScalar& prec) const
|
(const RealScalar& prec) const
|
||||||
{
|
{
|
||||||
|
typename internal::nested_eval<Derived,1>::type self(derived());
|
||||||
for(Index j = 0; j < cols(); ++j)
|
for(Index j = 0; j < cols(); ++j)
|
||||||
{
|
{
|
||||||
for(Index i = 0; i < rows(); ++i)
|
for(Index i = 0; i < rows(); ++i)
|
||||||
{
|
{
|
||||||
if(i == j)
|
if(i == j)
|
||||||
{
|
{
|
||||||
if(!internal::isApprox(this->coeff(i, j), static_cast<Scalar>(1), prec))
|
if(!internal::isApprox(self.coeff(i, j), static_cast<Scalar>(1), prec))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(!internal::isMuchSmallerThan(this->coeff(i, j), static_cast<RealScalar>(1), prec))
|
if(!internal::isMuchSmallerThan(self.coeff(i, j), static_cast<RealScalar>(1), prec))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -224,13 +224,13 @@ bool MatrixBase<Derived>::isOrthogonal
|
|||||||
template<typename Derived>
|
template<typename Derived>
|
||||||
bool MatrixBase<Derived>::isUnitary(const RealScalar& prec) const
|
bool MatrixBase<Derived>::isUnitary(const RealScalar& prec) const
|
||||||
{
|
{
|
||||||
typename Derived::Nested nested(derived());
|
typename internal::nested_eval<Derived,1>::type self(derived());
|
||||||
for(Index i = 0; i < cols(); ++i)
|
for(Index i = 0; i < cols(); ++i)
|
||||||
{
|
{
|
||||||
if(!internal::isApprox(nested.col(i).squaredNorm(), static_cast<RealScalar>(1), prec))
|
if(!internal::isApprox(self.col(i).squaredNorm(), static_cast<RealScalar>(1), prec))
|
||||||
return false;
|
return false;
|
||||||
for(Index j = 0; j < i; ++j)
|
for(Index j = 0; j < i; ++j)
|
||||||
if(!internal::isMuchSmallerThan(nested.col(i).dot(nested.col(j)), static_cast<Scalar>(1), prec))
|
if(!internal::isMuchSmallerThan(self.col(i).dot(self.col(j)), static_cast<Scalar>(1), prec))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user