math.js 673 B

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