@toruslabs/ffjavascript
Version:
Finite Field Library in Javascript
86 lines (85 loc) • 2.7 kB
TypeScript
import FFT from "./fft";
export default class ZqField {
type: string;
one: bigint;
zero: bigint;
p: bigint;
m: number;
negone: bigint;
two: bigint;
half: bigint;
bitLength: number;
mask: bigint;
n64: number;
n32: number;
n8: number;
R: bigint;
Ri: bigint;
nqr: bigint;
s: number;
t: bigint;
nqr_to_t: bigint;
FFT: FFT;
w: bigint[];
wi: bigint[];
shift: bigint;
k: bigint;
sqrt_q?: bigint;
sqrt_s?: number;
sqrt_t?: bigint;
sqrt_z?: bigint;
sqrt_tm1d2?: bigint;
sqrt_e1?: bigint;
sqrt_e34?: bigint;
sqrt_e12?: bigint;
sqrt?: (this: ZqField, a: bigint) => bigint | null;
frobenius?: (n: number, x: bigint) => bigint;
constructor(p: bigint | number | string);
e(a: bigint | number | string, b?: number): bigint;
add(a: bigint, b: bigint): bigint;
sub(a: bigint, b: bigint): bigint;
neg(a: bigint): bigint;
mul(a: bigint, b: bigint): bigint;
mulScalar(base: bigint, s: bigint | number | string): bigint;
square(a: bigint): bigint;
eq(a: bigint, b: bigint): boolean;
neq(a: bigint, b: bigint): boolean;
lt(a: bigint, b: bigint): boolean;
gt(a: bigint, b: bigint): boolean;
leq(a: bigint, b: bigint): boolean;
geq(a: bigint, b: bigint): boolean;
div(a: bigint, b: bigint): bigint;
idiv(a: bigint, b: bigint): bigint;
inv(a: bigint): bigint;
mod(a: bigint, b: bigint): bigint;
pow(b: bigint, e: bigint | number): bigint;
exp(b: bigint, e: bigint | number): bigint;
band(a: bigint, b: bigint): bigint;
bor(a: bigint, b: bigint): bigint;
bxor(a: bigint, b: bigint): bigint;
bnot(a: bigint): bigint;
shl(a: bigint, b: bigint): bigint;
shr(a: bigint, b: bigint): bigint;
land(a: bigint, b: bigint): bigint;
lor(a: bigint, b: bigint): bigint;
lnot(a: bigint): bigint;
sqrt_old(n: bigint): bigint | null;
normalize(a: bigint | number): bigint;
random(): bigint;
toString(a: bigint, base?: number): string;
isZero(a: bigint): boolean;
fromRng(rng: {
nextU64(): bigint;
}): bigint;
fft(a: bigint[]): bigint[];
ifft(a: bigint[]): bigint[];
toRprLE(buff: Uint8Array, o: number, e: bigint): void;
toRprBE(buff: Uint8Array, o: number, e: bigint): void;
toRprBEM(buff: Uint8Array, o: number, e: bigint): void;
toRprLEM(buff: Uint8Array, o: number, e: bigint): void;
fromRprLE(buff: Uint8Array, o: number): bigint;
fromRprBE(buff: Uint8Array, o: number): bigint;
fromRprLEM(buff: Uint8Array, o: number): bigint;
fromRprBEM(buff: Uint8Array, o: number): bigint;
toObject(a: bigint): bigint;
}