85 Int *Perm, *ColCount ;
150 for (j = 0 ; j < ((
Int)
n) ; j++)
155 for (j = 0 ; j < ((
Int)
n) ; j++)
181 Int n, lnz, xs, ss, s ;
224 CHOLMOD(free) (xs,
sizeof (double), L->
x, Common) ;
228 CHOLMOD(free) (xs, 2*
sizeof (double), L->
x, Common) ;
232 CHOLMOD(free) (xs,
sizeof (double), L->
x, Common) ;
233 CHOLMOD(free) (xs,
sizeof (double), L->
z, Common) ;
268 PRINT1 ((
"realloc factor: xtype %d\n", L->xtype)) ;
276 PRINT1 ((
"realloc factor %g to %g\n", (
double) L->nzmax, (
double) nznew)) ;
283 &(L->x), &(L->z), &(L->nzmax), Common) ;
312 Int *Lp, *Lprev, *Lnext, *Li, *Lnz ;
313 Int n, pold, pnew, len, k, tail ;
328 if (j >= L->n || need == 0)
350 PRINT1 ((
"col %g need %g\n", (
double) j, (
double) need)) ;
353 need =
MIN (need, n-j) ;
356 if (Common->grow1 >= 1.0)
358 xneed = (double) need ;
359 xneed = Common->grow1 * xneed + Common->grow2 ;
360 xneed =
MIN (xneed, n-j) ;
363 PRINT1 ((
"really new need %g current %g\n", (
double) need,
364 (
double) (Lp [Lnext [j]] - Lp [j]))) ;
365 ASSERT (need >= 1 && need <= n-j) ;
367 if (Lp [Lnext [j]] - Lp [j] >= (
Int) need)
370 PRINT1 ((
"colrealloc: quick return %g %g\n",
371 (
double) (Lp [Lnext [j]] - Lp [j]), (
double) need)) ;
376 if (Lp [tail] + need > L->nzmax)
379 xneed = (double) need ;
380 if (Common->grow0 < 1.2)
383 xneed = 1.2 * (((double) L->nzmax) + xneed + 1) ;
387 xneed = Common->grow0 * (((double) L->nzmax) + xneed + 1) ;
398 PRINT1 ((
"\n=== GROW L from %g to %g\n",
399 (
double) L->nzmax, (
double) xneed)) ;
403 Common->nrealloc_factor++ ;
410 Common->nrealloc_col++ ;
417 Lnext [Lprev [j]] = Lnext [j] ;
418 Lprev [Lnext [j]] = Lprev [j] ;
421 Lnext [Lprev [tail]] = j ;
422 Lprev [j] = Lprev [tail] ;
427 L->is_monotonic =
FALSE ;
437 for (k = 0 ; k < len ; k++)
439 Li [pnew + k] = Li [pold + k] ;
444 for (k = 0 ; k < len ; k++)
446 Lx [pnew + k] = Lx [pold + k] ;
451 for (k = 0 ; k < len ; k++)
453 Lx [2*(pnew + k) ] = Lx [2*(pold + k) ] ;
454 Lx [2*(pnew + k)+1] = Lx [2*(pold + k)+1] ;
459 for (k = 0 ; k < len ; k++)
461 Lx [pnew + k] = Lx [pold + k] ;
462 Lz [pnew + k] = Lz [pold + k] ;
501 Int *Lp, *Li, *Lnz, *Lnext ;
502 Int pnew, j, k, pold, len,
n, head, tail, grow2 ;
525 grow2 = Common->grow2 ;
526 PRINT1 ((
"\nPACK grow2 "ID"\n", grow2)) ;
540 for (j = Lnext [head] ; j != tail ; j = Lnext [j])
546 PRINT2 ((
"col "ID" pnew "ID" pold "ID"\n", j, pnew, pold)) ;
549 PRINT2 ((
" pack this column\n")) ;
551 for (k = 0 ; k < len ; k++)
553 Li [pnew + k] = Li [pold + k] ;
558 for (k = 0 ; k < len ; k++)
560 Lx [pnew + k] = Lx [pold + k] ;
565 for (k = 0 ; k < len ; k++)
567 Lx [2*(pnew + k) ] = Lx [2*(pold + k) ] ;
568 Lx [2*(pnew + k)+1] = Lx [2*(pold + k)+1] ;
573 for (k = 0 ; k < len ; k++)
575 Lx [pnew + k] = Lx [pold + k] ;
576 Lz [pnew + k] = Lz [pold + k] ;
582 len =
MIN (len + grow2, n - j) ;
583 pnew =
MIN (Lp [j] + len, Lp [Lnext [j]]) ;
585 PRINT2 ((
"final pnew = "ID"\n", pnew)) ;
650 Lsparse->
nrow = L->
n ;
651 Lsparse->
ncol = L->
n ;
664 ASSERT (
CHOLMOD(dump_sparse) (Lsparse,
"Lsparse", Common) >= 0) ;
704 double *Lx, *L2x, *Lz, *L2z ;
705 Int *Perm, *ColCount, *Lp, *Li, *Lnz, *Lnext, *Lprev, *Lsuper, *Lpi, *Lpx,
706 *Ls, *Perm2, *ColCount2, *L2p, *L2i, *L2nz, *L2next, *L2prev, *L2super,
708 Int n, j, p, pend, s, xsize, ssize, nsuper ;
740 for (j = 0 ; j < n ; j++)
742 Perm2 [j] = Perm [j] ;
744 for (j = 0 ; j < n ; j++)
746 ColCount2 [j] = ColCount [j] ;
795 for (j = 0 ; j <= n ; j++)
800 for (j = 0 ; j < n+2 ; j++)
802 L2prev [j] = Lprev [j] ;
805 for (j = 0 ; j < n+2 ; j++)
807 L2next [j] = Lnext [j] ;
810 for (j = 0 ; j < n ; j++)
815 for (j = 0 ; j < n ; j++)
819 for ( ; p < pend ; p++)
827 for ( ; p < pend ; p++)
834 for ( ; p < pend ; p++)
836 L2x [2*p ] = Lx [2*p ] ;
837 L2x [2*p+1] = Lx [2*p+1] ;
842 for ( ; p < pend ; p++)
888 L2super = L2->
super ;
897 for (s = 0 ; s <= nsuper ; s++)
899 L2super [s] = Lsuper [s] ;
901 for (s = 0 ; s <= nsuper ; s++)
905 for (s = 0 ; s <= nsuper ; s++)
911 for (p = 0 ; p < ssize ; p++)
918 for (p = 0 ; p < xsize ; p++)
925 for (p = 0 ; p < 2*xsize ; p++)
#define CHOLMOD_TOO_LARGE
int CHOLMOD() realloc_multiple(size_t nnew, int nint, int xtype, void **I, void **J, void **X, void **Z, size_t *nold_p, cholmod_common *Common)
size_t CHOLMOD() add_size_t(size_t a, size_t b, int *ok)
int CHOLMOD() reallocate_column(size_t j, size_t need, cholmod_factor *L, cholmod_common *Common)
cholmod_factor *CHOLMOD() allocate_factor(size_t n, cholmod_common *Common)
#define RETURN_IF_NULL_COMMON(result)
struct cholmod_factor_struct cholmod_factor
int CHOLMOD() pack_factor(cholmod_factor *L, cholmod_common *Common)
#define ASSERT(expression)
cholmod_sparse *CHOLMOD() factor_to_sparse(cholmod_factor *L, cholmod_common *Common)
#define CHOLMOD_OUT_OF_MEMORY
int CHOLMOD() free_factor(cholmod_factor **LHandle, cholmod_common *Common)
struct cholmod_sparse_struct cholmod_sparse
#define RETURN_IF_NULL(A, result)
int CHOLMOD() change_factor(int to_xtype, int to_ll, int to_super, int to_packed, int to_monotonic, cholmod_factor *L, cholmod_common *Common)
int CHOLMOD() dump_factor(cholmod_factor *L, char *name, cholmod_common *Common)
int CHOLMOD() reallocate_factor(size_t nznew, cholmod_factor *L, cholmod_common *Common)
cholmod_factor *CHOLMOD() copy_factor(cholmod_factor *L, cholmod_common *Common)
#define ERROR(status, msg)
#define RETURN_IF_XTYPE_INVALID(A, xtype1, xtype2, result)