int max(int a, int b)
{
const int BITSIZE_INT = ((sizeof(int) << 3) - 1));
return a - ((a - b) & (a - b) >> BITSIZE_INT);
}
int min(int a, int b)
{
const int BITSIZE_INT = ((sizeof(int) << 3) - 1));
return b + ((a - b) & (a - b) >> BITSIZE_INT);
}
int abs(int x)
{
const int BITSIZE_INT = ((sizeof(int) << 3) - 1));
return x + ((x * (x >> BITSIZE_INT)) << 1);
}
void swap(int* x, int* y)
{
if (*x != *y)
{
*x ^= *y;
*y ^= *x;
*x ^= *y;
}
}