bigfrac
v2.3.0
Published
rational number library based on BigInt
Readme
BigFrac
BigFrac is a typescript rational number library based on BigInt
Install
npm i bigfracAlternatively you can import it from a CDN. Example:
import $ from 'https://esm.sh/bigfrac'Usage
import { BigFrac } from `bigfrac`
const frac1 = new BigFrac('1/3')
const frac2 = new BigFrac('2/4') // 1/2
const frac3 = frac1.add(frac2) // 5/6 Parsing
BigFrac supports the parsing of different forms of rational numbers representation.
// integer
new BigFrac('1') // = 1/1
// signed
new BigFrac('-1') // = -1/1
// decimal
new BigFrac('1.4') // = 7/5
// repeating decimal
new BigFrac('0.(3)') // = 0.333… = 1/3
new BigFrac('1.9(24)') // = 1.9242424… = 127/66
// exponential
new BigFrac('1.7e3') // = 1.7 × 10³ = 1700/1
// negative exponential
new BigFrac('1.7e-3') // = 0.0017 = 17/10000
// mixed
new BigFrac('-273.6(24)e-3') // = -11287/41250
// fraction
new BigFrac('6/4') // = 3/2Reference
declare namespace BigFrac {
// types
type Input = bigint | number | string | BigFrac
}
declare class BigFrac {
// properties
readonly n: bigint
readonly d: bigint
// constructors
constructor(n?: BigFrac.Input = 0n, d?: BigFrac.Input = 1n)
static from(f?: BigFrac.Input = 0n): BigFrac
static fromContinuedFraction(cf: BigFrac.Input[]): BigFrac
// one operand methods
clone(): BigFrac
inv(): BigFrac
abs(): BigFrac
sign(): 0n | 1n | -1n
floor(): bigint
// two operands methods
mul(f?: BigFrac.Input = 1n): BigFrac
div(f?: BigFrac.Input = 1n): BigFrac
add(f?: BigFrac.Input = 0n): BigFrac
sub(f?: BigFrac.Input = 0n): BigFrac
pow(p?: bigint = 1n): BigFrac
mod(f: BigFrac.Input): BigFrac
mix(f: BigFrac.Input, ratio?: BigFrac.Input = new BigFrac(1n, 2n)): BigFrac
equal(f: BigFrac.Input): boolean
// conversion methods
valueOf(): number
toString(): string
toRepeating(base?: number = 10): string
toDecimal(): string
toArray(): [numerator: bigint, denominator: bigint]
toContinuedFraction(): bigint[]
}