72 Common->error_handler =
NULL ;
78 Common->itype =
ITYPE ;
79 Common->dtype =
DTYPE ;
86 Common->try_catch =
FALSE ;
97 Common->malloc_memory = malloc ;
98 Common->free_memory = free ;
99 Common->realloc_memory = realloc ;
100 Common->calloc_memory = calloc ;
103 Common->malloc_memory =
NULL ;
104 Common->free_memory =
NULL ;
105 Common->realloc_memory =
NULL ;
106 Common->calloc_memory =
NULL ;
122 Common->print_function = printf ;
125 Common->print_function =
NULL ;
137 Common->mark =
EMPTY ;
138 Common->xworksize = 0 ;
139 Common->iworksize = 0 ;
140 Common->Flag =
NULL ;
141 Common->Head =
NULL ;
142 Common->Iwork =
NULL ;
143 Common->Xwork =
NULL ;
144 Common->no_workspace_reallocate =
FALSE ;
152 Common->lnz =
EMPTY ;
155 Common->modfl =
EMPTY ;
160 Common->malloc_count = 0 ;
161 Common->memory_usage = 0 ;
162 Common->memory_inuse = 0 ;
164 Common->nrealloc_col = 0 ;
165 Common->nrealloc_factor = 0 ;
166 Common->ndbounds_hit = 0 ;
167 Common->rowfacfl = 0 ;
168 Common->aatfl =
EMPTY ;
171 Common->called_nd =
FALSE ;
200 Common->dbound = 0.0 ;
201 Common->grow0 = 1.2 ;
202 Common->grow1 = 1.2 ;
204 Common->maxrank = 8 ;
206 Common->final_asis =
TRUE ;
207 Common->final_super =
TRUE ;
208 Common->final_ll =
FALSE ;
209 Common->final_pack =
TRUE ;
210 Common->final_monotonic =
TRUE ;
211 Common->final_resymbol =
FALSE ;
215 Common->supernodal_switch = 40 ;
217 Common->nrelax [0] = 4 ;
218 Common->nrelax [1] = 16 ;
219 Common->nrelax [2] = 48 ;
220 Common->zrelax [0] = 0.8 ;
221 Common->zrelax [1] = 0.1 ;
222 Common->zrelax [2] = 0.05 ;
224 Common->prefer_zomplex =
FALSE ;
225 Common->prefer_upper =
TRUE ;
226 Common->prefer_binary =
FALSE ;
227 Common->quick_return_if_not_posdef =
FALSE ;
230 Common->metis_memory = 0.0 ;
231 Common->metis_nswitch = 3000 ;
232 Common->metis_dswitch = 0.66 ;
235 Common->precise =
FALSE ;
246 #if (CHOLMOD_MAXMETHODS < 9)
247 #error "CHOLMOD_MAXMETHODS must be 9 or more (defined in cholmod_core.h)."
253 Common->nmethods = 0 ;
254 Common->default_nesdis =
FALSE ;
256 Common->current = 0 ;
257 Common->selected = 0 ;
266 Common->method [i].prune_dense = 10.0 ;
269 Common->method [i].prune_dense2 = -1 ;
270 Common->method [i].aggressive =
TRUE ;
271 Common->method [i].order_for_lu =
FALSE ;
274 Common->method [i].nd_small = 200 ;
275 Common->method [i].nd_compress =
TRUE ;
276 Common->method [i].nd_camd = 1 ;
277 Common->method [i].nd_components =
FALSE ;
278 Common->method [i].nd_oksep = 1.0 ;
281 Common->method [i].fl =
EMPTY ;
282 Common->method [i].lnz =
EMPTY ;
285 Common->postorder =
TRUE ;
296 Common->method [5].nd_small = 20000 ;
300 Common->method [6].nd_small = 4 ;
301 Common->method [6].nd_camd = 0 ;
305 Common->method [7].prune_dense = -1. ;
374 nrow =
MAX (1, nrow) ;
386 if (nrow > Common->nrow)
389 if (Common->no_workspace_reallocate)
397 Common->Flag =
CHOLMOD(free) (Common->nrow,
sizeof (
Int), Common->Flag,
399 Common->Head =
CHOLMOD(free) (Common->nrow+1,
sizeof (
Int), Common->Head,
401 Common->Flag =
CHOLMOD(malloc) (nrow,
sizeof (
Int), Common) ;
402 Common->Head =
CHOLMOD(malloc) (nrow1,
sizeof (
Int), Common) ;
405 Common->nrow = nrow ;
414 Common->mark =
EMPTY ;
416 Head = Common->Head ;
417 for (i = 0 ; i <= (
Int) (nrow) ; i++)
427 iworksize =
MAX (1, iworksize) ;
428 if (iworksize > Common->iworksize)
431 if (Common->no_workspace_reallocate)
440 CHOLMOD(free) (Common->iworksize,
sizeof (
Int), Common->Iwork, Common) ;
441 Common->Iwork =
CHOLMOD(malloc) (iworksize,
sizeof (
Int), Common) ;
444 Common->iworksize = iworksize ;
460 xworksize =
MAX (1, xworksize) ;
461 if (xworksize > Common->xworksize)
464 if (Common->no_workspace_reallocate)
472 CHOLMOD(free) (Common->xworksize,
sizeof (double), Common->Xwork,
474 Common->Xwork =
CHOLMOD(malloc) (xworksize,
sizeof (double), Common) ;
477 Common->xworksize = xworksize ;
487 for (i = 0 ; i < (
Int) xworksize ; i++)
512 Common->Flag =
CHOLMOD(free) (Common->nrow,
sizeof (
Int),
513 Common->Flag, Common) ;
514 Common->Head =
CHOLMOD(free) (Common->nrow+1,
sizeof (
Int),
515 Common->Head, Common) ;
516 Common->Iwork =
CHOLMOD(free) (Common->iworksize,
sizeof (
Int),
517 Common->Iwork, Common) ;
518 Common->Xwork =
CHOLMOD(free) (Common->xworksize,
sizeof (double),
519 Common->Xwork, Common) ;
521 Common->iworksize = 0 ;
522 Common->xworksize = 0 ;
548 if (Common->mark <= 0)
550 nrow = Common->nrow ;
551 Flag = Common->Flag ;
552 PRINT2 ((
"reset Flag: nrow "ID"\n", nrow)) ;
553 PRINT2 ((
"reset Flag: mark %ld\n", Common->mark)) ;
554 for (i = 0 ; i < nrow ; i++)
560 return (Common->mark) ;
581 maxrank = Common->maxrank ;
591 maxrank =
MIN (maxrank,
Size_max / (
n *
sizeof (
double))) ;
597 else if (maxrank <= 4)
633 dbound = Common->dbound ;
639 Common->ndbounds_hit++ ;
651 Common->ndbounds_hit++ ;
UF_long CHOLMOD() clear_flag(cholmod_common *Common)
#define CHOLMOD_TOO_LARGE
int CHOLMOD() allocate_work(size_t nrow, size_t iworksize, size_t xworksize, cholmod_common *Common)
size_t CHOLMOD() add_size_t(size_t a, size_t b, int *ok)
int CHOLMOD() divcomplex(double ar, double ai, double br, double bi, double *cr, double *ci)
int CHOLMOD() start(cholmod_common *Common)
#define RETURN_IF_NULL_COMMON(result)
int CHOLMOD() finish(cholmod_common *Common)
int CHOLMOD() free_work(cholmod_common *Common)
int CHOLMOD() defaults(cholmod_common *Common)
#define CHOLMOD_MAXMETHODS
double CHOLMOD() hypot(double x, double y)
#define ERROR(status, msg)