59 Int stype, nrow, ncol ;
244 Int i, j, k, row, parent, p, pend, pdest, ncol, apacked, sorted, nrow, nf,
245 use_fset, mark, jj, stype, xtype ;
246 Int *Ap, *Ai, *Anz, *Li, *Lp, *Lnz, *Flag, *Head, *Link, *Anext, *Iwork ;
327 if (!(L->is_monotonic))
332 ASSERT (L->nzmax >= (
size_t) (Lp [L->n])) ;
336 PRINT1 ((
"\n\n===================== Resymbol pack %d Apacked %d\n",
338 ASSERT (
CHOLMOD(dump_sparse) (A,
"ReSymbol A:", Common) >= 0) ;
345 Flag = Common->Flag ;
346 Head = Common->Head ;
347 Iwork = Common->Iwork ;
350 Anext = Iwork + 2*((size_t) nrow) ;
351 for (j = 0 ; j < nrow ; j++)
369 use_fset = (fset !=
NULL) ;
375 for (j = 0 ; j < ncol ; j++)
379 for (jj = 0 ; jj < nf ; jj++)
382 if (j < 0 || j > ncol || Anext [j] != -2)
399 for (jj = 0 ; jj < nf ; jj++)
401 j = (use_fset) ? (fset [jj]) : jj ;
404 pend = (apacked) ? (Ap [j+1]) : (p + Anz [j]) ;
410 for ( ; p < pend ; p++)
412 k =
MIN (k, Ai [p]) ;
416 ASSERT (k >= 0 && k < nrow) ;
417 Anext [j] = Head [k] ;
427 for (k = 0 ; k < nrow ; k++)
431 PRINT1 ((
"\n\n================== Initial column k = "ID"\n", k)) ;
432 for (p = Lp [k] ; p < Lp [k] + Lnz [k] ; p++)
434 PRINT1 ((
" row: "ID" value: ", Li [p])) ;
437 PRINT1 ((
"Recomputing LDL, column k = "ID"\n", k)) ;
447 PRINT1 ((
" row: "ID" (diagonal)\n", k)) ;
453 pend = (apacked) ? (Ap [k+1]) : (p + Anz [k]) ;
454 for ( ; p < pend ; p++)
466 for (j = Head [k] ; j !=
EMPTY ; j = Anext [j])
469 PRINT1 ((
" ---- A column "ID"\n", j)) ;
471 pend = (apacked) ? (Ap [j+1]) : (p + Anz [j]) ;
472 PRINT1 ((
" length "ID" adding\n", pend-p)) ;
473 for ( ; p < pend ; p++)
476 ASSERT (Ai [p] >= k && Ai [p] < nrow) ;
477 if (Flag [Ai [p]] < mark)
PRINT1 ((
" row "ID"\n", Ai [p])) ;
479 Flag [Ai [p]] = mark ;
491 for (j = Link [k] ; j !=
EMPTY ; j = Link [j])
494 PRINT1 ((
" ---- L column "ID"\n", k)) ;
499 ASSERT (Li [p] == j && Li [p+1] == k) ;
501 for ( ; p < pend ; p++)
504 ASSERT (Li [p] >= k && Li [p] < nrow) ;
505 Flag [Li [p]] = mark ;
513 PRINT1 ((
"Final column of L:\n")) ;
528 for ( ; p < pend ; p++)
533 ASSERT (row >= k && row < nrow) ;
534 if (Flag [row] == mark)
540 Lx [pdest] = Lx [p] ;
544 Lx [2*pdest ] = Lx [2*p ] ;
545 Lx [2*pdest+1] = Lx [2*p+1] ;
549 Lx [pdest] = Lx [p] ;
550 Lz [pdest] = Lz [p] ;
560 Lnz [k] = pdest - Lp [k] ;
562 PRINT1 ((
" L("ID") length "ID"\n", k, Lnz [k])) ;
566 parent = (Lnz [k] > 1) ? (Li [Lp [k] + 1]) :
EMPTY ;
568 PRINT1 ((
"parent ("ID
") = "ID
"\n", k, parent)) ;
569 ASSERT ((parent > k && parent < nrow) || (parent ==
EMPTY)) ;
573 Link [k] = Link [parent] ;
590 ASSERT ((
size_t) (Lp [nrow]) <= L->nzmax) ;
#define CHOLMOD_TOO_LARGE
int CHOLMOD() resymbol(cholmod_sparse *A, Int *fset, size_t fsize, int pack, cholmod_factor *L, cholmod_common *Common)
size_t CHOLMOD() add_size_t(size_t a, size_t b, int *ok)
#define RETURN_IF_NULL_COMMON(result)
size_t CHOLMOD() mult_size_t(size_t a, size_t k, int *ok)
int CHOLMOD() reallocate_factor(size_t nznew, cholmod_factor *L, cholmod_common *Common)
int CHOLMOD() dump_work(int flag, int head, UF_long wsize, cholmod_common *Common)
cholmod_sparse *CHOLMOD() ptranspose(cholmod_sparse *A, int values, Int *Perm, Int *fset, size_t fsize, cholmod_common *Common)
int CHOLMOD() free_sparse(cholmod_sparse **AHandle, cholmod_common *Common)
#define ASSERT(expression)
int CHOLMOD() dump_perm(Int *Perm, size_t len, size_t n, char *name, cholmod_common *Common)
int CHOLMOD() allocate_work(size_t nrow, size_t iworksize, size_t xworksize, cholmod_common *Common)
int CHOLMOD() resymbol_noperm(cholmod_sparse *A, Int *fset, size_t fsize, int pack, cholmod_factor *L, cholmod_common *Common)
#define RETURN_IF_NULL(A, result)
int CHOLMOD() dump_factor(cholmod_factor *L, char *name, cholmod_common *Common)
UF_long CHOLMOD() clear_flag(cholmod_common *Common)
#define ERROR(status, msg)
#define RETURN_IF_XTYPE_INVALID(A, xtype1, xtype2, result)