UNPKG

@hastom/fixed-point

Version:

Light lib for fixed point math made around native bigint

71 lines (70 loc) 2.39 kB
export declare enum Rounding { ROUND_UP = 0, ROUND_DOWN = 1, ROUND_CEIL = 2, ROUND_FLOOR = 3, ROUND_HALF_UP = 4, ROUND_HALF_DOWN = 5, ROUND_HALF_EVEN = 6, ROUND_HALF_CEIL = 7, ROUND_HALF_FLOOR = 8 } export declare enum Decimals { left = "left", right = "right", min = "min", max = "max", add = "add", sub = "sub" } export type PrecisionResolution = Decimals | number | bigint; export declare class FixedPoint { static min(arg0: FixedPoint, ...args: FixedPoint[]): FixedPoint; static max(arg0: FixedPoint, ...args: FixedPoint[]): FixedPoint; base: bigint; precision: bigint; constructor(base: bigint, precision: bigint); add(arg: FixedPoint, resultPrecision?: PrecisionResolution): FixedPoint; sub(arg: FixedPoint, resultPrecision?: PrecisionResolution): FixedPoint; mul(arg: FixedPoint, resultPrecision?: PrecisionResolution, rounding?: Rounding): FixedPoint; private mulGeneral; div(arg: FixedPoint, resultPrecision?: PrecisionResolution, rounding?: Rounding): FixedPoint; private divGeneral; cmp(arg: FixedPoint, comparator: (a: bigint, b: bigint) => boolean): boolean; eq(arg: FixedPoint): boolean; gt(arg: FixedPoint): boolean; lt(arg: FixedPoint): boolean; gte(arg: FixedPoint): boolean; lte(arg: FixedPoint): boolean; neg(): FixedPoint; abs(): FixedPoint; sqrt(): FixedPoint; isZero(): boolean; isPositive(): boolean; isNegative(): boolean; floor(): FixedPoint; ceil(): FixedPoint; round(mode?: Rounding): FixedPoint; setPrecision(newPrecision: bigint, rounding?: Rounding): void; toPrecision(resultPrecision: number | bigint, rounding?: Rounding): FixedPoint; toString(): string; toJSON(): string; toDecimalString(trimTrailingZeros?: boolean): string; toDecimal(): number; valueOf(): number; } export interface FixedPoint { plus: FixedPoint['add']; minus: FixedPoint['sub']; times: FixedPoint['mul']; multipliedBy: FixedPoint['mul']; dividedBy: FixedPoint['div']; isEqualTo: FixedPoint['eq']; isGreaterThan: FixedPoint['gt']; isLessThan: FixedPoint['lt']; isGreaterThanOrEqualTo: FixedPoint['gte']; isLessThanOrEqualTo: FixedPoint['lte']; negated: FixedPoint['neg']; absoluteValue: FixedPoint['abs']; squareRoot: FixedPoint['sqrt']; }