@dfinity/candid
Version:
JavaScript and TypeScript library to work with candid interfaces
26 lines • 714 B
JavaScript
/**
* Equivalent to `Math.log2(n)` with support for `BigInt` values
* @param n bigint or integer
* @returns integer
*/
export function ilog2(n) {
const nBig = BigInt(n);
if (n <= 0) {
throw new RangeError('Input must be positive');
}
return nBig.toString(2).length - 1;
}
/**
* Equivalent to `2 ** n` with support for `BigInt` values
* (necessary for browser preprocessors which replace the `**` operator with `Math.pow`)
* @param n bigint or integer
* @returns bigint
*/
export function iexp2(n) {
const nBig = BigInt(n);
if (n < 0) {
throw new RangeError('Input must be non-negative');
}
return BigInt(1) << nBig;
}
//# sourceMappingURL=bigint-math.js.map