|
|
|
@@ -63,10 +63,19 @@ |
|
|
|
* Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they |
|
|
|
* are not representable as absolute values of their type. This is the same |
|
|
|
* as with *abs() |
|
|
|
* @see FFNABS() |
|
|
|
*/ |
|
|
|
#define FFABS(a) ((a) >= 0 ? (a) : (-(a))) |
|
|
|
#define FFSIGN(a) ((a) > 0 ? 1 : -1) |
|
|
|
|
|
|
|
/** |
|
|
|
* Negative Absolute value. |
|
|
|
* this works for all integers of all types. |
|
|
|
* As with many macros, this evaluates its argument twice, it thus must not have |
|
|
|
* a sideeffect, that is FFNABS(x++) has undefined behavior. |
|
|
|
*/ |
|
|
|
#define FFNABS(a) ((a) <= 0 ? (a) : (-(a))) |
|
|
|
|
|
|
|
#define FFMAX(a,b) ((a) > (b) ? (a) : (b)) |
|
|
|
#define FFMAX3(a,b,c) FFMAX(FFMAX(a,b),c) |
|
|
|
#define FFMIN(a,b) ((a) > (b) ? (b) : (a)) |
|
|
|
|