circom/c/buildasm/fr.h.ejs
c/buildasm/fr.h.ejsRaw
1#ifndef __<%=name.toUpperCase()%>_H
2#define __<%=name.toUpperCase()%>_H
3
4#include <stdint.h>
5#define <%=name%>_N64 <%= n64 %>
6#define <%=name%>_SHORT 0x00000000
7#define <%=name%>_LONG 0x80000000
8#define <%=name%>_LONGMONTGOMERY 0xC0000000
9typedef struct __attribute__((__packed__)) {
10 int32_t shortVal;
11 u_int32_t type;
12 u_int64_t longVal[<%=name%>_N64];
13} <%=name%>Element;
14typedef <%=name%>Element *P<%=name%>Element;
15extern <%=name%>Element <%=name%>_q;
16extern "C" void <%=name%>_copy(P<%=name%>Element r, P<%=name%>Element a);
17extern "C" void <%=name%>_copyn(P<%=name%>Element r, P<%=name%>Element a, int n);
18extern "C" void <%=name%>_add(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
19extern "C" void <%=name%>_sub(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
20extern "C" void <%=name%>_neg(P<%=name%>Element r, P<%=name%>Element a);
21extern "C" void <%=name%>_mul(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
22extern "C" void <%=name%>_square(P<%=name%>Element r, P<%=name%>Element a);
23extern "C" void <%=name%>_band(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
24extern "C" void <%=name%>_bor(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
25extern "C" void <%=name%>_bxor(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
26extern "C" void <%=name%>_bnot(P<%=name%>Element r, P<%=name%>Element a);
27extern "C" void <%=name%>_eq(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
28extern "C" void <%=name%>_neq(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
29extern "C" void <%=name%>_lt(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
30extern "C" void <%=name%>_gt(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
31extern "C" void <%=name%>_leq(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
32extern "C" void <%=name%>_geq(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
33extern "C" void <%=name%>_land(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
34extern "C" void <%=name%>_lor(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
35extern "C" void <%=name%>_lnot(P<%=name%>Element r, P<%=name%>Element a);
36extern "C" void <%=name%>_toNormal(P<%=name%>Element pE);
37extern "C" void <%=name%>_toLongNormal(P<%=name%>Element pE);
38extern "C" void <%=name%>_toMontgomery(P<%=name%>Element pE);
39void <%=name%>_str2element(P<%=name%>Element pE, char const*s);
40char *<%=name%>_element2str(P<%=name%>Element pE);
41void <%=name%>_idiv(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
42void <%=name%>_mod(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
43void <%=name%>_inv(P<%=name%>Element r, P<%=name%>Element a);
44void <%=name%>_div(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
45void <%=name%>_shl(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
46void <%=name%>_shr(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
47void <%=name%>_pow(P<%=name%>Element r, P<%=name%>Element a, P<%=name%>Element b);
48
49int <%=name%>_isTrue(P<%=name%>Element pE);
50int <%=name%>_toInt(P<%=name%>Element pE);
51
52void <%=name%>_init();
53
54extern <%=name%>Element <%=name%>_q;
55
56
57#endif // __<%=name.toUpperCase()%>_H
58
59
60