UNPKG

@toruslabs/ffjavascript

Version:

Finite Field Library in Javascript

33 lines (32 loc) 892 B
export interface FFTField { sqrt_t?: bigint; t: bigint; sqrt_s?: number; s: number; one: bigint; half: bigint; eq(a: bigint, b: bigint): boolean; pow(b: bigint, e: bigint | number): bigint; add(a: bigint, b: bigint): bigint; inv(a: bigint): bigint; square(a: bigint): bigint; mul(a: bigint, b: bigint): bigint; mulScalar(base: bigint, s: bigint | number | string): bigint; } export interface FFTGroup { add(a: bigint, b: bigint): bigint; sub(a: bigint, b: bigint): bigint; } export type OpMulGF = (a: bigint, b: bigint) => bigint; export default class FFT { F: FFTField; G: FFTGroup; opMulGF: OpMulGF; w: bigint[]; wi: bigint[]; roots: bigint[][]; constructor(G: FFTGroup, F: FFTField, opMulGF: OpMulGF); _setRoots(n: number): void; fft(p: bigint[]): bigint[]; ifft(p: bigint[]): bigint[]; }