@swaptoshi/dex-module
Version:
Klayr decentralized exchange (dex) on-chain module
25 lines • 953 B
JavaScript
;
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