aboutsummaryrefslogtreecommitdiff
path: root/deps/node/deps/npm/node_modules/qrcode-terminal/vendor/QRCode/QRPolynomial.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/node/deps/npm/node_modules/qrcode-terminal/vendor/QRCode/QRPolynomial.js')
-rw-r--r--deps/node/deps/npm/node_modules/qrcode-terminal/vendor/QRCode/QRPolynomial.js66
1 files changed, 66 insertions, 0 deletions
diff --git a/deps/node/deps/npm/node_modules/qrcode-terminal/vendor/QRCode/QRPolynomial.js b/deps/node/deps/npm/node_modules/qrcode-terminal/vendor/QRCode/QRPolynomial.js
new file mode 100644
index 00000000..f8754cbc
--- /dev/null
+++ b/deps/node/deps/npm/node_modules/qrcode-terminal/vendor/QRCode/QRPolynomial.js
@@ -0,0 +1,66 @@
+var QRMath = require('./QRMath');
+
+function QRPolynomial(num, shift) {
+ if (num.length === undefined) {
+ throw new Error(num.length + "/" + shift);
+ }
+
+ var offset = 0;
+
+ while (offset < num.length && num[offset] === 0) {
+ offset++;
+ }
+
+ this.num = new Array(num.length - offset + shift);
+ for (var i = 0; i < num.length - offset; i++) {
+ this.num[i] = num[i + offset];
+ }
+}
+
+QRPolynomial.prototype = {
+
+ get : function(index) {
+ return this.num[index];
+ },
+
+ getLength : function() {
+ return this.num.length;
+ },
+
+ multiply : function(e) {
+
+ var num = new Array(this.getLength() + e.getLength() - 1);
+
+ for (var i = 0; i < this.getLength(); i++) {
+ for (var j = 0; j < e.getLength(); j++) {
+ num[i + j] ^= QRMath.gexp(QRMath.glog(this.get(i) ) + QRMath.glog(e.get(j) ) );
+ }
+ }
+
+ return new QRPolynomial(num, 0);
+ },
+
+ mod : function(e) {
+
+ if (this.getLength() - e.getLength() < 0) {
+ return this;
+ }
+
+ var ratio = QRMath.glog(this.get(0) ) - QRMath.glog(e.get(0) );
+
+ var num = new Array(this.getLength() );
+
+ for (var i = 0; i < this.getLength(); i++) {
+ num[i] = this.get(i);
+ }
+
+ for (var x = 0; x < e.getLength(); x++) {
+ num[x] ^= QRMath.gexp(QRMath.glog(e.get(x) ) + ratio);
+ }
+
+ // recursive call
+ return new QRPolynomial(num, 0).mod(e);
+ }
+};
+
+module.exports = QRPolynomial;