• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1var 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
31for (var i = 0; i < 8; i++) {
32	QRMath.EXP_TABLE[i] = 1 << i;
33}
34for (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}
40for (var i = 0; i < 255; i++) {
41	QRMath.LOG_TABLE[QRMath.EXP_TABLE[i] ] = i;
42}
43
44module.exports = QRMath;
45