mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-14 12:46:00 +08:00
Use traits<Matrix>::Options instead of Matrix::Options.
Not all objects have an `Options` attribute (e.g. Ref), but do store this information in `traits<...>`. Fixes #2335.
This commit is contained in:
parent
a24bf2e9a2
commit
7dceb6e137
@ -54,7 +54,7 @@ class ComplexEigenSolver {
|
|||||||
enum {
|
enum {
|
||||||
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
||||||
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
||||||
Options = MatrixType::Options,
|
Options = internal::traits<MatrixType>::Options,
|
||||||
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
||||||
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
||||||
};
|
};
|
||||||
|
@ -59,7 +59,7 @@ class ComplexSchur {
|
|||||||
enum {
|
enum {
|
||||||
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
||||||
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
||||||
Options = MatrixType::Options,
|
Options = internal::traits<MatrixType>::Options,
|
||||||
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
||||||
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
||||||
};
|
};
|
||||||
|
@ -73,7 +73,7 @@ class EigenSolver {
|
|||||||
enum {
|
enum {
|
||||||
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
||||||
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
||||||
Options = MatrixType::Options,
|
Options = internal::traits<MatrixType>::Options,
|
||||||
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
||||||
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
||||||
};
|
};
|
||||||
|
@ -67,7 +67,7 @@ class GeneralizedEigenSolver {
|
|||||||
enum {
|
enum {
|
||||||
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
||||||
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
||||||
Options = MatrixType::Options,
|
Options = internal::traits<MatrixType>::Options,
|
||||||
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
||||||
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
||||||
};
|
};
|
||||||
|
@ -66,7 +66,7 @@ class HessenbergDecomposition {
|
|||||||
enum {
|
enum {
|
||||||
Size = MatrixType::RowsAtCompileTime,
|
Size = MatrixType::RowsAtCompileTime,
|
||||||
SizeMinusOne = Size == Dynamic ? Dynamic : Size - 1,
|
SizeMinusOne = Size == Dynamic ? Dynamic : Size - 1,
|
||||||
Options = MatrixType::Options,
|
Options = internal::traits<MatrixType>::Options,
|
||||||
MaxSize = MatrixType::MaxRowsAtCompileTime,
|
MaxSize = MatrixType::MaxRowsAtCompileTime,
|
||||||
MaxSizeMinusOne = MaxSize == Dynamic ? Dynamic : MaxSize - 1
|
MaxSizeMinusOne = MaxSize == Dynamic ? Dynamic : MaxSize - 1
|
||||||
};
|
};
|
||||||
|
@ -64,7 +64,7 @@ class RealQZ {
|
|||||||
enum {
|
enum {
|
||||||
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
||||||
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
||||||
Options = MatrixType::Options,
|
Options = internal::traits<MatrixType>::Options,
|
||||||
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
||||||
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
||||||
};
|
};
|
||||||
|
@ -61,7 +61,7 @@ class RealSchur {
|
|||||||
enum {
|
enum {
|
||||||
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
||||||
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
||||||
Options = MatrixType::Options,
|
Options = internal::traits<MatrixType>::Options,
|
||||||
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
||||||
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
||||||
};
|
};
|
||||||
|
@ -85,7 +85,7 @@ class SelfAdjointEigenSolver {
|
|||||||
enum {
|
enum {
|
||||||
Size = MatrixType::RowsAtCompileTime,
|
Size = MatrixType::RowsAtCompileTime,
|
||||||
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
||||||
Options = MatrixType::Options,
|
Options = internal::traits<MatrixType>::Options,
|
||||||
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ class Tridiagonalization {
|
|||||||
enum {
|
enum {
|
||||||
Size = MatrixType::RowsAtCompileTime,
|
Size = MatrixType::RowsAtCompileTime,
|
||||||
SizeMinusOne = Size == Dynamic ? Dynamic : (Size > 1 ? Size - 1 : 1),
|
SizeMinusOne = Size == Dynamic ? Dynamic : (Size > 1 ? Size - 1 : 1),
|
||||||
Options = MatrixType::Options,
|
Options = internal::traits<MatrixType>::Options,
|
||||||
MaxSize = MatrixType::MaxRowsAtCompileTime,
|
MaxSize = MatrixType::MaxRowsAtCompileTime,
|
||||||
MaxSizeMinusOne = MaxSize == Dynamic ? Dynamic : (MaxSize > 1 ? MaxSize - 1 : 1)
|
MaxSizeMinusOne = MaxSize == Dynamic ? Dynamic : (MaxSize > 1 ? MaxSize - 1 : 1)
|
||||||
};
|
};
|
||||||
|
@ -622,7 +622,7 @@ struct kernel_retval<FullPivLU<MatrixType_, PermutationIndex_> >
|
|||||||
// permuting the rows and cols to bring the nonnegligible pivots to the top of
|
// permuting the rows and cols to bring the nonnegligible pivots to the top of
|
||||||
// the main diagonal. We need that to be able to apply our triangular solvers.
|
// the main diagonal. We need that to be able to apply our triangular solvers.
|
||||||
// FIXME when we get triangularView-for-rectangular-matrices, this can be simplified
|
// FIXME when we get triangularView-for-rectangular-matrices, this can be simplified
|
||||||
Matrix<typename MatrixType::Scalar, Dynamic, Dynamic, MatrixType::Options, MaxSmallDimAtCompileTime,
|
Matrix<typename MatrixType::Scalar, Dynamic, Dynamic, traits<MatrixType>::Options, MaxSmallDimAtCompileTime,
|
||||||
MatrixType::MaxColsAtCompileTime>
|
MatrixType::MaxColsAtCompileTime>
|
||||||
m(dec().matrixLU().block(0, 0, rank(), cols));
|
m(dec().matrixLU().block(0, 0, rank(), cols));
|
||||||
for (Index i = 0; i < rank(); ++i) {
|
for (Index i = 0; i < rank(); ++i) {
|
||||||
|
@ -105,7 +105,7 @@ class qr_preconditioner_impl<MatrixType, Options, FullPivHouseholderQRPreconditi
|
|||||||
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
||||||
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
||||||
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
|
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
|
||||||
MatrixOptions = MatrixType::Options
|
MatrixOptions = traits<MatrixType>::Options
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef typename internal::make_proper_matrix_type<Scalar, ColsAtCompileTime, RowsAtCompileTime, MatrixOptions,
|
typedef typename internal::make_proper_matrix_type<Scalar, ColsAtCompileTime, RowsAtCompileTime, MatrixOptions,
|
||||||
@ -202,7 +202,7 @@ class qr_preconditioner_impl<MatrixType, Options, ColPivHouseholderQRPreconditio
|
|||||||
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
||||||
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
||||||
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
|
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
|
||||||
MatrixOptions = MatrixType::Options,
|
MatrixOptions = internal::traits<MatrixType>::Options,
|
||||||
WorkspaceSize = internal::traits<SVDType>::MatrixVColsAtCompileTime,
|
WorkspaceSize = internal::traits<SVDType>::MatrixVColsAtCompileTime,
|
||||||
MaxWorkspaceSize = internal::traits<SVDType>::MatrixVMaxColsAtCompileTime
|
MaxWorkspaceSize = internal::traits<SVDType>::MatrixVMaxColsAtCompileTime
|
||||||
};
|
};
|
||||||
@ -310,7 +310,7 @@ class qr_preconditioner_impl<MatrixType, Options, HouseholderQRPreconditioner, P
|
|||||||
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
||||||
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
||||||
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
|
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
|
||||||
MatrixOptions = MatrixType::Options,
|
MatrixOptions = internal::traits<MatrixType>::Options,
|
||||||
WorkspaceSize = internal::traits<SVDType>::MatrixVColsAtCompileTime,
|
WorkspaceSize = internal::traits<SVDType>::MatrixVColsAtCompileTime,
|
||||||
MaxWorkspaceSize = internal::traits<SVDType>::MatrixVMaxColsAtCompileTime
|
MaxWorkspaceSize = internal::traits<SVDType>::MatrixVMaxColsAtCompileTime
|
||||||
};
|
};
|
||||||
|
@ -139,7 +139,7 @@ class SVDBase : public SolverBase<SVDBase<Derived> > {
|
|||||||
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
||||||
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
|
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
|
||||||
MaxDiagSizeAtCompileTime = internal::min_size_prefer_fixed(MaxRowsAtCompileTime, MaxColsAtCompileTime),
|
MaxDiagSizeAtCompileTime = internal::min_size_prefer_fixed(MaxRowsAtCompileTime, MaxColsAtCompileTime),
|
||||||
MatrixOptions = MatrixType::Options,
|
MatrixOptions = internal::traits<MatrixType>::Options,
|
||||||
MatrixUColsAtCompileTime = internal::traits<Derived>::MatrixUColsAtCompileTime,
|
MatrixUColsAtCompileTime = internal::traits<Derived>::MatrixUColsAtCompileTime,
|
||||||
MatrixVColsAtCompileTime = internal::traits<Derived>::MatrixVColsAtCompileTime,
|
MatrixVColsAtCompileTime = internal::traits<Derived>::MatrixVColsAtCompileTime,
|
||||||
MatrixUMaxColsAtCompileTime = internal::traits<Derived>::MatrixUMaxColsAtCompileTime,
|
MatrixUMaxColsAtCompileTime = internal::traits<Derived>::MatrixUMaxColsAtCompileTime,
|
||||||
|
@ -58,6 +58,7 @@ struct traits<SparseMatrix<Scalar_, Options_, StorageIndex_>> {
|
|||||||
ColsAtCompileTime = Dynamic,
|
ColsAtCompileTime = Dynamic,
|
||||||
MaxRowsAtCompileTime = Dynamic,
|
MaxRowsAtCompileTime = Dynamic,
|
||||||
MaxColsAtCompileTime = Dynamic,
|
MaxColsAtCompileTime = Dynamic,
|
||||||
|
Options = Options_,
|
||||||
Flags = Options_ | NestByRefBit | LvalueBit | CompressedAccessBit,
|
Flags = Options_ | NestByRefBit | LvalueBit | CompressedAccessBit,
|
||||||
SupportedAccessPatterns = InnerRandomAccessPattern
|
SupportedAccessPatterns = InnerRandomAccessPattern
|
||||||
};
|
};
|
||||||
|
@ -27,7 +27,7 @@ struct traits<image_retval_base<DecompositionType> > {
|
|||||||
MatrixType::RowsAtCompileTime, // the image is a subspace of the destination space, whose
|
MatrixType::RowsAtCompileTime, // the image is a subspace of the destination space, whose
|
||||||
// dimension is the number of rows of the original matrix
|
// dimension is the number of rows of the original matrix
|
||||||
Dynamic, // we don't know at compile time the dimension of the image (the rank)
|
Dynamic, // we don't know at compile time the dimension of the image (the rank)
|
||||||
MatrixType::Options,
|
traits<MatrixType>::Options,
|
||||||
MatrixType::MaxRowsAtCompileTime, // the image matrix will consist of columns from the original
|
MatrixType::MaxRowsAtCompileTime, // the image matrix will consist of columns from the original
|
||||||
// matrix,
|
// matrix,
|
||||||
MatrixType::MaxColsAtCompileTime // so it has the same number of rows and at most as many columns.
|
MatrixType::MaxColsAtCompileTime // so it has the same number of rows and at most as many columns.
|
||||||
|
@ -28,7 +28,7 @@ struct traits<kernel_retval_base<DecompositionType> > {
|
|||||||
// is the number of cols of the original matrix
|
// is the number of cols of the original matrix
|
||||||
// so that the product "matrix * kernel = zero" makes sense
|
// so that the product "matrix * kernel = zero" makes sense
|
||||||
Dynamic, // we don't know at compile-time the dimension of the kernel
|
Dynamic, // we don't know at compile-time the dimension of the kernel
|
||||||
MatrixType::Options,
|
traits<MatrixType>::Options,
|
||||||
MatrixType::MaxColsAtCompileTime, // see explanation for 2nd template parameter
|
MatrixType::MaxColsAtCompileTime, // see explanation for 2nd template parameter
|
||||||
MatrixType::MaxColsAtCompileTime // the kernel is a subspace of the domain space,
|
MatrixType::MaxColsAtCompileTime // the kernel is a subspace of the domain space,
|
||||||
// whose dimension is the number of columns of the original matrix
|
// whose dimension is the number of columns of the original matrix
|
||||||
|
Loading…
x
Reference in New Issue
Block a user