• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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