Go to the documentation of this file.
18 #if defined (_MSC_VER) || defined (__MNO_CYGWIN)
25 #include <sys/resource.h>
30 #define PRINT_TIME(tm, f) { \
31 double elapsed = wall_clock(NULL) - tm->start_time; \
32 int hours, minutes, seconds, msec; \
33 hours = (int)(elapsed/3600.0); \
34 elapsed -= hours*3600.0; \
35 minutes = (int)(elapsed/60.0); \
36 elapsed -= minutes*60.0; \
37 seconds = (int)elapsed; \
38 elapsed -= (double)seconds; \
39 msec = (int)(elapsed*100.0); \
40 fprintf(f, "%.2d:%.2d:%.2d:%.2d ", hours, minutes, seconds, msec); \
44 #define PRINT_TIME2(tm, f) { \
45 double elapsed_t = wall_clock(NULL) - tm->start_time; \
46 fprintf(f, "%10.6f ", elapsed_t); \
49 #define TVCLEAR(tvp) (tvp.tv_sec = tvp.tv_usec = 0)
50 #define PTVCLEAR(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0)
52 #define TVISSET(tvp) (tvp.tv_sec || tvp.tv_usec)
53 #define PTVISSET(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
55 #define TVXLTY(xtv, ytv) \
56 ( (xtv.tv_sec < ytv.tv_sec) || \
57 (xtv.tv_sec == ytv.tv_sec && xtv.tv_usec < ytv.tv_usec))
58 #define PTVXLTY(xtv, ytv) \
59 ( ((xtv)->tv_sec < (ytv)->tv_sec) || \
60 ((xtv)->tv_sec == (ytv)->tv_sec && (xtv)->tv_usec < (ytv)->tv_usec))
62 #define TVXADDY(ztv, xtv, ytv) \
63 if ((ztv.tv_usec = xtv.tv_usec + ytv.tv_usec) < 1000000) { \
64 ztv.tv_sec = xtv.tv_sec + ytv.tv_sec; \
66 ztv.tv_usec -= 1000000; \
67 ztv.tv_sec = xtv.tv_sec + ytv.tv_sec + 1; \
69 #define PTVXADDY(ztv, xtv, ytv) \
70 if (((ztv)->tv_usec = (xtv)->tv_usec + (ytv)->tv_usec) < 1000000) { \
71 (ztv)->tv_sec = (xtv)->tv_sec + (ytv)->tv_sec; \
73 (ztv)->tv_usec -= 1000000; \
74 (ztv)->tv_sec = (xtv)->tv_sec + (ytv)->tv_sec + 1; \
77 #define TVXSUBY(ztv, xtv, ytv) \
78 if (xtv.tv_usec >= ytv.tv_usec) { \
79 ztv.tv_sec = xtv.tv_sec - ytv.tv_sec; \
80 ztv.tv_usec = xtv.tv_usec - ytv.tv_usec; \
82 ztv.tv_sec = xtv.tv_sec - ytv.tv_sec - 1; \
83 ztv.tv_usec = xtv.tv_usec + 1000000 - ytv.tv_usec; \
85 #define PTVXSUBY(ztv, xtv, ytv) \
86 if ((xtv)->tv_usec >= (ytv)->tv_usec) { \
87 (ztv)->tv_sec = (xtv)->tv_sec - (ytv)->tv_sec; \
88 (ztv)->tv_usec = (xtv)->tv_usec - (ytv)->tv_usec; \
90 (ztv)->tv_sec = (xtv)->tv_sec - (ytv)->tv_sec - 1; \
91 (ztv)->tv_usec = (xtv)->tv_usec + 1000000 - (ytv)->tv_usec; \
94 #define TVTODBL(tvp) ((double)tvp.tv_sec + ((double)tvp.tv_usec)/1000000 )
95 #define TVPTODBL(tvp) ((double)(tvp)->tv_sec+((double)(tvp)->tv_usec)/1000000)
97 #define DBLTOTV(x, tv) \
98 tv.tv_sec = (int) floor(x); \
99 tv.tv_usec = (int) floor(1000000 * (x - (double)tv.tv_sec));
100 #define DBLTOPTV(x, tvp) \
101 (tvp)->tv_sec = (int) floor(x); \
102 (tvp)->tv_usec = (int) floor(1000000 * (x - (tvp)->tv_sec));
104 void start_time
PROTO((
void));
105 double used_time
PROTO((
double *T));
106 double wall_clock
PROTO((
double *T));