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