| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | 
							- "use strict";
 
- Object.defineProperty(exports, "__esModule", { value: true });
 
- exports.add5L = exports.add5H = exports.add4H = exports.add4L = exports.add3H = exports.add3L = exports.add = exports.rotlBL = exports.rotlBH = exports.rotlSL = exports.rotlSH = exports.rotr32L = exports.rotr32H = exports.rotrBL = exports.rotrBH = exports.rotrSL = exports.rotrSH = exports.shrSL = exports.shrSH = exports.toBig = exports.split = exports.fromBig = void 0;
 
- const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);
 
- const _32n = /* @__PURE__ */ BigInt(32);
 
- // We are not using BigUint64Array, because they are extremely slow as per 2022
 
- function fromBig(n, le = false) {
 
-     if (le)
 
-         return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };
 
-     return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };
 
- }
 
- exports.fromBig = fromBig;
 
- function split(lst, le = false) {
 
-     let Ah = new Uint32Array(lst.length);
 
-     let Al = new Uint32Array(lst.length);
 
-     for (let i = 0; i < lst.length; i++) {
 
-         const { h, l } = fromBig(lst[i], le);
 
-         [Ah[i], Al[i]] = [h, l];
 
-     }
 
-     return [Ah, Al];
 
- }
 
- exports.split = split;
 
- const toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);
 
- exports.toBig = toBig;
 
- // for Shift in [0, 32)
 
- const shrSH = (h, _l, s) => h >>> s;
 
- exports.shrSH = shrSH;
 
- const shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);
 
- exports.shrSL = shrSL;
 
- // Right rotate for Shift in [1, 32)
 
- const rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));
 
- exports.rotrSH = rotrSH;
 
- const rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);
 
- exports.rotrSL = rotrSL;
 
- // Right rotate for Shift in (32, 64), NOTE: 32 is special case.
 
- const rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));
 
- exports.rotrBH = rotrBH;
 
- const rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));
 
- exports.rotrBL = rotrBL;
 
- // Right rotate for shift===32 (just swaps l&h)
 
- const rotr32H = (_h, l) => l;
 
- exports.rotr32H = rotr32H;
 
- const rotr32L = (h, _l) => h;
 
- exports.rotr32L = rotr32L;
 
- // Left rotate for Shift in [1, 32)
 
- const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));
 
- exports.rotlSH = rotlSH;
 
- const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));
 
- exports.rotlSL = rotlSL;
 
- // Left rotate for Shift in (32, 64), NOTE: 32 is special case.
 
- const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));
 
- exports.rotlBH = rotlBH;
 
- const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));
 
- exports.rotlBL = rotlBL;
 
- // JS uses 32-bit signed integers for bitwise operations which means we cannot
 
- // simple take carry out of low bit sum by shift, we need to use division.
 
- function add(Ah, Al, Bh, Bl) {
 
-     const l = (Al >>> 0) + (Bl >>> 0);
 
-     return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };
 
- }
 
- exports.add = add;
 
- // Addition with more than 2 elements
 
- const add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);
 
- exports.add3L = add3L;
 
- const add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;
 
- exports.add3H = add3H;
 
- const add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);
 
- exports.add4L = add4L;
 
- const add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;
 
- exports.add4H = add4H;
 
- const add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);
 
- exports.add5L = add5L;
 
- const add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;
 
- exports.add5H = add5H;
 
- // prettier-ignore
 
- const u64 = {
 
-     fromBig, split, toBig,
 
-     shrSH, shrSL,
 
-     rotrSH, rotrSL, rotrBH, rotrBL,
 
-     rotr32H, rotr32L,
 
-     rotlSH, rotlSL, rotlBH, rotlBL,
 
-     add, add3L, add3H, add4L, add4H, add5H, add5L,
 
- };
 
- exports.default = u64;
 
- //# sourceMappingURL=_u64.js.map
 
 
  |