librpc: Shorten dcerpc_binding_handle_call a bit
[Samba/gebeck_regimport.git] / lib / ccan / ilog / test / run-out-of-line.c
blob48205d380edd72c7e7ffbd67c8ef8cc0591f51fc
1 #include <ccan/ilog/ilog.h>
2 #include <ccan/ilog/ilog.c>
3 #include <stdio.h>
4 #include <ccan/tap/tap.h>
6 /*Dead simple (but slow) versions to compare against.*/
8 static int test_ilog32(uint32_t _v){
9 int ret;
10 for(ret=0;_v;ret++)_v>>=1;
11 return ret;
14 static int test_ilog64(uint64_t _v){
15 int ret;
16 for(ret=0;_v;ret++)_v>>=1;
17 return ret;
20 #define NTRIALS (64)
22 int main(int _argc,const char *_argv[]){
23 int i;
24 int j;
25 int (*il32)(uint32_t) = ilog32;
26 int (*il64)(uint64_t) = ilog64;
27 int (*il32_nz)(uint32_t) = ilog32_nz;
28 int (*il64_nz)(uint64_t) = ilog64_nz;
30 /*This is how many tests you plan to run.*/
31 plan_tests(33 * NTRIALS * 3 + 65 * NTRIALS * 3);
32 for(i=0;i<=32;i++){
33 uint32_t v;
34 /*Test each bit in turn (and 0).*/
35 v=i?(uint32_t)1U<<(i-1):0;
36 for(j=0;j<NTRIALS;j++){
37 int l;
38 l=test_ilog32(v);
39 ok1(STATIC_ILOG_32(v)==l);
40 ok1(il32(v)==l);
41 ok1(il32_nz(v) == l || v == 0);
42 /*Also try a few more pseudo-random values with at most the same number
43 of bits.*/
44 v=(1103515245U*v+12345U)&0xFFFFFFFFU>>((33-i)>>1)>>((32-i)>>1);
48 for(i=0;i<=64;i++){
49 uint64_t v;
50 /*Test each bit in turn (and 0).*/
51 v=i?(uint64_t)1U<<(i-1):0;
52 for(j=0;j<NTRIALS;j++){
53 int l;
54 l=test_ilog64(v);
55 ok1(STATIC_ILOG_64(v)==l);
56 ok1(il64(v)==l);
57 ok1(il64_nz(v) == l || v == 0);
58 /*Also try a few more pseudo-random values with at most the same number
59 of bits.*/
60 v=(uint64_t)((2862933555777941757ULL*v+3037000493ULL)
61 &0xFFFFFFFFFFFFFFFFULL>>((65-i)>>1)>>((64-i)>>1));
64 return exit_status();