UNPKG

aureooms-js-integer

Version:

integer code bricks for JavaScript

55 lines (45 loc) 3.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.bmul_t = bmul_t; function bmul_t(r) { /** * Computes product of two big endian arrays. * <p> * Computes product of two big endian arrays * using long multiplication algorithm (the one teached in * european primary schools) */ var mul = function mul(a, ai, aj, b, bi, bj, c, ci, cj) { var ak, ck = --cj, ct, t, u, v, w, y, z; while (bj-- > bi && ck >= ci) { for (ak = aj, w = 0; ak-- > ai && ck >= ci; --ck) { t = b[bj] * a[ak]; u = t % r; v = c[ck] + u + w; y = v % r; c[ck] = y; z = (v - y) / r; for (ct = ck - 1; z > 0 && ct >= ci; --ct) { v = c[ct] + z; y = v % r; c[ct] = y; z = (v - y) / r; } w = (t - u) / r; } ck = --cj; } }; return mul; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy8wLWxlZ2FjeS9hcml0aG1ldGljL211bC9tdWwuanMiXSwibmFtZXMiOlsiYm11bF90IiwiciIsIm11bCIsImEiLCJhaSIsImFqIiwiYiIsImJpIiwiYmoiLCJjIiwiY2kiLCJjaiIsImFrIiwiY2siLCJjdCIsInQiLCJ1IiwidiIsInciLCJ5IiwieiJdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFDZ0JBLE0sR0FBQUEsTTtBQUFULFNBQVNBLE1BQVQsQ0FBaUJDLENBQWpCLEVBQW1COztBQUV6Qjs7Ozs7Ozs7QUFRQSxLQUFJQyxNQUFNLFNBQU5BLEdBQU0sQ0FBU0MsQ0FBVCxFQUFZQyxFQUFaLEVBQWdCQyxFQUFoQixFQUFvQkMsQ0FBcEIsRUFBdUJDLEVBQXZCLEVBQTJCQyxFQUEzQixFQUErQkMsQ0FBL0IsRUFBa0NDLEVBQWxDLEVBQXNDQyxFQUF0QyxFQUF5QztBQUNsRCxNQUFJQyxFQUFKO0FBQUEsTUFBUUMsS0FBSyxFQUFFRixFQUFmO0FBQUEsTUFBbUJHLEVBQW5CO0FBQUEsTUFBdUJDLENBQXZCO0FBQUEsTUFBMEJDLENBQTFCO0FBQUEsTUFBNkJDLENBQTdCO0FBQUEsTUFBZ0NDLENBQWhDO0FBQUEsTUFBbUNDLENBQW5DO0FBQUEsTUFBc0NDLENBQXRDOztBQUVBLFNBQU9aLE9BQU9ELEVBQVAsSUFBYU0sTUFBTUgsRUFBMUIsRUFBOEI7QUFDN0IsUUFBS0UsS0FBS1AsRUFBTCxFQUFTYSxJQUFJLENBQWxCLEVBQXFCTixPQUFPUixFQUFQLElBQWFTLE1BQU1ILEVBQXhDLEVBQTRDLEVBQUVHLEVBQTlDLEVBQWtEO0FBQ2pERSxRQUFJVCxFQUFFRSxFQUFGLElBQVFMLEVBQUVTLEVBQUYsQ0FBWjtBQUNBSSxRQUFJRCxJQUFJZCxDQUFSO0FBQ0FnQixRQUFJUixFQUFFSSxFQUFGLElBQVFHLENBQVIsR0FBWUUsQ0FBaEI7O0FBRUFDLFFBQUlGLElBQUloQixDQUFSOztBQUVBUSxNQUFFSSxFQUFGLElBQVFNLENBQVI7O0FBRUFDLFFBQUksQ0FBQ0gsSUFBSUUsQ0FBTCxJQUFVbEIsQ0FBZDs7QUFFQSxTQUFLYSxLQUFLRCxLQUFLLENBQWYsRUFBa0JPLElBQUksQ0FBSixJQUFTTixNQUFNSixFQUFqQyxFQUFxQyxFQUFFSSxFQUF2QyxFQUEyQztBQUMxQ0csU0FBSVIsRUFBRUssRUFBRixJQUFRTSxDQUFaO0FBQ0FELFNBQUlGLElBQUloQixDQUFSO0FBQ0FRLE9BQUVLLEVBQUYsSUFBUUssQ0FBUjtBQUNBQyxTQUFJLENBQUNILElBQUlFLENBQUwsSUFBVWxCLENBQWQ7QUFDQTs7QUFFRGlCLFFBQUksQ0FBQ0gsSUFBSUMsQ0FBTCxJQUFVZixDQUFkO0FBQ0E7QUFDRFksUUFBSyxFQUFFRixFQUFQO0FBQ0E7QUFDRCxFQTFCRDs7QUE0QkEsUUFBT1QsR0FBUDtBQUVBIiwiZmlsZSI6Im11bC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGZ1bmN0aW9uIGJtdWxfdCAocil7XG5cblx0LyoqXG5cdCAqIENvbXB1dGVzIHByb2R1Y3Qgb2YgdHdvIGJpZyBlbmRpYW4gYXJyYXlzLlxuXHQgKiA8cD5cblx0ICogQ29tcHV0ZXMgcHJvZHVjdCBvZiB0d28gYmlnIGVuZGlhbiBhcnJheXNcblx0ICogdXNpbmcgbG9uZyBtdWx0aXBsaWNhdGlvbiBhbGdvcml0aG0gKHRoZSBvbmUgdGVhY2hlZCBpblxuXHQgKiBldXJvcGVhbiBwcmltYXJ5IHNjaG9vbHMpXG5cdCAqL1xuXG5cdHZhciBtdWwgPSBmdW5jdGlvbihhLCBhaSwgYWosIGIsIGJpLCBiaiwgYywgY2ksIGNqKXtcblx0XHR2YXIgYWssIGNrID0gLS1jaiwgY3QsIHQsIHUsIHYsIHcsIHksIHo7XG5cblx0XHR3aGlsZSAoYmogLS0+IGJpICYmIGNrID49IGNpKSB7XG5cdFx0XHRmb3IgKGFrID0gYWosIHcgPSAwOyBhayAtLT4gYWkgJiYgY2sgPj0gY2k7IC0tY2spIHtcblx0XHRcdFx0dCA9IGJbYmpdICogYVtha107XG5cdFx0XHRcdHUgPSB0ICUgcjtcblx0XHRcdFx0diA9IGNbY2tdICsgdSArIHc7XG5cblx0XHRcdFx0eSA9IHYgJSByO1xuXG5cdFx0XHRcdGNbY2tdID0geTtcblxuXHRcdFx0XHR6ID0gKHYgLSB5KSAvIHI7XG5cblx0XHRcdFx0Zm9yIChjdCA9IGNrIC0gMTsgeiA+IDAgJiYgY3QgPj0gY2k7IC0tY3QpIHtcblx0XHRcdFx0XHR2ID0gY1tjdF0gKyB6O1xuXHRcdFx0XHRcdHkgPSB2ICUgcjtcblx0XHRcdFx0XHRjW2N0XSA9IHk7XG5cdFx0XHRcdFx0eiA9ICh2IC0geSkgLyByO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dyA9ICh0IC0gdSkgLyByO1xuXHRcdFx0fVxuXHRcdFx0Y2sgPSAtLWNqO1xuXHRcdH1cblx0fTtcblxuXHRyZXR1cm4gbXVsO1xuXG59XG4iXX0=