circom/c/buildasm/fr.h.ejs
c/buildasm/fr.h.ejsRaw
1#include <stdint.h>
2#define <%=name%>_N64 <%= n64 %>
3#define <%=name%>_SHORT 0x00000000
4#define <%=name%>_LONG 0x80000000
5#define <%=name%>_LONGMONTGOMERY 0xC0000000
6typedef struct __attribute__((__packed__)) {
7 int32_t shortVal;
8 u_int32_t type;
9 u_int64_t longVal[<%=name%>_N64];
10} <%=name%>Element;
11typedef <%=name%>Element *P<%=name%>Element;
12extern <%=name%>Element <%=name%>_q;
13extern "C" void <%=name%>_add(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
14extern "C" void <%=name%>_sub(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
15extern "C" void <%=name%>_neg(P<%=name%>Element r, P<%=name%>Element a);
16extern "C" void <%=name%>_mul(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
17extern "C" void <%=name%>_square(P<%=name%>Element r, P<%=name%>Element a);
18extern "C" void <%=name%>_band(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
19extern "C" void <%=name%>_bor(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
20extern "C" void <%=name%>_bxor(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
21extern "C" void <%=name%>_bnot(P<%=name%>Element r, P<%=name%>Element a);
22extern "C" void <%=name%>_eq(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
23extern "C" void <%=name%>_neq(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
24extern "C" void <%=name%>_lt(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
25extern "C" void <%=name%>_gt(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
26extern "C" void <%=name%>_leq(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
27extern "C" void <%=name%>_geq(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
28extern "C" void <%=name%>_land(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
29extern "C" void <%=name%>_lor(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
30extern "C" void <%=name%>_lnot(P<%=name%>Element r, P<%=name%>Element a);
31extern "C" void <%=name%>_toNormal(P<%=name%>Element pE);
32extern "C" void <%=name%>_toMontgomery(P<%=name%>Element pE);
33void <%=name%>_str2element(P<%=name%>Element pE, char *s);
34char *<%=name%>_element2str(P<%=name%>Element pE);
35void <%=name%>_idiv(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
36void <%=name%>_inv(P<%=name%>Element r, P<%=name%>Element a);
37void <%=name%>_div(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
38
39extern <%=name%>Element <%=name%>_q;
40