1 /* Utility routines for FEC support
2 * Copyright 2004, Phil Karn, KA9Q
3 */
4
5 #include <stdio.h>
6 #include "fec.h"
7
8 unsigned char Partab[256];
9 int P_init;
10
11 /* Create 256-entry odd-parity lookup table
12 * Needed only on non-ia32 machines
13 */
partab_init(void)14 void partab_init(void){
15 int i,cnt,ti;
16
17 /* Initialize parity lookup table */
18 for(i=0;i<256;i++){
19 cnt = 0;
20 ti = i;
21 while(ti){
22 if(ti & 1)
23 cnt++;
24 ti >>= 1;
25 }
26 Partab[i] = cnt & 1;
27 }
28 P_init=1;
29 }
30
31 /* Lookup table giving count of 1 bits for integers 0-255 */
32 int Bitcnt[] = {
33 0, 1, 1, 2, 1, 2, 2, 3,
34 1, 2, 2, 3, 2, 3, 3, 4,
35 1, 2, 2, 3, 2, 3, 3, 4,
36 2, 3, 3, 4, 3, 4, 4, 5,
37 1, 2, 2, 3, 2, 3, 3, 4,
38 2, 3, 3, 4, 3, 4, 4, 5,
39 2, 3, 3, 4, 3, 4, 4, 5,
40 3, 4, 4, 5, 4, 5, 5, 6,
41 1, 2, 2, 3, 2, 3, 3, 4,
42 2, 3, 3, 4, 3, 4, 4, 5,
43 2, 3, 3, 4, 3, 4, 4, 5,
44 3, 4, 4, 5, 4, 5, 5, 6,
45 2, 3, 3, 4, 3, 4, 4, 5,
46 3, 4, 4, 5, 4, 5, 5, 6,
47 3, 4, 4, 5, 4, 5, 5, 6,
48 4, 5, 5, 6, 5, 6, 6, 7,
49 1, 2, 2, 3, 2, 3, 3, 4,
50 2, 3, 3, 4, 3, 4, 4, 5,
51 2, 3, 3, 4, 3, 4, 4, 5,
52 3, 4, 4, 5, 4, 5, 5, 6,
53 2, 3, 3, 4, 3, 4, 4, 5,
54 3, 4, 4, 5, 4, 5, 5, 6,
55 3, 4, 4, 5, 4, 5, 5, 6,
56 4, 5, 5, 6, 5, 6, 6, 7,
57 2, 3, 3, 4, 3, 4, 4, 5,
58 3, 4, 4, 5, 4, 5, 5, 6,
59 3, 4, 4, 5, 4, 5, 5, 6,
60 4, 5, 5, 6, 5, 6, 6, 7,
61 3, 4, 4, 5, 4, 5, 5, 6,
62 4, 5, 5, 6, 5, 6, 6, 7,
63 4, 5, 5, 6, 5, 6, 6, 7,
64 5, 6, 6, 7, 6, 7, 7, 8,
65 };
66
67