30 #ifndef SPARSELU_COLUMN_DFS_H    31 #define SPARSELU_COLUMN_DFS_H    38 template<
typename IndexVector, 
typename ScalarVector>
    41   typedef typename ScalarVector::Scalar 
Scalar;
    42   typedef typename IndexVector::Scalar 
Index;
    50   void mem_expand(IndexVector& lsub, Index& nextl, Index chmark)
    52     if (nextl >= 
m_glu.nzlmax)
    92 template <
typename Scalar, 
typename Index>
    93 Index SparseLUImpl<Scalar,Index>::column_dfs(
const Index m, 
const Index jcol, 
IndexVector& perm_r, 
Index maxsuper, 
Index& nseg,  
BlockIndexVector lsub_col, 
IndexVector& segrep, 
BlockIndexVector repfnz, 
IndexVector& xprune, 
IndexVector& marker, 
IndexVector& parent, 
IndexVector& xplore, 
GlobalLU_t& glu)
   106     Index krow = lsub_col(k); 
   108     Index kmark = marker2(krow); 
   111     if (kmark == jcol) 
continue;
   113     dfs_kernel(jcol, perm_r, nseg, glu.
lsub, segrep, repfnz, xprune, marker2, parent,
   114                    xplore, glu, nextl, krow, traits);
   117   Index fsupc, jptr, jm1ptr, ito, ifrom, istop;
   119   Index jcolp1 = jcol + 1;
   120   Index jcolm1 = jcol - 1;
   125     nsuper = glu.
supno(0) = 0 ;
   129     fsupc = glu.
xsup(nsuper); 
   130     jptr = glu.
xlsub(jcol); 
   131     jm1ptr = glu.
xlsub(jcolm1); 
   134     if ( (nextl-jptr != jptr-jm1ptr-1) ) jsuper = 
emptyIdxLU;
   138     if ( (jcol - fsupc) >= maxsuper) jsuper = 
emptyIdxLU; 
   147       if ( (fsupc < jcolm1-1) ) 
   149         ito = glu.
xlsub(fsupc+1);
   150         glu.
xlsub(jcolm1) = ito; 
   151         istop = ito + jptr - jm1ptr; 
   152         xprune(jcolm1) = istop; 
   153         glu.
xlsub(jcol) = istop; 
   155         for (ifrom = jm1ptr; ifrom < nextl; ++ifrom, ++ito)
   160       glu.
supno(jcol) = nsuper; 
   165   glu.
xsup(nsuper+1) = jcolp1; 
   166   glu.
supno(jcolp1) = nsuper; 
   167   xprune(jcol) = nextl;  
   168   glu.
xlsub(jcolp1) = nextl; 
 ScalarVector::Scalar Scalar
column_dfs_traits(Index jcol, Index &jsuper, typename SparseLUImpl< Scalar, Index >::GlobalLU_t &glu, SparseLUImpl< Scalar, Index > &luImpl)
Index column_dfs(const Index m, const Index jcol, IndexVector &perm_r, Index maxsuper, Index &nseg, BlockIndexVector lsub_col, IndexVector &segrep, BlockIndexVector repfnz, IndexVector &xprune, IndexVector &marker, IndexVector &parent, IndexVector &xplore, GlobalLU_t &glu)
Performs a symbolic factorization on column jcol and decide the supernode boundary. 
Expression of a fixed-size or dynamic-size sub-vector. 
A matrix or vector expression mapping an existing expressions. 
bool update_segrep(Index, Index)
SparseLUImpl< Scalar, Index > & m_luImpl
void mem_expand(IndexVector &lsub, Index &nextl, Index chmark)
IndexVector::Scalar Index
SparseLUImpl< Scalar, Index >::GlobalLU_t & m_glu