1 | var QRMath = {
|
2 |
|
3 | glog : function(n) {
|
4 |
|
5 | if (n < 1) {
|
6 | throw new Error("glog(" + n + ")");
|
7 | }
|
8 |
|
9 | return QRMath.LOG_TABLE[n];
|
10 | },
|
11 |
|
12 | gexp : function(n) {
|
13 |
|
14 | while (n < 0) {
|
15 | n += 255;
|
16 | }
|
17 |
|
18 | while (n >= 256) {
|
19 | n -= 255;
|
20 | }
|
21 |
|
22 | return QRMath.EXP_TABLE[n];
|
23 | },
|
24 |
|
25 | EXP_TABLE : new Array(256),
|
26 |
|
27 | LOG_TABLE : new Array(256)
|
28 |
|
29 | };
|
30 |
|
31 | for (var i = 0; i < 8; i++) {
|
32 | QRMath.EXP_TABLE[i] = 1 << i;
|
33 | }
|
34 | for (var i = 8; i < 256; i++) {
|
35 | QRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4]
|
36 | ^ QRMath.EXP_TABLE[i - 5]
|
37 | ^ QRMath.EXP_TABLE[i - 6]
|
38 | ^ QRMath.EXP_TABLE[i - 8];
|
39 | }
|
40 | for (var i = 0; i < 255; i++) {
|
41 | QRMath.LOG_TABLE[QRMath.EXP_TABLE[i] ] = i;
|
42 | }
|
43 |
|
44 | module.exports = QRMath;
|