#ifndef NDEBUG /* cholmod_print_parent (Lparent, n, "Lparent, w/colcnt", Common) ; cholmod_print_perm (Lperm, n, n, "Lperm, w/colcnt", Common) ; cholmod_print_subset (Lcolcount, n, n, "Colcount, w/colcnt",Common); */ if (symmetric < 0) { /* symmetric lower case: S = tril (A (p,p))' and F = S' */ /* workspace: Iwork (2*nrow) */ C2 = cholmod_transpose (A, FALSE, Lperm, NULL, 0, Common) ; SS = C2 ; /* workspace: Iwork (nrow) */ C1 = cholmod_transpose (C2, FALSE, NULL, NULL, 0, Common) ; FF = C1 ; } else { /* symmetric upper case: F = triu (A (p,p))' and S = F' */ /* unsymmetric case: F = A (p,f)' and S = F' */ /* workspace: symmetric: Iwork (2*nrow), * unsym: Iwork (nrow if no fset, MAX(nrow,ncol) if fset) */ C1 = cholmod_transpose (A, FALSE, Lperm, fset, nf, Common) ; FF = C1 ; /* workspace: Iwork (nrow) */ C2 = cholmod_transpose (C1, FALSE, NULL, NULL, 0, Common) ; SS = C2 ; } /* workspace: symmmetric: Iwork (nrow), * unsymmetric: Iwork (nrow+ncol)*/ ColCount2 = cholmod_malloc (n, sizeof (int), Common) ; Parent2 = cholmod_malloc (n, sizeof (int), Common) ; Post2 = cholmod_malloc (n, sizeof (int), Common) ; /* cholmod_print_parent (Lparent, n, "Lparent, w/colcnt", Common) ; printf (">>>>> finding etree of post-permuted matrix\n") ; */ cholmod_etree (symmetric ? SS:FF, Parent2, Common) ; /* cholmod_print_parent (Parent2, n, "Parent2, w/colcnt", Common) ; for (k = 0 ; k < n ; k++) { printf ("k %d Parent old %d new %d\n", k, Lparent [k], Parent2 [k]) ; } */ for (k = 0 ; k < n ; k++) { ASSERT (Lparent [k] == Parent2 [k]) ; } /* workspace: Iwork (2*nrow) */ cholmod_postorder (Parent2, n, NULL, Post2, Common) ; cholmod_rowcolcounts (symmetric ? FF:SS, fset, nf, Parent2, Post2, NULL, ColCount2, First, Level, Common) ; for (k = 0 ; k < n ; k++) { ASSERT (Lcolcount [k] == ColCount2 [k]) ; } cholmod_free (n, sizeof (int), ColCount2, Common) ; cholmod_free (n, sizeof (int), Parent2, Common) ; cholmod_free (n, sizeof (int), Post2, Common) ; cholmod_free_sparse (&C1, Common) ; cholmod_free_sparse (&C2, Common) ; #endif