/*****************************************************************************\
// returns count of bits reuired to store set of (v) values in range <0;v-1>
\*****************************************************************************/
#ifndef BITCOUNT
#define BITCOUNT(v) (((v)-1)<65536?((v)-1)<256?((v)-1)<16?((v)-1)<4?((v)-1)<2?1:2:((v)-1)<\
8?3:4:((v)-1)<64?((v)-1)<32?5:6:((v)-1)<128?7:8:((v)-1)<4096?((v)-1)<1024?((v)-1)<512?9:10\
:((v)-1)<2048?11:12:((v)-1)<(1<<14)?((v)-1)<8192?13:14:((v)-1)<32768?15:16:((v)-1)<(1<<24)\
?((v)-1)<(1<<20)?((v)-1)<262144?((v)-1)<131072?17:18:((v)-1)<524288?19:20:((v)-1)<(1<<22)?\
((v)-1)<(1<<21)?21:22:((v)-1)<(1<<23)?23:24:((v)-1)<(1<<28)?((v)-1)<(1<<26)?((v)-1)<(1<<25\
)?25:26:((v)-1)<(1<<27)?27:28:((v)-1)<(1<<30)?((v)-1)<(1<<29)?29:30:((v)-1)<(1<<31)?31:32)
#endif