QRMath.js 649 B

123456789101112131415161718192021222324252627282930
  1. class QRMath {
  2. static EXP_TABLE = new Array(256);
  3. static LOG_TABLE = new Array(256);
  4. static glog(n) {
  5. if (n < 1) {
  6. throw new Error("glog(" + n + ")");
  7. }
  8. return QRMath.LOG_TABLE[n];
  9. }
  10. static gexp(n) {
  11. while (n < 0) {
  12. n += 255;
  13. }
  14. while (n >= 256) {
  15. n -= 255;
  16. }
  17. return QRMath.EXP_TABLE[n];
  18. }
  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] ^ QRMath.EXP_TABLE[i - 5] ^ QRMath.EXP_TABLE[i - 6] ^ QRMath
  25. .EXP_TABLE[i - 8];
  26. }
  27. for (var i = 0; i < 255; i++) {
  28. QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;
  29. }
  30. export default QRMath;