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