1 #ifndef MPFQ_NAME_AB_H_ 2 #define MPFQ_NAME_AB_H_ 3 4 /* Automatically generated file. 5 * 6 * This header file is just wrap-up code for accessing a global finite 7 * field with convenient aliases. 8 * 9 * Note that this file is automatically generated from the mpfq api, and 10 * is therefore guaranteed to contain all the api functions usable in the 11 * current api_extensions. 12 */ 13 14 #ifndef MPFQ_LAST_GENERATED_TAG 15 #error "Please include an mpfq-generated header first" 16 #endif 17 18 /* cpp has its infelicities. Yes the extra step is needed */ 19 #ifndef MPFQ_CONCAT4 20 #define MPFQ_CONCAT4(X,Y,Z,T) X ## Y ## Z ## T 21 #endif 22 23 #ifndef MPFQ_CREATE_FUNCTION_NAME 24 #define MPFQ_CREATE_FUNCTION_NAME(TAG,NAME) MPFQ_CONCAT4(mpfq_,TAG,_,NAME) 25 #endif 26 27 #define abcommon_name_(X) MPFQ_CREATE_FUNCTION_NAME(MPFQ_LAST_GENERATED_TAG,X) 28 29 #define abfield abcommon_name_(field) 30 #define abdst_field abcommon_name_(dst_field) 31 #define absrc_field abcommon_name_(src_field) 32 33 #define abelt abcommon_name_(elt) 34 #define abdst_elt abcommon_name_(dst_elt) 35 #define absrc_elt abcommon_name_(src_elt) 36 37 #define abelt_ur abcommon_name_(elt_ur) 38 #define abdst_elt_ur abcommon_name_(dst_elt_ur) 39 #define absrc_elt_ur abcommon_name_(src_elt_ur) 40 41 #define abvec abcommon_name_(vec) 42 #define abdst_vec abcommon_name_(dst_vec) 43 #define absrc_vec abcommon_name_(src_vec) 44 45 #define abvec_ur abcommon_name_(vec_ur) 46 #define abdst_vec_ur abcommon_name_(dst_vec_ur) 47 #define absrc_vec_ur abcommon_name_(src_vec_ur) 48 49 #define abpoly abcommon_name_(poly) 50 #define abdst_poly abcommon_name_(dst_poly) 51 #define absrc_poly abcommon_name_(src_poly) 52 53 54 55 56 57 58 #define abimpl_name() abcommon_name_(impl_name) () 59 #define abimpl_max_characteristic_bits() abcommon_name_(impl_max_characteristic_bits) () 60 #define abimpl_max_degree() abcommon_name_(impl_max_degree) () 61 62 63 64 #define abfield_characteristic(a0,a1) abcommon_name_(field_characteristic) (a0,a1) 65 #define abfield_characteristic_srcptr(a0) abcommon_name_(field_characteristic_srcptr) (a0) 66 #define abfield_characteristic_bits(a0) abcommon_name_(field_characteristic_bits) (a0) 67 #define abfield_degree(a0) abcommon_name_(field_degree) (a0) 68 69 #define abfield_init(a0) abcommon_name_(field_init) (a0) 70 #define abfield_clear(a0) abcommon_name_(field_clear) (a0) 71 #define abfield_specify(a0,a1,a2) abcommon_name_(field_specify) (a0,a1,a2) 72 #define abfield_setopt(a0,a1,a2) abcommon_name_(field_setopt) (a0,a1,a2) 73 74 #define abinit(a0,a1) abcommon_name_(init) (a0,a1) 75 #define abclear(a0,a1) abcommon_name_(clear) (a0,a1) 76 #define abelt_stride(a0) abcommon_name_(elt_stride) (a0) 77 78 #define abset(a0,a1,a2) abcommon_name_(set) (a0,a1,a2) 79 #define abset_ui(a0,a1,a2) abcommon_name_(set_ui) (a0,a1,a2) 80 #define abset_zero(a0,a1) abcommon_name_(set_zero) (a0,a1) 81 #define abget_ui(a0,a1) abcommon_name_(get_ui) (a0,a1) 82 #define abset_mpn(a0,a1,a2,a3) abcommon_name_(set_mpn) (a0,a1,a2,a3) 83 #define abset_mpz(a0,a1,a2) abcommon_name_(set_mpz) (a0,a1,a2) 84 #define abget_mpn(a0,a1,a2) abcommon_name_(get_mpn) (a0,a1,a2) 85 #define abget_mpz(a0,a1,a2) abcommon_name_(get_mpz) (a0,a1,a2) 86 87 #define abset_uipoly(a0,a1,a2) abcommon_name_(set_uipoly) (a0,a1,a2) 88 #define abset_uipoly_wide(a0,a1,a2,a3) abcommon_name_(set_uipoly_wide) (a0,a1,a2,a3) 89 #define abget_uipoly(a0,a1) abcommon_name_(get_uipoly) (a0,a1) 90 #define abget_uipoly_wide(a0,a1,a2) abcommon_name_(get_uipoly_wide) (a0,a1,a2) 91 92 93 #define abrandom(a0,a1,a2) abcommon_name_(random) (a0,a1,a2) 94 #define abrandom2(a0,a1,a2) abcommon_name_(random2) (a0,a1,a2) 95 96 #define abadd(a0,a1,a2,a3) abcommon_name_(add) (a0,a1,a2,a3) 97 #define absub(a0,a1,a2,a3) abcommon_name_(sub) (a0,a1,a2,a3) 98 #define abneg(a0,a1,a2) abcommon_name_(neg) (a0,a1,a2) 99 #define abmul(a0,a1,a2,a3) abcommon_name_(mul) (a0,a1,a2,a3) 100 #define absqr(a0,a1,a2) abcommon_name_(sqr) (a0,a1,a2) 101 #define abis_sqr(a0,a1) abcommon_name_(is_sqr) (a0,a1) 102 #define absqrt(a0,a1,a2) abcommon_name_(sqrt) (a0,a1,a2) 103 #define abpow(a0,a1,a2,a3,a4) abcommon_name_(pow) (a0,a1,a2,a3,a4) 104 #define abpowz(a0,a1,a2,a3) abcommon_name_(powz) (a0,a1,a2,a3) 105 #define abfrobenius(a0,a1,a2) abcommon_name_(frobenius) (a0,a1,a2) 106 #define abadd_ui(a0,a1,a2,a3) abcommon_name_(add_ui) (a0,a1,a2,a3) 107 #define absub_ui(a0,a1,a2,a3) abcommon_name_(sub_ui) (a0,a1,a2,a3) 108 #define abmul_ui(a0,a1,a2,a3) abcommon_name_(mul_ui) (a0,a1,a2,a3) 109 #define abnormalize(a0,a1) abcommon_name_(normalize) (a0,a1) 110 #define abadd_uipoly(a0,a1,a2,a3) abcommon_name_(add_uipoly) (a0,a1,a2,a3) 111 #define absub_uipoly(a0,a1,a2,a3) abcommon_name_(sub_uipoly) (a0,a1,a2,a3) 112 #define abmul_uipoly(a0,a1,a2,a3) abcommon_name_(mul_uipoly) (a0,a1,a2,a3) 113 #define abinv(a0,a1,a2) abcommon_name_(inv) (a0,a1,a2) 114 #define abas_solve(a0,a1,a2) abcommon_name_(as_solve) (a0,a1,a2) 115 #define abtrace(a0,a1) abcommon_name_(trace) (a0,a1) 116 #define abhadamard(a0,a1,a2,a3,a4) abcommon_name_(hadamard) (a0,a1,a2,a3,a4) 117 118 119 #define abelt_ur_init(a0,a1) abcommon_name_(elt_ur_init) (a0,a1) 120 #define abelt_ur_clear(a0,a1) abcommon_name_(elt_ur_clear) (a0,a1) 121 #define abelt_ur_stride(a0) abcommon_name_(elt_ur_stride) (a0) 122 #define abelt_ur_set(a0,a1,a2) abcommon_name_(elt_ur_set) (a0,a1,a2) 123 #define abelt_ur_set_elt(a0,a1,a2) abcommon_name_(elt_ur_set_elt) (a0,a1,a2) 124 #define abelt_ur_set_zero(a0,a1) abcommon_name_(elt_ur_set_zero) (a0,a1) 125 #define abelt_ur_set_ui(a0,a1,a2) abcommon_name_(elt_ur_set_ui) (a0,a1,a2) 126 #define abelt_ur_add(a0,a1,a2,a3) abcommon_name_(elt_ur_add) (a0,a1,a2,a3) 127 #define abelt_ur_neg(a0,a1,a2) abcommon_name_(elt_ur_neg) (a0,a1,a2) 128 #define abelt_ur_sub(a0,a1,a2,a3) abcommon_name_(elt_ur_sub) (a0,a1,a2,a3) 129 #define abmul_ur(a0,a1,a2,a3) abcommon_name_(mul_ur) (a0,a1,a2,a3) 130 #define absqr_ur(a0,a1,a2) abcommon_name_(sqr_ur) (a0,a1,a2) 131 #define abreduce(a0,a1,a2) abcommon_name_(reduce) (a0,a1,a2) 132 #define abaddmul_si_ur(a0,a1,a2,a3) abcommon_name_(addmul_si_ur) (a0,a1,a2,a3) 133 134 135 #define abcmp(a0,a1,a2) abcommon_name_(cmp) (a0,a1,a2) 136 #define abcmp_ui(a0,a1,a2) abcommon_name_(cmp_ui) (a0,a1,a2) 137 #define abis_zero(a0,a1) abcommon_name_(is_zero) (a0,a1) 138 139 140 #define abmgy_enc(a0,a1,a2) abcommon_name_(mgy_enc) (a0,a1,a2) 141 #define abmgy_dec(a0,a1,a2) abcommon_name_(mgy_dec) (a0,a1,a2) 142 143 144 #define abasprint(a0,a1,a2) abcommon_name_(asprint) (a0,a1,a2) 145 #define abfprint(a0,a1,a2) abcommon_name_(fprint) (a0,a1,a2) 146 #define abcxx_out(a0,a1,a2) abcommon_name_(cxx_out) (a0,a1,a2) 147 #define abprint(a0,a1) abcommon_name_(print) (a0,a1) 148 #define absscan(a0,a1,a2) abcommon_name_(sscan) (a0,a1,a2) 149 #define abfscan(a0,a1,a2) abcommon_name_(fscan) (a0,a1,a2) 150 #define abcxx_in(a0,a1,a2) abcommon_name_(cxx_in) (a0,a1,a2) 151 #define abscan(a0,a1) abcommon_name_(scan) (a0,a1) 152 #define abread(a0,a1,a2) abcommon_name_(read) (a0,a1,a2) 153 #define abimportdata(a0,a1,a2,a3,a4) abcommon_name_(importdata) (a0,a1,a2,a3,a4) 154 #define abwrite(a0,a1,a2) abcommon_name_(write) (a0,a1,a2) 155 #define abexportdata(a0,a1,a2,a3,a4) abcommon_name_(exportdata) (a0,a1,a2,a3,a4) 156 157 158 159 160 161 #define abvec_init(a0,a1,a2) abcommon_name_(vec_init) (a0,a1,a2) 162 #define abvec_reinit(a0,a1,a2,a3) abcommon_name_(vec_reinit) (a0,a1,a2,a3) 163 #define abvec_clear(a0,a1,a2) abcommon_name_(vec_clear) (a0,a1,a2) 164 #define abvec_set(a0,a1,a2,a3) abcommon_name_(vec_set) (a0,a1,a2,a3) 165 #define abvec_set_zero(a0,a1,a2) abcommon_name_(vec_set_zero) (a0,a1,a2) 166 #define abvec_setcoeff(a0,a1,a2,a3) abcommon_name_(vec_setcoeff) (a0,a1,a2,a3) 167 #define abvec_setcoeff_ui(a0,a1,a2,a3) abcommon_name_(vec_setcoeff_ui) (a0,a1,a2,a3) 168 #define abvec_getcoeff(a0,a1,a2,a3) abcommon_name_(vec_getcoeff) (a0,a1,a2,a3) 169 #define abvec_add(a0,a1,a2,a3,a4) abcommon_name_(vec_add) (a0,a1,a2,a3,a4) 170 #define abvec_neg(a0,a1,a2,a3) abcommon_name_(vec_neg) (a0,a1,a2,a3) 171 #define abvec_rev(a0,a1,a2,a3) abcommon_name_(vec_rev) (a0,a1,a2,a3) 172 #define abvec_sub(a0,a1,a2,a3,a4) abcommon_name_(vec_sub) (a0,a1,a2,a3,a4) 173 #define abvec_scal_mul(a0,a1,a2,a3,a4) abcommon_name_(vec_scal_mul) (a0,a1,a2,a3,a4) 174 #define abvec_conv(a0,a1,a2,a3,a4,a5) abcommon_name_(vec_conv) (a0,a1,a2,a3,a4,a5) 175 #define abvec_random(a0,a1,a2,a3) abcommon_name_(vec_random) (a0,a1,a2,a3) 176 #define abvec_random2(a0,a1,a2,a3) abcommon_name_(vec_random2) (a0,a1,a2,a3) 177 #define abvec_cmp(a0,a1,a2,a3) abcommon_name_(vec_cmp) (a0,a1,a2,a3) 178 #define abvec_is_zero(a0,a1,a2) abcommon_name_(vec_is_zero) (a0,a1,a2) 179 #define abvec_subvec(a0,a1,a2) abcommon_name_(vec_subvec) (a0,a1,a2) 180 #define abvec_subvec_const(a0,a1,a2) abcommon_name_(vec_subvec_const) (a0,a1,a2) 181 #define abvec_coeff_ptr(a0,a1,a2) abcommon_name_(vec_coeff_ptr) (a0,a1,a2) 182 #define abvec_coeff_ptr_const(a0,a1,a2) abcommon_name_(vec_coeff_ptr_const) (a0,a1,a2) 183 #define abvec_asprint(a0,a1,a2,a3) abcommon_name_(vec_asprint) (a0,a1,a2,a3) 184 #define abvec_fprint(a0,a1,a2,a3) abcommon_name_(vec_fprint) (a0,a1,a2,a3) 185 #define abvec_print(a0,a1,a2) abcommon_name_(vec_print) (a0,a1,a2) 186 #define abvec_sscan(a0,a1,a2,a3) abcommon_name_(vec_sscan) (a0,a1,a2,a3) 187 #define abvec_fscan(a0,a1,a2,a3) abcommon_name_(vec_fscan) (a0,a1,a2,a3) 188 #define abvec_scan(a0,a1,a2) abcommon_name_(vec_scan) (a0,a1,a2) 189 #define abvec_cxx_out(a0,a1,a2,a3) abcommon_name_(vec_cxx_out) (a0,a1,a2,a3) 190 #define abvec_cxx_in(a0,a1,a2,a3) abcommon_name_(vec_cxx_in) (a0,a1,a2,a3) 191 #define abvec_read(a0,a1,a2,a3) abcommon_name_(vec_read) (a0,a1,a2,a3) 192 #define abvec_write(a0,a1,a2,a3) abcommon_name_(vec_write) (a0,a1,a2,a3) 193 #define abvec_import(a0,a1,a2,a3,a4) abcommon_name_(vec_import) (a0,a1,a2,a3,a4) 194 #define abvec_export(a0,a1,a2,a3,a4) abcommon_name_(vec_export) (a0,a1,a2,a3,a4) 195 #define abvec_hamming_weight(a0,a1,a2) abcommon_name_(vec_hamming_weight) (a0,a1,a2) 196 #define abvec_find_first_set(a0,a1,a2) abcommon_name_(vec_find_first_set) (a0,a1,a2) 197 198 #define abvec_simd_hamming_weight(a0,a1,a2) abcommon_name_(vec_simd_hamming_weight) (a0,a1,a2) 199 #define abvec_simd_find_first_set(a0,a1,a2) abcommon_name_(vec_simd_find_first_set) (a0,a1,a2) 200 201 202 #define abvec_ur_init(a0,a1,a2) abcommon_name_(vec_ur_init) (a0,a1,a2) 203 #define abvec_ur_set_zero(a0,a1,a2) abcommon_name_(vec_ur_set_zero) (a0,a1,a2) 204 #define abvec_ur_set_vec(a0,a1,a2,a3) abcommon_name_(vec_ur_set_vec) (a0,a1,a2,a3) 205 #define abvec_ur_reinit(a0,a1,a2,a3) abcommon_name_(vec_ur_reinit) (a0,a1,a2,a3) 206 #define abvec_ur_clear(a0,a1,a2) abcommon_name_(vec_ur_clear) (a0,a1,a2) 207 #define abvec_ur_set(a0,a1,a2,a3) abcommon_name_(vec_ur_set) (a0,a1,a2,a3) 208 #define abvec_ur_setcoeff(a0,a1,a2,a3) abcommon_name_(vec_ur_setcoeff) (a0,a1,a2,a3) 209 #define abvec_ur_getcoeff(a0,a1,a2,a3) abcommon_name_(vec_ur_getcoeff) (a0,a1,a2,a3) 210 #define abvec_ur_add(a0,a1,a2,a3,a4) abcommon_name_(vec_ur_add) (a0,a1,a2,a3,a4) 211 #define abvec_ur_sub(a0,a1,a2,a3,a4) abcommon_name_(vec_ur_sub) (a0,a1,a2,a3,a4) 212 #define abvec_ur_neg(a0,a1,a2,a3) abcommon_name_(vec_ur_neg) (a0,a1,a2,a3) 213 #define abvec_ur_rev(a0,a1,a2,a3) abcommon_name_(vec_ur_rev) (a0,a1,a2,a3) 214 #define abvec_scal_mul_ur(a0,a1,a2,a3,a4) abcommon_name_(vec_scal_mul_ur) (a0,a1,a2,a3,a4) 215 #define abvec_conv_ur(a0,a1,a2,a3,a4,a5) abcommon_name_(vec_conv_ur) (a0,a1,a2,a3,a4,a5) 216 #define abvec_reduce(a0,a1,a2,a3) abcommon_name_(vec_reduce) (a0,a1,a2,a3) 217 #define abvec_ur_subvec(a0,a1,a2) abcommon_name_(vec_ur_subvec) (a0,a1,a2) 218 #define abvec_ur_subvec_const(a0,a1,a2) abcommon_name_(vec_ur_subvec_const) (a0,a1,a2) 219 #define abvec_ur_coeff_ptr(a0,a1,a2) abcommon_name_(vec_ur_coeff_ptr) (a0,a1,a2) 220 #define abvec_ur_coeff_ptr_const(a0,a1,a2) abcommon_name_(vec_ur_coeff_ptr_const) (a0,a1,a2) 221 222 #define abvec_elt_stride(a0,a1) abcommon_name_(vec_elt_stride) (a0,a1) 223 224 #define abvec_ur_elt_stride(a0,a1) abcommon_name_(vec_ur_elt_stride) (a0,a1) 225 226 227 228 229 #define abpoly_init(a0,a1,a2) abcommon_name_(poly_init) (a0,a1,a2) 230 #define abpoly_clear(a0,a1) abcommon_name_(poly_clear) (a0,a1) 231 #define abpoly_set(a0,a1,a2) abcommon_name_(poly_set) (a0,a1,a2) 232 #define abpoly_setmonic(a0,a1,a2) abcommon_name_(poly_setmonic) (a0,a1,a2) 233 #define abpoly_setcoeff(a0,a1,a2,a3) abcommon_name_(poly_setcoeff) (a0,a1,a2,a3) 234 #define abpoly_setcoeff_ui(a0,a1,a2,a3) abcommon_name_(poly_setcoeff_ui) (a0,a1,a2,a3) 235 #define abpoly_getcoeff(a0,a1,a2,a3) abcommon_name_(poly_getcoeff) (a0,a1,a2,a3) 236 #define abpoly_deg(a0,a1) abcommon_name_(poly_deg) (a0,a1) 237 #define abpoly_add(a0,a1,a2,a3) abcommon_name_(poly_add) (a0,a1,a2,a3) 238 #define abpoly_sub(a0,a1,a2,a3) abcommon_name_(poly_sub) (a0,a1,a2,a3) 239 #define abpoly_set_ui(a0,a1,a2) abcommon_name_(poly_set_ui) (a0,a1,a2) 240 #define abpoly_add_ui(a0,a1,a2,a3) abcommon_name_(poly_add_ui) (a0,a1,a2,a3) 241 #define abpoly_sub_ui(a0,a1,a2,a3) abcommon_name_(poly_sub_ui) (a0,a1,a2,a3) 242 #define abpoly_neg(a0,a1,a2) abcommon_name_(poly_neg) (a0,a1,a2) 243 #define abpoly_scal_mul(a0,a1,a2,a3) abcommon_name_(poly_scal_mul) (a0,a1,a2,a3) 244 #define abpoly_mul(a0,a1,a2,a3) abcommon_name_(poly_mul) (a0,a1,a2,a3) 245 #define abpoly_divmod(a0,a1,a2,a3,a4) abcommon_name_(poly_divmod) (a0,a1,a2,a3,a4) 246 #define abpoly_precomp_mod(a0,a1,a2) abcommon_name_(poly_precomp_mod) (a0,a1,a2) 247 #define abpoly_mod_pre(a0,a1,a2,a3,a4) abcommon_name_(poly_mod_pre) (a0,a1,a2,a3,a4) 248 #define abpoly_gcd(a0,a1,a2,a3) abcommon_name_(poly_gcd) (a0,a1,a2,a3) 249 #define abpoly_xgcd(a0,a1,a2,a3,a4,a5) abcommon_name_(poly_xgcd) (a0,a1,a2,a3,a4,a5) 250 #define abpoly_random(a0,a1,a2,a3) abcommon_name_(poly_random) (a0,a1,a2,a3) 251 #define abpoly_random2(a0,a1,a2,a3) abcommon_name_(poly_random2) (a0,a1,a2,a3) 252 #define abpoly_cmp(a0,a1,a2) abcommon_name_(poly_cmp) (a0,a1,a2) 253 #define abpoly_asprint(a0,a1,a2) abcommon_name_(poly_asprint) (a0,a1,a2) 254 #define abpoly_fprint(a0,a1,a2) abcommon_name_(poly_fprint) (a0,a1,a2) 255 #define abpoly_print(a0,a1) abcommon_name_(poly_print) (a0,a1) 256 #define abpoly_sscan(a0,a1,a2) abcommon_name_(poly_sscan) (a0,a1,a2) 257 #define abpoly_fscan(a0,a1,a2) abcommon_name_(poly_fscan) (a0,a1,a2) 258 #define abpoly_scan(a0,a1) abcommon_name_(poly_scan) (a0,a1) 259 #define abpoly_cxx_out(a0,a1,a2) abcommon_name_(poly_cxx_out) (a0,a1,a2) 260 #define abpoly_cxx_in(a0,a1,a2) abcommon_name_(poly_cxx_in) (a0,a1,a2) 261 262 263 264 #define absimd_groupsize(a0) abcommon_name_(simd_groupsize) (a0) 265 #define absimd_hamming_weight(a0,a1) abcommon_name_(simd_hamming_weight) (a0,a1) 266 #define absimd_find_first_set(a0,a1) abcommon_name_(simd_find_first_set) (a0,a1) 267 #define absimd_get_ui_at(a0,a1,a2) abcommon_name_(simd_get_ui_at) (a0,a1,a2) 268 #define absimd_set_ui_at(a0,a1,a2,a3) abcommon_name_(simd_set_ui_at) (a0,a1,a2,a3) 269 #define absimd_add_ui_at(a0,a1,a2,a3,a4) abcommon_name_(simd_add_ui_at) (a0,a1,a2,a3,a4) 270 #define absimd_set_ui_all(a0,a1,a2) abcommon_name_(simd_set_ui_all) (a0,a1,a2) 271 #define abadd_dotprod(a0,a1,a2,a3,a4) abcommon_name_(add_dotprod) (a0,a1,a2,a3,a4) 272 #define abmul_constant_ui(a0,a1,a2,a3) abcommon_name_(mul_constant_ui) (a0,a1,a2,a3) 273 274 275 #define abmember_template_add_dotprod(a0,a1,a2,a3,a4,a5) abcommon_name_(member_template_add_dotprod) (a0,a1,a2,a3,a4,a5) 276 #define abmember_template_addmul_tiny(a0,a1,a2,a3,a4,a5) abcommon_name_(member_template_addmul_tiny) (a0,a1,a2,a3,a4,a5) 277 #define abmember_template_transpose(a0,a1,a2,a3) abcommon_name_(member_template_transpose) (a0,a1,a2,a3) 278 279 280 281 282 283 #define aboo_field_init(a0) abcommon_name_(oo_field_init) (a0) 284 #define aboo_field_clear(a0) abcommon_name_(oo_field_clear) (a0) 285 286 287 /* another customary shorthand */ 288 #define abdegree abfield_degree() 289 290 291 #endif /* MPFQ_NAME_AB_H_ */ 292