mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-10 18:59:01 +08:00
EIGEN_ENUM_MIN ---> EIGEN_SIZE_MIN
This commit is contained in:
parent
dcbf104bcc
commit
828d058b4b
@ -77,7 +77,7 @@ class BandMatrix : public AnyMatrixBase<BandMatrix<_Scalar,Rows,Cols,Supers,Subs
|
|||||||
DataRowsAtCompileTime = ((Supers!=Dynamic) && (Subs!=Dynamic))
|
DataRowsAtCompileTime = ((Supers!=Dynamic) && (Subs!=Dynamic))
|
||||||
? 1 + Supers + Subs
|
? 1 + Supers + Subs
|
||||||
: Dynamic,
|
: Dynamic,
|
||||||
SizeAtCompileTime = EIGEN_ENUM_MIN(Rows,Cols)
|
SizeAtCompileTime = EIGEN_SIZE_MIN(Rows,Cols)
|
||||||
};
|
};
|
||||||
typedef Matrix<Scalar,DataRowsAtCompileTime,ColsAtCompileTime,Options&RowMajor?RowMajor:ColMajor> DataType;
|
typedef Matrix<Scalar,DataRowsAtCompileTime,ColsAtCompileTime,Options&RowMajor?RowMajor:ColMajor> DataType;
|
||||||
|
|
||||||
@ -136,6 +136,7 @@ class BandMatrix : public AnyMatrixBase<BandMatrix<_Scalar,Rows,Cols,Supers,Subs
|
|||||||
DiagonalSize = (RowsAtCompileTime==Dynamic || ColsAtCompileTime==Dynamic)
|
DiagonalSize = (RowsAtCompileTime==Dynamic || ColsAtCompileTime==Dynamic)
|
||||||
? Dynamic
|
? Dynamic
|
||||||
: (ActualIndex<0
|
: (ActualIndex<0
|
||||||
|
// we handled Dynamic already, so can use EIGEN_ENUM_MIN safely here.
|
||||||
? EIGEN_ENUM_MIN(ColsAtCompileTime, RowsAtCompileTime + ActualIndex)
|
? EIGEN_ENUM_MIN(ColsAtCompileTime, RowsAtCompileTime + ActualIndex)
|
||||||
: EIGEN_ENUM_MIN(RowsAtCompileTime, ColsAtCompileTime - ActualIndex))
|
: EIGEN_ENUM_MIN(RowsAtCompileTime, ColsAtCompileTime - ActualIndex))
|
||||||
};
|
};
|
||||||
|
@ -45,10 +45,10 @@ namespace
|
|||||||
struct ei_umeyama_transform_matrix_type
|
struct ei_umeyama_transform_matrix_type
|
||||||
{
|
{
|
||||||
enum {
|
enum {
|
||||||
MinRowsAtCompileTime = EIGEN_ENUM_MIN(MatrixType::RowsAtCompileTime, OtherMatrixType::RowsAtCompileTime),
|
MinRowsAtCompileTime = EIGEN_SIZE_MIN(MatrixType::RowsAtCompileTime, OtherMatrixType::RowsAtCompileTime),
|
||||||
|
|
||||||
// When possible we want to choose some small fixed size value since the result
|
// When possible we want to choose some small fixed size value since the result
|
||||||
// is likely to fit on the stack.
|
// is likely to fit on the stack. Here EIGEN_ENUM_MIN is really what we want.
|
||||||
HomogeneousDimension = EIGEN_ENUM_MIN(MinRowsAtCompileTime+1, Dynamic)
|
HomogeneousDimension = EIGEN_ENUM_MIN(MinRowsAtCompileTime+1, Dynamic)
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -114,7 +114,7 @@ umeyama(const MatrixBase<Derived>& src, const MatrixBase<OtherDerived>& dst, boo
|
|||||||
EIGEN_STATIC_ASSERT((ei_is_same_type<Scalar, typename ei_traits<OtherDerived>::Scalar>::ret),
|
EIGEN_STATIC_ASSERT((ei_is_same_type<Scalar, typename ei_traits<OtherDerived>::Scalar>::ret),
|
||||||
YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
|
YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
|
||||||
|
|
||||||
enum { Dimension = EIGEN_ENUM_MIN(Derived::RowsAtCompileTime, OtherDerived::RowsAtCompileTime) };
|
enum { Dimension = EIGEN_SIZE_MIN(Derived::RowsAtCompileTime, OtherDerived::RowsAtCompileTime) };
|
||||||
|
|
||||||
typedef Matrix<Scalar, Dimension, 1> VectorType;
|
typedef Matrix<Scalar, Dimension, 1> VectorType;
|
||||||
typedef Matrix<Scalar, Dimension, Dimension> MatrixType;
|
typedef Matrix<Scalar, Dimension, Dimension> MatrixType;
|
||||||
|
@ -487,7 +487,7 @@ struct ei_kernel_retval<FullPivLU<_MatrixType> >
|
|||||||
{
|
{
|
||||||
EIGEN_MAKE_KERNEL_HELPERS(FullPivLU<_MatrixType>)
|
EIGEN_MAKE_KERNEL_HELPERS(FullPivLU<_MatrixType>)
|
||||||
|
|
||||||
enum { MaxSmallDimAtCompileTime = EIGEN_ENUM_MIN(
|
enum { MaxSmallDimAtCompileTime = EIGEN_SIZE_MIN(
|
||||||
MatrixType::MaxColsAtCompileTime,
|
MatrixType::MaxColsAtCompileTime,
|
||||||
MatrixType::MaxRowsAtCompileTime)
|
MatrixType::MaxRowsAtCompileTime)
|
||||||
};
|
};
|
||||||
@ -572,7 +572,7 @@ struct ei_image_retval<FullPivLU<_MatrixType> >
|
|||||||
{
|
{
|
||||||
EIGEN_MAKE_IMAGE_HELPERS(FullPivLU<_MatrixType>)
|
EIGEN_MAKE_IMAGE_HELPERS(FullPivLU<_MatrixType>)
|
||||||
|
|
||||||
enum { MaxSmallDimAtCompileTime = EIGEN_ENUM_MIN(
|
enum { MaxSmallDimAtCompileTime = EIGEN_SIZE_MIN(
|
||||||
MatrixType::MaxColsAtCompileTime,
|
MatrixType::MaxColsAtCompileTime,
|
||||||
MatrixType::MaxRowsAtCompileTime)
|
MatrixType::MaxRowsAtCompileTime)
|
||||||
};
|
};
|
||||||
|
@ -67,7 +67,7 @@ template<typename _MatrixType> class PartialPivLU
|
|||||||
typedef Matrix<int, MatrixType::RowsAtCompileTime, 1> PermutationVectorType;
|
typedef Matrix<int, MatrixType::RowsAtCompileTime, 1> PermutationVectorType;
|
||||||
typedef PermutationMatrix<MatrixType::RowsAtCompileTime> PermutationType;
|
typedef PermutationMatrix<MatrixType::RowsAtCompileTime> PermutationType;
|
||||||
|
|
||||||
enum { MaxSmallDimAtCompileTime = EIGEN_ENUM_MIN(
|
enum { MaxSmallDimAtCompileTime = EIGEN_SIZE_MIN(
|
||||||
MatrixType::MaxColsAtCompileTime,
|
MatrixType::MaxColsAtCompileTime,
|
||||||
MatrixType::MaxRowsAtCompileTime)
|
MatrixType::MaxRowsAtCompileTime)
|
||||||
};
|
};
|
||||||
|
@ -51,7 +51,7 @@ template<typename _MatrixType> class ColPivHouseholderQR
|
|||||||
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
||||||
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
||||||
Options = MatrixType::Options,
|
Options = MatrixType::Options,
|
||||||
DiagSizeAtCompileTime = EIGEN_ENUM_MIN(ColsAtCompileTime,RowsAtCompileTime)
|
DiagSizeAtCompileTime = EIGEN_SIZE_MIN(ColsAtCompileTime,RowsAtCompileTime)
|
||||||
};
|
};
|
||||||
typedef typename MatrixType::Scalar Scalar;
|
typedef typename MatrixType::Scalar Scalar;
|
||||||
typedef typename MatrixType::RealScalar RealScalar;
|
typedef typename MatrixType::RealScalar RealScalar;
|
||||||
|
@ -51,7 +51,7 @@ template<typename _MatrixType> class FullPivHouseholderQR
|
|||||||
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
||||||
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
||||||
Options = MatrixType::Options,
|
Options = MatrixType::Options,
|
||||||
DiagSizeAtCompileTime = EIGEN_ENUM_MIN(ColsAtCompileTime,RowsAtCompileTime)
|
DiagSizeAtCompileTime = EIGEN_SIZE_MIN(ColsAtCompileTime,RowsAtCompileTime)
|
||||||
};
|
};
|
||||||
typedef typename MatrixType::Scalar Scalar;
|
typedef typename MatrixType::Scalar Scalar;
|
||||||
typedef typename MatrixType::RealScalar RealScalar;
|
typedef typename MatrixType::RealScalar RealScalar;
|
||||||
|
@ -52,7 +52,7 @@ template<typename _MatrixType> class SVD
|
|||||||
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
||||||
PacketSize = ei_packet_traits<Scalar>::size,
|
PacketSize = ei_packet_traits<Scalar>::size,
|
||||||
AlignmentMask = int(PacketSize)-1,
|
AlignmentMask = int(PacketSize)-1,
|
||||||
MinSize = EIGEN_ENUM_MIN(RowsAtCompileTime, ColsAtCompileTime)
|
MinSize = EIGEN_SIZE_MIN(RowsAtCompileTime, ColsAtCompileTime)
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef Matrix<Scalar, RowsAtCompileTime, 1> ColVector;
|
typedef Matrix<Scalar, RowsAtCompileTime, 1> ColVector;
|
||||||
|
10
test/lu.cpp
10
test/lu.cpp
@ -35,7 +35,7 @@ template<typename MatrixType> void lu_non_invertible()
|
|||||||
int rows, cols, cols2;
|
int rows, cols, cols2;
|
||||||
if(MatrixType::RowsAtCompileTime==Dynamic)
|
if(MatrixType::RowsAtCompileTime==Dynamic)
|
||||||
{
|
{
|
||||||
rows = ei_random<int>(20,200);
|
rows = ei_random<int>(2,200);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -43,8 +43,8 @@ template<typename MatrixType> void lu_non_invertible()
|
|||||||
}
|
}
|
||||||
if(MatrixType::ColsAtCompileTime==Dynamic)
|
if(MatrixType::ColsAtCompileTime==Dynamic)
|
||||||
{
|
{
|
||||||
cols = ei_random<int>(20,200);
|
cols = ei_random<int>(2,200);
|
||||||
cols2 = ei_random<int>(20,200);
|
cols2 = ei_random<int>(2,200);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -108,7 +108,7 @@ template<typename MatrixType> void lu_invertible()
|
|||||||
LU.h
|
LU.h
|
||||||
*/
|
*/
|
||||||
typedef typename NumTraits<typename MatrixType::Scalar>::Real RealScalar;
|
typedef typename NumTraits<typename MatrixType::Scalar>::Real RealScalar;
|
||||||
int size = ei_random<int>(10,200);
|
int size = ei_random<int>(1,200);
|
||||||
|
|
||||||
MatrixType m1(size, size), m2(size, size), m3(size, size);
|
MatrixType m1(size, size), m2(size, size), m3(size, size);
|
||||||
m1 = MatrixType::Random(size,size);
|
m1 = MatrixType::Random(size,size);
|
||||||
@ -185,5 +185,7 @@ void test_lu()
|
|||||||
CALL_SUBTEST_6( lu_non_invertible<MatrixXcd>() );
|
CALL_SUBTEST_6( lu_non_invertible<MatrixXcd>() );
|
||||||
CALL_SUBTEST_6( lu_invertible<MatrixXcd>() );
|
CALL_SUBTEST_6( lu_invertible<MatrixXcd>() );
|
||||||
CALL_SUBTEST_6( lu_verify_assert<MatrixXcd>() );
|
CALL_SUBTEST_6( lu_verify_assert<MatrixXcd>() );
|
||||||
|
|
||||||
|
CALL_SUBTEST_7(( lu_non_invertible<Matrix<float,Dynamic,16> >() ));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,6 +60,7 @@ template<typename MatrixType> void submatrices(const MatrixType& m)
|
|||||||
typedef typename MatrixType::RealScalar RealScalar;
|
typedef typename MatrixType::RealScalar RealScalar;
|
||||||
typedef Matrix<Scalar, MatrixType::RowsAtCompileTime, 1> VectorType;
|
typedef Matrix<Scalar, MatrixType::RowsAtCompileTime, 1> VectorType;
|
||||||
typedef Matrix<Scalar, 1, MatrixType::ColsAtCompileTime> RowVectorType;
|
typedef Matrix<Scalar, 1, MatrixType::ColsAtCompileTime> RowVectorType;
|
||||||
|
typedef Matrix<Scalar, MatrixType::RowsAtCompileTime, MatrixType::RowsAtCompileTime> SquareMatrixType;
|
||||||
int rows = m.rows();
|
int rows = m.rows();
|
||||||
int cols = m.cols();
|
int cols = m.cols();
|
||||||
|
|
||||||
@ -67,11 +68,9 @@ template<typename MatrixType> void submatrices(const MatrixType& m)
|
|||||||
m2 = MatrixType::Random(rows, cols),
|
m2 = MatrixType::Random(rows, cols),
|
||||||
m3(rows, cols),
|
m3(rows, cols),
|
||||||
mzero = MatrixType::Zero(rows, cols),
|
mzero = MatrixType::Zero(rows, cols),
|
||||||
ones = MatrixType::Ones(rows, cols),
|
ones = MatrixType::Ones(rows, cols);
|
||||||
identity = Matrix<Scalar, MatrixType::RowsAtCompileTime, MatrixType::RowsAtCompileTime>
|
SquareMatrixType identity = SquareMatrixType::Identity(rows, rows),
|
||||||
::Identity(rows, rows),
|
square = SquareMatrixType::Random(rows, rows);
|
||||||
square = Matrix<Scalar, MatrixType::RowsAtCompileTime, MatrixType::RowsAtCompileTime>
|
|
||||||
::Random(rows, rows);
|
|
||||||
VectorType v1 = VectorType::Random(rows),
|
VectorType v1 = VectorType::Random(rows),
|
||||||
v2 = VectorType::Random(rows),
|
v2 = VectorType::Random(rows),
|
||||||
v3 = VectorType::Random(rows),
|
v3 = VectorType::Random(rows),
|
||||||
@ -222,6 +221,8 @@ void test_submatrices()
|
|||||||
CALL_SUBTEST_5( submatrices(MatrixXcd(20, 20)) );
|
CALL_SUBTEST_5( submatrices(MatrixXcd(20, 20)) );
|
||||||
CALL_SUBTEST_6( submatrices(MatrixXf(20, 20)) );
|
CALL_SUBTEST_6( submatrices(MatrixXf(20, 20)) );
|
||||||
|
|
||||||
|
CALL_SUBTEST_8( submatrices(Matrix<float,Dynamic,4>(3, 4)) );
|
||||||
|
|
||||||
CALL_SUBTEST_6( data_and_stride(MatrixXf(ei_random(5,50), ei_random(5,50))) );
|
CALL_SUBTEST_6( data_and_stride(MatrixXf(ei_random(5,50), ei_random(5,50))) );
|
||||||
CALL_SUBTEST_7( data_and_stride(Matrix<int,Dynamic,Dynamic,RowMajor>(ei_random(5,50), ei_random(5,50))) );
|
CALL_SUBTEST_7( data_and_stride(Matrix<int,Dynamic,Dynamic,RowMajor>(ei_random(5,50), ei_random(5,50))) );
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user