aureooms-js-integer
Version:
integer code bricks for JavaScript
98 lines (83 loc) • 6.07 kB
JavaScript
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
;