UNPKG

aureooms-js-integer

Version:

integer code bricks for JavaScript

98 lines (83 loc) 6.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.badd_t = badd_t; exports.ladd_t = ladd_t; /** * @param {int} r base (radix) */ function badd_t(r) { /** * Adds two big endian arrays, k >= i >= j * wraps * * @param {array} a first operand * @param {int} i0 a left * @param {int} i1 a right * @param {array} b second operand * @param {int} j0 b left * @param {int} j1 b right * @param {array} c result, must be 0 initialized * @param {int} k0 c left * @param {int} k1 c right */ return function (a, i0, i1, b, j0, j1, c, k0, k1) { var t, C = 0; while (--j1 >= j0) { --i1;--k1; t = a[i1] + b[j1] + C; c[k1] = t % r; C = t / r >= 1; } while (--i1 >= i0) { --k1; t = a[i1] + C; c[k1] = t % r; C = t / r >= 1; } if (--k1 >= k0) { c[k1] = +C; } }; } /** * @param {int} r base (radix) */ function ladd_t(r) { /** * Adds two little endian arrays, k >= i >= j * wraps * * @param {array} a first operand * @param {int} i0 a left * @param {int} i1 a right * @param {array} b second operand * @param {int} j0 b left * @param {int} j1 b right * @param {array} c result, must be 0 initialized * @param {int} k0 c left * @param {int} k1 c right */ return function (a, i0, i1, b, j0, j1, c, k0, k1) { var t, C = 0; while (j0 < j1) { t = a[i0] + b[j0] + C; c[k0] = t % r; C = t / r >= 1; ++i0;++j0;++k0; } while (i0 < i1) { t = a[i0] + C; c[k0] = t % r; C = t / r >= 1; ++i0;++k0; } if (k0 < k1) { c[k0] = +C; } }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy8wLWxlZ2FjeS9hcml0aG1ldGljL2FkZC9hZGQuanMiXSwibmFtZXMiOlsiYmFkZF90IiwibGFkZF90IiwiciIsImEiLCJpMCIsImkxIiwiYiIsImowIiwiajEiLCJjIiwiazAiLCJrMSIsInQiLCJDIl0sIm1hcHBpbmdzIjoiOzs7OztRQU1nQkEsTSxHQUFBQSxNO1FBZ0RBQyxNLEdBQUFBLE07O0FBckRoQjs7OztBQUtPLFNBQVNELE1BQVQsQ0FBaUJFLENBQWpCLEVBQW9COztBQUcxQjs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsUUFBTyxVQUFTQyxDQUFULEVBQVlDLEVBQVosRUFBZ0JDLEVBQWhCLEVBQW9CQyxDQUFwQixFQUF1QkMsRUFBdkIsRUFBMkJDLEVBQTNCLEVBQStCQyxDQUEvQixFQUFrQ0MsRUFBbEMsRUFBc0NDLEVBQXRDLEVBQXlDO0FBQy9DLE1BQUlDLENBQUo7QUFBQSxNQUFPQyxJQUFJLENBQVg7O0FBRUEsU0FBTSxFQUFFTCxFQUFGLElBQVFELEVBQWQsRUFBaUI7QUFDaEIsS0FBRUYsRUFBRixDQUFNLEVBQUVNLEVBQUY7QUFDTkMsT0FBSVQsRUFBRUUsRUFBRixJQUFRQyxFQUFFRSxFQUFGLENBQVIsR0FBZ0JLLENBQXBCO0FBQ0FKLEtBQUVFLEVBQUYsSUFBUUMsSUFBSVYsQ0FBWjtBQUNBVyxPQUFJRCxJQUFJVixDQUFKLElBQVMsQ0FBYjtBQUNBOztBQUVELFNBQU0sRUFBRUcsRUFBRixJQUFRRCxFQUFkLEVBQWlCO0FBQ2hCLEtBQUVPLEVBQUY7QUFDQUMsT0FBSVQsRUFBRUUsRUFBRixJQUFRUSxDQUFaO0FBQ0FKLEtBQUVFLEVBQUYsSUFBUUMsSUFBSVYsQ0FBWjtBQUNBVyxPQUFJRCxJQUFJVixDQUFKLElBQVMsQ0FBYjtBQUNBOztBQUVELE1BQUcsRUFBRVMsRUFBRixJQUFRRCxFQUFYLEVBQWM7QUFDYkQsS0FBRUUsRUFBRixJQUFRLENBQUNFLENBQVQ7QUFDQTtBQUVELEVBckJEO0FBdUJBOztBQUdEOzs7O0FBSU8sU0FBU1osTUFBVCxDQUFnQkMsQ0FBaEIsRUFBa0I7O0FBRXhCOzs7Ozs7Ozs7Ozs7Ozs7QUFlQSxRQUFPLFVBQVNDLENBQVQsRUFBWUMsRUFBWixFQUFnQkMsRUFBaEIsRUFBb0JDLENBQXBCLEVBQXVCQyxFQUF2QixFQUEyQkMsRUFBM0IsRUFBK0JDLENBQS9CLEVBQWtDQyxFQUFsQyxFQUFzQ0MsRUFBdEMsRUFBeUM7QUFDL0MsTUFBSUMsQ0FBSjtBQUFBLE1BQU9DLElBQUksQ0FBWDs7QUFFQSxTQUFNTixLQUFLQyxFQUFYLEVBQWM7QUFDYkksT0FBSVQsRUFBRUMsRUFBRixJQUFRRSxFQUFFQyxFQUFGLENBQVIsR0FBZ0JNLENBQXBCO0FBQ0FKLEtBQUVDLEVBQUYsSUFBUUUsSUFBSVYsQ0FBWjtBQUNBVyxPQUFJRCxJQUFJVixDQUFKLElBQVMsQ0FBYjtBQUNBLEtBQUVFLEVBQUYsQ0FBTSxFQUFFRyxFQUFGLENBQU0sRUFBRUcsRUFBRjtBQUNaOztBQUVELFNBQU1OLEtBQUtDLEVBQVgsRUFBYztBQUNiTyxPQUFJVCxFQUFFQyxFQUFGLElBQVFTLENBQVo7QUFDQUosS0FBRUMsRUFBRixJQUFRRSxJQUFJVixDQUFaO0FBQ0FXLE9BQUlELElBQUlWLENBQUosSUFBUyxDQUFiO0FBQ0EsS0FBRUUsRUFBRixDQUFNLEVBQUVNLEVBQUY7QUFDTjs7QUFFRCxNQUFHQSxLQUFLQyxFQUFSLEVBQVc7QUFDVkYsS0FBRUMsRUFBRixJQUFRLENBQUNHLENBQVQ7QUFDQTtBQUVELEVBckJEO0FBc0JBIiwiZmlsZSI6ImFkZC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBAcGFyYW0ge2ludH0gciBiYXNlIChyYWRpeClcbiAqL1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBiYWRkX3QgKHIpIHtcblxuXG5cdC8qKlxuXHQgKiBBZGRzIHR3byBiaWcgZW5kaWFuIGFycmF5cywgayA+PSBpID49IGpcblx0ICogd3JhcHNcblx0ICpcblx0ICogQHBhcmFtIHthcnJheX0gYSBmaXJzdCBvcGVyYW5kXG5cdCAqIEBwYXJhbSB7aW50fSBpMCBhIGxlZnRcblx0ICogQHBhcmFtIHtpbnR9IGkxIGEgcmlnaHRcblx0ICogQHBhcmFtIHthcnJheX0gYiBzZWNvbmQgb3BlcmFuZFxuXHQgKiBAcGFyYW0ge2ludH0gajAgYiBsZWZ0XG5cdCAqIEBwYXJhbSB7aW50fSBqMSBiIHJpZ2h0XG5cdCAqIEBwYXJhbSB7YXJyYXl9IGMgcmVzdWx0LCBtdXN0IGJlIDAgaW5pdGlhbGl6ZWRcblx0ICogQHBhcmFtIHtpbnR9IGswIGMgbGVmdFxuXHQgKiBAcGFyYW0ge2ludH0gazEgYyByaWdodFxuXHQgKi9cblxuXHRyZXR1cm4gZnVuY3Rpb24oYSwgaTAsIGkxLCBiLCBqMCwgajEsIGMsIGswLCBrMSl7XG5cdFx0dmFyIHQsIEMgPSAwO1xuXG5cdFx0d2hpbGUoLS1qMSA+PSBqMCl7XG5cdFx0XHQtLWkxOyAtLWsxO1xuXHRcdFx0dCA9IGFbaTFdICsgYltqMV0gKyBDO1xuXHRcdFx0Y1trMV0gPSB0ICUgcjtcblx0XHRcdEMgPSB0IC8gciA+PSAxO1xuXHRcdH1cblxuXHRcdHdoaWxlKC0taTEgPj0gaTApe1xuXHRcdFx0LS1rMTtcblx0XHRcdHQgPSBhW2kxXSArIEM7XG5cdFx0XHRjW2sxXSA9IHQgJSByO1xuXHRcdFx0QyA9IHQgLyByID49IDE7XG5cdFx0fVxuXG5cdFx0aWYoLS1rMSA+PSBrMCl7XG5cdFx0XHRjW2sxXSA9ICtDO1xuXHRcdH1cblxuXHR9O1xuXG59XG5cblxuLyoqXG4gKiBAcGFyYW0ge2ludH0gciBiYXNlIChyYWRpeClcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbGFkZF90KHIpe1xuXG5cdC8qKlxuXHQgKiBBZGRzIHR3byBsaXR0bGUgZW5kaWFuIGFycmF5cywgayA+PSBpID49IGpcblx0ICogd3JhcHNcblx0ICpcblx0ICogQHBhcmFtIHthcnJheX0gYSBmaXJzdCBvcGVyYW5kXG5cdCAqIEBwYXJhbSB7aW50fSBpMCBhIGxlZnRcblx0ICogQHBhcmFtIHtpbnR9IGkxIGEgcmlnaHRcblx0ICogQHBhcmFtIHthcnJheX0gYiBzZWNvbmQgb3BlcmFuZFxuXHQgKiBAcGFyYW0ge2ludH0gajAgYiBsZWZ0XG5cdCAqIEBwYXJhbSB7aW50fSBqMSBiIHJpZ2h0XG5cdCAqIEBwYXJhbSB7YXJyYXl9IGMgcmVzdWx0LCBtdXN0IGJlIDAgaW5pdGlhbGl6ZWRcblx0ICogQHBhcmFtIHtpbnR9IGswIGMgbGVmdFxuXHQgKiBAcGFyYW0ge2ludH0gazEgYyByaWdodFxuXHQgKi9cblxuXHRyZXR1cm4gZnVuY3Rpb24oYSwgaTAsIGkxLCBiLCBqMCwgajEsIGMsIGswLCBrMSl7XG5cdFx0dmFyIHQsIEMgPSAwO1xuXG5cdFx0d2hpbGUoajAgPCBqMSl7XG5cdFx0XHR0ID0gYVtpMF0gKyBiW2owXSArIEM7XG5cdFx0XHRjW2swXSA9IHQgJSByO1xuXHRcdFx0QyA9IHQgLyByID49IDE7XG5cdFx0XHQrK2kwOyArK2owOyArK2swO1xuXHRcdH1cblxuXHRcdHdoaWxlKGkwIDwgaTEpe1xuXHRcdFx0dCA9IGFbaTBdICsgQztcblx0XHRcdGNbazBdID0gdCAlIHI7XG5cdFx0XHRDID0gdCAvIHIgPj0gMTtcblx0XHRcdCsraTA7ICsrazA7XG5cdFx0fVxuXG5cdFx0aWYoazAgPCBrMSl7XG5cdFx0XHRjW2swXSA9ICtDO1xuXHRcdH1cblxuXHR9O1xufVxuIl19