UNPKG

@swaptoshi/dex-module

Version:

Klayr decentralized exchange (dex) on-chain module

25 lines 953 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mulDiv = mulDiv; exports.mulDivRoundingUp = mulDivRoundingUp; const int_1 = require("../int"); function mulDiv(a, b, denominator) { if (denominator === '0') throw new Error('Denominator must be greater than zero'); if (int_1.Uint.from(a).mul(b).div(denominator).gt(int_1.Uint256.MAX)) throw new Error('overflow'); if (a === '0' || b === '0') return '0'; return int_1.Uint.from(a).mul(b).div(denominator).toString(); } function mulDivRoundingUp(a, b, denominator) { let result = int_1.Uint256.from(mulDiv(a, b, denominator)); if (int_1.Uint.from(a).mul(b).mod(denominator).gt(0)) { if (result.gte(int_1.Uint256.MAX)) { throw new Error('Result exceeds the maximum value for uint256'); } result = result.add(1); } return result.toString(); } //# sourceMappingURL=full_math.js.map