1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
/*****************************************************************************
/
/ SPACE (SPArse Cholesky Elimination) Library: macros.h
/
/ author J"urgen Schulze, University of Paderborn
/ created 99jan24
/
/ This file contains some useful macros
/
******************************************************************************/
/* Some compilers (VC++ for instance) define a min and a max in the stdlib */
#ifdef min
# undef min
#endif
#ifdef max
# undef max
#endif
#define min(a,b) ((a) < (b) ? (a) : (b))
#define max(a,b) ((a) > (b) ? (a) : (b))
#define mymalloc(ptr, nr, type) \
if (!(ptr = (type*)malloc((max(nr,1)) * sizeof(type)))) \
{ printf("malloc failed on line %d of file %s (nr=%d)\n", \
__LINE__, __FILE__, nr); \
exit(ERR); \
}
#define myrealloc(ptr, nr, type) \
if (!(ptr = (type*)realloc(ptr, (nr) * sizeof(type)))) \
{ printf("realloc failed on line %d of file %s (nr=%d)\n", \
__LINE__, __FILE__, nr); \
exit(ERR); \
}
#define myrandom(range) \
rand() % (range);
#define swap(a, b, tmp) \
{ (tmp) = (a); (a) = (b); (b) = (tmp); }
#define seed() \
srand((PORD_INT)time(0) % 10000);
#define bit(var, d) \
((var) & (1 << (d)))
#define negbit(var, d) \
((var) ^ (1 << (d)))
#define waitkey() \
{ char _s[MAX_LINE_LEN]; printf("\n<RETURN>"); gets(_s); }
#define pord_resettimer(var) \
var = 0;
#define pord_starttimer(var) \
var -= ((FLOAT)clock()/CLOCKS_PER_SEC);
#define pord_stoptimer(var) \
var += ((FLOAT)clock()/CLOCKS_PER_SEC);
#define quit() \
exit(ERR);
#ifdef PARIX
#undef pord_starttimer(var)
#ifdef __EPX
#define pord_starttimer(var) \
var -= ((FLOAT)TimeNow()/CLOCK_TICK);
#else
#define pord_starttimer(var) \
var -= ((FLOAT)TimeNowHigh()/CLK_TCK_HIGH);
#endif
#undef pord_stoptimer(var)
#ifdef __EPX
#define pord_stoptimer(var) \
var += ((FLOAT)TimeNow()/CLOCK_TICK);
#else
#define pord_stoptimer(var) \
var += ((FLOAT)TimeNowHigh()/CLK_TCK_HIGH);
#endif
#undef quit()
#define quit() \
exit(ERR);
#endif
|