33 #ifndef AMESOS_CHOLMOD_INTERNAL_H
34 #define AMESOS_CHOLMOD_INTERNAL_H
60 #if !defined(NPRINT) || !defined(NDEBUG)
79 #define BOOLEAN(x) ((x) ? TRUE : FALSE)
83 #define NULL ((void *) 0)
91 #define FLIP(i) (-(i)-2)
92 #define UNFLIP(i) (((i) < EMPTY) ? FLIP (i) : (i))
95 #define MAX(a,b) (((a) > (b)) ? (a) : (b))
96 #define MAX3(a,b,c) (((a) > (b)) ? (MAX (a,c)) : (MAX (b,c)))
97 #define MAX4(a,b,c,d) (((a) > (b)) ? (MAX3 (a,c,d)) : (MAX3 (b,c,d)))
98 #define MIN(a,b) (((a) < (b)) ? (a) : (b))
99 #define IMPLIES(p,q) (!(p) || (q))
103 #define SIGN(x) (((x) < 0) ? (-1) : (((x) > 0) ? 1 : 0))
106 #define ROUNDUP(x,s) ((s) * (((x) + ((s) - 1)) / (s)))
108 #define ERROR(status,msg) \
109 CHOLMOD(error) (status, __FILE__, __LINE__, msg, Common)
113 #define RETURN_IF_NULL(A,result) \
117 if (Common->status != CHOLMOD_OUT_OF_MEMORY) \
119 ERROR (CHOLMOD_INVALID, "argument missing") ; \
126 #define RETURN_IF_NULL_COMMON(result) \
128 if (Common == NULL) \
132 if (Common->itype != ITYPE || Common->dtype != DTYPE) \
134 Common->status = CHOLMOD_INVALID ; \
139 #define IS_NAN(x) CHOLMOD_IS_NAN(x)
140 #define IS_ZERO(x) CHOLMOD_IS_ZERO(x)
141 #define IS_NONZERO(x) CHOLMOD_IS_NONZERO(x)
142 #define IS_LT_ZERO(x) CHOLMOD_IS_LT_ZERO(x)
143 #define IS_GT_ZERO(x) CHOLMOD_IS_GT_ZERO(x)
144 #define IS_LE_ZERO(x) CHOLMOD_IS_LE_ZERO(x)
151 #define HUGE_DOUBLE 1e308
206 #define Size_max ((size_t) (-1))
221 #define Int_max UF_long_max
222 #define CHOLMOD(name) amesos_cholmod_l_ ## name
225 #define ITYPE CHOLMOD_LONG
226 #define DTYPE CHOLMOD_DOUBLE
227 #define ID UF_long_id
234 #error "mixed int/UF_long not yet supported"
241 #error "single-precision not yet supported"
247 #elif defined (SLONG)
248 #error "single-precision not yet supported"
255 #error "single-precision not yet supported"
271 #define Int_max INT_MAX
272 #define CHOLMOD(name) amesos_cholmod_ ## name
273 #define ITYPE CHOLMOD_INT
274 #define DTYPE CHOLMOD_DOUBLE
308 #define EXTERN extern
312 EXTERN int amesos_cholmod_dump ;
313 EXTERN int amesos_cholmod_dump_malloc ;
318 int amesos_cholmod_dump_subset (
int *,
size_t,
size_t,
char *,
cholmod_common *) ;
319 int amesos_cholmod_dump_perm (
int *,
size_t,
size_t,
char *,
cholmod_common *) ;
320 int amesos_cholmod_dump_parent (
int *,
size_t,
char *,
cholmod_common *) ;
325 void amesos_cholmod_dump_super (
UF_long,
int *,
int *,
int *,
int *,
double *,
int,
327 int amesos_cholmod_dump_partition (
UF_long,
int *,
int *,
int *,
int *,
UF_long,
332 EXTERN int amesos_cholmod_l_dump ;
333 EXTERN int amesos_cholmod_l_dump_malloc ;
338 int amesos_cholmod_l_dump_subset (
UF_long *,
size_t,
size_t,
char *,
352 #define DEBUG_INIT(s) { CHOLMOD(dump_init)(s, Common) ; }
353 #define PK_DEBUG_INIT(s,Common) { CHOLMOD(dump_init)(s, Common) ; }
355 #define ASSERT(expression) (assert (expression))
357 #define PRK(k,params) \
359 if (CHOLMOD(dump) >= (k) && Common->print_function != NULL) \
361 (Common->print_function) params ; \
365 #define PRINT0(params) PRK (0, params)
366 #define PRINT1(params) PRK (1, params)
367 #define PRINT2(params) PRK (2, params)
368 #define PRINT3(params) PRK (3, params)
369 #define PRINTM(params) PRK (CHOLMOD(dump_malloc), params)
371 #define DEBUG(statement) statement
376 #define PRK(k,params)
377 #define DEBUG_INIT(s)
378 #define PK_DEBUG_INIT(s,Common)
379 #define PRINT0(params)
380 #define PRINT1(params)
381 #define PRINT2(params)
382 #define PRINT3(params)
383 #define PRINTM(params)
384 #define ASSERT(expression)
385 #define DEBUG(statement)
size_t amesos_cholmod_mult_size_t(size_t a, size_t k, int *ok)
size_t amesos_cholmod_l_add_size_t(size_t a, size_t b, int *ok)
size_t amesos_cholmod_add_size_t(size_t a, size_t b, int *ok)
size_t amesos_cholmod_l_mult_size_t(size_t a, size_t k, int *ok)