28 #ifndef SPARSELU_HEAP_RELAX_SNODE_H 29 #define SPARSELU_HEAP_RELAX_SNODE_H 32 #include "./InternalHeaderCheck.h" 48 template <
typename Scalar,
typename StorageIndex>
53 internal::treePostorder(StorageIndex(n), et, post);
55 for (StorageIndex i = 0; i < n + 1; ++i) inv_post(post(i)) = i;
60 for (
Index i = 0; i < n; ++i) {
61 iwork(post(i)) = post(et(i));
70 for (j = 0; j < n; j++) {
73 descendants(parent) += descendants(j) + 1;
82 while (parent != n && descendants(parent) < relax_columns) {
88 for (
Index i = snode_start; i <= j; ++i) k = (std::min)(k, inv_post(i));
90 if ((l - k) == (j - snode_start))
95 for (
Index i = snode_start; i <= j; ++i) {
97 if (descendants(i) == 0) {
104 while (descendants(j) != 0 && j < n) j++;
114 #endif // SPARSELU_HEAP_RELAX_SNODE_H Namespace containing all symbols from the Eigen library.
Definition: B01_Experimental.dox:1
Derived & setZero(Index size)
Definition: CwiseNullaryOp.h:567
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:82
Derived & setConstant(Index size, const Scalar &val)
Definition: CwiseNullaryOp.h:363
void heap_relax_snode(const Index n, IndexVector &et, const Index relax_columns, IndexVector &descendants, IndexVector &relax_end)
Identify the initial relaxed supernodes.
Definition: SparseLU_heap_relax_snode.h:49
The matrix class, also used for vectors and row-vectors.
Definition: Matrix.h:186