28 Int nz, i, j, p, pend ;
50 if (Ap [0] != 0 || nz < 0)
57 for (j = 0 ; j <
n ; j++)
59 if (Ap [j] > Ap [j+1])
73 for (i = 0 ; i <
n ; i++)
77 for (j = 0 ; j <
n ; j++)
80 for (p = Ap [j] ; p < pend ; p++)
83 if (i < 0 || i >=
n ||
P [i] == j)
117 Symbolic->Lnz = Lnz ;
150 Int nblocks, nz, block, maxblock, *
P, *Q, *R, nzoff, p, pend, do_btf, k ;
157 if (Symbolic ==
NULL)
164 Lnz = Symbolic->Lnz ;
173 for (k = 0 ; k <
n ; k++)
180 for (k = 0 ; k <
n ; k++)
192 Symbolic->ordering = 2 ;
193 Symbolic->do_btf = do_btf ;
206 Int *Pinv, *Work, *Bi, k1, k2, nk, oldcol ;
239 for (k = 0 ; k <
n ; k++)
241 Pinv [Puser [k]] = k ;
243 for (p = 0 ; p < nz ; p++)
245 Bi [p] = Pinv [Ai [p]] ;
262 for (k = 0 ; k <
n ; k++)
264 Work [k] = Puser [
P [k]] ;
266 for (k = 0 ; k <
n ; k++)
276 for (k = 0 ; k <
n ; k++)
288 for (block = 0 ; block < nblocks ; block++)
298 PRINTF ((
"BLOCK %d, k1 %d k2-1 %d nk %d\n", block, k1, k2-1, nk)) ;
299 maxblock =
MAX (maxblock, nk) ;
305 for (k = k1 ; k < k2 ; k++)
308 pend = Ap [oldcol+1] ;
309 for (p = Ap [oldcol] ; p < pend ; p++)
311 if (Pinv [Ai [p]] < k1)
319 Lnz [block] =
EMPTY ;
352 for (k = 0 ; k <
n ; k++)
354 P [k] = (Puser ==
NULL) ? k : Puser [k] ;
362 Symbolic->nblocks = nblocks ;
363 Symbolic->maxblock = maxblock ;
364 Symbolic->lnz =
EMPTY ;
365 Symbolic->unz =
EMPTY ;
366 Symbolic->nzoff = nzoff ;
KLU_symbolic * KLU_analyze_given(Int n, Int Ap [], Int Ai [], Int Puser [], Int Quser [], KLU_common *Common)
#define KLU_OUT_OF_MEMORY
#define KLU_free_symbolic
KLU_symbolic * KLU_alloc_symbolic(Int n, Int *Ap, Int *Ai, KLU_common *Common)