Link Search Menu Expand Document

Natural overview

Added in v1.0.0


Table of contents


Constructor

fromNumber

Attempts to construct a [[Natural]] from a number, computing none if not a safe non-negative integer, otherwise some(n).

import { Natural } from 'fp-ts-numerics'
import { Branded } from './Internal/Branded'

Natural.fromNumber(100)
// > option.some(Natural.of(1,0,0))
Natural.fromNumber(Number.MAX_VALUE)
// > option.nothing

Signature

export declare function fromNumber(n: number): Option<Natural>

Added in v1.0.0

unsafeFromNumber

Unsafely attempts to construct an [[Natural]] from a number, throwing an error if not a safe, non-negative integer.

import { Natural } from 'fp-ts-numerics'

Natural.unsafeFromNumber(100)
// > Natural.of(1,0,0)
Natural.unsafeFromNumber(Number.MAX_VALUE)
// > uncaught error

Signature

export declare function unsafeFromNumber(n: number): Natural

Added in v1.0.0

Instances

HasAdd

Signature

export declare const HasAdd: HasAdd<Int>

Added in v1.0.0

HasMul

Signature

export declare const HasMul: HasMul<Int>

Added in v1.0.0

HasOne

Signature

export declare const HasOne: HasOne<Int>

Added in v1.0.0

HasZero

Signature

export declare const HasZero: HasZero<Int>

Added in v1.0.0

Typeclass Instance

Enum

Signature

export declare const Enum: Enum<Natural>

Added in v1.0.0

Eq

Signature

export declare const Eq: Eq<Natural>

Added in v1.0.0

HasPow

Signature

export declare const HasPow: HasPow<Natural>

Added in v1.0.0

HasToInt

Signature

export declare const HasToInt: HasToInt<Natural>

Added in v1.0.0

HasToRational

Signature

export declare const HasToRational: HasToRational<Natural>

Added in v1.0.0

Integral

Signature

export declare const Integral: Integral<Natural>

Added in v1.0.0

Ord

Signature

export declare const Ord: ord.Ord<Natural>

Added in v1.0.0

Semiring

Signature

export declare const Semiring: Semiring<Natural>

Added in v1.0.0

utils

Digits (type alias)

Signature

export type Digits = [LeadingDigit | Digit] | [LeadingDigit, ...Array<Digit>]

Added in v1.0.0

Natural

Signature

export declare const Natural: Eq<Natural> &
  Enum<Natural> &
  HasAdd<Natural> &
  HasMul<Natural> &
  HasOne<Natural> &
  HasPow<Natural> &
  HasToInt<Natural> &
  HasToRational<Natural> &
  HasZero<Natural> &
  Integral<Natural> &
  Ord<Natural> &
  Show<Natural> &
  Semiring<Natural> & {
    degree: typeof degree
    div: typeof div
    Enum: Enum<Natural>
    Eq: Eq<Natural>
    fromInt: typeof fromInt
    fromNumber: typeof fromNumber
    HasAdd: HasAdd<Int>
    HasMul: HasMul<Int>
    HasOne: HasOne<Int>
    HasPow: HasPow<Natural>
    HasToInt: HasToInt<Natural>
    HasToRational: HasToRational<Natural>
    HasZero: HasZero<Int>
    Integral: Integral<Natural>
    isTypeOf: typeof isTypeOf
    minus: typeof minus
    mod: typeof mod
    of: typeof of
    Ord: ord.Ord<Natural>
    Semiring: Semiring<Natural>
    Show: Show<Natural>
    toBigInt: typeof toBigInt
    unsafeFromNumber: typeof unsafeFromNumber
    toNumber: typeof toNumber
    unsafeMinus: typeof unsafeMinus
  }

Added in v1.0.0

Natural (interface)

Arbitrary-precision non-negative integers

Signature

export interface Natural extends NonNegative<Int> {}

Added in v1.0.0

Show

Signature

export declare const Show: Show<Natural>

Added in v1.0.0

add

Signature

export declare function add(a: Natural, b: Natural): Natural

Added in v: 1.0.0

compare

Signature

export declare function compare(a: Natural, b: Natural): Ordering

Added in v1.0.0

degree

Signature

export declare function degree(i: Natural): Natural

Added in v1.0.0

div

Signature

export declare function div(n: Natural, d: NonZero<Natural>): Natural

Added in v1.0.0

equals

Signature

export declare function equals(a: Natural, b: Natural): boolean

Added in v1.0.0

fromInt

Signature

export declare function fromInt(n: Int): Option<Natural>

Added in v1.0.0

isTypeOf

Signature

export declare function isTypeOf(n: unknown): n is Natural

Added in v1.0.0

minus

Subtract the second Natural from the first. Evaluates to zero when the result would be less than zero, since Natural cannot obey Ring laws or wrap on overflow. See unsafeMinus if you desire a runtime error to be thrown on underflow.

Signature

export declare function minus(a: Natural, b: Natural): Natural

Added in v1.0.0

mod

Signature

export declare function mod(n: Natural, d: Natural): Natural

Added in v1.0.0

mul

Signature

export declare function mul(a: Natural, b: Natural): Natural

Added in v: 1.0.0

next

Signature

export declare function next(prev: Natural): Option<Natural>

Added in v: 1.0.0

numberIsNatural

Signature

export declare function numberIsNatural(n: number): boolean

Added in v1.0.0

of

Signature

export declare function of(zero: 0): Natural
export declare function of(...digits: Digits): NonZero<Natural>

Added in v1.0.0

one

Signature

export declare const one: NonZero<Natural>

Added in v: 1.0.0

pow

Signature

export declare function pow(n: Natural, exponent: Natural): Natural

Added in v: 1.0.0

prev

Signature

export declare function prev(next: Natural): Option<Natural>

Added in v: 1.0.0

quot

Signature

export declare function quot(a: Natural, b: Natural): Natural

Added in v: 1.0.0

rem

Signature

export declare function rem(a: Natural, b: Natural): Natural

Added in v: 1.0.0

stringify

Signature

export declare function stringify(n: Natural): string

Added in v: 1.0.0

toInt

Signature

export declare function toInt(n: Natural): NonNegative<Int>

Added in v: 1.0.0

toNumber

Signature

export declare function toNumber(i: Natural): Option<number>

Added in v1.0.0

toRational

Signature

export declare function toRational(a: Natural): Rational

Added in v1.0.0

unsafeMinus

Subtract the second Natural from the first. Throws an error if underflow occurs.

Signature

export declare function unsafeMinus(a: Natural, b: Natural): Natural

Added in v1.0.0

zero

Signature

export declare const zero: Natural

Added in v: 1.0.0