#ifndef ZQFIELD_H #define ZQFIELD_H #include "circom.h" class ZqField { mpz_t tmp; public: BigInt p; BigInt one; BigInt zero; size_t nBits; BigInt mask; ZqField(PBigInt ap); ~ZqField(); void copyn(PBigInt a, PBigInt b, int n); void add(PBigInt r,PBigInt a, PBigInt b); void sub(PBigInt r,PBigInt a, PBigInt b); void neg(PBigInt r,PBigInt a); void mul(PBigInt r,PBigInt a, PBigInt b); void div(PBigInt r,PBigInt a, PBigInt b); void idiv(PBigInt r,PBigInt a, PBigInt b); void mod(PBigInt r,PBigInt a, PBigInt b); void pow(PBigInt r,PBigInt a, PBigInt b); void lt(PBigInt r, PBigInt a, PBigInt b); void eq(PBigInt r, PBigInt a, PBigInt b); void gt(PBigInt r, PBigInt a, PBigInt b); void leq(PBigInt r, PBigInt a, PBigInt b); void geq(PBigInt r, PBigInt a, PBigInt b); void neq(PBigInt r, PBigInt a, PBigInt b); void land(PBigInt r, PBigInt a, PBigInt b); void lor(PBigInt r, PBigInt a, PBigInt b); void lnot(PBigInt r, PBigInt a); void band(PBigInt r, PBigInt a, PBigInt b); void bor(PBigInt r, PBigInt a, PBigInt b); void bxor(PBigInt r, PBigInt a, PBigInt b); void bnot(PBigInt r, PBigInt a); void shl(PBigInt r, PBigInt a, PBigInt b); void shr(PBigInt r, PBigInt a, PBigInt b); int isTrue(PBigInt a); }; #endif // ZQFIELD_H