mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-18 06:16:36 +00:00
33 lines
575 B
C
33 lines
575 B
C
|
/* fast int primitives. min,max,abs,samesign
|
||
|
*
|
||
|
* WARNING: Assumes 2's complement arithmetic.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
|
||
|
static __inline__ int intmax( register int x, register int y )
|
||
|
{
|
||
|
return x < y ? y : x;
|
||
|
}
|
||
|
|
||
|
static __inline__ int intmin( register int x, register int y )
|
||
|
{
|
||
|
return x < y ? x : y;
|
||
|
}
|
||
|
|
||
|
static __inline__ int intabs( register int x )
|
||
|
{
|
||
|
return x < 0 ? -x : x;
|
||
|
}
|
||
|
|
||
|
#define fabsshift ((8*sizeof(unsigned int))-1)
|
||
|
|
||
|
#define signmask(x) (((int)x)>>fabsshift)
|
||
|
static __inline__ int intsamesign(int x, int y)
|
||
|
{
|
||
|
return (y+(signmask(x) & -(y<<1)));
|
||
|
}
|
||
|
#undef signmask
|
||
|
#undef fabsshift
|
||
|
|