File: macros.h

package info (click to toggle)
mumps 5.8.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 22,632 kB
  • sloc: fortran: 455,990; ansic: 14,541; makefile: 684; xml: 527; f90: 181; sh: 130
file content (87 lines) | stat: -rw-r--r-- 2,272 bytes parent folder | download | duplicates (5)
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