base: Add const to intmath and be more flexible with typing
This patch ensures the functions can be used on const variables.
This commit is contained in:
parent
2e17d83629
commit
6fa8015b7f
1 changed files with 10 additions and 10 deletions
|
@ -42,7 +42,7 @@ int prevPrime(int n);
|
||||||
// Determine if a number is prime
|
// Determine if a number is prime
|
||||||
template <class T>
|
template <class T>
|
||||||
inline bool
|
inline bool
|
||||||
isPrime(T n)
|
isPrime(const T& n)
|
||||||
{
|
{
|
||||||
T i;
|
T i;
|
||||||
|
|
||||||
|
@ -63,14 +63,14 @@ isPrime(T n)
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
inline T
|
inline T
|
||||||
leastSigBit(T n)
|
leastSigBit(const T& n)
|
||||||
{
|
{
|
||||||
return n & ~(n - 1);
|
return n & ~(n - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
inline bool
|
inline bool
|
||||||
isPowerOf2(T n)
|
isPowerOf2(const T& n)
|
||||||
{
|
{
|
||||||
return n != 0 && leastSigBit(n) == n;
|
return n != 0 && leastSigBit(n) == n;
|
||||||
}
|
}
|
||||||
|
@ -171,7 +171,7 @@ floorLog2(long long x)
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
inline int
|
inline int
|
||||||
ceilLog2(T n)
|
ceilLog2(const T& n)
|
||||||
{
|
{
|
||||||
if (n == 1)
|
if (n == 1)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -181,14 +181,14 @@ ceilLog2(T n)
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
inline T
|
inline T
|
||||||
floorPow2(T n)
|
floorPow2(const T& n)
|
||||||
{
|
{
|
||||||
return (T)1 << floorLog2(n);
|
return (T)1 << floorLog2(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
inline T
|
inline T
|
||||||
ceilPow2(T n)
|
ceilPow2(const T& n)
|
||||||
{
|
{
|
||||||
return (T)1 << ceilLog2(n);
|
return (T)1 << ceilLog2(n);
|
||||||
}
|
}
|
||||||
|
@ -200,17 +200,17 @@ divCeil(const T& a, const U& b)
|
||||||
return (a + b - 1) / b;
|
return (a + b - 1) / b;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template <class T, class U>
|
||||||
inline T
|
inline T
|
||||||
roundUp(T val, int align)
|
roundUp(const T& val, const U& align)
|
||||||
{
|
{
|
||||||
T mask = (T)align - 1;
|
T mask = (T)align - 1;
|
||||||
return (val + mask) & ~mask;
|
return (val + mask) & ~mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template <class T, class U>
|
||||||
inline T
|
inline T
|
||||||
roundDown(T val, int align)
|
roundDown(const T& val, const U& align)
|
||||||
{
|
{
|
||||||
T mask = (T)align - 1;
|
T mask = (T)align - 1;
|
||||||
return val & ~mask;
|
return val & ~mask;
|
||||||
|
|
Loading…
Reference in a new issue