@vekexasia/bigint-math
v1.0.1
Published
Math utilities for BigInt: abs, sign, max, min, bitLength, divide, rand
Maintainers
Readme
@vekexasia/bigint-math: BigInt Math utils
This project is part of the bigint-swissknife project. It aims to provide some missing utilities in the Math native class.
For example there is no Math.max for BigInt, this library provides a solution for that and other missing utilities.
Why?
Tired of reinventing the wheel every time I decided to create a library that provides the missing math utilities for BigInt.
The library allows to perform operations not just on bigint but also on everything that is BigIntable
export type BigIntable = bigint | number | stringDocumentation
You can find typedoc documentation here.
Installation
Add the library to your project:
npm install @vekexasia/bigint-mathor
yarn add @vekexasia/bigint-mathUsage
You can find all the available methods in the typedoc documentation. But here a list of some of the most missing ones:
import {BigIntMath} from '@vekexasia/bigint-math';
BigIntMath.max(1n, 2n, 3n, 4n, 5n); // 5n
BigIntMath.min(1n, 2n, 3n, 4n, 5n); // 1n
BigIntMath.abs(-1n); // 1n
BigIntMath.ceilDivide(5n, 4n); // 2n (5/4 = 1.25 => 2)
BigIntMath.divide(5n, 4n); // 1n (5/4 = 1.25)
BigIntMath.roundDivide(5n, 4n); // 1n (5/4 = 1.25 => 1)
BigIntMath.rand(2000000000000000000n); // random bigint between 0n and 2000000000000000000n
TypeScript
The library is entirely written in TypeScript and comes with its own type definitions.
a Note about rand
The rand method uses the crypto module to generate a random number. On browser it uses window.crypto and on node it uses crypto from the crypto module.
License
This project is licensed under the MIT License - see the LICENSE file for details.
