From 3534b428629be185e096be99e3bd5fdfe32d5544 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Thu, 18 Sep 2014 18:55:44 +0000 Subject: initial commit with rc for skalibs-2.0.0.0 --- src/librandom/random_mask2.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/librandom/random_mask2.c (limited to 'src/librandom/random_mask2.c') diff --git a/src/librandom/random_mask2.c b/src/librandom/random_mask2.c new file mode 100644 index 0000000..ab8c8e7 --- /dev/null +++ b/src/librandom/random_mask2.c @@ -0,0 +1,35 @@ +/* ISC license. */ + +#include +#include "random-internal.h" + +unsigned int random_mask2 (register unsigned int n) +{ + for (;;) + { + register unsigned int m = n | (n >> 1) ; + if (m == n) return n ; + n = m ; + } +} + +unsigned int random_nchars (register unsigned int n) +{ + return n <= 0xff ? 1 : +#if SKALIBS_SIZEOFUINT == 2 + 2 +#else + n <= 0xffff ? 2 : + n <= 0xffffffUL ? 3 : +# if SKALIBS_SIZEOFUINT == 4 + 4 +# else + n <= 0xffffffffUL ? 4 : + n <= 0xffffffffffULL ? 5 : + n <= 0xffffffffffffULL ? 6 : + n <= 0xffffffffffffffULL ? 7 : + 8 +# endif +#endif + ; +} -- cgit v1.3.1