@toruslabs/ffjavascript
Version:
Finite Field Library in Javascript
33 lines (32 loc) • 892 B
TypeScript
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[];
}