31 Int nz, i, j, p, pend ;
53 if (Ap [0] != 0 || nz < 0)
60 for (j = 0 ; j <
n ; j++)
62 if (Ap [j] > Ap [j+1])
76 for (i = 0 ; i <
n ; i++)
80 for (j = 0 ; j <
n ; j++)
83 for (p = Ap [j] ; p < pend ; p++)
86 if (i < 0 || i >=
n ||
P [i] == j)
120 Symbolic->Lnz = Lnz ;
153 Int nblocks, nz, block, maxblock, *
P, *Q, *R, nzoff, p, pend, do_btf, k ;
160 if (Symbolic ==
NULL)
167 Lnz = Symbolic->Lnz ;
176 for (k = 0 ; k <
n ; k++)
183 for (k = 0 ; k <
n ; k++)
195 Symbolic->ordering = 2 ;
196 Symbolic->do_btf = do_btf ;
209 Int *Pinv, *Work, *Bi, k1, k2, nk, oldcol ;
242 for (k = 0 ; k <
n ; k++)
244 Pinv [Puser [k]] = k ;
246 for (p = 0 ; p < nz ; p++)
248 Bi [p] = Pinv [Ai [p]] ;
265 for (k = 0 ; k <
n ; k++)
267 Work [k] = Puser [
P [k]] ;
269 for (k = 0 ; k <
n ; k++)
279 for (k = 0 ; k <
n ; k++)
291 for (block = 0 ; block < nblocks ; block++)
301 PRINTF ((
"BLOCK %d, k1 %d k2-1 %d nk %d\n", block, k1, k2-1, nk)) ;
302 maxblock =
MAX (maxblock, nk) ;
308 for (k = k1 ; k < k2 ; k++)
311 pend = Ap [oldcol+1] ;
312 for (p = Ap [oldcol] ; p < pend ; p++)
314 if (Pinv [Ai [p]] < k1)
322 Lnz [block] =
EMPTY ;
355 for (k = 0 ; k <
n ; k++)
357 P [k] = (Puser ==
NULL) ? k : Puser [k] ;
365 Symbolic->nblocks = nblocks ;
366 Symbolic->maxblock = maxblock ;
367 Symbolic->lnz =
EMPTY ;
368 Symbolic->unz =
EMPTY ;
369 Symbolic->nzoff = nzoff ;
KLU_symbolic * KLU_alloc_symbolic(Int n, Int *Ap, Int *Ai, KLU_common *Common)
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