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