11 #ifndef EIGEN_ORDERING_H
12 #define EIGEN_ORDERING_H
28 template<
typename MatrixType>
33 for (
int i = 0;
i < C.rows();
i++)
35 for (
typename MatrixType::InnerIterator it(C,
i); it; ++it)
36 it.valueRef() =
typename MatrixType::Scalar(0);
51 template <
typename StorageIndex>
60 template <
typename MatrixType>
73 template <
typename SrcType,
unsigned int SrcUpLo>
92 template <
typename StorageIndex>
99 template <
typename MatrixType>
115 template<
typename StorageIndex>
125 template <
typename MatrixType>
128 eigen_assert(
mat.isCompressed() &&
"COLAMDOrdering requires a sparse matrix in compressed mode. Call .makeCompressed() before passing it to COLAMDOrdering");
130 StorageIndex
m = StorageIndex(
mat.rows());
131 StorageIndex
n = StorageIndex(
mat.cols());
132 StorageIndex nnz = StorageIndex(
mat.nonZeros());
134 StorageIndex Alen = internal::Colamd::recommended(nnz,
m,
n);
136 double knobs [internal::Colamd::NKnobs];
137 StorageIndex stats [internal::Colamd::NStats];
138 internal::Colamd::set_defaults(knobs);
141 for(StorageIndex
i=0;
i <=
n;
i++)
p(
i) =
mat.outerIndexPtr()[
i];
142 for(StorageIndex
i=0;
i < nnz;
i++)
A(
i) =
mat.innerIndexPtr()[
i];
144 StorageIndex info = internal::Colamd::compute_ordering(
m,
n, Alen,
A.data(),
p.data(), knobs, stats);
#define EIGEN_UNUSED_VARIABLE(var)
Matrix< float, 1, Dynamic > MatrixType
void operator()(const SparseSelfAdjointView< SrcType, SrcUpLo > &mat, PermutationType &perm)
PermutationMatrix< Dynamic, Dynamic, StorageIndex > PermutationType
void operator()(const MatrixType &mat, PermutationType &perm)
void operator()(const MatrixType &mat, PermutationType &perm)
Matrix< StorageIndex, Dynamic, 1 > IndexVector
PermutationMatrix< Dynamic, Dynamic, StorageIndex > PermutationType
The matrix class, also used for vectors and row-vectors.
void operator()(const MatrixType &, PermutationType &perm)
PermutationMatrix< Dynamic, Dynamic, StorageIndex > PermutationType
void resize(Index newSize)
const IndicesType & indices() const
A versatible sparse matrix representation.
Pseudo expression to manipulate a triangular sparse matrix as a selfadjoint matrix.
void ordering_helper_at_plus_a(const MatrixType &A, MatrixType &symmat)
void minimum_degree_ordering(SparseMatrix< Scalar, ColMajor, StorageIndex > &C, PermutationMatrix< Dynamic, Dynamic, StorageIndex > &perm)