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%>_band(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
18extern "C" void <%=name%>_bor(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
19extern "C" void <%=name%>_bxor(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
20extern "C" void <%=name%>_eq(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
21extern "C" void <%=name%>_neq(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
22extern "C" void <%=name%>_lt(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
23extern "C" void <%=name%>_gt(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
24extern "C" void <%=name%>_leq(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
25extern "C" void <%=name%>_geq(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
26extern "C" void <%=name%>_toNormal(P<%=name%>Element pE);
27extern "C" void <%=name%>_toMontgomery(P<%=name%>Element pE);
28void <%=name%>_str2element(P<%=name%>Element pE, char *s);
29char *<%=name%>_element2str(P<%=name%>Element pE);
30extern <%=name%>Element <%=name%>_q;
31