typedef uint32_t t4u; typedef uint64_t t8u; static t4u wsLog2(t4u p)noexcept{static t4u const n[0x20]={ 0x00,0x09,0x01,0x0A,0x0D,0x15,0x02,0x1D,0x0B,0x0E,0x10,0x12,0x16,0x19,0x03,0x1E, 0x08,0x0C,0x14,0x1C,0x0F,0x11,0x18,0x07,0x13,0x1B,0x17,0x06,0x1A,0x05,0x04,0x1F}; p|=p>>0x01,p|=p>>0x02,p|=p>>0x04,p|=p>>0x08,p|=p>>0x10;return n[(p*0x07C4ACDDU)>>0x1B];} static t4u wsLog2(t8u p)noexcept{static t4u const n[0x40]={ 0x00,0x01,0x02,0x07,0x03,0x0D,0x08,0x13,0x04,0x19,0x0E,0x1C,0x09,0x22,0x14,0x28, 0x05,0x11,0x1A,0x26,0x0F,0x2E,0x1D,0x30,0x0A,0x1F,0x23,0x36,0x15,0x32,0x29,0x39, 0x3F,0x06,0x0C,0x12,0x18,0x1B,0x21,0x27,0x10,0x25,0x2D,0x2F,0x1E,0x35,0x31,0x38, 0x3E,0x0B,0x17,0x20,0x24,0x2C,0x34,0x37,0x3D,0x16,0x2B,0x33,0x3C,0x2A,0x3B,0x3A}; p|=p>>0x01,p|=p>>0x02,p|=p>>0x04,p|=p>>0x08,p|=p>>0x10,p|=p>>0x20; return n[((p>>0x01)+0x01)*0x218A392CD3D5DBF>>0x3A];}
Monday, August 18, 2014
Find position of most significant bit, and log2
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment