Files
MP-SPDZ/Tools/int.h
Marcel Keller 6a424539c9 SoftSpokenOT.
2022-08-25 13:23:18 +10:00

72 lines
1.0 KiB
C

/*
* int.h
*
*/
#ifndef TOOLS_INT_H_
#define TOOLS_INT_H_
typedef unsigned char octet;
// Assumes word is a 64 bit value
#ifdef WIN32
typedef unsigned __int64 word;
#else
typedef unsigned long word;
#endif
inline int CEIL_LOG2(int x)
{
int result = 0;
x--;
while (x > 0)
{
result++;
x >>= 1;
}
return result;
}
inline int FLOOR_LOG2(int x)
{
int result = 0;
while (x > 1)
{
result++;
x >>= 1;
}
return result;
}
// ceil(n / k)
inline long long DIV_CEIL(long long n, long long k)
{
return (n + k - 1)/k;
}
inline long long multiple_minimum(long long n, long long k)
{
return DIV_CEIL(n, k) * k;
}
inline void INT_TO_BYTES(octet *buff, int x)
{
buff[0] = x&255;
buff[1] = (x>>8)&255;
buff[2] = (x>>16)&255;
buff[3] = (x>>24)&255;
}
inline int BYTES_TO_INT(octet *buff)
{
return buff[0] + 256*buff[1] + 65536*buff[2] + 16777216*buff[3];
}
inline int positive_modulo(int i, int n) {
return (i % n + n) % n;
}
#endif /* TOOLS_INT_H_ */