Lines Matching refs:Index
48 template<typename Index>
49 static int cs_wclear (Index mark, Index lemax, Index *w, Index n)
51 Index k;
63 template<typename Index>
64 Index cs_tdfs(Index j, Index k, Index *head, const Index *next, Index *post, Index *stack)
93 template<typename Scalar, typename Index>
94 void minimum_degree_ordering(SparseMatrix<Scalar,ColMajor,Index>& C, PermutationMatrix<Dynamic,Dynamic,Index>& perm)
97 typedef SparseMatrix<Scalar,ColMajor,Index> CCS;
104 Index n = C.cols();
105 dense = std::max<Index> (16, Index(10 * sqrt(double(n)))); /* find dense threshold */
106 dense = std::min<Index> (n-2, dense);
108 Index cnz = C.nonZeros();
113 Index* W = new Index[8*(n+1)]; /* get workspace */
114 Index* len = W;
115 Index* nv = W + (n+1);
116 Index* next = W + 2*(n+1);
117 Index* head = W + 3*(n+1);
118 Index* elen = W + 4*(n+1);
119 Index* degree = W + 5*(n+1);
120 Index* w = W + 6*(n+1);
121 Index* hhead = W + 7*(n+1);
122 Index* last = perm.indices().data(); /* use P as workspace for last */
125 Index* Cp = C.outerIndexPtr();
126 Index* Ci = C.innerIndexPtr();
143 mark = internal::cs_wclear<Index>(0, 0, w, n); /* clear w */
258 mark = internal::cs_wclear<Index>(mark, lemax, w, n); /* clear w if necessary */
328 degree[i] = std::min<Index> (degree[i], d); /* update degree(i) */
340 lemax = std::max<Index>(lemax, dk);
341 mark = internal::cs_wclear<Index>(mark+lemax, lemax, w, n); /* clear w */
389 d = std::min<Index> (d, n - nel - nvi);
394 mindeg = std::min<Index> (mindeg, d); /* find new minimum degree */
427 if(Cp[i] == -1) k = internal::cs_tdfs<Index>(i, k, head, next, perm.indices().data(), w);