1 |
4 |
abhiag |
//----------------------------------------------------------------------//
|
2 |
|
|
// The MIT License
|
3 |
|
|
//
|
4 |
|
|
// Copyright (c) 2008 Abhinav Agarwal, Alfred Man Cheuk Ng
|
5 |
|
|
// Contact: abhiag@gmail.com
|
6 |
|
|
//
|
7 |
|
|
// Permission is hereby granted, free of charge, to any person
|
8 |
|
|
// obtaining a copy of this software and associated documentation
|
9 |
|
|
// files (the "Software"), to deal in the Software without
|
10 |
|
|
// restriction, including without limitation the rights to use,
|
11 |
|
|
// copy, modify, merge, publish, distribute, sublicense, and/or sell
|
12 |
|
|
// copies of the Software, and to permit persons to whom the
|
13 |
|
|
// Software is furnished to do so, subject to the following conditions:
|
14 |
|
|
//
|
15 |
|
|
// The above copyright notice and this permission notice shall be
|
16 |
|
|
// included in all copies or substantial portions of the Software.
|
17 |
|
|
//
|
18 |
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
19 |
|
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
20 |
|
|
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
21 |
|
|
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
22 |
|
|
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
23 |
|
|
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
24 |
|
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
25 |
|
|
// OTHER DEALINGS IN THE SOFTWARE.
|
26 |
|
|
//----------------------------------------------------------------------//
|
27 |
|
|
|
28 |
|
|
#include "global_rs.h"
|
29 |
|
|
|
30 |
|
|
const unsigned int pp [mm+1] = { 1, 0, 1, 1, 1, 0, 0, 0, 1} ; /* specify irreducible polynomial coeffts */
|
31 |
|
|
const unsigned char pp_char = 29;
|
32 |
|
|
|
33 |
|
|
void generate_gf( int *alpha_to, int *index_of);
|
34 |
|
|
unsigned char gfmult_lut(unsigned char a, unsigned char b, int *alpha_to, int *index_of);
|
35 |
|
|
unsigned char gfmult_hw(unsigned char a, unsigned char b);
|
36 |
|
|
unsigned char gfadd_hw(unsigned char a, unsigned char b);
|
37 |
|
|
unsigned char gfinv_lut(unsigned char a);
|
38 |
|
|
unsigned char alpha (unsigned char n);
|
39 |
|
|
unsigned char alphainv_lut (unsigned char n);
|
40 |
|
|
unsigned char gfdiv_lut (unsigned char dividend, unsigned char divisor);
|
41 |
|
|
void polymult_mod2t (unsigned char *result, unsigned char *left, unsigned char *right);
|
42 |
|
|
void compute_deriv (unsigned char lambda[tt], unsigned char lambda_deriv[tt]);
|
43 |
|
|
unsigned char poly_eval (unsigned char poly[tt], unsigned char alpha_inv);
|
44 |
|
|
|
45 |
|
|
|
46 |
|
|
|