equal
deleted
inserted
replaced
24 static inline T max(T a, T b) |
24 static inline T max(T a, T b) |
25 { |
25 { |
26 return a >= b ? a : b; |
26 return a >= b ? a : b; |
27 } |
27 } |
28 |
28 |
|
29 template <typename T> |
|
30 static inline T min(T a, T b) |
|
31 { |
|
32 return a < b ? a : b; |
|
33 } |
|
34 |
29 static inline int min(int a, int b) { if (a <= b) return a; return b; } |
35 static inline int min(int a, int b) { if (a <= b) return a; return b; } |
30 |
36 |
31 static inline uint minu(uint a, uint b) { if (a <= b) return a; return b; } |
37 static inline uint minu(uint a, uint b) { if (a <= b) return a; return b; } |
32 |
38 |
33 |
39 |
41 static inline uint clampu(uint a, uint min, uint max) |
47 static inline uint clampu(uint a, uint min, uint max) |
42 { |
48 { |
43 if (a <= min) return min; |
49 if (a <= min) return min; |
44 if (a >= max) return max; |
50 if (a >= max) return max; |
45 return a; |
51 return a; |
|
52 } |
|
53 |
|
54 /* Gracefully reduce a signed 64-bit int to signed 32-bit -- no bogusly truncating the sign bit */ |
|
55 static inline int32 ClampToI32(int64 a) |
|
56 { |
|
57 if (a <= (int32)0x80000000) return 0x80000000; |
|
58 if (a >= (int32)0x7FFFFFFF) return 0x7FFFFFFF; |
|
59 return (int32)a; |
46 } |
60 } |
47 |
61 |
48 static inline int32 BIGMULSS(int32 a, int32 b, int shift) |
62 static inline int32 BIGMULSS(int32 a, int32 b, int shift) |
49 { |
63 { |
50 return (int32)((int64)a * (int64)b >> shift); |
64 return (int32)((int64)a * (int64)b >> shift); |