1 #ifndef MPFQ_VBASE_H_ 2 #define MPFQ_VBASE_H_ 3 4 /* MPFQ generated file -- do not edit */ 5 6 #include <stddef.h> 7 #include <stdio.h> 8 #include <gmp.h> 9 10 #ifdef __cplusplus 11 extern "C" { 12 #endif 13 14 struct mpfq_vbase_s; 15 typedef struct mpfq_vbase_s * mpfq_vbase_ptr; 16 typedef struct mpfq_vbase_s const * mpfq_vbase_srcptr; 17 18 struct mpfq_vbase_tmpl_s; 19 typedef struct mpfq_vbase_tmpl_s * mpfq_vbase_tmpl_ptr; 20 typedef struct mpfq_vbase_tmpl_s const * mpfq_vbase_tmpl_srcptr; 21 22 struct mpfq_vbase_s { 23 void * obj; /* pointer to global implementation private fields */ 24 const char * (*impl_name)(); 25 unsigned long (*impl_max_characteristic_bits)(); 26 unsigned long (*impl_max_degree)(); 27 void (*field_characteristic)(mpfq_vbase_ptr, mpz_ptr); 28 mpz_srcptr (*field_characteristic_srcptr)(mpfq_vbase_ptr); 29 unsigned long (*field_characteristic_bits)(mpfq_vbase_ptr); 30 int (*field_degree)(mpfq_vbase_ptr); 31 void (*field_init)(mpfq_vbase_ptr); 32 void (*field_clear)(mpfq_vbase_ptr); 33 void (*field_specify)(mpfq_vbase_ptr, unsigned long, const void *); 34 void (*field_setopt)(mpfq_vbase_ptr, unsigned long, void *); 35 void (*init)(mpfq_vbase_ptr, void *); 36 void (*clear)(mpfq_vbase_ptr, void *); 37 ptrdiff_t (*elt_stride)(mpfq_vbase_ptr); 38 void (*set)(mpfq_vbase_ptr, void *, const void *); 39 void (*set_ui)(mpfq_vbase_ptr, void *, unsigned long); 40 void (*set_zero)(mpfq_vbase_ptr, void *); 41 unsigned long (*get_ui)(mpfq_vbase_ptr, const void *); 42 void (*set_mpn)(mpfq_vbase_ptr, void *, mp_limb_t *, size_t); 43 void (*set_mpz)(mpfq_vbase_ptr, void *, mpz_srcptr); 44 void (*get_mpn)(mpfq_vbase_ptr, mp_limb_t *, const void *); 45 void (*get_mpz)(mpfq_vbase_ptr, mpz_ptr, const void *); 46 void (*random)(mpfq_vbase_ptr, void *, gmp_randstate_t); 47 void (*random2)(mpfq_vbase_ptr, void *, gmp_randstate_t); 48 void (*add)(mpfq_vbase_ptr, void *, const void *, const void *); 49 void (*sub)(mpfq_vbase_ptr, void *, const void *, const void *); 50 void (*neg)(mpfq_vbase_ptr, void *, const void *); 51 void (*mul)(mpfq_vbase_ptr, void *, const void *, const void *); 52 void (*sqr)(mpfq_vbase_ptr, void *, const void *); 53 int (*is_sqr)(mpfq_vbase_ptr, const void *); 54 int (*sqrt)(mpfq_vbase_ptr, void *, const void *); 55 void (*pow)(mpfq_vbase_ptr, void *, const void *, unsigned long *, size_t); 56 void (*powz)(mpfq_vbase_ptr, void *, const void *, mpz_srcptr); 57 void (*frobenius)(mpfq_vbase_ptr, void *, const void *); 58 void (*add_ui)(mpfq_vbase_ptr, void *, const void *, unsigned long); 59 void (*sub_ui)(mpfq_vbase_ptr, void *, const void *, unsigned long); 60 void (*mul_ui)(mpfq_vbase_ptr, void *, const void *, unsigned long); 61 void (*normalize)(mpfq_vbase_ptr, void *); 62 int (*inv)(mpfq_vbase_ptr, void *, const void *); 63 void (*hadamard)(mpfq_vbase_ptr, void *, void *, void *, void *); 64 void (*elt_ur_init)(mpfq_vbase_ptr, void *); 65 void (*elt_ur_clear)(mpfq_vbase_ptr, void *); 66 ptrdiff_t (*elt_ur_stride)(mpfq_vbase_ptr); 67 void (*elt_ur_set)(mpfq_vbase_ptr, void *, const void *); 68 void (*elt_ur_set_elt)(mpfq_vbase_ptr, void *, const void *); 69 void (*elt_ur_set_zero)(mpfq_vbase_ptr, void *); 70 void (*elt_ur_set_ui)(mpfq_vbase_ptr, void *, unsigned long); 71 void (*elt_ur_add)(mpfq_vbase_ptr, void *, const void *, const void *); 72 void (*elt_ur_neg)(mpfq_vbase_ptr, void *, const void *); 73 void (*elt_ur_sub)(mpfq_vbase_ptr, void *, const void *, const void *); 74 void (*mul_ur)(mpfq_vbase_ptr, void *, const void *, const void *); 75 void (*sqr_ur)(mpfq_vbase_ptr, void *, const void *); 76 void (*reduce)(mpfq_vbase_ptr, void *, void *); 77 void (*addmul_si_ur)(mpfq_vbase_ptr, void *, const void *, long); 78 int (*cmp)(mpfq_vbase_ptr, const void *, const void *); 79 int (*cmp_ui)(mpfq_vbase_ptr, const void *, unsigned long); 80 int (*is_zero)(mpfq_vbase_ptr, const void *); 81 int (*asprint)(mpfq_vbase_ptr, char * *, const void *); 82 int (*fprint)(mpfq_vbase_ptr, FILE *, const void *); 83 int (*print)(mpfq_vbase_ptr, const void *); 84 int (*sscan)(mpfq_vbase_ptr, void *, const char *); 85 int (*fscan)(mpfq_vbase_ptr, FILE *, void *); 86 int (*scan)(mpfq_vbase_ptr, void *); 87 int (*read)(mpfq_vbase_ptr, FILE *, void *); 88 int (*importdata)(mpfq_vbase_ptr, FILE *, void *, int, int); 89 int (*write)(mpfq_vbase_ptr, FILE *, const void *); 90 int (*exportdata)(mpfq_vbase_ptr, FILE *, const void *, int, int); 91 void (*vec_init)(mpfq_vbase_ptr, void *, unsigned long); 92 void (*vec_reinit)(mpfq_vbase_ptr, void *, unsigned long, unsigned long); 93 void (*vec_clear)(mpfq_vbase_ptr, void *, unsigned long); 94 void (*vec_set)(mpfq_vbase_ptr, void *, const void *, unsigned long); 95 void (*vec_set_zero)(mpfq_vbase_ptr, void *, unsigned long); 96 void (*vec_setcoeff)(mpfq_vbase_ptr, void *, const void *, unsigned long); 97 void (*vec_setcoeff_ui)(mpfq_vbase_ptr, void *, unsigned long, unsigned long); 98 void (*vec_getcoeff)(mpfq_vbase_ptr, void *, const void *, unsigned long); 99 void (*vec_add)(mpfq_vbase_ptr, void *, const void *, const void *, unsigned long); 100 void (*vec_neg)(mpfq_vbase_ptr, void *, const void *, unsigned long); 101 void (*vec_rev)(mpfq_vbase_ptr, void *, const void *, unsigned long); 102 void (*vec_sub)(mpfq_vbase_ptr, void *, const void *, const void *, unsigned long); 103 void (*vec_scal_mul)(mpfq_vbase_ptr, void *, const void *, const void *, unsigned long); 104 void (*vec_conv)(mpfq_vbase_ptr, void *, const void *, unsigned long, const void *, unsigned long); 105 void (*vec_random)(mpfq_vbase_ptr, void *, unsigned long, gmp_randstate_t); 106 void (*vec_random2)(mpfq_vbase_ptr, void *, unsigned long, gmp_randstate_t); 107 long (*vec_cmp)(mpfq_vbase_ptr, const void *, const void *, unsigned long); 108 long (*vec_is_zero)(mpfq_vbase_ptr, const void *, unsigned long); 109 void * (*vec_subvec)(mpfq_vbase_ptr, void *, long); 110 const void * (*vec_subvec_const)(mpfq_vbase_ptr, const void *, long); 111 void * (*vec_coeff_ptr)(mpfq_vbase_ptr, void *, long); 112 const void * (*vec_coeff_ptr_const)(mpfq_vbase_ptr, const void *, long); 113 long (*vec_asprint)(mpfq_vbase_ptr, char * *, const void *, unsigned long); 114 long (*vec_fprint)(mpfq_vbase_ptr, FILE *, const void *, unsigned long); 115 long (*vec_print)(mpfq_vbase_ptr, const void *, unsigned long); 116 long (*vec_sscan)(mpfq_vbase_ptr, void *, unsigned long *, const char *); 117 long (*vec_fscan)(mpfq_vbase_ptr, FILE *, void *, unsigned long *); 118 long (*vec_scan)(mpfq_vbase_ptr, void *, unsigned long *); 119 long (*vec_read)(mpfq_vbase_ptr, FILE *, void *, unsigned long); 120 long (*vec_write)(mpfq_vbase_ptr, FILE *, const void *, unsigned long); 121 long (*vec_import)(mpfq_vbase_ptr, void *, unsigned long, long, long); 122 long (*vec_export)(mpfq_vbase_ptr, const void *, unsigned long, long, long); 123 long (*vec_hamming_weight)(mpfq_vbase_ptr, const void *, unsigned long); 124 long (*vec_find_first_set)(mpfq_vbase_ptr, const void *, unsigned long); 125 long (*vec_simd_hamming_weight)(mpfq_vbase_ptr, const void *, unsigned long); 126 long (*vec_simd_find_first_set)(mpfq_vbase_ptr, const void *, unsigned long); 127 void (*vec_ur_init)(mpfq_vbase_ptr, void *, unsigned long); 128 void (*vec_ur_set_zero)(mpfq_vbase_ptr, void *, unsigned long); 129 void (*vec_ur_set_vec)(mpfq_vbase_ptr, void *, const void *, unsigned long); 130 void (*vec_ur_reinit)(mpfq_vbase_ptr, void *, unsigned long, unsigned long); 131 void (*vec_ur_clear)(mpfq_vbase_ptr, void *, unsigned long); 132 void (*vec_ur_set)(mpfq_vbase_ptr, void *, const void *, unsigned long); 133 void (*vec_ur_setcoeff)(mpfq_vbase_ptr, void *, const void *, unsigned long); 134 void (*vec_ur_getcoeff)(mpfq_vbase_ptr, void *, const void *, unsigned long); 135 void (*vec_ur_add)(mpfq_vbase_ptr, void *, const void *, const void *, unsigned long); 136 void (*vec_ur_sub)(mpfq_vbase_ptr, void *, const void *, const void *, unsigned long); 137 void (*vec_ur_neg)(mpfq_vbase_ptr, void *, const void *, unsigned long); 138 void (*vec_ur_rev)(mpfq_vbase_ptr, void *, const void *, unsigned long); 139 void (*vec_scal_mul_ur)(mpfq_vbase_ptr, void *, const void *, const void *, unsigned long); 140 void (*vec_conv_ur)(mpfq_vbase_ptr, void *, const void *, unsigned long, const void *, unsigned long); 141 void (*vec_reduce)(mpfq_vbase_ptr, void *, void *, unsigned long); 142 void * (*vec_ur_subvec)(mpfq_vbase_ptr, void *, long); 143 const void * (*vec_ur_subvec_const)(mpfq_vbase_ptr, const void *, long); 144 void * (*vec_ur_coeff_ptr)(mpfq_vbase_ptr, void *, long); 145 const void * (*vec_ur_coeff_ptr_const)(mpfq_vbase_ptr, const void *, long); 146 ptrdiff_t (*vec_elt_stride)(mpfq_vbase_ptr, long); 147 ptrdiff_t (*vec_ur_elt_stride)(mpfq_vbase_ptr, long); 148 void (*poly_init)(mpfq_vbase_ptr, void *, unsigned int); 149 void (*poly_clear)(mpfq_vbase_ptr, void *); 150 void (*poly_set)(mpfq_vbase_ptr, void *, const void *); 151 void (*poly_setmonic)(mpfq_vbase_ptr, void *, const void *); 152 void (*poly_setcoeff)(mpfq_vbase_ptr, void *, const void *, unsigned int); 153 void (*poly_setcoeff_ui)(mpfq_vbase_ptr, void *, unsigned long, unsigned int); 154 void (*poly_getcoeff)(mpfq_vbase_ptr, void *, const void *, unsigned int); 155 int (*poly_deg)(mpfq_vbase_ptr, const void *); 156 void (*poly_add)(mpfq_vbase_ptr, void *, const void *, const void *); 157 void (*poly_sub)(mpfq_vbase_ptr, void *, const void *, const void *); 158 void (*poly_set_ui)(mpfq_vbase_ptr, void *, unsigned long); 159 void (*poly_add_ui)(mpfq_vbase_ptr, void *, const void *, unsigned long); 160 void (*poly_sub_ui)(mpfq_vbase_ptr, void *, const void *, unsigned long); 161 void (*poly_neg)(mpfq_vbase_ptr, void *, const void *); 162 void (*poly_scal_mul)(mpfq_vbase_ptr, void *, const void *, const void *); 163 void (*poly_mul)(mpfq_vbase_ptr, void *, const void *, const void *); 164 int (*poly_divmod)(mpfq_vbase_ptr, void *, void *, const void *, const void *); 165 void (*poly_precomp_mod)(mpfq_vbase_ptr, void *, const void *); 166 void (*poly_mod_pre)(mpfq_vbase_ptr, void *, const void *, const void *, const void *); 167 void (*poly_gcd)(mpfq_vbase_ptr, void *, const void *, const void *); 168 void (*poly_xgcd)(mpfq_vbase_ptr, void *, void *, void *, const void *, const void *); 169 void (*poly_random)(mpfq_vbase_ptr, void *, unsigned int, gmp_randstate_t); 170 void (*poly_random2)(mpfq_vbase_ptr, void *, unsigned int, gmp_randstate_t); 171 int (*poly_cmp)(mpfq_vbase_ptr, const void *, const void *); 172 int (*poly_asprint)(mpfq_vbase_ptr, char * *, const void *); 173 int (*poly_fprint)(mpfq_vbase_ptr, FILE *, const void *); 174 int (*poly_print)(mpfq_vbase_ptr, const void *); 175 int (*poly_sscan)(mpfq_vbase_ptr, void *, const char *); 176 int (*poly_fscan)(mpfq_vbase_ptr, FILE *, void *); 177 int (*poly_scan)(mpfq_vbase_ptr, void *); 178 int (*simd_groupsize)(mpfq_vbase_ptr); 179 int (*simd_hamming_weight)(mpfq_vbase_ptr, const void *); 180 int (*simd_find_first_set)(mpfq_vbase_ptr, const void *); 181 unsigned long (*simd_get_ui_at)(mpfq_vbase_ptr, const void *, int); 182 void (*simd_set_ui_at)(mpfq_vbase_ptr, void *, int, unsigned long); 183 void (*simd_add_ui_at)(mpfq_vbase_ptr, void *, const void *, int, unsigned long); 184 void (*simd_set_ui_all)(mpfq_vbase_ptr, void *, unsigned long); 185 void (*add_dotprod)(mpfq_vbase_ptr, void *, const void *, const void *, unsigned int); 186 void (*mul_constant_ui)(mpfq_vbase_ptr, void *, const void *, unsigned long); 187 void (*oo_field_init)(mpfq_vbase_ptr); 188 void (*oo_field_clear)(mpfq_vbase_ptr); 189 }; 190 191 struct mpfq_vbase_tmpl_s { 192 void (*add_dotprod)(mpfq_vbase_ptr, mpfq_vbase_ptr, void *, const void *, const void *, unsigned int); 193 void (*addmul_tiny)(mpfq_vbase_ptr, mpfq_vbase_ptr, void *, const void *, const void *, unsigned int); 194 void (*transpose)(mpfq_vbase_ptr, mpfq_vbase_ptr, void *, const void *); 195 }; 196 typedef struct mpfq_vbase_s mpfq_vbase[1]; 197 typedef struct mpfq_vbase_tmpl_s mpfq_vbase_tmpl[1]; 198 199 void mpfq_vbase_oo_field_init_byfeatures(mpfq_vbase_ptr, ...); 200 void mpfq_vbase_oo_init_templates(mpfq_vbase_tmpl_ptr, mpfq_vbase_ptr, mpfq_vbase_ptr); 201 202 #ifdef __cplusplus 203 } 204 #endif 205 206 #endif /* MPFQ_VBASE_H_ */ 207 208 /* vim:set ft=cpp: */ 209