UNPKG

@isdk/bigint

Version:

The BigInteger class wrapped bn.js and native BitInt

831 lines (465 loc) 13.5 kB
[@isdk/bigint](../README.md) / [Exports](../modules.md) / IBigInt # Interface: IBigInt The unified interface for Big Integer **`Remarks`** The operator method prefix * `i`: perform operation in-place, storing the result in the host object (on which the method was invoked). Might be used to avoid number allocation costs **`Example`** ```typescript import BigInteger from '@isdk/bigint' const a = new BigInteger(9) const b = new BigInteger(6) // perform addition on `a` and `b`, storing the result in `a` a.iadd(b) console.log(a.toString()) // prints "15" ``` ## Implemented by - [`BigIntNative`](../classes/BigIntNative.md) ## Table of contents ### Methods - [abs](IBigInt.md#abs) - [add](IBigInt.md#add) - [bitLength](IBigInt.md#bitlength) - [byteLength](IBigInt.md#bytelength) - [clone](IBigInt.md#clone) - [dec](IBigInt.md#dec) - [equal](IBigInt.md#equal) - [gcd](IBigInt.md#gcd) - [getBit](IBigInt.md#getbit) - [gt](IBigInt.md#gt) - [gte](IBigInt.md#gte) - [iadd](IBigInt.md#iadd) - [idec](IBigInt.md#idec) - [iinc](IBigInt.md#iinc) - [ileftShift](IBigInt.md#ileftshift) - [imod](IBigInt.md#imod) - [imul](IBigInt.md#imul) - [inc](IBigInt.md#inc) - [irightShift](IBigInt.md#irightshift) - [isEven](IBigInt.md#iseven) - [isNegative](IBigInt.md#isnegative) - [isOne](IBigInt.md#isone) - [isZero](IBigInt.md#iszero) - [isub](IBigInt.md#isub) - [leftShift](IBigInt.md#leftshift) - [lt](IBigInt.md#lt) - [lte](IBigInt.md#lte) - [mod](IBigInt.md#mod) - [modExp](IBigInt.md#modexp) - [modInv](IBigInt.md#modinv) - [mul](IBigInt.md#mul) - [rightShift](IBigInt.md#rightshift) - [sub](IBigInt.md#sub) - [toNumber](IBigInt.md#tonumber) - [toString](IBigInt.md#tostring) - [toUint8Array](IBigInt.md#touint8array) ## Methods ### abs**abs**(): [`IBigInt`](IBigInt.md) #### Returns [`IBigInt`](IBigInt.md) #### Defined in [src/IBigint.ts:195](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L195) ___ ### add**add**(`x`): [`IBigInt`](IBigInt.md) IBigInteger addition #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `x` | [`IBigInt`](IBigInt.md) | Value to add | #### Returns [`IBigInt`](IBigInt.md) this + x. #### Defined in [src/IBigint.ts:94](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L94) ___ ### bitLength**bitLength**(): `number` Compute bit length #### Returns `number` Bit length. #### Defined in [src/IBigint.ts:221](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L221) ___ ### byteLength**byteLength**(): `number` Compute byte length #### Returns `number` Byte length. #### Defined in [src/IBigint.ts:227](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L227) ___ ### clone**clone**(): [`IBigInt`](IBigInt.md) return a new IBigInteger object with the same value #### Returns [`IBigInt`](IBigInt.md) #### Defined in [src/IBigint.ts:25](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L25) ___ ### dec**dec**(`n?`): [`IBigInt`](IBigInt.md) IBigInteger decrement #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `n?` | `number` | (optional) Value to decrement, defaults to 1 | #### Returns [`IBigInt`](IBigInt.md) this - 1. #### Defined in [src/IBigint.ts:87](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L87) ___ ### equal**equal**(`x`): `boolean` Whether this value is equal to x #### Parameters | Name | Type | | :------ | :------ | | `x` | [`IBigInt`](IBigInt.md) | #### Returns `boolean` #### Defined in [src/IBigint.ts:161](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L161) ___ ### gcd**gcd**(`n`): [`IBigInt`](IBigInt.md) Compute greatest common divisor between this and n #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `n` | [`IBigInt`](IBigInt.md) | Operand | #### Returns [`IBigInt`](IBigInt.md) gcd #### Defined in [src/IBigint.ts:140](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L140) ___ ### getBit**getBit**(`i`): `number` Get value of i-th bit #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `i` | `number` | Bit index | #### Returns `number` Bit value. #### Defined in [src/IBigint.ts:215](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L215) ___ ### gt**gt**(`x`): `boolean` Whether this value is greater than x #### Parameters | Name | Type | | :------ | :------ | | `x` | [`IBigInt`](IBigInt.md) | #### Returns `boolean` #### Defined in [src/IBigint.ts:182](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L182) ___ ### gte**gte**(`x`): `boolean` Whether this value is greater than or equal to x #### Parameters | Name | Type | | :------ | :------ | | `x` | [`IBigInt`](IBigInt.md) | #### Returns `boolean` #### Defined in [src/IBigint.ts:189](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L189) ___ ### iadd**iadd**(`x`): [`IBigInt`](IBigInt.md) IBigInteger addition in place #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `x` | [`IBigInt`](IBigInt.md) | Value to add | #### Returns [`IBigInt`](IBigInt.md) #### Defined in [src/IBigint.ts:43](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L43) ___ ### idec**idec**(`n?`): [`IBigInt`](IBigInt.md) IBigInteger decrement number n in place #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `n?` | `number` | (optional) Value to decrement, defaults to 1 | #### Returns [`IBigInt`](IBigInt.md) #### Defined in [src/IBigint.ts:37](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L37) ___ ### iinc**iinc**(`n?`): [`IBigInt`](IBigInt.md) IBigInteger increment number n in place #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `n?` | `number` | (optional) Value to increment, defaults to 1 | #### Returns [`IBigInt`](IBigInt.md) #### Defined in [src/IBigint.ts:31](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L31) ___ ### ileftShift**ileftShift**(`x`): [`IBigInt`](IBigInt.md) Shift this to the left by x, in place #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `x` | [`IBigInt`](IBigInt.md) | Shift value | #### Returns [`IBigInt`](IBigInt.md) #### Defined in [src/IBigint.ts:67](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L67) ___ ### imod**imod**(`m`): [`IBigInt`](IBigInt.md) Compute value modulo m, in place #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `m` | [`IBigInt`](IBigInt.md) | Modulo | #### Returns [`IBigInt`](IBigInt.md) #### Defined in [src/IBigint.ts:61](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L61) ___ ### imul**imul**(`x`): [`IBigInt`](IBigInt.md) IBigInteger multiplication in place #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `x` | [`IBigInt`](IBigInt.md) | Value to multiply | #### Returns [`IBigInt`](IBigInt.md) #### Defined in [src/IBigint.ts:55](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L55) ___ ### inc**inc**(`n?`): [`IBigInt`](IBigInt.md) IBigInteger increment #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `n?` | `number` | (optional) Value to increment, defaults to 1 | #### Returns [`IBigInt`](IBigInt.md) this + 1. #### Defined in [src/IBigint.ts:80](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L80) ___ ### irightShift**irightShift**(`x`): [`IBigInt`](IBigInt.md) Shift this to the right by x, in place #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `x` | [`IBigInt`](IBigInt.md) | Shift value | #### Returns [`IBigInt`](IBigInt.md) #### Defined in [src/IBigint.ts:73](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L73) ___ ### isEven**isEven**(): `boolean` #### Returns `boolean` #### Defined in [src/IBigint.ts:194](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L194) ___ ### isNegative**isNegative**(): `boolean` #### Returns `boolean` #### Defined in [src/IBigint.ts:193](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L193) ___ ### isOne**isOne**(): `boolean` #### Returns `boolean` #### Defined in [src/IBigint.ts:192](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L192) ___ ### isZero**isZero**(): `boolean` #### Returns `boolean` #### Defined in [src/IBigint.ts:191](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L191) ___ ### isub**isub**(`x`): [`IBigInt`](IBigInt.md) IBigInteger subtraction in place #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `x` | [`IBigInt`](IBigInt.md) | Value to subtract | #### Returns [`IBigInt`](IBigInt.md) #### Defined in [src/IBigint.ts:49](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L49) ___ ### leftShift**leftShift**(`x`): [`IBigInt`](IBigInt.md) Shift this to the left by x #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `x` | [`IBigInt`](IBigInt.md) | Shift value | #### Returns [`IBigInt`](IBigInt.md) this << x. #### Defined in [src/IBigint.ts:147](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L147) ___ ### lt**lt**(`x`): `boolean` Whether this value is less than x #### Parameters | Name | Type | | :------ | :------ | | `x` | [`IBigInt`](IBigInt.md) | #### Returns `boolean` #### Defined in [src/IBigint.ts:168](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L168) ___ ### lte**lte**(`x`): `boolean` Whether this value is less than or equal to x #### Parameters | Name | Type | | :------ | :------ | | `x` | [`IBigInt`](IBigInt.md) | #### Returns `boolean` #### Defined in [src/IBigint.ts:175](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L175) ___ ### mod**mod**(`m`): [`IBigInt`](IBigInt.md) Compute value modulo m #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `m` | [`IBigInt`](IBigInt.md) | Modulo | #### Returns [`IBigInt`](IBigInt.md) this mod m. #### Defined in [src/IBigint.ts:115](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L115) ___ ### modExp**modExp**(`e`, `n`): [`IBigInt`](IBigInt.md) Compute modular exponentiation Much faster than this.exp(e).mod(n) #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `e` | [`IBigInt`](IBigInt.md) | Exponent | | `n` | [`IBigInt`](IBigInt.md) | Modulo | #### Returns [`IBigInt`](IBigInt.md) this ** e mod n. #### Defined in [src/IBigint.ts:124](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L124) ___ ### modInv**modInv**(`n`): [`IBigInt`](IBigInt.md) Compute the inverse of this value modulo n Note: this and and n must be relatively prime **`Throws`** if the inverse does not exist #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `n` | [`IBigInt`](IBigInt.md) | Modulo | #### Returns [`IBigInt`](IBigInt.md) x such that this*x = 1 mod n #### Defined in [src/IBigint.ts:133](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L133) ___ ### mul**mul**(`x`): [`IBigInt`](IBigInt.md) IBigInteger multiplication #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `x` | [`IBigInt`](IBigInt.md) | Value to multiply | #### Returns [`IBigInt`](IBigInt.md) this * x. #### Defined in [src/IBigint.ts:108](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L108) ___ ### rightShift**rightShift**(`x`): [`IBigInt`](IBigInt.md) Shift this to the right by x #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `x` | [`IBigInt`](IBigInt.md) | Shift value | #### Returns [`IBigInt`](IBigInt.md) this >> x. #### Defined in [src/IBigint.ts:154](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L154) ___ ### sub**sub**(`x`): [`IBigInt`](IBigInt.md) IBigInteger subtraction #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `x` | [`IBigInt`](IBigInt.md) | Value to subtract | #### Returns [`IBigInt`](IBigInt.md) this - x. #### Defined in [src/IBigint.ts:101](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L101) ___ ### toNumber**toNumber**(): `number` Get this value as an exact Number (max 53 bits) Fails if this value is too large #### Returns `number` the number value #### Defined in [src/IBigint.ts:208](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L208) ___ ### toString**toString**(): `string` Get this value as a string #### Returns `string` this value. #### Defined in [src/IBigint.ts:201](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L201) ___ ### toUint8Array**toUint8Array**(`endian?`, `length?`): `Uint8Array` Get Uint8Array representation of this number #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `endian?` | `string` | Endianess of output array (defaults to 'be') | | `length?` | `number` | Of output array | #### Returns `Uint8Array` #### Defined in [src/IBigint.ts:235](https://github.com/isdk/bigint.js/blob/c098291/src/IBigint.ts#L235)