00001
00002
00003
00004
00006
00007 #ifndef __UTIL_H__
00008 #define __UTIL_H__
00009
00011
00012
00013
00015 #define abs(x) ((x) > 0 ? (x) : -(x))
00016
00018
00019
00020
00021
00023 #define Wrap(var, min, max) \
00024 { \
00025 if ((var) < (min)) (var) = (max) + (var) - (min); \
00026 if ((var) >= (max)) (var) = (min) + (var) - (max); \
00027 }
00028
00029
00030 #define Limit(var, min, max) \
00031 { \
00032 if ((var) < (min)) (var) = (min); \
00033 if ((var) > (max)) (var) = (max); \
00034 }
00035
00036
00038
00039
00040
00042 #define Sign(var) (((var) == 0)? 0: ((var) < 0)? -1: 1)
00043
00044
00046
00047
00048
00050 #define Min(a, b) (((a) < (b))? a: b)
00051 #define Max(a, b) (((a) > (b))? a: b)
00052
00053
00055
00056
00057
00059 #define ApproxEqual(a, b) ( (abs((a) - (b)) < SIMILAR_REAL)? TRUE: FALSE)
00060
00062
00064
00065 #define frand(_n) \
00066 ((REAL)rand() / RAND_MAX * (_n))
00067
00069
00071
00072 extern REAL GoodWrap(REAL *var, REAL min, REAL max);
00073
00074
00075 #endif