48     Int k1, k2, nk, k, block, oldcol, pend, newcol, result, pc, p, newrow,
 
   57     for (k = 0 ; k < 
n ; k++)
 
   64     for (k = 0 ; k < n ; k++)
 
   66   ASSERT (Pbtf [k] >= 0 && Pbtf [k] < n) ;
 
   70     for (k = 0 ; k < n ; k++) 
ASSERT (Pinv [k] != 
EMPTY) ;
 
   76     Symbolic->symmetry = 
EMPTY ;  
 
   82     for (block = 0 ; block < nblocks ; block++)
 
   92   PRINTF ((
"BLOCK %d, k1 %d k2-1 %d nk %d\n", block, k1, k2-1, nk)) ;
 
  100   for (k = k1 ; k < k2 ; k++)
 
  105       pend = Ap [oldcol+1] ;
 
  106       for (p = Ap [oldcol] ; p < pend ; p++)
 
  108     newrow = Pinv [Ai [p]] ;
 
  123   maxnz = 
MAX (maxnz, pc) ;
 
  137       for (k = 0 ; k < nk ; k++)
 
  141       lnz1 = nk * (nk + 1) / 2 ;
 
  142       flops1 = nk * (nk - 1) / 2 + (nk-1)*nk*(2*nk-1) / 6 ;
 
  161       Common->mempeak = 
MAX (Common->mempeak,
 
  185       ok = 
COLAMD (nk, nk, Cilen, Ci, Cp, 
NULL, cstats) ;
 
  190       for (k = 0 ; k < nk ; k++)
 
  203       lnz1 = (Common->user_order) (nk, Cp, Ci, Pblk, Common) ;
 
  219   flops = (flops == 
EMPTY || flops1 == 
EMPTY) ? 
EMPTY : (flops + flops1) ;
 
  225   PRINTF ((
"Pblk, 1-based:\n")) ;
 
  226   for (k = 0 ; k < nk ; k++)
 
  229       ASSERT (Pblk [k] + k1 < n) ;
 
  230       Q [k + k1] = Qbtf [Pblk [k] + k1] ;
 
  232   for (k = 0 ; k < nk ; k++)
 
  235       ASSERT (Pblk [k] + k1 < n) ;
 
  236       P [k + k1] = Pbtf [Pblk [k] + k1] ;
 
  240     PRINTF ((
"nzoff %d  Ap[n] %d\n", nzoff, Ap [n])) ;
 
  241     ASSERT (nzoff >= 0 && nzoff <= Ap [n]) ;
 
  244     Symbolic->lnz = lnz ;     
 
  245     Symbolic->unz = lnz ;
 
  246     Symbolic->nzoff = nzoff ;
 
  247     Symbolic->est_flops = 
flops ;   
 
  274     Int *Qbtf, *Cp, *Ci, *Pinv, *Pblk, *Pbtf, *
P, *Q, *R ;
 
  275     Int nblocks, nz, block, maxblock, k1, k2, nk, do_btf, 
ordering, k, Cilen,
 
  283     if (Symbolic == 
NULL)
 
  290     Lnz = Symbolic->Lnz ;
 
  293     ordering = Common->ordering ;
 
  299     else if (ordering == 0 || (ordering == 3 && Common->user_order != 
NULL))
 
  324     if (Common->status < 
KLU_OK)
 
  336     do_btf = Common->btf ;
 
  339     Symbolic->do_btf = do_btf ;
 
  340     Symbolic->structural_rank = 
EMPTY ;
 
  351   if (Common->status < 
KLU_OK)
 
  360   nblocks = 
BTF_order (
n, Ap, Ai, Common->maxwork, &work, Pbtf, Qbtf, R,
 
  361     &(Symbolic->structural_rank), Work) ;
 
  362   Common->structural_rank = Symbolic->structural_rank ;
 
  363   Common->work += 
work ;
 
  368   if (Symbolic->structural_rank < 
n)
 
  370       for (k = 0 ; k < 
n ; k++)
 
  378   for (block = 0 ; block < nblocks ; block++)
 
  383       PRINTF ((
"block %d size %d\n", block, nk)) ;
 
  384       maxblock = 
MAX (maxblock, nk) ;
 
  394   for (k = 0 ; k < 
n ; k++)
 
  401     Symbolic->nblocks = nblocks ;
 
  403     PRINTF ((
"maxblock size %d\n", maxblock)) ;
 
  404     Symbolic->maxblock = maxblock ;
 
  419     if (Common->status == 
KLU_OK)
 
  421   PRINTF ((
"calling analyze_worker\n")) ;
 
  423       ordering, P, Q, Lnz, Pblk, Cp, Ci, Cilen, Pinv, Symbolic, Common) ;
 
  424   PRINTF ((
"analyze_worker done\n")) ;
 
  442     if (Common->status < 
KLU_OK)
 
  475     Common->structural_rank = 
EMPTY ;
 
  481     if (Common->ordering == 2)
 
static KLU_symbolic * order_and_analyze(Int n, Int Ap[], Int Ai[], KLU_common *Common)
EXTERN void *(* amesos_amd_realloc)(void *, size_t)
EXTERN void(* amesos_amd_free)(void *)
static Int analyze_worker(Int n, Int Ap[], Int Ai[], Int nblocks, Int Pbtf[], Int Qbtf[], Int R[], Int ordering, Int P[], Int Q[], double Lnz[], Int Pblk[], Int Cp[], Int Ci[], Int Cilen, Int Pinv[], KLU_symbolic *Symbolic, KLU_common *Common)
#define COLAMD_recommended
#define KLU_OUT_OF_MEMORY
KLU_symbolic * KLU_analyze(Int n, Int Ap[], Int Ai[], KLU_common *Common)
#define ASSERT(expression)
EXTERN void *(* amesos_amd_calloc)(size_t, size_t)
#define KLU_alloc_symbolic
#define KLU_free_symbolic
#define KLU_analyze_given
#define AMD_OUT_OF_MEMORY
EXTERN void *(* amesos_amd_malloc)(size_t)