1 #include "cado.h"
2 /* MPFQ generated file -- do not edit */
3
4 #include "mpfq_u64k1.h"
5
6 #include "binary-dotprods-backends.h"
7 #include <inttypes.h>
8 /* Active handler: simd_u64k */
9 /* Automatically generated code */
10 /* Active handler: Mpfq::defaults */
11 /* Active handler: Mpfq::defaults::vec */
12 /* Active handler: simd_dotprod */
13 /* Active handler: io */
14 /* Active handler: trivialities */
15 /* Active handler: simd_char2 */
16 /* Options used:{
17 family=[
18 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_m128, tag=m128, },
19 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k1, tag=u64k1, },
20 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k2, tag=u64k2, },
21 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k3, tag=u64k3, },
22 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k4, tag=u64k4, },
23 ],
24 k=1,
25 tag=u64k1,
26 vbase_stuff={
27 choose_byfeatures=<code>,
28 families=[
29 [
30 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_m128, tag=m128, },
31 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k1, tag=u64k1, },
32 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k2, tag=u64k2, },
33 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k3, tag=u64k3, },
34 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k4, tag=u64k4, },
35 ],
36 [ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_1, tag=p_1, }, ],
37 [ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_10, tag=p_10, }, ],
38 [ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_11, tag=p_11, }, ],
39 [ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_12, tag=p_12, }, ],
40 [ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_13, tag=p_13, }, ],
41 [ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_14, tag=p_14, }, ],
42 [ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_15, tag=p_15, }, ],
43 [ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_2, tag=p_2, }, ],
44 [ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_3, tag=p_3, }, ],
45 [ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_4, tag=p_4, }, ],
46 [ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_5, tag=p_5, }, ],
47 [ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_6, tag=p_6, }, ],
48 [ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_7, tag=p_7, }, ],
49 [ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_8, tag=p_8, }, ],
50 [ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_9, tag=p_9, }, ],
51 [ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_pz, tag=pz, }, ],
52 ],
53 member_templates_restrict={
54 m128=[
55 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_m128, tag=m128, },
56 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k1, tag=u64k1, },
57 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k2, tag=u64k2, },
58 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k3, tag=u64k3, },
59 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k4, tag=u64k4, },
60 ],
61 p_1=[ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_1, tag=p_1, }, ],
62 p_10=[ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_10, tag=p_10, }, ],
63 p_11=[ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_11, tag=p_11, }, ],
64 p_12=[ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_12, tag=p_12, }, ],
65 p_13=[ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_13, tag=p_13, }, ],
66 p_14=[ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_14, tag=p_14, }, ],
67 p_15=[ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_15, tag=p_15, }, ],
68 p_2=[ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_2, tag=p_2, }, ],
69 p_3=[ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_3, tag=p_3, }, ],
70 p_4=[ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_4, tag=p_4, }, ],
71 p_5=[ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_5, tag=p_5, }, ],
72 p_6=[ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_6, tag=p_6, }, ],
73 p_7=[ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_7, tag=p_7, }, ],
74 p_8=[ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_8, tag=p_8, }, ],
75 p_9=[ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_p_9, tag=p_9, }, ],
76 pz=[ { cpp_ifdef=COMPILE_MPFQ_PRIME_FIELD_pz, tag=pz, }, ],
77 u64k1=[
78 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_m128, tag=m128, },
79 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k1, tag=u64k1, },
80 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k2, tag=u64k2, },
81 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k3, tag=u64k3, },
82 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k4, tag=u64k4, },
83 ],
84 u64k2=[
85 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_m128, tag=m128, },
86 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k1, tag=u64k1, },
87 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k2, tag=u64k2, },
88 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k3, tag=u64k3, },
89 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k4, tag=u64k4, },
90 ],
91 u64k3=[
92 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_m128, tag=m128, },
93 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k1, tag=u64k1, },
94 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k2, tag=u64k2, },
95 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k3, tag=u64k3, },
96 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k4, tag=u64k4, },
97 ],
98 u64k4=[
99 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_m128, tag=m128, },
100 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k1, tag=u64k1, },
101 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k2, tag=u64k2, },
102 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k3, tag=u64k3, },
103 { cpp_ifdef=COMPILE_MPFQ_BINARY_FIELD_u64k4, tag=u64k4, },
104 ],
105 },
106 vc:includes=[ <stdarg.h>, ],
107 },
108 virtual_base={
109 filebase=mpfq_vbase,
110 global_prefix=mpfq_,
111 name=mpfq_vbase,
112 substitutions=[
113 [ (?^:mpfq_u64k1_elt \*), void *, ],
114 [ (?^:mpfq_u64k1_src_elt\b), const void *, ],
115 [ (?^:mpfq_u64k1_elt\b), void *, ],
116 [ (?^:mpfq_u64k1_dst_elt\b), void *, ],
117 [ (?^:mpfq_u64k1_elt_ur \*), void *, ],
118 [ (?^:mpfq_u64k1_src_elt_ur\b), const void *, ],
119 [ (?^:mpfq_u64k1_elt_ur\b), void *, ],
120 [ (?^:mpfq_u64k1_dst_elt_ur\b), void *, ],
121 [ (?^:mpfq_u64k1_vec \*), void *, ],
122 [ (?^:mpfq_u64k1_src_vec\b), const void *, ],
123 [ (?^:mpfq_u64k1_vec\b), void *, ],
124 [ (?^:mpfq_u64k1_dst_vec\b), void *, ],
125 [ (?^:mpfq_u64k1_vec_ur \*), void *, ],
126 [ (?^:mpfq_u64k1_src_vec_ur\b), const void *, ],
127 [ (?^:mpfq_u64k1_vec_ur\b), void *, ],
128 [ (?^:mpfq_u64k1_dst_vec_ur\b), void *, ],
129 [ (?^:mpfq_u64k1_poly \*), void *, ],
130 [ (?^:mpfq_u64k1_src_poly\b), const void *, ],
131 [ (?^:mpfq_u64k1_poly\b), void *, ],
132 [ (?^:mpfq_u64k1_dst_poly\b), void *, ],
133 ],
134 },
135 w=64,
136 } */
137
138
139 /* Functions operating on the field structure */
140 /* *simd_char2::code_for_field_characteristic_srcptr */
mpfq_u64k1_field_characteristic_srcptr(mpfq_u64k1_src_field K MAYBE_UNUSED)141 mpz_srcptr mpfq_u64k1_field_characteristic_srcptr(mpfq_u64k1_src_field K MAYBE_UNUSED)
142 {
143 /* yes, this is ugly */
144 static mp_limb_t limbs[1] = {2};
145 static __mpz_struct a = { 1, 1, limbs };
146 return &a;
147 }
148
149 /* *simd_u64k::code_for_field_specify */
mpfq_u64k1_field_specify(mpfq_u64k1_dst_field K MAYBE_UNUSED,unsigned long tag,const void * x MAYBE_UNUSED)150 void mpfq_u64k1_field_specify(mpfq_u64k1_dst_field K MAYBE_UNUSED, unsigned long tag, const void * x MAYBE_UNUSED)
151 {
152 if (tag == MPFQ_SIMD_GROUPSIZE) {
153 assert(*(int*)x == 64);
154 } else if (tag == MPFQ_PRIME_MPZ) {
155 assert(mpz_cmp_ui((mpz_srcptr)x, 2) == 0);
156 } else {
157 fprintf(stderr, "Unsupported field_specify tag %ld\n", tag);
158 }
159 }
160
161
162 /* Element allocation functions */
163
164 /* Elementary assignment functions */
165
166 /* Assignment of random values */
167
168 /* Arithmetic operations on elements */
169
170 /* Operations involving unreduced elements */
171
172 /* Comparison functions */
173
174 /* Input/output functions */
175 /* *io::code_for_asprint */
mpfq_u64k1_asprint(mpfq_u64k1_dst_field K MAYBE_UNUSED,char ** ps,mpfq_u64k1_src_elt x)176 int mpfq_u64k1_asprint(mpfq_u64k1_dst_field K MAYBE_UNUSED, char * * ps, mpfq_u64k1_src_elt x)
177 {
178 /* Hmm, this has never been tested, right ? Attempting a quick fix... */
179 const uint64_t * y = (const uint64_t *) x;
180 const unsigned int stride = mpfq_u64k1_elt_stride(K)/(sizeof(uint64_t));
181 *ps = mpfq_malloc_check(stride * 16 + 1);
182 memset(*ps, ' ', stride * 16);
183 int n;
184 for(unsigned int i = 0 ; i < stride ; i++) {
185 n = snprintf((*ps) + i * 16, 17, "%016" PRIx64, y[i]);
186 (*ps)[i*16 + n]=',';
187 }
188 (*ps)[(stride-1) * 16 + n]='\0';
189 return (stride-1) * 16 + n;
190 }
191
192 /* *io::code_for_fprint */
mpfq_u64k1_fprint(mpfq_u64k1_dst_field k,FILE * file,mpfq_u64k1_src_elt x)193 int mpfq_u64k1_fprint(mpfq_u64k1_dst_field k, FILE * file, mpfq_u64k1_src_elt x)
194 {
195 char *str;
196 int rc;
197 mpfq_u64k1_asprint(k,&str,x);
198 rc = fprintf(file,"%s",str);
199 free(str);
200 return rc;
201 }
202
203 /* *io::code_for_sscan */
mpfq_u64k1_sscan(mpfq_u64k1_dst_field k MAYBE_UNUSED,mpfq_u64k1_dst_elt z,const char * str)204 int mpfq_u64k1_sscan(mpfq_u64k1_dst_field k MAYBE_UNUSED, mpfq_u64k1_dst_elt z, const char * str)
205 {
206 char tmp[17];
207 uint64_t * y = (uint64_t *) z;
208 const unsigned int stride = mpfq_u64k1_elt_stride(K)/(sizeof(uint64_t));
209 assert(strlen(str) >= 1 * 16);
210 int r = 0;
211 for(unsigned int i = 0 ; i < stride ; i++) {
212 memcpy(tmp, str + i * 16, 16);
213 tmp[16]=0;
214 if (sscanf(tmp, "%" SCNx64, &(y[i])) == 1) {
215 r+=16;
216 } else {
217 return r;
218 }
219 }
220 return r;
221 }
222
223 /* *io::code_for_fscan */
mpfq_u64k1_fscan(mpfq_u64k1_dst_field k,FILE * file,mpfq_u64k1_dst_elt z)224 int mpfq_u64k1_fscan(mpfq_u64k1_dst_field k, FILE * file, mpfq_u64k1_dst_elt z)
225 {
226 char *tmp;
227 int allocated, len=0;
228 int c, start=0;
229 allocated=100;
230 tmp = (char *)mpfq_malloc_check(allocated);
231 for(;;) {
232 c = fgetc(file);
233 if (c==EOF)
234 break;
235 if (isspace((int)(unsigned char)c)) {
236 if (start==0)
237 continue;
238 else
239 break;
240 } else {
241 if (len==allocated) {
242 allocated+=100;
243 tmp = (char*)realloc(tmp, allocated);
244 }
245 tmp[len]=c;
246 len++;
247 start=1;
248 }
249 }
250 if (len==allocated) {
251 allocated+=1;
252 tmp = (char*)realloc(tmp, allocated);
253 }
254 tmp[len]='\0';
255 int ret=mpfq_u64k1_sscan(k,z,tmp);
256 free(tmp);
257 return ret ? len : 0;
258 }
259
260
261 /* Vector functions */
262 /* *Mpfq::defaults::vec::alloc::code_for_vec_init, Mpfq::defaults::vec */
mpfq_u64k1_vec_init(mpfq_u64k1_dst_field K MAYBE_UNUSED,mpfq_u64k1_vec * v,unsigned long n)263 void mpfq_u64k1_vec_init(mpfq_u64k1_dst_field K MAYBE_UNUSED, mpfq_u64k1_vec * v, unsigned long n)
264 {
265 unsigned int i;
266 *v = (mpfq_u64k1_vec) malloc (n*sizeof(mpfq_u64k1_elt));
267 for(i = 0; i < n; i++)
268 mpfq_u64k1_init(K, (*v) + i);
269 }
270
271 /* *Mpfq::defaults::vec::alloc::code_for_vec_reinit, Mpfq::defaults::vec */
mpfq_u64k1_vec_reinit(mpfq_u64k1_dst_field K MAYBE_UNUSED,mpfq_u64k1_vec * v,unsigned long n,unsigned long m)272 void mpfq_u64k1_vec_reinit(mpfq_u64k1_dst_field K MAYBE_UNUSED, mpfq_u64k1_vec * v, unsigned long n, unsigned long m)
273 {
274 if (n < m) { // increase size
275 unsigned int i;
276 *v = (mpfq_u64k1_vec) realloc (*v, m * sizeof(mpfq_u64k1_elt));
277 for(i = n; i < m; i+=1)
278 mpfq_u64k1_init(K, (*v) + i);
279 } else if (m < n) { // decrease size
280 unsigned int i;
281 for(i = m; i < n; i+=1)
282 mpfq_u64k1_clear(K, (*v) + i);
283 *v = (mpfq_u64k1_vec) realloc (*v, m * sizeof(mpfq_u64k1_elt));
284 }
285 }
286
287 /* *Mpfq::defaults::vec::alloc::code_for_vec_clear, Mpfq::defaults::vec */
mpfq_u64k1_vec_clear(mpfq_u64k1_dst_field K MAYBE_UNUSED,mpfq_u64k1_vec * v,unsigned long n)288 void mpfq_u64k1_vec_clear(mpfq_u64k1_dst_field K MAYBE_UNUSED, mpfq_u64k1_vec * v, unsigned long n)
289 {
290 unsigned int i;
291 for(i = 0; i < n; i+=1)
292 mpfq_u64k1_clear(K, (*v) + i);
293 free(*v);
294 }
295
296 /* missing vec_setcoeff_ui */
297 /* *Mpfq::defaults::vec::generic::code_for_vec_random, Mpfq::defaults::vec */
mpfq_u64k1_vec_random(mpfq_u64k1_dst_field k,mpfq_u64k1_dst_vec w,unsigned long n,gmp_randstate_t state)298 void mpfq_u64k1_vec_random(mpfq_u64k1_dst_field k, mpfq_u64k1_dst_vec w, unsigned long n, gmp_randstate_t state)
299 {
300 for (unsigned int i = 0; i < n; ++i) {
301 mpfq_u64k1_dst_elt x = mpfq_u64k1_vec_coeff_ptr(k, w, i);
302 mpfq_u64k1_random(k, x, state);
303 }
304 }
305
306 /* *Mpfq::defaults::vec::generic::code_for_vec_random2, Mpfq::defaults::vec */
mpfq_u64k1_vec_random2(mpfq_u64k1_dst_field k,mpfq_u64k1_dst_vec w,unsigned long n,gmp_randstate_t state)307 void mpfq_u64k1_vec_random2(mpfq_u64k1_dst_field k, mpfq_u64k1_dst_vec w, unsigned long n, gmp_randstate_t state)
308 {
309 for (unsigned int i = 0; i < n; ++i) {
310 mpfq_u64k1_dst_elt x = mpfq_u64k1_vec_coeff_ptr(k, w, i);
311 mpfq_u64k1_random2(k, x, state);
312 }
313 }
314
315 /* *Mpfq::defaults::vec::generic::code_for_vec_cmp, Mpfq::defaults::vec */
mpfq_u64k1_vec_cmp(mpfq_u64k1_dst_field k,mpfq_u64k1_src_vec u,mpfq_u64k1_src_vec v,unsigned long n)316 long mpfq_u64k1_vec_cmp(mpfq_u64k1_dst_field k, mpfq_u64k1_src_vec u, mpfq_u64k1_src_vec v, unsigned long n)
317 {
318 for (unsigned int i = 0; i < n; ++i) {
319 mpfq_u64k1_src_elt x = mpfq_u64k1_vec_coeff_ptr_const(k, u, i);
320 mpfq_u64k1_src_elt y = mpfq_u64k1_vec_coeff_ptr_const(k, v, i);
321 int ret = mpfq_u64k1_cmp(k, x, y);
322 if (ret != 0)
323 return ret;
324 }
325 return 0;
326 }
327
328 /* *Mpfq::defaults::vec::generic::code_for_vec_is_zero, Mpfq::defaults::vec */
mpfq_u64k1_vec_is_zero(mpfq_u64k1_dst_field k,mpfq_u64k1_src_vec v,unsigned long n)329 long mpfq_u64k1_vec_is_zero(mpfq_u64k1_dst_field k, mpfq_u64k1_src_vec v, unsigned long n)
330 {
331 for (unsigned int i = 0; i < n; ++i) {
332 mpfq_u64k1_src_elt x = mpfq_u64k1_vec_coeff_ptr_const(k, v, i);
333 if (!mpfq_u64k1_is_zero(k, x))
334 return 0;
335 }
336 return 1;
337 }
338
339 /* *Mpfq::defaults::vec::io::code_for_vec_asprint, Mpfq::defaults::vec */
mpfq_u64k1_vec_asprint(mpfq_u64k1_dst_field K MAYBE_UNUSED,char ** pstr,mpfq_u64k1_src_vec w,unsigned long n)340 long mpfq_u64k1_vec_asprint(mpfq_u64k1_dst_field K MAYBE_UNUSED, char * * pstr, mpfq_u64k1_src_vec w, unsigned long n)
341 {
342 if (n == 0) {
343 *pstr = (char *)mpfq_malloc_check(4);
344 sprintf(*pstr, "[ ]");
345 return strlen(*pstr);
346 }
347 int alloc = 100;
348 int len = 0;
349 *pstr = (char *)mpfq_malloc_check(alloc);
350 (*pstr)[len++] = '[';
351 (*pstr)[len++] = ' ';
352 unsigned int i;
353 for(i = 0; i < n; i+=1) {
354 if (i) {
355 (*pstr)[len++] = ',';
356 (*pstr)[len++] = ' ';
357 }
358 char *tmp;
359 mpfq_u64k1_asprint(K, &tmp, w[i]);
360 int ltmp = strlen(tmp);
361 if (len+ltmp+4 > alloc) {
362 alloc = len+ltmp+100 + alloc / 4;
363 *pstr = (char *)realloc(*pstr, alloc);
364 }
365 #if GNUC_VERSION_ATLEAST(7,1,0)
366 #pragma GCC diagnostic push
367 #pragma GCC diagnostic ignored "-Wstringop-overflow"
368 #endif
369 strncpy(*pstr+len, tmp, ltmp+4);
370 #if GNUC_VERSION_ATLEAST(7,1,0)
371 #pragma GCC diagnostic pop
372 #endif
373 len += ltmp;
374 free(tmp);
375 }
376 (*pstr)[len++] = ' ';
377 (*pstr)[len++] = ']';
378 (*pstr)[len] = '\0';
379 return len;
380 }
381
382 /* *Mpfq::defaults::vec::io::code_for_vec_fprint, Mpfq::defaults::vec */
mpfq_u64k1_vec_fprint(mpfq_u64k1_dst_field K MAYBE_UNUSED,FILE * file,mpfq_u64k1_src_vec w,unsigned long n)383 long mpfq_u64k1_vec_fprint(mpfq_u64k1_dst_field K MAYBE_UNUSED, FILE * file, mpfq_u64k1_src_vec w, unsigned long n)
384 {
385 char *str;
386 int rc;
387 mpfq_u64k1_vec_asprint(K,&str,w,n);
388 rc = fprintf(file,"%s",str);
389 free(str);
390 return rc;
391 }
392
393 /* *Mpfq::defaults::vec::io::code_for_vec_print, Mpfq::defaults::vec */
mpfq_u64k1_vec_print(mpfq_u64k1_dst_field K MAYBE_UNUSED,mpfq_u64k1_src_vec w,unsigned long n)394 long mpfq_u64k1_vec_print(mpfq_u64k1_dst_field K MAYBE_UNUSED, mpfq_u64k1_src_vec w, unsigned long n)
395 {
396 return mpfq_u64k1_vec_fprint(K,stdout,w,n);
397 }
398
399 /* *Mpfq::defaults::vec::io::code_for_vec_sscan, Mpfq::defaults::vec */
mpfq_u64k1_vec_sscan(mpfq_u64k1_dst_field K MAYBE_UNUSED,mpfq_u64k1_vec * w,unsigned long * n,const char * str)400 long mpfq_u64k1_vec_sscan(mpfq_u64k1_dst_field K MAYBE_UNUSED, mpfq_u64k1_vec * w, unsigned long * n, const char * str)
401 {
402 // start with a clean vector
403 unsigned int nn;
404 int len = 0;
405 mpfq_u64k1_vec_reinit(K, w, *n, 0);
406 *n = nn = 0;
407 while (isspace((int)(unsigned char)str[len]))
408 len++;
409 if (str[len] != '[')
410 return 0;
411 len++;
412 while (isspace((int)(unsigned char)str[len]))
413 len++;
414 if (str[len] == ']') {
415 len++;
416 return len;
417 }
418 unsigned int i = 0;
419 for (;;) {
420 if (nn < i+1) {
421 mpfq_u64k1_vec_reinit(K, w, nn, i+1);
422 *n = nn = i+1;
423 }
424 int ret = mpfq_u64k1_sscan(K, mpfq_u64k1_vec_coeff_ptr(K, *w, i), str + len);
425 if (!ret) {
426 *n = 0; /* invalidate data ! */
427 return 0;
428 }
429 i++;
430 len += ret;
431 while (isspace((int)(unsigned char)str[len]))
432 len++;
433 if (str[len] == ']') {
434 len++;
435 break;
436 }
437 if (str[len] != ',') {
438 *n = 0; /* invalidate data ! */
439 return 0;
440 }
441 len++;
442 while (isspace((int)(unsigned char)str[len]))
443 len++;
444 }
445 return len;
446 }
447
448 /* *Mpfq::defaults::vec::io::code_for_vec_fscan, Mpfq::defaults::vec */
mpfq_u64k1_vec_fscan(mpfq_u64k1_dst_field K MAYBE_UNUSED,FILE * file,mpfq_u64k1_vec * w,unsigned long * n)449 long mpfq_u64k1_vec_fscan(mpfq_u64k1_dst_field K MAYBE_UNUSED, FILE * file, mpfq_u64k1_vec * w, unsigned long * n)
450 {
451 char *tmp;
452 int c;
453 int allocated, len=0;
454 allocated=100;
455 tmp = (char *)mpfq_malloc_check(allocated);
456 int nest = 0, mnest = 0;
457 for(;;) {
458 c = fgetc(file);
459 if (c==EOF) {
460 free(tmp);
461 return 0;
462 }
463 if (c == '[') {
464 nest++, mnest++;
465 }
466 if (len==allocated) {
467 allocated = len + 10 + allocated / 4;
468 tmp = (char*)realloc(tmp, allocated);
469 }
470 tmp[len]=c;
471 len++;
472 if (c == ']') {
473 nest--, mnest++;
474 }
475 if (mnest && nest == 0)
476 break;
477 }
478 if (len==allocated) {
479 allocated+=1;
480 tmp = (char*)realloc(tmp, allocated);
481 }
482 tmp[len]='\0';
483 int ret=mpfq_u64k1_vec_sscan(K,w,n,tmp);
484 free(tmp);
485 return ret;
486 }
487
488 /* *Mpfq::defaults::vec::generic::code_for_vec_hamming_weight, Mpfq::defaults::vec */
mpfq_u64k1_vec_hamming_weight(mpfq_u64k1_dst_field k,mpfq_u64k1_src_vec v,unsigned long n)489 long mpfq_u64k1_vec_hamming_weight(mpfq_u64k1_dst_field k, mpfq_u64k1_src_vec v, unsigned long n)
490 {
491 int w = 0;
492 for (unsigned int i = 0; i < n; ++i) {
493 mpfq_u64k1_src_elt x = mpfq_u64k1_vec_coeff_ptr_const(k, v, i);
494 w += !mpfq_u64k1_is_zero(k, x);
495 }
496 return w;
497 }
498
499 /* *Mpfq::defaults::vec::generic::code_for_vec_find_first_set, Mpfq::defaults::vec */
mpfq_u64k1_vec_find_first_set(mpfq_u64k1_dst_field k,mpfq_u64k1_src_vec v,unsigned long n)500 long mpfq_u64k1_vec_find_first_set(mpfq_u64k1_dst_field k, mpfq_u64k1_src_vec v, unsigned long n)
501 {
502 for (unsigned int i = 0; i < n; ++i) {
503 mpfq_u64k1_src_elt x = mpfq_u64k1_vec_coeff_ptr_const(k, v, i);
504 if (!mpfq_u64k1_is_zero(k, x))
505 return i;
506 }
507 return -1;
508 }
509
510 /* *Mpfq::defaults::vec::generic::code_for_vec_simd_hamming_weight, Mpfq::defaults::vec */
mpfq_u64k1_vec_simd_hamming_weight(mpfq_u64k1_dst_field k,mpfq_u64k1_src_vec v,unsigned long n)511 long mpfq_u64k1_vec_simd_hamming_weight(mpfq_u64k1_dst_field k, mpfq_u64k1_src_vec v, unsigned long n)
512 {
513 int w = 0;
514 for (unsigned int i = 0; i < n; ++i) {
515 mpfq_u64k1_src_elt x = mpfq_u64k1_vec_coeff_ptr_const(k, v, i);
516 w += mpfq_u64k1_simd_hamming_weight(k, x);
517 }
518 return w;
519 }
520
521 /* *Mpfq::defaults::vec::generic::code_for_vec_simd_find_first_set, Mpfq::defaults::vec */
mpfq_u64k1_vec_simd_find_first_set(mpfq_u64k1_dst_field k,mpfq_u64k1_src_vec v,unsigned long n)522 long mpfq_u64k1_vec_simd_find_first_set(mpfq_u64k1_dst_field k, mpfq_u64k1_src_vec v, unsigned long n)
523 {
524 for (unsigned int i = 0; i < n; ++i) {
525 mpfq_u64k1_src_elt x = mpfq_u64k1_vec_coeff_ptr_const(k, v, i);
526 if (!mpfq_u64k1_is_zero(k, x))
527 return i * mpfq_u64k1_simd_groupsize(k) + mpfq_u64k1_simd_hamming_weight(k, x);
528 }
529 return -1;
530 }
531
532 /* *Mpfq::defaults::vec::alloc::code_for_vec_ur_init, Mpfq::defaults::vec */
mpfq_u64k1_vec_ur_init(mpfq_u64k1_dst_field K MAYBE_UNUSED,mpfq_u64k1_vec_ur * v,unsigned long n)533 void mpfq_u64k1_vec_ur_init(mpfq_u64k1_dst_field K MAYBE_UNUSED, mpfq_u64k1_vec_ur * v, unsigned long n)
534 {
535 unsigned int i;
536 *v = (mpfq_u64k1_vec_ur) malloc (n*sizeof(mpfq_u64k1_elt_ur));
537 for(i = 0; i < n; i+=1)
538 mpfq_u64k1_elt_ur_init(K, &( (*v)[i]));
539 }
540
541 /* *Mpfq::defaults::vec::alloc::code_for_vec_ur_reinit, Mpfq::defaults::vec */
mpfq_u64k1_vec_ur_reinit(mpfq_u64k1_dst_field K MAYBE_UNUSED,mpfq_u64k1_vec_ur * v,unsigned long n,unsigned long m)542 void mpfq_u64k1_vec_ur_reinit(mpfq_u64k1_dst_field K MAYBE_UNUSED, mpfq_u64k1_vec_ur * v, unsigned long n, unsigned long m)
543 {
544 if (n < m) { // increase size
545 *v = (mpfq_u64k1_vec_ur) realloc (*v, m * sizeof(mpfq_u64k1_elt_ur));
546 unsigned int i;
547 for(i = n; i < m; i+=1)
548 mpfq_u64k1_elt_ur_init(K, (*v) + i);
549 } else if (m < n) { // decrease size
550 unsigned int i;
551 for(i = m; i < n; i+=1)
552 mpfq_u64k1_elt_ur_clear(K, (*v) + i);
553 *v = (mpfq_u64k1_vec_ur) realloc (*v, m * sizeof(mpfq_u64k1_elt_ur));
554 }
555 }
556
557 /* *Mpfq::defaults::vec::alloc::code_for_vec_ur_clear, Mpfq::defaults::vec */
mpfq_u64k1_vec_ur_clear(mpfq_u64k1_dst_field K MAYBE_UNUSED,mpfq_u64k1_vec_ur * v,unsigned long n)558 void mpfq_u64k1_vec_ur_clear(mpfq_u64k1_dst_field K MAYBE_UNUSED, mpfq_u64k1_vec_ur * v, unsigned long n)
559 {
560 unsigned int i;
561 for(i = 0; i < n; i+=1)
562 mpfq_u64k1_elt_ur_clear(K, &( (*v)[i]));
563 free(*v);
564 }
565
566
567 /* Polynomial functions */
568
569 /* Functions related to SIMD operation */
570 /* *simd_dotprod::code_for_add_dotprod */
mpfq_u64k1_add_dotprod(mpfq_u64k1_dst_field K MAYBE_UNUSED,mpfq_u64k1_dst_vec xw,mpfq_u64k1_src_vec xu1,mpfq_u64k1_src_vec xu0,unsigned int n)571 void mpfq_u64k1_add_dotprod(mpfq_u64k1_dst_field K MAYBE_UNUSED, mpfq_u64k1_dst_vec xw, mpfq_u64k1_src_vec xu1, mpfq_u64k1_src_vec xu0, unsigned int n)
572 {
573 uint64_t * w = (uint64_t *) xw;
574 const uint64_t * u0 = (const uint64_t *) xu0;
575 const uint64_t * u1 = (const uint64_t *) xu1;
576 add_dotprod_64K_64(w,u1,u0,n,1);
577 }
578
579
580 /* Member templates related to SIMD operation */
581
582 /* Object-oriented interface */
583 static void mpfq_u64k1_wrapper_oo_field_clear(mpfq_vbase_ptr);
mpfq_u64k1_wrapper_oo_field_clear(mpfq_vbase_ptr vbase MAYBE_UNUSED)584 static void mpfq_u64k1_wrapper_oo_field_clear(mpfq_vbase_ptr vbase MAYBE_UNUSED)
585 {
586 mpfq_u64k1_oo_field_clear(vbase);
587 }
588
589 static void mpfq_u64k1_wrapper_oo_field_init(mpfq_vbase_ptr);
mpfq_u64k1_wrapper_oo_field_init(mpfq_vbase_ptr vbase MAYBE_UNUSED)590 static void mpfq_u64k1_wrapper_oo_field_init(mpfq_vbase_ptr vbase MAYBE_UNUSED)
591 {
592 mpfq_u64k1_oo_field_init(vbase);
593 }
594
595 static void mpfq_u64k1_wrapper_add_dotprod(mpfq_vbase_ptr, mpfq_u64k1_dst_vec, mpfq_u64k1_src_vec, mpfq_u64k1_src_vec, unsigned int);
mpfq_u64k1_wrapper_add_dotprod(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec xw MAYBE_UNUSED,mpfq_u64k1_src_vec xu1 MAYBE_UNUSED,mpfq_u64k1_src_vec xu0 MAYBE_UNUSED,unsigned int n MAYBE_UNUSED)596 static void mpfq_u64k1_wrapper_add_dotprod(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec xw MAYBE_UNUSED, mpfq_u64k1_src_vec xu1 MAYBE_UNUSED, mpfq_u64k1_src_vec xu0 MAYBE_UNUSED, unsigned int n MAYBE_UNUSED)
597 {
598 mpfq_u64k1_add_dotprod(vbase->obj, xw, xu1, xu0, n);
599 }
600
601 static void mpfq_u64k1_wrapper_simd_set_ui_all(mpfq_vbase_ptr, mpfq_u64k1_dst_elt, unsigned long);
mpfq_u64k1_wrapper_simd_set_ui_all(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt r MAYBE_UNUSED,unsigned long v MAYBE_UNUSED)602 static void mpfq_u64k1_wrapper_simd_set_ui_all(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt r MAYBE_UNUSED, unsigned long v MAYBE_UNUSED)
603 {
604 mpfq_u64k1_simd_set_ui_all(vbase->obj, r, v);
605 }
606
607 static void mpfq_u64k1_wrapper_simd_add_ui_at(mpfq_vbase_ptr, mpfq_u64k1_dst_elt, mpfq_u64k1_src_elt, int, unsigned long);
mpfq_u64k1_wrapper_simd_add_ui_at(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt p MAYBE_UNUSED,mpfq_u64k1_src_elt p0 MAYBE_UNUSED,int k MAYBE_UNUSED,unsigned long v MAYBE_UNUSED)608 static void mpfq_u64k1_wrapper_simd_add_ui_at(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt p MAYBE_UNUSED, mpfq_u64k1_src_elt p0 MAYBE_UNUSED, int k MAYBE_UNUSED, unsigned long v MAYBE_UNUSED)
609 {
610 mpfq_u64k1_simd_add_ui_at(vbase->obj, p, p0, k, v);
611 }
612
613 static void mpfq_u64k1_wrapper_simd_set_ui_at(mpfq_vbase_ptr, mpfq_u64k1_dst_elt, int, unsigned long);
mpfq_u64k1_wrapper_simd_set_ui_at(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt p MAYBE_UNUSED,int k MAYBE_UNUSED,unsigned long v MAYBE_UNUSED)614 static void mpfq_u64k1_wrapper_simd_set_ui_at(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt p MAYBE_UNUSED, int k MAYBE_UNUSED, unsigned long v MAYBE_UNUSED)
615 {
616 mpfq_u64k1_simd_set_ui_at(vbase->obj, p, k, v);
617 }
618
619 static unsigned long mpfq_u64k1_wrapper_simd_get_ui_at(mpfq_vbase_ptr, mpfq_u64k1_src_elt, int);
mpfq_u64k1_wrapper_simd_get_ui_at(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_src_elt p MAYBE_UNUSED,int k MAYBE_UNUSED)620 static unsigned long mpfq_u64k1_wrapper_simd_get_ui_at(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_src_elt p MAYBE_UNUSED, int k MAYBE_UNUSED)
621 {
622 return mpfq_u64k1_simd_get_ui_at(vbase->obj, p, k);
623 }
624
625 static int mpfq_u64k1_wrapper_simd_find_first_set(mpfq_vbase_ptr, mpfq_u64k1_src_elt);
mpfq_u64k1_wrapper_simd_find_first_set(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_src_elt p MAYBE_UNUSED)626 static int mpfq_u64k1_wrapper_simd_find_first_set(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_src_elt p MAYBE_UNUSED)
627 {
628 return mpfq_u64k1_simd_find_first_set(vbase->obj, p);
629 }
630
631 static int mpfq_u64k1_wrapper_simd_hamming_weight(mpfq_vbase_ptr, mpfq_u64k1_src_elt);
mpfq_u64k1_wrapper_simd_hamming_weight(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_src_elt p MAYBE_UNUSED)632 static int mpfq_u64k1_wrapper_simd_hamming_weight(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_src_elt p MAYBE_UNUSED)
633 {
634 return mpfq_u64k1_simd_hamming_weight(vbase->obj, p);
635 }
636
637 static int mpfq_u64k1_wrapper_simd_groupsize(mpfq_vbase_ptr);
mpfq_u64k1_wrapper_simd_groupsize(mpfq_vbase_ptr vbase MAYBE_UNUSED)638 static int mpfq_u64k1_wrapper_simd_groupsize(mpfq_vbase_ptr vbase MAYBE_UNUSED)
639 {
640 return mpfq_u64k1_simd_groupsize(vbase->obj);
641 }
642
643 static ptrdiff_t mpfq_u64k1_wrapper_vec_ur_elt_stride(mpfq_vbase_ptr, long);
mpfq_u64k1_wrapper_vec_ur_elt_stride(mpfq_vbase_ptr vbase MAYBE_UNUSED,long n MAYBE_UNUSED)644 static ptrdiff_t mpfq_u64k1_wrapper_vec_ur_elt_stride(mpfq_vbase_ptr vbase MAYBE_UNUSED, long n MAYBE_UNUSED)
645 {
646 return mpfq_u64k1_vec_ur_elt_stride(vbase->obj, n);
647 }
648
649 static ptrdiff_t mpfq_u64k1_wrapper_vec_elt_stride(mpfq_vbase_ptr, long);
mpfq_u64k1_wrapper_vec_elt_stride(mpfq_vbase_ptr vbase MAYBE_UNUSED,long n MAYBE_UNUSED)650 static ptrdiff_t mpfq_u64k1_wrapper_vec_elt_stride(mpfq_vbase_ptr vbase MAYBE_UNUSED, long n MAYBE_UNUSED)
651 {
652 return mpfq_u64k1_vec_elt_stride(vbase->obj, n);
653 }
654
655 static mpfq_u64k1_src_elt mpfq_u64k1_wrapper_vec_ur_coeff_ptr_const(mpfq_vbase_ptr, mpfq_u64k1_src_vec_ur, long);
mpfq_u64k1_wrapper_vec_ur_coeff_ptr_const(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_src_vec_ur v MAYBE_UNUSED,long i MAYBE_UNUSED)656 static mpfq_u64k1_src_elt mpfq_u64k1_wrapper_vec_ur_coeff_ptr_const(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_src_vec_ur v MAYBE_UNUSED, long i MAYBE_UNUSED)
657 {
658 return mpfq_u64k1_vec_ur_coeff_ptr_const(vbase->obj, v, i);
659 }
660
661 static mpfq_u64k1_dst_elt mpfq_u64k1_wrapper_vec_ur_coeff_ptr(mpfq_vbase_ptr, mpfq_u64k1_dst_vec_ur, long);
mpfq_u64k1_wrapper_vec_ur_coeff_ptr(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec_ur v MAYBE_UNUSED,long i MAYBE_UNUSED)662 static mpfq_u64k1_dst_elt mpfq_u64k1_wrapper_vec_ur_coeff_ptr(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec_ur v MAYBE_UNUSED, long i MAYBE_UNUSED)
663 {
664 return mpfq_u64k1_vec_ur_coeff_ptr(vbase->obj, v, i);
665 }
666
667 static mpfq_u64k1_src_vec_ur mpfq_u64k1_wrapper_vec_ur_subvec_const(mpfq_vbase_ptr, mpfq_u64k1_src_vec_ur, long);
mpfq_u64k1_wrapper_vec_ur_subvec_const(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_src_vec_ur v MAYBE_UNUSED,long i MAYBE_UNUSED)668 static mpfq_u64k1_src_vec_ur mpfq_u64k1_wrapper_vec_ur_subvec_const(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_src_vec_ur v MAYBE_UNUSED, long i MAYBE_UNUSED)
669 {
670 return mpfq_u64k1_vec_ur_subvec_const(vbase->obj, v, i);
671 }
672
673 static mpfq_u64k1_dst_vec_ur mpfq_u64k1_wrapper_vec_ur_subvec(mpfq_vbase_ptr, mpfq_u64k1_dst_vec_ur, long);
mpfq_u64k1_wrapper_vec_ur_subvec(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec_ur v MAYBE_UNUSED,long i MAYBE_UNUSED)674 static mpfq_u64k1_dst_vec_ur mpfq_u64k1_wrapper_vec_ur_subvec(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec_ur v MAYBE_UNUSED, long i MAYBE_UNUSED)
675 {
676 return mpfq_u64k1_vec_ur_subvec(vbase->obj, v, i);
677 }
678
679 static void mpfq_u64k1_wrapper_vec_reduce(mpfq_vbase_ptr, mpfq_u64k1_dst_vec, mpfq_u64k1_dst_vec_ur, unsigned long);
mpfq_u64k1_wrapper_vec_reduce(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec w MAYBE_UNUSED,mpfq_u64k1_dst_vec_ur u MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)680 static void mpfq_u64k1_wrapper_vec_reduce(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec w MAYBE_UNUSED, mpfq_u64k1_dst_vec_ur u MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
681 {
682 mpfq_u64k1_vec_reduce(vbase->obj, w, u, n);
683 }
684
685 static void mpfq_u64k1_wrapper_vec_scal_mul_ur(mpfq_vbase_ptr, mpfq_u64k1_dst_vec_ur, mpfq_u64k1_src_vec, mpfq_u64k1_src_elt, unsigned long);
mpfq_u64k1_wrapper_vec_scal_mul_ur(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec_ur w MAYBE_UNUSED,mpfq_u64k1_src_vec u MAYBE_UNUSED,mpfq_u64k1_src_elt c MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)686 static void mpfq_u64k1_wrapper_vec_scal_mul_ur(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec_ur w MAYBE_UNUSED, mpfq_u64k1_src_vec u MAYBE_UNUSED, mpfq_u64k1_src_elt c MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
687 {
688 mpfq_u64k1_vec_scal_mul_ur(vbase->obj, w, u, c, n);
689 }
690
691 static void mpfq_u64k1_wrapper_vec_ur_rev(mpfq_vbase_ptr, mpfq_u64k1_dst_vec_ur, mpfq_u64k1_src_vec_ur, unsigned long);
mpfq_u64k1_wrapper_vec_ur_rev(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec_ur w MAYBE_UNUSED,mpfq_u64k1_src_vec_ur u MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)692 static void mpfq_u64k1_wrapper_vec_ur_rev(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec_ur w MAYBE_UNUSED, mpfq_u64k1_src_vec_ur u MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
693 {
694 mpfq_u64k1_vec_ur_rev(vbase->obj, w, u, n);
695 }
696
697 static void mpfq_u64k1_wrapper_vec_ur_neg(mpfq_vbase_ptr, mpfq_u64k1_dst_vec_ur, mpfq_u64k1_src_vec_ur, unsigned long);
mpfq_u64k1_wrapper_vec_ur_neg(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec_ur w MAYBE_UNUSED,mpfq_u64k1_src_vec_ur u MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)698 static void mpfq_u64k1_wrapper_vec_ur_neg(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec_ur w MAYBE_UNUSED, mpfq_u64k1_src_vec_ur u MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
699 {
700 mpfq_u64k1_vec_ur_neg(vbase->obj, w, u, n);
701 }
702
703 static void mpfq_u64k1_wrapper_vec_ur_sub(mpfq_vbase_ptr, mpfq_u64k1_dst_vec_ur, mpfq_u64k1_src_vec_ur, mpfq_u64k1_src_vec_ur, unsigned long);
mpfq_u64k1_wrapper_vec_ur_sub(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec_ur w MAYBE_UNUSED,mpfq_u64k1_src_vec_ur u MAYBE_UNUSED,mpfq_u64k1_src_vec_ur v MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)704 static void mpfq_u64k1_wrapper_vec_ur_sub(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec_ur w MAYBE_UNUSED, mpfq_u64k1_src_vec_ur u MAYBE_UNUSED, mpfq_u64k1_src_vec_ur v MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
705 {
706 mpfq_u64k1_vec_ur_sub(vbase->obj, w, u, v, n);
707 }
708
709 static void mpfq_u64k1_wrapper_vec_ur_add(mpfq_vbase_ptr, mpfq_u64k1_dst_vec_ur, mpfq_u64k1_src_vec_ur, mpfq_u64k1_src_vec_ur, unsigned long);
mpfq_u64k1_wrapper_vec_ur_add(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec_ur w MAYBE_UNUSED,mpfq_u64k1_src_vec_ur u MAYBE_UNUSED,mpfq_u64k1_src_vec_ur v MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)710 static void mpfq_u64k1_wrapper_vec_ur_add(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec_ur w MAYBE_UNUSED, mpfq_u64k1_src_vec_ur u MAYBE_UNUSED, mpfq_u64k1_src_vec_ur v MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
711 {
712 mpfq_u64k1_vec_ur_add(vbase->obj, w, u, v, n);
713 }
714
715 static void mpfq_u64k1_wrapper_vec_ur_getcoeff(mpfq_vbase_ptr, mpfq_u64k1_dst_elt_ur, mpfq_u64k1_src_vec_ur, unsigned long);
mpfq_u64k1_wrapper_vec_ur_getcoeff(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt_ur x MAYBE_UNUSED,mpfq_u64k1_src_vec_ur w MAYBE_UNUSED,unsigned long i MAYBE_UNUSED)716 static void mpfq_u64k1_wrapper_vec_ur_getcoeff(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt_ur x MAYBE_UNUSED, mpfq_u64k1_src_vec_ur w MAYBE_UNUSED, unsigned long i MAYBE_UNUSED)
717 {
718 mpfq_u64k1_vec_ur_getcoeff(vbase->obj, x, w, i);
719 }
720
721 static void mpfq_u64k1_wrapper_vec_ur_setcoeff(mpfq_vbase_ptr, mpfq_u64k1_dst_vec_ur, mpfq_u64k1_src_elt_ur, unsigned long);
mpfq_u64k1_wrapper_vec_ur_setcoeff(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec_ur w MAYBE_UNUSED,mpfq_u64k1_src_elt_ur x MAYBE_UNUSED,unsigned long i MAYBE_UNUSED)722 static void mpfq_u64k1_wrapper_vec_ur_setcoeff(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec_ur w MAYBE_UNUSED, mpfq_u64k1_src_elt_ur x MAYBE_UNUSED, unsigned long i MAYBE_UNUSED)
723 {
724 mpfq_u64k1_vec_ur_setcoeff(vbase->obj, w, x, i);
725 }
726
727 static void mpfq_u64k1_wrapper_vec_ur_set(mpfq_vbase_ptr, mpfq_u64k1_dst_vec_ur, mpfq_u64k1_src_vec_ur, unsigned long);
mpfq_u64k1_wrapper_vec_ur_set(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec_ur r MAYBE_UNUSED,mpfq_u64k1_src_vec_ur s MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)728 static void mpfq_u64k1_wrapper_vec_ur_set(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec_ur r MAYBE_UNUSED, mpfq_u64k1_src_vec_ur s MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
729 {
730 mpfq_u64k1_vec_ur_set(vbase->obj, r, s, n);
731 }
732
733 static void mpfq_u64k1_wrapper_vec_ur_clear(mpfq_vbase_ptr, mpfq_u64k1_vec_ur *, unsigned long);
mpfq_u64k1_wrapper_vec_ur_clear(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_vec_ur * v MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)734 static void mpfq_u64k1_wrapper_vec_ur_clear(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_vec_ur * v MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
735 {
736 mpfq_u64k1_vec_ur_clear(vbase->obj, v, n);
737 }
738
739 static void mpfq_u64k1_wrapper_vec_ur_reinit(mpfq_vbase_ptr, mpfq_u64k1_vec_ur *, unsigned long, unsigned long);
mpfq_u64k1_wrapper_vec_ur_reinit(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_vec_ur * v MAYBE_UNUSED,unsigned long n MAYBE_UNUSED,unsigned long m MAYBE_UNUSED)740 static void mpfq_u64k1_wrapper_vec_ur_reinit(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_vec_ur * v MAYBE_UNUSED, unsigned long n MAYBE_UNUSED, unsigned long m MAYBE_UNUSED)
741 {
742 mpfq_u64k1_vec_ur_reinit(vbase->obj, v, n, m);
743 }
744
745 static void mpfq_u64k1_wrapper_vec_ur_set_vec(mpfq_vbase_ptr, mpfq_u64k1_dst_vec_ur, mpfq_u64k1_src_vec, unsigned long);
mpfq_u64k1_wrapper_vec_ur_set_vec(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec_ur w MAYBE_UNUSED,mpfq_u64k1_src_vec u MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)746 static void mpfq_u64k1_wrapper_vec_ur_set_vec(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec_ur w MAYBE_UNUSED, mpfq_u64k1_src_vec u MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
747 {
748 mpfq_u64k1_vec_ur_set_vec(vbase->obj, w, u, n);
749 }
750
751 static void mpfq_u64k1_wrapper_vec_ur_set_zero(mpfq_vbase_ptr, mpfq_u64k1_dst_vec_ur, unsigned long);
mpfq_u64k1_wrapper_vec_ur_set_zero(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec_ur r MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)752 static void mpfq_u64k1_wrapper_vec_ur_set_zero(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec_ur r MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
753 {
754 mpfq_u64k1_vec_ur_set_zero(vbase->obj, r, n);
755 }
756
757 static void mpfq_u64k1_wrapper_vec_ur_init(mpfq_vbase_ptr, mpfq_u64k1_vec_ur *, unsigned long);
mpfq_u64k1_wrapper_vec_ur_init(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_vec_ur * v MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)758 static void mpfq_u64k1_wrapper_vec_ur_init(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_vec_ur * v MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
759 {
760 mpfq_u64k1_vec_ur_init(vbase->obj, v, n);
761 }
762
763 static long mpfq_u64k1_wrapper_vec_simd_find_first_set(mpfq_vbase_ptr, mpfq_u64k1_src_vec, unsigned long);
mpfq_u64k1_wrapper_vec_simd_find_first_set(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_src_vec v MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)764 static long mpfq_u64k1_wrapper_vec_simd_find_first_set(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_src_vec v MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
765 {
766 return mpfq_u64k1_vec_simd_find_first_set(vbase->obj, v, n);
767 }
768
769 static long mpfq_u64k1_wrapper_vec_simd_hamming_weight(mpfq_vbase_ptr, mpfq_u64k1_src_vec, unsigned long);
mpfq_u64k1_wrapper_vec_simd_hamming_weight(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_src_vec v MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)770 static long mpfq_u64k1_wrapper_vec_simd_hamming_weight(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_src_vec v MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
771 {
772 return mpfq_u64k1_vec_simd_hamming_weight(vbase->obj, v, n);
773 }
774
775 static long mpfq_u64k1_wrapper_vec_find_first_set(mpfq_vbase_ptr, mpfq_u64k1_src_vec, unsigned long);
mpfq_u64k1_wrapper_vec_find_first_set(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_src_vec v MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)776 static long mpfq_u64k1_wrapper_vec_find_first_set(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_src_vec v MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
777 {
778 return mpfq_u64k1_vec_find_first_set(vbase->obj, v, n);
779 }
780
781 static long mpfq_u64k1_wrapper_vec_hamming_weight(mpfq_vbase_ptr, mpfq_u64k1_src_vec, unsigned long);
mpfq_u64k1_wrapper_vec_hamming_weight(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_src_vec v MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)782 static long mpfq_u64k1_wrapper_vec_hamming_weight(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_src_vec v MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
783 {
784 return mpfq_u64k1_vec_hamming_weight(vbase->obj, v, n);
785 }
786
787 static long mpfq_u64k1_wrapper_vec_scan(mpfq_vbase_ptr, mpfq_u64k1_vec *, unsigned long *);
mpfq_u64k1_wrapper_vec_scan(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_vec * w MAYBE_UNUSED,unsigned long * n MAYBE_UNUSED)788 static long mpfq_u64k1_wrapper_vec_scan(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_vec * w MAYBE_UNUSED, unsigned long * n MAYBE_UNUSED)
789 {
790 return mpfq_u64k1_vec_scan(vbase->obj, w, n);
791 }
792
793 static long mpfq_u64k1_wrapper_vec_fscan(mpfq_vbase_ptr, FILE *, mpfq_u64k1_vec *, unsigned long *);
mpfq_u64k1_wrapper_vec_fscan(mpfq_vbase_ptr vbase MAYBE_UNUSED,FILE * file MAYBE_UNUSED,mpfq_u64k1_vec * w MAYBE_UNUSED,unsigned long * n MAYBE_UNUSED)794 static long mpfq_u64k1_wrapper_vec_fscan(mpfq_vbase_ptr vbase MAYBE_UNUSED, FILE * file MAYBE_UNUSED, mpfq_u64k1_vec * w MAYBE_UNUSED, unsigned long * n MAYBE_UNUSED)
795 {
796 return mpfq_u64k1_vec_fscan(vbase->obj, file, w, n);
797 }
798
799 static long mpfq_u64k1_wrapper_vec_sscan(mpfq_vbase_ptr, mpfq_u64k1_vec *, unsigned long *, const char *);
mpfq_u64k1_wrapper_vec_sscan(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_vec * w MAYBE_UNUSED,unsigned long * n MAYBE_UNUSED,const char * str MAYBE_UNUSED)800 static long mpfq_u64k1_wrapper_vec_sscan(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_vec * w MAYBE_UNUSED, unsigned long * n MAYBE_UNUSED, const char * str MAYBE_UNUSED)
801 {
802 return mpfq_u64k1_vec_sscan(vbase->obj, w, n, str);
803 }
804
805 static long mpfq_u64k1_wrapper_vec_print(mpfq_vbase_ptr, mpfq_u64k1_src_vec, unsigned long);
mpfq_u64k1_wrapper_vec_print(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_src_vec w MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)806 static long mpfq_u64k1_wrapper_vec_print(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_src_vec w MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
807 {
808 return mpfq_u64k1_vec_print(vbase->obj, w, n);
809 }
810
811 static long mpfq_u64k1_wrapper_vec_fprint(mpfq_vbase_ptr, FILE *, mpfq_u64k1_src_vec, unsigned long);
mpfq_u64k1_wrapper_vec_fprint(mpfq_vbase_ptr vbase MAYBE_UNUSED,FILE * file MAYBE_UNUSED,mpfq_u64k1_src_vec w MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)812 static long mpfq_u64k1_wrapper_vec_fprint(mpfq_vbase_ptr vbase MAYBE_UNUSED, FILE * file MAYBE_UNUSED, mpfq_u64k1_src_vec w MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
813 {
814 return mpfq_u64k1_vec_fprint(vbase->obj, file, w, n);
815 }
816
817 static long mpfq_u64k1_wrapper_vec_asprint(mpfq_vbase_ptr, char * *, mpfq_u64k1_src_vec, unsigned long);
mpfq_u64k1_wrapper_vec_asprint(mpfq_vbase_ptr vbase MAYBE_UNUSED,char ** pstr MAYBE_UNUSED,mpfq_u64k1_src_vec w MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)818 static long mpfq_u64k1_wrapper_vec_asprint(mpfq_vbase_ptr vbase MAYBE_UNUSED, char * * pstr MAYBE_UNUSED, mpfq_u64k1_src_vec w MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
819 {
820 return mpfq_u64k1_vec_asprint(vbase->obj, pstr, w, n);
821 }
822
823 static mpfq_u64k1_src_elt mpfq_u64k1_wrapper_vec_coeff_ptr_const(mpfq_vbase_ptr, mpfq_u64k1_src_vec, long);
mpfq_u64k1_wrapper_vec_coeff_ptr_const(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_src_vec v MAYBE_UNUSED,long i MAYBE_UNUSED)824 static mpfq_u64k1_src_elt mpfq_u64k1_wrapper_vec_coeff_ptr_const(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_src_vec v MAYBE_UNUSED, long i MAYBE_UNUSED)
825 {
826 return mpfq_u64k1_vec_coeff_ptr_const(vbase->obj, v, i);
827 }
828
829 static mpfq_u64k1_dst_elt mpfq_u64k1_wrapper_vec_coeff_ptr(mpfq_vbase_ptr, mpfq_u64k1_dst_vec, long);
mpfq_u64k1_wrapper_vec_coeff_ptr(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec v MAYBE_UNUSED,long i MAYBE_UNUSED)830 static mpfq_u64k1_dst_elt mpfq_u64k1_wrapper_vec_coeff_ptr(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec v MAYBE_UNUSED, long i MAYBE_UNUSED)
831 {
832 return mpfq_u64k1_vec_coeff_ptr(vbase->obj, v, i);
833 }
834
835 static mpfq_u64k1_src_vec mpfq_u64k1_wrapper_vec_subvec_const(mpfq_vbase_ptr, mpfq_u64k1_src_vec, long);
mpfq_u64k1_wrapper_vec_subvec_const(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_src_vec v MAYBE_UNUSED,long i MAYBE_UNUSED)836 static mpfq_u64k1_src_vec mpfq_u64k1_wrapper_vec_subvec_const(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_src_vec v MAYBE_UNUSED, long i MAYBE_UNUSED)
837 {
838 return mpfq_u64k1_vec_subvec_const(vbase->obj, v, i);
839 }
840
841 static mpfq_u64k1_dst_vec mpfq_u64k1_wrapper_vec_subvec(mpfq_vbase_ptr, mpfq_u64k1_dst_vec, long);
mpfq_u64k1_wrapper_vec_subvec(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec v MAYBE_UNUSED,long i MAYBE_UNUSED)842 static mpfq_u64k1_dst_vec mpfq_u64k1_wrapper_vec_subvec(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec v MAYBE_UNUSED, long i MAYBE_UNUSED)
843 {
844 return mpfq_u64k1_vec_subvec(vbase->obj, v, i);
845 }
846
847 static long mpfq_u64k1_wrapper_vec_is_zero(mpfq_vbase_ptr, mpfq_u64k1_src_vec, unsigned long);
mpfq_u64k1_wrapper_vec_is_zero(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_src_vec v MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)848 static long mpfq_u64k1_wrapper_vec_is_zero(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_src_vec v MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
849 {
850 return mpfq_u64k1_vec_is_zero(vbase->obj, v, n);
851 }
852
853 static long mpfq_u64k1_wrapper_vec_cmp(mpfq_vbase_ptr, mpfq_u64k1_src_vec, mpfq_u64k1_src_vec, unsigned long);
mpfq_u64k1_wrapper_vec_cmp(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_src_vec u MAYBE_UNUSED,mpfq_u64k1_src_vec v MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)854 static long mpfq_u64k1_wrapper_vec_cmp(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_src_vec u MAYBE_UNUSED, mpfq_u64k1_src_vec v MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
855 {
856 return mpfq_u64k1_vec_cmp(vbase->obj, u, v, n);
857 }
858
859 static void mpfq_u64k1_wrapper_vec_random2(mpfq_vbase_ptr, mpfq_u64k1_dst_vec, unsigned long, gmp_randstate_t);
mpfq_u64k1_wrapper_vec_random2(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec w MAYBE_UNUSED,unsigned long n MAYBE_UNUSED,gmp_randstate_t state MAYBE_UNUSED)860 static void mpfq_u64k1_wrapper_vec_random2(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec w MAYBE_UNUSED, unsigned long n MAYBE_UNUSED, gmp_randstate_t state MAYBE_UNUSED)
861 {
862 mpfq_u64k1_vec_random2(vbase->obj, w, n, state);
863 }
864
865 static void mpfq_u64k1_wrapper_vec_random(mpfq_vbase_ptr, mpfq_u64k1_dst_vec, unsigned long, gmp_randstate_t);
mpfq_u64k1_wrapper_vec_random(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec w MAYBE_UNUSED,unsigned long n MAYBE_UNUSED,gmp_randstate_t state MAYBE_UNUSED)866 static void mpfq_u64k1_wrapper_vec_random(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec w MAYBE_UNUSED, unsigned long n MAYBE_UNUSED, gmp_randstate_t state MAYBE_UNUSED)
867 {
868 mpfq_u64k1_vec_random(vbase->obj, w, n, state);
869 }
870
871 static void mpfq_u64k1_wrapper_vec_scal_mul(mpfq_vbase_ptr, mpfq_u64k1_dst_vec, mpfq_u64k1_src_vec, mpfq_u64k1_src_elt, unsigned long);
mpfq_u64k1_wrapper_vec_scal_mul(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec w MAYBE_UNUSED,mpfq_u64k1_src_vec u MAYBE_UNUSED,mpfq_u64k1_src_elt c MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)872 static void mpfq_u64k1_wrapper_vec_scal_mul(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec w MAYBE_UNUSED, mpfq_u64k1_src_vec u MAYBE_UNUSED, mpfq_u64k1_src_elt c MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
873 {
874 mpfq_u64k1_vec_scal_mul(vbase->obj, w, u, c, n);
875 }
876
877 static void mpfq_u64k1_wrapper_vec_sub(mpfq_vbase_ptr, mpfq_u64k1_dst_vec, mpfq_u64k1_src_vec, mpfq_u64k1_src_vec, unsigned long);
mpfq_u64k1_wrapper_vec_sub(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec w MAYBE_UNUSED,mpfq_u64k1_src_vec u MAYBE_UNUSED,mpfq_u64k1_src_vec v MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)878 static void mpfq_u64k1_wrapper_vec_sub(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec w MAYBE_UNUSED, mpfq_u64k1_src_vec u MAYBE_UNUSED, mpfq_u64k1_src_vec v MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
879 {
880 mpfq_u64k1_vec_sub(vbase->obj, w, u, v, n);
881 }
882
883 static void mpfq_u64k1_wrapper_vec_rev(mpfq_vbase_ptr, mpfq_u64k1_dst_vec, mpfq_u64k1_src_vec, unsigned long);
mpfq_u64k1_wrapper_vec_rev(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec w MAYBE_UNUSED,mpfq_u64k1_src_vec u MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)884 static void mpfq_u64k1_wrapper_vec_rev(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec w MAYBE_UNUSED, mpfq_u64k1_src_vec u MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
885 {
886 mpfq_u64k1_vec_rev(vbase->obj, w, u, n);
887 }
888
889 static void mpfq_u64k1_wrapper_vec_neg(mpfq_vbase_ptr, mpfq_u64k1_dst_vec, mpfq_u64k1_src_vec, unsigned long);
mpfq_u64k1_wrapper_vec_neg(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec w MAYBE_UNUSED,mpfq_u64k1_src_vec u MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)890 static void mpfq_u64k1_wrapper_vec_neg(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec w MAYBE_UNUSED, mpfq_u64k1_src_vec u MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
891 {
892 mpfq_u64k1_vec_neg(vbase->obj, w, u, n);
893 }
894
895 static void mpfq_u64k1_wrapper_vec_add(mpfq_vbase_ptr, mpfq_u64k1_dst_vec, mpfq_u64k1_src_vec, mpfq_u64k1_src_vec, unsigned long);
mpfq_u64k1_wrapper_vec_add(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec w MAYBE_UNUSED,mpfq_u64k1_src_vec u MAYBE_UNUSED,mpfq_u64k1_src_vec v MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)896 static void mpfq_u64k1_wrapper_vec_add(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec w MAYBE_UNUSED, mpfq_u64k1_src_vec u MAYBE_UNUSED, mpfq_u64k1_src_vec v MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
897 {
898 mpfq_u64k1_vec_add(vbase->obj, w, u, v, n);
899 }
900
901 static void mpfq_u64k1_wrapper_vec_getcoeff(mpfq_vbase_ptr, mpfq_u64k1_dst_elt, mpfq_u64k1_src_vec, unsigned long);
mpfq_u64k1_wrapper_vec_getcoeff(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt x MAYBE_UNUSED,mpfq_u64k1_src_vec w MAYBE_UNUSED,unsigned long i MAYBE_UNUSED)902 static void mpfq_u64k1_wrapper_vec_getcoeff(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt x MAYBE_UNUSED, mpfq_u64k1_src_vec w MAYBE_UNUSED, unsigned long i MAYBE_UNUSED)
903 {
904 mpfq_u64k1_vec_getcoeff(vbase->obj, x, w, i);
905 }
906
907 static void mpfq_u64k1_wrapper_vec_setcoeff(mpfq_vbase_ptr, mpfq_u64k1_dst_vec, mpfq_u64k1_src_elt, unsigned long);
mpfq_u64k1_wrapper_vec_setcoeff(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec w MAYBE_UNUSED,mpfq_u64k1_src_elt x MAYBE_UNUSED,unsigned long i MAYBE_UNUSED)908 static void mpfq_u64k1_wrapper_vec_setcoeff(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec w MAYBE_UNUSED, mpfq_u64k1_src_elt x MAYBE_UNUSED, unsigned long i MAYBE_UNUSED)
909 {
910 mpfq_u64k1_vec_setcoeff(vbase->obj, w, x, i);
911 }
912
913 static void mpfq_u64k1_wrapper_vec_set_zero(mpfq_vbase_ptr, mpfq_u64k1_dst_vec, unsigned long);
mpfq_u64k1_wrapper_vec_set_zero(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec r MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)914 static void mpfq_u64k1_wrapper_vec_set_zero(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec r MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
915 {
916 mpfq_u64k1_vec_set_zero(vbase->obj, r, n);
917 }
918
919 static void mpfq_u64k1_wrapper_vec_set(mpfq_vbase_ptr, mpfq_u64k1_dst_vec, mpfq_u64k1_src_vec, unsigned long);
mpfq_u64k1_wrapper_vec_set(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_vec r MAYBE_UNUSED,mpfq_u64k1_src_vec s MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)920 static void mpfq_u64k1_wrapper_vec_set(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_vec r MAYBE_UNUSED, mpfq_u64k1_src_vec s MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
921 {
922 mpfq_u64k1_vec_set(vbase->obj, r, s, n);
923 }
924
925 static void mpfq_u64k1_wrapper_vec_clear(mpfq_vbase_ptr, mpfq_u64k1_vec *, unsigned long);
mpfq_u64k1_wrapper_vec_clear(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_vec * v MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)926 static void mpfq_u64k1_wrapper_vec_clear(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_vec * v MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
927 {
928 mpfq_u64k1_vec_clear(vbase->obj, v, n);
929 }
930
931 static void mpfq_u64k1_wrapper_vec_reinit(mpfq_vbase_ptr, mpfq_u64k1_vec *, unsigned long, unsigned long);
mpfq_u64k1_wrapper_vec_reinit(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_vec * v MAYBE_UNUSED,unsigned long n MAYBE_UNUSED,unsigned long m MAYBE_UNUSED)932 static void mpfq_u64k1_wrapper_vec_reinit(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_vec * v MAYBE_UNUSED, unsigned long n MAYBE_UNUSED, unsigned long m MAYBE_UNUSED)
933 {
934 mpfq_u64k1_vec_reinit(vbase->obj, v, n, m);
935 }
936
937 static void mpfq_u64k1_wrapper_vec_init(mpfq_vbase_ptr, mpfq_u64k1_vec *, unsigned long);
mpfq_u64k1_wrapper_vec_init(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_vec * v MAYBE_UNUSED,unsigned long n MAYBE_UNUSED)938 static void mpfq_u64k1_wrapper_vec_init(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_vec * v MAYBE_UNUSED, unsigned long n MAYBE_UNUSED)
939 {
940 mpfq_u64k1_vec_init(vbase->obj, v, n);
941 }
942
943 static int mpfq_u64k1_wrapper_scan(mpfq_vbase_ptr, mpfq_u64k1_dst_elt);
mpfq_u64k1_wrapper_scan(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt x MAYBE_UNUSED)944 static int mpfq_u64k1_wrapper_scan(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt x MAYBE_UNUSED)
945 {
946 return mpfq_u64k1_scan(vbase->obj, x);
947 }
948
949 static int mpfq_u64k1_wrapper_fscan(mpfq_vbase_ptr, FILE *, mpfq_u64k1_dst_elt);
mpfq_u64k1_wrapper_fscan(mpfq_vbase_ptr vbase MAYBE_UNUSED,FILE * file MAYBE_UNUSED,mpfq_u64k1_dst_elt z MAYBE_UNUSED)950 static int mpfq_u64k1_wrapper_fscan(mpfq_vbase_ptr vbase MAYBE_UNUSED, FILE * file MAYBE_UNUSED, mpfq_u64k1_dst_elt z MAYBE_UNUSED)
951 {
952 return mpfq_u64k1_fscan(vbase->obj, file, z);
953 }
954
955 static int mpfq_u64k1_wrapper_sscan(mpfq_vbase_ptr, mpfq_u64k1_dst_elt, const char *);
mpfq_u64k1_wrapper_sscan(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt z MAYBE_UNUSED,const char * str MAYBE_UNUSED)956 static int mpfq_u64k1_wrapper_sscan(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt z MAYBE_UNUSED, const char * str MAYBE_UNUSED)
957 {
958 return mpfq_u64k1_sscan(vbase->obj, z, str);
959 }
960
961 static int mpfq_u64k1_wrapper_print(mpfq_vbase_ptr, mpfq_u64k1_src_elt);
mpfq_u64k1_wrapper_print(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_src_elt x MAYBE_UNUSED)962 static int mpfq_u64k1_wrapper_print(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_src_elt x MAYBE_UNUSED)
963 {
964 return mpfq_u64k1_print(vbase->obj, x);
965 }
966
967 static int mpfq_u64k1_wrapper_fprint(mpfq_vbase_ptr, FILE *, mpfq_u64k1_src_elt);
mpfq_u64k1_wrapper_fprint(mpfq_vbase_ptr vbase MAYBE_UNUSED,FILE * file MAYBE_UNUSED,mpfq_u64k1_src_elt x MAYBE_UNUSED)968 static int mpfq_u64k1_wrapper_fprint(mpfq_vbase_ptr vbase MAYBE_UNUSED, FILE * file MAYBE_UNUSED, mpfq_u64k1_src_elt x MAYBE_UNUSED)
969 {
970 return mpfq_u64k1_fprint(vbase->obj, file, x);
971 }
972
973 static int mpfq_u64k1_wrapper_asprint(mpfq_vbase_ptr, char * *, mpfq_u64k1_src_elt);
mpfq_u64k1_wrapper_asprint(mpfq_vbase_ptr vbase MAYBE_UNUSED,char ** ps MAYBE_UNUSED,mpfq_u64k1_src_elt x MAYBE_UNUSED)974 static int mpfq_u64k1_wrapper_asprint(mpfq_vbase_ptr vbase MAYBE_UNUSED, char * * ps MAYBE_UNUSED, mpfq_u64k1_src_elt x MAYBE_UNUSED)
975 {
976 return mpfq_u64k1_asprint(vbase->obj, ps, x);
977 }
978
979 static int mpfq_u64k1_wrapper_is_zero(mpfq_vbase_ptr, mpfq_u64k1_src_elt);
mpfq_u64k1_wrapper_is_zero(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_src_elt r MAYBE_UNUSED)980 static int mpfq_u64k1_wrapper_is_zero(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_src_elt r MAYBE_UNUSED)
981 {
982 return mpfq_u64k1_is_zero(vbase->obj, r);
983 }
984
985 static int mpfq_u64k1_wrapper_cmp(mpfq_vbase_ptr, mpfq_u64k1_src_elt, mpfq_u64k1_src_elt);
mpfq_u64k1_wrapper_cmp(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_src_elt r MAYBE_UNUSED,mpfq_u64k1_src_elt s MAYBE_UNUSED)986 static int mpfq_u64k1_wrapper_cmp(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_src_elt r MAYBE_UNUSED, mpfq_u64k1_src_elt s MAYBE_UNUSED)
987 {
988 return mpfq_u64k1_cmp(vbase->obj, r, s);
989 }
990
991 static void mpfq_u64k1_wrapper_reduce(mpfq_vbase_ptr, mpfq_u64k1_dst_elt, mpfq_u64k1_dst_elt_ur);
mpfq_u64k1_wrapper_reduce(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt r MAYBE_UNUSED,mpfq_u64k1_dst_elt_ur s MAYBE_UNUSED)992 static void mpfq_u64k1_wrapper_reduce(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt r MAYBE_UNUSED, mpfq_u64k1_dst_elt_ur s MAYBE_UNUSED)
993 {
994 mpfq_u64k1_reduce(vbase->obj, r, s);
995 }
996
997 static void mpfq_u64k1_wrapper_mul_ur(mpfq_vbase_ptr, mpfq_u64k1_dst_elt_ur, mpfq_u64k1_src_elt, mpfq_u64k1_src_elt);
mpfq_u64k1_wrapper_mul_ur(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt_ur r MAYBE_UNUSED,mpfq_u64k1_src_elt s1 MAYBE_UNUSED,mpfq_u64k1_src_elt s2 MAYBE_UNUSED)998 static void mpfq_u64k1_wrapper_mul_ur(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt_ur r MAYBE_UNUSED, mpfq_u64k1_src_elt s1 MAYBE_UNUSED, mpfq_u64k1_src_elt s2 MAYBE_UNUSED)
999 {
1000 mpfq_u64k1_mul_ur(vbase->obj, r, s1, s2);
1001 }
1002
1003 static void mpfq_u64k1_wrapper_elt_ur_sub(mpfq_vbase_ptr, mpfq_u64k1_dst_elt_ur, mpfq_u64k1_src_elt_ur, mpfq_u64k1_src_elt_ur);
mpfq_u64k1_wrapper_elt_ur_sub(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt_ur r MAYBE_UNUSED,mpfq_u64k1_src_elt_ur s1 MAYBE_UNUSED,mpfq_u64k1_src_elt_ur s2 MAYBE_UNUSED)1004 static void mpfq_u64k1_wrapper_elt_ur_sub(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt_ur r MAYBE_UNUSED, mpfq_u64k1_src_elt_ur s1 MAYBE_UNUSED, mpfq_u64k1_src_elt_ur s2 MAYBE_UNUSED)
1005 {
1006 mpfq_u64k1_elt_ur_sub(vbase->obj, r, s1, s2);
1007 }
1008
1009 static void mpfq_u64k1_wrapper_elt_ur_neg(mpfq_vbase_ptr, mpfq_u64k1_dst_elt_ur, mpfq_u64k1_src_elt_ur);
mpfq_u64k1_wrapper_elt_ur_neg(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt_ur r MAYBE_UNUSED,mpfq_u64k1_src_elt_ur s MAYBE_UNUSED)1010 static void mpfq_u64k1_wrapper_elt_ur_neg(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt_ur r MAYBE_UNUSED, mpfq_u64k1_src_elt_ur s MAYBE_UNUSED)
1011 {
1012 mpfq_u64k1_elt_ur_neg(vbase->obj, r, s);
1013 }
1014
1015 static void mpfq_u64k1_wrapper_elt_ur_add(mpfq_vbase_ptr, mpfq_u64k1_dst_elt_ur, mpfq_u64k1_src_elt_ur, mpfq_u64k1_src_elt_ur);
mpfq_u64k1_wrapper_elt_ur_add(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt_ur r MAYBE_UNUSED,mpfq_u64k1_src_elt_ur s1 MAYBE_UNUSED,mpfq_u64k1_src_elt_ur s2 MAYBE_UNUSED)1016 static void mpfq_u64k1_wrapper_elt_ur_add(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt_ur r MAYBE_UNUSED, mpfq_u64k1_src_elt_ur s1 MAYBE_UNUSED, mpfq_u64k1_src_elt_ur s2 MAYBE_UNUSED)
1017 {
1018 mpfq_u64k1_elt_ur_add(vbase->obj, r, s1, s2);
1019 }
1020
1021 static void mpfq_u64k1_wrapper_elt_ur_set_zero(mpfq_vbase_ptr, mpfq_u64k1_dst_elt_ur);
mpfq_u64k1_wrapper_elt_ur_set_zero(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt_ur r MAYBE_UNUSED)1022 static void mpfq_u64k1_wrapper_elt_ur_set_zero(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt_ur r MAYBE_UNUSED)
1023 {
1024 mpfq_u64k1_elt_ur_set_zero(vbase->obj, r);
1025 }
1026
1027 static void mpfq_u64k1_wrapper_elt_ur_set_elt(mpfq_vbase_ptr, mpfq_u64k1_dst_elt_ur, mpfq_u64k1_src_elt);
mpfq_u64k1_wrapper_elt_ur_set_elt(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt_ur r MAYBE_UNUSED,mpfq_u64k1_src_elt s MAYBE_UNUSED)1028 static void mpfq_u64k1_wrapper_elt_ur_set_elt(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt_ur r MAYBE_UNUSED, mpfq_u64k1_src_elt s MAYBE_UNUSED)
1029 {
1030 mpfq_u64k1_elt_ur_set_elt(vbase->obj, r, s);
1031 }
1032
1033 static void mpfq_u64k1_wrapper_elt_ur_set(mpfq_vbase_ptr, mpfq_u64k1_dst_elt_ur, mpfq_u64k1_src_elt_ur);
mpfq_u64k1_wrapper_elt_ur_set(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt_ur r MAYBE_UNUSED,mpfq_u64k1_src_elt_ur s MAYBE_UNUSED)1034 static void mpfq_u64k1_wrapper_elt_ur_set(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt_ur r MAYBE_UNUSED, mpfq_u64k1_src_elt_ur s MAYBE_UNUSED)
1035 {
1036 mpfq_u64k1_elt_ur_set(vbase->obj, r, s);
1037 }
1038
1039 static ptrdiff_t mpfq_u64k1_wrapper_elt_ur_stride(mpfq_vbase_ptr);
mpfq_u64k1_wrapper_elt_ur_stride(mpfq_vbase_ptr vbase MAYBE_UNUSED)1040 static ptrdiff_t mpfq_u64k1_wrapper_elt_ur_stride(mpfq_vbase_ptr vbase MAYBE_UNUSED)
1041 {
1042 return mpfq_u64k1_elt_ur_stride(vbase->obj);
1043 }
1044
1045 static void mpfq_u64k1_wrapper_elt_ur_clear(mpfq_vbase_ptr, mpfq_u64k1_elt_ur *);
mpfq_u64k1_wrapper_elt_ur_clear(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_elt_ur * px MAYBE_UNUSED)1046 static void mpfq_u64k1_wrapper_elt_ur_clear(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_elt_ur * px MAYBE_UNUSED)
1047 {
1048 mpfq_u64k1_elt_ur_clear(vbase->obj, px);
1049 }
1050
1051 static void mpfq_u64k1_wrapper_elt_ur_init(mpfq_vbase_ptr, mpfq_u64k1_elt_ur *);
mpfq_u64k1_wrapper_elt_ur_init(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_elt_ur * px MAYBE_UNUSED)1052 static void mpfq_u64k1_wrapper_elt_ur_init(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_elt_ur * px MAYBE_UNUSED)
1053 {
1054 mpfq_u64k1_elt_ur_init(vbase->obj, px);
1055 }
1056
1057 static int mpfq_u64k1_wrapper_inv(mpfq_vbase_ptr, mpfq_u64k1_dst_elt, mpfq_u64k1_src_elt);
mpfq_u64k1_wrapper_inv(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt r MAYBE_UNUSED,mpfq_u64k1_src_elt s MAYBE_UNUSED)1058 static int mpfq_u64k1_wrapper_inv(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt r MAYBE_UNUSED, mpfq_u64k1_src_elt s MAYBE_UNUSED)
1059 {
1060 return mpfq_u64k1_inv(vbase->obj, r, s);
1061 }
1062
1063 static void mpfq_u64k1_wrapper_mul(mpfq_vbase_ptr, mpfq_u64k1_dst_elt, mpfq_u64k1_src_elt, mpfq_u64k1_src_elt);
mpfq_u64k1_wrapper_mul(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt r MAYBE_UNUSED,mpfq_u64k1_src_elt s1 MAYBE_UNUSED,mpfq_u64k1_src_elt s2 MAYBE_UNUSED)1064 static void mpfq_u64k1_wrapper_mul(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt r MAYBE_UNUSED, mpfq_u64k1_src_elt s1 MAYBE_UNUSED, mpfq_u64k1_src_elt s2 MAYBE_UNUSED)
1065 {
1066 mpfq_u64k1_mul(vbase->obj, r, s1, s2);
1067 }
1068
1069 static void mpfq_u64k1_wrapper_neg(mpfq_vbase_ptr, mpfq_u64k1_dst_elt, mpfq_u64k1_src_elt);
mpfq_u64k1_wrapper_neg(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt r MAYBE_UNUSED,mpfq_u64k1_src_elt s MAYBE_UNUSED)1070 static void mpfq_u64k1_wrapper_neg(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt r MAYBE_UNUSED, mpfq_u64k1_src_elt s MAYBE_UNUSED)
1071 {
1072 mpfq_u64k1_neg(vbase->obj, r, s);
1073 }
1074
1075 static void mpfq_u64k1_wrapper_sub(mpfq_vbase_ptr, mpfq_u64k1_dst_elt, mpfq_u64k1_src_elt, mpfq_u64k1_src_elt);
mpfq_u64k1_wrapper_sub(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt r MAYBE_UNUSED,mpfq_u64k1_src_elt s1 MAYBE_UNUSED,mpfq_u64k1_src_elt s2 MAYBE_UNUSED)1076 static void mpfq_u64k1_wrapper_sub(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt r MAYBE_UNUSED, mpfq_u64k1_src_elt s1 MAYBE_UNUSED, mpfq_u64k1_src_elt s2 MAYBE_UNUSED)
1077 {
1078 mpfq_u64k1_sub(vbase->obj, r, s1, s2);
1079 }
1080
1081 static void mpfq_u64k1_wrapper_add(mpfq_vbase_ptr, mpfq_u64k1_dst_elt, mpfq_u64k1_src_elt, mpfq_u64k1_src_elt);
mpfq_u64k1_wrapper_add(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt r MAYBE_UNUSED,mpfq_u64k1_src_elt s1 MAYBE_UNUSED,mpfq_u64k1_src_elt s2 MAYBE_UNUSED)1082 static void mpfq_u64k1_wrapper_add(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt r MAYBE_UNUSED, mpfq_u64k1_src_elt s1 MAYBE_UNUSED, mpfq_u64k1_src_elt s2 MAYBE_UNUSED)
1083 {
1084 mpfq_u64k1_add(vbase->obj, r, s1, s2);
1085 }
1086
1087 static void mpfq_u64k1_wrapper_random2(mpfq_vbase_ptr, mpfq_u64k1_dst_elt, gmp_randstate_t);
mpfq_u64k1_wrapper_random2(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt r MAYBE_UNUSED,gmp_randstate_t state MAYBE_UNUSED)1088 static void mpfq_u64k1_wrapper_random2(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt r MAYBE_UNUSED, gmp_randstate_t state MAYBE_UNUSED)
1089 {
1090 mpfq_u64k1_random2(vbase->obj, r, state);
1091 }
1092
1093 static void mpfq_u64k1_wrapper_random(mpfq_vbase_ptr, mpfq_u64k1_dst_elt, gmp_randstate_t);
mpfq_u64k1_wrapper_random(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt r MAYBE_UNUSED,gmp_randstate_t state MAYBE_UNUSED)1094 static void mpfq_u64k1_wrapper_random(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt r MAYBE_UNUSED, gmp_randstate_t state MAYBE_UNUSED)
1095 {
1096 mpfq_u64k1_random(vbase->obj, r, state);
1097 }
1098
1099 static void mpfq_u64k1_wrapper_set_zero(mpfq_vbase_ptr, mpfq_u64k1_dst_elt);
mpfq_u64k1_wrapper_set_zero(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt r MAYBE_UNUSED)1100 static void mpfq_u64k1_wrapper_set_zero(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt r MAYBE_UNUSED)
1101 {
1102 mpfq_u64k1_set_zero(vbase->obj, r);
1103 }
1104
1105 static void mpfq_u64k1_wrapper_set(mpfq_vbase_ptr, mpfq_u64k1_dst_elt, mpfq_u64k1_src_elt);
mpfq_u64k1_wrapper_set(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_dst_elt r MAYBE_UNUSED,mpfq_u64k1_src_elt s MAYBE_UNUSED)1106 static void mpfq_u64k1_wrapper_set(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_dst_elt r MAYBE_UNUSED, mpfq_u64k1_src_elt s MAYBE_UNUSED)
1107 {
1108 mpfq_u64k1_set(vbase->obj, r, s);
1109 }
1110
1111 static ptrdiff_t mpfq_u64k1_wrapper_elt_stride(mpfq_vbase_ptr);
mpfq_u64k1_wrapper_elt_stride(mpfq_vbase_ptr vbase MAYBE_UNUSED)1112 static ptrdiff_t mpfq_u64k1_wrapper_elt_stride(mpfq_vbase_ptr vbase MAYBE_UNUSED)
1113 {
1114 return mpfq_u64k1_elt_stride(vbase->obj);
1115 }
1116
1117 static void mpfq_u64k1_wrapper_clear(mpfq_vbase_ptr, mpfq_u64k1_elt *);
mpfq_u64k1_wrapper_clear(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_elt * px MAYBE_UNUSED)1118 static void mpfq_u64k1_wrapper_clear(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_elt * px MAYBE_UNUSED)
1119 {
1120 mpfq_u64k1_clear(vbase->obj, px);
1121 }
1122
1123 static void mpfq_u64k1_wrapper_init(mpfq_vbase_ptr, mpfq_u64k1_elt *);
mpfq_u64k1_wrapper_init(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpfq_u64k1_elt * px MAYBE_UNUSED)1124 static void mpfq_u64k1_wrapper_init(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpfq_u64k1_elt * px MAYBE_UNUSED)
1125 {
1126 mpfq_u64k1_init(vbase->obj, px);
1127 }
1128
1129 static void mpfq_u64k1_wrapper_field_setopt(mpfq_vbase_ptr, unsigned long, void *);
mpfq_u64k1_wrapper_field_setopt(mpfq_vbase_ptr vbase MAYBE_UNUSED,unsigned long x MAYBE_UNUSED,void * y MAYBE_UNUSED)1130 static void mpfq_u64k1_wrapper_field_setopt(mpfq_vbase_ptr vbase MAYBE_UNUSED, unsigned long x MAYBE_UNUSED, void * y MAYBE_UNUSED)
1131 {
1132 mpfq_u64k1_field_setopt(vbase->obj, x, y);
1133 }
1134
1135 static void mpfq_u64k1_wrapper_field_specify(mpfq_vbase_ptr, unsigned long, const void *);
mpfq_u64k1_wrapper_field_specify(mpfq_vbase_ptr vbase MAYBE_UNUSED,unsigned long tag MAYBE_UNUSED,const void * x MAYBE_UNUSED)1136 static void mpfq_u64k1_wrapper_field_specify(mpfq_vbase_ptr vbase MAYBE_UNUSED, unsigned long tag MAYBE_UNUSED, const void * x MAYBE_UNUSED)
1137 {
1138 mpfq_u64k1_field_specify(vbase->obj, tag, x);
1139 }
1140
1141 static void mpfq_u64k1_wrapper_field_clear(mpfq_vbase_ptr);
mpfq_u64k1_wrapper_field_clear(mpfq_vbase_ptr vbase MAYBE_UNUSED)1142 static void mpfq_u64k1_wrapper_field_clear(mpfq_vbase_ptr vbase MAYBE_UNUSED)
1143 {
1144 mpfq_u64k1_field_clear(vbase->obj);
1145 }
1146
1147 static void mpfq_u64k1_wrapper_field_init(mpfq_vbase_ptr);
mpfq_u64k1_wrapper_field_init(mpfq_vbase_ptr vbase MAYBE_UNUSED)1148 static void mpfq_u64k1_wrapper_field_init(mpfq_vbase_ptr vbase MAYBE_UNUSED)
1149 {
1150 mpfq_u64k1_field_init(vbase->obj);
1151 }
1152
1153 static int mpfq_u64k1_wrapper_field_degree(mpfq_vbase_ptr);
mpfq_u64k1_wrapper_field_degree(mpfq_vbase_ptr vbase MAYBE_UNUSED)1154 static int mpfq_u64k1_wrapper_field_degree(mpfq_vbase_ptr vbase MAYBE_UNUSED)
1155 {
1156 return mpfq_u64k1_field_degree(vbase->obj);
1157 }
1158
1159 static mpz_srcptr mpfq_u64k1_wrapper_field_characteristic_srcptr(mpfq_vbase_ptr);
mpfq_u64k1_wrapper_field_characteristic_srcptr(mpfq_vbase_ptr vbase MAYBE_UNUSED)1160 static mpz_srcptr mpfq_u64k1_wrapper_field_characteristic_srcptr(mpfq_vbase_ptr vbase MAYBE_UNUSED)
1161 {
1162 return mpfq_u64k1_field_characteristic_srcptr(vbase->obj);
1163 }
1164
1165 static void mpfq_u64k1_wrapper_field_characteristic(mpfq_vbase_ptr, mpz_ptr);
mpfq_u64k1_wrapper_field_characteristic(mpfq_vbase_ptr vbase MAYBE_UNUSED,mpz_ptr z MAYBE_UNUSED)1166 static void mpfq_u64k1_wrapper_field_characteristic(mpfq_vbase_ptr vbase MAYBE_UNUSED, mpz_ptr z MAYBE_UNUSED)
1167 {
1168 mpfq_u64k1_field_characteristic(vbase->obj, z);
1169 }
1170
1171 static unsigned long mpfq_u64k1_wrapper_impl_max_degree();
mpfq_u64k1_wrapper_impl_max_degree()1172 static unsigned long mpfq_u64k1_wrapper_impl_max_degree()
1173 {
1174 return mpfq_u64k1_impl_max_degree();
1175 }
1176
1177 static unsigned long mpfq_u64k1_wrapper_impl_max_characteristic_bits();
mpfq_u64k1_wrapper_impl_max_characteristic_bits()1178 static unsigned long mpfq_u64k1_wrapper_impl_max_characteristic_bits()
1179 {
1180 return mpfq_u64k1_impl_max_characteristic_bits();
1181 }
1182
1183 static const char * mpfq_u64k1_wrapper_impl_name();
mpfq_u64k1_wrapper_impl_name()1184 static const char * mpfq_u64k1_wrapper_impl_name()
1185 {
1186 return mpfq_u64k1_impl_name();
1187 }
1188
1189 /* Mpfq::engine::oo::oo_field_init */
1190 /* Triggered by: oo */
mpfq_u64k1_oo_field_init(mpfq_vbase_ptr vbase)1191 void mpfq_u64k1_oo_field_init(mpfq_vbase_ptr vbase)
1192 {
1193 memset(vbase, 0, sizeof(struct mpfq_vbase_s));
1194 vbase->obj = malloc(sizeof(mpfq_u64k1_field));
1195 mpfq_u64k1_field_init((mpfq_u64k1_dst_field) vbase->obj);
1196 vbase->impl_name = (const char * (*) ()) mpfq_u64k1_wrapper_impl_name;
1197 vbase->impl_max_characteristic_bits = (unsigned long (*) ()) mpfq_u64k1_wrapper_impl_max_characteristic_bits;
1198 vbase->impl_max_degree = (unsigned long (*) ()) mpfq_u64k1_wrapper_impl_max_degree;
1199 vbase->field_characteristic = (void (*) (mpfq_vbase_ptr, mpz_ptr)) mpfq_u64k1_wrapper_field_characteristic;
1200 vbase->field_characteristic_srcptr = (mpz_srcptr (*) (mpfq_vbase_ptr)) mpfq_u64k1_wrapper_field_characteristic_srcptr;
1201 /* missing field_characteristic_bits */
1202 vbase->field_degree = (int (*) (mpfq_vbase_ptr)) mpfq_u64k1_wrapper_field_degree;
1203 vbase->field_init = (void (*) (mpfq_vbase_ptr)) mpfq_u64k1_wrapper_field_init;
1204 vbase->field_clear = (void (*) (mpfq_vbase_ptr)) mpfq_u64k1_wrapper_field_clear;
1205 vbase->field_specify = (void (*) (mpfq_vbase_ptr, unsigned long, const void *)) mpfq_u64k1_wrapper_field_specify;
1206 vbase->field_setopt = (void (*) (mpfq_vbase_ptr, unsigned long, void *)) mpfq_u64k1_wrapper_field_setopt;
1207 vbase->init = (void (*) (mpfq_vbase_ptr, void *)) mpfq_u64k1_wrapper_init;
1208 vbase->clear = (void (*) (mpfq_vbase_ptr, void *)) mpfq_u64k1_wrapper_clear;
1209 vbase->elt_stride = (ptrdiff_t (*) (mpfq_vbase_ptr)) mpfq_u64k1_wrapper_elt_stride;
1210 vbase->set = (void (*) (mpfq_vbase_ptr, void *, const void *)) mpfq_u64k1_wrapper_set;
1211 /* missing set_ui */
1212 vbase->set_zero = (void (*) (mpfq_vbase_ptr, void *)) mpfq_u64k1_wrapper_set_zero;
1213 /* missing get_ui */
1214 /* missing set_mpn */
1215 /* missing set_mpz */
1216 /* missing get_mpn */
1217 /* missing get_mpz */
1218 vbase->random = (void (*) (mpfq_vbase_ptr, void *, gmp_randstate_t)) mpfq_u64k1_wrapper_random;
1219 vbase->random2 = (void (*) (mpfq_vbase_ptr, void *, gmp_randstate_t)) mpfq_u64k1_wrapper_random2;
1220 vbase->add = (void (*) (mpfq_vbase_ptr, void *, const void *, const void *)) mpfq_u64k1_wrapper_add;
1221 vbase->sub = (void (*) (mpfq_vbase_ptr, void *, const void *, const void *)) mpfq_u64k1_wrapper_sub;
1222 vbase->neg = (void (*) (mpfq_vbase_ptr, void *, const void *)) mpfq_u64k1_wrapper_neg;
1223 vbase->mul = (void (*) (mpfq_vbase_ptr, void *, const void *, const void *)) mpfq_u64k1_wrapper_mul;
1224 /* missing sqr */
1225 /* missing is_sqr */
1226 /* missing sqrt */
1227 /* missing pow */
1228 /* missing powz */
1229 /* missing frobenius */
1230 /* missing add_ui */
1231 /* missing sub_ui */
1232 /* missing mul_ui */
1233 vbase->inv = (int (*) (mpfq_vbase_ptr, void *, const void *)) mpfq_u64k1_wrapper_inv;
1234 vbase->elt_ur_init = (void (*) (mpfq_vbase_ptr, void *)) mpfq_u64k1_wrapper_elt_ur_init;
1235 vbase->elt_ur_clear = (void (*) (mpfq_vbase_ptr, void *)) mpfq_u64k1_wrapper_elt_ur_clear;
1236 vbase->elt_ur_stride = (ptrdiff_t (*) (mpfq_vbase_ptr)) mpfq_u64k1_wrapper_elt_ur_stride;
1237 vbase->elt_ur_set = (void (*) (mpfq_vbase_ptr, void *, const void *)) mpfq_u64k1_wrapper_elt_ur_set;
1238 vbase->elt_ur_set_elt = (void (*) (mpfq_vbase_ptr, void *, const void *)) mpfq_u64k1_wrapper_elt_ur_set_elt;
1239 vbase->elt_ur_set_zero = (void (*) (mpfq_vbase_ptr, void *)) mpfq_u64k1_wrapper_elt_ur_set_zero;
1240 /* missing elt_ur_set_ui */
1241 vbase->elt_ur_add = (void (*) (mpfq_vbase_ptr, void *, const void *, const void *)) mpfq_u64k1_wrapper_elt_ur_add;
1242 vbase->elt_ur_neg = (void (*) (mpfq_vbase_ptr, void *, const void *)) mpfq_u64k1_wrapper_elt_ur_neg;
1243 vbase->elt_ur_sub = (void (*) (mpfq_vbase_ptr, void *, const void *, const void *)) mpfq_u64k1_wrapper_elt_ur_sub;
1244 vbase->mul_ur = (void (*) (mpfq_vbase_ptr, void *, const void *, const void *)) mpfq_u64k1_wrapper_mul_ur;
1245 /* missing sqr_ur */
1246 vbase->reduce = (void (*) (mpfq_vbase_ptr, void *, void *)) mpfq_u64k1_wrapper_reduce;
1247 vbase->cmp = (int (*) (mpfq_vbase_ptr, const void *, const void *)) mpfq_u64k1_wrapper_cmp;
1248 /* missing cmp_ui */
1249 vbase->is_zero = (int (*) (mpfq_vbase_ptr, const void *)) mpfq_u64k1_wrapper_is_zero;
1250 vbase->asprint = (int (*) (mpfq_vbase_ptr, char * *, const void *)) mpfq_u64k1_wrapper_asprint;
1251 vbase->fprint = (int (*) (mpfq_vbase_ptr, FILE *, const void *)) mpfq_u64k1_wrapper_fprint;
1252 vbase->print = (int (*) (mpfq_vbase_ptr, const void *)) mpfq_u64k1_wrapper_print;
1253 vbase->sscan = (int (*) (mpfq_vbase_ptr, void *, const char *)) mpfq_u64k1_wrapper_sscan;
1254 vbase->fscan = (int (*) (mpfq_vbase_ptr, FILE *, void *)) mpfq_u64k1_wrapper_fscan;
1255 vbase->scan = (int (*) (mpfq_vbase_ptr, void *)) mpfq_u64k1_wrapper_scan;
1256 /* missing read */
1257 /* missing importdata */
1258 /* missing write */
1259 /* missing exportdata */
1260 vbase->vec_init = (void (*) (mpfq_vbase_ptr, void *, unsigned long)) mpfq_u64k1_wrapper_vec_init;
1261 vbase->vec_reinit = (void (*) (mpfq_vbase_ptr, void *, unsigned long, unsigned long)) mpfq_u64k1_wrapper_vec_reinit;
1262 vbase->vec_clear = (void (*) (mpfq_vbase_ptr, void *, unsigned long)) mpfq_u64k1_wrapper_vec_clear;
1263 vbase->vec_set = (void (*) (mpfq_vbase_ptr, void *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_set;
1264 vbase->vec_set_zero = (void (*) (mpfq_vbase_ptr, void *, unsigned long)) mpfq_u64k1_wrapper_vec_set_zero;
1265 vbase->vec_setcoeff = (void (*) (mpfq_vbase_ptr, void *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_setcoeff;
1266 /* missing vec_setcoeff_ui */
1267 vbase->vec_getcoeff = (void (*) (mpfq_vbase_ptr, void *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_getcoeff;
1268 vbase->vec_add = (void (*) (mpfq_vbase_ptr, void *, const void *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_add;
1269 vbase->vec_neg = (void (*) (mpfq_vbase_ptr, void *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_neg;
1270 vbase->vec_rev = (void (*) (mpfq_vbase_ptr, void *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_rev;
1271 vbase->vec_sub = (void (*) (mpfq_vbase_ptr, void *, const void *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_sub;
1272 vbase->vec_scal_mul = (void (*) (mpfq_vbase_ptr, void *, const void *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_scal_mul;
1273 /* missing vec_conv */
1274 vbase->vec_random = (void (*) (mpfq_vbase_ptr, void *, unsigned long, gmp_randstate_t)) mpfq_u64k1_wrapper_vec_random;
1275 vbase->vec_random2 = (void (*) (mpfq_vbase_ptr, void *, unsigned long, gmp_randstate_t)) mpfq_u64k1_wrapper_vec_random2;
1276 vbase->vec_cmp = (long (*) (mpfq_vbase_ptr, const void *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_cmp;
1277 vbase->vec_is_zero = (long (*) (mpfq_vbase_ptr, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_is_zero;
1278 vbase->vec_subvec = (void * (*) (mpfq_vbase_ptr, void *, long)) mpfq_u64k1_wrapper_vec_subvec;
1279 vbase->vec_subvec_const = (const void * (*) (mpfq_vbase_ptr, const void *, long)) mpfq_u64k1_wrapper_vec_subvec_const;
1280 vbase->vec_coeff_ptr = (void * (*) (mpfq_vbase_ptr, void *, long)) mpfq_u64k1_wrapper_vec_coeff_ptr;
1281 vbase->vec_coeff_ptr_const = (const void * (*) (mpfq_vbase_ptr, const void *, long)) mpfq_u64k1_wrapper_vec_coeff_ptr_const;
1282 vbase->vec_asprint = (long (*) (mpfq_vbase_ptr, char * *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_asprint;
1283 vbase->vec_fprint = (long (*) (mpfq_vbase_ptr, FILE *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_fprint;
1284 vbase->vec_print = (long (*) (mpfq_vbase_ptr, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_print;
1285 vbase->vec_sscan = (long (*) (mpfq_vbase_ptr, void *, unsigned long *, const char *)) mpfq_u64k1_wrapper_vec_sscan;
1286 vbase->vec_fscan = (long (*) (mpfq_vbase_ptr, FILE *, void *, unsigned long *)) mpfq_u64k1_wrapper_vec_fscan;
1287 vbase->vec_scan = (long (*) (mpfq_vbase_ptr, void *, unsigned long *)) mpfq_u64k1_wrapper_vec_scan;
1288 /* missing vec_read */
1289 /* missing vec_write */
1290 /* missing vec_import */
1291 /* missing vec_export */
1292 vbase->vec_hamming_weight = (long (*) (mpfq_vbase_ptr, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_hamming_weight;
1293 vbase->vec_find_first_set = (long (*) (mpfq_vbase_ptr, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_find_first_set;
1294 vbase->vec_simd_hamming_weight = (long (*) (mpfq_vbase_ptr, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_simd_hamming_weight;
1295 vbase->vec_simd_find_first_set = (long (*) (mpfq_vbase_ptr, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_simd_find_first_set;
1296 vbase->vec_ur_init = (void (*) (mpfq_vbase_ptr, void *, unsigned long)) mpfq_u64k1_wrapper_vec_ur_init;
1297 vbase->vec_ur_set_zero = (void (*) (mpfq_vbase_ptr, void *, unsigned long)) mpfq_u64k1_wrapper_vec_ur_set_zero;
1298 vbase->vec_ur_set_vec = (void (*) (mpfq_vbase_ptr, void *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_ur_set_vec;
1299 vbase->vec_ur_reinit = (void (*) (mpfq_vbase_ptr, void *, unsigned long, unsigned long)) mpfq_u64k1_wrapper_vec_ur_reinit;
1300 vbase->vec_ur_clear = (void (*) (mpfq_vbase_ptr, void *, unsigned long)) mpfq_u64k1_wrapper_vec_ur_clear;
1301 vbase->vec_ur_set = (void (*) (mpfq_vbase_ptr, void *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_ur_set;
1302 vbase->vec_ur_setcoeff = (void (*) (mpfq_vbase_ptr, void *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_ur_setcoeff;
1303 vbase->vec_ur_getcoeff = (void (*) (mpfq_vbase_ptr, void *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_ur_getcoeff;
1304 vbase->vec_ur_add = (void (*) (mpfq_vbase_ptr, void *, const void *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_ur_add;
1305 vbase->vec_ur_sub = (void (*) (mpfq_vbase_ptr, void *, const void *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_ur_sub;
1306 vbase->vec_ur_neg = (void (*) (mpfq_vbase_ptr, void *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_ur_neg;
1307 vbase->vec_ur_rev = (void (*) (mpfq_vbase_ptr, void *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_ur_rev;
1308 vbase->vec_scal_mul_ur = (void (*) (mpfq_vbase_ptr, void *, const void *, const void *, unsigned long)) mpfq_u64k1_wrapper_vec_scal_mul_ur;
1309 /* missing vec_conv_ur */
1310 vbase->vec_reduce = (void (*) (mpfq_vbase_ptr, void *, void *, unsigned long)) mpfq_u64k1_wrapper_vec_reduce;
1311 vbase->vec_ur_subvec = (void * (*) (mpfq_vbase_ptr, void *, long)) mpfq_u64k1_wrapper_vec_ur_subvec;
1312 vbase->vec_ur_subvec_const = (const void * (*) (mpfq_vbase_ptr, const void *, long)) mpfq_u64k1_wrapper_vec_ur_subvec_const;
1313 vbase->vec_ur_coeff_ptr = (void * (*) (mpfq_vbase_ptr, void *, long)) mpfq_u64k1_wrapper_vec_ur_coeff_ptr;
1314 vbase->vec_ur_coeff_ptr_const = (const void * (*) (mpfq_vbase_ptr, const void *, long)) mpfq_u64k1_wrapper_vec_ur_coeff_ptr_const;
1315 vbase->vec_elt_stride = (ptrdiff_t (*) (mpfq_vbase_ptr, long)) mpfq_u64k1_wrapper_vec_elt_stride;
1316 vbase->vec_ur_elt_stride = (ptrdiff_t (*) (mpfq_vbase_ptr, long)) mpfq_u64k1_wrapper_vec_ur_elt_stride;
1317 /* missing poly_init */
1318 /* missing poly_clear */
1319 /* missing poly_set */
1320 /* missing poly_setmonic */
1321 /* missing poly_setcoeff */
1322 /* missing poly_setcoeff_ui */
1323 /* missing poly_getcoeff */
1324 /* missing poly_deg */
1325 /* missing poly_add */
1326 /* missing poly_sub */
1327 /* missing poly_set_ui */
1328 /* missing poly_add_ui */
1329 /* missing poly_sub_ui */
1330 /* missing poly_neg */
1331 /* missing poly_scal_mul */
1332 /* missing poly_mul */
1333 /* missing poly_divmod */
1334 /* missing poly_precomp_mod */
1335 /* missing poly_mod_pre */
1336 /* missing poly_gcd */
1337 /* missing poly_xgcd */
1338 /* missing poly_random */
1339 /* missing poly_random2 */
1340 /* missing poly_cmp */
1341 /* missing poly_asprint */
1342 /* missing poly_fprint */
1343 /* missing poly_print */
1344 /* missing poly_sscan */
1345 /* missing poly_fscan */
1346 /* missing poly_scan */
1347 vbase->simd_groupsize = (int (*) (mpfq_vbase_ptr)) mpfq_u64k1_wrapper_simd_groupsize;
1348 vbase->simd_hamming_weight = (int (*) (mpfq_vbase_ptr, const void *)) mpfq_u64k1_wrapper_simd_hamming_weight;
1349 vbase->simd_find_first_set = (int (*) (mpfq_vbase_ptr, const void *)) mpfq_u64k1_wrapper_simd_find_first_set;
1350 vbase->simd_get_ui_at = (unsigned long (*) (mpfq_vbase_ptr, const void *, int)) mpfq_u64k1_wrapper_simd_get_ui_at;
1351 vbase->simd_set_ui_at = (void (*) (mpfq_vbase_ptr, void *, int, unsigned long)) mpfq_u64k1_wrapper_simd_set_ui_at;
1352 vbase->simd_add_ui_at = (void (*) (mpfq_vbase_ptr, void *, const void *, int, unsigned long)) mpfq_u64k1_wrapper_simd_add_ui_at;
1353 vbase->simd_set_ui_all = (void (*) (mpfq_vbase_ptr, void *, unsigned long)) mpfq_u64k1_wrapper_simd_set_ui_all;
1354 vbase->add_dotprod = (void (*) (mpfq_vbase_ptr, void *, const void *, const void *, unsigned int)) mpfq_u64k1_wrapper_add_dotprod;
1355 vbase->oo_field_init = (void (*) (mpfq_vbase_ptr)) mpfq_u64k1_wrapper_oo_field_init;
1356 vbase->oo_field_clear = (void (*) (mpfq_vbase_ptr)) mpfq_u64k1_wrapper_oo_field_clear;
1357 }
1358
1359
1360 /* vim:set ft=cpp: */
1361