#include <stdio.h> typedef unsigned char uint8_t; const uint8_t log2_8_LUT[8] = { 0, 5, 1, 6, 4, 3, 2, 7 }; inline uint8_t log2_8(uint8_t val) { //Round up to the nearest power of two minus 1. val |= val >> 1; val |= val >> 2; val |= val >> 4; //Multiply by a magic number to generate a unique sequence of numbers //The magic number is a de Bruijn sequence of alphabet k = 2 and length n = 3. //Right shift by (2^n - n) to isolate the 3 bit sequence. return log2_8_LUT[(uint8_t)(0x1D * val) >> 5]; } int main(void) { for(int i = 0; i < 256; ++i) { } }
Standard input is empty
log2(0) = 0 log2(1) = 0 log2(2) = 1 log2(3) = 1 log2(4) = 2 log2(5) = 2 log2(6) = 2 log2(7) = 2 log2(8) = 3 log2(9) = 3 log2(10) = 3 log2(11) = 3 log2(12) = 3 log2(13) = 3 log2(14) = 3 log2(15) = 3 log2(16) = 4 log2(17) = 4 log2(18) = 4 log2(19) = 4 log2(20) = 4 log2(21) = 4 log2(22) = 4 log2(23) = 4 log2(24) = 4 log2(25) = 4 log2(26) = 4 log2(27) = 4 log2(28) = 4 log2(29) = 4 log2(30) = 4 log2(31) = 4 log2(32) = 5 log2(33) = 5 log2(34) = 5 log2(35) = 5 log2(36) = 5 log2(37) = 5 log2(38) = 5 log2(39) = 5 log2(40) = 5 log2(41) = 5 log2(42) = 5 log2(43) = 5 log2(44) = 5 log2(45) = 5 log2(46) = 5 log2(47) = 5 log2(48) = 5 log2(49) = 5 log2(50) = 5 log2(51) = 5 log2(52) = 5 log2(53) = 5 log2(54) = 5 log2(55) = 5 log2(56) = 5 log2(57) = 5 log2(58) = 5 log2(59) = 5 log2(60) = 5 log2(61) = 5 log2(62) = 5 log2(63) = 5 log2(64) = 6 log2(65) = 6 log2(66) = 6 log2(67) = 6 log2(68) = 6 log2(69) = 6 log2(70) = 6 log2(71) = 6 log2(72) = 6 log2(73) = 6 log2(74) = 6 log2(75) = 6 log2(76) = 6 log2(77) = 6 log2(78) = 6 log2(79) = 6 log2(80) = 6 log2(81) = 6 log2(82) = 6 log2(83) = 6 log2(84) = 6 log2(85) = 6 log2(86) = 6 log2(87) = 6 log2(88) = 6 log2(89) = 6 log2(90) = 6 log2(91) = 6 log2(92) = 6 log2(93) = 6 log2(94) = 6 log2(95) = 6 log2(96) = 6 log2(97) = 6 log2(98) = 6 log2(99) = 6 log2(100) = 6 log2(101) = 6 log2(102) = 6 log2(103) = 6 log2(104) = 6 log2(105) = 6 log2(106) = 6 log2(107) = 6 log2(108) = 6 log2(109) = 6 log2(110) = 6 log2(111) = 6 log2(112) = 6 log2(113) = 6 log2(114) = 6 log2(115) = 6 log2(116) = 6 log2(117) = 6 log2(118) = 6 log2(119) = 6 log2(120) = 6 log2(121) = 6 log2(122) = 6 log2(123) = 6 log2(124) = 6 log2(125) = 6 log2(126) = 6 log2(127) = 6 log2(128) = 7 log2(129) = 7 log2(130) = 7 log2(131) = 7 log2(132) = 7 log2(133) = 7 log2(134) = 7 log2(135) = 7 log2(136) = 7 log2(137) = 7 log2(138) = 7 log2(139) = 7 log2(140) = 7 log2(141) = 7 log2(142) = 7 log2(143) = 7 log2(144) = 7 log2(145) = 7 log2(146) = 7 log2(147) = 7 log2(148) = 7 log2(149) = 7 log2(150) = 7 log2(151) = 7 log2(152) = 7 log2(153) = 7 log2(154) = 7 log2(155) = 7 log2(156) = 7 log2(157) = 7 log2(158) = 7 log2(159) = 7 log2(160) = 7 log2(161) = 7 log2(162) = 7 log2(163) = 7 log2(164) = 7 log2(165) = 7 log2(166) = 7 log2(167) = 7 log2(168) = 7 log2(169) = 7 log2(170) = 7 log2(171) = 7 log2(172) = 7 log2(173) = 7 log2(174) = 7 log2(175) = 7 log2(176) = 7 log2(177) = 7 log2(178) = 7 log2(179) = 7 log2(180) = 7 log2(181) = 7 log2(182) = 7 log2(183) = 7 log2(184) = 7 log2(185) = 7 log2(186) = 7 log2(187) = 7 log2(188) = 7 log2(189) = 7 log2(190) = 7 log2(191) = 7 log2(192) = 7 log2(193) = 7 log2(194) = 7 log2(195) = 7 log2(196) = 7 log2(197) = 7 log2(198) = 7 log2(199) = 7 log2(200) = 7 log2(201) = 7 log2(202) = 7 log2(203) = 7 log2(204) = 7 log2(205) = 7 log2(206) = 7 log2(207) = 7 log2(208) = 7 log2(209) = 7 log2(210) = 7 log2(211) = 7 log2(212) = 7 log2(213) = 7 log2(214) = 7 log2(215) = 7 log2(216) = 7 log2(217) = 7 log2(218) = 7 log2(219) = 7 log2(220) = 7 log2(221) = 7 log2(222) = 7 log2(223) = 7 log2(224) = 7 log2(225) = 7 log2(226) = 7 log2(227) = 7 log2(228) = 7 log2(229) = 7 log2(230) = 7 log2(231) = 7 log2(232) = 7 log2(233) = 7 log2(234) = 7 log2(235) = 7 log2(236) = 7 log2(237) = 7 log2(238) = 7 log2(239) = 7 log2(240) = 7 log2(241) = 7 log2(242) = 7 log2(243) = 7 log2(244) = 7 log2(245) = 7 log2(246) = 7 log2(247) = 7 log2(248) = 7 log2(249) = 7 log2(250) = 7 log2(251) = 7 log2(252) = 7 log2(253) = 7 log2(254) = 7 log2(255) = 7