Math Lib: add power of 2 min/max for unsigned ints

This commit is contained in:
Campbell Barton 2014-04-05 21:39:46 +11:00
parent 95ac6bc9e5
commit 2a82b8ade5
2 changed files with 24 additions and 0 deletions

View File

@ -231,6 +231,9 @@ MINLINE int is_power_of_2_i(int n);
MINLINE int power_of_2_max_i(int n);
MINLINE int power_of_2_min_i(int n);
MINLINE unsigned int power_of_2_max_u(unsigned int x);
MINLINE unsigned int power_of_2_min_u(unsigned int x);
MINLINE int iroundf(float a);
MINLINE int divide_round_i(int a, int b);
MINLINE int mod_i(int i, int n);

View File

@ -151,6 +151,27 @@ MINLINE int power_of_2_min_i(int n)
return n;
}
MINLINE unsigned int power_of_2_max_u(unsigned int x)
{
x -= 1;
x |= (x >> 1);
x |= (x >> 2);
x |= (x >> 4);
x |= (x >> 8);
x |= (x >> 16);
return x + 1;
}
MINLINE unsigned power_of_2_min_u(unsigned x)
{
x |= (x >> 1);
x |= (x >> 2);
x |= (x >> 4);
x |= (x >> 8);
x |= (x >> 16);
return x - (x >> 1);
}
MINLINE int iroundf(float a)
{
return (int)floorf(a + 0.5f);