{"version":3,"sources":["util/int.ts"],"names":[],"mappings":"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","file":"int.js","sourcesContent":["// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\n/** @ignore */\nconst carryBit16 = 1 << 16;\n\n/** @ignore */\nfunction intAsHex(value: number): string {\n if (value < 0) {\n value = 0xFFFFFFFF + value + 1;\n }\n return `0x${value.toString(16)}`;\n}\n\n/** @ignore */\nconst kInt32DecimalDigits = 8;\n/** @ignore */\nconst kPowersOfTen = [1,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000];\n\n/** @ignore */\nexport class BaseInt64 {\n constructor (protected buffer: Uint32Array) {}\n\n public high(): number { return this.buffer[1]; }\n public low (): number { return this.buffer[0]; }\n\n protected _times(other: BaseInt64) {\n // Break the left and right numbers into 16 bit chunks\n // so that we can multiply them without overflow.\n const L = new Uint32Array([\n this.buffer[1] >>> 16,\n this.buffer[1] & 0xFFFF,\n this.buffer[0] >>> 16,\n this.buffer[0] & 0xFFFF\n ]);\n\n const R = new Uint32Array([\n other.buffer[1] >>> 16,\n other.buffer[1] & 0xFFFF,\n other.buffer[0] >>> 16,\n other.buffer[0] & 0xFFFF\n ]);\n\n let product = L[3] * R[3];\n this.buffer[0] = product & 0xFFFF;\n\n let sum = product >>> 16;\n\n product = L[2] * R[3];\n sum += product;\n\n product = (L[3] * R[2]) >>> 0;\n sum += product;\n\n this.buffer[0] += sum << 16;\n\n this.buffer[1] = (sum >>> 0 < product ? carryBit16 : 0);\n\n this.buffer[1] += sum >>> 16;\n this.buffer[1] += L[1] * R[3] + L[2] * R[2] + L[3] * R[1];\n this.buffer[1] += (L[0] * R[3] + L[1] * R[2] + L[2] * R[1] + L[3] * R[0]) << 16;\n\n return this;\n }\n\n protected _plus(other: BaseInt64) {\n const sum = (this.buffer[0] + other.buffer[0]) >>> 0;\n this.buffer[1] += other.buffer[1];\n if (sum < (this.buffer[0] >>> 0)) {\n ++this.buffer[1];\n }\n this.buffer[0] = sum;\n }\n\n public lessThan(other: BaseInt64): boolean {\n return this.buffer[1] < other.buffer[1] ||\n (this.buffer[1] === other.buffer[1] && this.buffer[0] < other.buffer[0]);\n }\n\n public equals(other: BaseInt64): boolean {\n return this.buffer[1] === other.buffer[1] && this.buffer[0] == other.buffer[0];\n }\n\n public greaterThan(other: BaseInt64): boolean {\n return other.lessThan(this);\n }\n\n public hex(): string {\n return `${intAsHex(this.buffer[1])} ${intAsHex(this.buffer[0])}`;\n }\n}\n\n/** @ignore */\nexport class Uint64 extends BaseInt64 {\n public times(other: Uint64): Uint64 {\n this._times(other);\n return this;\n }\n\n public plus(other: Uint64): Uint64 {\n this._plus(other);\n return this;\n }\n\n /** @nocollapse */\n public static from(val: any, out_buffer = new Uint32Array(2)): Uint64 {\n return Uint64.fromString(\n typeof(val) === 'string' ? val : val.toString(),\n out_buffer\n );\n }\n\n /** @nocollapse */\n public static fromNumber(num: number, out_buffer = new Uint32Array(2)): Uint64 {\n // Always parse numbers as strings - pulling out high and low bits\n // directly seems to lose precision sometimes\n // For example:\n // > -4613034156400212000 >>> 0\n // 721782784\n // The correct lower 32-bits are 721782752\n return Uint64.fromString(num.toString(), out_buffer);\n }\n\n /** @nocollapse */\n public static fromString(str: string, out_buffer = new Uint32Array(2)): Uint64 {\n const length = str.length;\n\n let out = new Uint64(out_buffer);\n for (let posn = 0; posn < length;) {\n const group = kInt32DecimalDigits < length - posn ?\n kInt32DecimalDigits : length - posn;\n const chunk = new Uint64(new Uint32Array([parseInt(str.substr(posn, group), 10), 0]));\n const multiple = new Uint64(new Uint32Array([kPowersOfTen[group], 0]));\n\n out.times(multiple);\n out.plus(chunk);\n\n posn += group;\n }\n\n return out;\n }\n\n /** @nocollapse */\n public static convertArray(values: (string|number)[]): Uint32Array {\n const data = new Uint32Array(values.length * 2);\n for (let i = -1, n = values.length; ++i < n;) {\n Uint64.from(values[i], new Uint32Array(data.buffer, data.byteOffset + 2 * i * 4, 2));\n }\n return data;\n }\n\n /** @nocollapse */\n public static multiply(left: Uint64, right: Uint64): Uint64 {\n let rtrn = new Uint64(new Uint32Array(left.buffer));\n return rtrn.times(right);\n }\n\n /** @nocollapse */\n public static add(left: Uint64, right: Uint64): Uint64 {\n let rtrn = new Uint64(new Uint32Array(left.buffer));\n return rtrn.plus(right);\n }\n}\n\n/** @ignore */\nexport class Int64 extends BaseInt64 {\n public negate(): Int64 {\n this.buffer[0] = ~this.buffer[0] + 1;\n this.buffer[1] = ~this.buffer[1];\n\n if (this.buffer[0] == 0) { ++this.buffer[1]; }\n return this;\n }\n\n public times(other: Int64): Int64 {\n this._times(other);\n return this;\n }\n\n public plus(other: Int64): Int64 {\n this._plus(other);\n return this;\n }\n\n public lessThan(other: Int64): boolean {\n // force high bytes to be signed\n const this_high = this.buffer[1] << 0;\n const other_high = other.buffer[1] << 0;\n return this_high < other_high ||\n (this_high === other_high && this.buffer[0] < other.buffer[0]);\n }\n\n /** @nocollapse */\n public static from(val: any, out_buffer = new Uint32Array(2)): Int64 {\n return Int64.fromString(\n typeof(val) === 'string' ? val : val.toString(),\n out_buffer\n );\n }\n\n /** @nocollapse */\n public static fromNumber(num: number, out_buffer = new Uint32Array(2)): Int64 {\n // Always parse numbers as strings - pulling out high and low bits\n // directly seems to lose precision sometimes\n // For example:\n // > -4613034156400212000 >>> 0\n // 721782784\n // The correct lower 32-bits are 721782752\n return Int64.fromString(num.toString(), out_buffer);\n }\n\n /** @nocollapse */\n public static fromString(str: string, out_buffer = new Uint32Array(2)): Int64 {\n // TODO: Assert that out_buffer is 0 and length = 2\n const negate = str.startsWith('-');\n const length = str.length;\n\n let out = new Int64(out_buffer);\n for (let posn = negate ? 1 : 0; posn < length;) {\n const group = kInt32DecimalDigits < length - posn ?\n kInt32DecimalDigits : length - posn;\n const chunk = new Int64(new Uint32Array([parseInt(str.substr(posn, group), 10), 0]));\n const multiple = new Int64(new Uint32Array([kPowersOfTen[group], 0]));\n\n out.times(multiple);\n out.plus(chunk);\n\n posn += group;\n }\n return negate ? out.negate() : out;\n }\n\n /** @nocollapse */\n public static convertArray(values: (string|number)[]): Uint32Array {\n const data = new Uint32Array(values.length * 2);\n for (let i = -1, n = values.length; ++i < n;) {\n Int64.from(values[i], new Uint32Array(data.buffer, data.byteOffset + 2 * i * 4, 2));\n }\n return data;\n }\n\n /** @nocollapse */\n public static multiply(left: Int64, right: Int64): Int64 {\n let rtrn = new Int64(new Uint32Array(left.buffer));\n return rtrn.times(right);\n }\n\n /** @nocollapse */\n public static add(left: Int64, right: Int64): Int64 {\n let rtrn = new Int64(new Uint32Array(left.buffer));\n return rtrn.plus(right);\n }\n}\n\n/** @ignore */\nexport class Int128 {\n constructor (private buffer: Uint32Array) {\n // buffer[3] MSB (high)\n // buffer[2]\n // buffer[1]\n // buffer[0] LSB (low)\n }\n\n public high(): Int64 {\n return new Int64(new Uint32Array(this.buffer.buffer, this.buffer.byteOffset + 8, 2));\n }\n\n public low(): Int64 {\n return new Int64(new Uint32Array(this.buffer.buffer, this.buffer.byteOffset, 2));\n }\n\n public negate(): Int128 {\n this.buffer[0] = ~this.buffer[0] + 1;\n this.buffer[1] = ~this.buffer[1];\n this.buffer[2] = ~this.buffer[2];\n this.buffer[3] = ~this.buffer[3];\n\n if (this.buffer[0] == 0) { ++this.buffer[1]; }\n if (this.buffer[1] == 0) { ++this.buffer[2]; }\n if (this.buffer[2] == 0) { ++this.buffer[3]; }\n return this;\n }\n\n public times(other: Int128): Int128 {\n // Break the left and right numbers into 32 bit chunks\n // so that we can multiply them without overflow.\n const L0 = new Uint64(new Uint32Array([this.buffer[3], 0]));\n const L1 = new Uint64(new Uint32Array([this.buffer[2], 0]));\n const L2 = new Uint64(new Uint32Array([this.buffer[1], 0]));\n const L3 = new Uint64(new Uint32Array([this.buffer[0], 0]));\n\n const R0 = new Uint64(new Uint32Array([other.buffer[3], 0]));\n const R1 = new Uint64(new Uint32Array([other.buffer[2], 0]));\n const R2 = new Uint64(new Uint32Array([other.buffer[1], 0]));\n const R3 = new Uint64(new Uint32Array([other.buffer[0], 0]));\n\n let product = Uint64.multiply(L3, R3);\n this.buffer[0] = product.low();\n\n let sum = new Uint64(new Uint32Array([product.high(), 0]));\n\n product = Uint64.multiply(L2, R3);\n sum.plus(product);\n\n product = Uint64.multiply(L3, R2);\n sum.plus(product);\n\n this.buffer[1] = sum.low();\n\n this.buffer[3] = (sum.lessThan(product) ? 1 : 0);\n\n this.buffer[2] = sum.high();\n let high = new Uint64(new Uint32Array(this.buffer.buffer, this.buffer.byteOffset + 8, 2));\n\n high.plus(Uint64.multiply(L1, R3))\n .plus(Uint64.multiply(L2, R2))\n .plus(Uint64.multiply(L3, R1));\n this.buffer[3] += Uint64.multiply(L0, R3)\n .plus(Uint64.multiply(L1, R2))\n .plus(Uint64.multiply(L2, R1))\n .plus(Uint64.multiply(L3, R0)).low();\n\n return this;\n }\n\n public plus(other: Int128): Int128 {\n let sums = new Uint32Array(4);\n sums[3] = (this.buffer[3] + other.buffer[3]) >>> 0;\n sums[2] = (this.buffer[2] + other.buffer[2]) >>> 0;\n sums[1] = (this.buffer[1] + other.buffer[1]) >>> 0;\n sums[0] = (this.buffer[0] + other.buffer[0]) >>> 0;\n\n if (sums[0] < (this.buffer[0] >>> 0)) {\n ++sums[1];\n }\n if (sums[1] < (this.buffer[1] >>> 0)) {\n ++sums[2];\n }\n if (sums[2] < (this.buffer[2] >>> 0)) {\n ++sums[3];\n }\n\n this.buffer[3] = sums[3];\n this.buffer[2] = sums[2];\n this.buffer[1] = sums[1];\n this.buffer[0] = sums[0];\n\n return this;\n }\n\n public hex(): string {\n return `${intAsHex(this.buffer[3])} ${intAsHex(this.buffer[2])} ${intAsHex(this.buffer[1])} ${intAsHex(this.buffer[0])}`;\n }\n\n /** @nocollapse */\n public static multiply(left: Int128, right: Int128): Int128 {\n let rtrn = new Int128(new Uint32Array(left.buffer));\n return rtrn.times(right);\n }\n\n /** @nocollapse */\n public static add(left: Int128, right: Int128): Int128 {\n let rtrn = new Int128(new Uint32Array(left.buffer));\n return rtrn.plus(right);\n }\n\n /** @nocollapse */\n public static from(val: any, out_buffer = new Uint32Array(4)): Int128 {\n return Int128.fromString(\n typeof(val) === 'string' ? val : val.toString(),\n out_buffer\n );\n }\n\n /** @nocollapse */\n public static fromNumber(num: number, out_buffer = new Uint32Array(4)): Int128 {\n // Always parse numbers as strings - pulling out high and low bits\n // directly seems to lose precision sometimes\n // For example:\n // > -4613034156400212000 >>> 0\n // 721782784\n // The correct lower 32-bits are 721782752\n return Int128.fromString(num.toString(), out_buffer);\n }\n\n /** @nocollapse */\n public static fromString(str: string, out_buffer = new Uint32Array(4)): Int128 {\n // TODO: Assert that out_buffer is 0 and length = 4\n const negate = str.startsWith('-');\n const length = str.length;\n\n let out = new Int128(out_buffer);\n for (let posn = negate ? 1 : 0; posn < length;) {\n const group = kInt32DecimalDigits < length - posn ?\n kInt32DecimalDigits : length - posn;\n const chunk = new Int128(new Uint32Array([parseInt(str.substr(posn, group), 10), 0, 0, 0]));\n const multiple = new Int128(new Uint32Array([kPowersOfTen[group], 0, 0, 0]));\n\n out.times(multiple);\n out.plus(chunk);\n\n posn += group;\n }\n\n return negate ? out.negate() : out;\n }\n\n /** @nocollapse */\n public static convertArray(values: (string|number)[]): Uint32Array {\n // TODO: Distinguish between string and number at compile-time\n const data = new Uint32Array(values.length * 4);\n for (let i = -1, n = values.length; ++i < n;) {\n Int128.from(values[i], new Uint32Array(data.buffer, data.byteOffset + 4 * 4 * i, 4));\n }\n return data;\n }\n}\n"]}