diff --git a/bin/all_rst_to_pxd.sh b/bin/all_rst_to_pxd.sh index 6562c85f..b6278216 100755 --- a/bin/all_rst_to_pxd.sh +++ b/bin/all_rst_to_pxd.sh @@ -1,26 +1,154 @@ #!/usr/bin/env bash -FLINT_DOC_DIR=$1 - set -e -modules="\ - fmpz\ - fmpz_factor\ - fmpz_poly\ - fmpz_poly_factor\ - fmpz_mat\ - fmpz_lll\ - arf\ - arb\ - arb_poly\ - arb_mat\ - acb\ - acb_poly\ - acb_mat\ - " +if [ $# -eq 0 ] + then + echo "Usage: bin/all_rst_to_pxd.sh /path/to/flint/doc/source" + exit 1 +fi + +FLINT_DOC_DIR=$1 + +modules=( + # "flint" + "mpoly" + # "thread_pool" + # "machine_vectors" + # "gr" + # "gr_domains" + # "gr_generic" + # "gr_implementing" + # "gr_mat" + # "gr_mpoly" + # "gr_poly" + # "gr_special" + # "gr_vec" + "ulong_extras" + "fmpz" + # "fmpz_extras" + "fmpz_factor" + "fmpz_lll" + "fmpz_mat" + "fmpz_mpoly" + "fmpz_mpoly_factor" + "fmpz_mpoly_q" + "fmpz_poly" + "fmpz_poly_factor" + # "fmpz_poly_mat" + # "fmpz_poly_q" + "fmpz_vec" + # "long_extras" + # "longlong" + # "mpn_extras" + # "aprcl" + "arith" + # "fft" + # "fft_small" + # "qsieve" + "fmpq" + "fmpq_mat" + "fmpq_mpoly" + "fmpq_mpoly_factor" + "fmpq_poly" + "fmpq_vec" + "nmod" + "nmod_mat" + "nmod_mpoly" + "nmod_mpoly_factor" + "nmod_poly" + "nmod_poly_factor" + # "nmod_poly_mat" + "nmod_vec" + # "mpn_mod" + "fmpz_mod" + "fmpz_mod_mat" + "fmpz_mod_mpoly" + "fmpz_mod_mpoly_factor" + "fmpz_mod_poly" + "fmpz_mod_poly_factor" + "fmpz_mod_vec" + "dirichlet" + # "dlog" + # "bool_mat" + # "perm" + # "qfb" + # "nf" + # "nf_elem" + # "fmpzi" + # "qqbar" + "mag" + # "nfloat" + "arf" + # "acf" + "arb" + # "arb_calc" + "arb_fmpz_poly" + # "arb_fpwrap" + "arb_hypgeom" + "arb_mat" + "arb_poly" + "acb" + "acb_calc" + "acb_dft" + "acb_dirichlet" + "acb_elliptic" + "acb_hypgeom" + "acb_mat" + "acb_modular" + "acb_poly" + "acb_theta" + "bernoulli" + # "hypgeom" + "partitions" + # "ca" + # "ca_ext" + # "ca_field" + # "ca_mat" + # "ca_poly" + # "ca_vec" + # "calcium" + # "fexpr" + # "fexpr_builtin" + "fq" + # "fq_embed" + "fq_mat" + "fq_poly" + "fq_poly_factor" + # "fq_vec" + "fq_nmod" + # "fq_nmod_embed" + "fq_nmod_mat" + # "fq_nmod_mpoly" + # "fq_nmod_mpoly_factor" + "fq_nmod_poly" + "fq_nmod_poly_factor" + # "fq_nmod_vec" + "fq_zech" + # "fq_zech_embed" + "fq_zech_mat" + "fq_zech_poly" + "fq_zech_poly_factor" + # "fq_zech_vec" + "fq_default" + "fq_default_mat" + "fq_default_poly" + "fq_default_poly_factor" + # "padic" + # "padic_mat" + # "padic_poly" + # "qadic" + # "double_extras" + # "double_interval" + # "d_mat" + # "d_vec" + # "mpfr_mat" + # "mpfr_vec" +) -for module in $modules; do +for module in ${modules[@]}; do echo "Processing $module" - bin/rst_to_pxd.py flint/$module --flint-doc-dir=$FLINT_DOC_DIR > src/flint/flintlib/$module.pxd + bin/rst_to_pxd.py flint/$module \ + --flint-doc-dir=$FLINT_DOC_DIR \ + > src/flint/flintlib/functions/$module.pxd done diff --git a/bin/rst_to_pxd.py b/bin/rst_to_pxd.py index 5092ca54..5797b9b2 100755 --- a/bin/rst_to_pxd.py +++ b/bin/rst_to_pxd.py @@ -62,8 +62,14 @@ def get_cython_struct_types(file): l = line.strip() if l[:8] == "ctypedef": if l[-1] == ']': + # ctypedef foo foo_t[0] l = l[:l.rfind('[')] + elif '(' in l: + # ctypedef int (*foo_func)(...) + l = l[l.index('('):].lstrip('(*') + l = l[:l.index(')')] else: + # ctypedef foo: l = l.strip(':') ret.append(l.split()[-1]) return ret @@ -72,12 +78,14 @@ def fill_import_dict(pyflintlibdir): """ Get a map from cython structs to the pxd that defines them """ - with os.scandir(pyflintlibdir) as entry: + import_dict['fmpq_struct'] = 'types.fmpq' + + with os.scandir(pyflintlibdir + '/types') as entry: for f in entry: if fnmatch.fnmatch(f.name, "*.pxd"): with open(f.path) as pxd: for t in get_cython_struct_types(pxd): - import_dict[t] = f.name.split('.')[0] + import_dict[t] = 'types.' + f.name.split('.')[0] def undecorate(str): """ @@ -86,12 +94,13 @@ def undecorate(str): ret = str.strip() if ' ' in ret: ret = ret[:ret.rfind(' ')] - ret = re.sub(type_modifers, '', ret) - return ret.strip() + ret = re.sub(type_modifers, '', ret).strip() + return ret def get_parameter_types(str): params = str[str.find("(") + 1 : str.rfind(")")].split(",") - params.append(str.split()[0]) + ret_type = str.split('(')[0].rsplit(' ', 1)[0] + params.append(ret_type) return [undecorate(s) for s in params if s] def clean_types(function): diff --git a/pyproject.toml b/pyproject.toml index 5cab8aa6..18adb595 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,7 +59,7 @@ build-backend = "mesonpy" # resolved. max-line-length = 120 ignore = ['E129','E501','E741','E743'] -exclude = 'src/flint/flintlib/.*' +exclude = 'src/flint/flintlib/functions.*' [tool.spin] package = "flint" diff --git a/src/flint/flint_base/flint_base.pxd b/src/flint/flint_base/flint_base.pxd index d9d31c73..2f493687 100644 --- a/src/flint/flint_base/flint_base.pxd +++ b/src/flint/flint_base/flint_base.pxd @@ -1,4 +1,4 @@ -from flint.flintlib.mpoly cimport ordering_t +from flint.flintlib.types.mpoly cimport ordering_t cdef class flint_elem: pass diff --git a/src/flint/flint_base/flint_base.pyx b/src/flint/flint_base/flint_base.pyx index 2771c023..69f53490 100644 --- a/src/flint/flint_base/flint_base.pyx +++ b/src/flint/flint_base/flint_base.pyx @@ -1,11 +1,11 @@ -from flint.flintlib.flint cimport ( +from flint.flintlib.types.flint cimport ( FLINT_BITS as _FLINT_BITS, FLINT_VERSION as _FLINT_VERSION, __FLINT_RELEASE as _FLINT_RELEASE, slong ) from flint.utils.flint_exceptions import DomainError -from flint.flintlib.mpoly cimport ordering_t +from flint.flintlib.types.mpoly cimport ordering_t from flint.flint_base.flint_context cimport thectx from flint.flint_base.flint_base cimport Ordering from flint.utils.typecheck cimport typecheck diff --git a/src/flint/flint_base/flint_context.pxd b/src/flint/flint_base/flint_context.pxd index e9672f50..cc060acc 100644 --- a/src/flint/flint_base/flint_context.pxd +++ b/src/flint/flint_base/flint_context.pxd @@ -1,4 +1,4 @@ -from flint.flintlib.arf_types cimport ( +from flint.flintlib.types.arf cimport ( arf_rnd_t, ) diff --git a/src/flint/flint_base/flint_context.pyx b/src/flint/flint_base/flint_context.pyx index dca6f08f..c4c02df6 100644 --- a/src/flint/flint_base/flint_context.pyx +++ b/src/flint/flint_base/flint_context.pyx @@ -1,5 +1,5 @@ -from flint.flintlib.arf_types cimport arf_rnd_t -from flint.flintlib.flint cimport ( +from flint.flintlib.types.arf cimport arf_rnd_t +from flint.flintlib.types.flint cimport ( flint_cleanup, flint_get_num_threads, flint_set_num_threads diff --git a/src/flint/flintlib/acb_dft.pxd b/src/flint/flintlib/acb_dft.pxd deleted file mode 100644 index bdd98046..00000000 --- a/src/flint/flintlib/acb_dft.pxd +++ /dev/null @@ -1,5 +0,0 @@ -from flint.flintlib.acb cimport acb_ptr, acb_srcptr - -cdef extern from "flint/acb_dft.h": - void acb_dft(acb_ptr w, acb_srcptr v, long n, long prec) - void acb_dft_inverse(acb_ptr w, acb_srcptr v, long n, long prec) diff --git a/src/flint/flintlib/acb_modular.pxd b/src/flint/flintlib/acb_modular.pxd deleted file mode 100644 index a3c72899..00000000 --- a/src/flint/flintlib/acb_modular.pxd +++ /dev/null @@ -1,19 +0,0 @@ -from flint.flintlib.acb cimport acb_t, acb_ptr -from flint.flintlib.acb_poly cimport acb_poly_t -from flint.flintlib.fmpz_poly cimport fmpz_poly_t - -cdef extern from "flint/acb_modular.h": - void acb_modular_theta(acb_t theta1, acb_t theta2, acb_t theta3, acb_t theta4, const acb_t z, const acb_t tau, long prec) - void acb_modular_theta_jet(acb_ptr theta1, acb_ptr theta2, acb_ptr theta3, acb_ptr theta4, const acb_t z, const acb_t tau, long len, long prec) - void acb_modular_theta_series(acb_poly_t theta1, acb_poly_t theta2, acb_poly_t theta3, acb_poly_t theta4, const acb_poly_t z, const acb_t tau, long len, long prec) - void acb_modular_eta(acb_t r, const acb_t tau, long prec) - void acb_modular_j(acb_t r, const acb_t tau, long prec) - void acb_modular_lambda(acb_t r, const acb_t tau, long prec) - void acb_modular_delta(acb_t r, const acb_t tau, long prec) - void acb_modular_eisenstein(acb_ptr r, const acb_t tau, long len, long prec) - void acb_modular_elliptic_p(acb_t wp, const acb_t z, const acb_t tau, long prec) - void acb_modular_elliptic_p_zpx(acb_ptr wp, const acb_t z, const acb_t tau, long len, long prec) - void acb_modular_elliptic_k(acb_t w, const acb_t m, long prec) - void acb_modular_elliptic_k_cpx(acb_ptr w, const acb_t m, long len, long prec) - void acb_modular_elliptic_e(acb_t w, const acb_t m, long prec) - void acb_modular_hilbert_class_poly(fmpz_poly_t res, long D) diff --git a/src/flint/flintlib/fmpq.pxd b/src/flint/flintlib/fmpq.pxd deleted file mode 100644 index c10cf64a..00000000 --- a/src/flint/flintlib/fmpq.pxd +++ /dev/null @@ -1,259 +0,0 @@ -from flint.flintlib.flint cimport ulong, flint_rand_t, mp_bitcnt_t, slong, flint_bitcnt_t -from flint.flintlib.fmpz cimport fmpz_struct, fmpz_t - -cdef extern from *: - """ - /* An ugly hack to get around the ugly hack of renaming fmpq to avoid a c/python name collision */ - typedef fmpq fmpq_struct; - """ - -cdef extern from "flint/fmpq.h": - ctypedef struct fmpq_struct: - fmpz_struct num - fmpz_struct den - - ctypedef fmpq_struct fmpq_t[1] - - fmpz_struct * fmpq_numref(fmpq_t x) - fmpz_struct * fmpq_denref(fmpq_t x) - -# from here on is parsed - void fmpq_init(fmpq_t x) - void fmpq_clear(fmpq_t x) - void fmpq_canonicalise(fmpq_t res) - void _fmpq_canonicalise(fmpz_t num, fmpz_t den) - int fmpq_is_canonical(const fmpq_t x) - int _fmpq_is_canonical(const fmpz_t num, const fmpz_t den) - void fmpq_set(fmpq_t dest, const fmpq_t src) - void fmpq_swap(fmpq_t op1, fmpq_t op2) - void fmpq_neg(fmpq_t dest, const fmpq_t src) - void fmpq_abs(fmpq_t dest, const fmpq_t src) - void fmpq_zero(fmpq_t res) - void fmpq_one(fmpq_t res) - int fmpq_is_zero(const fmpq_t res) - int fmpq_is_one(const fmpq_t res) - int fmpq_is_pm1(const fmpq_t res) - int fmpq_equal(const fmpq_t x, const fmpq_t y) - int fmpq_sgn(const fmpq_t x) - int fmpq_cmp(const fmpq_t x, const fmpq_t y) - int fmpq_cmp_fmpz(const fmpq_t x, const fmpz_t y) - int fmpq_cmp_ui(const fmpq_t x, ulong y) - int fmpq_cmp_si(const fmpq_t x, slong y) - int fmpq_equal_ui(const fmpq_t x, ulong y) - int fmpq_equal_si(const fmpq_t x, slong y) - void fmpq_height(fmpz_t height, const fmpq_t x) - flint_bitcnt_t fmpq_height_bits(const fmpq_t x) - void fmpq_set_fmpz_frac(fmpq_t res, const fmpz_t p, const fmpz_t q) - # void fmpq_get_mpz_frac(mpz_t a, mpz_t b, fmpq_t c) - void fmpq_set_si(fmpq_t res, slong p, ulong q) - void _fmpq_set_si(fmpz_t rnum, fmpz_t rden, slong p, ulong q) - void fmpq_set_ui(fmpq_t res, ulong p, ulong q) - void _fmpq_set_ui(fmpz_t rnum, fmpz_t rden, ulong p, ulong q) - # void fmpq_set_mpq(fmpq_t dest, const mpq_t src) - void fmpq_set_str(fmpq_t dest, const char * s, int base) - # void fmpq_init_set_mpz_frac_readonly(fmpq_t z, const mpz_t p, const mpz_t q) - double fmpq_get_d(const fmpq_t f) - # void fmpq_get_mpq(mpq_t dest, const fmpq_t src) - # int fmpq_get_mpfr(mpfr_t dest, const fmpq_t src, mpfr_rnd_t rnd) - char * _fmpq_get_str(char * str, int b, const fmpz_t num, const fmpz_t den) - char * fmpq_get_str(char * str, int b, const fmpq_t x) - # void flint_mpq_init_set_readonly(mpq_t z, const fmpq_t f) - # void flint_mpq_clear_readonly(mpq_t z) - # void fmpq_init_set_readonly(fmpq_t f, const mpq_t z) - void fmpq_clear_readonly(fmpq_t f) - int fmpq_print(const fmpq_t x) - int _fmpq_print(const fmpz_t num, const fmpz_t den) - void fmpq_randtest(fmpq_t res, flint_rand_t state, flint_bitcnt_t bits) - void _fmpq_randtest(fmpz_t num, fmpz_t den, flint_rand_t state, flint_bitcnt_t bits) - void fmpq_randtest_not_zero(fmpq_t res, flint_rand_t state, flint_bitcnt_t bits) - void fmpq_randbits(fmpq_t res, flint_rand_t state, flint_bitcnt_t bits) - void _fmpq_randbits(fmpz_t num, fmpz_t den, flint_rand_t state, flint_bitcnt_t bits) - void fmpq_add(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void fmpq_sub(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void fmpq_mul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void fmpq_div(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void _fmpq_add(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) - void _fmpq_sub(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) - void _fmpq_mul(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) - void _fmpq_div(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) - void _fmpq_add_si(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, slong r) - void _fmpq_sub_si(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, slong r) - void _fmpq_add_ui(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, ulong r) - void _fmpq_sub_ui(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, ulong r) - void _fmpq_add_fmpz(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, const fmpz_t r) - void _fmpq_sub_fmpz(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, const fmpz_t r) - void fmpq_add_si(fmpq_t res, const fmpq_t op1, slong c) - void fmpq_sub_si(fmpq_t res, const fmpq_t op1, slong c) - void fmpq_add_ui(fmpq_t res, const fmpq_t op1, ulong c) - void fmpq_sub_ui(fmpq_t res, const fmpq_t op1, ulong c) - void fmpq_add_fmpz(fmpq_t res, const fmpq_t op1, const fmpz_t c) - void fmpq_sub_fmpz(fmpq_t res, const fmpq_t op1, const fmpz_t c) - void _fmpq_mul_si(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, slong r) - void fmpq_mul_si(fmpq_t res, const fmpq_t op1, slong c) - void _fmpq_mul_ui(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, ulong r) - void fmpq_mul_ui(fmpq_t res, const fmpq_t op1, ulong c) - void fmpq_addmul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void fmpq_submul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void _fmpq_addmul(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) - void _fmpq_submul(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) - void fmpq_inv(fmpq_t dest, const fmpq_t src) - void _fmpq_pow_si(fmpz_t rnum, fmpz_t rden, const fmpz_t opnum, const fmpz_t opden, slong e) - void fmpq_pow_si(fmpq_t res, const fmpq_t op, slong e) - int fmpq_pow_fmpz(fmpq_t a, const fmpq_t b, const fmpz_t e) - void fmpq_mul_fmpz(fmpq_t res, const fmpq_t op, const fmpz_t x) - void fmpq_div_fmpz(fmpq_t res, const fmpq_t op, const fmpz_t x) - void fmpq_mul_2exp(fmpq_t res, const fmpq_t x, flint_bitcnt_t exp) - void fmpq_div_2exp(fmpq_t res, const fmpq_t x, flint_bitcnt_t exp) - void _fmpq_gcd(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, const fmpz_t r, const fmpz_t s) - void fmpq_gcd(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void _fmpq_gcd_cofactors(fmpz_t gnum, fmpz_t gden, fmpz_t abar, fmpz_t bbar, const fmpz_t anum, const fmpz_t aden, const fmpz_t bnum, const fmpz_t bden) - void fmpq_gcd_cofactors(fmpq_t g, fmpz_t abar, fmpz_t bbar, const fmpq_t a, const fmpq_t b) - void _fmpq_add_small(fmpz_t rnum, fmpz_t rden, slong p1, ulong q1, slong p2, ulong q2) - void _fmpq_mul_small(fmpz_t rnum, fmpz_t rden, slong p1, ulong q1, slong p2, ulong q2) - int _fmpq_mod_fmpz(fmpz_t res, const fmpz_t num, const fmpz_t den, const fmpz_t mod) - int fmpq_mod_fmpz(fmpz_t res, const fmpq_t x, const fmpz_t mod) - int _fmpq_reconstruct_fmpz_2_naive(fmpz_t n, fmpz_t d, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) - int _fmpq_reconstruct_fmpz_2(fmpz_t n, fmpz_t d, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) - int fmpq_reconstruct_fmpz_2(fmpq_t res, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) - int _fmpq_reconstruct_fmpz(fmpz_t n, fmpz_t d, const fmpz_t a, const fmpz_t m) - int fmpq_reconstruct_fmpz(fmpq_t res, const fmpz_t a, const fmpz_t m) - void _fmpq_next_minimal(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) - void fmpq_next_minimal(fmpq_t res, const fmpq_t x) - void _fmpq_next_signed_minimal(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) - void fmpq_next_signed_minimal(fmpq_t res, const fmpq_t x) - void _fmpq_next_calkin_wilf(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) - void fmpq_next_calkin_wilf(fmpq_t res, const fmpq_t x) - void _fmpq_next_signed_calkin_wilf(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) - void fmpq_next_signed_calkin_wilf(fmpq_t res, const fmpq_t x) - void fmpq_farey_neighbors(fmpq_t l, fmpq_t r, const fmpq_t x, const fmpz_t Q) - void fmpq_simplest_between(fmpq_t x, const fmpq_t l, const fmpq_t r) - void _fmpq_simplest_between(fmpz_t x_num, fmpz_t x_den, const fmpz_t l_num, const fmpz_t l_den, const fmpz_t r_num, const fmpz_t r_den) - slong fmpq_get_cfrac(fmpz_struct * c, fmpq_t rem, const fmpq_t x, slong n) - slong fmpq_get_cfrac_naive(fmpz_struct * c, fmpq_t rem, const fmpq_t x, slong n) - void fmpq_set_cfrac(fmpq_t x, const fmpz_struct * c, slong n) - slong fmpq_cfrac_bound(const fmpq_t x) - void _fmpq_harmonic_ui(fmpz_t num, fmpz_t den, ulong n) - void fmpq_harmonic_ui(fmpq_t x, ulong n) - void fmpq_dedekind_sum(fmpq_t s, const fmpz_t h, const fmpz_t k) - void fmpq_dedekind_sum_naive(fmpq_t s, const fmpz_t h, const fmpz_t k) - char * _fmpq_get_str(char * str, int b, const fmpz_t num, const fmpz_t den) - char * fmpq_get_str(char * str, int b, const fmpq_t x) - # void flint_mpq_init_set_readonly(mpq_t z, const fmpq_t f) - # void flint_mpq_clear_readonly(mpq_t z) - # void fmpq_init_set_readonly(fmpq_t f, const mpq_t z) - void fmpq_clear_readonly(fmpq_t f) - int fmpq_print(const fmpq_t x) - int _fmpq_print(const fmpz_t num, const fmpz_t den) - void fmpq_randtest(fmpq_t res, flint_rand_t state, flint_bitcnt_t bits) - void _fmpq_randtest(fmpz_t num, fmpz_t den, flint_rand_t state, flint_bitcnt_t bits) - void fmpq_randtest_not_zero(fmpq_t res, flint_rand_t state, flint_bitcnt_t bits) - void fmpq_randbits(fmpq_t res, flint_rand_t state, flint_bitcnt_t bits) - void _fmpq_randbits(fmpz_t num, fmpz_t den, flint_rand_t state, flint_bitcnt_t bits) - void fmpq_add(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void fmpq_sub(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void fmpq_mul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void fmpq_div(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void _fmpq_add(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) - void _fmpq_sub(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) - void _fmpq_mul(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) - void _fmpq_div(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) - void _fmpq_add_si(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, slong r) - void _fmpq_sub_si(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, slong r) - void _fmpq_add_ui(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, ulong r) - void _fmpq_sub_ui(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, ulong r) - void _fmpq_add_fmpz(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, const fmpz_t r) - void _fmpq_sub_fmpz(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, const fmpz_t r) - void fmpq_add_si(fmpq_t res, const fmpq_t op1, slong c) - void fmpq_sub_si(fmpq_t res, const fmpq_t op1, slong c) - void fmpq_add_ui(fmpq_t res, const fmpq_t op1, ulong c) - void fmpq_sub_ui(fmpq_t res, const fmpq_t op1, ulong c) - void fmpq_add_fmpz(fmpq_t res, const fmpq_t op1, const fmpz_t c) - void fmpq_sub_fmpz(fmpq_t res, const fmpq_t op1, const fmpz_t c) - void _fmpq_mul_si(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, slong r) - void fmpq_mul_si(fmpq_t res, const fmpq_t op1, slong c) - void _fmpq_mul_ui(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, ulong r) - void fmpq_mul_ui(fmpq_t res, const fmpq_t op1, ulong c) - void fmpq_addmul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void fmpq_submul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void _fmpq_addmul(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) - void _fmpq_submul(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) - void fmpq_inv(fmpq_t dest, const fmpq_t src) - void _fmpq_pow_si(fmpz_t rnum, fmpz_t rden, const fmpz_t opnum, const fmpz_t opden, slong e) - void fmpq_pow_si(fmpq_t res, const fmpq_t op, slong e) - int fmpq_pow_fmpz(fmpq_t a, const fmpq_t b, const fmpz_t e) - void fmpq_mul_fmpz(fmpq_t res, const fmpq_t op, const fmpz_t x) - void fmpq_div_fmpz(fmpq_t res, const fmpq_t op, const fmpz_t x) - void fmpq_mul_2exp(fmpq_t res, const fmpq_t x, flint_bitcnt_t exp) - void fmpq_div_2exp(fmpq_t res, const fmpq_t x, flint_bitcnt_t exp) - void _fmpq_gcd(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, const fmpz_t r, const fmpz_t s) - void fmpq_gcd(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void _fmpq_gcd_cofactors(fmpz_t gnum, fmpz_t gden, fmpz_t abar, fmpz_t bbar, const fmpz_t anum, const fmpz_t aden, const fmpz_t bnum, const fmpz_t bden) - void fmpq_gcd_cofactors(fmpq_t g, fmpz_t abar, fmpz_t bbar, const fmpq_t a, const fmpq_t b) - void _fmpq_add_small(fmpz_t rnum, fmpz_t rden, slong p1, ulong q1, slong p2, ulong q2) - void _fmpq_mul_small(fmpz_t rnum, fmpz_t rden, slong p1, ulong q1, slong p2, ulong q2) - int _fmpq_mod_fmpz(fmpz_t res, const fmpz_t num, const fmpz_t den, const fmpz_t mod) - int fmpq_mod_fmpz(fmpz_t res, const fmpq_t x, const fmpz_t mod) - int _fmpq_reconstruct_fmpz_2_naive(fmpz_t n, fmpz_t d, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) - int _fmpq_reconstruct_fmpz_2(fmpz_t n, fmpz_t d, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) - int fmpq_reconstruct_fmpz_2(fmpq_t res, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) - int _fmpq_reconstruct_fmpz(fmpz_t n, fmpz_t d, const fmpz_t a, const fmpz_t m) - int fmpq_reconstruct_fmpz(fmpq_t res, const fmpz_t a, const fmpz_t m) - void _fmpq_next_minimal(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) - void fmpq_next_minimal(fmpq_t res, const fmpq_t x) - void _fmpq_next_signed_minimal(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) - void fmpq_next_signed_minimal(fmpq_t res, const fmpq_t x) - void _fmpq_next_calkin_wilf(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) - void fmpq_next_calkin_wilf(fmpq_t res, const fmpq_t x) - void _fmpq_next_signed_calkin_wilf(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) - void fmpq_next_signed_calkin_wilf(fmpq_t res, const fmpq_t x) - void fmpq_farey_neighbors(fmpq_t l, fmpq_t r, const fmpq_t x, const fmpz_t Q) - void fmpq_simplest_between(fmpq_t x, const fmpq_t l, const fmpq_t r) - void _fmpq_simplest_between(fmpz_t x_num, fmpz_t x_den, const fmpz_t l_num, const fmpz_t l_den, const fmpz_t r_num, const fmpz_t r_den) - slong fmpq_get_cfrac(fmpz_struct * c, fmpq_t rem, const fmpq_t x, slong n) - slong fmpq_get_cfrac_naive(fmpz_struct * c, fmpq_t rem, const fmpq_t x, slong n) - void fmpq_set_cfrac(fmpq_t x, const fmpz_struct * c, slong n) - slong fmpq_cfrac_bound(const fmpq_t x) - void _fmpq_harmonic_ui(fmpz_t num, fmpz_t den, ulong n) - void fmpq_harmonic_ui(fmpq_t x, ulong n) - void fmpq_dedekind_sum(fmpq_t s, const fmpz_t h, const fmpz_t k) - void fmpq_dedekind_sum_naive(fmpq_t s, const fmpz_t h, const fmpz_t k) - - # void fmpq_init(fmpq_t x) - # void fmpq_clear(fmpq_t x) - # void fmpq_zero(fmpq_t res) - # void fmpq_one(fmpq_t res) - # int fmpq_equal(fmpq_t x, fmpq_t y) - # int fmpq_sgn(fmpq_t x) - # int fmpq_is_zero(fmpq_t x) - # int fmpq_is_one(fmpq_t x) - # void fmpq_set(fmpq_t dest, fmpq_t src) - # void fmpq_neg(fmpq_t dest, fmpq_t src) - # void fmpq_canonicalise(fmpq_t res) - # int fmpq_is_canonical(fmpq_t x) - # void fmpq_set_si(fmpq_t res, long p, ulong q) - # #void fmpq_set_mpq(fmpq_t dest, mpq_t src) - # #void fmpq_get_mpq(mpq_t dest, fmpq_t src) - # void fmpq_print(fmpq_t x) - # void fmpq_randtest(fmpq_t res, flint_rand_t state, mp_bitcnt_t bits) - # void fmpq_randbits(fmpq_t res, flint_rand_t state, mp_bitcnt_t bits) - # void fmpq_add(fmpq_t res, fmpq_t op1, fmpq_t op2) - # void fmpq_sub(fmpq_t res, fmpq_t op1, fmpq_t op2) - # void fmpq_mul(fmpq_t res, fmpq_t op1, fmpq_t op2) - # void fmpq_mul_fmpz(fmpq_t res, fmpq_t op, fmpz_t x) - # void fmpq_addmul(fmpq_t res, fmpq_t op1, fmpq_t op2) - # void fmpq_submul(fmpq_t res, fmpq_t op1, fmpq_t op2) - # void fmpq_inv(fmpq_t dest, fmpq_t src) - # void fmpq_div(fmpq_t res, fmpq_t op1, fmpq_t op2) - # void fmpq_div_fmpz(fmpq_t res, fmpq_t op, fmpz_t x) - # int fmpq_mod_fmpz(fmpz_t res, fmpq_t x, fmpz_t mod) - # int fmpq_pow_fmpz(fmpq_t a, const fmpq_t b, const fmpz_t e) - # int fmpq_reconstruct_fmpz(fmpq_t res, fmpz_t a, fmpz_t m) - # int fmpq_reconstruct_fmpz_2(fmpq_t res, fmpz_t a, fmpz_t m, fmpz_t N, fmpz_t D) - # mp_bitcnt_t fmpq_height_bits(fmpq_t x) - # void fmpq_height(fmpz_t height, fmpq_t x) - # void fmpq_next_calkin_wilf(fmpq_t res, fmpq_t x) - # void fmpq_next_signed_calkin_wilf(fmpq_t res, fmpq_t x) - # void fmpq_next_minimal(fmpq_t res, fmpq_t x) - # void fmpq_next_signed_minimal(fmpq_t res, fmpq_t x) - # void fmpq_harmonic_ui(fmpq_t res, ulong n) - # void fmpq_dedekind_sum(fmpq_t s, const fmpz_t h, const fmpz_t k) diff --git a/src/flint/flintlib/__init__.pxd b/src/flint/flintlib/functions/__init__.pxd similarity index 100% rename from src/flint/flintlib/__init__.pxd rename to src/flint/flintlib/functions/__init__.pxd diff --git a/src/flint/flintlib/functions/__init__.py b/src/flint/flintlib/functions/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/flint/flintlib/acb.pxd b/src/flint/flintlib/functions/acb.pxd similarity index 97% rename from src/flint/flintlib/acb.pxd rename to src/flint/flintlib/functions/acb.pxd index c16a60de..e33491a4 100644 --- a/src/flint/flintlib/acb.pxd +++ b/src/flint/flintlib/functions/acb.pxd @@ -1,9 +1,8 @@ -from flint.flintlib.acb_types cimport acb_ptr, acb_srcptr, acb_t -from flint.flintlib.arb_types cimport arb_ptr, arb_srcptr, arb_t, mag_srcptr, mag_t -from flint.flintlib.arf_types cimport arf_srcptr, arf_t -from flint.flintlib.flint cimport flint_rand_t, fmpz_struct, slong, ulong -from flint.flintlib.fmpq cimport fmpq_t -from flint.flintlib.fmpz_types cimport fmpz_t +from flint.flintlib.types.acb cimport acb_ptr, acb_srcptr, acb_t +from flint.flintlib.types.arb cimport arb_ptr, arb_srcptr, arb_t, mag_srcptr, mag_t +from flint.flintlib.types.arf cimport arf_srcptr, arf_t +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_struct, fmpz_t, slong, ulong +from flint.flintlib.types.fmpq cimport fmpq_t # unknown type FILE diff --git a/src/flint/flintlib/acb_calc.pxd b/src/flint/flintlib/functions/acb_calc.pxd similarity index 57% rename from src/flint/flintlib/acb_calc.pxd rename to src/flint/flintlib/functions/acb_calc.pxd index 86cec2d0..2b783f6c 100644 --- a/src/flint/flintlib/acb_calc.pxd +++ b/src/flint/flintlib/functions/acb_calc.pxd @@ -1,25 +1,14 @@ -from flint.flintlib.acb cimport acb_t, acb_ptr -from flint.flintlib.mag cimport mag_t -from flint.flintlib.flint cimport slong -from flint.flintlib.arb cimport arb_t -from flint.flintlib.arf cimport arf_t +from flint.flintlib.types.acb cimport acb_t +from flint.flintlib.types.acb_calc cimport acb_calc_func_t, acb_calc_integrate_opt_t +from flint.flintlib.types.arb cimport arb_t, mag_t +from flint.flintlib.types.arf cimport arf_t +from flint.flintlib.types.flint cimport slong -cdef extern from "flint/acb_calc.h": - ctypedef int (*acb_calc_func_t)(acb_ptr out, const acb_t inp, void * param, long order, long prec) - - ctypedef struct acb_calc_integrate_opt_struct: - long deg_limit - long eval_limit - long depth_limit - int use_heap - int verbose - ctypedef acb_calc_integrate_opt_struct acb_calc_integrate_opt_t[1] -# from /Users/davideinstein/projects/arb/doc/source/acb_calc.rst +cdef extern from "flint/acb_calc.h": int acb_calc_integrate(acb_t res, acb_calc_func_t func, void * param, const acb_t a, const acb_t b, slong rel_goal, const mag_t abs_tol, const acb_calc_integrate_opt_t options, slong prec) void acb_calc_integrate_opt_init(acb_calc_integrate_opt_t options) int acb_calc_integrate_gl_auto_deg(acb_t res, slong * num_eval, acb_calc_func_t func, void * param, const acb_t a, const acb_t b, const mag_t tol, slong deg_limit, int flags, slong prec) void acb_calc_cauchy_bound(arb_t bound, acb_calc_func_t func, void * param, const acb_t x, const arb_t radius, slong maxdepth, slong prec) int acb_calc_integrate_taylor(acb_t res, acb_calc_func_t func, void * param, const acb_t a, const acb_t b, const arf_t inner_radius, const arf_t outer_radius, slong accuracy_goal, slong prec) - diff --git a/src/flint/flintlib/functions/acb_dft.pxd b/src/flint/flintlib/functions/acb_dft.pxd new file mode 100644 index 00000000..9a6e7bf1 --- /dev/null +++ b/src/flint/flintlib/functions/acb_dft.pxd @@ -0,0 +1,47 @@ +from flint.flintlib.types.acb cimport acb_ptr, acb_srcptr +from flint.flintlib.types.flint cimport slong + +# unknown type acb_dft_bluestein_t +# unknown type acb_dft_crt_t +# unknown type acb_dft_cyc_t +# unknown type acb_dft_naive_t +# unknown type acb_dft_pre_t +# unknown type acb_dft_prod_t +# unknown type acb_dft_rad2_t + + +cdef extern from "flint/acb_dft.h": + void acb_dft(acb_ptr w, acb_srcptr v, slong n, slong prec) + void acb_dft_inverse(acb_ptr w, acb_srcptr v, slong n, slong prec) + # void acb_dft_precomp_init(acb_dft_pre_t pre, slong len, slong prec) + # void acb_dft_precomp_clear(acb_dft_pre_t pre) + # void acb_dft_precomp(acb_ptr w, acb_srcptr v, const acb_dft_pre_t pre, slong prec) + # void acb_dft_inverse_precomp(acb_ptr w, acb_srcptr v, const acb_dft_pre_t pre, slong prec) + void acb_dirichlet_dft_prod(acb_ptr w, acb_srcptr v, slong * cyc, slong num, slong prec) + # void acb_dft_prod_init(acb_dft_prod_t t, slong * cyc, slong num, slong prec) + # void acb_dft_prod_clear(acb_dft_prod_t t) + # void acb_dirichlet_dft_prod_precomp(acb_ptr w, acb_srcptr v, const acb_dft_prod_t prod, slong prec) + void acb_dft_convol_naive(acb_ptr w, acb_srcptr f, acb_srcptr g, slong len, slong prec) + void acb_dft_convol_rad2(acb_ptr w, acb_srcptr f, acb_srcptr g, slong len, slong prec) + void acb_dft_convol(acb_ptr w, acb_srcptr f, acb_srcptr g, slong len, slong prec) + void acb_dft_naive(acb_ptr w, acb_srcptr v, slong n, slong prec) + # void acb_dft_naive_init(acb_dft_naive_t t, slong len, slong prec) + # void acb_dft_naive_clear(acb_dft_naive_t t) + # void acb_dft_naive_precomp(acb_ptr w, acb_srcptr v, const acb_dft_naive_t t, slong prec) + void acb_dft_crt(acb_ptr w, acb_srcptr v, slong n, slong prec) + # void acb_dft_crt_init(acb_dft_crt_t t, slong len, slong prec) + # void acb_dft_crt_clear(acb_dft_crt_t t) + # void acb_dft_crt_precomp(acb_ptr w, acb_srcptr v, const acb_dft_crt_t t, slong prec) + void acb_dft_cyc(acb_ptr w, acb_srcptr v, slong n, slong prec) + # void acb_dft_cyc_init(acb_dft_cyc_t t, slong len, slong prec) + # void acb_dft_cyc_clear(acb_dft_cyc_t t) + # void acb_dft_cyc_precomp(acb_ptr w, acb_srcptr v, const acb_dft_cyc_t t, slong prec) + void acb_dft_rad2(acb_ptr w, acb_srcptr v, int e, slong prec) + void acb_dft_inverse_rad2(acb_ptr w, acb_srcptr v, int e, slong prec) + # void acb_dft_rad2_init(acb_dft_rad2_t t, int e, slong prec) + # void acb_dft_rad2_clear(acb_dft_rad2_t t) + # void acb_dft_rad2_precomp(acb_ptr w, acb_srcptr v, const acb_dft_rad2_t t, slong prec) + void acb_dft_bluestein(acb_ptr w, acb_srcptr v, slong n, slong prec) + # void acb_dft_bluestein_init(acb_dft_bluestein_t t, slong len, slong prec) + # void acb_dft_bluestein_clear(acb_dft_bluestein_t t) + # void acb_dft_bluestein_precomp(acb_ptr w, acb_srcptr v, const acb_dft_bluestein_t t, slong prec) diff --git a/src/flint/flintlib/acb_dirichlet.pxd b/src/flint/flintlib/functions/acb_dirichlet.pxd similarity index 84% rename from src/flint/flintlib/acb_dirichlet.pxd rename to src/flint/flintlib/functions/acb_dirichlet.pxd index b93d221b..9cf7e840 100644 --- a/src/flint/flintlib/acb_dirichlet.pxd +++ b/src/flint/flintlib/functions/acb_dirichlet.pxd @@ -1,39 +1,14 @@ -from flint.flintlib.acb cimport acb_t, acb_ptr -from flint.flintlib.dirichlet cimport dirichlet_group_t, dirichlet_char_t -from flint.flintlib.flint cimport ulong, slong -from flint.flintlib.acb_poly cimport acb_poly_t -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.arb_types cimport mag_t, mag_struct, arb_t, arb_ptr -from flint.flintlib.acb_types cimport acb_struct, acb_srcptr -from flint.flintlib.fmpq cimport fmpq_t -from flint.flintlib.arf cimport arf_t -from flint.flintlib.arb cimport arb_srcptr +from flint.flintlib.types.acb cimport acb_poly_t, acb_ptr, acb_srcptr, acb_t +from flint.flintlib.types.acb_dirichlet cimport acb_dirichlet_hurwitz_precomp_t, acb_dirichlet_roots_t +from flint.flintlib.types.arb cimport arb_ptr, arb_srcptr, arb_t, mag_t +from flint.flintlib.types.arf cimport arf_t +from flint.flintlib.types.dirichlet cimport dirichlet_char_t, dirichlet_group_t +from flint.flintlib.types.flint cimport fmpz_t, slong, ulong +from flint.flintlib.types.fmpq cimport fmpq_t -cdef extern from "flint/acb_dirichlet.h": - ctypedef struct acb_dirichlet_roots_struct: - ulong order - ulong reduced_order - acb_t z - slong size - slong depth - acb_ptr Z - int use_pow - - ctypedef acb_dirichlet_roots_struct acb_dirichlet_roots_t[1] - - ctypedef struct acb_dirichlet_hurwitz_precomp_struct: - acb_struct s - mag_struct err - acb_ptr coeffs - int deflate - slong A - slong N - slong K - ctypedef acb_dirichlet_hurwitz_precomp_struct acb_dirichlet_hurwitz_precomp_t[1] - -# from here on is parsed +cdef extern from "flint/acb_dirichlet.h": void acb_dirichlet_roots_init(acb_dirichlet_roots_t roots, ulong n, slong num, slong prec) void acb_dirichlet_roots_clear(acb_dirichlet_roots_t roots) void acb_dirichlet_root(acb_t res, const acb_dirichlet_roots_t roots, ulong k, slong prec) @@ -51,13 +26,13 @@ cdef extern from "flint/acb_dirichlet.h": void acb_dirichlet_zeta_rs_bound(mag_t err, const acb_t s, slong K) void acb_dirichlet_zeta_rs_r(acb_t res, const acb_t s, slong K, slong prec) void acb_dirichlet_zeta_rs(acb_t res, const acb_t s, slong K, slong prec) - void acb_dirichlet_zeta_jet_rs(acb_t res, const acb_t s, slong len, slong prec) + void acb_dirichlet_zeta_jet_rs(acb_ptr res, const acb_t s, slong len, slong prec) void acb_dirichlet_hurwitz(acb_t res, const acb_t s, const acb_t a, slong prec) - void acb_dirichlet_hurwitz_precomp_init(acb_dirichlet_hurwitz_precomp_t pre, const acb_t s, int deflate, ulong A, ulong K, ulong N, slong prec) + void acb_dirichlet_hurwitz_precomp_init(acb_dirichlet_hurwitz_precomp_t pre, const acb_t s, int deflate, slong A, slong K, slong N, slong prec) void acb_dirichlet_hurwitz_precomp_init_num(acb_dirichlet_hurwitz_precomp_t pre, const acb_t s, int deflate, double num_eval, slong prec) void acb_dirichlet_hurwitz_precomp_clear(acb_dirichlet_hurwitz_precomp_t pre) void acb_dirichlet_hurwitz_precomp_choose_param(ulong * A, ulong * K, ulong * N, const acb_t s, double num_eval, slong prec) - void acb_dirichlet_hurwitz_precomp_bound(mag_t res, const acb_t s, ulong A, ulong K, ulong N) + void acb_dirichlet_hurwitz_precomp_bound(mag_t res, const acb_t s, slong A, slong K, slong N) void acb_dirichlet_hurwitz_precomp_eval(acb_t res, const acb_dirichlet_hurwitz_precomp_t pre, ulong p, ulong q, slong prec) void acb_dirichlet_lerch_phi_integral(acb_t res, const acb_t z, const acb_t s, const acb_t a, slong prec) void acb_dirichlet_lerch_phi_direct(acb_t res, const acb_t z, const acb_t s, const acb_t a, slong prec) @@ -69,10 +44,9 @@ cdef extern from "flint/acb_dirichlet.h": void acb_dirichlet_pairing_char(acb_t res, const dirichlet_group_t G, const dirichlet_char_t a, const dirichlet_char_t b, slong prec) void acb_dirichlet_gauss_sum_naive(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) void acb_dirichlet_gauss_sum_factor(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) - void acb_dirichlet_gauss_sum_order2(acb_t res, const dirichlet_char_t chi, slong prec) + void acb_dirichlet_gauss_sum_order2(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) void acb_dirichlet_gauss_sum_theta(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) void acb_dirichlet_gauss_sum(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) - void acb_dirichlet_gauss_sum_ui(acb_t res, const dirichlet_group_t G, ulong a, slong prec) void acb_dirichlet_jacobi_sum_naive(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi1, const dirichlet_char_t chi2, slong prec) void acb_dirichlet_jacobi_sum_factor(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi1, const dirichlet_char_t chi2, slong prec) void acb_dirichlet_jacobi_sum_gauss(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi1, const dirichlet_char_t chi2, slong prec) @@ -81,8 +55,8 @@ cdef extern from "flint/acb_dirichlet.h": void acb_dirichlet_chi_theta_arb(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, const arb_t t, slong prec) void acb_dirichlet_ui_theta_arb(acb_t res, const dirichlet_group_t G, ulong a, const arb_t t, slong prec) ulong acb_dirichlet_theta_length(ulong q, const arb_t t, slong prec) - void acb_dirichlet_qseries_powers_naive(acb_t res, const arb_t x, int p, const ulong * a, const acb_dirichlet_roots_t z, slong len, slong prec) - void acb_dirichlet_qseries_powers_smallorder(acb_t res, const arb_t x, int p, const ulong * a, const acb_dirichlet_roots_t z, slong len, slong prec) + void acb_dirichlet_qseries_arb_powers_naive(acb_t res, const arb_t x, int p, const ulong * a, const acb_dirichlet_roots_t z, slong len, slong prec) + void acb_dirichlet_qseries_arb_powers_smallorder(acb_t res, const arb_t x, int p, const ulong * a, const acb_dirichlet_roots_t z, slong len, slong prec) void acb_dirichlet_dft_conrey(acb_ptr w, acb_srcptr v, const dirichlet_group_t G, slong prec) void acb_dirichlet_dft(acb_ptr w, acb_srcptr v, const dirichlet_group_t G, slong prec) void acb_dirichlet_root_number_theta(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) @@ -98,7 +72,7 @@ cdef extern from "flint/acb_dirichlet.h": void _acb_dirichlet_l_series(acb_ptr res, acb_srcptr s, slong slen, const dirichlet_group_t G, const dirichlet_char_t chi, int deflate, slong len, slong prec) void acb_dirichlet_l_series(acb_poly_t res, const acb_poly_t s, const dirichlet_group_t G, const dirichlet_char_t chi, int deflate, slong len, slong prec) void acb_dirichlet_hardy_theta(acb_ptr res, const acb_t t, const dirichlet_group_t G, const dirichlet_char_t chi, slong len, slong prec) - void acb_dirichlet_hardy_z(acb_t res, const acb_t t, const dirichlet_group_t G, const dirichlet_char_t chi, slong len, slong prec) + void acb_dirichlet_hardy_z(acb_ptr res, const acb_t t, const dirichlet_group_t G, const dirichlet_char_t chi, slong len, slong prec) void _acb_dirichlet_hardy_theta_series(acb_ptr res, acb_srcptr t, slong tlen, const dirichlet_group_t G, const dirichlet_char_t chi, slong len, slong prec) void acb_dirichlet_hardy_theta_series(acb_poly_t res, const acb_poly_t t, const dirichlet_group_t G, const dirichlet_char_t chi, slong len, slong prec) void _acb_dirichlet_hardy_z_series(acb_ptr res, acb_srcptr t, slong tlen, const dirichlet_group_t G, const dirichlet_char_t chi, slong len, slong prec) diff --git a/src/flint/flintlib/acb_elliptic.pxd b/src/flint/flintlib/functions/acb_elliptic.pxd similarity index 93% rename from src/flint/flintlib/acb_elliptic.pxd rename to src/flint/flintlib/functions/acb_elliptic.pxd index 24c82b2f..a234f6a1 100644 --- a/src/flint/flintlib/acb_elliptic.pxd +++ b/src/flint/flintlib/functions/acb_elliptic.pxd @@ -1,9 +1,9 @@ -from flint.flintlib.acb cimport acb_t, acb_ptr, acb_srcptr -from flint.flintlib.acb_poly cimport acb_poly_t -from flint.flintlib.flint cimport slong +from flint.flintlib.types.acb cimport acb_poly_t, acb_ptr, acb_srcptr, acb_t +from flint.flintlib.types.flint cimport slong + + cdef extern from "flint/acb_elliptic.h": -# from here on is parsed void acb_elliptic_k(acb_t res, const acb_t m, slong prec) void acb_elliptic_k_jet(acb_ptr res, const acb_t m, slong len, slong prec) void _acb_elliptic_k_series(acb_ptr res, acb_srcptr m, slong mlen, slong len, slong prec) diff --git a/src/flint/flintlib/acb_hypgeom.pxd b/src/flint/flintlib/functions/acb_hypgeom.pxd similarity index 98% rename from src/flint/flintlib/acb_hypgeom.pxd rename to src/flint/flintlib/functions/acb_hypgeom.pxd index 418a364c..63c3a00d 100644 --- a/src/flint/flintlib/acb_hypgeom.pxd +++ b/src/flint/flintlib/functions/acb_hypgeom.pxd @@ -1,15 +1,10 @@ -from flint.flintlib.flint cimport ulong, slong -from flint.flintlib.acb_types cimport ( - acb_t, - acb_srcptr, - acb_ptr, - acb_poly_t, - acb_poly_struct, -) -from flint.flintlib.arb_types cimport mag_t +from flint.flintlib.types.acb cimport acb_poly_struct, acb_poly_t, acb_ptr, acb_srcptr, acb_t +from flint.flintlib.types.arb cimport mag_t +from flint.flintlib.types.flint cimport slong, ulong + + cdef extern from "flint/acb_hypgeom.h": -# from here on is parsed void acb_hypgeom_rising_ui_forward(acb_t res, const acb_t x, ulong n, slong prec) void acb_hypgeom_rising_ui_bs(acb_t res, const acb_t x, ulong n, slong prec) void acb_hypgeom_rising_ui_rs(acb_t res, const acb_t x, ulong n, ulong m, slong prec) diff --git a/src/flint/flintlib/acb_mat.pxd b/src/flint/flintlib/functions/acb_mat.pxd similarity index 96% rename from src/flint/flintlib/acb_mat.pxd rename to src/flint/flintlib/functions/acb_mat.pxd index d80ce1de..baf96238 100644 --- a/src/flint/flintlib/acb_mat.pxd +++ b/src/flint/flintlib/functions/acb_mat.pxd @@ -1,8 +1,8 @@ -from flint.flintlib.acb_types cimport acb_mat_t, acb_poly_t, acb_ptr, acb_srcptr, acb_t -from flint.flintlib.arb_types cimport arb_mat_t, arb_t, mag_t -from flint.flintlib.flint cimport flint_rand_t, slong, ulong -from flint.flintlib.fmpq_mat cimport fmpq_mat_t -from flint.flintlib.fmpz_types cimport fmpz_mat_t, fmpz_t +from flint.flintlib.types.acb cimport acb_mat_t, acb_poly_t, acb_ptr, acb_srcptr, acb_t +from flint.flintlib.types.arb cimport arb_mat_t, arb_t, mag_t +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, slong, ulong +from flint.flintlib.types.fmpq cimport fmpq_mat_t +from flint.flintlib.types.fmpz cimport fmpz_mat_t # unknown type FILE diff --git a/src/flint/flintlib/functions/acb_modular.pxd b/src/flint/flintlib/functions/acb_modular.pxd new file mode 100644 index 00000000..d93f9a8e --- /dev/null +++ b/src/flint/flintlib/functions/acb_modular.pxd @@ -0,0 +1,55 @@ +from flint.flintlib.types.acb cimport acb_poly_t, acb_ptr, acb_srcptr, acb_t +from flint.flintlib.types.arf cimport arf_t +from flint.flintlib.types.flint cimport flint_rand_t, slong +from flint.flintlib.types.fmpz cimport fmpz_poly_t + +# unknown type FILE +# unknown type psl2z_t + + +cdef extern from "flint/acb_modular.h": + # void psl2z_init(psl2z_t g) + # void psl2z_clear(psl2z_t g) + # void psl2z_swap(psl2z_t f, psl2z_t g) + # void psl2z_set(psl2z_t f, const psl2z_t g) + # void psl2z_one(psl2z_t g) + # int psl2z_is_one(const psl2z_t g) + # void psl2z_print(const psl2z_t g) + # void psl2z_fprint(FILE * file, const psl2z_t g) + # int psl2z_equal(const psl2z_t f, const psl2z_t g) + # void psl2z_mul(psl2z_t h, const psl2z_t f, const psl2z_t g) + # void psl2z_inv(psl2z_t h, const psl2z_t g) + # int psl2z_is_correct(const psl2z_t g) + # void psl2z_randtest(psl2z_t g, flint_rand_t state, slong bits) + # void acb_modular_transform(acb_t w, const psl2z_t g, const acb_t z, slong prec) + # void acb_modular_fundamental_domain_approx_d(psl2z_t g, double x, double y, double one_minus_eps) + # void acb_modular_fundamental_domain_approx_arf(psl2z_t g, const arf_t x, const arf_t y, const arf_t one_minus_eps, slong prec) + # void acb_modular_fundamental_domain_approx(acb_t w, psl2z_t g, const acb_t z, const arf_t one_minus_eps, slong prec) + int acb_modular_is_in_fundamental_domain(const acb_t z, const arf_t tol, slong prec) + void acb_modular_fill_addseq(slong * tab, slong len) + # void acb_modular_theta_transform(int * R, int * S, int * C, const psl2z_t g) + void acb_modular_addseq_theta(slong * exponents, slong * aindex, slong * bindex, slong num) + void acb_modular_theta_sum(acb_ptr theta1, acb_ptr theta2, acb_ptr theta3, acb_ptr theta4, const acb_t w, int w_is_unit, const acb_t q, slong len, slong prec) + void acb_modular_theta_const_sum_basecase(acb_t theta2, acb_t theta3, acb_t theta4, const acb_t q, slong N, slong prec) + void acb_modular_theta_const_sum_rs(acb_t theta2, acb_t theta3, acb_t theta4, const acb_t q, slong N, slong prec) + void acb_modular_theta_const_sum(acb_t theta2, acb_t theta3, acb_t theta4, const acb_t q, slong prec) + void acb_modular_theta_notransform(acb_t theta1, acb_t theta2, acb_t theta3, acb_t theta4, const acb_t z, const acb_t tau, slong prec) + void acb_modular_theta(acb_t theta1, acb_t theta2, acb_t theta3, acb_t theta4, const acb_t z, const acb_t tau, slong prec) + void acb_modular_theta_jet_notransform(acb_ptr theta1, acb_ptr theta2, acb_ptr theta3, acb_ptr theta4, const acb_t z, const acb_t tau, slong len, slong prec) + void acb_modular_theta_jet(acb_ptr theta1, acb_ptr theta2, acb_ptr theta3, acb_ptr theta4, const acb_t z, const acb_t tau, slong len, slong prec) + void _acb_modular_theta_series(acb_ptr theta1, acb_ptr theta2, acb_ptr theta3, acb_ptr theta4, acb_srcptr z, slong zlen, const acb_t tau, slong len, slong prec) + void acb_modular_theta_series(acb_poly_t theta1, acb_poly_t theta2, acb_poly_t theta3, acb_poly_t theta4, const acb_poly_t z, const acb_t tau, slong len, slong prec) + void acb_modular_addseq_eta(slong * exponents, slong * aindex, slong * bindex, slong num) + void acb_modular_eta_sum(acb_t eta, const acb_t q, slong prec) + # int acb_modular_epsilon_arg(const psl2z_t g) + void acb_modular_eta(acb_t r, const acb_t tau, slong prec) + void acb_modular_j(acb_t r, const acb_t tau, slong prec) + void acb_modular_lambda(acb_t r, const acb_t tau, slong prec) + void acb_modular_delta(acb_t r, const acb_t tau, slong prec) + void acb_modular_eisenstein(acb_ptr r, const acb_t tau, slong len, slong prec) + void acb_modular_elliptic_k(acb_t w, const acb_t m, slong prec) + void acb_modular_elliptic_k_cpx(acb_ptr w, const acb_t m, slong len, slong prec) + void acb_modular_elliptic_e(acb_t w, const acb_t m, slong prec) + void acb_modular_elliptic_p(acb_t wp, const acb_t z, const acb_t tau, slong prec) + void acb_modular_elliptic_p_zpx(acb_ptr wp, const acb_t z, const acb_t tau, slong len, slong prec) + void acb_modular_hilbert_class_poly(fmpz_poly_t res, slong D) diff --git a/src/flint/flintlib/acb_poly.pxd b/src/flint/flintlib/functions/acb_poly.pxd similarity index 98% rename from src/flint/flintlib/acb_poly.pxd rename to src/flint/flintlib/functions/acb_poly.pxd index d39d18c3..9db1b6d4 100644 --- a/src/flint/flintlib/acb_poly.pxd +++ b/src/flint/flintlib/functions/acb_poly.pxd @@ -1,8 +1,8 @@ -from flint.flintlib.acb_types cimport acb_poly_t, acb_ptr, acb_srcptr, acb_t -from flint.flintlib.arb_types cimport arb_poly_t, arb_ptr, mag_t -from flint.flintlib.flint cimport flint_rand_t, slong, ulong -from flint.flintlib.fmpq_poly cimport fmpq_poly_t -from flint.flintlib.fmpz_types cimport fmpz_poly_t, fmpz_t +from flint.flintlib.types.acb cimport acb_poly_t, acb_ptr, acb_srcptr, acb_t +from flint.flintlib.types.arb cimport arb_poly_t, arb_ptr, mag_t +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, slong, ulong +from flint.flintlib.types.fmpq cimport fmpq_poly_t +from flint.flintlib.types.fmpz cimport fmpz_poly_t # unknown type FILE diff --git a/src/flint/flintlib/acb_theta.pxd b/src/flint/flintlib/functions/acb_theta.pxd similarity index 89% rename from src/flint/flintlib/acb_theta.pxd rename to src/flint/flintlib/functions/acb_theta.pxd index c60ce30b..5fab53ec 100644 --- a/src/flint/flintlib/acb_theta.pxd +++ b/src/flint/flintlib/functions/acb_theta.pxd @@ -1,36 +1,27 @@ -from flint.flintlib.acb_types cimport ( - acb_t, - acb_srcptr, - acb_ptr, - acb_poly_struct, - acb_poly_t, -) -from flint.flintlib.arb cimport arb_t, arb_ptr, arb_srcptr -from flint.flintlib.flint cimport ulong, slong, flint_rand_t -from flint.flintlib.fmpz_types cimport fmpz_mat_t, fmpz_mat_struct -from flint.flintlib.acb_mat cimport acb_mat_t -from flint.flintlib.arb_mat cimport arb_mat_t -from flint.flintlib.arf cimport arf_t +from flint.flintlib.types.acb cimport acb_mat_t, acb_poly_struct, acb_poly_t, acb_ptr, acb_srcptr, acb_t +from flint.flintlib.types.acb_theta cimport acb_theta_eld_t, acb_theta_naive_worker_t, acb_theta_ql_worker_t +from flint.flintlib.types.arb cimport arb_mat_t, arb_ptr, arb_srcptr, arb_t +from flint.flintlib.types.arf cimport arf_t +from flint.flintlib.types.flint cimport flint_rand_t, slong, ulong +from flint.flintlib.types.fmpz cimport fmpz_mat_struct, fmpz_mat_t -cdef extern from "flint/acb_theta.h": - ctypedef struct acb_theta_eld_struct: - slong dim - slong ambient_dim - slong * last_coords - slong min - slong mid - slong max - slong nr - slong nl - acb_theta_eld_struct * rchildren - acb_theta_eld_struct * lchildren - slong nb_pts, nb_border - slong * box - ctypedef acb_theta_eld_struct acb_theta_eld_t[1] - ctypedef void (*acb_theta_naive_worker_t)(acb_ptr, acb_srcptr, acb_srcptr, const slong *, slong, const acb_t, const slong *, slong, slong, slong, slong) - ctypedef int (*acb_theta_ql_worker_t)(acb_ptr, acb_srcptr, acb_srcptr, arb_srcptr, arb_srcptr, const acb_mat_t, slong, slong) +# .. macro:: acb_theta_eld_dim(E) +# .. macro:: acb_theta_eld_ambient_dim(E) +# .. macro:: acb_theta_eld_coord(E, k) +# .. macro:: acb_theta_eld_min(E) +# .. macro:: acb_theta_eld_mid(E) +# .. macro:: acb_theta_eld_max(E) +# .. macro:: acb_theta_eld_nr(E) +# .. macro:: acb_theta_eld_nl(E) +# .. macro:: acb_theta_eld_rchild(E, k) +# .. macro:: acb_theta_eld_lchild(E, k) +# .. macro:: acb_theta_eld_nb_pts(E) +# .. macro:: acb_theta_eld_nb_border(E) +# .. macro:: acb_theta_eld_box(E, k) +# .. macro:: ACB_THETA_G2_COV_NB +cdef extern from "flint/acb_theta.h": void acb_theta_all(acb_ptr th, acb_srcptr z, const acb_mat_t tau, int sqr, slong prec) void acb_theta_naive_fixed_ab(acb_ptr th, ulong ab, acb_srcptr zs, slong nb, const acb_mat_t tau, slong prec) void acb_theta_naive_all(acb_ptr th, acb_srcptr zs, slong nb, const acb_mat_t tau, slong prec) diff --git a/src/flint/flintlib/arb.pxd b/src/flint/flintlib/functions/arb.pxd similarity index 98% rename from src/flint/flintlib/arb.pxd rename to src/flint/flintlib/functions/arb.pxd index 8cd8631a..c2003820 100644 --- a/src/flint/flintlib/arb.pxd +++ b/src/flint/flintlib/functions/arb.pxd @@ -1,8 +1,7 @@ -from flint.flintlib.arb_types cimport arb_ptr, arb_srcptr, arb_t, mag_srcptr, mag_t -from flint.flintlib.arf_types cimport arf_rnd_t, arf_srcptr, arf_t -from flint.flintlib.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, nn_ptr, nn_srcptr, slong, ulong -from flint.flintlib.fmpq cimport fmpq_t -from flint.flintlib.fmpz_types cimport fmpz_t +from flint.flintlib.types.arb cimport arb_ptr, arb_srcptr, arb_t, mag_srcptr, mag_t +from flint.flintlib.types.arf cimport arf_rnd_t, arf_srcptr, arf_t +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, nn_ptr, nn_srcptr, slong, ulong +from flint.flintlib.types.fmpq cimport fmpq_t # unknown type FILE # unknown type mpfr_rnd_t diff --git a/src/flint/flintlib/arb_fmpz_poly.pxd b/src/flint/flintlib/functions/arb_fmpz_poly.pxd similarity index 84% rename from src/flint/flintlib/arb_fmpz_poly.pxd rename to src/flint/flintlib/functions/arb_fmpz_poly.pxd index 6e21f316..e35204bb 100644 --- a/src/flint/flintlib/arb_fmpz_poly.pxd +++ b/src/flint/flintlib/functions/arb_fmpz_poly.pxd @@ -1,11 +1,11 @@ -from flint.flintlib.arb cimport arb_t -from flint.flintlib.acb cimport acb_t, acb_ptr -from flint.flintlib.fmpz_poly cimport fmpz_poly_t -from flint.flintlib.flint cimport ulong, slong -from flint.flintlib.fmpz cimport fmpz_struct +from flint.flintlib.types.acb cimport acb_ptr, acb_t +from flint.flintlib.types.arb cimport arb_t +from flint.flintlib.types.flint cimport fmpz_struct, slong, ulong +from flint.flintlib.types.fmpz cimport fmpz_poly_t + + cdef extern from "flint/arb_fmpz_poly.h": -# from here on is parsed void _arb_fmpz_poly_evaluate_arb_horner(arb_t res, const fmpz_struct * poly, slong len, const arb_t x, slong prec) void arb_fmpz_poly_evaluate_arb_horner(arb_t res, const fmpz_poly_t poly, const arb_t x, slong prec) void _arb_fmpz_poly_evaluate_arb_rectangular(arb_t res, const fmpz_struct * poly, slong len, const arb_t x, slong prec) @@ -21,5 +21,4 @@ cdef extern from "flint/arb_fmpz_poly.h": ulong arb_fmpz_poly_deflation(const fmpz_poly_t poly) void arb_fmpz_poly_deflate(fmpz_poly_t res, const fmpz_poly_t poly, ulong deflation) void arb_fmpz_poly_complex_roots(acb_ptr roots, const fmpz_poly_t poly, int flags, slong prec) - void arb_fmpz_poly_cos_minpoly(fmpz_poly_t res, ulong n) void arb_fmpz_poly_gauss_period_minpoly(fmpz_poly_t res, ulong q, ulong n) diff --git a/src/flint/flintlib/arb_hypgeom.pxd b/src/flint/flintlib/functions/arb_hypgeom.pxd similarity index 96% rename from src/flint/flintlib/arb_hypgeom.pxd rename to src/flint/flintlib/functions/arb_hypgeom.pxd index 39d01aeb..a00c931e 100644 --- a/src/flint/flintlib/arb_hypgeom.pxd +++ b/src/flint/flintlib/functions/arb_hypgeom.pxd @@ -1,12 +1,10 @@ -from flint.flintlib.arb cimport arb_t, arb_srcptr, arb_ptr -from flint.flintlib.arb_poly cimport arb_poly_t -from flint.flintlib.fmpz cimport fmpz_t, fmpz_struct -from flint.flintlib.flint cimport ulong, slong -from flint.flintlib.mag cimport mag_t -from flint.flintlib.fmpq cimport fmpq_t, fmpq_struct +from flint.flintlib.types.arb cimport arb_poly_t, arb_ptr, arb_srcptr, arb_t, mag_t +from flint.flintlib.types.flint cimport fmpz_struct, fmpz_t, slong, ulong +from flint.flintlib.types.fmpq cimport fmpq_struct, fmpq_t + + cdef extern from "flint/arb_hypgeom.h": -# from here on is parsed void _arb_hypgeom_rising_coeffs_1(ulong * c, ulong k, slong n) void _arb_hypgeom_rising_coeffs_2(ulong * c, ulong k, slong n) void _arb_hypgeom_rising_coeffs_fmpz(fmpz_struct * c, ulong k, slong n) @@ -37,9 +35,9 @@ cdef extern from "flint/arb_hypgeom.h": void arb_hypgeom_1f1(arb_t res, const arb_t a, const arb_t b, const arb_t z, int regularized, slong prec) void arb_hypgeom_1f1_integration(arb_t res, const arb_t a, const arb_t b, const arb_t z, int regularized, slong prec) void arb_hypgeom_u(arb_t res, const arb_t a, const arb_t b, const arb_t z, slong prec) - void arb_hypgeom_u_integration(arb_t res, const arb_t a, const arb_t b, const arb_t z, int regularized, slong prec) + void arb_hypgeom_u_integration(arb_t res, const arb_t a, const arb_t b, const arb_t z, slong prec) void arb_hypgeom_2f1(arb_t res, const arb_t a, const arb_t b, const arb_t c, const arb_t z, int regularized, slong prec) - void arb_hypgeom_2f1_integration(arb_t res, const arb_t a, const arb_t b, const arb_t z, int regularized, slong prec) + void arb_hypgeom_2f1_integration(arb_t res, const arb_t a, const arb_t b, const arb_t c, const arb_t z, int regularized, slong prec) void arb_hypgeom_erf(arb_t res, const arb_t z, slong prec) void _arb_hypgeom_erf_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) void arb_hypgeom_erf_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) @@ -126,7 +124,7 @@ cdef extern from "flint/arb_hypgeom.h": void arb_hypgeom_legendre_p_ui_zero(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong K, slong prec) void arb_hypgeom_legendre_p_ui_one(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong K, slong prec) void arb_hypgeom_legendre_p_ui_asymp(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong K, slong prec) - void arb_hypgeom_legendre_p_rec(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong prec) + void arb_hypgeom_legendre_p_ui_rec(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong prec) void arb_hypgeom_legendre_p_ui(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong prec) void arb_hypgeom_legendre_p_ui_root(arb_t res, arb_t weight, ulong n, ulong k, slong prec) void arb_hypgeom_dilog(arb_t res, const arb_t z, slong prec) diff --git a/src/flint/flintlib/arb_mat.pxd b/src/flint/flintlib/functions/arb_mat.pxd similarity index 97% rename from src/flint/flintlib/arb_mat.pxd rename to src/flint/flintlib/functions/arb_mat.pxd index ddecb035..b1975edf 100644 --- a/src/flint/flintlib/arb_mat.pxd +++ b/src/flint/flintlib/functions/arb_mat.pxd @@ -1,7 +1,7 @@ -from flint.flintlib.arb_types cimport arb_mat_t, arb_poly_t, arb_ptr, arb_srcptr, arb_t, mag_srcptr, mag_t -from flint.flintlib.flint cimport flint_rand_t, slong, ulong -from flint.flintlib.fmpq_mat cimport fmpq_mat_t -from flint.flintlib.fmpz_types cimport fmpz_mat_t, fmpz_t +from flint.flintlib.types.arb cimport arb_mat_t, arb_poly_t, arb_ptr, arb_srcptr, arb_t, mag_srcptr, mag_t +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, slong, ulong +from flint.flintlib.types.fmpq cimport fmpq_mat_t +from flint.flintlib.types.fmpz cimport fmpz_mat_t # unknown type FILE diff --git a/src/flint/flintlib/arb_poly.pxd b/src/flint/flintlib/functions/arb_poly.pxd similarity index 98% rename from src/flint/flintlib/arb_poly.pxd rename to src/flint/flintlib/functions/arb_poly.pxd index 2ecb8d72..23bcc098 100644 --- a/src/flint/flintlib/arb_poly.pxd +++ b/src/flint/flintlib/functions/arb_poly.pxd @@ -1,9 +1,9 @@ -from flint.flintlib.acb_types cimport acb_srcptr, acb_t -from flint.flintlib.arb_types cimport arb_poly_t, arb_ptr, arb_srcptr, arb_t, mag_t -from flint.flintlib.arf_types cimport arf_t -from flint.flintlib.flint cimport flint_rand_t, slong, ulong -from flint.flintlib.fmpq_poly cimport fmpq_poly_t -from flint.flintlib.fmpz_types cimport fmpz_poly_t +from flint.flintlib.types.acb cimport acb_srcptr, acb_t +from flint.flintlib.types.arb cimport arb_poly_t, arb_ptr, arb_srcptr, arb_t, mag_t +from flint.flintlib.types.arf cimport arf_t +from flint.flintlib.types.flint cimport flint_rand_t, slong, ulong +from flint.flintlib.types.fmpq cimport fmpq_poly_t +from flint.flintlib.types.fmpz cimport fmpz_poly_t # unknown type FILE diff --git a/src/flint/flintlib/arf.pxd b/src/flint/flintlib/functions/arf.pxd similarity index 97% rename from src/flint/flintlib/arf.pxd rename to src/flint/flintlib/functions/arf.pxd index afe466a7..cb7a40d2 100644 --- a/src/flint/flintlib/arf.pxd +++ b/src/flint/flintlib/functions/arf.pxd @@ -1,8 +1,7 @@ -from flint.flintlib.arb_types cimport mag_t -from flint.flintlib.arf_types cimport arf_rnd_t, arf_srcptr, arf_t -from flint.flintlib.flint cimport flint_rand_t, nn_ptr, nn_srcptr, slong, ulong -from flint.flintlib.fmpq cimport fmpq_t -from flint.flintlib.fmpz_types cimport fmpz_t +from flint.flintlib.types.arb cimport mag_t +from flint.flintlib.types.arf cimport arf_rnd_t, arf_srcptr, arf_t +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, nn_ptr, nn_srcptr, slong, ulong +from flint.flintlib.types.fmpq cimport fmpq_t # unknown type FILE # unknown type mpfr_rnd_t diff --git a/src/flint/flintlib/arith.pxd b/src/flint/flintlib/functions/arith.pxd similarity index 51% rename from src/flint/flintlib/arith.pxd rename to src/flint/flintlib/functions/arith.pxd index 3d4bb149..773ae7c8 100644 --- a/src/flint/flintlib/arith.pxd +++ b/src/flint/flintlib/functions/arith.pxd @@ -1,21 +1,12 @@ -from flint.flintlib.flint cimport ulong, slong, mp_limb_t -from flint.flintlib.fmpz cimport fmpz_t, fmpz_struct -from flint.flintlib.fmpz_poly cimport fmpz_poly_t -from flint.flintlib.fmpq_poly cimport fmpq_poly_t -from flint.flintlib.fmpq cimport fmpq_t -from flint.flintlib.fmpz_mat cimport fmpz_mat_t -from flint.flintlib.nmod cimport nmod_t -from flint.flintlib.fmpq cimport fmpq_struct +from flint.flintlib.types.flint cimport fmpz_struct, fmpz_t, nmod_t, nn_ptr, slong, ulong +from flint.flintlib.types.fmpq cimport fmpq_poly_t, fmpq_struct, fmpq_t +from flint.flintlib.types.fmpz cimport fmpz_mat_t, fmpz_poly_t + +# unknown type mpfr_t +# unknown type trig_prod_t -cdef extern from "flint/arith.h": -#stealth macros - void arith_legendre_polynomial(fmpq_poly_t v, ulong n) - void arith_chebyshev_t_polynomial(fmpz_poly_t v, ulong n) - void arith_chebyshev_u_polynomial(fmpz_poly_t v, ulong n) - void arith_cyclotomic_polynomial(fmpz_poly_t v, ulong n) -# from here on is parsed - void arith_primorial(fmpz_t res, slong n) +cdef extern from "flint/arith.h": void _arith_harmonic_number(fmpz_t num, fmpz_t den, slong n) void arith_harmonic_number(fmpq_t x, slong n) void arith_stirling_number_1u(fmpz_t s, ulong n, ulong k) @@ -24,9 +15,9 @@ cdef extern from "flint/arith.h": void arith_stirling_number_1u_vec(fmpz_struct * row, ulong n, slong klen) void arith_stirling_number_1_vec(fmpz_struct * row, ulong n, slong klen) void arith_stirling_number_2_vec(fmpz_struct * row, ulong n, slong klen) - void arith_stirling_number_1u_vec_next(fmpz_struct * row, fmpz_struct * prev, slong n, slong klen) - void arith_stirling_number_1_vec_next(fmpz_struct * row, fmpz_struct * prev, slong n, slong klen) - void arith_stirling_number_2_vec_next(fmpz_struct * row, fmpz_struct * prev, slong n, slong klen) + void arith_stirling_number_1u_vec_next(fmpz_struct * row, const fmpz_struct * prev, slong n, slong klen) + void arith_stirling_number_1_vec_next(fmpz_struct * row, const fmpz_struct * prev, slong n, slong klen) + void arith_stirling_number_2_vec_next(fmpz_struct * row, const fmpz_struct * prev, slong n, slong klen) void arith_stirling_matrix_1u(fmpz_mat_t mat) void arith_stirling_matrix_1(fmpz_mat_t mat) void arith_stirling_matrix_2(fmpz_mat_t mat) @@ -36,11 +27,11 @@ cdef extern from "flint/arith.h": void arith_bell_number_vec(fmpz_struct * b, slong n) void arith_bell_number_vec_recursive(fmpz_struct * b, slong n) void arith_bell_number_vec_multi_mod(fmpz_struct * b, slong n) - mp_limb_t arith_bell_number_nmod(ulong n, nmod_t mod) - # void arith_bell_number_nmod_vec(mp_ptr b, slong n, nmod_t mod) - # void arith_bell_number_nmod_vec_recursive(mp_ptr b, slong n, nmod_t mod) - # void arith_bell_number_nmod_vec_ogf(mp_ptr b, slong n, nmod_t mod) - # int arith_bell_number_nmod_vec_series(mp_ptr b, slong n, nmod_t mod) + ulong arith_bell_number_nmod(ulong n, nmod_t mod) + void arith_bell_number_nmod_vec(nn_ptr b, slong n, nmod_t mod) + void arith_bell_number_nmod_vec_recursive(nn_ptr b, slong n, nmod_t mod) + void arith_bell_number_nmod_vec_ogf(nn_ptr b, slong n, nmod_t mod) + int arith_bell_number_nmod_vec_series(nn_ptr b, slong n, nmod_t mod) double arith_bell_number_size(ulong n) void _arith_bernoulli_number(fmpz_t num, fmpz_t den, ulong n) void arith_bernoulli_number(fmpq_t x, ulong n) @@ -49,34 +40,21 @@ cdef extern from "flint/arith.h": void arith_bernoulli_number_denom(fmpz_t den, ulong n) double arith_bernoulli_number_size(ulong n) void arith_bernoulli_polynomial(fmpq_poly_t poly, ulong n) - void _arith_bernoulli_number_zeta(fmpz_t num, fmpz_t den, ulong n) void _arith_bernoulli_number_vec_recursive(fmpz_struct * num, fmpz_struct * den, slong n) - void _arith_bernoulli_number_vec_zeta(fmpz_struct * num, fmpz_struct * den, slong n) void _arith_bernoulli_number_vec_multi_mod(fmpz_struct * num, fmpz_struct * den, slong n) void arith_euler_number(fmpz_t res, ulong n) void arith_euler_number_vec(fmpz_struct * res, slong n) double arith_euler_number_size(ulong n) void arith_euler_polynomial(fmpq_poly_t poly, ulong n) - void _arith_euler_number_zeta(fmpz_t res, ulong n) - void arith_euler_phi(fmpz_t res, const fmpz_t n) - int arith_moebius_mu(const fmpz_t n) - void arith_divisor_sigma(fmpz_t res, ulong k, const fmpz_t n) void arith_divisors(fmpz_poly_t res, const fmpz_t n) void arith_ramanujan_tau(fmpz_t res, const fmpz_t n) void arith_ramanujan_tau_series(fmpz_poly_t res, slong n) - void _arith_cos_minpoly(fmpz_struct * coeffs, slong d, ulong n) - void arith_cos_minpoly(fmpz_poly_t poly, ulong n) void arith_landau_function_vec(fmpz_struct * res, slong len) - void arith_dedekind_sum_naive(fmpq_t s, const fmpz_t h, const fmpz_t k) - double arith_dedekind_sum_coprime_d(double h, double k) - void arith_dedekind_sum_coprime_large(fmpq_t s, const fmpz_t h, const fmpz_t k) - void arith_dedekind_sum_coprime(fmpq_t s, const fmpz_t h, const fmpz_t k) - void arith_dedekind_sum(fmpq_t s, const fmpz_t h, const fmpz_t k) void arith_number_of_partitions_vec(fmpz_struct * res, slong len) - # void arith_number_of_partitions_nmod_vec(mp_ptr res, slong len, nmod_t mod) - # void arith_hrr_expsum_factored(trig_prod_t prod, mp_limb_t k, mp_limb_t n) + void arith_number_of_partitions_nmod_vec(nn_ptr res, slong len, nmod_t mod) + # void trig_prod_init(trig_prod_t prod) + # void arith_hrr_expsum_factored(trig_prod_t prod, ulong k, ulong n) # void arith_number_of_partitions_mpfr(mpfr_t x, ulong n) void arith_number_of_partitions(fmpz_t x, ulong n) void arith_sum_of_squares(fmpz_t r, ulong k, const fmpz_t n) void arith_sum_of_squares_vec(fmpz_struct * r, ulong k, slong n) - diff --git a/src/flint/flintlib/bernoulli.pxd b/src/flint/flintlib/functions/bernoulli.pxd similarity index 81% rename from src/flint/flintlib/bernoulli.pxd rename to src/flint/flintlib/functions/bernoulli.pxd index 6e4e7efb..e39d1414 100644 --- a/src/flint/flintlib/bernoulli.pxd +++ b/src/flint/flintlib/functions/bernoulli.pxd @@ -1,9 +1,10 @@ -from flint.flintlib.flint cimport ulong, slong -from flint.flintlib.fmpq cimport fmpq_t, fmpq_struct -from flint.flintlib.fmpz cimport fmpz_t +from flint.flintlib.types.flint cimport fmpz_t, slong, ulong +from flint.flintlib.types.fmpq cimport fmpq_struct, fmpq_t + +# unknown type bernoulli_rev_t + cdef extern from "flint/bernoulli.h": -# from here on is parsed # void bernoulli_rev_init(bernoulli_rev_t iter, ulong n) # void bernoulli_rev_next(fmpz_t numer, fmpz_t denom, bernoulli_rev_t iter) # void bernoulli_rev_clear(bernoulli_rev_t iter) @@ -15,4 +16,3 @@ cdef extern from "flint/bernoulli.h": void _bernoulli_fmpq_ui_multi_mod(fmpz_t num, fmpz_t den, ulong n, double alpha) void _bernoulli_fmpq_ui(fmpz_t num, fmpz_t den, ulong n) void bernoulli_fmpq_ui(fmpq_t b, ulong n) - diff --git a/src/flint/flintlib/dirichlet.pxd b/src/flint/flintlib/functions/dirichlet.pxd similarity index 83% rename from src/flint/flintlib/dirichlet.pxd rename to src/flint/flintlib/functions/dirichlet.pxd index c62d6f2b..91fc97e2 100644 --- a/src/flint/flintlib/dirichlet.pxd +++ b/src/flint/flintlib/functions/dirichlet.pxd @@ -1,34 +1,16 @@ -from flint.flintlib.flint cimport ulong, slong -from flint.flintlib.nmod cimport nmod_t +from flint.flintlib.types.dirichlet cimport dirichlet_char_t, dirichlet_group_t +from flint.flintlib.types.flint cimport slong, ulong -cdef extern from "flint/dirichlet.h": - ctypedef struct dirichlet_group_struct: - ulong q - ulong q_even - nmod_t mod - ulong rad_q - ulong phi_q - long neven - long num - ulong expo - void * P - ulong * generators - ulong * PHI - ctypedef dirichlet_group_struct dirichlet_group_t[1] - ctypedef struct dirichlet_char_struct: - ulong n - ulong * log - ctypedef dirichlet_char_struct dirichlet_char_t[1] -# from here on is parsed +cdef extern from "flint/dirichlet.h": int dirichlet_group_init(dirichlet_group_t G, ulong q) void dirichlet_subgroup_init(dirichlet_group_t H, const dirichlet_group_t G, ulong h) void dirichlet_group_clear(dirichlet_group_t G) ulong dirichlet_group_size(const dirichlet_group_t G) ulong dirichlet_group_num_primitive(const dirichlet_group_t G) void dirichlet_group_dlog_precompute(dirichlet_group_t G, ulong num) - void dirichlet_group_dlog_clear(dirichlet_group_t G, ulong num) + void dirichlet_group_dlog_clear(dirichlet_group_t G) void dirichlet_char_init(dirichlet_char_t chi, const dirichlet_group_t G) void dirichlet_char_clear(dirichlet_char_t chi) void dirichlet_char_print(const dirichlet_group_t G, const dirichlet_char_t chi) @@ -53,9 +35,6 @@ cdef extern from "flint/dirichlet.h": ulong dirichlet_order_char(const dirichlet_group_t G, const dirichlet_char_t x) int dirichlet_char_is_real(const dirichlet_group_t G, const dirichlet_char_t chi) int dirichlet_char_is_primitive(const dirichlet_group_t G, const dirichlet_char_t chi) - - cdef ulong DIRICHLET_CHI_NULL - ulong dirichlet_pairing(const dirichlet_group_t G, ulong m, ulong n) ulong dirichlet_pairing_char(const dirichlet_group_t G, const dirichlet_char_t chi, const dirichlet_char_t psi) ulong dirichlet_chi(const dirichlet_group_t G, const dirichlet_char_t chi, ulong n) diff --git a/src/flint/flintlib/functions/fmpq.pxd b/src/flint/flintlib/functions/fmpq.pxd new file mode 100644 index 00000000..04e7d369 --- /dev/null +++ b/src/flint/flintlib/functions/fmpq.pxd @@ -0,0 +1,133 @@ +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, slong, ulong +from flint.flintlib.types.fmpq cimport fmpq_t + +# unknown type FILE +# unknown type mpfr_rnd_t +# unknown type mpfr_t +# unknown type mpq_t +# unknown type mpz_t + + +cdef extern from "flint/fmpq.h": + fmpz_struct * fmpq_numref(const fmpq_t x) + fmpz_struct * fmpq_denref(const fmpq_t x) + void fmpq_init(fmpq_t x) + void fmpq_clear(fmpq_t x) + void fmpq_canonicalise(fmpq_t res) + void _fmpq_canonicalise(fmpz_t num, fmpz_t den) + int fmpq_is_canonical(const fmpq_t x) + int _fmpq_is_canonical(const fmpz_t num, const fmpz_t den) + void fmpq_set(fmpq_t dest, const fmpq_t src) + void fmpq_swap(fmpq_t op1, fmpq_t op2) + void fmpq_neg(fmpq_t dest, const fmpq_t src) + void fmpq_abs(fmpq_t dest, const fmpq_t src) + void fmpq_zero(fmpq_t res) + void fmpq_one(fmpq_t res) + int fmpq_is_zero(const fmpq_t res) + int fmpq_is_one(const fmpq_t res) + int fmpq_is_pm1(const fmpq_t res) + int fmpq_equal(const fmpq_t x, const fmpq_t y) + int fmpq_equal_fmpz(const fmpq_t x, const fmpz_t y) + int fmpq_equal_si(fmpq_t x, slong y) + int fmpq_equal_ui(fmpq_t x, ulong y) + int fmpq_sgn(const fmpq_t x) + int fmpq_cmp(const fmpq_t x, const fmpq_t y) + int fmpq_cmp_fmpz(const fmpq_t x, const fmpz_t y) + int fmpq_cmp_si(const fmpq_t x, slong y) + int fmpq_cmp_ui(const fmpq_t x, ulong y) + void fmpq_height(fmpz_t height, const fmpq_t x) + flint_bitcnt_t fmpq_height_bits(const fmpq_t x) + void fmpq_set_fmpz_frac(fmpq_t res, const fmpz_t p, const fmpz_t q) + # void fmpq_get_mpz_frac(mpz_t a, mpz_t b, fmpq_t c) + void fmpq_set_si(fmpq_t res, slong p, ulong q) + void _fmpq_set_si(fmpz_t rnum, fmpz_t rden, slong p, ulong q) + void fmpq_set_ui(fmpq_t res, ulong p, ulong q) + void _fmpq_set_ui(fmpz_t rnum, fmpz_t rden, ulong p, ulong q) + # void fmpq_set_mpq(fmpq_t dest, const mpq_t src) + int fmpq_set_str(fmpq_t dest, const char * s, int base) + double fmpq_get_d(const fmpq_t f) + # void fmpq_get_mpq(mpq_t dest, const fmpq_t src) + # int fmpq_get_mpfr(mpfr_t dest, const fmpq_t src, mpfr_rnd_t rnd) + char * _fmpq_get_str(char * str, int b, const fmpz_t num, const fmpz_t den) + char * fmpq_get_str(char * str, int b, const fmpq_t x) + # void flint_mpq_init_set_readonly(mpq_t z, const fmpq_t f) + # void flint_mpq_clear_readonly(mpq_t z) + # void fmpq_init_set_readonly(fmpq_t f, const mpq_t z) + void fmpq_clear_readonly(fmpq_t f) + # int fmpq_fprint(FILE * file, const fmpq_t x) + # int _fmpq_fprint(FILE * file, const fmpz_t num, const fmpz_t den) + int fmpq_print(const fmpq_t x) + int _fmpq_print(const fmpz_t num, const fmpz_t den) + void fmpq_randtest(fmpq_t res, flint_rand_t state, flint_bitcnt_t bits) + void _fmpq_randtest(fmpz_t num, fmpz_t den, flint_rand_t state, flint_bitcnt_t bits) + void fmpq_randtest_not_zero(fmpq_t res, flint_rand_t state, flint_bitcnt_t bits) + void fmpq_randbits(fmpq_t res, flint_rand_t state, flint_bitcnt_t bits) + void _fmpq_randbits(fmpz_t num, fmpz_t den, flint_rand_t state, flint_bitcnt_t bits) + void fmpq_add(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void fmpq_sub(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void fmpq_mul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void fmpq_div(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void _fmpq_add(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) + void _fmpq_sub(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) + void _fmpq_mul(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) + void _fmpq_div(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) + void _fmpq_add_si(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, slong r) + void _fmpq_sub_si(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, slong r) + void _fmpq_add_ui(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, ulong r) + void _fmpq_sub_ui(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, ulong r) + void _fmpq_add_fmpz(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, const fmpz_t r) + void _fmpq_sub_fmpz(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, const fmpz_t r) + void fmpq_add_si(fmpq_t res, const fmpq_t op1, slong c) + void fmpq_sub_si(fmpq_t res, const fmpq_t op1, slong c) + void fmpq_add_ui(fmpq_t res, const fmpq_t op1, ulong c) + void fmpq_sub_ui(fmpq_t res, const fmpq_t op1, ulong c) + void fmpq_add_fmpz(fmpq_t res, const fmpq_t op1, const fmpz_t c) + void fmpq_sub_fmpz(fmpq_t res, const fmpq_t op1, const fmpz_t c) + void _fmpq_mul_si(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, slong r) + void fmpq_mul_si(fmpq_t res, const fmpq_t op1, slong c) + void _fmpq_mul_ui(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, ulong r) + void fmpq_mul_ui(fmpq_t res, const fmpq_t op1, ulong c) + void fmpq_addmul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void fmpq_submul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void _fmpq_addmul(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) + void _fmpq_submul(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) + void fmpq_inv(fmpq_t dest, const fmpq_t src) + void _fmpq_pow_si(fmpz_t rnum, fmpz_t rden, const fmpz_t opnum, const fmpz_t opden, slong e) + void fmpq_pow_si(fmpq_t res, const fmpq_t op, slong e) + int fmpq_pow_fmpz(fmpq_t a, const fmpq_t b, const fmpz_t e) + void fmpq_mul_fmpz(fmpq_t res, const fmpq_t op, const fmpz_t x) + void fmpq_div_fmpz(fmpq_t res, const fmpq_t op, const fmpz_t x) + void fmpq_mul_2exp(fmpq_t res, const fmpq_t x, flint_bitcnt_t exp) + void fmpq_div_2exp(fmpq_t res, const fmpq_t x, flint_bitcnt_t exp) + void _fmpq_gcd(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, const fmpz_t r, const fmpz_t s) + void fmpq_gcd(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void _fmpq_gcd_cofactors(fmpz_t gnum, fmpz_t gden, fmpz_t abar, fmpz_t bbar, const fmpz_t anum, const fmpz_t aden, const fmpz_t bnum, const fmpz_t bden) + void fmpq_gcd_cofactors(fmpq_t g, fmpz_t abar, fmpz_t bbar, const fmpq_t a, const fmpq_t b) + void _fmpq_add_small(fmpz_t rnum, fmpz_t rden, slong p1, ulong q1, slong p2, ulong q2) + void _fmpq_mul_small(fmpz_t rnum, fmpz_t rden, slong p1, ulong q1, slong p2, ulong q2) + int _fmpq_mod_fmpz(fmpz_t res, const fmpz_t num, const fmpz_t den, const fmpz_t mod) + int fmpq_mod_fmpz(fmpz_t res, const fmpq_t x, const fmpz_t mod) + int _fmpq_reconstruct_fmpz_2_naive(fmpz_t n, fmpz_t d, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) + int _fmpq_reconstruct_fmpz_2(fmpz_t n, fmpz_t d, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) + int fmpq_reconstruct_fmpz_2(fmpq_t res, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) + int _fmpq_reconstruct_fmpz(fmpz_t n, fmpz_t d, const fmpz_t a, const fmpz_t m) + int fmpq_reconstruct_fmpz(fmpq_t res, const fmpz_t a, const fmpz_t m) + void _fmpq_next_minimal(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) + void fmpq_next_minimal(fmpq_t res, const fmpq_t x) + void _fmpq_next_signed_minimal(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) + void fmpq_next_signed_minimal(fmpq_t res, const fmpq_t x) + void _fmpq_next_calkin_wilf(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) + void fmpq_next_calkin_wilf(fmpq_t res, const fmpq_t x) + void _fmpq_next_signed_calkin_wilf(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) + void fmpq_next_signed_calkin_wilf(fmpq_t res, const fmpq_t x) + void fmpq_farey_neighbors(fmpq_t l, fmpq_t r, const fmpq_t x, const fmpz_t Q) + void _fmpq_simplest_between(fmpz_t x_num, fmpz_t x_den, const fmpz_t l_num, const fmpz_t l_den, const fmpz_t r_num, const fmpz_t r_den) + void fmpq_simplest_between(fmpq_t x, const fmpq_t l, const fmpq_t r) + slong fmpq_get_cfrac(fmpz_struct * c, fmpq_t rem, const fmpq_t x, slong n) + slong fmpq_get_cfrac_naive(fmpz_struct * c, fmpq_t rem, const fmpq_t x, slong n) + void fmpq_set_cfrac(fmpq_t x, const fmpz_struct * c, slong n) + slong fmpq_cfrac_bound(const fmpq_t x) + void _fmpq_harmonic_ui(fmpz_t num, fmpz_t den, ulong n) + void fmpq_harmonic_ui(fmpq_t x, ulong n) + void fmpq_dedekind_sum(fmpq_t s, const fmpz_t h, const fmpz_t k) + void fmpq_dedekind_sum_naive(fmpq_t s, const fmpz_t h, const fmpz_t k) diff --git a/src/flint/flintlib/fmpq_mat.pxd b/src/flint/flintlib/functions/fmpq_mat.pxd similarity index 93% rename from src/flint/flintlib/fmpq_mat.pxd rename to src/flint/flintlib/functions/fmpq_mat.pxd index 85604115..28eccce8 100644 --- a/src/flint/flintlib/fmpq_mat.pxd +++ b/src/flint/flintlib/functions/fmpq_mat.pxd @@ -1,19 +1,10 @@ -from flint.flintlib.flint cimport flint_rand_t, mp_bitcnt_t,slong,flint_bitcnt_t -from flint.flintlib.fmpz cimport fmpz_struct, fmpz_t -from flint.flintlib.fmpq cimport fmpq_struct, fmpq_t -from flint.flintlib.fmpz_mat cimport fmpz_mat_t -from flint.flintlib.fmpq_poly cimport fmpq_poly_t +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, slong +from flint.flintlib.types.fmpq cimport fmpq_mat_t, fmpq_poly_t, fmpq_struct, fmpq_t +from flint.flintlib.types.fmpz cimport fmpz_mat_t -cdef extern from "flint/fmpq_mat.h": - ctypedef struct fmpq_mat_struct: - fmpq_struct * entries - long r - long c - fmpq_struct ** rows - ctypedef fmpq_mat_struct fmpq_mat_t[1] -# from here on is parsed +cdef extern from "flint/fmpq_mat.h": void fmpq_mat_init(fmpq_mat_t mat, slong rows, slong cols) void fmpq_mat_init_set(fmpq_mat_t mat1, const fmpq_mat_t mat2) void fmpq_mat_clear(fmpq_mat_t mat) @@ -100,4 +91,3 @@ cdef extern from "flint/fmpq_mat.h": void fmpq_mat_charpoly(fmpq_poly_t pol, const fmpq_mat_t mat) slong _fmpq_mat_minpoly(fmpz_struct * coeffs, fmpz_t den, const fmpq_mat_t mat) void fmpq_mat_minpoly(fmpq_poly_t pol, const fmpq_mat_t mat) - diff --git a/src/flint/flintlib/fmpq_mpoly.pxd b/src/flint/flintlib/functions/fmpq_mpoly.pxd similarity index 86% rename from src/flint/flintlib/fmpq_mpoly.pxd rename to src/flint/flintlib/functions/fmpq_mpoly.pxd index ccaf77c1..1dc1d0ad 100644 --- a/src/flint/flintlib/fmpq_mpoly.pxd +++ b/src/flint/flintlib/functions/fmpq_mpoly.pxd @@ -1,33 +1,13 @@ -from flint.flintlib.fmpq_poly cimport fmpq_poly_t, fmpq_poly_struct -from flint.flintlib.flint cimport slong, mp_limb_t, ulong, flint_bitcnt_t, fmpz_struct, flint_rand_t -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.fmpz_mpoly cimport fmpz_mpoly_ctx_t, fmpz_mpoly_t, fmpz_mpoly_struct -from flint.flintlib.fmpq cimport fmpq_struct, fmpq_t -from flint.flintlib.mpoly cimport ordering_t +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, slong, ulong +from flint.flintlib.types.fmpq cimport fmpq_mpoly_ctx_t, fmpq_mpoly_struct, fmpq_mpoly_t, fmpq_poly_struct, fmpq_poly_t, fmpq_struct, fmpq_t +from flint.flintlib.types.fmpz cimport fmpz_mpoly_struct +from flint.flintlib.types.mpoly cimport ordering_t +# unknown type FILE +# unknown type fmpq_mpoly_univar_t -# unimported types {'fmpq_mpoly_univar_t'} cdef extern from "flint/fmpq_mpoly.h": - ctypedef struct fmpq_mpoly_ctx_struct: - fmpz_mpoly_ctx_t zctx - - ctypedef fmpq_mpoly_ctx_struct fmpq_mpoly_ctx_t[1] - - ctypedef struct fmpq_mpoly_struct: - fmpq_t content - fmpz_mpoly_t zpoly - - ctypedef fmpq_mpoly_struct fmpq_mpoly_t[1] - - ctypedef struct fmpq_mpoly_univar_struct: - fmpq_mpoly_struct *coeffs - fmpz_struct * exps - slong alloc - slong length - - ctypedef fmpq_mpoly_univar_struct fmpq_mpoly_univar_t[1] - void fmpq_mpoly_ctx_init(fmpq_mpoly_ctx_t ctx, slong nvars, const ordering_t ord) slong fmpq_mpoly_ctx_nvars(const fmpq_mpoly_ctx_t ctx) ordering_t fmpq_mpoly_ctx_ord(const fmpq_mpoly_ctx_t ctx) @@ -115,9 +95,9 @@ cdef extern from "flint/fmpq_mpoly.h": void fmpq_mpoly_sort_terms(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) void fmpq_mpoly_combine_like_terms(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) void fmpq_mpoly_reverse(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) - void fmpq_mpoly_randtest_bound(fmpq_mpoly_t A, flint_rand_t state, slong length, mp_limb_t coeff_bits, ulong exp_bound, const fmpq_mpoly_ctx_t ctx) - void fmpq_mpoly_randtest_bounds(fmpq_mpoly_t A, flint_rand_t state, slong length, mp_limb_t coeff_bits, ulong * exp_bounds, const fmpq_mpoly_ctx_t ctx) - void fmpq_mpoly_randtest_bits(fmpq_mpoly_t A, flint_rand_t state, slong length, mp_limb_t coeff_bits, mp_limb_t exp_bits, const fmpq_mpoly_ctx_t ctx) + void fmpq_mpoly_randtest_bound(fmpq_mpoly_t A, flint_rand_t state, slong length, ulong coeff_bits, ulong exp_bound, const fmpq_mpoly_ctx_t ctx) + void fmpq_mpoly_randtest_bounds(fmpq_mpoly_t A, flint_rand_t state, slong length, ulong coeff_bits, ulong * exp_bounds, const fmpq_mpoly_ctx_t ctx) + void fmpq_mpoly_randtest_bits(fmpq_mpoly_t A, flint_rand_t state, slong length, ulong coeff_bits, ulong exp_bits, const fmpq_mpoly_ctx_t ctx) void fmpq_mpoly_add_fmpq(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_t c, const fmpq_mpoly_ctx_t ctx) void fmpq_mpoly_add_fmpz(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpz_t c, const fmpq_mpoly_ctx_t ctx) void fmpq_mpoly_add_ui(fmpq_mpoly_t A, const fmpq_mpoly_t B, ulong c, const fmpq_mpoly_ctx_t ctx) @@ -166,13 +146,13 @@ cdef extern from "flint/fmpq_mpoly.h": int fmpq_mpoly_discriminant(fmpq_mpoly_t D, const fmpq_mpoly_t A, slong var, const fmpq_mpoly_ctx_t ctx) int fmpq_mpoly_sqrt(fmpq_mpoly_t Q, const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) int fmpq_mpoly_is_square(const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) - void fmpq_mpoly_univar_init(fmpq_mpoly_univar_t A, const fmpq_mpoly_ctx_t ctx) - void fmpq_mpoly_univar_clear(fmpq_mpoly_univar_t A, const fmpq_mpoly_ctx_t ctx) - void fmpq_mpoly_univar_swap(fmpq_mpoly_univar_t A, fmpq_mpoly_univar_t B, const fmpq_mpoly_ctx_t ctx) - void fmpq_mpoly_to_univar(fmpq_mpoly_univar_t A, const fmpq_mpoly_t B, slong var, const fmpq_mpoly_ctx_t ctx) - void fmpq_mpoly_from_univar(fmpq_mpoly_t A, const fmpq_mpoly_univar_t B, slong var, const fmpq_mpoly_ctx_t ctx) - int fmpq_mpoly_univar_degree_fits_si(const fmpq_mpoly_univar_t A, const fmpq_mpoly_ctx_t ctx) - slong fmpq_mpoly_univar_length(const fmpq_mpoly_univar_t A, const fmpq_mpoly_ctx_t ctx) - slong fmpq_mpoly_univar_get_term_exp_si(fmpq_mpoly_univar_t A, slong i, const fmpq_mpoly_ctx_t ctx) - void fmpq_mpoly_univar_get_term_coeff(fmpq_mpoly_t c, const fmpq_mpoly_univar_t A, slong i, const fmpq_mpoly_ctx_t ctx) - void fmpq_mpoly_univar_swap_term_coeff(fmpq_mpoly_t c, fmpq_mpoly_univar_t A, slong i, const fmpq_mpoly_ctx_t ctx) + # void fmpq_mpoly_univar_init(fmpq_mpoly_univar_t A, const fmpq_mpoly_ctx_t ctx) + # void fmpq_mpoly_univar_clear(fmpq_mpoly_univar_t A, const fmpq_mpoly_ctx_t ctx) + # void fmpq_mpoly_univar_swap(fmpq_mpoly_univar_t A, fmpq_mpoly_univar_t B, const fmpq_mpoly_ctx_t ctx) + # void fmpq_mpoly_to_univar(fmpq_mpoly_univar_t A, const fmpq_mpoly_t B, slong var, const fmpq_mpoly_ctx_t ctx) + # void fmpq_mpoly_from_univar(fmpq_mpoly_t A, const fmpq_mpoly_univar_t B, slong var, const fmpq_mpoly_ctx_t ctx) + # int fmpq_mpoly_univar_degree_fits_si(const fmpq_mpoly_univar_t A, const fmpq_mpoly_ctx_t ctx) + # slong fmpq_mpoly_univar_length(const fmpq_mpoly_univar_t A, const fmpq_mpoly_ctx_t ctx) + # slong fmpq_mpoly_univar_get_term_exp_si(fmpq_mpoly_univar_t A, slong i, const fmpq_mpoly_ctx_t ctx) + # void fmpq_mpoly_univar_get_term_coeff(fmpq_mpoly_t c, const fmpq_mpoly_univar_t A, slong i, const fmpq_mpoly_ctx_t ctx) + # void fmpq_mpoly_univar_swap_term_coeff(fmpq_mpoly_t c, fmpq_mpoly_univar_t A, slong i, const fmpq_mpoly_ctx_t ctx) diff --git a/src/flint/flintlib/fmpq_mpoly_factor.pxd b/src/flint/flintlib/functions/fmpq_mpoly_factor.pxd similarity index 68% rename from src/flint/flintlib/fmpq_mpoly_factor.pxd rename to src/flint/flintlib/functions/fmpq_mpoly_factor.pxd index 3336acf6..e3c68f30 100644 --- a/src/flint/flintlib/fmpq_mpoly_factor.pxd +++ b/src/flint/flintlib/functions/fmpq_mpoly_factor.pxd @@ -1,20 +1,11 @@ -from flint.flintlib.fmpq cimport fmpq_t -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.fmpq_mpoly cimport fmpq_mpoly_ctx_t, fmpq_mpoly_t, fmpq_mpoly_struct -from flint.flintlib.flint cimport slong, fmpz_struct +from flint.flintlib.types.flint cimport slong +from flint.flintlib.types.fmpq cimport fmpq_mpoly_ctx_t, fmpq_mpoly_factor_t, fmpq_mpoly_t, fmpq_t + -cdef extern from "flint/fmpq_mpoly_factor.h": - ctypedef struct fmpq_mpoly_factor_struct: - fmpq_t constant - fmpq_mpoly_struct * poly - fmpz_struct * exp - slong num - slong alloc - ctypedef fmpq_mpoly_factor_struct fmpq_mpoly_factor_t[1] +cdef extern from "flint/fmpq_mpoly_factor.h": void fmpq_mpoly_factor_init(fmpq_mpoly_factor_t f, const fmpq_mpoly_ctx_t ctx) void fmpq_mpoly_factor_clear(fmpq_mpoly_factor_t f, const fmpq_mpoly_ctx_t ctx) - void fmpq_mpoly_factor_swap(fmpq_mpoly_factor_t f, fmpq_mpoly_factor_t g, const fmpq_mpoly_ctx_t ctx) slong fmpq_mpoly_factor_length(const fmpq_mpoly_factor_t f, const fmpq_mpoly_ctx_t ctx) void fmpq_mpoly_factor_get_constant_fmpq(fmpq_t c, const fmpq_mpoly_factor_t f, const fmpq_mpoly_ctx_t ctx) void fmpq_mpoly_factor_get_base(fmpq_mpoly_t B, const fmpq_mpoly_factor_t f, slong i, const fmpq_mpoly_ctx_t ctx) diff --git a/src/flint/flintlib/fmpq_poly.pxd b/src/flint/flintlib/functions/fmpq_poly.pxd similarity index 83% rename from src/flint/flintlib/fmpq_poly.pxd rename to src/flint/flintlib/functions/fmpq_poly.pxd index 14956cc8..93b19ff1 100644 --- a/src/flint/flintlib/fmpq_poly.pxd +++ b/src/flint/flintlib/functions/fmpq_poly.pxd @@ -1,19 +1,13 @@ -from flint.flintlib.flint cimport mp_bitcnt_t, flint_rand_t, ulong, slong, flint_bitcnt_t -from flint.flintlib.fmpz cimport fmpz_struct, fmpz_t -from flint.flintlib.fmpz_poly cimport fmpz_poly_t -from flint.flintlib.fmpq cimport fmpq_t, fmpq_struct -from flint.flintlib.nmod_poly cimport nmod_poly_t +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, slong, ulong +from flint.flintlib.types.fmpq cimport fmpq_poly_struct, fmpq_poly_t, fmpq_t +from flint.flintlib.types.fmpz cimport fmpz_poly_t, fmpz_preinvn_t +from flint.flintlib.types.nmod cimport nmod_poly_t -cdef extern from "flint/fmpq_poly.h": - ctypedef struct fmpq_poly_struct: - fmpz_struct * coeffs - long alloc - long length - fmpz_t den - ctypedef fmpq_poly_struct fmpq_poly_t[1] +# unknown type FILE +# unknown type fmpq_poly_powers_precomp_t -# from here on is parsed +cdef extern from "flint/fmpq_poly.h": void fmpq_poly_init(fmpq_poly_t poly) void fmpq_poly_init2(fmpq_poly_t poly, slong alloc) void fmpq_poly_realloc(fmpq_poly_t poly, slong alloc) @@ -39,14 +33,10 @@ cdef extern from "flint/fmpq_poly.h": void fmpq_poly_set_ui(fmpq_poly_t poly, ulong x) void fmpq_poly_set_fmpz(fmpq_poly_t poly, const fmpz_t x) void fmpq_poly_set_fmpq(fmpq_poly_t poly, const fmpq_t x) - # void fmpq_poly_set_mpz(fmpq_poly_t poly, const mpz_t x) - # void fmpq_poly_set_mpq(fmpq_poly_t poly, const mpq_t x) void fmpq_poly_set_fmpz_poly(fmpq_poly_t rop, const fmpz_poly_t op) void fmpq_poly_set_nmod_poly(fmpq_poly_t rop, const nmod_poly_t op) void fmpq_poly_get_nmod_poly(nmod_poly_t rop, const fmpq_poly_t op) void fmpq_poly_get_nmod_poly_den(nmod_poly_t rop, const fmpq_poly_t op, int den) - # void _fmpq_poly_set_array_mpq(fmpz_struct * poly, fmpz_t den, const mpq_t * a, slong n) - # void fmpq_poly_set_array_mpq(fmpq_poly_t poly, const mpq_t * a, slong n) int _fmpq_poly_set_str(fmpz_struct * poly, fmpz_t den, const char * str, slong len) int fmpq_poly_set_str(fmpq_poly_t poly, const char * str) char * fmpq_poly_get_str(const fmpq_poly_t poly) @@ -62,13 +52,10 @@ cdef extern from "flint/fmpq_poly.h": void fmpq_poly_reverse(fmpq_poly_t res, const fmpq_poly_t poly, slong n) void fmpq_poly_get_coeff_fmpz(fmpz_t x, const fmpq_poly_t poly, slong n) void fmpq_poly_get_coeff_fmpq(fmpq_t x, const fmpq_poly_t poly, slong n) - # void fmpq_poly_get_coeff_mpq(mpq_t x, const fmpq_poly_t poly, slong n) void fmpq_poly_set_coeff_si(fmpq_poly_t poly, slong n, slong x) void fmpq_poly_set_coeff_ui(fmpq_poly_t poly, slong n, ulong x) void fmpq_poly_set_coeff_fmpz(fmpq_poly_t poly, slong n, const fmpz_t x) void fmpq_poly_set_coeff_fmpq(fmpq_poly_t poly, slong n, const fmpq_t x) - # void fmpq_poly_set_coeff_mpz(fmpq_poly_t rop, slong n, const mpz_t x) - # void fmpq_poly_set_coeff_mpq(fmpq_poly_t rop, slong n, const mpq_t x) int fmpq_poly_equal(const fmpq_poly_t poly1, const fmpq_poly_t poly2) int _fmpq_poly_equal_trunc(const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, slong n) int fmpq_poly_equal_trunc(const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n) @@ -79,30 +66,28 @@ cdef extern from "flint/fmpq_poly.h": int fmpq_poly_is_gen(const fmpq_poly_t poly) void _fmpq_poly_add(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2) void _fmpq_poly_add_can(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, int can) - void fmpq_poly_add(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2) - void fmpq_poly_add_can(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2, int can) + void fmpq_poly_add(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2) + void fmpq_poly_add_can(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, int can) void _fmpq_poly_add_series(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, slong n) void _fmpq_poly_add_series_can(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, slong n, int can) - void fmpq_poly_add_series(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2, slong n) - void fmpq_poly_add_series_can(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2, slong n, int can) + void fmpq_poly_add_series(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n) + void fmpq_poly_add_series_can(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n, int can) void _fmpq_poly_sub(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2) void _fmpq_poly_sub_can(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, int can) - void fmpq_poly_sub(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2) - void fmpq_poly_sub_can(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2, int can) + void fmpq_poly_sub(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2) + void fmpq_poly_sub_can(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, int can) void _fmpq_poly_sub_series(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, slong n) void _fmpq_poly_sub_series_can(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, slong n, int can) - void fmpq_poly_sub_series(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2, slong n) - void fmpq_poly_sub_series_can(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2, slong n, int can) + void fmpq_poly_sub_series(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n) + void fmpq_poly_sub_series_can(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n, int can) void _fmpq_poly_scalar_mul_si(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, slong c) void _fmpq_poly_scalar_mul_ui(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, ulong c) void _fmpq_poly_scalar_mul_fmpz(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, const fmpz_t c) void _fmpq_poly_scalar_mul_fmpq(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, const fmpz_t r, const fmpz_t s) + void fmpq_poly_scalar_mul_fmpq(fmpq_poly_t rop, const fmpq_poly_t op, const fmpq_t c) void fmpq_poly_scalar_mul_si(fmpq_poly_t rop, const fmpq_poly_t op, slong c) void fmpq_poly_scalar_mul_ui(fmpq_poly_t rop, const fmpq_poly_t op, ulong c) void fmpq_poly_scalar_mul_fmpz(fmpq_poly_t rop, const fmpq_poly_t op, const fmpz_t c) - # void fmpq_poly_scalar_mul_fmpq(fmpq_poly_t rop, const fmpq_poly_t op, const mpq_t c) - # void fmpq_poly_scalar_mul_mpz(fmpq_poly_t rop, const fmpq_poly_t op, const mpz_t c) - void fmpq_poly_scalar_mul_mpq(fmpq_poly_t rop, const fmpq_poly_t op, const fmpq_t c) void _fmpq_poly_scalar_div_fmpz(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, const fmpz_t c) void _fmpq_poly_scalar_div_si(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, slong c) void _fmpq_poly_scalar_div_ui(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, ulong c) @@ -111,8 +96,6 @@ cdef extern from "flint/fmpq_poly.h": void fmpq_poly_scalar_div_ui(fmpq_poly_t rop, const fmpq_poly_t op, ulong c) void fmpq_poly_scalar_div_fmpz(fmpq_poly_t rop, const fmpq_poly_t op, const fmpz_t c) void fmpq_poly_scalar_div_fmpq(fmpq_poly_t rop, const fmpq_poly_t op, const fmpq_t c) - # void fmpq_poly_scalar_div_mpz(fmpq_poly_t rop, const fmpq_poly_t op, const mpz_t c) - # void fmpq_poly_scalar_div_mpq(fmpq_poly_t rop, const fmpq_poly_t op, const mpq_t c) void _fmpq_poly_mul(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2) void fmpq_poly_mul(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2) void _fmpq_poly_mullow(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, slong n) @@ -125,36 +108,36 @@ cdef extern from "flint/fmpq_poly.h": void fmpq_poly_pow_trunc(fmpq_poly_t res, const fmpq_poly_t poly, ulong e, slong n) void fmpq_poly_shift_left(fmpq_poly_t res, const fmpq_poly_t poly, slong n) void fmpq_poly_shift_right(fmpq_poly_t res, const fmpq_poly_t poly, slong n) - # void _fmpq_poly_divrem(fmpz_struct * Q, fmpz_t q, fmpz_struct * R, fmpz_t r, const fmpz_struct * A, const fmpz_t a, slong lenA, const fmpz_struct * B, const fmpz_t b, slong lenB, const fmpz_preinvn_t inv) + void _fmpq_poly_divrem(fmpz_struct * Q, fmpz_t q, fmpz_struct * R, fmpz_t r, const fmpz_struct * A, const fmpz_t a, slong lenA, const fmpz_struct * B, const fmpz_t b, slong lenB, const fmpz_preinvn_t inv) void fmpq_poly_divrem(fmpq_poly_t Q, fmpq_poly_t R, const fmpq_poly_t poly1, const fmpq_poly_t poly2) - # void _fmpq_poly_div(fmpz_struct * Q, fmpz_t q, const fmpz_struct * A, const fmpz_t a, slong lenA, const fmpz_struct * B, const fmpz_t b, slong lenB, const fmpz_preinvn_t inv) + void _fmpq_poly_div(fmpz_struct * Q, fmpz_t q, const fmpz_struct * A, const fmpz_t a, slong lenA, const fmpz_struct * B, const fmpz_t b, slong lenB, const fmpz_preinvn_t inv) void fmpq_poly_div(fmpq_poly_t Q, const fmpq_poly_t poly1, const fmpq_poly_t poly2) - # void _fmpq_poly_rem(fmpz_struct * R, fmpz_t r, const fmpz_struct * A, const fmpz_t a, slong lenA, const fmpz_struct * B, const fmpz_t b, slong lenB, const fmpz_preinvn_t inv) + void _fmpq_poly_rem(fmpz_struct * R, fmpz_t r, const fmpz_struct * A, const fmpz_t a, slong lenA, const fmpz_struct * B, const fmpz_t b, slong lenB, const fmpz_preinvn_t inv) void fmpq_poly_rem(fmpq_poly_t R, const fmpq_poly_t poly1, const fmpq_poly_t poly2) fmpq_poly_struct * _fmpq_poly_powers_precompute(const fmpz_struct * B, const fmpz_t denB, slong len) # void fmpq_poly_powers_precompute(fmpq_poly_powers_precomp_t pinv, fmpq_poly_t poly) void _fmpq_poly_powers_clear(fmpq_poly_struct * powers, slong len) # void fmpq_poly_powers_clear(fmpq_poly_powers_precomp_t pinv) - void _fmpq_poly_rem_powers_precomp(fmpz_struct * A, fmpz_t denA, slong m, const fmpz_struct * B, const fmpz_t denB, slong n, const fmpq_poly_struct * const powers) + void _fmpq_poly_rem_powers_precomp(fmpz_struct * A, fmpz_t denA, slong m, const fmpz_struct * B, const fmpz_t denB, slong n, fmpq_poly_struct * const powers) # void fmpq_poly_rem_powers_precomp(fmpq_poly_t R, const fmpq_poly_t A, const fmpq_poly_t B, const fmpq_poly_powers_precomp_t B_inv) int _fmpq_poly_divides(fmpz_struct * qpoly, fmpz_t qden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2) int fmpq_poly_divides(fmpq_poly_t q, const fmpq_poly_t poly1, const fmpq_poly_t poly2) slong fmpq_poly_remove(fmpq_poly_t q, const fmpq_poly_t poly1, const fmpq_poly_t poly2) void _fmpq_poly_inv_series_newton(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, slong n) void fmpq_poly_inv_series_newton(fmpq_poly_t res, const fmpq_poly_t poly, slong n) - void _fmpq_poly_inv_series(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong n) + void _fmpq_poly_inv_series(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong den_len, slong n) void fmpq_poly_inv_series(fmpq_poly_t res, const fmpq_poly_t poly, slong n) void _fmpq_poly_div_series(fmpz_struct * Q, fmpz_t denQ, const fmpz_struct * A, const fmpz_t denA, slong lenA, const fmpz_struct * B, const fmpz_t denB, slong lenB, slong n) void fmpq_poly_div_series(fmpq_poly_t Q, const fmpq_poly_t A, const fmpq_poly_t B, slong n) - void _fmpq_poly_gcd(fmpz_struct *G, fmpz_t denG, const fmpz_struct *A, slong lenA, const fmpz_struct *B, slong lenB) + void _fmpq_poly_gcd(fmpz_struct * G, fmpz_t denG, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB) void fmpq_poly_gcd(fmpq_poly_t G, const fmpq_poly_t A, const fmpq_poly_t B) - void _fmpq_poly_xgcd(fmpz_struct *G, fmpz_t denG, fmpz_struct *S, fmpz_t denS, fmpz_struct *T, fmpz_t denT, const fmpz_struct *A, const fmpz_t denA, slong lenA, const fmpz_struct *B, const fmpz_t denB, slong lenB) + void _fmpq_poly_xgcd(fmpz_struct * G, fmpz_t denG, fmpz_struct * S, fmpz_t denS, fmpz_struct * T, fmpz_t denT, const fmpz_struct * A, const fmpz_t denA, slong lenA, const fmpz_struct * B, const fmpz_t denB, slong lenB) void fmpq_poly_xgcd(fmpq_poly_t G, fmpq_poly_t S, fmpq_poly_t T, const fmpq_poly_t A, const fmpq_poly_t B) - void _fmpq_poly_lcm(fmpz_struct *L, fmpz_t denL, const fmpz_struct *A, slong lenA, const fmpz_struct *B, slong lenB) + void _fmpq_poly_lcm(fmpz_struct * L, fmpz_t denL, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB) void fmpq_poly_lcm(fmpq_poly_t L, const fmpq_poly_t A, const fmpq_poly_t B) - void _fmpq_poly_resultant(fmpz_t rnum, fmpz_t rden, const fmpz_struct *poly1, const fmpz_t den1, slong len1, const fmpz_struct *poly2, const fmpz_t den2, slong len2) + void _fmpq_poly_resultant(fmpz_t rnum, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2) void fmpq_poly_resultant(fmpq_t r, const fmpq_poly_t f, const fmpq_poly_t g) - void fmpq_poly_resultant_div(fmpq_t r, const fmpq_poly_t f, const fmpq_poly_t g, fmpz_t div, slong nbits) + void fmpq_poly_resultant_div(fmpq_t r, const fmpq_poly_t f, const fmpq_poly_t g, const fmpz_t div, slong nbits) void _fmpq_poly_derivative(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len) void fmpq_poly_derivative(fmpq_poly_t res, const fmpq_poly_t poly) void _fmpq_poly_nth_derivative(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, ulong n, slong len) @@ -200,18 +183,16 @@ cdef extern from "flint/fmpq_poly.h": void fmpq_poly_sinh_cosh_series(fmpq_poly_t res1, fmpq_poly_t res2, const fmpq_poly_t f, slong n) void _fmpq_poly_tanh_series(fmpz_struct * g, fmpz_t gden, const fmpz_struct * f, const fmpz_t fden, slong flen, slong n) void fmpq_poly_tanh_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) - void _fmpq_poly_legendre_p(fmpq_struct * coeffs, fmpz_t den, ulong n) + void _fmpq_poly_legendre_p(fmpz_struct * coeffs, fmpz_t den, ulong n) void fmpq_poly_legendre_p(fmpq_poly_t poly, ulong n) - void _fmpq_poly_laguerre_l(fmpq_struct * coeffs, fmpz_t den, ulong n) + void _fmpq_poly_laguerre_l(fmpz_struct * coeffs, fmpz_t den, ulong n) void fmpq_poly_laguerre_l(fmpq_poly_t poly, ulong n) - void _fmpq_poly_gegenbauer_c(fmpq_struct * coeffs, fmpz_t den, ulong n, const fmpq_t a) + void _fmpq_poly_gegenbauer_c(fmpz_struct * coeffs, fmpz_t den, ulong n, const fmpq_t a) void fmpq_poly_gegenbauer_c(fmpq_poly_t poly, ulong n, const fmpq_t a) void _fmpq_poly_evaluate_fmpz(fmpz_t rnum, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, const fmpz_t a) void fmpq_poly_evaluate_fmpz(fmpq_t res, const fmpq_poly_t poly, const fmpz_t a) void _fmpq_poly_evaluate_fmpq(fmpz_t rnum, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, const fmpz_t anum, const fmpz_t aden) void fmpq_poly_evaluate_fmpq(fmpq_t res, const fmpq_poly_t poly, const fmpq_t a) - # void fmpq_poly_evaluate_mpz(mpq_t res, const fmpq_poly_t poly, const mpz_t a) - # void fmpq_poly_evaluate_mpq(mpq_t res, const fmpq_poly_t poly, const mpq_t a) void _fmpq_poly_interpolate_fmpz_vec(fmpz_struct * poly, fmpz_t den, const fmpz_struct * xs, const fmpz_struct * ys, slong n) void fmpq_poly_interpolate_fmpz_vec(fmpq_poly_t poly, const fmpz_struct * xs, const fmpz_struct * ys, slong n) void _fmpq_poly_compose(fmpz_struct * res, fmpz_t den, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2) @@ -243,10 +224,11 @@ cdef extern from "flint/fmpq_poly.h": int fmpq_poly_is_squarefree(const fmpq_poly_t poly) int _fmpq_poly_print(const fmpz_struct * poly, const fmpz_t den, slong len) int fmpq_poly_print(const fmpq_poly_t poly) - int _fmpq_poly_print_pretty(const fmpz_struct *poly, const fmpz_t den, slong len, const char * x) + int _fmpq_poly_print_pretty(const fmpz_struct * poly, const fmpz_t den, slong len, const char * x) int fmpq_poly_print_pretty(const fmpq_poly_t poly, const char * var) + # int _fmpq_poly_fprint(FILE * file, const fmpz_struct * poly, const fmpz_t den, slong len) + # int fmpq_poly_fprint(FILE * file, const fmpq_poly_t poly) + # int _fmpq_poly_fprint_pretty(FILE * file, const fmpz_struct * poly, const fmpz_t den, slong len, const char * x) # int fmpq_poly_fprint_pretty(FILE * file, const fmpq_poly_t poly, const char * var) int fmpq_poly_read(fmpq_poly_t poly) - - - + # int fmpq_poly_fread(FILE * file, fmpq_poly_t poly) diff --git a/src/flint/flintlib/fmpq_vec.pxd b/src/flint/flintlib/functions/fmpq_vec.pxd similarity index 80% rename from src/flint/flintlib/fmpq_vec.pxd rename to src/flint/flintlib/functions/fmpq_vec.pxd index e8681822..8d0abb85 100644 --- a/src/flint/flintlib/fmpq_vec.pxd +++ b/src/flint/flintlib/functions/fmpq_vec.pxd @@ -1,9 +1,8 @@ -from flint.flintlib.flint cimport flint_bitcnt_t, fmpz_struct, slong, flint_rand_t -from flint.flintlib.fmpq cimport fmpq_t, fmpq_struct -from flint.flintlib.fmpz cimport fmpz_t +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, slong +from flint.flintlib.types.fmpq cimport fmpq_struct, fmpq_t +# unknown type FILE -# unimported types set() cdef extern from "flint/fmpq_vec.h": fmpq_struct * _fmpq_vec_init(slong n) diff --git a/src/flint/flintlib/fmpz.pxd b/src/flint/flintlib/functions/fmpz.pxd similarity index 98% rename from src/flint/flintlib/fmpz.pxd rename to src/flint/flintlib/functions/fmpz.pxd index 3a0d57fc..2b278bb2 100644 --- a/src/flint/flintlib/fmpz.pxd +++ b/src/flint/flintlib/functions/fmpz.pxd @@ -1,5 +1,5 @@ -from flint.flintlib.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, nmod_t, nn_ptr, nn_srcptr, slong, ulong -from flint.flintlib.fmpz_types cimport fmpz_factor_t, fmpz_preinvn_t, fmpz_t +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, nmod_t, nn_ptr, nn_srcptr, slong, ulong +from flint.flintlib.types.fmpz cimport fmpz_factor_t, fmpz_preinvn_t # unknown type FILE # unknown type fmpz_comb_t diff --git a/src/flint/flintlib/fmpz_factor.pxd b/src/flint/flintlib/functions/fmpz_factor.pxd similarity index 94% rename from src/flint/flintlib/fmpz_factor.pxd rename to src/flint/flintlib/functions/fmpz_factor.pxd index d5bef2cf..3afe2e54 100644 --- a/src/flint/flintlib/fmpz_factor.pxd +++ b/src/flint/flintlib/functions/fmpz_factor.pxd @@ -1,5 +1,5 @@ -from flint.flintlib.flint cimport flint_rand_t, nn_ptr, slong, ulong -from flint.flintlib.fmpz_types cimport fmpz_factor_t, fmpz_t +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, nn_ptr, slong, ulong +from flint.flintlib.types.fmpz cimport fmpz_factor_t # unknown type FILE # unknown type ecm_t diff --git a/src/flint/flintlib/fmpz_lll.pxd b/src/flint/flintlib/functions/fmpz_lll.pxd similarity index 95% rename from src/flint/flintlib/fmpz_lll.pxd rename to src/flint/flintlib/functions/fmpz_lll.pxd index c0a08e66..1edaff7f 100644 --- a/src/flint/flintlib/fmpz_lll.pxd +++ b/src/flint/flintlib/functions/fmpz_lll.pxd @@ -1,5 +1,5 @@ -from flint.flintlib.flint cimport flint_bitcnt_t, flint_rand_t, slong -from flint.flintlib.fmpz_types cimport fmpz_lll_t, fmpz_mat_t, fmpz_t, gram_type, rep_type +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_t, slong +from flint.flintlib.types.fmpz cimport fmpz_lll_t, fmpz_mat_t, gram_type, rep_type # unknown type d_mat_t # unknown type fmpz_gram_t diff --git a/src/flint/flintlib/fmpz_mat.pxd b/src/flint/flintlib/functions/fmpz_mat.pxd similarity index 97% rename from src/flint/flintlib/fmpz_mat.pxd rename to src/flint/flintlib/functions/fmpz_mat.pxd index e1f7e99e..48718a0c 100644 --- a/src/flint/flintlib/fmpz_mat.pxd +++ b/src/flint/flintlib/functions/fmpz_mat.pxd @@ -1,7 +1,7 @@ -from flint.flintlib.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, slong, ulong -from flint.flintlib.fmpq cimport fmpq_t -from flint.flintlib.fmpz_types cimport fmpz_mat_t, fmpz_poly_t, fmpz_t -from flint.flintlib.nmod_mat cimport nmod_mat_t +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, slong, ulong +from flint.flintlib.types.fmpq cimport fmpq_t +from flint.flintlib.types.fmpz cimport fmpz_mat_t, fmpz_poly_t +from flint.flintlib.types.nmod cimport nmod_mat_t # unknown type FILE # unknown type d_mat_t diff --git a/src/flint/flintlib/fmpz_mod.pxd b/src/flint/flintlib/functions/fmpz_mod.pxd similarity index 62% rename from src/flint/flintlib/fmpz_mod.pxd rename to src/flint/flintlib/functions/fmpz_mod.pxd index f5b92363..1ab85519 100644 --- a/src/flint/flintlib/fmpz_mod.pxd +++ b/src/flint/flintlib/functions/fmpz_mod.pxd @@ -1,50 +1,9 @@ -from flint.flintlib.flint cimport ulong, slong -from flint.flintlib.fmpz_types cimport fmpz_t, fmpz_struct, fmpz_preinvn_struct -from flint.flintlib.nmod cimport nmod_t +from flint.flintlib.types.flint cimport fmpz_struct, fmpz_t, slong, ulong +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_ctx_t, fmpz_mod_discrete_log_pohlig_hellman_t -cdef extern from "flint/fmpz_mod.h": - # - # fmpz_mod structs, a la Pohlig - Hellman - # - ctypedef struct fmpz_mod_ctx_struct: - fmpz_t n - nmod_t mod - ulong n_limbs[3] - ulong ninv_limbs[3] - fmpz_preinvn_struct * ninv_huge - ctypedef fmpz_mod_ctx_struct fmpz_mod_ctx_t[1] - - # - # discrete logs structs, a la Pohlig - Hellman - # - - ctypedef struct fmpz_mod_discrete_log_pohlig_hellman_table_entry_struct: - fmpz_t gammapow - ulong cm - ctypedef struct fmpz_mod_discrete_log_pohlig_hellman_entry_struct: - slong exp - ulong prime - fmpz_t gamma - fmpz_t gammainv - fmpz_t startingbeta - fmpz_t co - fmpz_t startinge - fmpz_t idem - ulong cbound - ulong dbound - fmpz_mod_discrete_log_pohlig_hellman_table_entry_struct * table # length cbound */ - ctypedef struct fmpz_mod_discrete_log_pohlig_hellman_struct: - fmpz_mod_ctx_t fpctx - fmpz_t pm1 # p - 1 */ - fmpz_t alpha # p.r. of p */ - fmpz_t alphainv - slong num_factors # factors of p - 1 - fmpz_mod_discrete_log_pohlig_hellman_entry_struct * entries - ctypedef fmpz_mod_discrete_log_pohlig_hellman_struct fmpz_mod_discrete_log_pohlig_hellman_t[1] - - # Parsed from here +cdef extern from "flint/fmpz_mod.h": void fmpz_mod_ctx_init(fmpz_mod_ctx_t ctx, const fmpz_t n) void fmpz_mod_ctx_clear(fmpz_mod_ctx_t ctx) void fmpz_mod_ctx_set_modulus(fmpz_mod_ctx_t ctx, const fmpz_t n) @@ -71,6 +30,6 @@ cdef extern from "flint/fmpz_mod.h": void fmpz_mod_discrete_log_pohlig_hellman_init(fmpz_mod_discrete_log_pohlig_hellman_t L) void fmpz_mod_discrete_log_pohlig_hellman_clear(fmpz_mod_discrete_log_pohlig_hellman_t L) double fmpz_mod_discrete_log_pohlig_hellman_precompute_prime(fmpz_mod_discrete_log_pohlig_hellman_t L, const fmpz_t p) - const fmpz_struct * fmpz_mod_discrete_log_pohlig_hellman_primitive_root(const fmpz_mod_discrete_log_pohlig_hellman_t L) + const fmpz_struct * fmpz_mod_discrete_log_pohlig_hellman_primitive_root(fmpz_mod_discrete_log_pohlig_hellman_t L) void fmpz_mod_discrete_log_pohlig_hellman_run(fmpz_t x, const fmpz_mod_discrete_log_pohlig_hellman_t L, const fmpz_t y) int fmpz_next_smooth_prime(fmpz_t a, const fmpz_t b) diff --git a/src/flint/flintlib/functions/fmpz_mod_mat.pxd b/src/flint/flintlib/functions/fmpz_mod_mat.pxd new file mode 100644 index 00000000..f3a2b24f --- /dev/null +++ b/src/flint/flintlib/functions/fmpz_mod_mat.pxd @@ -0,0 +1,63 @@ +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_struct, fmpz_t, slong, ulong +from flint.flintlib.types.fmpz cimport fmpz_mat_t +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_ctx_t, fmpz_mod_mat_t, fmpz_mod_poly_t + +# unknown type thread_pool_handle + + +cdef extern from "flint/fmpz_mod_mat.h": + fmpz_struct * fmpz_mod_mat_entry(const fmpz_mod_mat_t mat, slong i, slong j) + void fmpz_mod_mat_set_entry(fmpz_mod_mat_t mat, slong i, slong j, const fmpz_t val, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_init(fmpz_mod_mat_t mat, slong rows, slong cols, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_init_set(fmpz_mod_mat_t mat, const fmpz_mod_mat_t src, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_clear(fmpz_mod_mat_t mat, const fmpz_mod_ctx_t ctx) + slong fmpz_mod_mat_nrows(const fmpz_mod_mat_t mat, const fmpz_mod_ctx_t ctx) + slong fmpz_mod_mat_ncols(const fmpz_mod_mat_t mat, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_mat_set_mod(fmpz_mod_mat_t mat, const fmpz_t n, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_one(fmpz_mod_mat_t mat, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_zero(fmpz_mod_mat_t mat, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_swap(fmpz_mod_mat_t mat1, fmpz_mod_mat_t mat2, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_swap_entrywise(fmpz_mod_mat_t mat1, fmpz_mod_mat_t mat2, const fmpz_mod_ctx_t ctx) + int fmpz_mod_mat_is_empty(const fmpz_mod_mat_t mat, const fmpz_mod_ctx_t ctx) + int fmpz_mod_mat_is_square(const fmpz_mod_mat_t mat, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_mat_reduce(fmpz_mod_mat_t mat, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_randtest(fmpz_mod_mat_t mat, flint_rand_t state, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_window_init(fmpz_mod_mat_t window, const fmpz_mod_mat_t mat, slong r1, slong c1, slong r2, slong c2, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_window_clear(fmpz_mod_mat_t window, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_concat_horizontal(fmpz_mod_mat_t res, const fmpz_mod_mat_t mat1, const fmpz_mod_mat_t mat2, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_concat_vertical(fmpz_mod_mat_t res, const fmpz_mod_mat_t mat1, const fmpz_mod_mat_t mat2, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_print_pretty(const fmpz_mod_mat_t mat, const fmpz_mod_ctx_t ctx) + int fmpz_mod_mat_is_zero(const fmpz_mod_mat_t mat, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_set(fmpz_mod_mat_t B, const fmpz_mod_mat_t A, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_transpose(fmpz_mod_mat_t B, const fmpz_mod_mat_t A, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_set_fmpz_mat(fmpz_mod_mat_t A, const fmpz_mat_t B, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_get_fmpz_mat(fmpz_mat_t A, const fmpz_mod_mat_t B, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_add(fmpz_mod_mat_t C, const fmpz_mod_mat_t A, const fmpz_mod_mat_t B, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_sub(fmpz_mod_mat_t C, const fmpz_mod_mat_t A, const fmpz_mod_mat_t B, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_neg(fmpz_mod_mat_t B, const fmpz_mod_mat_t A, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_scalar_mul_si(fmpz_mod_mat_t B, const fmpz_mod_mat_t A, slong c, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_scalar_mul_ui(fmpz_mod_mat_t B, const fmpz_mod_mat_t A, ulong c, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_scalar_mul_fmpz(fmpz_mod_mat_t B, const fmpz_mod_mat_t A, fmpz_t c, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_mul(fmpz_mod_mat_t C, const fmpz_mod_mat_t A, const fmpz_mod_mat_t B, const fmpz_mod_ctx_t ctx) + # void _fmpz_mod_mat_mul_classical_threaded_pool_op(fmpz_mod_mat_t D, const fmpz_mod_mat_t C, const fmpz_mod_mat_t A, const fmpz_mod_mat_t B, int op, thread_pool_handle * threads, slong num_threads, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_mat_mul_classical_threaded_op(fmpz_mod_mat_t D, const fmpz_mod_mat_t C, const fmpz_mod_mat_t A, const fmpz_mod_mat_t B, int op, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_mul_classical_threaded(fmpz_mod_mat_t C, const fmpz_mod_mat_t A, const fmpz_mod_mat_t B, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_sqr(fmpz_mod_mat_t B, const fmpz_mod_mat_t A, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_mul_fmpz_vec(fmpz_struct * c, const fmpz_mod_mat_t A, const fmpz_struct * b, slong blen, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_mul_fmpz_vec_ptr(fmpz_struct * const * c, const fmpz_mod_mat_t A, const fmpz_struct * const * b, slong blen, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_fmpz_vec_mul(fmpz_struct * c, const fmpz_struct * a, slong alen, const fmpz_mod_mat_t B, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_fmpz_vec_mul_ptr(fmpz_struct * const * c, const fmpz_struct * const * a, slong alen, const fmpz_mod_mat_t B, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_trace(fmpz_t trace, const fmpz_mod_mat_t mat, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_det(fmpz_t res, const fmpz_mod_mat_t mat, const fmpz_mod_ctx_t ctx) + slong fmpz_mod_mat_rref(fmpz_mod_mat_t res, const fmpz_mod_mat_t mat, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_strong_echelon_form(fmpz_mod_mat_t mat, const fmpz_mod_ctx_t ctx) + slong fmpz_mod_mat_howell_form(fmpz_mod_mat_t mat, const fmpz_mod_ctx_t ctx) + int fmpz_mod_mat_inv(fmpz_mod_mat_t B, const fmpz_mod_mat_t A, const fmpz_mod_ctx_t ctx) + slong fmpz_mod_mat_lu(slong * P, fmpz_mod_mat_t A, int rank_check, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_solve_tril(fmpz_mod_mat_t X, const fmpz_mod_mat_t L, const fmpz_mod_mat_t B, int unit, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_solve_triu(fmpz_mod_mat_t X, const fmpz_mod_mat_t U, const fmpz_mod_mat_t B, int unit, const fmpz_mod_ctx_t ctx) + int fmpz_mod_mat_solve(fmpz_mod_mat_t X, const fmpz_mod_mat_t A, const fmpz_mod_mat_t B, const fmpz_mod_ctx_t ctx) + int fmpz_mod_mat_can_solve(fmpz_mod_mat_t X, const fmpz_mod_mat_t A, const fmpz_mod_mat_t B, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_similarity(fmpz_mod_mat_t M, slong r, fmpz_t d, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_charpoly(fmpz_mod_poly_t p, const fmpz_mod_mat_t M, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_minpoly(fmpz_mod_poly_t p, const fmpz_mod_mat_t M, const fmpz_mod_ctx_t ctx) diff --git a/src/flint/flintlib/fmpz_mod_mpoly.pxd b/src/flint/flintlib/functions/fmpz_mod_mpoly.pxd similarity index 85% rename from src/flint/flintlib/fmpz_mod_mpoly.pxd rename to src/flint/flintlib/functions/fmpz_mod_mpoly.pxd index e4fe87a6..86c761b8 100644 --- a/src/flint/flintlib/fmpz_mod_mpoly.pxd +++ b/src/flint/flintlib/functions/fmpz_mod_mpoly.pxd @@ -1,34 +1,13 @@ -from flint.flintlib.fmpz_types cimport fmpz_t, fmpz_poly_struct, fmpz_poly_t -from flint.flintlib.flint cimport flint_bitcnt_t, ulong, mp_limb_t, slong, fmpz_struct, flint_rand_t -from flint.flintlib.mpoly cimport mpoly_ctx_t, ordering_t -from flint.flintlib.fmpz_mod cimport fmpz_mod_ctx_t +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, slong, ulong +from flint.flintlib.types.fmpz cimport fmpz_poly_struct, fmpz_poly_t +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_mpoly_ctx_t, fmpz_mod_mpoly_struct, fmpz_mod_mpoly_t +from flint.flintlib.types.mpoly cimport ordering_t -cdef extern from "flint/fmpz_mod_mpoly.h": - ctypedef struct fmpz_mod_mpoly_ctx_struct: - mpoly_ctx_t minfo - fmpz_mod_ctx_t ffinfo - - ctypedef fmpz_mod_mpoly_ctx_struct fmpz_mod_mpoly_ctx_t[1] - - ctypedef struct fmpz_mod_mpoly_struct: - fmpz_struct * coeffs - ulong * exps - slong length - flint_bitcnt_t bits - slong coeffs_alloc - slong exps_alloc +# unknown type FILE +# unknown type fmpz_mod_mpoly_univar_t - ctypedef fmpz_mod_mpoly_struct fmpz_mod_mpoly_t[1] - ctypedef struct fmpz_mod_mpoly_univar_struct: - fmpz_mod_mpoly_struct * coeffs - fmpz_struct * exps - slong alloc - slong length - - ctypedef fmpz_mod_mpoly_univar_struct fmpz_mod_mpoly_univar_t[1] - -# from here on is parsed +cdef extern from "flint/fmpz_mod_mpoly.h": void fmpz_mod_mpoly_ctx_init(fmpz_mod_mpoly_ctx_t ctx, slong nvars, const ordering_t ord, const fmpz_t p) slong fmpz_mod_mpoly_ctx_nvars(const fmpz_mod_mpoly_ctx_t ctx) ordering_t fmpz_mod_mpoly_ctx_ord(const fmpz_mod_mpoly_ctx_t ctx) @@ -112,7 +91,7 @@ cdef extern from "flint/fmpz_mod_mpoly.h": void fmpz_mod_mpoly_reverse(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) void fmpz_mod_mpoly_randtest_bound(fmpz_mod_mpoly_t A, flint_rand_t state, slong length, ulong exp_bound, const fmpz_mod_mpoly_ctx_t ctx) void fmpz_mod_mpoly_randtest_bounds(fmpz_mod_mpoly_t A, flint_rand_t state, slong length, ulong * exp_bounds, const fmpz_mod_mpoly_ctx_t ctx) - void fmpz_mod_mpoly_randtest_bits(fmpz_mod_mpoly_t A, flint_rand_t state, slong length, mp_limb_t exp_bits, const fmpz_mod_mpoly_ctx_t ctx) + void fmpz_mod_mpoly_randtest_bits(fmpz_mod_mpoly_t A, flint_rand_t state, slong length, ulong exp_bits, const fmpz_mod_mpoly_ctx_t ctx) void fmpz_mod_mpoly_add_fmpz(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_t c, const fmpz_mod_mpoly_ctx_t ctx) void fmpz_mod_mpoly_add_ui(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, ulong c, const fmpz_mod_mpoly_ctx_t ctx) void fmpz_mod_mpoly_add_si(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, slong c, const fmpz_mod_mpoly_ctx_t ctx) @@ -157,19 +136,19 @@ cdef extern from "flint/fmpz_mod_mpoly.h": int fmpz_mod_mpoly_sqrt(fmpz_mod_mpoly_t Q, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) int fmpz_mod_mpoly_is_square(const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) int fmpz_mod_mpoly_quadratic_root(fmpz_mod_mpoly_t Q, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) - void fmpz_mod_mpoly_univar_init(fmpz_mod_mpoly_univar_t A, const fmpz_mod_mpoly_ctx_t ctx) - void fmpz_mod_mpoly_univar_clear(fmpz_mod_mpoly_univar_t A, const fmpz_mod_mpoly_ctx_t ctx) - void fmpz_mod_mpoly_univar_swap(fmpz_mod_mpoly_univar_t A, fmpz_mod_mpoly_univar_t B, const fmpz_mod_mpoly_ctx_t ctx) - void fmpz_mod_mpoly_to_univar(fmpz_mod_mpoly_univar_t A, const fmpz_mod_mpoly_t B, slong var, const fmpz_mod_mpoly_ctx_t ctx) - void fmpz_mod_mpoly_from_univar(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_univar_t B, slong var, const fmpz_mod_mpoly_ctx_t ctx) - int fmpz_mod_mpoly_univar_degree_fits_si(const fmpz_mod_mpoly_univar_t A, const fmpz_mod_mpoly_ctx_t ctx) - slong fmpz_mod_mpoly_univar_length(const fmpz_mod_mpoly_univar_t A, const fmpz_mod_mpoly_ctx_t ctx) - slong fmpz_mod_mpoly_univar_get_term_exp_si(fmpz_mod_mpoly_univar_t A, slong i, const fmpz_mod_mpoly_ctx_t ctx) - void fmpz_mod_mpoly_univar_get_term_coeff(fmpz_mod_mpoly_t c, const fmpz_mod_mpoly_univar_t A, slong i, const fmpz_mod_mpoly_ctx_t ctx) - void fmpz_mod_mpoly_univar_swap_term_coeff(fmpz_mod_mpoly_t c, fmpz_mod_mpoly_univar_t A, slong i, const fmpz_mod_mpoly_ctx_t ctx) - void fmpz_mod_mpoly_univar_set_coeff_ui(fmpz_mod_mpoly_univar_t Ax, ulong e, const fmpz_mod_mpoly_t c, const fmpz_mod_mpoly_ctx_t ctx) - int fmpz_mod_mpoly_univar_resultant(fmpz_mod_mpoly_t R, const fmpz_mod_mpoly_univar_t Ax, const fmpz_mod_mpoly_univar_t Bx, const fmpz_mod_mpoly_ctx_t ctx) - int fmpz_mod_mpoly_univar_discriminant(fmpz_mod_mpoly_t D, const fmpz_mod_mpoly_univar_t Ax, const fmpz_mod_mpoly_ctx_t ctx) + # void fmpz_mod_mpoly_univar_init(fmpz_mod_mpoly_univar_t A, const fmpz_mod_mpoly_ctx_t ctx) + # void fmpz_mod_mpoly_univar_clear(fmpz_mod_mpoly_univar_t A, const fmpz_mod_mpoly_ctx_t ctx) + # void fmpz_mod_mpoly_univar_swap(fmpz_mod_mpoly_univar_t A, fmpz_mod_mpoly_univar_t B, const fmpz_mod_mpoly_ctx_t ctx) + # void fmpz_mod_mpoly_to_univar(fmpz_mod_mpoly_univar_t A, const fmpz_mod_mpoly_t B, slong var, const fmpz_mod_mpoly_ctx_t ctx) + # void fmpz_mod_mpoly_from_univar(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_univar_t B, slong var, const fmpz_mod_mpoly_ctx_t ctx) + # int fmpz_mod_mpoly_univar_degree_fits_si(const fmpz_mod_mpoly_univar_t A, const fmpz_mod_mpoly_ctx_t ctx) + # slong fmpz_mod_mpoly_univar_length(const fmpz_mod_mpoly_univar_t A, const fmpz_mod_mpoly_ctx_t ctx) + # slong fmpz_mod_mpoly_univar_get_term_exp_si(fmpz_mod_mpoly_univar_t A, slong i, const fmpz_mod_mpoly_ctx_t ctx) + # void fmpz_mod_mpoly_univar_get_term_coeff(fmpz_mod_mpoly_t c, const fmpz_mod_mpoly_univar_t A, slong i, const fmpz_mod_mpoly_ctx_t ctx) + # void fmpz_mod_mpoly_univar_swap_term_coeff(fmpz_mod_mpoly_t c, fmpz_mod_mpoly_univar_t A, slong i, const fmpz_mod_mpoly_ctx_t ctx) + # void fmpz_mod_mpoly_univar_set_coeff_ui(fmpz_mod_mpoly_univar_t Ax, ulong e, const fmpz_mod_mpoly_t c, const fmpz_mod_mpoly_ctx_t ctx) + # int fmpz_mod_mpoly_univar_resultant(fmpz_mod_mpoly_t R, const fmpz_mod_mpoly_univar_t Ax, const fmpz_mod_mpoly_univar_t Bx, const fmpz_mod_mpoly_ctx_t ctx) + # int fmpz_mod_mpoly_univar_discriminant(fmpz_mod_mpoly_t D, const fmpz_mod_mpoly_univar_t Ax, const fmpz_mod_mpoly_ctx_t ctx) void fmpz_mod_mpoly_inflate(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_struct * shift, const fmpz_struct * stride, const fmpz_mod_mpoly_ctx_t ctx) void fmpz_mod_mpoly_deflate(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_struct * shift, const fmpz_struct * stride, const fmpz_mod_mpoly_ctx_t ctx) void fmpz_mod_mpoly_deflation(fmpz_struct * shift, fmpz_struct * stride, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) diff --git a/src/flint/flintlib/fmpz_mod_mpoly_factor.pxd b/src/flint/flintlib/functions/fmpz_mod_mpoly_factor.pxd similarity index 74% rename from src/flint/flintlib/fmpz_mod_mpoly_factor.pxd rename to src/flint/flintlib/functions/fmpz_mod_mpoly_factor.pxd index aa9b9cf2..e8b4de6e 100644 --- a/src/flint/flintlib/fmpz_mod_mpoly_factor.pxd +++ b/src/flint/flintlib/functions/fmpz_mod_mpoly_factor.pxd @@ -1,18 +1,9 @@ -from flint.flintlib.flint cimport slong -from flint.flintlib.fmpz cimport fmpz_t, fmpz_struct -from flint.flintlib.fmpz_mod_mpoly cimport fmpz_mod_mpoly_ctx_t, fmpz_mod_mpoly_t, fmpz_mod_mpoly_struct +from flint.flintlib.types.flint cimport fmpz_t, slong +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_mpoly_ctx_t, fmpz_mod_mpoly_factor_t, fmpz_mod_mpoly_t -cdef extern from "flint/fmpz_mod_mpoly_factor.h": - ctypedef struct fmpz_mod_mpoly_factor_struct: - fmpz_t constant - fmpz_mod_mpoly_struct * poly - fmpz_struct * exp - slong num - slong alloc - - ctypedef fmpz_mod_mpoly_factor_struct fmpz_mod_mpoly_factor_t[1] +cdef extern from "flint/fmpz_mod_mpoly_factor.h": void fmpz_mod_mpoly_factor_init(fmpz_mod_mpoly_factor_t f, const fmpz_mod_mpoly_ctx_t ctx) void fmpz_mod_mpoly_factor_clear(fmpz_mod_mpoly_factor_t f, const fmpz_mod_mpoly_ctx_t ctx) void fmpz_mod_mpoly_factor_swap(fmpz_mod_mpoly_factor_t f, fmpz_mod_mpoly_factor_t g, const fmpz_mod_mpoly_ctx_t ctx) diff --git a/src/flint/flintlib/fmpz_mod_poly.pxd b/src/flint/flintlib/functions/fmpz_mod_poly.pxd similarity index 71% rename from src/flint/flintlib/fmpz_mod_poly.pxd rename to src/flint/flintlib/functions/fmpz_mod_poly.pxd index 150d5db4..3b96b362 100644 --- a/src/flint/flintlib/fmpz_mod_poly.pxd +++ b/src/flint/flintlib/functions/fmpz_mod_poly.pxd @@ -1,78 +1,15 @@ -from flint.flintlib.flint cimport ulong, slong, flint_rand_t -from flint.flintlib.fmpz_types cimport ( - fmpz_t, - fmpz_struct, - fmpz_poly_t, - fmpz_poly_struct, - fmpz_mat_t, - fmpz_mat_struct, -) -from flint.flintlib.fmpz_mod cimport fmpz_mod_ctx_t, fmpz_mod_ctx_struct -from flint.flintlib.nmod_poly cimport nmod_poly_t +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_struct, fmpz_t, slong, ulong +from flint.flintlib.types.fmpz cimport fmpz_mat_t, fmpz_poly_struct, fmpz_poly_t +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_ctx_t, fmpz_mod_poly_struct, fmpz_mod_poly_t +from flint.flintlib.types.fmpz_mod_poly cimport fmpz_mod_berlekamp_massey_t, fmpz_mod_poly_frobenius_powers_2exp_t, fmpz_mod_poly_frobenius_powers_t, fmpz_mod_poly_radix_t +from flint.flintlib.types.nmod cimport nmod_poly_t -cdef extern from "flint/fmpz_mod_poly.h": - # Type definitions *********************************************************/ - ctypedef struct fmpz_mod_poly_struct: - fmpz_struct * coeffs - slong alloc - slong length - ctypedef fmpz_mod_poly_struct fmpz_mod_poly_t[1] - - ctypedef struct fmpz_mod_poly_res_struct: - fmpz_t res - fmpz_t lc - slong len0 - slong len1 - slong off - ctypedef fmpz_mod_poly_res_struct fmpz_mod_poly_res_t[1] - - ctypedef struct fmpz_mod_poly_frobenius_powers_2exp_struct: - fmpz_mod_poly_struct * pow - slong len - ctypedef fmpz_mod_poly_frobenius_powers_2exp_struct fmpz_mod_poly_frobenius_powers_2exp_t[1] - - ctypedef struct fmpz_mod_poly_frobenius_powers_struct: - fmpz_mod_poly_struct * pow - slong len - ctypedef fmpz_mod_poly_frobenius_powers_struct fmpz_mod_poly_frobenius_powers_t[1] - - ctypedef struct fmpz_mod_poly_matrix_precompute_arg_t: - fmpz_mat_struct * A - fmpz_mod_poly_struct * poly1 - fmpz_mod_poly_struct * poly2 - fmpz_mod_poly_struct * poly2inv - const fmpz_mod_ctx_struct * ctx - - ctypedef struct fmpz_mod_poly_compose_mod_precomp_preinv_arg_t: - fmpz_mat_struct * A - fmpz_mod_poly_struct * res - fmpz_mod_poly_struct * poly1 - fmpz_mod_poly_struct * poly3 - fmpz_mod_poly_struct * poly3inv - const fmpz_mod_ctx_struct * ctx - - # Radix conversion *********************************************************/ - ctypedef struct fmpz_mod_poly_radix_struct: - fmpz_struct *V - fmpz_struct *W - fmpz_struct **Rpow - fmpz_struct **Rinv - slong degR - slong k - fmpz_struct invL - ctypedef fmpz_mod_poly_radix_struct fmpz_mod_poly_radix_t[1] +# unknown type FILE +# unknown type mpz_t +# unknown type thread_pool_handle - # Berlekamp-Massey Algorithm - see fmpz_mod_poly/berlekamp_massey.c for more info ********/ - ctypedef struct fmpz_mod_berlekamp_massey_struct: - slong npoints - fmpz_mod_poly_t R0, R1 - fmpz_mod_poly_t V0, V1 - fmpz_mod_poly_t qt, rt - fmpz_mod_poly_t points - ctypedef fmpz_mod_berlekamp_massey_struct fmpz_mod_berlekamp_massey_t[1] - # Parsed from here - # Memory Management +cdef extern from "flint/fmpz_mod_poly.h": void fmpz_mod_poly_init(fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_init2(fmpz_mod_poly_t poly, slong alloc, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_clear(fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) @@ -82,8 +19,6 @@ cdef extern from "flint/fmpz_mod_poly.h": void _fmpz_mod_poly_set_length(fmpz_mod_poly_t poly, slong len) void fmpz_mod_poly_truncate(fmpz_mod_poly_t poly, slong len, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_set_trunc(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, slong n, const fmpz_mod_ctx_t ctx) - - # Randomisation void fmpz_mod_poly_randtest(fmpz_mod_poly_t f, flint_rand_t state, slong len, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_randtest_irreducible(fmpz_mod_poly_t f, flint_rand_t state, slong len, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_randtest_not_zero(fmpz_mod_poly_t f, flint_rand_t state, slong len, const fmpz_mod_ctx_t ctx) @@ -95,85 +30,63 @@ cdef extern from "flint/fmpz_mod_poly.h": void fmpz_mod_poly_randtest_pentomial(fmpz_mod_poly_t poly, flint_rand_t state, slong len, const fmpz_mod_ctx_t ctx) int fmpz_mod_poly_randtest_pentomial_irreducible(fmpz_mod_poly_t poly, flint_rand_t state, slong len, slong max_attempts, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_randtest_sparse_irreducible(fmpz_mod_poly_t poly, flint_rand_t state, slong len, const fmpz_mod_ctx_t ctx) - - # Attributes slong fmpz_mod_poly_degree(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) slong fmpz_mod_poly_length(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) fmpz_struct * fmpz_mod_poly_lead(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - - # Assignment and Basic Manipulation void fmpz_mod_poly_set(fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_swap(fmpz_mod_poly_t poly1, fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_zero(fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_one(fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_zero_coeffs(fmpz_mod_poly_t poly, slong i, slong j, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_reverse(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, slong n, const fmpz_mod_ctx_t ctx) - - # Conversion void fmpz_mod_poly_set_ui(fmpz_mod_poly_t f, ulong c, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_set_fmpz(fmpz_mod_poly_t f, const fmpz_t c, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_set_fmpz_poly(fmpz_mod_poly_t f, const fmpz_poly_t g, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_get_fmpz_poly(fmpz_poly_t f, const fmpz_mod_poly_t g, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_get_nmod_poly(nmod_poly_t f, const fmpz_mod_poly_t g) void fmpz_mod_poly_set_nmod_poly(fmpz_mod_poly_t f, const nmod_poly_t g) - - # Comparison int fmpz_mod_poly_equal(const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) int fmpz_mod_poly_equal_trunc(const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, slong n, const fmpz_mod_ctx_t ctx) int fmpz_mod_poly_is_zero(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) int fmpz_mod_poly_is_one(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) int fmpz_mod_poly_is_gen(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - - # Getting and Setting coefficients void fmpz_mod_poly_set_coeff_fmpz(fmpz_mod_poly_t poly, slong n, const fmpz_t x, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_set_coeff_ui(fmpz_mod_poly_t poly, slong n, ulong x, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_get_coeff_fmpz(fmpz_t x, const fmpz_mod_poly_t poly, slong n, const fmpz_mod_ctx_t ctx) # void fmpz_mod_poly_set_coeff_mpz(fmpz_mod_poly_t poly, slong n, const mpz_t x, const fmpz_mod_ctx_t ctx) # void fmpz_mod_poly_get_coeff_mpz(mpz_t x, const fmpz_mod_poly_t poly, slong n, const fmpz_mod_ctx_t ctx) - - # Shifiting - void _fmpz_mod_poly_shift_left(fmpz_struct * res, const fmpz_struct * poly, slong len, slong n, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_shift_left(fmpz_struct * res, const fmpz_struct * poly, slong len, slong n) void fmpz_mod_poly_shift_left(fmpz_mod_poly_t f, const fmpz_mod_poly_t g, slong n, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_shift_right(fmpz_struct * res, const fmpz_struct * poly, slong len, slong n, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_shift_right(fmpz_struct * res, const fmpz_struct * poly, slong len, slong n) void fmpz_mod_poly_shift_right(fmpz_mod_poly_t f, const fmpz_mod_poly_t g, slong n, const fmpz_mod_ctx_t ctx) - - # Addition and Subtraction - void _fmpz_mod_poly_add(fmpz_struct *res, const fmpz_struct *poly1, slong len1, const fmpz_struct *poly2, slong len2, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_add(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_add(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_add_series(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, slong n, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_sub(fmpz_struct *res, const fmpz_struct *poly1, slong len1, const fmpz_struct *poly2, slong len2, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_sub(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_sub(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_sub_series(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, slong n, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_neg(fmpz_struct *res, const fmpz_struct *poly, slong len, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_neg(fmpz_struct * res, const fmpz_struct * poly, slong len, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_neg(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - - # Scalar Multiplication and division - void _fmpz_mod_poly_scalar_mul_fmpz(fmpz_struct *res, const fmpz_struct *poly, slong len, const fmpz_t x, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_scalar_mul_fmpz(fmpz_struct * res, const fmpz_struct * poly, slong len, const fmpz_t x, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_scalar_mul_fmpz(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, const fmpz_t x, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_scalar_addmul_fmpz(fmpz_mod_poly_t rop, const fmpz_mod_poly_t op, const fmpz_t x, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_scalar_div_fmpz(fmpz_struct *res, const fmpz_struct *poly, slong len, const fmpz_t x, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_scalar_div_fmpz(fmpz_struct * res, const fmpz_struct * poly, slong len, const fmpz_t x, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_scalar_div_fmpz(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, const fmpz_t x, const fmpz_mod_ctx_t ctx) - - # Multiplication - void _fmpz_mod_poly_mul(fmpz_struct *res, const fmpz_struct *poly1, slong len1, const fmpz_struct *poly2, slong len2, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_mul(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_mul(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_mullow(fmpz_struct *res, const fmpz_struct *poly1, slong len1, const fmpz_struct *poly2, slong len2, const fmpz_t p, slong n) + void _fmpz_mod_poly_mullow(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2, slong n, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_mullow(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, slong n, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_sqr(fmpz_struct *res, const fmpz_struct *poly, slong len, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_sqr(fmpz_struct * res, const fmpz_struct * poly, slong len, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_sqr(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_mulhigh(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, slong start, const fmpz_mod_ctx_t ctx) void _fmpz_mod_poly_mulmod(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2, const fmpz_struct * f, slong lenf, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_mulmod(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_mulmod_preinv(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2, const fmpz_struct * f, slong lenf, const fmpz_struct* finv, slong lenfinv, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_mulmod_preinv(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2, const fmpz_struct * f, slong lenf, const fmpz_struct * finv, slong lenfinv, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_mulmod_preinv(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, const fmpz_mod_poly_t f, const fmpz_mod_poly_t finv, const fmpz_mod_ctx_t ctx) - - # Products - void _fmpz_mod_poly_product_roots_fmpz_vec(fmpz_struct * poly, const fmpz_struct * xs, slong n, fmpz_t f) - void fmpz_mod_poly_product_roots_fmpz_vec(fmpz_mod_poly_t poly, const fmpz_struct * xs, slong n, fmpz_t f, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_product_roots_fmpz_vec(fmpz_struct * poly, const fmpz_struct * xs, slong n, const fmpz_mod_ctx_t ctx) + void fmpz_mod_poly_product_roots_fmpz_vec(fmpz_mod_poly_t poly, const fmpz_struct * xs, slong n, const fmpz_mod_ctx_t ctx) int fmpz_mod_poly_find_distinct_nonzero_roots(fmpz_struct * roots, const fmpz_mod_poly_t A, const fmpz_mod_ctx_t ctx) - - # Powering - void _fmpz_mod_poly_pow(fmpz_struct *rop, const fmpz_struct *op, slong len, ulong e, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_pow(fmpz_struct * rop, const fmpz_struct * op, slong len, ulong e, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_pow(fmpz_mod_poly_t rop, const fmpz_mod_poly_t op, ulong e, const fmpz_mod_ctx_t ctx) void _fmpz_mod_poly_pow_trunc(fmpz_struct * res, const fmpz_struct * poly, ulong e, slong trunc, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_pow_trunc(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, ulong e, slong trunc, const fmpz_mod_ctx_t ctx) @@ -185,26 +98,24 @@ cdef extern from "flint/fmpz_mod_poly.h": void fmpz_mod_poly_powmod_ui_binexp_preinv(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, ulong e, const fmpz_mod_poly_t f, const fmpz_mod_poly_t finv, const fmpz_mod_ctx_t ctx) void _fmpz_mod_poly_powmod_fmpz_binexp(fmpz_struct * res, const fmpz_struct * poly, const fmpz_t e, const fmpz_struct * f, slong lenf, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_powmod_fmpz_binexp(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, const fmpz_t e, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_powmod_fmpz_binexp_preinv(fmpz_struct * res, const fmpz_struct * poly, const fmpz_t e, const fmpz_struct * f, slong lenf, const fmpz_struct* finv, slong lenfinv, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_powmod_fmpz_binexp_preinv(fmpz_struct * res, const fmpz_struct * poly, const fmpz_t e, const fmpz_struct * f, slong lenf, const fmpz_struct * finv, slong lenfinv, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_powmod_fmpz_binexp_preinv(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, const fmpz_t e, const fmpz_mod_poly_t f, const fmpz_mod_poly_t finv, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_powmod_x_fmpz_preinv(fmpz_struct * res, const fmpz_t e, const fmpz_struct * f, slong lenf, const fmpz_struct* finv, slong lenfinv, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_powmod_x_fmpz_preinv(fmpz_struct * res, const fmpz_t e, const fmpz_struct * f, slong lenf, const fmpz_struct * finv, slong lenfinv, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_powmod_x_fmpz_preinv(fmpz_mod_poly_t res, const fmpz_t e, const fmpz_mod_poly_t f, const fmpz_mod_poly_t finv, const fmpz_mod_ctx_t ctx) void _fmpz_mod_poly_powers_mod_preinv_naive(fmpz_struct ** res, const fmpz_struct * f, slong flen, slong n, const fmpz_struct * g, slong glen, const fmpz_struct * ginv, slong ginvlen, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_powers_mod_naive(fmpz_mod_poly_struct * res, const fmpz_mod_poly_t f, slong n, const fmpz_mod_poly_t g, const fmpz_mod_ctx_t ctx) - # void _fmpz_mod_poly_powers_mod_preinv_threaded_pool(fmpz_struct ** res, const fmpz_struct * f, slong flen, slong n, const fmpz_struct * g, slong glen, const fmpz_struct * ginv, slong ginvlen, const fmpz_t p, thread_pool_handle * threads, slong num_threads) + # void _fmpz_mod_poly_powers_mod_preinv_threaded_pool(fmpz_struct ** res, const fmpz_struct * f, slong flen, slong n, const fmpz_struct * g, slong glen, const fmpz_struct * ginv, slong ginvlen, const fmpz_mod_ctx_t p, thread_pool_handle * threads, slong num_threads) void fmpz_mod_poly_powers_mod_bsgs(fmpz_mod_poly_struct * res, const fmpz_mod_poly_t f, slong n, const fmpz_mod_poly_t g, const fmpz_mod_ctx_t ctx) - void fmpz_mod_poly_frobenius_powers_2exp_precomp( fmpz_mod_poly_frobenius_powers_2exp_t pow, const fmpz_mod_poly_t f, const fmpz_mod_poly_t finv, ulong m, const fmpz_mod_ctx_t ctx) + void fmpz_mod_poly_frobenius_powers_2exp_precomp(fmpz_mod_poly_frobenius_powers_2exp_t pow, const fmpz_mod_poly_t f, const fmpz_mod_poly_t finv, ulong m, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_frobenius_powers_2exp_clear(fmpz_mod_poly_frobenius_powers_2exp_t pow, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_frobenius_power(fmpz_mod_poly_t res, fmpz_mod_poly_frobenius_powers_2exp_t pow, const fmpz_mod_poly_t f, ulong m, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_frobenius_powers_precomp(fmpz_mod_poly_frobenius_powers_t pow, const fmpz_mod_poly_t f, const fmpz_mod_poly_t finv, ulong m, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_frobenius_powers_clear(fmpz_mod_poly_frobenius_powers_t pow, const fmpz_mod_ctx_t ctx) - - # Division void _fmpz_mod_poly_divrem_basecase(fmpz_struct * Q, fmpz_struct * R, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_divrem_basecase(fmpz_mod_poly_t Q, fmpz_mod_poly_t R, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_divrem_newton_n_preinv (fmpz_struct* Q, fmpz_struct* R, const fmpz_struct* A, slong lenA, const fmpz_struct* B, slong lenB, const fmpz_struct* Binv, slong lenBinv, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_divrem_newton_n_preinv (fmpz_struct * Q, fmpz_struct * R, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_struct * Binv, slong lenBinv, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_divrem_newton_n_preinv(fmpz_mod_poly_t Q, fmpz_mod_poly_t R, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_poly_t Binv, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_div_newton_n_preinv (fmpz_struct* Q, const fmpz_struct* A, slong lenA, const fmpz_struct* B, slong lenB, const fmpz_struct* Binv, slong lenBinv, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_div_newton_n_preinv (fmpz_struct * Q, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_struct * Binv, slong lenBinv, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_div_newton_n_preinv(fmpz_mod_poly_t Q, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_poly_t Binv, const fmpz_mod_ctx_t ctx) ulong fmpz_mod_poly_remove(fmpz_mod_poly_t f, const fmpz_mod_poly_t g, const fmpz_mod_ctx_t ctx) void _fmpz_mod_poly_rem_basecase(fmpz_struct * R, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) @@ -214,72 +125,57 @@ cdef extern from "flint/fmpz_mod_poly.h": void _fmpz_mod_poly_divrem(fmpz_struct * Q, fmpz_struct * R, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_divrem(fmpz_mod_poly_t Q, fmpz_mod_poly_t R, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_divrem_f(fmpz_t f, fmpz_mod_poly_t Q, fmpz_mod_poly_t R, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_rem(fmpz_struct *R, const fmpz_struct *A, slong lenA, const fmpz_struct *B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_rem_f(fmpz_t f, fmpz_struct *R, const fmpz_struct *A, slong lenA, const fmpz_struct *B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_rem(fmpz_struct * R, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_rem_f(fmpz_t f, fmpz_mod_poly_t R, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_rem(fmpz_mod_poly_t R, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) - - # Divisibility testing int _fmpz_mod_poly_divides_classical(fmpz_struct * Q, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_mod_ctx_t ctx) - int fmpz_mod_poly_divides_classical(fmpz_mod_poly_t Q, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, fmpz_mod_ctx_t ctx) + int fmpz_mod_poly_divides_classical(fmpz_mod_poly_t Q, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) int _fmpz_mod_poly_divides(fmpz_struct * Q, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_mod_ctx_t ctx) - int fmpz_mod_poly_divides(fmpz_mod_poly_t Q, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, fmpz_mod_ctx_t ctx) - - # Power series division - void _fmpz_mod_poly_inv_series(fmpz_struct * Qinv, const fmpz_struct * Q, slong n, const fmpz_t cinv, const fmpz_mod_ctx_t ctx) + int fmpz_mod_poly_divides(fmpz_mod_poly_t Q, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_inv_series(fmpz_struct * Qinv, const fmpz_struct * Q, slong Qlen, slong n, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_inv_series(fmpz_mod_poly_t Qinv, const fmpz_mod_poly_t Q, slong n, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_inv_series_f(fmpz_t f, fmpz_mod_poly_t Qinv, const fmpz_mod_poly_t Q, slong n, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_div_series(fmpz_struct * Q, const fmpz_struct * A, slong Alen, const fmpz_struct * B, slong Blen, const fmpz_t p, slong n) + void _fmpz_mod_poly_div_series(fmpz_struct * Q, const fmpz_struct * A, slong Alen, const fmpz_struct * B, slong Blen, slong n, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_div_series(fmpz_mod_poly_t Q, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, slong n, const fmpz_mod_ctx_t ctx) - - # Greatest common divisor void fmpz_mod_poly_make_monic(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_make_monic_f(fmpz_t f, fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - slong _fmpz_mod_poly_gcd(fmpz_struct *G, const fmpz_struct *A, slong lenA, const fmpz_struct *B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) + slong _fmpz_mod_poly_gcd(fmpz_struct * G, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_gcd(fmpz_mod_poly_t G, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) - slong _fmpz_mod_poly_gcd_euclidean_f(fmpz_t f, fmpz_struct *G, const fmpz_struct *A, slong lenA, const fmpz_struct *B, slong lenB, const fmpz_mod_ctx_t ctx) + slong _fmpz_mod_poly_gcd_euclidean_f(fmpz_t f, fmpz_struct * G, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_gcd_euclidean_f(fmpz_t f, fmpz_mod_poly_t G, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) - slong _fmpz_mod_poly_gcd_f(fmpz_t f, fmpz_struct *G, const fmpz_struct *A, slong lenA, const fmpz_struct *B, slong lenB, const fmpz_mod_ctx_t ctx) + slong _fmpz_mod_poly_gcd_f(fmpz_t f, fmpz_struct * G, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_gcd_f(fmpz_t f, fmpz_mod_poly_t G, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) - slong _fmpz_mod_poly_hgcd(fmpz_struct **M, slong *lenM, fmpz_struct *A, slong *lenA, fmpz_struct *B, slong *lenB, const fmpz_struct *a, slong lena, const fmpz_struct *b, slong lenb, const fmpz_mod_ctx_t ctx) - slong _fmpz_mod_poly_xgcd_euclidean_f(fmpz_t f, fmpz_struct *G, fmpz_struct *S, fmpz_struct *T, const fmpz_struct *A, slong lenA, const fmpz_struct *B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) + slong _fmpz_mod_poly_hgcd(fmpz_struct **M, slong * lenM, fmpz_struct * A, slong * lenA, fmpz_struct * B, slong * lenB, const fmpz_struct * a, slong lena, const fmpz_struct * b, slong lenb, const fmpz_mod_ctx_t ctx) + slong _fmpz_mod_poly_xgcd_euclidean_f(fmpz_t f, fmpz_struct * G, fmpz_struct * S, fmpz_struct * T, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_xgcd_euclidean_f(fmpz_t f, fmpz_mod_poly_t G, fmpz_mod_poly_t S, fmpz_mod_poly_t T, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) - slong _fmpz_mod_poly_xgcd(fmpz_struct *G, fmpz_struct *S, fmpz_struct *T, const fmpz_struct *A, slong lenA, const fmpz_struct *B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) + slong _fmpz_mod_poly_xgcd(fmpz_struct * G, fmpz_struct * S, fmpz_struct * T, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_xgcd(fmpz_mod_poly_t G, fmpz_mod_poly_t S, fmpz_mod_poly_t T, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_xgcd_f(fmpz_t f, fmpz_mod_poly_t G, fmpz_mod_poly_t S, fmpz_mod_poly_t T, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) - slong _fmpz_mod_poly_gcdinv_euclidean(fmpz_struct *G, fmpz_struct *S, const fmpz_struct *A, slong lenA, const fmpz_struct *B, slong lenB, const fmpz_mod_ctx_t ctx) + slong _fmpz_mod_poly_gcdinv_euclidean(fmpz_struct * G, fmpz_struct * S, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_t invA, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_gcdinv_euclidean(fmpz_mod_poly_t G, fmpz_mod_poly_t S, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) - slong _fmpz_mod_poly_gcdinv_euclidean_f(fmpz_t f, fmpz_struct *G, fmpz_struct *S, const fmpz_struct *A, slong lenA, const fmpz_struct *B, slong lenB, const fmpz_mod_ctx_t ctx) + slong _fmpz_mod_poly_gcdinv_euclidean_f(fmpz_t f, fmpz_struct * G, fmpz_struct * S, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_t invA, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_gcdinv_euclidean_f(fmpz_t f, fmpz_mod_poly_t G, fmpz_mod_poly_t S, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) - slong _fmpz_mod_poly_gcdinv(fmpz_struct *G, fmpz_struct *S, const fmpz_struct *A, slong lenA, const fmpz_struct *B, slong lenB, const fmpz_mod_ctx_t ctx) - slong _fmpz_mod_poly_gcdinv_f(fmpz_t f, fmpz_struct *G, fmpz_struct *S, const fmpz_struct *A, slong lenA, const fmpz_struct *B, slong lenB, const fmpz_mod_ctx_t ctx) + slong _fmpz_mod_poly_gcdinv(fmpz_struct * G, fmpz_struct * S, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_mod_ctx_t ctx) + slong _fmpz_mod_poly_gcdinv_f(fmpz_t f, fmpz_struct * G, fmpz_struct * S, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_gcdinv(fmpz_mod_poly_t G, fmpz_mod_poly_t S, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_gcdinv_f(fmpz_t f, fmpz_mod_poly_t G, fmpz_mod_poly_t S, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) - int _fmpz_mod_poly_invmod(fmpz_struct *A, const fmpz_struct *B, slong lenB, const fmpz_struct *P, slong lenP, const fmpz_mod_ctx_t ctx) - int _fmpz_mod_poly_invmod_f(fmpz_t f, fmpz_struct *A, const fmpz_struct *B, slong lenB, const fmpz_struct *P, slong lenP, const fmpz_mod_ctx_t ctx) + int _fmpz_mod_poly_invmod(fmpz_struct * A, const fmpz_struct * B, slong lenB, const fmpz_struct * P, slong lenP, const fmpz_mod_ctx_t ctx) + int _fmpz_mod_poly_invmod_f(fmpz_t f, fmpz_struct * A, const fmpz_struct * B, slong lenB, const fmpz_struct * P, slong lenP, const fmpz_mod_ctx_t ctx) int fmpz_mod_poly_invmod(fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_poly_t P, const fmpz_mod_ctx_t ctx) int fmpz_mod_poly_invmod_f(fmpz_t f, fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_poly_t P, const fmpz_mod_ctx_t ctx) - - # Minpoly - slong _fmpz_mod_poly_minpoly_bm(fmpz_struct* poly, const fmpz_struct* seq, slong len, const fmpz_mod_ctx_t ctx) - void fmpz_mod_poly_minpoly_bm(fmpz_mod_poly_t poly, const fmpz_struct* seq, slong len, const fmpz_mod_ctx_t ctx) - slong _fmpz_mod_poly_minpoly_hgcd(fmpz_struct* poly, const fmpz_struct* seq, slong len, const fmpz_mod_ctx_t ctx) - void fmpz_mod_poly_minpoly_hgcd(fmpz_mod_poly_t poly, const fmpz_struct* seq, slong len, const fmpz_mod_ctx_t ctx) - slong _fmpz_mod_poly_minpoly(fmpz_struct* poly, const fmpz_struct* seq, slong len, const fmpz_mod_ctx_t ctx) - void fmpz_mod_poly_minpoly(fmpz_mod_poly_t poly, const fmpz_struct* seq, slong len, const fmpz_mod_ctx_t ctx) - - # Resultant - void _fmpz_mod_poly_resultant_euclidean(fmpz_t res, const fmpz_struct *poly1, slong len1, const fmpz_struct *poly2, slong len2, const fmpz_mod_ctx_t ctx) - void fmpz_mod_poly_resultant_euclidean(fmpz_t r, const fmpz_mod_poly_t f, const fmpz_mod_poly_t g, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_resultant_hgcd(fmpz_t res, const fmpz_struct *A, slong lenA, const fmpz_struct *B, slong lenB, const fmpz_mod_ctx_t ctx) - void fmpz_mod_poly_resultant_hgcd(fmpz_t res, const fmpz_mod_poly_t f, const fmpz_mod_poly_t g, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_resultant(fmpz_t res, const fmpz_struct *poly1, slong len1, const fmpz_struct *poly2, slong len2, const fmpz_mod_ctx_t ctx) + slong _fmpz_mod_poly_minpoly_bm(fmpz_struct * poly, const fmpz_struct * seq, slong len, const fmpz_mod_ctx_t ctx) + void fmpz_mod_poly_minpoly_bm(fmpz_mod_poly_t poly, const fmpz_struct * seq, slong len, const fmpz_mod_ctx_t ctx) + slong _fmpz_mod_poly_minpoly_hgcd(fmpz_struct * poly, const fmpz_struct * seq, slong len, const fmpz_mod_ctx_t ctx) + void fmpz_mod_poly_minpoly_hgcd(fmpz_mod_poly_t poly, const fmpz_struct * seq, slong len, const fmpz_mod_ctx_t ctx) + slong _fmpz_mod_poly_minpoly(fmpz_struct * poly, const fmpz_struct * seq, slong len, const fmpz_mod_ctx_t ctx) + void fmpz_mod_poly_minpoly(fmpz_mod_poly_t poly, const fmpz_struct * seq, slong len, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_resultant(fmpz_t res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_resultant(fmpz_t res, const fmpz_mod_poly_t f, const fmpz_mod_poly_t g, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_discriminant(fmpz_t d, const fmpz_struct *poly, slong len, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_discriminant(fmpz_t d, const fmpz_struct * poly, slong len, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_discriminant(fmpz_t d, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_derivative(fmpz_struct *res, const fmpz_struct *poly, slong len, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_derivative(fmpz_struct * res, const fmpz_struct * poly, slong len, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_derivative(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_evaluate_fmpz(fmpz_t res, const fmpz_struct *poly, slong len, const fmpz_t a, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_evaluate_fmpz(fmpz_t res, const fmpz_struct * poly, slong len, const fmpz_t a, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_evaluate_fmpz(fmpz_t res, const fmpz_mod_poly_t poly, const fmpz_t a, const fmpz_mod_ctx_t ctx) void _fmpz_mod_poly_evaluate_fmpz_vec_iter(fmpz_struct * ys, const fmpz_struct * coeffs, slong len, const fmpz_struct * xs, slong n, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_evaluate_fmpz_vec_iter(fmpz_struct * ys, const fmpz_mod_poly_t poly, const fmpz_struct * xs, slong n, const fmpz_mod_ctx_t ctx) @@ -288,12 +184,12 @@ cdef extern from "flint/fmpz_mod_poly.h": void fmpz_mod_poly_evaluate_fmpz_vec_fast(fmpz_struct * ys, const fmpz_mod_poly_t poly, const fmpz_struct * xs, slong n, const fmpz_mod_ctx_t ctx) void _fmpz_mod_poly_evaluate_fmpz_vec(fmpz_struct * ys, const fmpz_struct * coeffs, slong len, const fmpz_struct * xs, slong n, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_evaluate_fmpz_vec(fmpz_struct * ys, const fmpz_mod_poly_t poly, const fmpz_struct * xs, slong n, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_compose(fmpz_struct *res, const fmpz_struct *poly1, slong len1, const fmpz_struct *poly2, slong len2, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_compose(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_compose(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_invsqrt_series(fmpz_struct * g, const fmpz_struct * h, slong hlen, slong n, fmpz_mod_ctx_t ctx) - void fmpz_mod_poly_invsqrt_series(fmpz_mod_poly_t g, const fmpz_mod_poly_t h, slong n, fmpz_mod_ctx_t ctx) # TODO: Typo: fmpz_ctx_t should be fmpz_mod_ctx_t - void _fmpz_mod_poly_sqrt_series(fmpz_struct * g, const fmpz_struct * h, slong hlen, slong n, fmpz_mod_ctx_t ctx) - void fmpz_mod_poly_sqrt_series(fmpz_mod_poly_t g, const fmpz_mod_poly_t h, slong n, fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_invsqrt_series(fmpz_struct * g, const fmpz_struct * h, slong hlen, slong n, const fmpz_mod_ctx_t ctx) + void fmpz_mod_poly_invsqrt_series(fmpz_mod_poly_t g, const fmpz_mod_poly_t h, slong n, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_sqrt_series(fmpz_struct * g, const fmpz_struct * h, slong hlen, slong n, const fmpz_mod_ctx_t ctx) + void fmpz_mod_poly_sqrt_series(fmpz_mod_poly_t g, const fmpz_mod_poly_t h, slong n, const fmpz_mod_ctx_t ctx) int _fmpz_mod_poly_sqrt(fmpz_struct * s, const fmpz_struct * p, slong n, const fmpz_mod_ctx_t ctx) int fmpz_mod_poly_sqrt(fmpz_mod_poly_t s, const fmpz_mod_poly_t p, const fmpz_mod_ctx_t ctx) void _fmpz_mod_poly_compose_mod(fmpz_struct * res, const fmpz_struct * f, slong lenf, const fmpz_struct * g, const fmpz_struct * h, slong lenh, const fmpz_mod_ctx_t ctx) @@ -313,17 +209,17 @@ cdef extern from "flint/fmpz_mod_poly.h": void fmpz_mod_poly_compose_mod_brent_kung_preinv(fmpz_mod_poly_t res, const fmpz_mod_poly_t f, const fmpz_mod_poly_t g, const fmpz_mod_poly_t h, const fmpz_mod_poly_t hinv, const fmpz_mod_ctx_t ctx) void _fmpz_mod_poly_compose_mod_brent_kung_vec_preinv(fmpz_mod_poly_struct * res, const fmpz_mod_poly_struct * polys, slong len1, slong l, const fmpz_struct * g, slong glen, const fmpz_struct * h, slong lenh, const fmpz_struct * hinv, slong lenhinv, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_compose_mod_brent_kung_vec_preinv(fmpz_mod_poly_struct * res, const fmpz_mod_poly_struct * polys, slong len1, slong n, const fmpz_mod_poly_t g, const fmpz_mod_poly_t h, const fmpz_mod_poly_t hinv, const fmpz_mod_ctx_t ctx) - # void _fmpz_mod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(fmpz_mod_poly_struct * res, const fmpz_mod_poly_struct * polys, slong lenpolys, slong l, const fmpz_struct * g, slong glen, const fmpz_struct * poly, slong len, const fmpz_struct * polyinv, slong leninv, const fmpz_t p, thread_pool_handle * threads, slong num_threads) - # void fmpz_mod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(fmpz_mod_poly_struct * res,const fmpz_mod_poly_struct * polys, slong len1, slong n, const fmpz_mod_poly_t g, const fmpz_mod_poly_t poly, const fmpz_mod_poly_t polyinv, const fmpz_mod_ctx_t ctx, thread_pool_handle * threads, slong num_threads) + # void _fmpz_mod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(fmpz_mod_poly_struct * res, const fmpz_mod_poly_struct * polys, slong lenpolys, slong l, const fmpz_struct * g, slong glen, const fmpz_struct * poly, slong len, const fmpz_struct * polyinv, slong leninv, const fmpz_mod_ctx_t ctx, thread_pool_handle * threads, slong num_threads) + # void fmpz_mod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(fmpz_mod_poly_struct * res, const fmpz_mod_poly_struct * polys, slong len1, slong n, const fmpz_mod_poly_t g, const fmpz_mod_poly_t poly, const fmpz_mod_poly_t polyinv, const fmpz_mod_ctx_t ctx, thread_pool_handle * threads, slong num_threads) void fmpz_mod_poly_compose_mod_brent_kung_vec_preinv_threaded(fmpz_mod_poly_struct * res, const fmpz_mod_poly_struct * polys, slong len1, slong n, const fmpz_mod_poly_t g, const fmpz_mod_poly_t poly, const fmpz_mod_poly_t polyinv, const fmpz_mod_ctx_t ctx) fmpz_poly_struct ** _fmpz_mod_poly_tree_alloc(slong len) void _fmpz_mod_poly_tree_free(fmpz_poly_struct ** tree, slong len) void _fmpz_mod_poly_tree_build(fmpz_poly_struct ** tree, const fmpz_struct * roots, slong len, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_radix_init(fmpz_struct **Rpow, fmpz_struct **Rinv, const fmpz_struct *R, slong lenR, slong k, const fmpz_t invL, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_radix_init(fmpz_struct **Rpow, fmpz_struct **Rinv, const fmpz_struct * R, slong lenR, slong k, const fmpz_t invL, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_radix_init(fmpz_mod_poly_radix_t D, const fmpz_mod_poly_t R, slong degF, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_radix(fmpz_struct **B, const fmpz_struct *F, fmpz_struct **Rpow, fmpz_struct **Rinv, slong degR, slong k, slong i, fmpz_struct *W, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_poly_radix(fmpz_struct **B, const fmpz_struct * F, fmpz_struct **Rpow, fmpz_struct **Rinv, slong degR, slong k, slong i, fmpz_struct * W, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_radix(fmpz_mod_poly_struct **B, const fmpz_mod_poly_t F, const fmpz_mod_poly_radix_t D, const fmpz_mod_ctx_t ctx) - # int _fmpz_mod_poly_fprint(FILE * file, const fmpz_struct *poly, slong len, const fmpz_mod_ctx_t ctx) + # int _fmpz_mod_poly_fprint(FILE * file, const fmpz_struct * poly, slong len, const fmpz_t p) # int fmpz_mod_poly_fprint(FILE * file, const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) # int fmpz_mod_poly_fprint_pretty(FILE * file, const fmpz_mod_poly_t poly, const char * x, const fmpz_mod_ctx_t ctx) int fmpz_mod_poly_print(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) diff --git a/src/flint/flintlib/fmpz_mod_poly_factor.pxd b/src/flint/flintlib/functions/fmpz_mod_poly_factor.pxd similarity index 78% rename from src/flint/flintlib/fmpz_mod_poly_factor.pxd rename to src/flint/flintlib/functions/fmpz_mod_poly_factor.pxd index 40889ee8..82fbc362 100644 --- a/src/flint/flintlib/fmpz_mod_poly_factor.pxd +++ b/src/flint/flintlib/functions/fmpz_mod_poly_factor.pxd @@ -1,20 +1,10 @@ -from flint.flintlib.flint cimport fmpz_struct, slong, flint_rand_t -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.fmpz_mod cimport fmpz_mod_ctx_t -from flint.flintlib.fmpz_factor cimport fmpz_factor_t -from flint.flintlib.fmpz_mod_poly cimport fmpz_mod_poly_struct, fmpz_mod_poly_t +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_struct, fmpz_t, slong +from flint.flintlib.types.fmpz cimport fmpz_factor_t +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_ctx_t, fmpz_mod_poly_factor_t, fmpz_mod_poly_t -# unimported types {'fmpz_mod_poly_factor_t', 'void', 'fmpz_mod_poly_t'} -cdef extern from "flint/fmpz_mod_poly_factor.h": - ctypedef struct fmpz_mod_poly_factor_struct: - fmpz_mod_poly_struct * poly - slong *exp - slong num - slong alloc - ctypedef fmpz_mod_poly_factor_struct fmpz_mod_poly_factor_t[1] - # Parsed from here +cdef extern from "flint/fmpz_mod_poly_factor.h": void fmpz_mod_poly_factor_init(fmpz_mod_poly_factor_t fac, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_factor_clear(fmpz_mod_poly_factor_t fac, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_factor_realloc(fmpz_mod_poly_factor_t fac, slong alloc, const fmpz_mod_ctx_t ctx) @@ -34,13 +24,13 @@ cdef extern from "flint/fmpz_mod_poly_factor.h": int fmpz_mod_poly_is_squarefree_f(fmpz_t fac, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) int fmpz_mod_poly_factor_equal_deg_prob(fmpz_mod_poly_t factor, flint_rand_t state, const fmpz_mod_poly_t pol, slong d, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_factor_equal_deg(fmpz_mod_poly_factor_t factors, const fmpz_mod_poly_t pol, slong d, const fmpz_mod_ctx_t ctx) - void fmpz_mod_poly_factor_distinct_deg(fmpz_mod_poly_factor_t res, const fmpz_mod_poly_t poly, slong * const *degs, const fmpz_mod_ctx_t ctx) - void fmpz_mod_poly_factor_distinct_deg_threaded(fmpz_mod_poly_factor_t res, const fmpz_mod_poly_t poly, slong * const *degs, const fmpz_mod_ctx_t ctx) + void fmpz_mod_poly_factor_distinct_deg(fmpz_mod_poly_factor_t res, const fmpz_mod_poly_t poly, slong * const * degs, const fmpz_mod_ctx_t ctx) + void fmpz_mod_poly_factor_distinct_deg_threaded(fmpz_mod_poly_factor_t res, const fmpz_mod_poly_t poly, slong * const * degs, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_factor_squarefree(fmpz_mod_poly_factor_t res, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_factor(fmpz_mod_poly_factor_t res, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_factor_cantor_zassenhaus(fmpz_mod_poly_factor_t res, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_factor_kaltofen_shoup(fmpz_mod_poly_factor_t res, const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) void fmpz_mod_poly_factor_berlekamp(fmpz_mod_poly_factor_t factors, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) - void _fmpz_mod_poly_interval_poly_worker(void* arg_ptr) + void _fmpz_mod_poly_interval_poly_worker(void * arg_ptr) void fmpz_mod_poly_roots(fmpz_mod_poly_factor_t r, const fmpz_mod_poly_t f, int with_multiplicity, const fmpz_mod_ctx_t ctx) int fmpz_mod_poly_roots_factored(fmpz_mod_poly_factor_t r, const fmpz_mod_poly_t f, int with_multiplicity, const fmpz_factor_t n, const fmpz_mod_ctx_t ctx) diff --git a/src/flint/flintlib/fmpz_mod_vec.pxd b/src/flint/flintlib/functions/fmpz_mod_vec.pxd similarity index 89% rename from src/flint/flintlib/fmpz_mod_vec.pxd rename to src/flint/flintlib/functions/fmpz_mod_vec.pxd index 126ff186..4df28a52 100644 --- a/src/flint/flintlib/fmpz_mod_vec.pxd +++ b/src/flint/flintlib/functions/fmpz_mod_vec.pxd @@ -1,6 +1,7 @@ -from flint.flintlib.flint cimport slong, fmpz_struct -from flint.flintlib.fmpz_mod cimport fmpz_mod_ctx_t -from flint.flintlib.fmpz cimport fmpz_t +from flint.flintlib.types.flint cimport fmpz_struct, fmpz_t, slong +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_ctx_t + + cdef extern from "flint/fmpz_mod_vec.h": void _fmpz_mod_vec_set_fmpz_vec(fmpz_struct * A, const fmpz_struct * B, slong len, const fmpz_mod_ctx_t ctx) diff --git a/src/flint/flintlib/fmpz_mpoly.pxd b/src/flint/flintlib/functions/fmpz_mpoly.pxd similarity index 88% rename from src/flint/flintlib/fmpz_mpoly.pxd rename to src/flint/flintlib/functions/fmpz_mpoly.pxd index b783f603..783d47c7 100644 --- a/src/flint/flintlib/fmpz_mpoly.pxd +++ b/src/flint/flintlib/functions/fmpz_mpoly.pxd @@ -1,38 +1,13 @@ -from flint.flintlib.mpoly cimport mpoly_ctx_t, ordering_t -from flint.flintlib.fmpz_types cimport fmpz_t, fmpz_struct, fmpz_poly_t, fmpz_poly_struct -from flint.flintlib.flint cimport ulong, slong, flint_bitcnt_t, flint_rand_t, mp_limb_t +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, slong, ulong +from flint.flintlib.types.fmpz cimport fmpz_mpoly_ctx_t, fmpz_mpoly_struct, fmpz_mpoly_t, fmpz_mpoly_vec_t, fmpz_poly_struct, fmpz_poly_t +from flint.flintlib.types.mpoly cimport ordering_t -cdef extern from "flint/fmpz_mpoly.h": - ctypedef struct fmpz_mpoly_ctx_struct: - mpoly_ctx_t minfo - - ctypedef fmpz_mpoly_ctx_struct fmpz_mpoly_ctx_t[1] - - ctypedef struct fmpz_mpoly_struct: - fmpz_struct * coeffs - ulong * exps - slong alloc - slong length - flint_bitcnt_t bits - - ctypedef fmpz_mpoly_struct fmpz_mpoly_t[1] - - ctypedef struct fmpz_mpoly_univar_struct: - fmpz_mpoly_struct * coeffs - fmpz_struct * exps - slong alloc - slong length +# unknown type FILE +# unknown type fmpz_mpoly_univar_t - ctypedef fmpz_mpoly_univar_struct fmpz_mpoly_univar_t[1] +# .. macro:: fmpz_mpoly_vec_entry(vec, i) - ctypedef struct fmpz_mpoly_vec_struct: - fmpz_mpoly_struct * p - slong alloc - slong length - - ctypedef fmpz_mpoly_vec_struct fmpz_mpoly_vec_t[1] - -# from here on is parsed +cdef extern from "flint/fmpz_mpoly.h": void fmpz_mpoly_ctx_init(fmpz_mpoly_ctx_t ctx, slong nvars, const ordering_t ord) slong fmpz_mpoly_ctx_nvars(const fmpz_mpoly_ctx_t ctx) ordering_t fmpz_mpoly_ctx_ord(const fmpz_mpoly_ctx_t ctx) @@ -129,9 +104,9 @@ cdef extern from "flint/fmpz_mpoly.h": void fmpz_mpoly_sort_terms(fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_combine_like_terms(fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_reverse(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_randtest_bound(fmpz_mpoly_t A, flint_rand_t state, slong length, mp_limb_t coeff_bits, ulong exp_bound, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_randtest_bounds(fmpz_mpoly_t A, flint_rand_t state, slong length, mp_limb_t coeff_bits, ulong * exp_bounds, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_randtest_bits(fmpz_mpoly_t A, flint_rand_t state, slong length, mp_limb_t coeff_bits, mp_limb_t exp_bits, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_randtest_bound(fmpz_mpoly_t A, flint_rand_t state, slong length, ulong coeff_bits, ulong exp_bound, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_randtest_bounds(fmpz_mpoly_t A, flint_rand_t state, slong length, ulong coeff_bits, ulong * exp_bounds, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_randtest_bits(fmpz_mpoly_t A, flint_rand_t state, slong length, ulong coeff_bits, ulong exp_bits, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_add_fmpz(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_t c, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_add_ui(fmpz_mpoly_t A, const fmpz_mpoly_t B, ulong c, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_add_si(fmpz_mpoly_t A, const fmpz_mpoly_t B, slong c, const fmpz_mpoly_ctx_t ctx) @@ -191,33 +166,33 @@ cdef extern from "flint/fmpz_mpoly.h": int fmpz_mpoly_sqrt_heap(fmpz_mpoly_t Q, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx, int check) int fmpz_mpoly_sqrt(fmpz_mpoly_t q, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) int fmpz_mpoly_is_square(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_univar_init(fmpz_mpoly_univar_t A, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_univar_clear(fmpz_mpoly_univar_t A, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_univar_swap(fmpz_mpoly_univar_t A, fmpz_mpoly_univar_t B, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_to_univar(fmpz_mpoly_univar_t A, const fmpz_mpoly_t B, slong var, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_from_univar(fmpz_mpoly_t A, const fmpz_mpoly_univar_t B, slong var, const fmpz_mpoly_ctx_t ctx) - int fmpz_mpoly_univar_degree_fits_si(const fmpz_mpoly_univar_t A, const fmpz_mpoly_ctx_t ctx) - slong fmpz_mpoly_univar_length(const fmpz_mpoly_univar_t A, const fmpz_mpoly_ctx_t ctx) - slong fmpz_mpoly_univar_get_term_exp_si(fmpz_mpoly_univar_t A, slong i, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_univar_get_term_coeff(fmpz_mpoly_t c, const fmpz_mpoly_univar_t A, slong i, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_univar_swap_term_coeff(fmpz_mpoly_t c, fmpz_mpoly_univar_t A, slong i, const fmpz_mpoly_ctx_t ctx) + # void fmpz_mpoly_univar_init(fmpz_mpoly_univar_t A, const fmpz_mpoly_ctx_t ctx) + # void fmpz_mpoly_univar_clear(fmpz_mpoly_univar_t A, const fmpz_mpoly_ctx_t ctx) + # void fmpz_mpoly_univar_swap(fmpz_mpoly_univar_t A, fmpz_mpoly_univar_t B, const fmpz_mpoly_ctx_t ctx) + # void fmpz_mpoly_to_univar(fmpz_mpoly_univar_t A, const fmpz_mpoly_t B, slong var, const fmpz_mpoly_ctx_t ctx) + # void fmpz_mpoly_from_univar(fmpz_mpoly_t A, const fmpz_mpoly_univar_t B, slong var, const fmpz_mpoly_ctx_t ctx) + # int fmpz_mpoly_univar_degree_fits_si(const fmpz_mpoly_univar_t A, const fmpz_mpoly_ctx_t ctx) + # slong fmpz_mpoly_univar_length(const fmpz_mpoly_univar_t A, const fmpz_mpoly_ctx_t ctx) + # slong fmpz_mpoly_univar_get_term_exp_si(fmpz_mpoly_univar_t A, slong i, const fmpz_mpoly_ctx_t ctx) + # void fmpz_mpoly_univar_get_term_coeff(fmpz_mpoly_t c, const fmpz_mpoly_univar_t A, slong i, const fmpz_mpoly_ctx_t ctx) + # void fmpz_mpoly_univar_swap_term_coeff(fmpz_mpoly_t c, fmpz_mpoly_univar_t A, slong i, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_inflate(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_struct * shift, const fmpz_struct * stride, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_deflate(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_struct * shift, const fmpz_struct * stride, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_deflation(fmpz_struct * shift, fmpz_struct * stride, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_pow_fps(fmpz_mpoly_t A, const fmpz_mpoly_t B, ulong k, const fmpz_mpoly_ctx_t ctx) slong _fmpz_mpoly_divides_array(fmpz_struct ** poly1, ulong ** exp1, slong * alloc, const fmpz_struct * poly2, const ulong * exp2, slong len2, const fmpz_struct * poly3, const ulong * exp3, slong len3, slong * mults, slong num, slong bits) int fmpz_mpoly_divides_array(fmpz_mpoly_t poly1, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, const fmpz_mpoly_ctx_t ctx) - slong _fmpz_mpoly_divides_monagan_pearce(fmpz_struct ** poly1, ulong ** exp1, slong * alloc, const fmpz_struct * poly2, const ulong * exp2, slong len2, const fmpz_struct * poly3, const ulong * exp3, slong len3, ulong bits, slong N, const mp_limb_t * cmpmask) + slong _fmpz_mpoly_divides_monagan_pearce(fmpz_struct ** poly1, ulong ** exp1, slong * alloc, const fmpz_struct * poly2, const ulong * exp2, slong len2, const fmpz_struct * poly3, const ulong * exp3, slong len3, ulong bits, slong N, const ulong * cmpmask) int fmpz_mpoly_divides_monagan_pearce(fmpz_mpoly_t poly1, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, const fmpz_mpoly_ctx_t ctx) int fmpz_mpoly_divides_heap_threaded(fmpz_mpoly_t Q, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) - slong _fmpz_mpoly_div_monagan_pearce(fmpz_struct ** polyq, ulong ** expq, slong * allocq, const fmpz_struct * poly2, const ulong * exp2, slong len2, const fmpz_struct * poly3, const ulong * exp3, slong len3, slong bits, slong N, const mp_limb_t * cmpmask) + slong _fmpz_mpoly_div_monagan_pearce(fmpz_struct ** polyq, ulong ** expq, slong * allocq, const fmpz_struct * poly2, const ulong * exp2, slong len2, const fmpz_struct * poly3, const ulong * exp3, slong len3, slong bits, slong N, const ulong * cmpmask) void fmpz_mpoly_div_monagan_pearce(fmpz_mpoly_t polyq, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, const fmpz_mpoly_ctx_t ctx) - slong _fmpz_mpoly_divrem_monagan_pearce(slong * lenr, fmpz_struct ** polyq, ulong ** expq, slong * allocq, fmpz_struct ** polyr, ulong ** expr, slong * allocr, const fmpz_struct * poly2, const ulong * exp2, slong len2, const fmpz_struct * poly3, const ulong * exp3, slong len3, slong bits, slong N, const mp_limb_t * cmpmask) + slong _fmpz_mpoly_divrem_monagan_pearce(slong * lenr, fmpz_struct ** polyq, ulong ** expq, slong * allocq, fmpz_struct ** polyr, ulong ** expr, slong * allocr, const fmpz_struct * poly2, const ulong * exp2, slong len2, const fmpz_struct * poly3, const ulong * exp3, slong len3, slong bits, slong N, const ulong * cmpmask) void fmpz_mpoly_divrem_monagan_pearce(fmpz_mpoly_t q, fmpz_mpoly_t r, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, const fmpz_mpoly_ctx_t ctx) slong _fmpz_mpoly_divrem_array(slong * lenr, fmpz_struct ** polyq, ulong ** expq, slong * allocq, fmpz_struct ** polyr, ulong ** expr, slong * allocr, const fmpz_struct * poly2, const ulong * exp2, slong len2, const fmpz_struct * poly3, const ulong * exp3, slong len3, slong * mults, slong num, slong bits) int fmpz_mpoly_divrem_array(fmpz_mpoly_t q, fmpz_mpoly_t r, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_quasidivrem_heap(fmpz_t scale, fmpz_mpoly_t q, fmpz_mpoly_t r, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, const fmpz_mpoly_ctx_t ctx) - slong _fmpz_mpoly_divrem_ideal_monagan_pearce(fmpz_mpoly_struct ** polyq, fmpz_struct ** polyr, ulong ** expr, slong * allocr, const fmpz_struct * poly2, const ulong * exp2, slong len2, fmpz_mpoly_struct * const * poly3, ulong * const * exp3, slong len, slong N, slong bits, const fmpz_mpoly_ctx_t ctx, const mp_limb_t * cmpmask) + slong _fmpz_mpoly_divrem_ideal_monagan_pearce(fmpz_mpoly_struct ** polyq, fmpz_struct ** polyr, ulong ** expr, slong * allocr, const fmpz_struct * poly2, const ulong * exp2, slong len2, fmpz_mpoly_struct * const * poly3, ulong * const * exp3, slong len, slong N, slong bits, const fmpz_mpoly_ctx_t ctx, const ulong * cmpmask) void fmpz_mpoly_divrem_ideal_monagan_pearce(fmpz_mpoly_struct ** q, fmpz_mpoly_t r, const fmpz_mpoly_t poly2, fmpz_mpoly_struct * const * poly3, slong len, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_vec_init(fmpz_mpoly_vec_t vec, slong len, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_vec_clear(fmpz_mpoly_vec_t vec, const fmpz_mpoly_ctx_t ctx) @@ -240,10 +215,3 @@ cdef extern from "flint/fmpz_mpoly.h": int fmpz_mpoly_buchberger_naive_with_limits(fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F, slong ideal_len_limit, slong poly_len_limit, slong poly_bits_limit, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_symmetric_gens(fmpz_mpoly_t res, ulong k, slong * vars, slong n, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_symmetric(fmpz_mpoly_t res, ulong k, const fmpz_mpoly_ctx_t ctx) -# undocumented functions - void _fmpz_mpoly_push_exp_ffmpz(fmpz_mpoly_t A, const fmpz_struct * exp, const fmpz_mpoly_ctx_t ctx) - void _fmpz_mpoly_push_exp_pfmpz(fmpz_mpoly_t A, fmpz_struct * const * exp, const fmpz_mpoly_ctx_t ctx) - void _fmpz_mpoly_push_exp_ui(fmpz_mpoly_t A, const ulong * exp, const fmpz_mpoly_ctx_t ctx) - - # Macros - fmpz_mpoly_struct *fmpz_mpoly_vec_entry(fmpz_mpoly_vec_t vec, slong i) diff --git a/src/flint/flintlib/fmpz_mpoly_factor.pxd b/src/flint/flintlib/functions/fmpz_mpoly_factor.pxd similarity index 72% rename from src/flint/flintlib/fmpz_mpoly_factor.pxd rename to src/flint/flintlib/functions/fmpz_mpoly_factor.pxd index 0c3eff2c..63eb9c12 100644 --- a/src/flint/flintlib/fmpz_mpoly_factor.pxd +++ b/src/flint/flintlib/functions/fmpz_mpoly_factor.pxd @@ -1,21 +1,10 @@ -from flint.flintlib.fmpz_mpoly cimport fmpz_mpoly_t, fmpz_mpoly_ctx_t, fmpz_mpoly_struct -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.flint cimport slong, fmpz_struct -from flint.flintlib.fmpq cimport fmpq_t +from flint.flintlib.types.flint cimport fmpz_t, slong +from flint.flintlib.types.fmpq cimport fmpq_t +from flint.flintlib.types.fmpz cimport fmpz_mpoly_ctx_t, fmpz_mpoly_factor_t, fmpz_mpoly_t -cdef extern from "flint/fmpz_mpoly_factor.h": - - ctypedef struct fmpz_mpoly_factor_struct: - fmpz_t constant - fmpz_t constant_den - fmpz_mpoly_struct * poly - fmpz_struct * exp - slong num - slong alloc - - ctypedef fmpz_mpoly_factor_struct fmpz_mpoly_factor_t[1] +cdef extern from "flint/fmpz_mpoly_factor.h": void fmpz_mpoly_factor_init(fmpz_mpoly_factor_t f, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_factor_clear(fmpz_mpoly_factor_t f, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_factor_swap(fmpz_mpoly_factor_t f, fmpz_mpoly_factor_t g, const fmpz_mpoly_ctx_t ctx) diff --git a/src/flint/flintlib/fmpz_mpoly_q.pxd b/src/flint/flintlib/functions/fmpz_mpoly_q.pxd similarity index 86% rename from src/flint/flintlib/fmpz_mpoly_q.pxd rename to src/flint/flintlib/functions/fmpz_mpoly_q.pxd index 682e4263..aac2c55c 100644 --- a/src/flint/flintlib/fmpz_mpoly_q.pxd +++ b/src/flint/flintlib/functions/fmpz_mpoly_q.pxd @@ -1,16 +1,12 @@ -from flint.flintlib.flint cimport mp_limb_t, flint_rand_t, slong -from flint.flintlib.fmpq cimport fmpq_t -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.fmpz_mpoly cimport fmpz_mpoly_ctx_t, fmpz_mpoly_t, fmpz_mpoly_struct +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, slong, ulong +from flint.flintlib.types.fmpq cimport fmpq_t +from flint.flintlib.types.fmpz cimport fmpz_mpoly_ctx_t, fmpz_mpoly_q_t, fmpz_mpoly_t -cdef extern from "flint/fmpz_mpoly_q.h": - ctypedef struct fmpz_mpoly_q_struct: - fmpz_mpoly_struct num - fmpz_mpoly_struct den - ctypedef fmpz_mpoly_q_struct fmpz_mpoly_q_t[1] - fmpz_mpoly_struct * fmpz_mpoly_q_numref(fmpz_mpoly_q_t x) - fmpz_mpoly_struct * fmpz_mpoly_q_denref(fmpz_mpoly_q_t x) +# .. macro:: fmpz_mpoly_q_numref(x) +# .. macro:: fmpz_mpoly_q_denref(x) + +cdef extern from "flint/fmpz_mpoly_q.h": void fmpz_mpoly_q_init(fmpz_mpoly_q_t res, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_q_clear(fmpz_mpoly_q_t res, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_q_swap(fmpz_mpoly_q_t x, fmpz_mpoly_q_t y, const fmpz_mpoly_ctx_t ctx) @@ -28,8 +24,10 @@ cdef extern from "flint/fmpz_mpoly_q.h": void fmpz_mpoly_q_zero(fmpz_mpoly_q_t res, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_q_one(fmpz_mpoly_q_t res, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_q_gen(fmpz_mpoly_q_t res, slong i, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_q_print_pretty(const fmpz_mpoly_q_t f, const char ** x, fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_q_randtest(fmpz_mpoly_q_t res, flint_rand_t state, slong length, mp_limb_t coeff_bits, slong exp_bound, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_q_print_pretty(const fmpz_mpoly_q_t f, const char ** x, const fmpz_mpoly_ctx_t ctx) + char * fmpz_mpoly_q_get_str_pretty(const fmpz_mpoly_q_t f, const char ** x, const fmpz_mpoly_ctx_t ctx) + int fmpz_mpoly_q_set_str_pretty(fmpz_mpoly_q_t res, const char * s, const char ** x, fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_q_randtest(fmpz_mpoly_q_t res, flint_rand_t state, slong length, ulong coeff_bits, slong exp_bound, const fmpz_mpoly_ctx_t ctx) int fmpz_mpoly_q_equal(const fmpz_mpoly_q_t x, const fmpz_mpoly_q_t y, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_q_neg(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_q_add(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, const fmpz_mpoly_q_t y, const fmpz_mpoly_ctx_t ctx) diff --git a/src/flint/flintlib/fmpz_poly.pxd b/src/flint/flintlib/functions/fmpz_poly.pxd similarity index 99% rename from src/flint/flintlib/fmpz_poly.pxd rename to src/flint/flintlib/functions/fmpz_poly.pxd index ccaf6a90..91782fd7 100644 --- a/src/flint/flintlib/fmpz_poly.pxd +++ b/src/flint/flintlib/functions/fmpz_poly.pxd @@ -1,8 +1,7 @@ -from flint.flintlib.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, nn_ptr, nn_srcptr, slong, ulong -from flint.flintlib.fmpq cimport fmpq_struct, fmpq_t -from flint.flintlib.fmpz_types cimport fmpz_poly_factor_t, fmpz_poly_t, fmpz_preinvn_t, fmpz_t -from flint.flintlib.nmod_poly cimport nmod_poly_t -from flint.flintlib.nmod_poly_factor cimport nmod_poly_factor_t +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, nn_ptr, nn_srcptr, slong, ulong +from flint.flintlib.types.fmpq cimport fmpq_struct, fmpq_t +from flint.flintlib.types.fmpz cimport fmpz_poly_factor_t, fmpz_poly_t, fmpz_preinvn_t +from flint.flintlib.types.nmod cimport nmod_poly_factor_t, nmod_poly_t # unknown type FILE # unknown type fmpz_poly_mul_precache_t diff --git a/src/flint/flintlib/fmpz_poly_factor.pxd b/src/flint/flintlib/functions/fmpz_poly_factor.pxd similarity index 91% rename from src/flint/flintlib/fmpz_poly_factor.pxd rename to src/flint/flintlib/functions/fmpz_poly_factor.pxd index 2a6df0f4..26460b55 100644 --- a/src/flint/flintlib/fmpz_poly_factor.pxd +++ b/src/flint/flintlib/functions/fmpz_poly_factor.pxd @@ -1,5 +1,5 @@ -from flint.flintlib.flint cimport slong -from flint.flintlib.fmpz_types cimport fmpz_poly_factor_t, fmpz_poly_t, fmpz_t +from flint.flintlib.types.flint cimport fmpz_t, slong +from flint.flintlib.types.fmpz cimport fmpz_poly_factor_t, fmpz_poly_t diff --git a/src/flint/flintlib/fmpz_vec.pxd b/src/flint/flintlib/functions/fmpz_vec.pxd similarity index 82% rename from src/flint/flintlib/fmpz_vec.pxd rename to src/flint/flintlib/functions/fmpz_vec.pxd index 26924893..9ec83eed 100644 --- a/src/flint/flintlib/fmpz_vec.pxd +++ b/src/flint/flintlib/functions/fmpz_vec.pxd @@ -1,6 +1,7 @@ -from flint.flintlib.flint cimport mp_srcptr, flint_bitcnt_t, flint_rand_t, mp_ptr, slong, fmpz_struct, mp_limb_t, ulong -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.nmod cimport nmod_t +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, nmod_t, nn_ptr, nn_srcptr, slong, ulong + +# unknown type FILE + cdef extern from "flint/fmpz_vec.h": fmpz_struct * _fmpz_vec_init(slong len) @@ -10,17 +11,17 @@ cdef extern from "flint/fmpz_vec.h": slong _fmpz_vec_max_bits(const fmpz_struct * vec, slong len) slong _fmpz_vec_max_bits_ref(const fmpz_struct * vec, slong len) void _fmpz_vec_sum_max_bits(slong * sumabs, slong * maxabs, const fmpz_struct * vec, slong len) - ulong _fmpz_vec_max_limbs(const fmpz_struct * vec, slong len) + slong _fmpz_vec_max_limbs(const fmpz_struct * vec, slong len) void _fmpz_vec_height(fmpz_t height, const fmpz_struct * vec, slong len) slong _fmpz_vec_height_index(const fmpz_struct * vec, slong len) # int _fmpz_vec_fread(FILE * file, fmpz_struct ** vec, slong * len) int _fmpz_vec_read(fmpz_struct ** vec, slong * len) # int _fmpz_vec_fprint(FILE * file, const fmpz_struct * vec, slong len) int _fmpz_vec_print(const fmpz_struct * vec, slong len) - void _fmpz_vec_get_nmod_vec(mp_ptr res, const fmpz_struct * poly, slong len, nmod_t mod) - void _fmpz_vec_set_nmod_vec(fmpz_struct * res, mp_srcptr poly, slong len, nmod_t mod) - void _fmpz_vec_get_fft(mp_limb_t ** coeffs_f, const fmpz_struct * coeffs_m, slong l, slong length) - void _fmpz_vec_set_fft(fmpz_struct * coeffs_m, slong length, const mp_ptr * coeffs_f, slong limbs, slong sign) + void _fmpz_vec_get_nmod_vec(nn_ptr res, const fmpz_struct * poly, slong len, nmod_t mod) + void _fmpz_vec_set_nmod_vec(fmpz_struct * res, nn_srcptr poly, slong len, nmod_t mod) + void _fmpz_vec_get_fft(ulong ** coeffs_f, const fmpz_struct * coeffs_m, slong l, slong length) + void _fmpz_vec_set_fft(fmpz_struct * coeffs_m, slong length, const nn_ptr * coeffs_f, slong limbs, slong sign) slong _fmpz_vec_get_d_vec_2exp(double * appv, const fmpz_struct * vec, slong len) void _fmpz_vec_set(fmpz_struct * vec1, const fmpz_struct * vec2, slong len2) void _fmpz_vec_swap(fmpz_struct * vec1, fmpz_struct * vec2, slong len2) @@ -40,7 +41,7 @@ cdef extern from "flint/fmpz_vec.h": void _fmpz_vec_scalar_mul_2exp(fmpz_struct * vec1, const fmpz_struct * vec2, slong len2, ulong exp) void _fmpz_vec_scalar_divexact_fmpz(fmpz_struct * vec1, const fmpz_struct * vec2, slong len2, const fmpz_t x) void _fmpz_vec_scalar_divexact_si(fmpz_struct * vec1, const fmpz_struct * vec2, slong len2, slong c) - void _fmpz_vec_scalar_divexact_ui(fmpz_struct * vec1, const fmpz_struct * vec2, ulong len2, ulong c) + void _fmpz_vec_scalar_divexact_ui(fmpz_struct * vec1, const fmpz_struct * vec2, slong len2, ulong c) void _fmpz_vec_scalar_fdiv_q_fmpz(fmpz_struct * vec1, const fmpz_struct * vec2, slong len2, const fmpz_t c) void _fmpz_vec_scalar_fdiv_q_si(fmpz_struct * vec1, const fmpz_struct * vec2, slong len2, slong c) void _fmpz_vec_scalar_fdiv_q_ui(fmpz_struct * vec1, const fmpz_struct * vec2, slong len2, ulong c) @@ -59,10 +60,11 @@ cdef extern from "flint/fmpz_vec.h": void _fmpz_vec_scalar_submul_si_2exp(fmpz_struct * vec1, const fmpz_struct * vec2, slong len2, slong c, ulong e) void _fmpz_vec_sum(fmpz_t res, const fmpz_struct * vec, slong len) void _fmpz_vec_prod(fmpz_t res, const fmpz_struct * vec, slong len) - void _fmpz_vec_scalar_mod_fmpz(fmpz_struct *res, const fmpz_struct *vec, slong len, const fmpz_t p) - void _fmpz_vec_scalar_smod_fmpz(fmpz_struct *res, const fmpz_struct *vec, slong len, const fmpz_t p) + void _fmpz_vec_scalar_mod_fmpz(fmpz_struct * res, const fmpz_struct * vec, slong len, const fmpz_t p) + void _fmpz_vec_scalar_smod_fmpz(fmpz_struct * res, const fmpz_struct * vec, slong len, const fmpz_t p) void _fmpz_vec_content(fmpz_t res, const fmpz_struct * vec, slong len) void _fmpz_vec_content_chained(fmpz_t res, const fmpz_struct * vec, slong len, const fmpz_t input) void _fmpz_vec_lcm(fmpz_t res, const fmpz_struct * vec, slong len) + void _fmpz_vec_dot_general_naive(fmpz_t res, const fmpz_t initial, int subtract, const fmpz_struct * a, const fmpz_struct * b, int reverse, slong len) + void _fmpz_vec_dot_general(fmpz_t res, const fmpz_t initial, int subtract, const fmpz_struct * a, const fmpz_struct * b, int reverse, slong len) void _fmpz_vec_dot(fmpz_t res, const fmpz_struct * vec1, const fmpz_struct * vec2, slong len2) - void _fmpz_vec_dot_ptr(fmpz_t res, const fmpz_struct * vec1, fmpz_struct ** const vec2, slong offset, slong len) diff --git a/src/flint/flintlib/fq.pxd b/src/flint/flintlib/functions/fq.pxd similarity index 63% rename from src/flint/flintlib/fq.pxd rename to src/flint/flintlib/functions/fq.pxd index 87dc8911..da4e1bb1 100644 --- a/src/flint/flintlib/fq.pxd +++ b/src/flint/flintlib/functions/fq.pxd @@ -1,68 +1,32 @@ -from flint.flintlib.flint cimport flint_bitcnt_t, fmpz_struct, slong, flint_rand_t, ulong -from flint.flintlib.fmpz_types cimport ( - fmpz_t, - fmpz_struct, - fmpz_poly_t, - fmpz_poly_struct, -) -from flint.flintlib.fmpz_mod cimport fmpz_mod_ctx_t -from flint.flintlib.fmpz_mod_mat cimport fmpz_mod_mat_t -from flint.flintlib.fmpz_mod_poly cimport fmpz_mod_poly_t, fmpz_mod_poly_struct +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, slong, ulong +from flint.flintlib.types.fmpz cimport fmpz_poly_t +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_ctx_t, fmpz_mod_mat_t, fmpz_mod_poly_t +from flint.flintlib.types.fq cimport fq_ctx_t, fq_t -cdef extern from "flint/fq.h": - # Type definitions **********************************************/ - ctypedef fmpz_poly_t fq_t - ctypedef fmpz_poly_struct fq_struct - - ctypedef struct fq_ctx_struct: - fmpz_mod_ctx_t ctxp - - int sparse_modulus - int is_conway # whether field was initialized with the Flint Conway tables (assures primitivity) - - fmpz_struct * a - slong * j - slong len +# unknown type +# unknown type FILE - fmpz_mod_poly_t modulus - fmpz_mod_poly_t inv - char * var - ctypedef fq_ctx_struct fq_ctx_t[1] - - ctypedef struct fq_poly_struct: - fq_struct * coeffs - slong alloc - slong length - ctypedef fq_poly_struct fq_poly_t[1] - - ctypedef struct fq_mat_struct: - fq_struct * entries - slong r - slong s - fq_struct ** rows - ctypedef fq_mat_struct fq_mat_t[1] - - # Parsed from here **********************************************/ - void fq_ctx_init(fq_ctx_t ctx, const fmpz_t p, slong d, const char *var) - int _fq_ctx_init_conway(fq_ctx_t ctx, const fmpz_t p, slong d, const char *var) - void fq_ctx_init_conway(fq_ctx_t ctx, const fmpz_t p, slong d, const char *var) - void fq_ctx_init_modulus(fq_ctx_t ctx, const fmpz_mod_poly_t modulus, const fmpz_mod_ctx_t ctxp, const char *var) +cdef extern from "flint/fq.h": + void fq_ctx_init(fq_ctx_t ctx, const fmpz_t p, slong d, const char * var) + int _fq_ctx_init_conway(fq_ctx_t ctx, const fmpz_t p, slong d, const char * var) + void fq_ctx_init_conway(fq_ctx_t ctx, const fmpz_t p, slong d, const char * var) + void fq_ctx_init_modulus(fq_ctx_t ctx, const fmpz_mod_poly_t modulus, const fmpz_mod_ctx_t ctxp, const char * var) + void fq_ctx_init_randtest(fq_ctx_t ctx, flint_rand_t state, int type) + void fq_ctx_init_randtest_reducible(fq_ctx_t ctx, flint_rand_t state, int type) void fq_ctx_clear(fq_ctx_t ctx) - const fmpz_mod_poly_struct* fq_ctx_modulus(const fq_ctx_t ctx) - long fq_ctx_degree(const fq_ctx_t ctx) - fmpz_struct * fq_ctx_prime(const fq_ctx_t ctx) + # const fmpz_mod_poly_struct* fq_ctx_modulus(const fq_ctx_t ctx) + slong fq_ctx_degree(const fq_ctx_t ctx) + const fmpz_struct * fq_ctx_prime(const fq_ctx_t ctx) void fq_ctx_order(fmpz_t f, const fq_ctx_t ctx) # int fq_ctx_fprint(FILE * file, const fq_ctx_t ctx) void fq_ctx_print(const fq_ctx_t ctx) - void fq_ctx_randtest(fq_ctx_t ctx) - void fq_ctx_randtest_reducible(fq_ctx_t ctx) void fq_init(fq_t rop, const fq_ctx_t ctx) void fq_init2(fq_t rop, const fq_ctx_t ctx) void fq_clear(fq_t rop, const fq_ctx_t ctx) - void _fq_sparse_reduce(fmpz_struct *R, slong lenR, const fq_ctx_t ctx) - void _fq_dense_reduce(fmpz_struct *R, slong lenR, const fq_ctx_t ctx) - void _fq_reduce(fmpz_struct *r, slong lenR, const fq_ctx_t ctx) + void _fq_sparse_reduce(fmpz_struct * R, slong lenR, const fq_ctx_t ctx) + void _fq_dense_reduce(fmpz_struct * R, slong lenR, const fq_ctx_t ctx) + void _fq_reduce(fmpz_struct * r, slong lenR, const fq_ctx_t ctx) void fq_reduce(fq_t rop, const fq_ctx_t ctx) void fq_add(fq_t rop, const fq_t op1, const fq_t op2, const fq_ctx_t ctx) void fq_sub(fq_t rop, const fq_t op1, const fq_t op2, const fq_ctx_t ctx) @@ -74,18 +38,18 @@ cdef extern from "flint/fq.h": void fq_mul_ui(fq_t rop, const fq_t op, ulong x, const fq_ctx_t ctx) void fq_sqr(fq_t rop, const fq_t op, const fq_ctx_t ctx) void fq_div(fq_t rop, const fq_t op1, const fq_t op2, const fq_ctx_t ctx) - void _fq_inv(fmpz_struct *rop, const fmpz_struct *op, slong len, const fq_ctx_t ctx) + void _fq_inv(fmpz_struct * rop, const fmpz_struct * op, slong len, const fq_ctx_t ctx) void fq_inv(fq_t rop, const fq_t op, const fq_ctx_t ctx) void fq_gcdinv(fq_t f, fq_t inv, const fq_t op, const fq_ctx_t ctx) - void _fq_pow(fmpz_struct *rop, const fmpz_struct *op, slong len, const fmpz_t e, const fq_ctx_t ctx) + void _fq_pow(fmpz_struct * rop, const fmpz_struct * op, slong len, const fmpz_t e, const fq_ctx_t ctx) void fq_pow(fq_t rop, const fq_t op, const fmpz_t e, const fq_ctx_t ctx) void fq_pow_ui(fq_t rop, const fq_t op, const ulong e, const fq_ctx_t ctx) int fq_sqrt(fq_t rop, const fq_t op1, const fq_ctx_t ctx) void fq_pth_root(fq_t rop, const fq_t op1, const fq_ctx_t ctx) int fq_is_square(const fq_t op, const fq_ctx_t ctx) - # int fq_fprint_pretty(FILE *file, const fq_t op, const fq_ctx_t ctx) + # int fq_fprint_pretty(FILE * file, const fq_t op, const fq_ctx_t ctx) int fq_print_pretty(const fq_t op, const fq_ctx_t ctx) - # void fq_fprint(FILE * file, const fq_t op, const fq_ctx_t ctx) + # int fq_fprint(FILE * file, const fq_t op, const fq_ctx_t ctx) void fq_print(const fq_t op, const fq_ctx_t ctx) char * fq_get_str(const fq_t op, const fq_ctx_t ctx) char * fq_get_str_pretty(const fq_t op, const fq_ctx_t ctx) @@ -114,13 +78,13 @@ cdef extern from "flint/fq.h": int fq_equal(const fq_t op1, const fq_t op2, const fq_ctx_t ctx) int fq_is_invertible(const fq_t op, const fq_ctx_t ctx) int fq_is_invertible_f(fq_t f, const fq_t op, const fq_ctx_t ctx) - void _fq_trace(fmpz_t rop, const fmpz_struct *op, slong len, const fq_ctx_t ctx) + void _fq_trace(fmpz_t rop, const fmpz_struct * op, slong len, const fq_ctx_t ctx) void fq_trace(fmpz_t rop, const fq_t op, const fq_ctx_t ctx) - void _fq_norm(fmpz_t rop, const fmpz_struct *op, slong len, const fq_ctx_t ctx) + void _fq_norm(fmpz_t rop, const fmpz_struct * op, slong len, const fq_ctx_t ctx) void fq_norm(fmpz_t rop, const fq_t op, const fq_ctx_t ctx) - void _fq_frobenius(fmpz_struct *rop, const fmpz_struct *op, slong len, slong e, const fq_ctx_t ctx) + void _fq_frobenius(fmpz_struct * rop, const fmpz_struct * op, slong len, slong e, const fq_ctx_t ctx) void fq_frobenius(fq_t rop, const fq_t op, slong e, const fq_ctx_t ctx) - int fq_multiplicative_order(fmpz_t ord, const fq_t op, const fq_ctx_t ctx) + int fq_multiplicative_order(fmpz_struct * ord, const fq_t op, const fq_ctx_t ctx) int fq_is_primitive(const fq_t op, const fq_ctx_t ctx) void fq_bit_pack(fmpz_t f, const fq_t op, flint_bitcnt_t bit_size, const fq_ctx_t ctx) void fq_bit_unpack(fq_t rop, const fmpz_t f, flint_bitcnt_t bit_size, const fq_ctx_t ctx) diff --git a/src/flint/flintlib/fq_default.pxd b/src/flint/flintlib/functions/fq_default.pxd similarity index 74% rename from src/flint/flintlib/fq_default.pxd rename to src/flint/flintlib/functions/fq_default.pxd index ac298c62..25ae1a79 100644 --- a/src/flint/flintlib/fq_default.pxd +++ b/src/flint/flintlib/functions/fq_default.pxd @@ -1,50 +1,22 @@ -from flint.flintlib.fmpz_poly cimport fmpz_poly_t -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.flint cimport slong, flint_rand_t, ulong, mp_limb_t +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, slong, ulong +from flint.flintlib.types.fmpz cimport fmpz_poly_t +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_ctx_t, fmpz_mod_poly_t +from flint.flintlib.types.fq_default cimport fq_default_ctx_t, fq_default_t +from flint.flintlib.types.nmod cimport nmod_poly_t -from flint.flintlib.nmod cimport nmod_t -from flint.flintlib.nmod_poly cimport nmod_poly_t -from flint.flintlib.fmpz_mod cimport fmpz_mod_ctx_t -from flint.flintlib.fmpz_mod_poly cimport fmpz_mod_poly_t +# unknown type FILE -from flint.flintlib.fq cimport fq_t, fq_ctx_t -from flint.flintlib.fq_nmod cimport fq_nmod_t, fq_nmod_ctx_t -from flint.flintlib.fq_zech cimport fq_zech_t, fq_zech_ctx_t cdef extern from "flint/fq_default.h": - ctypedef union fq_default_struct: - fq_t fq - fq_nmod_t fq_nmod - fq_zech_t fq_zech - ulong nmod - fmpz_t fmpz_mod - ctypedef fq_default_struct fq_default_t[1] - - ctypedef struct fq_default_fmpz_mod_ctx_struct: - fmpz_mod_ctx_t mod - fmpz_t a # minpoly is x - a - - ctypedef struct fq_default_nmod_ctx_struct: - nmod_t mod - mp_limb_t a # minpoly is x - a - - ctypedef union fq_default_ctx_struct: - fq_ctx_t fq - fq_nmod_ctx_t fq_nmod - fq_zech_ctx_t fq_zech - fq_default_nmod_ctx_struct nmod - fq_default_fmpz_mod_ctx_struct fmpz_mod - ctypedef fq_default_ctx_struct fq_default_ctx_t[1] - - # Parsed from here - void fq_default_ctx_init(fq_default_ctx_t ctx, const fmpz_t p, slong d, const char * var) void fq_default_ctx_init_type(fq_default_ctx_t ctx, const fmpz_t p, slong d, const char * var, int type) - void fq_default_ctx_init_modulus(fq_default_ctx_t ctx, const fmpz_mod_poly_t modulus, fmpz_mod_ctx_t mod_ctx, const char * var) - void fq_default_ctx_init_modulus_type(fq_default_ctx_t ctx, const fmpz_mod_poly_t modulus, fmpz_mod_ctx_t mod_ctx, const char * var, int type) - void fq_default_ctx_init_modulus_nmod(fq_default_ctx_t ctx, const nmod_poly_t modulus, const char * var) + void fq_default_ctx_init(fq_default_ctx_t ctx, const fmpz_t p, slong d, const char * var) void fq_default_ctx_init_modulus_nmod_type(fq_default_ctx_t ctx, const nmod_poly_t modulus, const char * var, int type) + void fq_default_ctx_init_modulus_nmod(fq_default_ctx_t ctx, const nmod_poly_t modulus, const char * var) + void fq_default_ctx_init_modulus_type(fq_default_ctx_t ctx, const fmpz_mod_poly_t modulus, fmpz_mod_ctx_t mod_ctx, const char * var, int type) + void fq_default_ctx_init_modulus(fq_default_ctx_t ctx, const fmpz_mod_poly_t modulus, fmpz_mod_ctx_t mod_ctx, const char * var) void fq_default_ctx_clear(fq_default_ctx_t ctx) int fq_default_ctx_type(const fq_default_ctx_t ctx) + void * fq_default_ctx_inner(const fq_default_ctx_t ctx) slong fq_default_ctx_degree(const fq_default_ctx_t ctx) void fq_default_ctx_prime(fmpz_t prime, const fq_default_ctx_t ctx) void fq_default_ctx_order(fmpz_t f, const fq_default_ctx_t ctx) @@ -66,16 +38,16 @@ cdef extern from "flint/fq_default.h": void fq_default_mul_si(fq_default_t rop, const fq_default_t op, slong x, const fq_default_ctx_t ctx) void fq_default_mul_ui(fq_default_t rop, const fq_default_t op, ulong x, const fq_default_ctx_t ctx) void fq_default_sqr(fq_default_t rop, const fq_default_t op, const fq_default_ctx_t ctx) - void fq_default_div(fq_default_t rop, const fq_default_t op1, const fq_default_t op2, const fq_default_ctx_t ctx) + void fq_default_div(fq_default_t rop, fq_default_t op1, fq_default_t op2, const fq_default_ctx_t ctx) void fq_default_inv(fq_default_t rop, const fq_default_t op, const fq_default_ctx_t ctx) void fq_default_pow(fq_default_t rop, const fq_default_t op, const fmpz_t e, const fq_default_ctx_t ctx) void fq_default_pow_ui(fq_default_t rop, const fq_default_t op, const ulong e, const fq_default_ctx_t ctx) int fq_default_sqrt(fq_default_t rop, const fq_default_t op1, const fq_default_ctx_t ctx) void fq_default_pth_root(fq_default_t rop, const fq_default_t op1, const fq_default_ctx_t ctx) int fq_default_is_square(const fq_default_t op, const fq_default_ctx_t ctx) - # int fq_default_fprint_pretty(FILE *file, const fq_default_t op, const fq_default_ctx_t ctx) - int fq_default_print_pretty(const fq_default_t op, const fq_default_ctx_t ctx) - # void fq_default_fprint(FILE * file, const fq_default_t op, const fq_default_ctx_t ctx) + # int fq_default_fprint_pretty(FILE * file, const fq_default_t op, const fq_default_ctx_t ctx) + void fq_default_print_pretty(const fq_default_t op, const fq_default_ctx_t ctx) + # int fq_default_fprint(FILE * file, const fq_default_t op, const fq_default_ctx_t ctx) void fq_default_print(const fq_default_t op, const fq_default_ctx_t ctx) char * fq_default_get_str(const fq_default_t op, const fq_default_ctx_t ctx) char * fq_default_get_str_pretty(const fq_default_t op, const fq_default_ctx_t ctx) @@ -94,9 +66,7 @@ cdef extern from "flint/fq_default.h": int fq_default_get_fmpz(fmpz_t rop, const fq_default_t op, const fq_default_ctx_t ctx) void fq_default_get_nmod_poly(nmod_poly_t poly, const fq_default_t op, const fq_default_ctx_t ctx) void fq_default_set_nmod_poly(fq_default_t op, const nmod_poly_t poly, const fq_default_ctx_t ctx) - # void fq_default_get_fmpz_mod_poly(fmpz_mod_poly_t poly, const fq_default_t op, const fmpz_mod_ctx_t mod_ctx, const fq_default_ctx_t ctx) - # void fq_default_set_fmpz_mod_poly(fq_default_t op, const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t mod_ctx, const fq_default_ctx_t ctx) - void fq_default_get_fmpz_mod_poly(fmpz_mod_poly_t poly, const fq_default_t op, const fq_default_ctx_t ctx) + void fq_default_get_fmpz_mod_poly(fmpz_mod_poly_t poly, const fq_default_t op, const fq_default_ctx_t ctx) void fq_default_set_fmpz_mod_poly(fq_default_t op, const fmpz_mod_poly_t poly, const fq_default_ctx_t ctx) void fq_default_get_fmpz_poly(fmpz_poly_t a, const fq_default_t b, const fq_default_ctx_t ctx) void fq_default_set_fmpz_poly(fq_default_t a, const fmpz_poly_t b, const fq_default_ctx_t ctx) diff --git a/src/flint/flintlib/fq_default_mat.pxd b/src/flint/flintlib/functions/fq_default_mat.pxd similarity index 84% rename from src/flint/flintlib/fq_default_mat.pxd rename to src/flint/flintlib/functions/fq_default_mat.pxd index ea3c3e4b..562dd2b3 100644 --- a/src/flint/flintlib/fq_default_mat.pxd +++ b/src/flint/flintlib/functions/fq_default_mat.pxd @@ -1,28 +1,14 @@ -from flint.flintlib.flint cimport flint_rand_t, slong -from flint.flintlib.fq cimport fq_ctx_t, fq_struct -from flint.flintlib.nmod_mat cimport nmod_mat_t -from flint.flintlib.fmpz_mat cimport fmpz_mat_t -from flint.flintlib.fmpz_mod_mat cimport fmpz_mod_mat_t -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.fq_default cimport fq_default_t, fq_default_ctx_t -from flint.flintlib.fq_default_poly cimport fq_default_poly_t -from flint.flintlib.fq_mat cimport fq_mat_t -from flint.flintlib.fq_nmod_mat cimport fq_nmod_mat_t -from flint.flintlib.fq_zech_mat cimport fq_zech_mat_t -from flintlib.nmod_mat cimport nmod_mat_t -from flintlib.fmpz_mod_mat cimport fmpz_mod_mat_t +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, slong +from flint.flintlib.types.fmpz cimport fmpz_mat_t +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_mat_t +from flint.flintlib.types.fq cimport fq_ctx_t, fq_mat_t, fq_struct +from flint.flintlib.types.fq_default cimport fq_default_ctx_t, fq_default_mat_t, fq_default_poly_t, fq_default_t +from flint.flintlib.types.nmod cimport nmod_mat_t + +# unknown type FILE -cdef extern from "flint/fq_default_mat.h": - # Type definitions **********************************************/ - ctypedef union fq_default_mat_struct: - fq_mat_t fq - fq_nmod_mat_t fq_nmod - fq_zech_mat_t fq_zech - nmod_mat_t nmod - fmpz_mod_mat_t fmpz_mod - ctypedef fq_default_mat_struct fq_default_mat_t[1] - # Parsed from here **********************************************/ +cdef extern from "flint/fq_default_mat.h": void fq_default_mat_init(fq_default_mat_t mat, slong rows, slong cols, const fq_default_ctx_t ctx) void fq_default_mat_init_set(fq_default_mat_t mat, const fq_default_mat_t src, const fq_default_ctx_t ctx) void fq_default_mat_clear(fq_default_mat_t mat, const fq_default_ctx_t ctx) diff --git a/src/flint/flintlib/fq_default_poly.pxd b/src/flint/flintlib/functions/fq_default_poly.pxd similarity index 91% rename from src/flint/flintlib/fq_default_poly.pxd rename to src/flint/flintlib/functions/fq_default_poly.pxd index 00b3fea3..7973d815 100644 --- a/src/flint/flintlib/fq_default_poly.pxd +++ b/src/flint/flintlib/functions/fq_default_poly.pxd @@ -1,25 +1,13 @@ -from flint.flintlib.fq_default cimport fq_default_ctx_t, fq_default_t -from flint.flintlib.nmod_poly cimport nmod_poly_t -from flint.flintlib.flint cimport slong, ulong, flint_rand_t -from flint.flintlib.fmpz_poly cimport fmpz_poly_t -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.fmpz_mod_poly cimport fmpz_mod_poly_t -from flint.flintlib.fq_poly cimport fq_poly_t -from flint.flintlib.fq_nmod_poly cimport fq_nmod_poly_t -from flint.flintlib.fq_zech_poly cimport fq_zech_poly_t +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, slong, ulong +from flint.flintlib.types.fmpz cimport fmpz_poly_t +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_poly_t +from flint.flintlib.types.fq_default cimport fq_default_ctx_t, fq_default_poly_t, fq_default_t +from flint.flintlib.types.nmod cimport nmod_poly_t +# unknown type FILE -cdef extern from "flint/fq_default_poly.h": - # Type definitions **********************************************/ - ctypedef union fq_default_poly_struct: - fq_poly_t fq - fq_nmod_poly_t fq_nmod - fq_zech_poly_t fq_zech - nmod_poly_t nmod - fmpz_mod_poly_t fmpz_mod - ctypedef fq_default_poly_struct fq_default_poly_t[1] - # Parsed from here **********************************************/ +cdef extern from "flint/fq_default_poly.h": void fq_default_poly_init(fq_default_poly_t poly, const fq_default_ctx_t ctx) void fq_default_poly_init2(fq_default_poly_t poly, slong alloc, const fq_default_ctx_t ctx) void fq_default_poly_realloc(fq_default_poly_t poly, slong alloc, const fq_default_ctx_t ctx) diff --git a/src/flint/flintlib/fq_default_poly_factor.pxd b/src/flint/flintlib/functions/fq_default_poly_factor.pxd similarity index 73% rename from src/flint/flintlib/fq_default_poly_factor.pxd rename to src/flint/flintlib/functions/fq_default_poly_factor.pxd index e1d9e33c..7347f20a 100644 --- a/src/flint/flintlib/fq_default_poly_factor.pxd +++ b/src/flint/flintlib/functions/fq_default_poly_factor.pxd @@ -1,23 +1,9 @@ -from flint.flintlib.fq_default cimport fq_default_t, fq_default_ctx_t -from flint.flintlib.flint cimport ulong, slong -from flint.flintlib.fq_default_poly cimport fq_default_poly_t -from flint.flintlib.fq_poly_factor cimport fq_poly_factor_t -from flint.flintlib.fq_nmod_poly_factor cimport fq_nmod_poly_factor_t -from flint.flintlib.fq_zech_poly_factor cimport fq_zech_poly_factor_t -from flint.flintlib.nmod_poly_factor cimport nmod_poly_factor_t -from flint.flintlib.fmpz_mod_poly_factor cimport fmpz_mod_poly_factor_t +from flint.flintlib.types.flint cimport slong, ulong +from flint.flintlib.types.fq_default cimport fq_default_ctx_t, fq_default_poly_factor_t, fq_default_poly_t, fq_default_t + -cdef extern from "flint/fq_default_poly_factor.h": - # Type definitions **********************************************/ - ctypedef union fq_default_poly_factor_struct: - fq_poly_factor_t fq - fq_nmod_poly_factor_t fq_nmod - fq_zech_poly_factor_t fq_zech - nmod_poly_factor_t nmod - fmpz_mod_poly_factor_t fmpz_mod - ctypedef fq_default_poly_factor_struct fq_default_poly_factor_t[1] - # Parsed from here **********************************************/ +cdef extern from "flint/fq_default_poly_factor.h": void fq_default_poly_factor_init(fq_default_poly_factor_t fac, const fq_default_ctx_t ctx) void fq_default_poly_factor_clear(fq_default_poly_factor_t fac, const fq_default_ctx_t ctx) void fq_default_poly_factor_realloc(fq_default_poly_factor_t fac, slong alloc, const fq_default_ctx_t ctx) diff --git a/src/flint/flintlib/fq_mat.pxd b/src/flint/flintlib/functions/fq_mat.pxd similarity index 94% rename from src/flint/flintlib/fq_mat.pxd rename to src/flint/flintlib/functions/fq_mat.pxd index f51d2ab1..c1cd01c9 100644 --- a/src/flint/flintlib/fq_mat.pxd +++ b/src/flint/flintlib/functions/fq_mat.pxd @@ -1,11 +1,12 @@ -from flint.flintlib.fq cimport fq_t, fq_struct, fq_ctx_t, fq_mat_t, fq_poly_t -from flint.flintlib.fq_poly cimport fq_poly_t -from flint.flintlib.flint cimport flint_rand_t, slong -from flint.flintlib.nmod_mat cimport nmod_mat_t -from flint.flintlib.fmpz_mod_mat cimport fmpz_mod_mat_t +from flint.flintlib.types.flint cimport flint_rand_t, slong +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_mat_t +from flint.flintlib.types.fq cimport fq_ctx_t, fq_mat_t, fq_poly_t, fq_struct, fq_t +from flint.flintlib.types.nmod cimport nmod_mat_t + +# unknown type FILE + cdef extern from "flint/fq_mat.h": - # Parsed from here **********************************************/ void fq_mat_init(fq_mat_t mat, slong rows, slong cols, const fq_ctx_t ctx) void fq_mat_init_set(fq_mat_t mat, const fq_mat_t src, const fq_ctx_t ctx) void fq_mat_clear(fq_mat_t mat, const fq_ctx_t ctx) diff --git a/src/flint/flintlib/fq_nmod.pxd b/src/flint/flintlib/functions/fq_nmod.pxd similarity index 61% rename from src/flint/flintlib/fq_nmod.pxd rename to src/flint/flintlib/functions/fq_nmod.pxd index b7bb2ceb..e440eed1 100644 --- a/src/flint/flintlib/fq_nmod.pxd +++ b/src/flint/flintlib/functions/fq_nmod.pxd @@ -1,66 +1,31 @@ -# unimported types {'fq_nmod_t', 'fq_nmod_ctx_t'} -from flint.flintlib.fmpz cimport fmpz_t, fmpz_struct -from flint.flintlib.nmod_poly cimport nmod_poly_t -from flint.flintlib.flint cimport mp_ptr, mp_limb_t, slong, mp_srcptr, flint_rand_t, flint_bitcnt_t, ulong -from flint.flintlib.nmod cimport nmod_t -from flint.flintlib.nmod_mat cimport nmod_mat_t -from flint.flintlib.nmod_poly cimport nmod_poly_struct, nmod_poly_t +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, nn_ptr, nn_srcptr, slong, ulong +from flint.flintlib.types.fq_nmod cimport fq_nmod_ctx_t, fq_nmod_t +from flint.flintlib.types.nmod cimport nmod_mat_t, nmod_poly_t -cdef extern from "flint/fq_nmod.h": - # Type definitions **********************************************/ - ctypedef nmod_poly_t fq_nmod_t - ctypedef nmod_poly_struct fq_nmod_struct - - ctypedef struct fq_nmod_ctx_struct: - fmpz_struct p - nmod_t mod - - int sparse_modulus - int is_conway # whether field was generated using Flint Conway table (assures primitivity - - mp_limb_t *a - slong *j - slong len +# unknown type +# unknown type FILE - nmod_poly_t modulus - nmod_poly_t inv - char *var - ctypedef fq_nmod_ctx_struct fq_nmod_ctx_t[1] - - ctypedef struct fq_nmod_poly_struct: - fq_nmod_struct * coeffs - slong alloc - slong length - ctypedef fq_nmod_poly_struct fq_nmod_poly_t[1] - - ctypedef struct fq_nmod_mat_struct: - fq_nmod_struct * entries - slong r - slong s - fq_nmod_struct ** rows - ctypedef fq_nmod_mat_struct fq_nmod_mat_t[1] - - # Parsed from here **********************************************/ - void fq_nmod_ctx_init(fq_nmod_ctx_t ctx, const fmpz_t p, slong d, const char *var) - int _fq_nmod_ctx_init_conway(fq_nmod_ctx_t ctx, const fmpz_t p, slong d, const char *var) - void fq_nmod_ctx_init_conway(fq_nmod_ctx_t ctx, const fmpz_t p, slong d, const char *var) - void fq_nmod_ctx_init_modulus(fq_nmod_ctx_t ctx, nmod_poly_t modulus, const char *var) +cdef extern from "flint/fq_nmod.h": + void fq_nmod_ctx_init_ui(fq_nmod_ctx_t ctx, ulong p, slong d, const char * var) + int _fq_nmod_ctx_init_conway_ui(fq_nmod_ctx_t ctx, ulong p, slong d, const char * var) + void fq_nmod_ctx_init_conway_ui(fq_nmod_ctx_t ctx, ulong p, slong d, const char * var) + void fq_nmod_ctx_init_modulus(fq_nmod_ctx_t ctx, const nmod_poly_t modulus, const char * var) + void fq_nmod_ctx_init_randtest(fq_nmod_ctx_t ctx, flint_rand_t state, int type) + void fq_nmod_ctx_init_randtest_reducible(fq_nmod_ctx_t ctx, flint_rand_t state, int type) void fq_nmod_ctx_clear(fq_nmod_ctx_t ctx) - const nmod_poly_struct* fq_nmod_ctx_modulus(const fq_nmod_ctx_t ctx) - long fq_nmod_ctx_degree(const fq_nmod_ctx_t ctx) - fmpz_struct * fq_nmod_ctx_prime(const fq_nmod_ctx_t ctx) + # const nmod_poly_struct* fq_nmod_ctx_modulus(const fq_nmod_ctx_t ctx) + slong fq_nmod_ctx_degree(const fq_nmod_ctx_t ctx) + ulong fq_nmod_ctx_prime(const fq_nmod_ctx_t ctx) void fq_nmod_ctx_order(fmpz_t f, const fq_nmod_ctx_t ctx) # int fq_nmod_ctx_fprint(FILE * file, const fq_nmod_ctx_t ctx) void fq_nmod_ctx_print(const fq_nmod_ctx_t ctx) - void fq_nmod_ctx_randtest(fq_nmod_ctx_t ctx) - void fq_nmod_ctx_randtest_reducible(fq_nmod_ctx_t ctx) void fq_nmod_init(fq_nmod_t rop, const fq_nmod_ctx_t ctx) void fq_nmod_init2(fq_nmod_t rop, const fq_nmod_ctx_t ctx) void fq_nmod_clear(fq_nmod_t rop, const fq_nmod_ctx_t ctx) - void _fq_nmod_sparse_reduce(mp_ptr R, slong lenR, const fq_nmod_ctx_t ctx) - void _fq_nmod_dense_reduce(mp_ptr R, slong lenR, const fq_nmod_ctx_t ctx) - void _fq_nmod_reduce(mp_ptr r, slong lenR, const fq_nmod_ctx_t ctx) + void _fq_nmod_sparse_reduce(ulong * R, slong lenR, const fq_nmod_ctx_t ctx) + void _fq_nmod_dense_reduce(ulong * R, slong lenR, const fq_nmod_ctx_t ctx) + void _fq_nmod_reduce(ulong * r, slong lenR, const fq_nmod_ctx_t ctx) void fq_nmod_reduce(fq_nmod_t rop, const fq_nmod_ctx_t ctx) void fq_nmod_add(fq_nmod_t rop, const fq_nmod_t op1, const fq_nmod_t op2, const fq_nmod_ctx_t ctx) void fq_nmod_sub(fq_nmod_t rop, const fq_nmod_t op1, const fq_nmod_t op2, const fq_nmod_ctx_t ctx) @@ -71,18 +36,18 @@ cdef extern from "flint/fq_nmod.h": void fq_nmod_mul_si(fq_nmod_t rop, const fq_nmod_t op, slong x, const fq_nmod_ctx_t ctx) void fq_nmod_mul_ui(fq_nmod_t rop, const fq_nmod_t op, ulong x, const fq_nmod_ctx_t ctx) void fq_nmod_sqr(fq_nmod_t rop, const fq_nmod_t op, const fq_nmod_ctx_t ctx) - void _fq_nmod_inv(mp_ptr * rop, mp_srcptr * op, slong len, const fq_nmod_ctx_t ctx) + void _fq_nmod_inv(nn_ptr * rop, nn_srcptr * op, slong len, const fq_nmod_ctx_t ctx) void fq_nmod_inv(fq_nmod_t rop, const fq_nmod_t op, const fq_nmod_ctx_t ctx) void fq_nmod_gcdinv(fq_nmod_t f, fq_nmod_t inv, const fq_nmod_t op, const fq_nmod_ctx_t ctx) - void _fq_nmod_pow(mp_ptr * rop, mp_srcptr * op, slong len, const fmpz_t e, const fq_nmod_ctx_t ctx) + void _fq_nmod_pow(ulong * rop, const ulong * op, slong len, const fmpz_t e, const fq_nmod_ctx_t ctx) void fq_nmod_pow(fq_nmod_t rop, const fq_nmod_t op, const fmpz_t e, const fq_nmod_ctx_t ctx) void fq_nmod_pow_ui(fq_nmod_t rop, const fq_nmod_t op, const ulong e, const fq_nmod_ctx_t ctx) - void fq_nmod_sqrt(fq_nmod_t rop, const fq_nmod_t op1, const fq_nmod_ctx_t ctx) + int fq_nmod_sqrt(fq_nmod_t rop, const fq_nmod_t op1, const fq_nmod_ctx_t ctx) void fq_nmod_pth_root(fq_nmod_t rop, const fq_nmod_t op1, const fq_nmod_ctx_t ctx) int fq_nmod_is_square(const fq_nmod_t op, const fq_nmod_ctx_t ctx) # int fq_nmod_fprint_pretty(FILE * file, const fq_nmod_t op, const fq_nmod_ctx_t ctx) - int fq_nmod_print_pretty(const fq_nmod_t op, const fq_nmod_ctx_t ctx) - # void fq_nmod_fprint(FILE * file, const fq_nmod_t op, const fq_nmod_ctx_t ctx) + void fq_nmod_print_pretty(const fq_nmod_t op, const fq_nmod_ctx_t ctx) + # int fq_nmod_fprint(FILE * file, const fq_nmod_t op, const fq_nmod_ctx_t ctx) void fq_nmod_print(const fq_nmod_t op, const fq_nmod_ctx_t ctx) char * fq_nmod_get_str(const fq_nmod_t op, const fq_nmod_ctx_t ctx) char * fq_nmod_get_str_pretty(const fq_nmod_t op, const fq_nmod_ctx_t ctx) @@ -110,13 +75,13 @@ cdef extern from "flint/fq_nmod.h": int fq_nmod_is_invertible(const fq_nmod_t op, const fq_nmod_ctx_t ctx) int fq_nmod_is_invertible_f(fq_nmod_t f, const fq_nmod_t op, const fq_nmod_ctx_t ctx) int fq_nmod_cmp(const fq_nmod_t a, const fq_nmod_t b, const fq_nmod_ctx_t ctx) - void _fq_nmod_trace(fmpz_t rop, mp_srcptr * op, slong len, const fq_nmod_ctx_t ctx) + void _fq_nmod_trace(fmpz_t rop, const ulong * op, slong len, const fq_nmod_ctx_t ctx) void fq_nmod_trace(fmpz_t rop, const fq_nmod_t op, const fq_nmod_ctx_t ctx) - void _fq_nmod_norm(fmpz_t rop, mp_srcptr * op, slong len, const fq_nmod_ctx_t ctx) + void _fq_nmod_norm(fmpz_t rop, const ulong * op, slong len, const fq_nmod_ctx_t ctx) void fq_nmod_norm(fmpz_t rop, const fq_nmod_t op, const fq_nmod_ctx_t ctx) - void _fq_nmod_frobenius(mp_ptr * rop, mp_srcptr * op, slong len, slong e, const fq_nmod_ctx_t ctx) + void _fq_nmod_frobenius(ulong * rop, const ulong * op, slong len, slong e, const fq_nmod_ctx_t ctx) void fq_nmod_frobenius(fq_nmod_t rop, const fq_nmod_t op, slong e, const fq_nmod_ctx_t ctx) - int fq_nmod_multiplicative_order(fmpz_t ord, const fq_nmod_t op, const fq_nmod_ctx_t ctx) + int fq_nmod_multiplicative_order(fmpz_struct * ord, const fq_nmod_t op, const fq_nmod_ctx_t ctx) int fq_nmod_is_primitive(const fq_nmod_t op, const fq_nmod_ctx_t ctx) void fq_nmod_bit_pack(fmpz_t f, const fq_nmod_t op, flint_bitcnt_t bit_size, const fq_nmod_ctx_t ctx) void fq_nmod_bit_unpack(fq_nmod_t rop, const fmpz_t f, flint_bitcnt_t bit_size, const fq_nmod_ctx_t ctx) diff --git a/src/flint/flintlib/fq_nmod_mat.pxd b/src/flint/flintlib/functions/fq_nmod_mat.pxd similarity index 95% rename from src/flint/flintlib/fq_nmod_mat.pxd rename to src/flint/flintlib/functions/fq_nmod_mat.pxd index 790e1f99..4e04af58 100644 --- a/src/flint/flintlib/fq_nmod_mat.pxd +++ b/src/flint/flintlib/functions/fq_nmod_mat.pxd @@ -1,10 +1,12 @@ -from flint.flintlib.fq_nmod cimport fq_nmod_struct, fq_nmod_ctx_t, fq_nmod_t, fq_nmod_poly_t -from flint.flintlib.flint cimport slong, flint_rand_t -from flint.flintlib.fmpz_mod_mat cimport fmpz_mod_mat_t -from flint.flintlib.nmod_mat cimport nmod_mat_t +from flint.flintlib.types.flint cimport flint_rand_t, slong +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_mat_t +from flint.flintlib.types.fq_nmod cimport fq_nmod_ctx_t, fq_nmod_mat_t, fq_nmod_poly_t, fq_nmod_struct, fq_nmod_t +from flint.flintlib.types.nmod cimport nmod_mat_t + +# unknown type FILE + cdef extern from "flint/fq_nmod_mat.h": - # Parsed from here **********************************************/ void fq_nmod_mat_init(fq_nmod_mat_t mat, slong rows, slong cols, const fq_nmod_ctx_t ctx) void fq_nmod_mat_init_set(fq_nmod_mat_t mat, const fq_nmod_mat_t src, const fq_nmod_ctx_t ctx) void fq_nmod_mat_clear(fq_nmod_mat_t mat, const fq_nmod_ctx_t ctx) diff --git a/src/flint/flintlib/fq_nmod_poly.pxd b/src/flint/flintlib/functions/fq_nmod_poly.pxd similarity index 98% rename from src/flint/flintlib/fq_nmod_poly.pxd rename to src/flint/flintlib/functions/fq_nmod_poly.pxd index 29003791..6d8ab10c 100644 --- a/src/flint/flintlib/fq_nmod_poly.pxd +++ b/src/flint/flintlib/functions/fq_nmod_poly.pxd @@ -1,11 +1,12 @@ -from flint.flintlib.fq_nmod cimport fq_nmod_struct, fq_nmod_ctx_t, fq_nmod_t, fq_nmod_poly_t, fq_nmod_mat_t -from flint.flintlib.flint cimport ulong, slong, flint_rand_t -from flint.flintlib.fmpz_mod_poly cimport fmpz_mod_poly_t -from flint.flintlib.nmod_poly cimport nmod_poly_t -from flint.flintlib.fmpz cimport fmpz_t +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, slong, ulong +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_poly_t +from flint.flintlib.types.fq_nmod cimport fq_nmod_ctx_t, fq_nmod_mat_t, fq_nmod_poly_t, fq_nmod_struct, fq_nmod_t +from flint.flintlib.types.nmod cimport nmod_poly_t + +# unknown type FILE + cdef extern from "flint/fq_nmod_poly.h": - # Parsed from here **********************************************/ void fq_nmod_poly_init(fq_nmod_poly_t poly, const fq_nmod_ctx_t ctx) void fq_nmod_poly_init2(fq_nmod_poly_t poly, slong alloc, const fq_nmod_ctx_t ctx) void fq_nmod_poly_realloc(fq_nmod_poly_t poly, slong alloc, const fq_nmod_ctx_t ctx) diff --git a/src/flint/flintlib/fq_nmod_poly_factor.pxd b/src/flint/flintlib/functions/fq_nmod_poly_factor.pxd similarity index 86% rename from src/flint/flintlib/fq_nmod_poly_factor.pxd rename to src/flint/flintlib/functions/fq_nmod_poly_factor.pxd index 83234f7a..a6e7bf27 100644 --- a/src/flint/flintlib/fq_nmod_poly_factor.pxd +++ b/src/flint/flintlib/functions/fq_nmod_poly_factor.pxd @@ -1,17 +1,9 @@ -from flint.flintlib.flint cimport ulong, slong, flint_rand_t -from flint.flintlib.fq_nmod cimport fq_nmod_ctx_t, fq_nmod_t, fq_nmod_struct -from flint.flintlib.fq_nmod cimport fq_nmod_poly_struct, fq_nmod_poly_t +from flint.flintlib.types.flint cimport flint_rand_t, slong, ulong +from flint.flintlib.types.fq_nmod cimport fq_nmod_ctx_t, fq_nmod_poly_factor_t, fq_nmod_poly_t, fq_nmod_struct, fq_nmod_t + -cdef extern from "flint/fq_nmod_poly_factor.h": - # Type definitions **********************************************/ - ctypedef struct fq_nmod_poly_factor_struct: - fq_nmod_poly_struct * poly - slong * exp - slong num - slong alloc - ctypedef fq_nmod_poly_factor_struct fq_nmod_poly_factor_t[1] - # Parsed from here **********************************************/ +cdef extern from "flint/fq_nmod_poly_factor.h": void fq_nmod_poly_factor_init(fq_nmod_poly_factor_t fac, const fq_nmod_ctx_t ctx) void fq_nmod_poly_factor_clear(fq_nmod_poly_factor_t fac, const fq_nmod_ctx_t ctx) void fq_nmod_poly_factor_realloc(fq_nmod_poly_factor_t fac, slong alloc, const fq_nmod_ctx_t ctx) diff --git a/src/flint/flintlib/fq_poly.pxd b/src/flint/flintlib/functions/fq_poly.pxd similarity index 98% rename from src/flint/flintlib/fq_poly.pxd rename to src/flint/flintlib/functions/fq_poly.pxd index db4602de..f29d69af 100644 --- a/src/flint/flintlib/fq_poly.pxd +++ b/src/flint/flintlib/functions/fq_poly.pxd @@ -1,12 +1,12 @@ -from flint.flintlib.flint cimport ulong, slong, flint_rand_t -from flint.flintlib.fq cimport fq_ctx_t, fq_t, fq_struct, fq_poly_t -from flint.flintlib.fq_mat cimport fq_mat_t -from flint.flintlib.fmpz_mod_poly cimport fmpz_mod_poly_t -from flint.flintlib.nmod_poly cimport nmod_poly_t -from flint.flintlib.fmpz cimport fmpz_t +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, slong, ulong +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_poly_t +from flint.flintlib.types.fq cimport fq_ctx_t, fq_mat_t, fq_poly_t, fq_struct, fq_t +from flint.flintlib.types.nmod cimport nmod_poly_t + +# unknown type FILE + cdef extern from "flint/fq_poly.h": - # Parsed from here **********************************************/ void fq_poly_init(fq_poly_t poly, const fq_ctx_t ctx) void fq_poly_init2(fq_poly_t poly, slong alloc, const fq_ctx_t ctx) void fq_poly_realloc(fq_poly_t poly, slong alloc, const fq_ctx_t ctx) diff --git a/src/flint/flintlib/fq_poly_factor.pxd b/src/flint/flintlib/functions/fq_poly_factor.pxd similarity index 85% rename from src/flint/flintlib/fq_poly_factor.pxd rename to src/flint/flintlib/functions/fq_poly_factor.pxd index e51761a9..2c5fb6f0 100644 --- a/src/flint/flintlib/fq_poly_factor.pxd +++ b/src/flint/flintlib/functions/fq_poly_factor.pxd @@ -1,18 +1,9 @@ -from flint.flintlib.flint cimport ulong, slong, flint_rand_t -from flint.flintlib.fq cimport fq_t, fq_struct, fq_ctx_t -from flint.flintlib.fq cimport fq_poly_struct, fq_poly_t +from flint.flintlib.types.flint cimport flint_rand_t, slong, ulong +from flint.flintlib.types.fq cimport fq_ctx_t, fq_poly_factor_t, fq_poly_t, fq_struct, fq_t -cdef extern from "flint/fq_poly_factor.h": - # Type definitions **********************************************/ - ctypedef struct fq_poly_factor_struct: - fq_poly_struct * poly - slong * exp - slong num - slong alloc - ctypedef fq_poly_factor_struct fq_poly_factor_t[1] - # Parsed from here **********************************************/ +cdef extern from "flint/fq_poly_factor.h": void fq_poly_factor_init(fq_poly_factor_t fac, const fq_ctx_t ctx) void fq_poly_factor_clear(fq_poly_factor_t fac, const fq_ctx_t ctx) void fq_poly_factor_realloc(fq_poly_factor_t fac, slong alloc, const fq_ctx_t ctx) diff --git a/src/flint/flintlib/fq_zech.pxd b/src/flint/flintlib/functions/fq_zech.pxd similarity index 60% rename from src/flint/flintlib/fq_zech.pxd rename to src/flint/flintlib/functions/fq_zech.pxd index 387510b7..e97a702c 100644 --- a/src/flint/flintlib/fq_zech.pxd +++ b/src/flint/flintlib/functions/fq_zech.pxd @@ -1,70 +1,36 @@ -from flint.flintlib.flint cimport ulong, slong, flint_bitcnt_t, mp_ptr, flint_rand_t, mp_srcptr, mp_limb_t -from flint.flintlib.fmpz cimport fmpz_t, fmpz_struct -from flint.flintlib.nmod_mat cimport nmod_mat_t -from flint.flintlib.nmod_poly cimport nmod_poly_t, nmod_poly_struct -from flint.flintlib.fq_nmod cimport fq_nmod_t, fq_nmod_ctx_t, fq_nmod_ctx_struct +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, nn_ptr, nn_srcptr, slong, ulong +from flint.flintlib.types.fq_nmod cimport fq_nmod_ctx_t, fq_nmod_t +from flint.flintlib.types.fq_zech cimport fq_zech_ctx_t, fq_zech_t +from flint.flintlib.types.nmod cimport nmod_mat_t, nmod_poly_struct, nmod_poly_t +# unknown type FILE -cdef extern from "flint/fq_zech.h": - # Type definitions **********************************************/ - ctypedef struct fq_zech_struct: - mp_limb_t value - ctypedef fq_zech_struct fq_zech_t[1] - - ctypedef struct fq_zech_ctx_struct: - mp_limb_t qm1 # q - 1 - mp_limb_t qm1o2 # (q - 1) / 2 or 1 when p == 2 - mp_limb_t qm1opm1 # (q - 1) / (p - 1) - mp_limb_t p - double ppre - mp_limb_t prime_root # primitive root for prime subfield - mp_limb_t * zech_log_table - mp_limb_t * prime_field_table - mp_limb_t * eval_table - - fq_nmod_ctx_struct * fq_nmod_ctx - int owns_fq_nmod_ctx - int is_conway # whether field was generated using Flint Conway tables (assures primitivity) - ctypedef fq_zech_ctx_struct fq_zech_ctx_t[1] - ctypedef struct fq_zech_mat_struct: - fq_zech_struct * entries - slong r - slong s - fq_zech_struct ** rows - ctypedef fq_zech_mat_struct fq_zech_mat_t[1] - - ctypedef struct fq_zech_poly_struct: - fq_zech_struct * coeffs - slong alloc - slong length - ctypedef fq_zech_poly_struct fq_zech_poly_t[1] - - # Parsed from here **********************************************/ - void fq_zech_ctx_init(fq_zech_ctx_t ctx, const fmpz_t p, slong d, const char *var) - int _fq_zech_ctx_init_conway(fq_zech_ctx_t ctx, const fmpz_t p, slong d, const char *var) - void fq_zech_ctx_init_conway(fq_zech_ctx_t ctx, const fmpz_t p, slong d, const char *var) - void fq_zech_ctx_init_random(fq_zech_ctx_t ctx, const fmpz_t p, slong d, const char *var) - void fq_zech_ctx_init_modulus(fq_zech_ctx_t ctx, nmod_poly_t modulus, const char *var) - int fq_zech_ctx_init_modulus_check(fq_zech_ctx_t ctx, nmod_poly_t modulus, const char *var) +cdef extern from "flint/fq_zech.h": + void fq_zech_ctx_init_ui(fq_zech_ctx_t ctx, ulong p, slong d, const char * var) + int _fq_zech_ctx_init_conway_ui(fq_zech_ctx_t ctx, ulong p, slong d, const char * var) + void fq_zech_ctx_init_conway_ui(fq_zech_ctx_t ctx, ulong p, slong d, const char * var) + void fq_zech_ctx_init_random_ui(fq_zech_ctx_t ctx, ulong p, slong d, const char * var) + void fq_zech_ctx_init_modulus(fq_zech_ctx_t ctx, const nmod_poly_t modulus, const char * var) + int fq_zech_ctx_init_modulus_check(fq_zech_ctx_t ctx, const nmod_poly_t modulus, const char * var) void fq_zech_ctx_init_fq_nmod_ctx(fq_zech_ctx_t ctx, fq_nmod_ctx_t ctxn) int fq_zech_ctx_init_fq_nmod_ctx_check(fq_zech_ctx_t ctx, fq_nmod_ctx_t ctxn) + void fq_zech_ctx_init_randtest(fq_zech_ctx_t ctx, flint_rand_t state, int type) + void fq_zech_ctx_init_randtest_reducible(fq_zech_ctx_t ctx, flint_rand_t state, int type) void fq_zech_ctx_clear(fq_zech_ctx_t ctx) - const nmod_poly_struct* fq_zech_ctx_modulus(const fq_zech_ctx_t ctx) - long fq_zech_ctx_degree(const fq_zech_ctx_t ctx) - fmpz_struct * fq_zech_ctx_prime(const fq_zech_ctx_t ctx) + const nmod_poly_struct * fq_zech_ctx_modulus(const fq_zech_ctx_t ctx) + slong fq_zech_ctx_degree(const fq_zech_ctx_t ctx) + ulong fq_zech_ctx_prime(const fq_zech_ctx_t ctx) void fq_zech_ctx_order(fmpz_t f, const fq_zech_ctx_t ctx) - mp_limb_t fq_zech_ctx_order_ui(const fq_zech_ctx_t ctx) + ulong fq_zech_ctx_order_ui(const fq_zech_ctx_t ctx) # int fq_zech_ctx_fprint(FILE * file, const fq_zech_ctx_t ctx) void fq_zech_ctx_print(const fq_zech_ctx_t ctx) - void fq_zech_ctx_randtest(fq_zech_ctx_t ctx) - void fq_zech_ctx_randtest_reducible(fq_zech_ctx_t ctx) void fq_zech_init(fq_zech_t rop, const fq_zech_ctx_t ctx) void fq_zech_init2(fq_zech_t rop, const fq_zech_ctx_t ctx) void fq_zech_clear(fq_zech_t rop, const fq_zech_ctx_t ctx) - void _fq_zech_sparse_reduce(mp_ptr R, slong lenR, const fq_zech_ctx_t ctx) - void _fq_zech_dense_reduce(mp_ptr R, slong lenR, const fq_zech_ctx_t ctx) - void _fq_zech_reduce(mp_ptr r, slong lenR, const fq_zech_ctx_t ctx) + void _fq_zech_sparse_reduce(nn_ptr R, slong lenR, const fq_zech_ctx_t ctx) + void _fq_zech_dense_reduce(nn_ptr R, slong lenR, const fq_zech_ctx_t ctx) + void _fq_zech_reduce(nn_ptr r, slong lenR, const fq_zech_ctx_t ctx) void fq_zech_reduce(fq_zech_t rop, const fq_zech_ctx_t ctx) void fq_zech_add(fq_zech_t rop, const fq_zech_t op1, const fq_zech_t op2, const fq_zech_ctx_t ctx) void fq_zech_sub(fq_zech_t rop, const fq_zech_t op1, const fq_zech_t op2, const fq_zech_ctx_t ctx) @@ -76,18 +42,18 @@ cdef extern from "flint/fq_zech.h": void fq_zech_mul_ui(fq_zech_t rop, const fq_zech_t op, ulong x, const fq_zech_ctx_t ctx) void fq_zech_sqr(fq_zech_t rop, const fq_zech_t op, const fq_zech_ctx_t ctx) void fq_zech_div(fq_zech_t rop, const fq_zech_t op1, const fq_zech_t op2, const fq_zech_ctx_t ctx) - void _fq_zech_inv(mp_ptr *rop, mp_srcptr *op, slong len, const fq_zech_ctx_t ctx) + void _fq_zech_inv(nn_ptr * rop, nn_srcptr * op, slong len, const fq_zech_ctx_t ctx) void fq_zech_inv(fq_zech_t rop, const fq_zech_t op, const fq_zech_ctx_t ctx) void fq_zech_gcdinv(fq_zech_t f, fq_zech_t inv, const fq_zech_t op, const fq_zech_ctx_t ctx) - void _fq_zech_pow(mp_ptr *rop, mp_srcptr *op, slong len, const fmpz_t e, const fq_zech_ctx_t ctx) + void _fq_zech_pow(fmpz_struct * rop, const fmpz_struct * op, slong len, const fmpz_t e, const fmpz_struct * a, const slong * j, slong lena, const fmpz_t p) void fq_zech_pow(fq_zech_t rop, const fq_zech_t op, const fmpz_t e, const fq_zech_ctx_t ctx) void fq_zech_pow_ui(fq_zech_t rop, const fq_zech_t op, const ulong e, const fq_zech_ctx_t ctx) - void fq_zech_sqrt(fq_zech_t rop, const fq_zech_t op1, const fq_zech_ctx_t ctx) + int fq_zech_sqrt(fq_zech_t rop, const fq_zech_t op1, const fq_zech_ctx_t ctx) void fq_zech_pth_root(fq_zech_t rop, const fq_zech_t op1, const fq_zech_ctx_t ctx) int fq_zech_is_square(const fq_zech_t op, const fq_zech_ctx_t ctx) - # int fq_zech_fprint_pretty(FILE *file, const fq_zech_t op, const fq_zech_ctx_t ctx) - int fq_zech_print_pretty(const fq_zech_t op, const fq_zech_ctx_t ctx) - # void fq_zech_fprint(FILE * file, const fq_zech_t op, const fq_zech_ctx_t ctx) + # int fq_zech_fprint_pretty(FILE * file, const fq_zech_t op, const fq_zech_ctx_t ctx) + void fq_zech_print_pretty(const fq_zech_t op, const fq_zech_ctx_t ctx) + # int fq_zech_fprint(FILE * file, const fq_zech_t op, const fq_zech_ctx_t ctx) void fq_zech_print(const fq_zech_t op, const fq_zech_ctx_t ctx) char * fq_zech_get_str(const fq_zech_t op, const fq_zech_ctx_t ctx) char * fq_zech_get_str_pretty(const fq_zech_t op, const fq_zech_ctx_t ctx) @@ -119,7 +85,7 @@ cdef extern from "flint/fq_zech.h": void fq_zech_trace(fmpz_t rop, const fq_zech_t op, const fq_zech_ctx_t ctx) void fq_zech_norm(fmpz_t rop, const fq_zech_t op, const fq_zech_ctx_t ctx) void fq_zech_frobenius(fq_zech_t rop, const fq_zech_t op, slong e, const fq_zech_ctx_t ctx) - int fq_zech_multiplicative_order(fmpz_t ord, const fq_zech_t op, const fq_zech_ctx_t ctx) + int fq_zech_multiplicative_order(fmpz_struct * ord, const fq_zech_t op, const fq_zech_ctx_t ctx) int fq_zech_is_primitive(const fq_zech_t op, const fq_zech_ctx_t ctx) void fq_zech_bit_pack(fmpz_t f, const fq_zech_t op, flint_bitcnt_t bit_size, const fq_zech_ctx_t ctx) void fq_zech_bit_unpack(fq_zech_t rop, const fmpz_t f, flint_bitcnt_t bit_size, const fq_zech_ctx_t ctx) diff --git a/src/flint/flintlib/fq_zech_mat.pxd b/src/flint/flintlib/functions/fq_zech_mat.pxd similarity index 95% rename from src/flint/flintlib/fq_zech_mat.pxd rename to src/flint/flintlib/functions/fq_zech_mat.pxd index ea840072..cfba589e 100644 --- a/src/flint/flintlib/fq_zech_mat.pxd +++ b/src/flint/flintlib/functions/fq_zech_mat.pxd @@ -1,10 +1,12 @@ -from flint.flintlib.fmpz_mod_mat cimport fmpz_mod_mat_t -from flint.flintlib.flint cimport slong, flint_rand_t -from flint.flintlib.nmod_mat cimport nmod_mat_t -from flint.flintlib.fq_zech cimport fq_zech_t, fq_zech_struct, fq_zech_ctx_t, fq_zech_mat_t, fq_zech_poly_t +from flint.flintlib.types.flint cimport flint_rand_t, slong +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_mat_t +from flint.flintlib.types.fq_zech cimport fq_zech_ctx_t, fq_zech_mat_t, fq_zech_poly_t, fq_zech_struct, fq_zech_t +from flint.flintlib.types.nmod cimport nmod_mat_t + +# unknown type FILE + cdef extern from "flint/fq_zech_mat.h": - # Parsed from here **********************************************/ void fq_zech_mat_init(fq_zech_mat_t mat, slong rows, slong cols, const fq_zech_ctx_t ctx) void fq_zech_mat_init_set(fq_zech_mat_t mat, const fq_zech_mat_t src, const fq_zech_ctx_t ctx) void fq_zech_mat_clear(fq_zech_mat_t mat, const fq_zech_ctx_t ctx) diff --git a/src/flint/flintlib/fq_zech_poly.pxd b/src/flint/flintlib/functions/fq_zech_poly.pxd similarity index 98% rename from src/flint/flintlib/fq_zech_poly.pxd rename to src/flint/flintlib/functions/fq_zech_poly.pxd index 4a88a150..9410a50b 100644 --- a/src/flint/flintlib/fq_zech_poly.pxd +++ b/src/flint/flintlib/functions/fq_zech_poly.pxd @@ -1,11 +1,12 @@ -from flint.flintlib.fmpz_mod_poly cimport fmpz_mod_poly_t -from flint.flintlib.flint cimport flint_rand_t, slong, ulong -from flint.flintlib.nmod_poly cimport nmod_poly_t -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.fq_zech cimport fq_zech_struct, fq_zech_t, fq_zech_ctx_t, fq_zech_mat_t, fq_zech_poly_t +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, slong, ulong +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_poly_t +from flint.flintlib.types.fq_zech cimport fq_zech_ctx_t, fq_zech_mat_t, fq_zech_poly_t, fq_zech_struct, fq_zech_t +from flint.flintlib.types.nmod cimport nmod_poly_t + +# unknown type FILE + cdef extern from "flint/fq_zech_poly.h": - # Parsed from here **********************************************/ void fq_zech_poly_init(fq_zech_poly_t poly, const fq_zech_ctx_t ctx) void fq_zech_poly_init2(fq_zech_poly_t poly, slong alloc, const fq_zech_ctx_t ctx) void fq_zech_poly_realloc(fq_zech_poly_t poly, slong alloc, const fq_zech_ctx_t ctx) diff --git a/src/flint/flintlib/fq_zech_poly_factor.pxd b/src/flint/flintlib/functions/fq_zech_poly_factor.pxd similarity index 86% rename from src/flint/flintlib/fq_zech_poly_factor.pxd rename to src/flint/flintlib/functions/fq_zech_poly_factor.pxd index 106c5788..cec3bcb2 100644 --- a/src/flint/flintlib/fq_zech_poly_factor.pxd +++ b/src/flint/flintlib/functions/fq_zech_poly_factor.pxd @@ -1,17 +1,9 @@ -from flint.flintlib.flint cimport flint_rand_t, slong, ulong -from flint.flintlib.fq_zech cimport fq_zech_ctx_t, fq_zech_t, fq_zech_struct -from flint.flintlib.fq_zech cimport fq_zech_poly_struct, fq_zech_poly_t +from flint.flintlib.types.flint cimport flint_rand_t, slong, ulong +from flint.flintlib.types.fq_zech cimport fq_zech_ctx_t, fq_zech_poly_factor_t, fq_zech_poly_t, fq_zech_struct, fq_zech_t + -cdef extern from "flint/fq_zech_poly_factor.h": - # Type definitions **********************************************/ - ctypedef struct fq_zech_poly_factor_struct: - fq_zech_poly_struct * poly - slong * exp - slong num - slong alloc - ctypedef fq_zech_poly_factor_struct fq_zech_poly_factor_t[1] - # Parsed from here **********************************************/ +cdef extern from "flint/fq_zech_poly_factor.h": void fq_zech_poly_factor_init(fq_zech_poly_factor_t fac, const fq_zech_ctx_t ctx) void fq_zech_poly_factor_clear(fq_zech_poly_factor_t fac, const fq_zech_ctx_t ctx) void fq_zech_poly_factor_realloc(fq_zech_poly_factor_t fac, slong alloc, const fq_zech_ctx_t ctx) diff --git a/src/flint/flintlib/mag.pxd b/src/flint/flintlib/functions/mag.pxd similarity index 94% rename from src/flint/flintlib/mag.pxd rename to src/flint/flintlib/functions/mag.pxd index a426ef5e..66a8a5c4 100644 --- a/src/flint/flintlib/mag.pxd +++ b/src/flint/flintlib/functions/mag.pxd @@ -1,11 +1,11 @@ -from flint.flintlib.flint cimport ulong, mp_limb_t, slong, flint_rand_t -from flint.flintlib.fmpz cimport fmpz_struct, fmpz_t -from flint.flintlib.fmpq cimport fmpq_struct, fmpq_t -from flint.flintlib.arb_types cimport mag_t, mag_ptr +from flint.flintlib.types.arb cimport mag_ptr, mag_t +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, slong, ulong +from flint.flintlib.types.fmpq cimport fmpq_t + +# unknown type FILE -cdef extern from "flint/mag.h": -# from here on is parsed +cdef extern from "flint/mag.h": void mag_init(mag_t x) void mag_clear(mag_t x) void mag_swap(mag_t x, mag_t y) @@ -22,7 +22,6 @@ cdef extern from "flint/mag.h": void mag_init_set(mag_t res, const mag_t x) void mag_set(mag_t res, const mag_t x) void mag_set_d(mag_t res, double x) - # void mag_set_fmpr(mag_t res, const fmpr_t x) void mag_set_ui(mag_t res, ulong x) void mag_set_fmpz(mag_t res, const fmpz_t x) void mag_set_d_lower(mag_t res, double x) @@ -35,7 +34,6 @@ cdef extern from "flint/mag.h": void mag_set_fmpz_2exp_fmpz_lower(mag_t res, const fmpz_t x, const fmpz_t y) double mag_get_d(const mag_t x) double mag_get_d_log2_approx(const mag_t x) - # void mag_get_fmpr(fmpr_t res, const mag_t x) void mag_get_fmpq(fmpq_t res, const mag_t x) void mag_get_fmpz(fmpz_t res, const mag_t x) void mag_get_fmpz_lower(fmpz_t res, const mag_t x) @@ -45,8 +43,11 @@ cdef extern from "flint/mag.h": void mag_min(mag_t res, const mag_t x, const mag_t y) void mag_max(mag_t res, const mag_t x, const mag_t y) void mag_print(const mag_t x) + # void mag_fprint(FILE * file, const mag_t x) char * mag_dump_str(const mag_t x) int mag_load_str(mag_t x, const char * str) + # int mag_dump_file(FILE * stream, const mag_t x) + # int mag_load_file(mag_t x, FILE * stream) void mag_randtest(mag_t res, flint_rand_t state, slong expbits) void mag_randtest_special(mag_t res, flint_rand_t state, slong expbits) void mag_add(mag_t res, const mag_t x, const mag_t y) diff --git a/src/flint/flintlib/functions/mpoly.pxd b/src/flint/flintlib/functions/mpoly.pxd new file mode 100644 index 00000000..632453be --- /dev/null +++ b/src/flint/flintlib/functions/mpoly.pxd @@ -0,0 +1,63 @@ +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, slong, ulong +from flint.flintlib.types.mpoly cimport mpoly_ctx_t, ordering_t + +# unknown type mpoly_heap1_s +# unknown type mpoly_heap_s + + +cdef extern from "flint/mpoly.h": + void mpoly_ctx_init(mpoly_ctx_t ctx, slong nvars, const ordering_t ord) + void mpoly_ctx_clear(mpoly_ctx_t mctx) + ordering_t mpoly_ordering_randtest(flint_rand_t state) + void mpoly_ctx_init_rand(mpoly_ctx_t mctx, flint_rand_t state, slong max_nvars) + int mpoly_ordering_isdeg(const mpoly_ctx_t ctx) + int mpoly_ordering_isrev(const mpoly_ctx_t cth) + void mpoly_ordering_print(ordering_t ord) + void mpoly_monomial_add(ulong * exp_ptr, const ulong * exp2, const ulong * exp3, slong N) + void mpoly_monomial_add_mp(ulong * exp_ptr, const ulong * exp2, const ulong * exp3, slong N) + void mpoly_monomial_sub(ulong * exp_ptr, const ulong * exp2, const ulong * exp3, slong N) + void mpoly_monomial_sub_mp(ulong * exp_ptr, const ulong * exp2, const ulong * exp3, slong N) + int mpoly_monomial_overflows(ulong * exp2, slong N, ulong mask) + int mpoly_monomial_overflows_mp(ulong * exp_ptr, slong N, flint_bitcnt_t bits) + int mpoly_monomial_overflows1(ulong exp, ulong mask) + void mpoly_monomial_set(ulong * exp2, const ulong * exp3, slong N) + void mpoly_monomial_swap(ulong * exp2, ulong * exp3, slong N) + void mpoly_monomial_mul_ui(ulong * exp2, const ulong * exp3, slong N, ulong c) + int mpoly_monomial_is_zero(const ulong * exp, slong N) + int mpoly_monomial_equal(const ulong * exp2, const ulong * exp3, slong N) + void mpoly_get_cmpmask(ulong * cmpmask, slong N, ulong bits, const mpoly_ctx_t mctx) + int mpoly_monomial_lt(const ulong * exp2, const ulong * exp3, slong N, const ulong * cmpmask) + int mpoly_monomial_gt(const ulong * exp2, const ulong * exp3, slong N, const ulong * cmpmask) + int mpoly_monomial_cmp(const ulong * exp2, const ulong * exp3, slong N, const ulong * cmpmask) + int mpoly_monomial_divides(ulong * exp_ptr, const ulong * exp2, const ulong * exp3, slong N, ulong mask) + int mpoly_monomial_divides_mp(ulong * exp_ptr, const ulong * exp2, const ulong * exp3, slong N, flint_bitcnt_t bits) + int mpoly_monomial_divides1(ulong * exp_ptr, const ulong exp2, const ulong exp3, ulong mask) + int mpoly_monomial_divides_tight(slong e1, slong e2, slong * prods, slong num) + flint_bitcnt_t mpoly_exp_bits_required_ui(const ulong * user_exp, const mpoly_ctx_t mctx) + flint_bitcnt_t mpoly_exp_bits_required_ffmpz(const fmpz_struct * user_exp, const mpoly_ctx_t mctx) + flint_bitcnt_t mpoly_exp_bits_required_pfmpz(fmpz_struct * const * user_exp, const mpoly_ctx_t mctx) + void mpoly_max_fields_ui_sp(ulong * max_fields, const ulong * poly_exps, slong len, ulong bits, const mpoly_ctx_t mctx) + void mpoly_max_fields_fmpz(fmpz_struct * max_fields, const ulong * poly_exps, slong len, ulong bits, const mpoly_ctx_t mctx) + void mpoly_max_degrees_tight(slong * max_exp, ulong * exps, slong len, slong * prods, slong num) + int mpoly_monomial_exists(slong * index, const ulong * poly_exps, const ulong * exp, slong len, slong N, const ulong * cmpmask) + void mpoly_search_monomials(slong ** e_ind, ulong * e, slong * e_score, slong * t1, slong * t2, slong * t3, slong lower, slong upper, const ulong * a, slong a_len, const ulong * b, slong b_len, slong N, const ulong * cmpmask) + int mpoly_term_exp_fits_ui(ulong * exps, ulong bits, slong n, const mpoly_ctx_t mctx) + int mpoly_term_exp_fits_si(ulong * exps, ulong bits, slong n, const mpoly_ctx_t mctx) + void mpoly_get_monomial_ui(ulong * exps, const ulong * poly_exps, ulong bits, const mpoly_ctx_t mctx) + void mpoly_get_monomial_ffmpz(fmpz_struct * exps, const ulong * poly_exps, flint_bitcnt_t bits, const mpoly_ctx_t mctx) + void mpoly_get_monomial_pfmpz(fmpz_struct ** exps, const ulong * poly_exps, flint_bitcnt_t bits, const mpoly_ctx_t mctx) + void mpoly_set_monomial_ui(ulong * exp1, const ulong * exp2, ulong bits, const mpoly_ctx_t mctx) + void mpoly_set_monomial_ffmpz(ulong * exp1, const fmpz_struct * exp2, flint_bitcnt_t bits, const mpoly_ctx_t mctx) + void mpoly_set_monomial_pfmpz(ulong * exp1, fmpz_struct * const * exp2, flint_bitcnt_t bits, const mpoly_ctx_t mctx) + void mpoly_pack_vec_ui(ulong * exp1, const ulong * exp2, ulong bits, slong nfields, slong len) + void mpoly_pack_vec_fmpz(ulong * exp1, const fmpz_struct * exp2, flint_bitcnt_t bits, slong nfields, slong len) + void mpoly_unpack_vec_ui(ulong * exp1, const ulong * exp2, ulong bits, slong nfields, slong len) + void mpoly_unpack_vec_fmpz(fmpz_struct * exp1, const ulong * exp2, flint_bitcnt_t bits, slong nfields, slong len) + int mpoly_repack_monomials(ulong * exps1, ulong bits1, const ulong * exps2, ulong bits2, slong len, const mpoly_ctx_t mctx) + void mpoly_pack_monomials_tight(ulong * exp1, const ulong * exp2, slong len, const slong * mults, slong num, slong bits) + void mpoly_unpack_monomials_tight(ulong * e1, ulong * e2, slong len, slong * mults, slong num, slong bits) + void mpoly_main_variable_terms1(slong * i1, slong * n1, const ulong * exp1, slong l1, slong len1, slong k, slong num, slong bits) + # int _mpoly_heap_insert(mpoly_heap_s * heap, ulong * exp, void * x, slong * next_loc, slong * heap_len, slong N, const ulong * cmpmask) + # void _mpoly_heap_insert1(mpoly_heap1_s * heap, ulong exp, void * x, slong * next_loc, slong * heap_len, ulong maskhi) + # void * _mpoly_heap_pop(mpoly_heap_s * heap, slong * heap_len, slong N, const ulong * cmpmask) + # void * _mpoly_heap_pop1(mpoly_heap1_s * heap, slong * heap_len, ulong maskhi) diff --git a/src/flint/flintlib/functions/nmod.pxd b/src/flint/flintlib/functions/nmod.pxd new file mode 100644 index 00000000..895507be --- /dev/null +++ b/src/flint/flintlib/functions/nmod.pxd @@ -0,0 +1,33 @@ +from flint.flintlib.types.flint cimport fmpz_t, nmod_t, ulong + +# unknown type nmod_discrete_log_pohlig_hellman_t + +# .. macro:: NMOD_BITS(mod) +# .. macro:: NMOD_CAN_USE_SHOUP(mod) +# .. macro:: NMOD_RED2(r, a_hi, a_lo, mod) +# .. macro:: NMOD_RED(r, a, mod) +# .. macro:: NMOD2_RED2(r, a_hi, a_lo, mod) +# .. macro:: NMOD_RED3(r, a_hi, a_me, a_lo, mod) +# .. macro:: NMOD_MUL_PRENORM(res, a, b, mod) +# .. macro:: NMOD_MUL_FULLWORD(res, a, b, mod) +# .. macro:: NMOD_ADDMUL(r, a, b, mod) + +cdef extern from "flint/nmod.h": + void nmod_init(nmod_t * mod, ulong n) + ulong _nmod_add(ulong a, ulong b, nmod_t mod) + ulong nmod_add(ulong a, ulong b, nmod_t mod) + ulong _nmod_sub(ulong a, ulong b, nmod_t mod) + ulong nmod_sub(ulong a, ulong b, nmod_t mod) + ulong nmod_neg(ulong a, nmod_t mod) + ulong nmod_mul(ulong a, ulong b, nmod_t mod) + ulong _nmod_mul_fullword(ulong a, ulong b, nmod_t mod) + ulong nmod_inv(ulong a, nmod_t mod) + ulong nmod_div(ulong a, ulong b, nmod_t mod) + int nmod_divides(ulong * a, ulong b, ulong c, nmod_t mod) + ulong nmod_pow_ui(ulong a, ulong e, nmod_t mod) + ulong nmod_pow_fmpz(ulong a, const fmpz_t e, nmod_t mod) + # void nmod_discrete_log_pohlig_hellman_init(nmod_discrete_log_pohlig_hellman_t L) + # void nmod_discrete_log_pohlig_hellman_clear(nmod_discrete_log_pohlig_hellman_t L) + # double nmod_discrete_log_pohlig_hellman_precompute_prime(nmod_discrete_log_pohlig_hellman_t L, ulong p) + # ulong nmod_discrete_log_pohlig_hellman_primitive_root(const nmod_discrete_log_pohlig_hellman_t L) + # ulong nmod_discrete_log_pohlig_hellman_run(const nmod_discrete_log_pohlig_hellman_t L, ulong y) diff --git a/src/flint/flintlib/nmod_mat.pxd b/src/flint/flintlib/functions/nmod_mat.pxd similarity index 59% rename from src/flint/flintlib/nmod_mat.pxd rename to src/flint/flintlib/functions/nmod_mat.pxd index cbfe3337..25033c9b 100644 --- a/src/flint/flintlib/nmod_mat.pxd +++ b/src/flint/flintlib/functions/nmod_mat.pxd @@ -1,58 +1,53 @@ -from flint.flintlib.flint cimport mp_limb_t, flint_rand_t, mp_ptr -from flint.flintlib.flint cimport mp_srcptr, slong, ulong -from flint.flintlib.nmod cimport nmod_t -from flint.flintlib.nmod_poly cimport nmod_poly_t -from flint.flintlib.fmpz cimport fmpz_t +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, nn_ptr, nn_srcptr, slong, ulong +from flint.flintlib.types.nmod cimport nmod_mat_t, nmod_poly_t -cdef extern from "flint/nmod_mat.h": - ctypedef struct nmod_mat_struct: - mp_limb_t * entries - long r - long c - mp_limb_t ** rows - nmod_t mod - ctypedef nmod_mat_struct nmod_mat_t[1] +# unknown type FILE +# unknown type thread_pool_handle + +# .. macro:: nmod_mat_entry(mat, i, j) -# from here on is parsed - void nmod_mat_init(nmod_mat_t mat, slong rows, slong cols, mp_limb_t n) - void nmod_mat_init_set(nmod_mat_t mat, nmod_mat_t src) +cdef extern from "flint/nmod_mat.h": + void nmod_mat_init(nmod_mat_t mat, slong rows, slong cols, ulong n) + void nmod_mat_init_set(nmod_mat_t mat, const nmod_mat_t src) void nmod_mat_clear(nmod_mat_t mat) - void nmod_mat_set(nmod_mat_t mat, nmod_mat_t src) + void nmod_mat_set(nmod_mat_t mat, const nmod_mat_t src) void nmod_mat_swap(nmod_mat_t mat1, nmod_mat_t mat2) void nmod_mat_swap_entrywise(nmod_mat_t mat1, nmod_mat_t mat2) - mp_limb_t nmod_mat_entry(nmod_mat_t mat, long i, long j) - # MACRO nmod_mat_entry(nmod_mat_t mat, slong i, slong j) - mp_limb_t nmod_mat_get_entry(const nmod_mat_t mat, slong i, slong j) - mp_limb_t * nmod_mat_entry_ptr(const nmod_mat_t mat, slong i, slong j) - void nmod_mat_set_entry(nmod_mat_t mat, slong i, slong j, mp_limb_t x) - slong nmod_mat_nrows(nmod_mat_t mat) - slong nmod_mat_ncols(nmod_mat_t mat) + ulong nmod_mat_get_entry(const nmod_mat_t mat, slong i, slong j) + ulong * nmod_mat_entry_ptr(const nmod_mat_t mat, slong i, slong j) + void nmod_mat_set_entry(nmod_mat_t mat, slong i, slong j, ulong x) + slong nmod_mat_nrows(const nmod_mat_t mat) + slong nmod_mat_ncols(const nmod_mat_t mat) void nmod_mat_zero(nmod_mat_t mat) - int nmod_mat_is_zero(nmod_mat_t mat) + int nmod_mat_is_zero(const nmod_mat_t mat) void nmod_mat_window_init(nmod_mat_t window, const nmod_mat_t mat, slong r1, slong c1, slong r2, slong c2) void nmod_mat_window_clear(nmod_mat_t window) void nmod_mat_concat_vertical(nmod_mat_t res, const nmod_mat_t mat1, const nmod_mat_t mat2) void nmod_mat_concat_horizontal(nmod_mat_t res, const nmod_mat_t mat1, const nmod_mat_t mat2) - void nmod_mat_print_pretty(nmod_mat_t mat) + void nmod_mat_print_pretty(const nmod_mat_t mat) + # int nmod_mat_fprint_pretty(FILE * file, const nmod_mat_t mat) + int nmod_mat_print(const nmod_mat_t mat) + # int nmod_mat_fprint(FILE * f, const nmod_mat_t mat) void nmod_mat_randtest(nmod_mat_t mat, flint_rand_t state) void nmod_mat_randfull(nmod_mat_t mat, flint_rand_t state) - int nmod_mat_randpermdiag(nmod_mat_t mat, mp_limb_t * diag, slong n, flint_rand_t state) - void nmod_mat_randrank(nmod_mat_t mat, slong rank, flint_rand_t state) - void nmod_mat_randops(nmod_mat_t mat, slong count, flint_rand_t state) + int nmod_mat_randpermdiag(nmod_mat_t mat, flint_rand_t state, nn_srcptr diag, slong n) + void nmod_mat_randrank(nmod_mat_t mat, flint_rand_t state, slong rank) + void nmod_mat_randops(nmod_mat_t mat, flint_rand_t state, slong count) void nmod_mat_randtril(nmod_mat_t mat, flint_rand_t state, int unit) void nmod_mat_randtriu(nmod_mat_t mat, flint_rand_t state, int unit) - int nmod_mat_equal(nmod_mat_t mat1, nmod_mat_t mat2) + int nmod_mat_equal(const nmod_mat_t mat1, const nmod_mat_t mat2) int nmod_mat_is_zero_row(const nmod_mat_t mat, slong i) - void nmod_mat_transpose(nmod_mat_t B, nmod_mat_t A) + void nmod_mat_transpose(nmod_mat_t B, const nmod_mat_t A) void nmod_mat_swap_rows(nmod_mat_t mat, slong * perm, slong r, slong s) void nmod_mat_swap_cols(nmod_mat_t mat, slong * perm, slong r, slong s) void nmod_mat_invert_rows(nmod_mat_t mat, slong * perm) void nmod_mat_invert_cols(nmod_mat_t mat, slong * perm) - void nmod_mat_add(nmod_mat_t C, nmod_mat_t A, nmod_mat_t B) - void nmod_mat_sub(nmod_mat_t C, nmod_mat_t A, nmod_mat_t B) - void nmod_mat_neg(nmod_mat_t A, nmod_mat_t B) - void nmod_mat_scalar_mul(nmod_mat_t B, const nmod_mat_t A, mp_limb_t c) - void nmod_mat_scalar_addmul_ui(nmod_mat_t dest, const nmod_mat_t X, const nmod_mat_t Y, const mp_limb_t b) + void nmod_mat_permute_rows(nmod_mat_t mat, const slong * perm_act, slong * perm_store) + void nmod_mat_add(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) + void nmod_mat_sub(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) + void nmod_mat_neg(nmod_mat_t A, const nmod_mat_t B) + void nmod_mat_scalar_mul(nmod_mat_t B, const nmod_mat_t A, ulong c) + void nmod_mat_scalar_addmul_ui(nmod_mat_t dest, const nmod_mat_t X, const nmod_mat_t Y, const ulong b) void nmod_mat_scalar_mul_fmpz(nmod_mat_t res, const nmod_mat_t M, const fmpz_t c) void nmod_mat_mul(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) void _nmod_mat_mul_classical_op(nmod_mat_t D, const nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B, int op) @@ -64,27 +59,27 @@ cdef extern from "flint/nmod_mat.h": int nmod_mat_mul_blas(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) void nmod_mat_addmul(nmod_mat_t D, const nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) void nmod_mat_submul(nmod_mat_t D, const nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) - void nmod_mat_mul_nmod_vec(mp_limb_t * c, const nmod_mat_t A, const mp_limb_t * b, slong blen) - void nmod_mat_mul_nmod_vec_ptr(mp_limb_t * const * c, const nmod_mat_t A, const mp_limb_t * const * b, slong blen) - void nmod_mat_nmod_vec_mul(mp_limb_t * c, const mp_limb_t * a, slong alen, const nmod_mat_t B) - void nmod_mat_nmod_vec_mul_ptr(mp_limb_t * const * c, const mp_limb_t * const * a, slong alen, const nmod_mat_t B) + void nmod_mat_mul_nmod_vec(ulong * c, const nmod_mat_t A, const ulong * b, slong blen) + void nmod_mat_mul_nmod_vec_ptr(ulong * const * c, const nmod_mat_t A, const ulong * const * b, slong blen) + void nmod_mat_nmod_vec_mul(ulong * c, const ulong * a, slong alen, const nmod_mat_t B) + void nmod_mat_nmod_vec_mul_ptr(ulong * const * c, const ulong * const * a, slong alen, const nmod_mat_t B) void _nmod_mat_pow(nmod_mat_t dest, const nmod_mat_t mat, ulong pow) - void nmod_mat_pow(nmod_mat_t dest, nmod_mat_t mat, ulong pow) - mp_limb_t nmod_mat_trace(const nmod_mat_t mat) - mp_limb_t nmod_mat_det_howell(const nmod_mat_t A) - mp_limb_t nmod_mat_det(const nmod_mat_t A) + void nmod_mat_pow(nmod_mat_t dest, const nmod_mat_t mat, ulong pow) + ulong nmod_mat_trace(const nmod_mat_t mat) + ulong nmod_mat_det_howell(const nmod_mat_t A) + ulong nmod_mat_det(const nmod_mat_t A) slong nmod_mat_rank(const nmod_mat_t A) - int nmod_mat_inv(nmod_mat_t B, nmod_mat_t A) + int nmod_mat_inv(nmod_mat_t B, const nmod_mat_t A) void nmod_mat_solve_tril(nmod_mat_t X, const nmod_mat_t L, const nmod_mat_t B, int unit) void nmod_mat_solve_tril_classical(nmod_mat_t X, const nmod_mat_t L, const nmod_mat_t B, int unit) void nmod_mat_solve_tril_recursive(nmod_mat_t X, const nmod_mat_t L, const nmod_mat_t B, int unit) void nmod_mat_solve_triu(nmod_mat_t X, const nmod_mat_t U, const nmod_mat_t B, int unit) void nmod_mat_solve_triu_classical(nmod_mat_t X, const nmod_mat_t U, const nmod_mat_t B, int unit) void nmod_mat_solve_triu_recursive(nmod_mat_t X, const nmod_mat_t U, const nmod_mat_t B, int unit) - int nmod_mat_solve(nmod_mat_t X, nmod_mat_t A, nmod_mat_t B) + int nmod_mat_solve(nmod_mat_t X, const nmod_mat_t A, const nmod_mat_t B) int nmod_mat_can_solve_inner(slong * rank, slong * perm, slong * pivots, nmod_mat_t X, const nmod_mat_t A, const nmod_mat_t B) - int nmod_mat_can_solve(nmod_mat_t X, nmod_mat_t A, nmod_mat_t B) - int nmod_mat_solve_vec(mp_limb_t * x, nmod_mat_t A, mp_limb_t * b) + int nmod_mat_can_solve(nmod_mat_t X, const nmod_mat_t A, const nmod_mat_t B) + int nmod_mat_solve_vec(nn_ptr x, const nmod_mat_t A, nn_srcptr b) slong nmod_mat_lu(slong * P, nmod_mat_t A, int rank_check) slong nmod_mat_lu_classical(slong * P, nmod_mat_t A, int rank_check) slong nmod_mat_lu_classical_delayed(slong * P, nmod_mat_t A, int rank_check) @@ -99,5 +94,3 @@ cdef extern from "flint/nmod_mat.h": void nmod_mat_minpoly(nmod_poly_t p, const nmod_mat_t M) void nmod_mat_strong_echelon_form(nmod_mat_t A) slong nmod_mat_howell_form(nmod_mat_t A) - # not in doc - int nmod_mat_is_square(nmod_mat_t mat) diff --git a/src/flint/flintlib/nmod_mpoly.pxd b/src/flint/flintlib/functions/nmod_mpoly.pxd similarity index 92% rename from src/flint/flintlib/nmod_mpoly.pxd rename to src/flint/flintlib/functions/nmod_mpoly.pxd index 4185c3b1..973a1cfe 100644 --- a/src/flint/flintlib/nmod_mpoly.pxd +++ b/src/flint/flintlib/functions/nmod_mpoly.pxd @@ -1,39 +1,15 @@ -from flint.flintlib.flint cimport fmpz_struct, flint_rand_t, mp_limb_t, slong, ulong, flint_bitcnt_t, nmod_t -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.mpoly cimport mpoly_ctx_t, ordering_t -from flint.flintlib.nmod_poly cimport nmod_poly_struct, nmod_poly_t +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, slong, ulong +from flint.flintlib.types.mpoly cimport ordering_t +from flint.flintlib.types.nmod cimport nmod_mpoly_ctx_t, nmod_mpoly_struct, nmod_mpoly_t, nmod_mpoly_univar_t, nmod_poly_struct, nmod_poly_t +# unknown type FILE -cdef extern from "flint/nmod_mpoly.h": - ctypedef struct nmod_mpoly_struct: - mp_limb_t * coeffs - ulong * exps - slong length - flint_bitcnt_t bits - slong coeffs_alloc - slong exps_alloc - - ctypedef nmod_mpoly_struct nmod_mpoly_t[1] - - ctypedef struct nmod_mpoly_ctx_struct: - mpoly_ctx_t minfo - nmod_t mod - - ctypedef nmod_mpoly_ctx_struct nmod_mpoly_ctx_t[1] - ctypedef struct nmod_mpoly_univar_struct: - nmod_mpoly_struct * coeffs - fmpz_struct * exps - slong alloc - slong length - - ctypedef nmod_mpoly_univar_struct nmod_mpoly_univar_t[1] - -# from here on is parsed - void nmod_mpoly_ctx_init(nmod_mpoly_ctx_t ctx, slong nvars, const ordering_t ord, mp_limb_t n) +cdef extern from "flint/nmod_mpoly.h": + void nmod_mpoly_ctx_init(nmod_mpoly_ctx_t ctx, slong nvars, const ordering_t ord, ulong n) slong nmod_mpoly_ctx_nvars(const nmod_mpoly_ctx_t ctx) ordering_t nmod_mpoly_ctx_ord(const nmod_mpoly_ctx_t ctx) - mp_limb_t nmod_mpoly_ctx_modulus(const nmod_mpoly_ctx_t ctx) + ulong nmod_mpoly_ctx_modulus(const nmod_mpoly_ctx_t ctx) void nmod_mpoly_ctx_clear(nmod_mpoly_ctx_t ctx) void nmod_mpoly_init(nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) void nmod_mpoly_init2(nmod_mpoly_t A, slong alloc, const nmod_mpoly_ctx_t ctx) @@ -75,7 +51,7 @@ cdef extern from "flint/nmod_mpoly.h": void nmod_mpoly_set_coeff_ui_ui(nmod_mpoly_t A, ulong c, const ulong * exp, const nmod_mpoly_ctx_t ctx) void nmod_mpoly_get_coeff_vars_ui(nmod_mpoly_t C, const nmod_mpoly_t A, const slong * vars, const ulong * exps, slong length, const nmod_mpoly_ctx_t ctx) int nmod_mpoly_cmp(const nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) - mp_limb_t * nmod_mpoly_term_coeff_ref(nmod_mpoly_t A, slong i, const nmod_mpoly_ctx_t ctx) + ulong * nmod_mpoly_term_coeff_ref(nmod_mpoly_t A, slong i, const nmod_mpoly_ctx_t ctx) int nmod_mpoly_is_canonical(const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) slong nmod_mpoly_length(const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) void nmod_mpoly_resize(nmod_mpoly_t A, slong new_length, const nmod_mpoly_ctx_t ctx) @@ -100,7 +76,7 @@ cdef extern from "flint/nmod_mpoly.h": void nmod_mpoly_reverse(nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) void nmod_mpoly_randtest_bound(nmod_mpoly_t A, flint_rand_t state, slong length, ulong exp_bound, const nmod_mpoly_ctx_t ctx) void nmod_mpoly_randtest_bounds(nmod_mpoly_t A, flint_rand_t state, slong length, ulong * exp_bounds, const nmod_mpoly_ctx_t ctx) - void nmod_mpoly_randtest_bits(nmod_mpoly_t A, flint_rand_t state, slong length, mp_limb_t exp_bits, const nmod_mpoly_ctx_t ctx) + void nmod_mpoly_randtest_bits(nmod_mpoly_t A, flint_rand_t state, slong length, ulong exp_bits, const nmod_mpoly_ctx_t ctx) void nmod_mpoly_add_ui(nmod_mpoly_t A, const nmod_mpoly_t B, ulong c, const nmod_mpoly_ctx_t ctx) void nmod_mpoly_sub_ui(nmod_mpoly_t A, const nmod_mpoly_t B, ulong c, const nmod_mpoly_ctx_t ctx) void nmod_mpoly_add(nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_t C, const nmod_mpoly_ctx_t ctx) diff --git a/src/flint/flintlib/nmod_mpoly_factor.pxd b/src/flint/flintlib/functions/nmod_mpoly_factor.pxd similarity index 72% rename from src/flint/flintlib/nmod_mpoly_factor.pxd rename to src/flint/flintlib/functions/nmod_mpoly_factor.pxd index 5e6fefcd..01a05625 100644 --- a/src/flint/flintlib/nmod_mpoly_factor.pxd +++ b/src/flint/flintlib/functions/nmod_mpoly_factor.pxd @@ -1,18 +1,9 @@ -from flint.flintlib.nmod_mpoly cimport nmod_mpoly_ctx_t, nmod_mpoly_struct, nmod_mpoly_t -from flint.flintlib.flint cimport slong, ulong, mp_limb_t -from flint.flintlib.fmpz cimport fmpz_struct +from flint.flintlib.types.flint cimport slong, ulong +from flint.flintlib.types.nmod cimport nmod_mpoly_ctx_t, nmod_mpoly_factor_t, nmod_mpoly_t -cdef extern from "flint/nmod_mpoly_factor.h": - ctypedef struct nmod_mpoly_factor_struct: - mp_limb_t constant - nmod_mpoly_struct * poly - fmpz_struct * exp - slong num - slong alloc - - ctypedef nmod_mpoly_factor_struct nmod_mpoly_factor_t[1] +cdef extern from "flint/nmod_mpoly_factor.h": void nmod_mpoly_factor_init(nmod_mpoly_factor_t f, const nmod_mpoly_ctx_t ctx) void nmod_mpoly_factor_clear(nmod_mpoly_factor_t f, const nmod_mpoly_ctx_t ctx) void nmod_mpoly_factor_swap(nmod_mpoly_factor_t f, nmod_mpoly_factor_t g, const nmod_mpoly_ctx_t ctx) diff --git a/src/flint/flintlib/functions/nmod_poly.pxd b/src/flint/flintlib/functions/nmod_poly.pxd new file mode 100644 index 00000000..67f652c7 --- /dev/null +++ b/src/flint/flintlib/functions/nmod_poly.pxd @@ -0,0 +1,335 @@ +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_t, nmod_t, nn_ptr, nn_srcptr, slong, ulong +from flint.flintlib.types.nmod cimport nmod_mat_t, nmod_poly_struct, nmod_poly_t + +# unknown type FILE +# unknown type nmod_berlekamp_massey_t +# unknown type nmod_poly_multi_crt_t +# unknown type thread_pool_handle + + +cdef extern from "flint/nmod_poly.h": + void nmod_poly_init(nmod_poly_t poly, ulong n) + void nmod_poly_init_preinv(nmod_poly_t poly, ulong n, ulong ninv) + void nmod_poly_init_mod(nmod_poly_t poly, const nmod_t mod) + void nmod_poly_init2(nmod_poly_t poly, ulong n, slong alloc) + void nmod_poly_init2_preinv(nmod_poly_t poly, ulong n, ulong ninv, slong alloc) + void nmod_poly_realloc(nmod_poly_t poly, slong alloc) + void nmod_poly_clear(nmod_poly_t poly) + void nmod_poly_fit_length(nmod_poly_t poly, slong alloc) + void _nmod_poly_normalise(nmod_poly_t poly) + slong nmod_poly_length(const nmod_poly_t poly) + slong nmod_poly_degree(const nmod_poly_t poly) + ulong nmod_poly_modulus(const nmod_poly_t poly) + flint_bitcnt_t nmod_poly_max_bits(const nmod_poly_t poly) + int nmod_poly_is_unit(const nmod_poly_t poly) + int nmod_poly_is_monic(const nmod_poly_t poly) + void nmod_poly_set(nmod_poly_t a, const nmod_poly_t b) + void nmod_poly_swap(nmod_poly_t poly1, nmod_poly_t poly2) + void nmod_poly_zero(nmod_poly_t res) + void nmod_poly_truncate(nmod_poly_t poly, slong len) + void nmod_poly_set_trunc(nmod_poly_t res, const nmod_poly_t poly, slong len) + void _nmod_poly_reverse(nn_ptr output, nn_srcptr input, slong len, slong m) + void nmod_poly_reverse(nmod_poly_t output, const nmod_poly_t input, slong m) + void nmod_poly_randtest(nmod_poly_t poly, flint_rand_t state, slong len) + void nmod_poly_randtest_irreducible(nmod_poly_t poly, flint_rand_t state, slong len) + void nmod_poly_randtest_monic(nmod_poly_t poly, flint_rand_t state, slong len) + void nmod_poly_randtest_monic_irreducible(nmod_poly_t poly, flint_rand_t state, slong len) + void nmod_poly_randtest_monic_primitive(nmod_poly_t poly, flint_rand_t state, slong len) + void nmod_poly_randtest_trinomial(nmod_poly_t poly, flint_rand_t state, slong len) + int nmod_poly_randtest_trinomial_irreducible(nmod_poly_t poly, flint_rand_t state, slong len, slong max_attempts) + void nmod_poly_randtest_pentomial(nmod_poly_t poly, flint_rand_t state, slong len) + int nmod_poly_randtest_pentomial_irreducible(nmod_poly_t poly, flint_rand_t state, slong len, slong max_attempts) + void nmod_poly_randtest_sparse_irreducible(nmod_poly_t poly, flint_rand_t state, slong len) + ulong nmod_poly_get_coeff_ui(const nmod_poly_t poly, slong j) + void nmod_poly_set_coeff_ui(nmod_poly_t poly, slong j, ulong c) + char * nmod_poly_get_str(const nmod_poly_t poly) + char * nmod_poly_get_str_pretty(const nmod_poly_t poly, const char * x) + int nmod_poly_set_str(nmod_poly_t poly, const char * s) + int nmod_poly_print(const nmod_poly_t a) + int nmod_poly_print_pretty(const nmod_poly_t a, const char * x) + # int nmod_poly_fread(FILE * f, nmod_poly_t poly) + # int nmod_poly_fprint(FILE * f, const nmod_poly_t poly) + # int nmod_poly_fprint_pretty(FILE * f, const nmod_poly_t poly, const char * x) + int nmod_poly_read(nmod_poly_t poly) + int nmod_poly_equal(const nmod_poly_t a, const nmod_poly_t b) + int nmod_poly_equal_nmod(const nmod_poly_t poly, ulong cst) + int nmod_poly_equal_ui(const nmod_poly_t poly, ulong cst) + int nmod_poly_equal_trunc(const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) + int nmod_poly_is_zero(const nmod_poly_t poly) + int nmod_poly_is_one(const nmod_poly_t poly) + int nmod_poly_is_gen(const nmod_poly_t poly) + void _nmod_poly_shift_left(nn_ptr res, nn_srcptr poly, slong len, slong k) + void nmod_poly_shift_left(nmod_poly_t res, const nmod_poly_t poly, slong k) + void _nmod_poly_shift_right(nn_ptr res, nn_srcptr poly, slong len, slong k) + void nmod_poly_shift_right(nmod_poly_t res, const nmod_poly_t poly, slong k) + void _nmod_poly_add(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, nmod_t mod) + void nmod_poly_add(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) + void nmod_poly_add_series(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) + void _nmod_poly_sub(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, nmod_t mod) + void nmod_poly_sub(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) + void nmod_poly_sub_series(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) + void nmod_poly_neg(nmod_poly_t res, const nmod_poly_t poly) + void nmod_poly_scalar_mul_nmod(nmod_poly_t res, const nmod_poly_t poly, ulong c) + void nmod_poly_scalar_addmul_nmod(nmod_poly_t res, const nmod_poly_t poly, ulong c) + void _nmod_poly_make_monic(nn_ptr output, nn_srcptr input, slong len, nmod_t mod) + void nmod_poly_make_monic(nmod_poly_t output, const nmod_poly_t input) + void _nmod_poly_bit_pack(nn_ptr res, nn_srcptr poly, slong len, flint_bitcnt_t bits) + void _nmod_poly_bit_unpack(nn_ptr res, slong len, nn_srcptr mpn, ulong bits, nmod_t mod) + void nmod_poly_bit_pack(fmpz_t f, const nmod_poly_t poly, flint_bitcnt_t bit_size) + void nmod_poly_bit_unpack(nmod_poly_t poly, const fmpz_t f, flint_bitcnt_t bit_size) + void _nmod_poly_KS2_pack1(nn_ptr res, nn_srcptr op, slong n, slong s, ulong b, ulong k, slong r) + void _nmod_poly_KS2_pack(nn_ptr res, nn_srcptr op, slong n, slong s, ulong b, ulong k, slong r) + void _nmod_poly_KS2_unpack1(nn_ptr res, nn_srcptr op, slong n, ulong b, ulong k) + void _nmod_poly_KS2_unpack2(nn_ptr res, nn_srcptr op, slong n, ulong b, ulong k) + void _nmod_poly_KS2_unpack3(nn_ptr res, nn_srcptr op, slong n, ulong b, ulong k) + void _nmod_poly_KS2_unpack(nn_ptr res, nn_srcptr op, slong n, ulong b, ulong k) + void _nmod_poly_KS2_reduce(nn_ptr res, slong s, nn_srcptr op, slong n, ulong w, nmod_t mod) + void _nmod_poly_KS2_recover_reduce1(nn_ptr res, slong s, nn_srcptr op1, nn_srcptr op2, slong n, ulong b, nmod_t mod) + void _nmod_poly_KS2_recover_reduce2(nn_ptr res, slong s, nn_srcptr op1, nn_srcptr op2, slong n, ulong b, nmod_t mod) + void _nmod_poly_KS2_recover_reduce2b(nn_ptr res, slong s, nn_srcptr op1, nn_srcptr op2, slong n, ulong b, nmod_t mod) + void _nmod_poly_KS2_recover_reduce3(nn_ptr res, slong s, nn_srcptr op1, nn_srcptr op2, slong n, ulong b, nmod_t mod) + void _nmod_poly_KS2_recover_reduce(nn_ptr res, slong s, nn_srcptr op1, nn_srcptr op2, slong n, ulong b, nmod_t mod) + void _nmod_poly_mul_classical(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, nmod_t mod) + void nmod_poly_mul_classical(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) + void _nmod_poly_mullow_classical(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, slong trunc, nmod_t mod) + void nmod_poly_mullow_classical(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong trunc) + void _nmod_poly_mulhigh_classical(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, slong start, nmod_t mod) + void nmod_poly_mulhigh_classical(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong start) + void _nmod_poly_mul_KS(nn_ptr out, nn_srcptr in1, slong len1, nn_srcptr in2, slong len2, flint_bitcnt_t bits, nmod_t mod) + void nmod_poly_mul_KS(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, flint_bitcnt_t bits) + void _nmod_poly_mul_KS2(nn_ptr res, nn_srcptr op1, slong n1, nn_srcptr op2, slong n2, nmod_t mod) + void nmod_poly_mul_KS2(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) + void _nmod_poly_mul_KS4(nn_ptr res, nn_srcptr op1, slong n1, nn_srcptr op2, slong n2, nmod_t mod) + void nmod_poly_mul_KS4(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) + void _nmod_poly_mullow_KS(nn_ptr out, nn_srcptr in1, slong len1, nn_srcptr in2, slong len2, flint_bitcnt_t bits, slong n, nmod_t mod) + void nmod_poly_mullow_KS(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, flint_bitcnt_t bits, slong n) + void _nmod_poly_mul(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, nmod_t mod) + void nmod_poly_mul(nmod_poly_t res, const nmod_poly_t poly, const nmod_poly_t poly2) + void _nmod_poly_mullow(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, slong n, nmod_t mod) + void nmod_poly_mullow(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong trunc) + void _nmod_poly_mulhigh(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, slong n, nmod_t mod) + void nmod_poly_mulhigh(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) + void _nmod_poly_mulmod(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, nn_srcptr f, slong lenf, nmod_t mod) + void nmod_poly_mulmod(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, const nmod_poly_t f) + void _nmod_poly_mulmod_preinv(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, nn_srcptr f, slong lenf, nn_srcptr finv, slong lenfinv, nmod_t mod) + void nmod_poly_mulmod_preinv(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, const nmod_poly_t f, const nmod_poly_t finv) + void _nmod_poly_pow_binexp(nn_ptr res, nn_srcptr poly, slong len, ulong e, nmod_t mod) + void nmod_poly_pow_binexp(nmod_poly_t res, const nmod_poly_t poly, ulong e) + void _nmod_poly_pow(nn_ptr res, nn_srcptr poly, slong len, ulong e, nmod_t mod) + void nmod_poly_pow(nmod_poly_t res, const nmod_poly_t poly, ulong e) + void _nmod_poly_pow_trunc_binexp(nn_ptr res, nn_srcptr poly, ulong e, slong trunc, nmod_t mod) + void nmod_poly_pow_trunc_binexp(nmod_poly_t res, const nmod_poly_t poly, ulong e, slong trunc) + void _nmod_poly_pow_trunc(nn_ptr res, nn_srcptr poly, ulong e, slong trunc, nmod_t mod) + void nmod_poly_pow_trunc(nmod_poly_t res, const nmod_poly_t poly, ulong e, slong trunc) + void _nmod_poly_powmod_ui_binexp(nn_ptr res, nn_srcptr poly, ulong e, nn_srcptr f, slong lenf, nmod_t mod) + void nmod_poly_powmod_ui_binexp(nmod_poly_t res, const nmod_poly_t poly, ulong e, const nmod_poly_t f) + void _nmod_poly_powmod_fmpz_binexp(nn_ptr res, nn_srcptr poly, fmpz_t e, nn_srcptr f, slong lenf, nmod_t mod) + void nmod_poly_powmod_fmpz_binexp(nmod_poly_t res, const nmod_poly_t poly, fmpz_t e, const nmod_poly_t f) + void _nmod_poly_powmod_ui_binexp_preinv (nn_ptr res, nn_srcptr poly, ulong e, nn_srcptr f, slong lenf, nn_srcptr finv, slong lenfinv, nmod_t mod) + void nmod_poly_powmod_ui_binexp_preinv(nmod_poly_t res, const nmod_poly_t poly, ulong e, const nmod_poly_t f, const nmod_poly_t finv) + void _nmod_poly_powmod_fmpz_binexp_preinv (nn_ptr res, nn_srcptr poly, fmpz_t e, nn_srcptr f, slong lenf, nn_srcptr finv, slong lenfinv, nmod_t mod) + void nmod_poly_powmod_fmpz_binexp_preinv(nmod_poly_t res, const nmod_poly_t poly, fmpz_t e, const nmod_poly_t f, const nmod_poly_t finv) + void _nmod_poly_powmod_x_ui_preinv (nn_ptr res, ulong e, nn_srcptr f, slong lenf, nn_srcptr finv, slong lenfinv, nmod_t mod) + void nmod_poly_powmod_x_ui_preinv(nmod_poly_t res, ulong e, const nmod_poly_t f, const nmod_poly_t finv) + void _nmod_poly_powmod_x_fmpz_preinv (nn_ptr res, fmpz_t e, nn_srcptr f, slong lenf, nn_srcptr finv, slong lenfinv, nmod_t mod) + void nmod_poly_powmod_x_fmpz_preinv(nmod_poly_t res, fmpz_t e, const nmod_poly_t f, const nmod_poly_t finv) + void _nmod_poly_powers_mod_preinv_naive(nn_ptr * res, nn_srcptr f, slong flen, slong n, nn_srcptr g, slong glen, nn_srcptr ginv, slong ginvlen, const nmod_t mod) + void nmod_poly_powers_mod_naive(nmod_poly_struct * res, const nmod_poly_t f, slong n, const nmod_poly_t g) + # void _nmod_poly_powers_mod_preinv_threaded_pool(nn_ptr * res, nn_srcptr f, slong flen, slong n, nn_srcptr g, slong glen, nn_srcptr ginv, slong ginvlen, const nmod_t mod, thread_pool_handle * threads, slong num_threads) + void _nmod_poly_powers_mod_preinv_threaded(nn_ptr * res, nn_srcptr f, slong flen, slong n, nn_srcptr g, slong glen, nn_srcptr ginv, slong ginvlen, const nmod_t mod) + void nmod_poly_powers_mod_bsgs(nmod_poly_struct * res, const nmod_poly_t f, slong n, const nmod_poly_t g) + void _nmod_poly_divrem_basecase(nn_ptr Q, nn_ptr R, nn_srcptr A, slong A_len, nn_srcptr B, slong B_len, nmod_t mod) + void nmod_poly_divrem_basecase(nmod_poly_t Q, nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B) + void _nmod_poly_divrem(nn_ptr Q, nn_ptr R, nn_srcptr A, slong lenA, nn_srcptr B, slong lenB, nmod_t mod) + void nmod_poly_divrem(nmod_poly_t Q, nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B) + void _nmod_poly_div(nn_ptr Q, nn_srcptr A, slong lenA, nn_srcptr B, slong lenB, nmod_t mod) + void nmod_poly_div(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) + void _nmod_poly_rem_q1(nn_ptr R, nn_srcptr A, slong lenA, nn_srcptr B, slong lenB, nmod_t mod) + void _nmod_poly_rem(nn_ptr R, nn_srcptr A, slong lenA, nn_srcptr B, slong lenB, nmod_t mod) + void nmod_poly_rem(nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B) + void _nmod_poly_divexact(nn_ptr Q, nn_srcptr A, slong lenA, nn_srcptr B, slong lenB, nmod_t mod) + void nmod_poly_divexact(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) + void _nmod_poly_inv_series_basecase(nn_ptr Qinv, nn_srcptr Q, slong Qlen, slong n, nmod_t mod) + void nmod_poly_inv_series_basecase(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) + void _nmod_poly_inv_series_newton(nn_ptr Qinv, nn_srcptr Q, slong Qlen, slong n, nmod_t mod) + void nmod_poly_inv_series_newton(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) + void _nmod_poly_inv_series(nn_ptr Qinv, nn_srcptr Q, slong Qlen, slong n, nmod_t mod) + void nmod_poly_inv_series(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) + void _nmod_poly_div_series_basecase(nn_ptr Q, nn_srcptr A, slong Alen, nn_srcptr B, slong Blen, slong n, nmod_t mod) + void nmod_poly_div_series_basecase(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B, slong n) + void _nmod_poly_div_series(nn_ptr Q, nn_srcptr A, slong Alen, nn_srcptr B, slong Blen, slong n, nmod_t mod) + void nmod_poly_div_series(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B, slong n) + void _nmod_poly_div_newton_n_preinv (nn_ptr Q, nn_srcptr A, slong lenA, nn_srcptr B, slong lenB, nn_srcptr Binv, slong lenBinv, nmod_t mod) + void nmod_poly_div_newton_n_preinv (nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B, const nmod_poly_t Binv) + void _nmod_poly_divrem_newton_n_preinv (nn_ptr Q, nn_ptr R, nn_srcptr A, slong lenA, nn_srcptr B, slong lenB, nn_srcptr Binv, slong lenBinv, nmod_t mod) + void nmod_poly_divrem_newton_n_preinv(nmod_poly_t Q, nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B, const nmod_poly_t Binv) + ulong _nmod_poly_div_root(nn_ptr Q, nn_srcptr A, slong len, ulong c, nmod_t mod) + ulong nmod_poly_div_root(nmod_poly_t Q, const nmod_poly_t A, ulong c) + int _nmod_poly_divides_classical(nn_ptr Q, nn_srcptr A, slong lenA, nn_srcptr B, slong lenB, nmod_t mod) + int nmod_poly_divides_classical(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) + int _nmod_poly_divides(nn_ptr Q, nn_srcptr A, slong lenA, nn_srcptr B, slong lenB, nmod_t mod) + int nmod_poly_divides(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) + ulong nmod_poly_remove(nmod_poly_t f, const nmod_poly_t p) + void _nmod_poly_derivative(nn_ptr x_prime, nn_srcptr x, slong len, nmod_t mod) + void nmod_poly_derivative(nmod_poly_t x_prime, const nmod_poly_t x) + void _nmod_poly_integral(nn_ptr x_int, nn_srcptr x, slong len, nmod_t mod) + void nmod_poly_integral(nmod_poly_t x_int, const nmod_poly_t x) + ulong _nmod_poly_evaluate_nmod(nn_srcptr poly, slong len, ulong c, nmod_t mod) + ulong nmod_poly_evaluate_nmod(const nmod_poly_t poly, ulong c) + void nmod_poly_evaluate_mat_horner(nmod_mat_t dest, const nmod_poly_t poly, const nmod_mat_t c) + void nmod_poly_evaluate_mat_paterson_stockmeyer(nmod_mat_t dest, const nmod_poly_t poly, const nmod_mat_t c) + void nmod_poly_evaluate_mat(nmod_mat_t dest, const nmod_poly_t poly, const nmod_mat_t c) + void _nmod_poly_evaluate_nmod_vec_iter(nn_ptr ys, nn_srcptr poly, slong len, nn_srcptr xs, slong n, nmod_t mod) + void nmod_poly_evaluate_nmod_vec_iter(nn_ptr ys, const nmod_poly_t poly, nn_srcptr xs, slong n) + void _nmod_poly_evaluate_nmod_vec_fast_precomp(nn_ptr vs, nn_srcptr poly, slong plen, const nn_ptr * tree, slong len, nmod_t mod) + void _nmod_poly_evaluate_nmod_vec_fast(nn_ptr ys, nn_srcptr poly, slong len, nn_srcptr xs, slong n, nmod_t mod) + void nmod_poly_evaluate_nmod_vec_fast(nn_ptr ys, const nmod_poly_t poly, nn_srcptr xs, slong n) + void _nmod_poly_evaluate_nmod_vec(nn_ptr ys, nn_srcptr poly, slong len, nn_srcptr xs, slong n, nmod_t mod) + void nmod_poly_evaluate_nmod_vec(nn_ptr ys, const nmod_poly_t poly, nn_srcptr xs, slong n) + void _nmod_poly_interpolate_nmod_vec(nn_ptr poly, nn_srcptr xs, nn_srcptr ys, slong n, nmod_t mod) + void nmod_poly_interpolate_nmod_vec(nmod_poly_t poly, nn_srcptr xs, nn_srcptr ys, slong n) + void _nmod_poly_interpolation_weights(nn_ptr w, const nn_ptr * tree, slong len, nmod_t mod) + void _nmod_poly_interpolate_nmod_vec_fast_precomp(nn_ptr poly, nn_srcptr ys, const nn_ptr * tree, nn_srcptr weights, slong len, nmod_t mod) + void _nmod_poly_interpolate_nmod_vec_fast(nn_ptr poly, nn_srcptr xs, nn_srcptr ys, slong n, nmod_t mod) + void nmod_poly_interpolate_nmod_vec_fast(nmod_poly_t poly, nn_srcptr xs, nn_srcptr ys, slong n) + void _nmod_poly_interpolate_nmod_vec_newton(nn_ptr poly, nn_srcptr xs, nn_srcptr ys, slong n, nmod_t mod) + void nmod_poly_interpolate_nmod_vec_newton(nmod_poly_t poly, nn_srcptr xs, nn_srcptr ys, slong n) + void _nmod_poly_interpolate_nmod_vec_barycentric(nn_ptr poly, nn_srcptr xs, nn_srcptr ys, slong n, nmod_t mod) + void nmod_poly_interpolate_nmod_vec_barycentric(nmod_poly_t poly, nn_srcptr xs, nn_srcptr ys, slong n) + void _nmod_poly_compose_horner(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, nmod_t mod) + void nmod_poly_compose_horner(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) + void _nmod_poly_compose_divconquer(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, nmod_t mod) + void nmod_poly_compose_divconquer(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) + void _nmod_poly_compose(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, nmod_t mod) + void nmod_poly_compose(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) + void _nmod_poly_taylor_shift_horner(nn_ptr poly, ulong c, slong len, nmod_t mod) + void nmod_poly_taylor_shift_horner(nmod_poly_t g, const nmod_poly_t f, ulong c) + void _nmod_poly_taylor_shift_convolution(nn_ptr poly, ulong c, slong len, nmod_t mod) + void nmod_poly_taylor_shift_convolution(nmod_poly_t g, const nmod_poly_t f, ulong c) + void _nmod_poly_taylor_shift(nn_ptr poly, ulong c, slong len, nmod_t mod) + void nmod_poly_taylor_shift(nmod_poly_t g, const nmod_poly_t f, ulong c) + void _nmod_poly_compose_mod_horner(nn_ptr res, nn_srcptr f, slong lenf, nn_srcptr g, nn_srcptr h, slong lenh, nmod_t mod) + void nmod_poly_compose_mod_horner(nmod_poly_t res, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t h) + void _nmod_poly_compose_mod_brent_kung(nn_ptr res, nn_srcptr f, slong lenf, nn_srcptr g, nn_srcptr h, slong lenh, nmod_t mod) + void nmod_poly_compose_mod_brent_kung(nmod_poly_t res, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t h) + void _nmod_poly_compose_mod_brent_kung_preinv(nn_ptr res, nn_srcptr f, slong lenf, nn_srcptr g, nn_srcptr h, slong lenh, nn_srcptr hinv, slong lenhinv, nmod_t mod) + void nmod_poly_compose_mod_brent_kung_preinv(nmod_poly_t res, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t h, const nmod_poly_t hinv) + void _nmod_poly_reduce_matrix_mod_poly (nmod_mat_t A, const nmod_mat_t B, const nmod_poly_t f) + void _nmod_poly_precompute_matrix_worker (void * arg_ptr) + void _nmod_poly_precompute_matrix (nmod_mat_t A, nn_srcptr f, nn_srcptr g, slong leng, nn_srcptr ginv, slong lenginv, nmod_t mod) + void nmod_poly_precompute_matrix (nmod_mat_t A, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t ginv) + void _nmod_poly_compose_mod_brent_kung_precomp_preinv_worker(void * arg_ptr) + void _nmod_poly_compose_mod_brent_kung_precomp_preinv(nn_ptr res, nn_srcptr f, slong lenf, const nmod_mat_t A, nn_srcptr h, slong lenh, nn_srcptr hinv, slong lenhinv, nmod_t mod) + void nmod_poly_compose_mod_brent_kung_precomp_preinv(nmod_poly_t res, const nmod_poly_t f, const nmod_mat_t A, const nmod_poly_t h, const nmod_poly_t hinv) + void _nmod_poly_compose_mod_brent_kung_vec_preinv(nmod_poly_struct * res, const nmod_poly_struct * polys, slong len1, slong l, nn_srcptr g, slong leng, nn_srcptr h, slong lenh, nn_srcptr hinv, slong lenhinv, nmod_t mod) + void nmod_poly_compose_mod_brent_kung_vec_preinv(nmod_poly_struct * res, const nmod_poly_struct * polys, slong len1, slong n, const nmod_poly_t g, const nmod_poly_t h, const nmod_poly_t hinv) + # void _nmod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(nmod_poly_struct * res, const nmod_poly_struct * polys, slong lenpolys, slong l, nn_srcptr g, slong glen, nn_srcptr poly, slong len, nn_srcptr polyinv, slong leninv, nmod_t mod, thread_pool_handle * threads, slong num_threads) + # void nmod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(nmod_poly_struct * res, const nmod_poly_struct * polys, slong len1, slong n, const nmod_poly_t g, const nmod_poly_t poly, const nmod_poly_t polyinv, thread_pool_handle * threads, slong num_threads) + void nmod_poly_compose_mod_brent_kung_vec_preinv_threaded(nmod_poly_struct * res, const nmod_poly_struct * polys, slong len1, slong n, const nmod_poly_t g, const nmod_poly_t poly, const nmod_poly_t polyinv) + void _nmod_poly_compose_mod(nn_ptr res, nn_srcptr f, slong lenf, nn_srcptr g, nn_srcptr h, slong lenh, nmod_t mod) + void nmod_poly_compose_mod(nmod_poly_t res, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t h) + slong _nmod_poly_gcd_euclidean(nn_ptr G, nn_srcptr A, slong lenA, nn_srcptr B, slong lenB, nmod_t mod) + void nmod_poly_gcd_euclidean(nmod_poly_t G, const nmod_poly_t A, const nmod_poly_t B) + slong _nmod_poly_hgcd(nn_ptr * M, slong * lenM, nn_ptr A, slong * lenA, nn_ptr B, slong * lenB, nn_srcptr a, slong lena, nn_srcptr b, slong lenb, nmod_t mod) + slong _nmod_poly_gcd_hgcd(nn_ptr G, nn_srcptr A, slong lenA, nn_srcptr B, slong lenB, nmod_t mod) + void nmod_poly_gcd_hgcd(nmod_poly_t G, const nmod_poly_t A, const nmod_poly_t B) + slong _nmod_poly_gcd(nn_ptr G, nn_srcptr A, slong lenA, nn_srcptr B, slong lenB, nmod_t mod) + void nmod_poly_gcd(nmod_poly_t G, const nmod_poly_t A, const nmod_poly_t B) + slong _nmod_poly_xgcd_euclidean(nn_ptr G, nn_ptr S, nn_ptr T, nn_srcptr A, slong A_len, nn_srcptr B, slong B_len, nmod_t mod) + void nmod_poly_xgcd_euclidean(nmod_poly_t G, nmod_poly_t S, nmod_poly_t T, const nmod_poly_t A, const nmod_poly_t B) + slong _nmod_poly_xgcd_hgcd(nn_ptr G, nn_ptr S, nn_ptr T, nn_srcptr A, slong A_len, nn_srcptr B, slong B_len, nmod_t mod) + void nmod_poly_xgcd_hgcd(nmod_poly_t G, nmod_poly_t S, nmod_poly_t T, const nmod_poly_t A, const nmod_poly_t B) + slong _nmod_poly_xgcd(nn_ptr G, nn_ptr S, nn_ptr T, nn_srcptr A, slong lenA, nn_srcptr B, slong lenB, nmod_t mod) + void nmod_poly_xgcd(nmod_poly_t G, nmod_poly_t S, nmod_poly_t T, const nmod_poly_t A, const nmod_poly_t B) + ulong _nmod_poly_resultant_euclidean(nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, nmod_t mod) + ulong nmod_poly_resultant_euclidean(const nmod_poly_t f, const nmod_poly_t g) + ulong _nmod_poly_resultant_hgcd(nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, nmod_t mod) + ulong nmod_poly_resultant_hgcd(const nmod_poly_t f, const nmod_poly_t g) + ulong _nmod_poly_resultant(nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, nmod_t mod) + ulong nmod_poly_resultant(const nmod_poly_t f, const nmod_poly_t g) + slong _nmod_poly_gcdinv(ulong * G, ulong * S, const ulong * A, slong lenA, const ulong * B, slong lenB, const nmod_t mod) + void nmod_poly_gcdinv(nmod_poly_t G, nmod_poly_t S, const nmod_poly_t A, const nmod_poly_t B) + int _nmod_poly_invmod(ulong * A, const ulong * B, slong lenB, const ulong * P, slong lenP, const nmod_t mod) + int nmod_poly_invmod(nmod_poly_t A, const nmod_poly_t B, const nmod_poly_t P) + ulong _nmod_poly_discriminant(nn_srcptr poly, slong len, nmod_t mod) + ulong nmod_poly_discriminant(const nmod_poly_t f) + void _nmod_poly_compose_series(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, slong n, nmod_t mod) + void nmod_poly_compose_series(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) + void _nmod_poly_revert_series(nn_ptr Qinv, nn_srcptr Q, slong Qlen, slong n, nmod_t mod) + void nmod_poly_revert_series(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) + void _nmod_poly_invsqrt_series(nn_ptr g, nn_srcptr h, slong hlen, slong n, nmod_t mod) + void nmod_poly_invsqrt_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_sqrt_series(nn_ptr g, nn_srcptr h, slong hlen, slong n, nmod_t mod) + void nmod_poly_sqrt_series(nmod_poly_t g, const nmod_poly_t h, slong n) + int _nmod_poly_sqrt(nn_ptr s, nn_srcptr p, slong n, nmod_t mod) + int nmod_poly_sqrt(nmod_poly_t s, const nmod_poly_t p) + void _nmod_poly_power_sums_naive(nn_ptr res, nn_srcptr poly, slong len, slong n, nmod_t mod) + void nmod_poly_power_sums_naive(nmod_poly_t res, const nmod_poly_t poly, slong n) + void _nmod_poly_power_sums_schoenhage(nn_ptr res, nn_srcptr poly, slong len, slong n, nmod_t mod) + void nmod_poly_power_sums_schoenhage(nmod_poly_t res, const nmod_poly_t poly, slong n) + void _nmod_poly_power_sums(nn_ptr res, nn_srcptr poly, slong len, slong n, nmod_t mod) + void nmod_poly_power_sums(nmod_poly_t res, const nmod_poly_t poly, slong n) + void _nmod_poly_power_sums_to_poly_naive(nn_ptr res, nn_srcptr poly, slong len, nmod_t mod) + void nmod_poly_power_sums_to_poly_naive(nmod_poly_t res, const nmod_poly_t Q) + void _nmod_poly_power_sums_to_poly_schoenhage(nn_ptr res, nn_srcptr poly, slong len, nmod_t mod) + void nmod_poly_power_sums_to_poly_schoenhage(nmod_poly_t res, const nmod_poly_t Q) + void _nmod_poly_power_sums_to_poly(nn_ptr res, nn_srcptr poly, slong len, nmod_t mod) + void nmod_poly_power_sums_to_poly(nmod_poly_t res, const nmod_poly_t Q) + void _nmod_poly_log_series(nn_ptr g, nn_srcptr h, slong hlen, slong n, nmod_t mod) + void nmod_poly_log_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_exp_series(nn_ptr f, nn_srcptr h, slong hlen, slong n, nmod_t mod) + void _nmod_poly_exp_expinv_series(nn_ptr f, nn_ptr g, nn_srcptr h, slong hlen, slong n, nmod_t mod) + void nmod_poly_exp_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_atan_series(nn_ptr g, nn_srcptr h, slong hlen, slong n, nmod_t mod) + void nmod_poly_atan_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_atanh_series(nn_ptr g, nn_srcptr h, slong hlen, slong n, nmod_t mod) + void nmod_poly_atanh_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_asin_series(nn_ptr g, nn_srcptr h, slong hlen, slong n, nmod_t mod) + void nmod_poly_asin_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_asinh_series(nn_ptr g, nn_srcptr h, slong hlen, slong n, nmod_t mod) + void nmod_poly_asinh_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_sin_series(nn_ptr g, nn_srcptr h, slong n, nmod_t mod) + void nmod_poly_sin_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_cos_series(nn_ptr g, nn_srcptr h, slong n, nmod_t mod) + void nmod_poly_cos_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_tan_series(nn_ptr g, nn_srcptr h, slong hlen, slong n, nmod_t mod) + void nmod_poly_tan_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_sinh_series(nn_ptr g, nn_srcptr h, slong n, nmod_t mod) + void nmod_poly_sinh_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_cosh_series(nn_ptr g, nn_srcptr h, slong n, nmod_t mod) + void nmod_poly_cosh_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_tanh_series(nn_ptr g, nn_srcptr h, slong n, nmod_t mod) + void nmod_poly_tanh_series(nmod_poly_t g, const nmod_poly_t h, slong n) + int _nmod_poly_conway(nn_ptr op, ulong prime, slong deg) + ulong _nmod_poly_conway_rand(slong * degree, flint_rand_t state, int type) + void _nmod_poly_product_roots_nmod_vec(nn_ptr poly, nn_srcptr xs, slong n, nmod_t mod) + void nmod_poly_product_roots_nmod_vec(nmod_poly_t poly, nn_srcptr xs, slong n) + int nmod_poly_find_distinct_nonzero_roots(ulong * roots, const nmod_poly_t A) + nn_ptr * _nmod_poly_tree_alloc(slong len) + void _nmod_poly_tree_free(nn_ptr * tree, slong len) + void _nmod_poly_tree_build(nn_ptr * tree, nn_srcptr roots, slong len, nmod_t mod) + void nmod_poly_inflate(nmod_poly_t result, const nmod_poly_t input, slong inflation) + void nmod_poly_deflate(nmod_poly_t result, const nmod_poly_t input, slong deflation) + slong nmod_poly_deflation(const nmod_poly_t input) + # void nmod_poly_multi_crt_init(nmod_poly_multi_crt_t CRT) + # int nmod_poly_multi_crt_precompute(nmod_poly_multi_crt_t CRT, const nmod_poly_struct * moduli, slong len) + # int nmod_poly_multi_crt_precompute_p(nmod_poly_multi_crt_t CRT, const nmod_poly_struct * const * moduli, slong len) + # void nmod_poly_multi_crt_precomp(nmod_poly_t output, const nmod_poly_multi_crt_t CRT, const nmod_poly_struct * values) + # void nmod_poly_multi_crt_precomp_p(nmod_poly_t output, const nmod_poly_multi_crt_t CRT, const nmod_poly_struct * const * values) + int nmod_poly_multi_crt(nmod_poly_t output, const nmod_poly_struct * moduli, const nmod_poly_struct * values, slong len) + # void nmod_poly_multi_crt_clear(nmod_poly_multi_crt_t CRT) + # slong _nmod_poly_multi_crt_local_size(const nmod_poly_multi_crt_t CRT) + # void _nmod_poly_multi_crt_run(nmod_poly_struct * outputs, const nmod_poly_multi_crt_t CRT, const nmod_poly_struct * inputs) + # void _nmod_poly_multi_crt_run_p(nmod_poly_struct * outputs, const nmod_poly_multi_crt_t CRT, const nmod_poly_struct * const * inputs) + # void nmod_berlekamp_massey_init(nmod_berlekamp_massey_t B, ulong p) + # void nmod_berlekamp_massey_clear(nmod_berlekamp_massey_t B) + # void nmod_berlekamp_massey_start_over(nmod_berlekamp_massey_t B) + # void nmod_berlekamp_massey_set_prime(nmod_berlekamp_massey_t B, ulong p) + # void nmod_berlekamp_massey_add_points(nmod_berlekamp_massey_t B, const ulong * a, slong count) + # void nmod_berlekamp_massey_add_zeros(nmod_berlekamp_massey_t B, slong count) + # void nmod_berlekamp_massey_add_point(nmod_berlekamp_massey_t B, ulong a) + # int nmod_berlekamp_massey_reduce(nmod_berlekamp_massey_t B) + # slong nmod_berlekamp_massey_point_count(const nmod_berlekamp_massey_t B) + # const ulong * nmod_berlekamp_massey_points(const nmod_berlekamp_massey_t B) + # const nmod_poly_struct * nmod_berlekamp_massey_V_poly(const nmod_berlekamp_massey_t B) + # const nmod_poly_struct * nmod_berlekamp_massey_R_poly(const nmod_berlekamp_massey_t B) diff --git a/src/flint/flintlib/nmod_poly_factor.pxd b/src/flint/flintlib/functions/nmod_poly_factor.pxd similarity index 60% rename from src/flint/flintlib/nmod_poly_factor.pxd rename to src/flint/flintlib/functions/nmod_poly_factor.pxd index 426ea148..4413eee1 100644 --- a/src/flint/flintlib/nmod_poly_factor.pxd +++ b/src/flint/flintlib/functions/nmod_poly_factor.pxd @@ -1,17 +1,9 @@ -from flint.flintlib.flint cimport slong, ulong, mp_srcptr, flint_rand_t, mp_limb_t -from flint.flintlib.nmod cimport nmod_t -from flint.flintlib.nmod_poly cimport nmod_poly_t, nmod_poly_struct +from flint.flintlib.types.flint cimport flint_rand_t, nmod_t, nn_srcptr, slong, ulong +from flint.flintlib.types.nmod cimport nmod_poly_factor_t, nmod_poly_t -cdef extern from "flint/nmod_poly_factor.h": - ctypedef struct nmod_poly_factor_struct: - nmod_poly_struct *p - slong *exp - slong num - slong alloc - ctypedef nmod_poly_factor_struct nmod_poly_factor_t[1] -# from here on is parsed +cdef extern from "flint/nmod_poly_factor.h": void nmod_poly_factor_init(nmod_poly_factor_t fac) void nmod_poly_factor_clear(nmod_poly_factor_t fac) void nmod_poly_factor_realloc(nmod_poly_factor_t fac, slong alloc) @@ -21,22 +13,21 @@ cdef extern from "flint/nmod_poly_factor.h": void nmod_poly_factor_insert(nmod_poly_factor_t fac, const nmod_poly_t poly, slong exp) void nmod_poly_factor_concat(nmod_poly_factor_t res, const nmod_poly_factor_t fac) void nmod_poly_factor_pow(nmod_poly_factor_t fac, slong exp) - ulong nmod_poly_remove(nmod_poly_t f, const nmod_poly_t p) int nmod_poly_is_irreducible(const nmod_poly_t f) int nmod_poly_is_irreducible_ddf(const nmod_poly_t f) int nmod_poly_is_irreducible_rabin(const nmod_poly_t f) - int _nmod_poly_is_squarefree(mp_srcptr f, slong len, nmod_t mod) + int _nmod_poly_is_squarefree(nn_srcptr f, slong len, nmod_t mod) int nmod_poly_is_squarefree(const nmod_poly_t f) void nmod_poly_factor_squarefree(nmod_poly_factor_t res, const nmod_poly_t f) int nmod_poly_factor_equal_deg_prob(nmod_poly_t factor, flint_rand_t state, const nmod_poly_t pol, slong d) void nmod_poly_factor_equal_deg(nmod_poly_factor_t factors, const nmod_poly_t pol, slong d) - void nmod_poly_factor_distinct_deg(nmod_poly_factor_t res, const nmod_poly_t poly, slong * const *degs) - void nmod_poly_factor_distinct_deg_threaded(nmod_poly_factor_t res, const nmod_poly_t poly, slong * const *degs) + void nmod_poly_factor_distinct_deg(nmod_poly_factor_t res, const nmod_poly_t poly, slong * const * degs) + void nmod_poly_factor_distinct_deg_threaded(nmod_poly_factor_t res, const nmod_poly_t poly, slong * const * degs) void nmod_poly_factor_cantor_zassenhaus(nmod_poly_factor_t res, const nmod_poly_t f) void nmod_poly_factor_berlekamp(nmod_poly_factor_t res, const nmod_poly_t f) void nmod_poly_factor_kaltofen_shoup(nmod_poly_factor_t res, const nmod_poly_t poly) - mp_limb_t nmod_poly_factor_with_berlekamp(nmod_poly_factor_t res, const nmod_poly_t f) - mp_limb_t nmod_poly_factor_with_cantor_zassenhaus(nmod_poly_factor_t res, const nmod_poly_t f) - mp_limb_t nmod_poly_factor_with_kaltofen_shoup(nmod_poly_factor_t res, const nmod_poly_t f) - mp_limb_t nmod_poly_factor(nmod_poly_factor_t res, const nmod_poly_t f) - void _nmod_poly_interval_poly_worker(void* arg_ptr) + ulong nmod_poly_factor_with_berlekamp(nmod_poly_factor_t res, const nmod_poly_t f) + ulong nmod_poly_factor_with_cantor_zassenhaus(nmod_poly_factor_t res, const nmod_poly_t f) + ulong nmod_poly_factor_with_kaltofen_shoup(nmod_poly_factor_t res, const nmod_poly_t f) + ulong nmod_poly_factor(nmod_poly_factor_t res, const nmod_poly_t f) + void _nmod_poly_interval_poly_worker(void * arg_ptr) diff --git a/src/flint/flintlib/functions/nmod_vec.pxd b/src/flint/flintlib/functions/nmod_vec.pxd new file mode 100644 index 00000000..e4eaa7fc --- /dev/null +++ b/src/flint/flintlib/functions/nmod_vec.pxd @@ -0,0 +1,33 @@ +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, nmod_t, nn_ptr, nn_srcptr, slong, ulong + +# unknown type FILE +# unknown type dot_params_t + +# .. macro:: NMOD_VEC_DOT(res, i, len, expr1, expr2, mod, params) + +cdef extern from "flint/nmod_vec.h": + nn_ptr _nmod_vec_init(slong len) + void _nmod_vec_clear(nn_ptr vec) + void _nmod_vec_randtest(nn_ptr vec, flint_rand_t state, slong len, nmod_t mod) + void _nmod_vec_set(nn_ptr res, nn_srcptr vec, slong len) + void _nmod_vec_zero(nn_ptr vec, slong len) + void _nmod_vec_swap(nn_ptr a, nn_ptr b, slong length) + void _nmod_vec_reduce(nn_ptr res, nn_srcptr vec, slong len, nmod_t mod) + flint_bitcnt_t _nmod_vec_max_bits(nn_srcptr vec, slong len) + int _nmod_vec_equal(nn_srcptr vec, nn_srcptr vec2, slong len) + void _nmod_vec_print_pretty(nn_srcptr vec, slong len, nmod_t mod) + # int _nmod_vec_fprint_pretty(FILE * file, nn_srcptr vec, slong len, nmod_t mod) + int _nmod_vec_print(nn_srcptr vec, slong len, nmod_t mod) + # int _nmod_vec_fprint(FILE * f, nn_srcptr vec, slong len, nmod_t mod) + void _nmod_vec_add(nn_ptr res, nn_srcptr vec1, nn_srcptr vec2, slong len, nmod_t mod) + void _nmod_vec_sub(nn_ptr res, nn_srcptr vec1, nn_srcptr vec2, slong len, nmod_t mod) + void _nmod_vec_neg(nn_ptr res, nn_srcptr vec, slong len, nmod_t mod) + void _nmod_vec_scalar_mul_nmod(nn_ptr res, nn_srcptr vec, slong len, ulong c, nmod_t mod) + void _nmod_vec_scalar_mul_nmod_shoup(nn_ptr res, nn_srcptr vec, slong len, ulong c, nmod_t mod) + void _nmod_vec_scalar_addmul_nmod(nn_ptr res, nn_srcptr vec, slong len, ulong c, nmod_t mod) + # dot_params_t _nmod_vec_dot_params(slong len, nmod_t mod) + # ulong _nmod_vec_dot(nn_srcptr vec1, nn_srcptr vec2, slong len, nmod_t mod, dot_params_t params) + # ulong _nmod_vec_dot_rev(nn_srcptr vec1, nn_srcptr vec2, slong len, nmod_t mod, dot_params_t params) + # ulong _nmod_vec_dot_ptr(nn_srcptr vec1, const nn_ptr * vec2, slong offset, slong len, nmod_t mod, dot_params_t params) + int _nmod_vec_dot_bound_limbs(slong len, nmod_t mod) + # int _nmod_vec_dot_bound_limbs_from_params(slong len, nmod_t mod, dot_params_t params) diff --git a/src/flint/flintlib/partitions.pxd b/src/flint/flintlib/functions/partitions.pxd similarity index 70% rename from src/flint/flintlib/partitions.pxd rename to src/flint/flintlib/functions/partitions.pxd index b2e994cc..3b7ee421 100644 --- a/src/flint/flintlib/partitions.pxd +++ b/src/flint/flintlib/functions/partitions.pxd @@ -1,10 +1,10 @@ -from flint.flintlib.flint cimport ulong, slong -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.arf cimport arf_t -from flint.flintlib.arb cimport arb_t +from flint.flintlib.types.arb cimport arb_t +from flint.flintlib.types.arf cimport arf_t +from flint.flintlib.types.flint cimport fmpz_t, slong, ulong + + cdef extern from "flint/partitions.h": -# from here on is parsed void partitions_rademacher_bound(arf_t b, const fmpz_t n, ulong N) void partitions_hrr_sum_arb(arb_t x, const fmpz_t n, slong N0, slong N, int use_doubles) void partitions_fmpz_fmpz(fmpz_t p, const fmpz_t n, int use_doubles) diff --git a/src/flint/flintlib/ulong_extras.pxd b/src/flint/flintlib/functions/ulong_extras.pxd similarity index 69% rename from src/flint/flintlib/ulong_extras.pxd rename to src/flint/flintlib/functions/ulong_extras.pxd index 37ae0327..28c8b4a9 100644 --- a/src/flint/flintlib/ulong_extras.pxd +++ b/src/flint/flintlib/functions/ulong_extras.pxd @@ -1,11 +1,11 @@ -from flint.flintlib.flint cimport ulong, flint_rand_t, slong, mp_limb_t -from flint.flintlib.fmpz cimport fmpz_t +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, slong, ulong + +# unknown type n_ecm_t +# unknown type n_factor_t +# unknown type n_primes_t -cdef extern from "flint/ulong_extras.h": -# ulong n_gcd(ulong n, ulong k) -# int n_is_prime(ulong n) -# from here on is parsed +cdef extern from "flint/ulong_extras.h": ulong n_randlimb(flint_rand_t state) ulong n_randbits(flint_rand_t state, unsigned int bits) ulong n_randtest_bits(flint_rand_t state, int bits) @@ -21,6 +21,7 @@ cdef extern from "flint/ulong_extras.h": ulong n_clog_2exp(ulong n, ulong b) ulong n_revbin(ulong n, ulong b) int n_sizeinbase(ulong n, int base) + ulong n_preinvert_limb_prenorm(ulong n) ulong n_preinvert_limb(ulong n) double n_precompute_inverse(ulong n) ulong n_mod_precomp(ulong a, ulong n, double ninv) @@ -38,25 +39,25 @@ cdef extern from "flint/ulong_extras.h": ulong n_gcd(ulong x, ulong y) ulong n_gcdinv(ulong * a, ulong x, ulong y) ulong n_xgcd(ulong * a, ulong * b, ulong x, ulong y) - # int n_jacobi(mp_limb_signed_t x, ulong y) + int n_jacobi(slong x, ulong y) int n_jacobi_unsigned(ulong x, ulong y) ulong n_addmod(ulong a, ulong b, ulong n) ulong n_submod(ulong a, ulong b, ulong n) ulong n_invmod(ulong x, ulong y) - # ulong n_powmod_precomp(ulong a, mp_limb_signed_t exp, ulong n, double npre) + ulong n_powmod_precomp(ulong a, slong exp, ulong n, double npre) ulong n_powmod_ui_precomp(ulong a, ulong exp, ulong n, double npre) - # ulong n_powmod(ulong a, mp_limb_signed_t exp, ulong n) - # ulong n_powmod2_preinv(ulong a, mp_limb_signed_t exp, ulong n, ulong ninv) - # ulong n_powmod2(ulong a, mp_limb_signed_t exp, ulong n) + ulong n_powmod(ulong a, slong exp, ulong n) + ulong n_powmod2_preinv(ulong a, slong exp, ulong n, ulong ninv) + ulong n_powmod2(ulong a, slong exp, ulong n) ulong n_powmod2_ui_preinv(ulong a, ulong exp, ulong n, ulong ninv) ulong n_powmod2_fmpz_preinv(ulong a, const fmpz_t exp, ulong n, ulong ninv) ulong n_sqrtmod(ulong a, ulong p) slong n_sqrtmod_2pow(ulong ** sqrt, ulong a, slong exp) slong n_sqrtmod_primepow(ulong ** sqrt, ulong a, ulong p, slong exp) # slong n_sqrtmodn(ulong ** sqrt, ulong a, n_factor_t * fac) - mp_limb_t n_mulmod_shoup(mp_limb_t w, mp_limb_t t, mp_limb_t w_precomp, mp_limb_t p) - mp_limb_t n_mulmod_precomp_shoup(mp_limb_t w, mp_limb_t p) - int n_divides(mp_limb_t * q, mp_limb_t n, mp_limb_t p) + ulong n_mulmod_shoup(ulong w, ulong t, ulong w_precomp, ulong p) + ulong n_mulmod_precomp_shoup(ulong w, ulong p) + int n_divides(ulong * q, ulong n, ulong p) # void n_primes_init(n_primes_t iter) # void n_primes_clear(n_primes_t iter) # ulong n_primes_next(n_primes_t iter) @@ -69,9 +70,9 @@ cdef extern from "flint/ulong_extras.h": void n_cleanup_primes() ulong n_nextprime(ulong n, int proved) ulong n_prime_pi(ulong n) - void n_prime_pi_bounds(ulong *lo, ulong *hi, ulong n) + void n_prime_pi_bounds(ulong * lo, ulong * hi, ulong n) ulong n_nth_prime(ulong n) - void n_nth_prime_bounds(ulong *lo, ulong *hi, ulong n) + void n_nth_prime_bounds(ulong * lo, ulong * hi, ulong n) int n_is_oddprime_small(ulong n) int n_is_oddprime_binary(ulong n) int n_is_prime_pocklington(ulong n, ulong iterations) @@ -90,18 +91,19 @@ cdef extern from "flint/ulong_extras.h": int n_is_square(ulong x) int n_is_perfect_power235(ulong n) int n_is_perfect_power(ulong * root, ulong n) - ulong n_rootrem(ulong* remainder, ulong n, ulong root) + ulong n_rootrem(ulong * remainder, ulong n, ulong root) ulong n_cbrt(ulong n) - ulong n_cbrt_newton_iteration(ulong n) ulong n_cbrt_binary_search(ulong n) ulong n_cbrt_chebyshev_approx(ulong n) - ulong n_cbrtrem(ulong* remainder, ulong n) + ulong n_cbrtrem(ulong * remainder, ulong n) + # void n_factor_init(n_factor_t * factors) + # ulong n_factor_evaluate(const n_factor_t * factors) int n_remove(ulong * n, ulong p) int n_remove2_precomp(ulong * n, ulong p, double ppre) # void n_factor_insert(n_factor_t * factors, ulong p, ulong exp) # ulong n_factor_trial_range(n_factor_t * factors, ulong n, ulong start, ulong num_primes) # ulong n_factor_trial(n_factor_t * factors, ulong n, ulong num_primes) - ulong n_factor_power235(ulong *exp, ulong n) + ulong n_factor_power235(ulong * exp, ulong n) ulong n_factor_one_line(ulong n, ulong iters) ulong n_factor_lehman(ulong n) ulong n_factor_SQUFOF(ulong n, ulong iters) @@ -110,8 +112,8 @@ cdef extern from "flint/ulong_extras.h": # ulong n_factor_partial(n_factor_t * factors, ulong n, ulong limit, int proved) ulong n_factor_pp1(ulong n, ulong B1, ulong c) ulong n_factor_pp1_wrapper(ulong n) - int n_factor_pollard_brent_single(mp_limb_t *factor, mp_limb_t n, mp_limb_t ninv, mp_limb_t ai, mp_limb_t xi, mp_limb_t normbits, mp_limb_t max_iters) - int n_factor_pollard_brent(mp_limb_t *factor, flint_rand_t state, mp_limb_t n_in, mp_limb_t max_tries, mp_limb_t max_iters) + int n_factor_pollard_brent_single(ulong * factor, ulong n, ulong ninv, ulong ai, ulong xi, ulong normbits, ulong max_iters) + int n_factor_pollard_brent(ulong * factor, flint_rand_t state, ulong n_in, ulong max_tries, ulong max_iters) int n_moebius_mu(ulong n) void n_moebius_mu_vec(int * mu, ulong len) int n_is_squarefree(ulong n) @@ -121,10 +123,10 @@ cdef extern from "flint/ulong_extras.h": # ulong n_primitive_root_prime_prefactor(ulong p, n_factor_t * factors) ulong n_primitive_root_prime(ulong p) ulong n_discrete_log_bsgs(ulong b, ulong a, ulong n) - # void n_factor_ecm_double(mp_limb_t *x, mp_limb_t *z, mp_limb_t x0, mp_limb_t z0, mp_limb_t n, n_ecm_t n_ecm_inf) - # void n_factor_ecm_add(mp_limb_t *x, mp_limb_t *z, mp_limb_t x1, mp_limb_t z1, mp_limb_t x2, mp_limb_t z2, mp_limb_t x0, mp_limb_t z0, mp_limb_t n, n_ecm_t n_ecm_inf) - # void n_factor_ecm_mul_montgomery_ladder(mp_limb_t *x, mp_limb_t *z, mp_limb_t x0, mp_limb_t z0, mp_limb_t k, mp_limb_t n, n_ecm_t n_ecm_inf) - # int n_factor_ecm_select_curve(mp_limb_t *f, mp_limb_t sigma, mp_limb_t n, n_ecm_t n_ecm_inf) - # int n_factor_ecm_stage_I(mp_limb_t *f, const mp_limb_t *prime_array, mp_limb_t num, mp_limb_t B1, mp_limb_t n, n_ecm_t n_ecm_inf) - # int n_factor_ecm_stage_II(mp_limb_t *f, mp_limb_t B1, mp_limb_t B2, mp_limb_t P, mp_limb_t n, n_ecm_t n_ecm_inf) - # int n_factor_ecm(mp_limb_t *f, mp_limb_t curves, mp_limb_t B1, mp_limb_t B2, flint_rand_t state, mp_limb_t n) + # void n_factor_ecm_double(ulong * x, ulong * z, ulong x0, ulong z0, ulong n, n_ecm_t n_ecm_inf) + # void n_factor_ecm_add(ulong * x, ulong * z, ulong x1, ulong z1, ulong x2, ulong z2, ulong x0, ulong z0, ulong n, n_ecm_t n_ecm_inf) + # void n_factor_ecm_mul_montgomery_ladder(ulong * x, ulong * z, ulong x0, ulong z0, ulong k, ulong n, n_ecm_t n_ecm_inf) + # int n_factor_ecm_select_curve(ulong * f, ulong sigma, ulong n, n_ecm_t n_ecm_inf) + # int n_factor_ecm_stage_I(ulong * f, const ulong * prime_array, ulong num, ulong B1, ulong n, n_ecm_t n_ecm_inf) + # int n_factor_ecm_stage_II(ulong * f, ulong B1, ulong B2, ulong P, ulong n, n_ecm_t n_ecm_inf) + int n_factor_ecm(ulong * f, ulong curves, ulong B1, ulong B2, flint_rand_t state, ulong n) diff --git a/src/flint/flintlib/nmod.pxd b/src/flint/flintlib/nmod.pxd deleted file mode 100644 index c88b876b..00000000 --- a/src/flint/flintlib/nmod.pxd +++ /dev/null @@ -1,27 +0,0 @@ -from flint.flintlib.flint cimport mp_limb_t, mp_bitcnt_t, ulong, nmod_t -from flint.flintlib.fmpz cimport fmpz_t - -cdef extern from "flint/nmod.h": -# TODO add macros - -# from here on is parsed - void nmod_init(nmod_t * mod, mp_limb_t n) - mp_limb_t _nmod_add(mp_limb_t a, mp_limb_t b, nmod_t mod) - mp_limb_t nmod_add(mp_limb_t a, mp_limb_t b, nmod_t mod) - mp_limb_t _nmod_sub(mp_limb_t a, mp_limb_t b, nmod_t mod) - mp_limb_t nmod_sub(mp_limb_t a, mp_limb_t b, nmod_t mod) - mp_limb_t nmod_neg(mp_limb_t a, nmod_t mod) - mp_limb_t nmod_mul(mp_limb_t a, mp_limb_t b, nmod_t mod) - mp_limb_t _nmod_mul_fullword(mp_limb_t a, mp_limb_t b, nmod_t mod) - mp_limb_t nmod_inv(mp_limb_t a, nmod_t mod) - mp_limb_t nmod_div(mp_limb_t a, mp_limb_t b, nmod_t mod) - mp_limb_t nmod_pow_ui(mp_limb_t a, ulong e, nmod_t mod) - mp_limb_t nmod_pow_fmpz(mp_limb_t a, const fmpz_t e, nmod_t mod) - # void nmod_discrete_log_pohlig_hellman_init(nmod_discrete_log_pohlig_hellman_t L) - # void nmod_discrete_log_pohlig_hellman_clear(nmod_discrete_log_pohlig_hellman_t L) - # double nmod_discrete_log_pohlig_hellman_precompute_prime(nmod_discrete_log_pohlig_hellman_t L, mp_limb_t p) - # mp_limb_t nmod_discrete_log_pohlig_hellman_primitive_root(const nmod_discrete_log_pohlig_hellman_t L) - # ulong nmod_discrete_log_pohlig_hellman_run(const nmod_discrete_log_pohlig_hellman_t L, mp_limb_t y) - -cdef extern from "flint/fmpz.h": - mp_limb_t fmpz_get_nmod(const fmpz_t f, nmod_t mod) diff --git a/src/flint/flintlib/nmod_poly.pxd b/src/flint/flintlib/nmod_poly.pxd deleted file mode 100644 index f24f72ce..00000000 --- a/src/flint/flintlib/nmod_poly.pxd +++ /dev/null @@ -1,432 +0,0 @@ -from flint.flintlib.flint cimport mp_ptr, mp_limb_t, mp_bitcnt_t, mp_srcptr, slong, flint_bitcnt_t -from flint.flintlib.flint cimport flint_rand_t, ulong -from flint.flintlib.nmod cimport nmod_t -from flint.flintlib.fmpz cimport fmpz_t - -cdef extern from "flint/nmod_poly.h": - ctypedef struct nmod_poly_struct: - mp_ptr coeffs - long alloc - long length - nmod_t mod - ctypedef nmod_poly_struct nmod_poly_t[1] - -# from here on is parsed - # int signed_mpn_sub_n(mp_ptr res, mp_srcptr op1, mp_srcptr op2, slong n) - void nmod_poly_init(nmod_poly_t poly, mp_limb_t n) - void nmod_poly_init_preinv(nmod_poly_t poly, mp_limb_t n, mp_limb_t ninv) - void nmod_poly_init_mod(nmod_poly_t poly, const nmod_t mod) - void nmod_poly_init2(nmod_poly_t poly, mp_limb_t n, slong alloc) - void nmod_poly_init2_preinv(nmod_poly_t poly, mp_limb_t n, mp_limb_t ninv, slong alloc) - void nmod_poly_realloc(nmod_poly_t poly, slong alloc) - void nmod_poly_clear(nmod_poly_t poly) - void nmod_poly_fit_length(nmod_poly_t poly, slong alloc) - void _nmod_poly_normalise(nmod_poly_t poly) - slong nmod_poly_length(const nmod_poly_t poly) - slong nmod_poly_degree(const nmod_poly_t poly) - mp_limb_t nmod_poly_modulus(const nmod_poly_t poly) - flint_bitcnt_t nmod_poly_max_bits(const nmod_poly_t poly) - void nmod_poly_set(nmod_poly_t a, const nmod_poly_t b) - void nmod_poly_swap(nmod_poly_t poly1, nmod_poly_t poly2) - void nmod_poly_zero(nmod_poly_t res) - void nmod_poly_truncate(nmod_poly_t poly, slong len) - void nmod_poly_set_trunc(nmod_poly_t res, const nmod_poly_t poly, slong n) - void _nmod_poly_reverse(mp_ptr output, mp_srcptr input, slong len, slong m) - void nmod_poly_reverse(nmod_poly_t output, const nmod_poly_t input, slong m) - void nmod_poly_randtest(nmod_poly_t poly, flint_rand_t state, slong len) - void nmod_poly_randtest_irreducible(nmod_poly_t poly, flint_rand_t state, slong len) - void nmod_poly_randtest_monic(nmod_poly_t poly, flint_rand_t state, slong len) - void nmod_poly_randtest_monic_irreducible(nmod_poly_t poly, flint_rand_t state, slong len) - void nmod_poly_randtest_monic_primitive(nmod_poly_t poly, flint_rand_t state, slong len) - void nmod_poly_randtest_trinomial(nmod_poly_t poly, flint_rand_t state, slong len) - int nmod_poly_randtest_trinomial_irreducible(nmod_poly_t poly, flint_rand_t state, slong len, slong max_attempts) - void nmod_poly_randtest_pentomial(nmod_poly_t poly, flint_rand_t state, slong len) - int nmod_poly_randtest_pentomial_irreducible(nmod_poly_t poly, flint_rand_t state, slong len, slong max_attempts) - void nmod_poly_randtest_sparse_irreducible(nmod_poly_t poly, flint_rand_t state, slong len) - ulong nmod_poly_get_coeff_ui(const nmod_poly_t poly, slong j) - void nmod_poly_set_coeff_ui(nmod_poly_t poly, slong j, ulong c) - char * nmod_poly_get_str(const nmod_poly_t poly) - char * nmod_poly_get_str_pretty(const nmod_poly_t poly, const char * x) - int nmod_poly_set_str(nmod_poly_t poly, const char * s) - int nmod_poly_print(const nmod_poly_t a) - int nmod_poly_print_pretty(const nmod_poly_t a, const char * x) - int nmod_poly_read(nmod_poly_t poly) - int nmod_poly_equal(const nmod_poly_t a, const nmod_poly_t b) - int nmod_poly_equal_trunc(const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) - int nmod_poly_is_zero(const nmod_poly_t poly) - int nmod_poly_is_one(const nmod_poly_t poly) - int nmod_poly_is_gen(const nmod_poly_t poly) - void _nmod_poly_shift_left(mp_ptr res, mp_srcptr poly, slong len, slong k) - void nmod_poly_shift_left(nmod_poly_t res, const nmod_poly_t poly, slong k) - void _nmod_poly_shift_right(mp_ptr res, mp_srcptr poly, slong len, slong k) - void nmod_poly_shift_right(nmod_poly_t res, const nmod_poly_t poly, slong k) - void _nmod_poly_add(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) - void nmod_poly_add(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) - void nmod_poly_add_series(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) - void _nmod_poly_sub(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) - void nmod_poly_sub(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) - void nmod_poly_sub_series(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) - void nmod_poly_neg(nmod_poly_t res, const nmod_poly_t poly) - void nmod_poly_scalar_mul_nmod(nmod_poly_t res, const nmod_poly_t poly, ulong c) - void _nmod_poly_make_monic(mp_ptr output, mp_srcptr input, slong len, nmod_t mod) - void nmod_poly_make_monic(nmod_poly_t output, const nmod_poly_t input) - void _nmod_poly_bit_pack(mp_ptr res, mp_srcptr poly, slong len, flint_bitcnt_t bits) - void _nmod_poly_bit_unpack(mp_ptr res, slong len, mp_srcptr mpn, ulong bits, nmod_t mod) - void nmod_poly_bit_pack(fmpz_t f, const nmod_poly_t poly, flint_bitcnt_t bit_size) - void nmod_poly_bit_unpack(nmod_poly_t poly, const fmpz_t f, flint_bitcnt_t bit_size) - void _nmod_poly_KS2_pack1(mp_ptr res, mp_srcptr op, slong n, slong s, ulong b, ulong k, slong r) - void _nmod_poly_KS2_pack(mp_ptr res, mp_srcptr op, slong n, slong s, ulong b, ulong k, slong r) - void _nmod_poly_KS2_unpack1(mp_ptr res, mp_srcptr op, slong n, ulong b, ulong k) - void _nmod_poly_KS2_unpack2(mp_ptr res, mp_srcptr op, slong n, ulong b, ulong k) - void _nmod_poly_KS2_unpack3(mp_ptr res, mp_srcptr op, slong n, ulong b, ulong k) - void _nmod_poly_KS2_unpack(mp_ptr res, mp_srcptr op, slong n, ulong b, ulong k) - void _nmod_poly_KS2_reduce(mp_ptr res, slong s, mp_srcptr op, slong n, ulong w, nmod_t mod) - void _nmod_poly_KS2_recover_reduce1(mp_ptr res, slong s, mp_srcptr op1, mp_srcptr op2, slong n, ulong b, nmod_t mod) - void _nmod_poly_KS2_recover_reduce2(mp_ptr res, slong s, mp_srcptr op1, mp_srcptr op2, slong n, ulong b, nmod_t mod) - void _nmod_poly_KS2_recover_reduce2b(mp_ptr res, slong s, mp_srcptr op1, mp_srcptr op2, slong n, ulong b, nmod_t mod) - void _nmod_poly_KS2_recover_reduce3(mp_ptr res, slong s, mp_srcptr op1, mp_srcptr op2, slong n, ulong b, nmod_t mod) - void _nmod_poly_KS2_recover_reduce(mp_ptr res, slong s, mp_srcptr op1, mp_srcptr op2, slong n, ulong b, nmod_t mod) - void _nmod_poly_mul_classical(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) - void nmod_poly_mul_classical(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) - void _nmod_poly_mullow_classical(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong trunc, nmod_t mod) - void nmod_poly_mullow_classical(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong trunc) - void _nmod_poly_mulhigh_classical(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong start, nmod_t mod) - void nmod_poly_mulhigh_classical(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong start) - void _nmod_poly_mul_KS(mp_ptr out, mp_srcptr in1, slong len1, mp_srcptr in2, slong len2, flint_bitcnt_t bits, nmod_t mod) - void nmod_poly_mul_KS(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, flint_bitcnt_t bits) - void _nmod_poly_mul_KS2(mp_ptr res, mp_srcptr op1, slong n1, mp_srcptr op2, slong n2, nmod_t mod) - void nmod_poly_mul_KS2(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) - void _nmod_poly_mul_KS4(mp_ptr res, mp_srcptr op1, slong n1, mp_srcptr op2, slong n2, nmod_t mod) - void nmod_poly_mul_KS4(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) - void _nmod_poly_mullow_KS(mp_ptr out, mp_srcptr in1, slong len1, mp_srcptr in2, slong len2, flint_bitcnt_t bits, slong n, nmod_t mod) - void nmod_poly_mullow_KS(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, flint_bitcnt_t bits, slong n) - void _nmod_poly_mul(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) - void nmod_poly_mul(nmod_poly_t res, const nmod_poly_t poly, const nmod_poly_t poly2) - void _nmod_poly_mullow(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong n, nmod_t mod) - void nmod_poly_mullow(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong trunc) - void _nmod_poly_mulhigh(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong n, nmod_t mod) - void nmod_poly_mulhigh(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) - void _nmod_poly_mulmod(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, mp_srcptr f, slong lenf, nmod_t mod) - void nmod_poly_mulmod(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, const nmod_poly_t f) - void _nmod_poly_mulmod_preinv(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, mp_srcptr f, slong lenf, mp_srcptr finv, slong lenfinv, nmod_t mod) - void nmod_poly_mulmod_preinv(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, const nmod_poly_t f, const nmod_poly_t finv) - void _nmod_poly_pow_binexp(mp_ptr res, mp_srcptr poly, slong len, ulong e, nmod_t mod) - void nmod_poly_pow_binexp(nmod_poly_t res, const nmod_poly_t poly, ulong e) - void _nmod_poly_pow(mp_ptr res, mp_srcptr poly, slong len, ulong e, nmod_t mod) - void nmod_poly_pow(nmod_poly_t res, const nmod_poly_t poly, ulong e) - void _nmod_poly_pow_trunc_binexp(mp_ptr res, mp_srcptr poly, ulong e, slong trunc, nmod_t mod) - void nmod_poly_pow_trunc_binexp(nmod_poly_t res, const nmod_poly_t poly, ulong e, slong trunc) - void _nmod_poly_pow_trunc(mp_ptr res, mp_srcptr poly, ulong e, slong trunc, nmod_t mod) - void nmod_poly_pow_trunc(nmod_poly_t res, const nmod_poly_t poly, ulong e, slong trunc) - void _nmod_poly_powmod_ui_binexp(mp_ptr res, mp_srcptr poly, ulong e, mp_srcptr f, slong lenf, nmod_t mod) - void nmod_poly_powmod_ui_binexp(nmod_poly_t res, const nmod_poly_t poly, ulong e, const nmod_poly_t f) - # void _nmod_poly_powmod_mpz_binexp(mp_ptr res, mp_srcptr poly, mpz_srcptr e, mp_srcptr f, slong lenf, nmod_t mod) - # void nmod_poly_powmod_mpz_binexp(nmod_poly_t res, const nmod_poly_t poly, mpz_srcptr e, const nmod_poly_t f) - void _nmod_poly_powmod_fmpz_binexp(mp_ptr res, mp_srcptr poly, fmpz_t e, mp_srcptr f, slong lenf, nmod_t mod) - void nmod_poly_powmod_fmpz_binexp(nmod_poly_t res, const nmod_poly_t poly, fmpz_t e, const nmod_poly_t f) - void _nmod_poly_powmod_ui_binexp_preinv (mp_ptr res, mp_srcptr poly, ulong e, mp_srcptr f, slong lenf, mp_srcptr finv, slong lenfinv, nmod_t mod) - void nmod_poly_powmod_ui_binexp_preinv(nmod_poly_t res, const nmod_poly_t poly, ulong e, const nmod_poly_t f, const nmod_poly_t finv) - # void _nmod_poly_powmod_mpz_binexp_preinv (mp_ptr res, mp_srcptr poly, mpz_srcptr e, mp_srcptr f, slong lenf, mp_srcptr finv, slong lenfinv, nmod_t mod) - # void nmod_poly_powmod_mpz_binexp_preinv(nmod_poly_t res, const nmod_poly_t poly, mpz_srcptr e, const nmod_poly_t f, const nmod_poly_t finv) - void _nmod_poly_powmod_fmpz_binexp_preinv (mp_ptr res, mp_srcptr poly, fmpz_t e, mp_srcptr f, slong lenf, mp_srcptr finv, slong lenfinv, nmod_t mod) - void nmod_poly_powmod_fmpz_binexp_preinv(nmod_poly_t res, const nmod_poly_t poly, fmpz_t e, const nmod_poly_t f, const nmod_poly_t finv) - void _nmod_poly_powmod_x_ui_preinv (mp_ptr res, ulong e, mp_srcptr f, slong lenf, mp_srcptr finv, slong lenfinv, nmod_t mod) - void nmod_poly_powmod_x_ui_preinv(nmod_poly_t res, ulong e, const nmod_poly_t f, const nmod_poly_t finv) - void _nmod_poly_powmod_x_fmpz_preinv (mp_ptr res, fmpz_t e, mp_srcptr f, slong lenf, mp_srcptr finv, slong lenfinv, nmod_t mod) - void nmod_poly_powmod_x_fmpz_preinv(nmod_poly_t res, fmpz_t e, const nmod_poly_t f, const nmod_poly_t finv) - void _nmod_poly_powers_mod_preinv_naive(mp_ptr * res, mp_srcptr f, slong flen, slong n, mp_srcptr g, slong glen, mp_srcptr ginv, slong ginvlen, const nmod_t mod) - void nmod_poly_powers_mod_naive(nmod_poly_struct * res, const nmod_poly_t f, slong n, const nmod_poly_t g) - # void _nmod_poly_powers_mod_preinv_threaded_pool(mp_ptr * res, mp_srcptr f, slong flen, slong n, mp_srcptr g, slong glen, mp_srcptr ginv, slong ginvlen, const nmod_t mod, thread_pool_handle * threads, slong num_threads) - void _nmod_poly_powers_mod_preinv_threaded(mp_ptr * res, mp_srcptr f, slong flen, slong n, mp_srcptr g, slong glen, mp_srcptr ginv, slong ginvlen, const nmod_t mod) - void nmod_poly_powers_mod_bsgs(nmod_poly_struct * res, const nmod_poly_t f, slong n, const nmod_poly_t g) - void _nmod_poly_divrem_basecase(mp_ptr Q, mp_ptr R, mp_ptr W, mp_srcptr A, slong A_len, mp_srcptr B, slong B_len, nmod_t mod) - void nmod_poly_divrem_basecase(nmod_poly_t Q, nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B) - void _nmod_poly_div_basecase(mp_ptr Q, mp_ptr W, mp_srcptr A, slong A_len, mp_srcptr B, slong B_len, nmod_t mod) - void nmod_poly_div_basecase(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) - void _nmod_poly_divrem_divconquer_recursive(mp_ptr Q, mp_ptr BQ, mp_ptr W, mp_ptr V, mp_srcptr A, mp_srcptr B, slong lenB, nmod_t mod) - void _nmod_poly_divrem_divconquer(mp_ptr Q, mp_ptr R, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) - void nmod_poly_divrem_divconquer(nmod_poly_t Q, nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B) - void _nmod_poly_divrem_q0(mp_ptr Q, mp_ptr R, mp_srcptr A, mp_srcptr B, slong lenA, nmod_t mod) - void _nmod_poly_divrem_q1(mp_ptr Q, mp_ptr R, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) - void _nmod_poly_divrem(mp_ptr Q, mp_ptr R, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) - void nmod_poly_divrem(nmod_poly_t Q, nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B) - void _nmod_poly_div_divconquer_recursive(mp_ptr Q, mp_ptr W, mp_ptr V, mp_srcptr A, mp_srcptr B, slong lenB, nmod_t mod) - void _nmod_poly_div_divconquer(mp_ptr Q, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) - void nmod_poly_div_divconquer(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) - void _nmod_poly_div(mp_ptr Q, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) - void nmod_poly_div(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) - void _nmod_poly_rem_basecase(mp_ptr R, mp_ptr W, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) - void nmod_poly_rem_basecase(nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B) - void _nmod_poly_rem_q1(mp_ptr R, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) - void _nmod_poly_rem(mp_ptr R, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) - void nmod_poly_rem(nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B) - void _nmod_poly_inv_series_basecase(mp_ptr Qinv, mp_srcptr Q, slong Qlen, slong n, nmod_t mod) - void nmod_poly_inv_series_basecase(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) - void _nmod_poly_inv_series_newton(mp_ptr Qinv, mp_srcptr Q, slong Qlen, slong n, nmod_t mod) - void nmod_poly_inv_series_newton(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) - void _nmod_poly_inv_series(mp_ptr Qinv, mp_srcptr Q, slong Qlen, slong n, nmod_t mod) - void nmod_poly_inv_series(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) - void _nmod_poly_div_series_basecase(mp_ptr Q, mp_srcptr A, slong Alen, mp_srcptr B, slong Blen, slong n, nmod_t mod) - void nmod_poly_div_series_basecase(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B, slong n) - void _nmod_poly_div_series(mp_ptr Q, mp_srcptr A, slong Alen, mp_srcptr B, slong Blen, slong n, nmod_t mod) - void nmod_poly_div_series(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B, slong n) - void _nmod_poly_div_newton(mp_ptr Q, mp_srcptr A, slong Alen, mp_srcptr B, slong Blen, nmod_t mod) - void nmod_poly_div_newton(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) - void _nmod_poly_div_newton_n_preinv (mp_ptr Q, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, mp_srcptr Binv, slong lenBinv, nmod_t mod) - void nmod_poly_div_newton_n_preinv (nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B, const nmod_poly_t Binv) - void _nmod_poly_divrem_newton(mp_ptr Q, mp_ptr R, mp_srcptr A, slong Alen, mp_srcptr B, slong Blen, nmod_t mod) - void nmod_poly_divrem_newton(nmod_poly_t Q, nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B) - void _nmod_poly_divrem_newton_n_preinv (mp_ptr Q, mp_ptr R, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, mp_srcptr Binv, slong lenBinv, nmod_t mod) - void nmod_poly_divrem_newton_n_preinv(nmod_poly_t Q, nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B, const nmod_poly_t Binv) - mp_limb_t _nmod_poly_div_root(mp_ptr Q, mp_srcptr A, slong len, mp_limb_t c, nmod_t mod) - mp_limb_t nmod_poly_div_root(nmod_poly_t Q, const nmod_poly_t A, mp_limb_t c) - int _nmod_poly_divides_classical(mp_ptr Q, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) - int nmod_poly_divides_classical(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) - int _nmod_poly_divides(mp_ptr Q, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) - int nmod_poly_divides(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) - void _nmod_poly_derivative(mp_ptr x_prime, mp_srcptr x, slong len, nmod_t mod) - void nmod_poly_derivative(nmod_poly_t x_prime, const nmod_poly_t x) - void _nmod_poly_integral(mp_ptr x_int, mp_srcptr x, slong len, nmod_t mod) - void nmod_poly_integral(nmod_poly_t x_int, const nmod_poly_t x) - mp_limb_t _nmod_poly_evaluate_nmod(mp_srcptr poly, slong len, mp_limb_t c, nmod_t mod) - mp_limb_t nmod_poly_evaluate_nmod(nmod_poly_t poly, mp_limb_t c) - # void nmod_poly_evaluate_mat_horner(nmod_mat_t dest, const nmod_poly_t poly, const nmod_mat_t c) - # void nmod_poly_evaluate_mat_paterson_stockmeyer(nmod_mat_t dest, const nmod_poly_t poly, const nmod_mat_t c) - # void nmod_poly_evaluate_mat(nmod_mat_t dest, const nmod_poly_t poly, const nmod_mat_t c) - void _nmod_poly_evaluate_nmod_vec_iter(mp_ptr ys, mp_srcptr poly, slong len, mp_srcptr xs, slong n, nmod_t mod) - void nmod_poly_evaluate_nmod_vec_iter(mp_ptr ys, const nmod_poly_t poly, mp_srcptr xs, slong n) - void _nmod_poly_evaluate_nmod_vec_fast_precomp(mp_ptr vs, mp_srcptr poly, slong plen, const mp_ptr * tree, slong len, nmod_t mod) - void _nmod_poly_evaluate_nmod_vec_fast(mp_ptr ys, mp_srcptr poly, slong len, mp_srcptr xs, slong n, nmod_t mod) - void nmod_poly_evaluate_nmod_vec_fast(mp_ptr ys, const nmod_poly_t poly, mp_srcptr xs, slong n) - void _nmod_poly_evaluate_nmod_vec(mp_ptr ys, mp_srcptr poly, slong len, mp_srcptr xs, slong n, nmod_t mod) - void nmod_poly_evaluate_nmod_vec(mp_ptr ys, const nmod_poly_t poly, mp_srcptr xs, slong n) - void _nmod_poly_interpolate_nmod_vec(mp_ptr poly, mp_srcptr xs, mp_srcptr ys, slong n, nmod_t mod) - void nmod_poly_interpolate_nmod_vec(nmod_poly_t poly, mp_srcptr xs, mp_srcptr ys, slong n) - void _nmod_poly_interpolation_weights(mp_ptr w, const mp_ptr * tree, slong len, nmod_t mod) - void _nmod_poly_interpolate_nmod_vec_fast_precomp(mp_ptr poly, mp_srcptr ys, const mp_ptr * tree, mp_srcptr weights, slong len, nmod_t mod) - void _nmod_poly_interpolate_nmod_vec_fast(mp_ptr poly, mp_srcptr xs, mp_srcptr ys, slong n, nmod_t mod) - void nmod_poly_interpolate_nmod_vec_fast(nmod_poly_t poly, mp_srcptr xs, mp_srcptr ys, slong n) - void _nmod_poly_interpolate_nmod_vec_newton(mp_ptr poly, mp_srcptr xs, mp_srcptr ys, slong n, nmod_t mod) - void nmod_poly_interpolate_nmod_vec_newton(nmod_poly_t poly, mp_srcptr xs, mp_srcptr ys, slong n) - void _nmod_poly_interpolate_nmod_vec_barycentric(mp_ptr poly, mp_srcptr xs, mp_srcptr ys, slong n, nmod_t mod) - void nmod_poly_interpolate_nmod_vec_barycentric(nmod_poly_t poly, mp_srcptr xs, mp_srcptr ys, slong n) - void _nmod_poly_compose_horner(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) - void nmod_poly_compose_horner(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) - void _nmod_poly_compose_divconquer(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) - void nmod_poly_compose_divconquer(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) - void _nmod_poly_compose(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) - void nmod_poly_compose(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) - void _nmod_poly_taylor_shift_horner(mp_ptr poly, mp_limb_t c, slong len, nmod_t mod) - void nmod_poly_taylor_shift_horner(nmod_poly_t g, const nmod_poly_t f, mp_limb_t c) - void _nmod_poly_taylor_shift_convolution(mp_ptr poly, mp_limb_t c, slong len, nmod_t mod) - void nmod_poly_taylor_shift_convolution(nmod_poly_t g, const nmod_poly_t f, mp_limb_t c) - void _nmod_poly_taylor_shift(mp_ptr poly, mp_limb_t c, slong len, nmod_t mod) - void nmod_poly_taylor_shift(nmod_poly_t g, const nmod_poly_t f, mp_limb_t c) - void _nmod_poly_compose_mod_horner(mp_ptr res, mp_srcptr f, slong lenf, mp_srcptr g, mp_srcptr h, slong lenh, nmod_t mod) - void nmod_poly_compose_mod_horner(nmod_poly_t res, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t h) - void _nmod_poly_compose_mod_brent_kung(mp_ptr res, mp_srcptr f, slong lenf, mp_srcptr g, mp_srcptr h, slong lenh, nmod_t mod) - void nmod_poly_compose_mod_brent_kung(nmod_poly_t res, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t h) - void _nmod_poly_compose_mod_brent_kung_preinv(mp_ptr res, mp_srcptr f, slong lenf, mp_srcptr g, mp_srcptr h, slong lenh, mp_srcptr hinv, slong lenhinv, nmod_t mod) - void nmod_poly_compose_mod_brent_kung_preinv(nmod_poly_t res, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t h, const nmod_poly_t hinv) - # void _nmod_poly_reduce_matrix_mod_poly (nmod_mat_t A, const nmod_mat_t B, const nmod_poly_t f) - void _nmod_poly_precompute_matrix_worker (void * arg_ptr) - # void _nmod_poly_precompute_matrix (nmod_mat_t A, mp_srcptr f, mp_srcptr g, slong leng, mp_srcptr ginv, slong lenginv, nmod_t mod) - # void nmod_poly_precompute_matrix (nmod_mat_t A, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t ginv) - void _nmod_poly_compose_mod_brent_kung_precomp_preinv_worker(void * arg_ptr) - # void _nmod_poly_compose_mod_brent_kung_precomp_preinv(mp_ptr res, mp_srcptr f, slong lenf, const nmod_mat_t A, mp_srcptr h, slong lenh, mp_srcptr hinv, slong lenhinv, nmod_t mod) - # void nmod_poly_compose_mod_brent_kung_precomp_preinv(nmod_poly_t res, const nmod_poly_t f, const nmod_mat_t A, const nmod_poly_t h, const nmod_poly_t hinv) - void _nmod_poly_compose_mod_brent_kung_vec_preinv(nmod_poly_struct * res, const nmod_poly_struct * polys, slong len1, slong l, mp_srcptr g, slong leng, mp_srcptr h, slong lenh, mp_srcptr hinv, slong lenhinv, nmod_t mod) - void nmod_poly_compose_mod_brent_kung_vec_preinv(nmod_poly_struct * res, const nmod_poly_struct * polys, slong len1, slong n, const nmod_poly_t g, const nmod_poly_t h, const nmod_poly_t hinv) - # void _nmod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(nmod_poly_struct * res, const nmod_poly_struct * polys, slong lenpolys, slong l, mp_srcptr g, slong glen, mp_srcptr poly, slong len, mp_srcptr polyinv, slong leninv, nmod_t mod, thread_pool_handle * threads, slong num_threads) - # void nmod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(nmod_poly_struct * res, const nmod_poly_struct * polys, slong len1, slong n, const nmod_poly_t g, const nmod_poly_t poly, const nmod_poly_t polyinv, thread_pool_handle * threads, slong num_threads) - void nmod_poly_compose_mod_brent_kung_vec_preinv_threaded(nmod_poly_struct * res, const nmod_poly_struct * polys, slong len1, slong n, const nmod_poly_t g, const nmod_poly_t poly, const nmod_poly_t polyinv) - void _nmod_poly_compose_mod(mp_ptr res, mp_srcptr f, slong lenf, mp_srcptr g, mp_srcptr h, slong lenh, nmod_t mod) - void nmod_poly_compose_mod(nmod_poly_t res, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t h) - slong _nmod_poly_gcd_euclidean(mp_ptr G, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) - void nmod_poly_gcd_euclidean(nmod_poly_t G, const nmod_poly_t A, const nmod_poly_t B) - slong _nmod_poly_hgcd(mp_ptr *M, slong *lenM, mp_ptr A, slong *lenA, mp_ptr B, slong *lenB, mp_srcptr a, slong lena, mp_srcptr b, slong lenb, nmod_t mod) - slong _nmod_poly_gcd_hgcd(mp_ptr G, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) - void nmod_poly_gcd_hgcd(nmod_poly_t G, const nmod_poly_t A, const nmod_poly_t B) - slong _nmod_poly_gcd(mp_ptr G, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) - void nmod_poly_gcd(nmod_poly_t G, const nmod_poly_t A, const nmod_poly_t B) - slong _nmod_poly_xgcd_euclidean(mp_ptr G, mp_ptr S, mp_ptr T, mp_srcptr A, slong A_len, mp_srcptr B, slong B_len, nmod_t mod) - void nmod_poly_xgcd_euclidean(nmod_poly_t G, nmod_poly_t S, nmod_poly_t T, const nmod_poly_t A, const nmod_poly_t B) - slong _nmod_poly_xgcd_hgcd(mp_ptr G, mp_ptr S, mp_ptr T, mp_srcptr A, slong A_len, mp_srcptr B, slong B_len, nmod_t mod) - void nmod_poly_xgcd_hgcd(nmod_poly_t G, nmod_poly_t S, nmod_poly_t T, const nmod_poly_t A, const nmod_poly_t B) - slong _nmod_poly_xgcd(mp_ptr G, mp_ptr S, mp_ptr T, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) - void nmod_poly_xgcd(nmod_poly_t G, nmod_poly_t S, nmod_poly_t T, const nmod_poly_t A, const nmod_poly_t B) - mp_limb_t _nmod_poly_resultant_euclidean(mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) - mp_limb_t nmod_poly_resultant_euclidean(const nmod_poly_t f, const nmod_poly_t g) - mp_limb_t _nmod_poly_resultant_hgcd(mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) - mp_limb_t nmod_poly_resultant_hgcd(const nmod_poly_t f, const nmod_poly_t g) - mp_limb_t _nmod_poly_resultant(mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) - mp_limb_t nmod_poly_resultant(const nmod_poly_t f, const nmod_poly_t g) - slong _nmod_poly_gcdinv(mp_ptr G, mp_ptr S, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, const nmod_t mod) - void nmod_poly_gcdinv(nmod_poly_t G, nmod_poly_t S, const nmod_poly_t A, const nmod_poly_t B) - int _nmod_poly_invmod(mp_ptr A, mp_srcptr B, slong lenB, mp_srcptr P, slong lenP, const nmod_t mod) - int nmod_poly_invmod(nmod_poly_t A, const nmod_poly_t B, const nmod_poly_t P) - mp_limb_t _nmod_poly_discriminant(mp_srcptr poly, slong len, nmod_t mod) - mp_limb_t nmod_poly_discriminant(const nmod_poly_t f) - void _nmod_poly_compose_series_horner(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong n) - void nmod_poly_compose_series_horner(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) - void _nmod_poly_compose_series_brent_kung(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong n) - void nmod_poly_compose_series_brent_kung(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) - void _nmod_poly_compose_series_divconquer(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong N, nmod_t mod) - void nmod_poly_compose_series_divconquer(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong N) - void _nmod_poly_compose_series(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong n) - void nmod_poly_compose_series(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) - void _nmod_poly_revert_series_lagrange(mp_ptr Qinv, mp_srcptr Q, slong n, nmod_t mod) - void nmod_poly_revert_series_lagrange(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) - void _nmod_poly_revert_series_lagrange_fast(mp_ptr Qinv, mp_srcptr Q, slong n, nmod_t mod) - void nmod_poly_revert_series_lagrange_fast(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) - void _nmod_poly_revert_series_newton(mp_ptr Qinv, mp_srcptr Q, slong n, nmod_t mod) - void nmod_poly_revert_series_newton(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) - void _nmod_poly_revert_series(mp_ptr Qinv, mp_srcptr Q, slong n, nmod_t mod) - void nmod_poly_revert_series(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) - void _nmod_poly_invsqrt_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) - void nmod_poly_invsqrt_series(nmod_poly_t g, const nmod_poly_t h, slong n) - void _nmod_poly_sqrt_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) - void nmod_poly_sqrt_series(nmod_poly_t g, const nmod_poly_t h, slong n) - int _nmod_poly_sqrt(mp_ptr s, mp_srcptr p, slong n, nmod_t mod) - int nmod_poly_sqrt(nmod_poly_t s, const nmod_poly_t p) - void _nmod_poly_power_sums_naive(mp_ptr res, mp_srcptr poly, slong len, slong n, nmod_t mod) - void nmod_poly_power_sums_naive(nmod_poly_t res, const nmod_poly_t poly, slong n) - void _nmod_poly_power_sums_schoenhage(mp_ptr res, mp_srcptr poly, slong len, slong n, nmod_t mod) - void nmod_poly_power_sums_schoenhage(nmod_poly_t res, const nmod_poly_t poly, slong n) - void _nmod_poly_power_sums(mp_ptr res, mp_srcptr poly, slong len, slong n, nmod_t mod) - void nmod_poly_power_sums(nmod_poly_t res, const nmod_poly_t poly, slong n) - void _nmod_poly_power_sums_to_poly_naive(mp_ptr res, mp_srcptr poly, slong len, nmod_t mod) - void nmod_poly_power_sums_to_poly_naive(nmod_poly_t res, const nmod_poly_t Q) - void _nmod_poly_power_sums_to_poly_schoenhage(mp_ptr res, mp_srcptr poly, slong len, nmod_t mod) - void nmod_poly_power_sums_to_poly_schoenhage(nmod_poly_t res, const nmod_poly_t Q) - void _nmod_poly_power_sums_to_poly(mp_ptr res, mp_srcptr poly, slong len, nmod_t mod) - void nmod_poly_power_sums_to_poly(nmod_poly_t res, const nmod_poly_t Q) - void _nmod_poly_log_series_monomial_ui(mp_ptr g, mp_limb_t c, ulong r, slong n, nmod_t mod) - void nmod_poly_log_series_monomial_ui(nmod_poly_t g, mp_limb_t c, ulong r, slong n) - void _nmod_poly_log_series(mp_ptr g, mp_srcptr h, slong hlen, slong n, nmod_t mod) - void nmod_poly_log_series(nmod_poly_t g, const nmod_poly_t h, slong n) - void _nmod_poly_exp_series_monomial_ui(mp_ptr g, mp_limb_t c, ulong r, slong n, nmod_t mod) - void nmod_poly_exp_series_monomial_ui(nmod_poly_t g, mp_limb_t c, ulong r, slong n) - void _nmod_poly_exp_series_basecase(mp_ptr g, mp_srcptr h, slong hlen, slong n, nmod_t mod) - void nmod_poly_exp_series_basecase(nmod_poly_t g, const nmod_poly_t h, slong n) - void _nmod_poly_exp_series(mp_ptr f, mp_srcptr h, slong hlen, slong n, nmod_t mod) - void _nmod_poly_exp_expinv_series(mp_ptr f, mp_ptr g, mp_srcptr h, slong n, nmod_t mod) - void nmod_poly_exp_series(nmod_poly_t g, const nmod_poly_t h, slong n) - void _nmod_poly_atan_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) - void nmod_poly_atan_series(nmod_poly_t g, const nmod_poly_t h, slong n) - void _nmod_poly_atanh_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) - void nmod_poly_atanh_series(nmod_poly_t g, const nmod_poly_t h, slong n) - void _nmod_poly_asin_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) - void nmod_poly_asin_series(nmod_poly_t g, const nmod_poly_t h, slong n) - void _nmod_poly_asinh_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) - void nmod_poly_asinh_series(nmod_poly_t g, const nmod_poly_t h, slong n) - void _nmod_poly_sin_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) - void nmod_poly_sin_series(nmod_poly_t g, const nmod_poly_t h, slong n) - void _nmod_poly_cos_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) - void nmod_poly_cos_series(nmod_poly_t g, const nmod_poly_t h, slong n) - void _nmod_poly_tan_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) - void nmod_poly_tan_series(nmod_poly_t g, const nmod_poly_t h, slong n) - void _nmod_poly_sinh_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) - void nmod_poly_sinh_series(nmod_poly_t g, const nmod_poly_t h, slong n) - void _nmod_poly_cosh_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) - void nmod_poly_cosh_series(nmod_poly_t g, const nmod_poly_t h, slong n) - void _nmod_poly_tanh_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) - void nmod_poly_tanh_series(nmod_poly_t g, const nmod_poly_t h, slong n) - void _nmod_poly_product_roots_nmod_vec(mp_ptr poly, mp_srcptr xs, slong n, nmod_t mod) - void nmod_poly_product_roots_nmod_vec(nmod_poly_t poly, mp_srcptr xs, slong n) - int nmod_poly_find_distinct_nonzero_roots(mp_limb_t * roots, const nmod_poly_t A) - mp_ptr * _nmod_poly_tree_alloc(slong len) - void _nmod_poly_tree_free(mp_ptr * tree, slong len) - void _nmod_poly_tree_build(mp_ptr * tree, mp_srcptr roots, slong len, nmod_t mod) - void nmod_poly_inflate(nmod_poly_t result, const nmod_poly_t input, ulong inflation) - void nmod_poly_deflate(nmod_poly_t result, const nmod_poly_t input, ulong deflation) - ulong nmod_poly_deflation(const nmod_poly_t input) - # void nmod_poly_multi_crt_init(nmod_poly_multi_crt_t CRT) - # int nmod_poly_multi_crt_precompute(nmod_poly_multi_crt_t CRT, const nmod_poly_struct * moduli, slong len) - # int nmod_poly_multi_crt_precompute_p(nmod_poly_multi_crt_t CRT, const nmod_poly_struct * const * moduli, slong len) - # void nmod_poly_multi_crt_precomp(nmod_poly_t output, const nmod_poly_multi_crt_t CRT, const nmod_poly_struct * values) - # void nmod_poly_multi_crt_precomp_p(nmod_poly_t output, const nmod_poly_multi_crt_t CRT, const nmod_poly_struct * const * values) - int nmod_poly_multi_crt(nmod_poly_t output, const nmod_poly_struct * moduli, const nmod_poly_struct * values, slong len) - # void nmod_poly_multi_crt_clear(nmod_poly_multi_crt_t CRT) - # slong _nmod_poly_multi_crt_local_size(const nmod_poly_multi_crt_t CRT) - # void _nmod_poly_multi_crt_run(nmod_poly_struct * outputs, const nmod_poly_multi_crt_t CRT, const nmod_poly_struct * inputs) - # void _nmod_poly_multi_crt_run_p(nmod_poly_struct * outputs, const nmod_poly_multi_crt_t CRT, const nmod_poly_struct * const * inputs) - # void nmod_berlekamp_massey_init(nmod_berlekamp_massey_t B, mp_limb_t p) - # void nmod_berlekamp_massey_clear(nmod_berlekamp_massey_t B) - # void nmod_berlekamp_massey_start_over(nmod_berlekamp_massey_t B) - # void nmod_berlekamp_massey_set_prime(nmod_berlekamp_massey_t B, mp_limb_t p) - # void nmod_berlekamp_massey_add_points(nmod_berlekamp_massey_t B, const mp_limb_t * a, slong count) - # void nmod_berlekamp_massey_add_zeros(nmod_berlekamp_massey_t B, slong count) - # void nmod_berlekamp_massey_add_point(nmod_berlekamp_massey_t B, mp_limb_t a) - # int nmod_berlekamp_massey_reduce(nmod_berlekamp_massey_t B) - # slong nmod_berlekamp_massey_point_count(const nmod_berlekamp_massey_t B) - # const mp_limb_t * nmod_berlekamp_massey_points(const nmod_berlekamp_massey_t B) - # const nmod_poly_struct * nmod_berlekamp_massey_V_poly(const nmod_berlekamp_massey_t B) - # const nmod_poly_struct * nmod_berlekamp_massey_R_poly(const nmod_berlekamp_massey_t B) - - # void nmod_poly_init(nmod_poly_t poly, mp_limb_t n) - # void nmod_poly_init_preinv(nmod_poly_t poly, mp_limb_t n, mp_limb_t ninv) - # void nmod_poly_init2(nmod_poly_t poly, mp_limb_t n, long alloc) - # void nmod_poly_init2_preinv(nmod_poly_t poly, mp_limb_t n, mp_limb_t ninv, long alloc) - # void nmod_poly_realloc(nmod_poly_t poly, long alloc) - # void nmod_poly_clear(nmod_poly_t poly) - # void nmod_poly_fit_length(nmod_poly_t poly, long alloc) - # long nmod_poly_length(nmod_poly_t poly) - # long nmod_poly_degree(nmod_poly_t poly) - # mp_limb_t nmod_poly_modulus(nmod_poly_t poly) - # mp_bitcnt_t nmod_poly_max_bits(nmod_poly_t poly) - # void nmod_poly_set(nmod_poly_t a, nmod_poly_t b) - # void nmod_poly_swap(nmod_poly_t poly1, nmod_poly_t poly2) - # void nmod_poly_zero(nmod_poly_t res) - # void nmod_poly_truncate(nmod_poly_t poly, long len) - # void nmod_poly_reverse(nmod_poly_t output, nmod_poly_t input, long m) - # void nmod_poly_randtest(nmod_poly_t poly, flint_rand_t state, long len) - # ulong nmod_poly_get_coeff_ui(nmod_poly_t poly, ulong j) - # void nmod_poly_set_coeff_ui(nmod_poly_t poly, ulong j, ulong c) - # char * nmod_poly_get_str(nmod_poly_t poly) - # int nmod_poly_set_str(char * s, nmod_poly_t poly) - # int nmod_poly_print(nmod_poly_t a) - # int nmod_poly_equal(nmod_poly_t a, nmod_poly_t b) - # int nmod_poly_is_zero(nmod_poly_t poly) - # void nmod_poly_shift_left(nmod_poly_t res, nmod_poly_t poly, long k) - # void nmod_poly_shift_right(nmod_poly_t res, nmod_poly_t poly, long k) - # void nmod_poly_add(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2) - # void nmod_poly_sub(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2) - # void nmod_poly_neg(nmod_poly_t res, nmod_poly_t poly1) - # void nmod_poly_scalar_mul_nmod(nmod_poly_t res, nmod_poly_t poly1, mp_limb_t c) - # void nmod_poly_make_monic(nmod_poly_t output, nmod_poly_t input) - # void nmod_poly_mul(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2) - # void nmod_poly_mullow(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2, long trunc) - # void nmod_poly_pow(nmod_poly_t res, nmod_poly_t poly, ulong e) - # void nmod_poly_pow_trunc(nmod_poly_t res, nmod_poly_t poly, ulong e, long trunc) - # void nmod_poly_divrem(nmod_poly_t Q, nmod_poly_t R, nmod_poly_t A, nmod_poly_t B) - # void nmod_poly_div(nmod_poly_t Q, nmod_poly_t A, nmod_poly_t B) - # void nmod_poly_inv_series(nmod_poly_t Qinv, nmod_poly_t Q, long n) - # void nmod_poly_div_series(nmod_poly_t Q, nmod_poly_t A, nmod_poly_t B, long n) - # void nmod_poly_derivative(nmod_poly_t x_prime, nmod_poly_t x) - # void nmod_poly_integral(nmod_poly_t x_int, nmod_poly_t x) - # mp_limb_t nmod_poly_evaluate_nmod(nmod_poly_t poly, mp_limb_t c) - # void nmod_poly_compose(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2) - # void nmod_poly_gcd(nmod_poly_t G, nmod_poly_t A, nmod_poly_t B) - # void nmod_poly_xgcd(nmod_poly_t G, nmod_poly_t S, nmod_poly_t T, nmod_poly_t A, nmod_poly_t B) - # void nmod_poly_invsqrt_series(nmod_poly_t g, nmod_poly_t h, long n) - # void nmod_poly_sqrt_series(nmod_poly_t g, nmod_poly_t h, long n) - # void nmod_poly_atan_series(nmod_poly_t g, nmod_poly_t h, long n) - # void nmod_poly_tan_series(nmod_poly_t g, nmod_poly_t h, long n) - # void nmod_poly_asin_series(nmod_poly_t g, nmod_poly_t h, long n) - # void nmod_poly_sin_series(nmod_poly_t g, nmod_poly_t h, long n) - # void nmod_poly_cos_series(nmod_poly_t g, nmod_poly_t h, long n) - # void nmod_poly_asinh_series(nmod_poly_t g, nmod_poly_t h, long n) - # void nmod_poly_atanh_series(nmod_poly_t g, nmod_poly_t h, long n) - # void nmod_poly_sinh_series(nmod_poly_t g, nmod_poly_t h, long n) - # void nmod_poly_cosh_series(nmod_poly_t g, nmod_poly_t h, long n) - # void nmod_poly_tanh_series(nmod_poly_t g, nmod_poly_t h, long n) - # void nmod_poly_log_series(nmod_poly_t res, nmod_poly_t f, long n) - # void nmod_poly_exp_series(nmod_poly_t f, nmod_poly_t h, long n) - - # int nmod_poly_is_irreducible(nmod_poly_t f) - # mp_limb_t nmod_poly_factor_with_berlekamp(nmod_poly_factor_t result, nmod_poly_t poly) - # mp_limb_t nmod_poly_factor_with_cantor_zassenhaus(nmod_poly_factor_t result, nmod_poly_t poly) - # mp_limb_t nmod_poly_factor(nmod_poly_factor_t result, nmod_poly_t input) - # void nmod_poly_factor_init(nmod_poly_factor_t fac) - # void nmod_poly_factor_clear(nmod_poly_factor_t fac) diff --git a/src/flint/flintlib/nmod_vec.pxd b/src/flint/flintlib/nmod_vec.pxd deleted file mode 100644 index fd9760b9..00000000 --- a/src/flint/flintlib/nmod_vec.pxd +++ /dev/null @@ -1,10 +0,0 @@ -from flint.flintlib.flint cimport mp_limb_t, mp_bitcnt_t -from flint.flintlib.nmod cimport nmod_t - -cdef extern from "flint/nmod_vec.h": - void nmod_init(nmod_t * mod, mp_limb_t n) - mp_limb_t nmod_add(mp_limb_t a, mp_limb_t b, nmod_t mod) - mp_limb_t nmod_sub(mp_limb_t a, mp_limb_t b, nmod_t mod) - mp_limb_t nmod_neg(mp_limb_t a, nmod_t mod) - mp_limb_t nmod_mul(mp_limb_t a, mp_limb_t b, nmod_t mod) - mp_limb_t nmod_div(mp_limb_t a, mp_limb_t b, nmod_t mod) diff --git a/src/flint/flintlib/types/__init__.py b/src/flint/flintlib/types/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/flint/flintlib/acb_types.pxd b/src/flint/flintlib/types/acb.pxd similarity index 86% rename from src/flint/flintlib/acb_types.pxd rename to src/flint/flintlib/types/acb.pxd index eacba039..0d9daf57 100644 --- a/src/flint/flintlib/acb_types.pxd +++ b/src/flint/flintlib/types/acb.pxd @@ -1,5 +1,6 @@ -from flint.flintlib.flint cimport slong -from flint.flintlib.arb_types cimport arb_struct, arb_ptr, arb_poly_t +from flint.flintlib.types.flint cimport slong, ulong +from flint.flintlib.types.arb cimport arb_struct, arb_ptr, arb_poly_t, mag_struct + cdef extern from "flint/acb_types.h": @@ -26,14 +27,20 @@ cdef extern from "flint/acb_types.h": ctypedef acb_poly_struct acb_poly_t[1] + cdef extern from "flint/acb.h": + arb_ptr acb_realref(const acb_t x) arb_ptr acb_imagref(const acb_t x) + cdef extern from "flint/acb_mat.h": + acb_struct * acb_mat_entry(acb_mat_t mat, slong i, slong j) slong acb_mat_nrows(const acb_mat_t x) slong acb_mat_ncols(const acb_mat_t x) + cdef extern from "flint/acb_poly.h": + acb_ptr acb_poly_get_coeff_ptr(arb_poly_t poly, slong n) diff --git a/src/flint/flintlib/types/acb_calc.pxd b/src/flint/flintlib/types/acb_calc.pxd new file mode 100644 index 00000000..a702f0ae --- /dev/null +++ b/src/flint/flintlib/types/acb_calc.pxd @@ -0,0 +1,15 @@ +from flint.flintlib.types.flint cimport slong +from flint.flintlib.types.acb cimport acb_ptr, acb_t + +cdef extern from "flint/acb_calc.h": + + ctypedef int (*acb_calc_func_t)(acb_ptr out, const acb_t inp, void * param, slong order, slong prec) + + ctypedef struct acb_calc_integrate_opt_struct: + slong deg_limit + slong eval_limit + slong depth_limit + int use_heap + int verbose + + ctypedef acb_calc_integrate_opt_struct acb_calc_integrate_opt_t[1] diff --git a/src/flint/flintlib/types/acb_dirichlet.pxd b/src/flint/flintlib/types/acb_dirichlet.pxd new file mode 100644 index 00000000..9528a65b --- /dev/null +++ b/src/flint/flintlib/types/acb_dirichlet.pxd @@ -0,0 +1,27 @@ +from flint.flintlib.types.flint cimport ulong, slong +from flint.flintlib.types.arb cimport mag_struct +from flint.flintlib.types.acb cimport acb_t, acb_ptr, acb_struct + +cdef extern from "flint/acb_dirichlet.h": + + ctypedef struct acb_dirichlet_roots_struct: + ulong order + ulong reduced_order + acb_t z + slong size + slong depth + acb_ptr * Z + int use_pow + + ctypedef acb_dirichlet_roots_struct acb_dirichlet_roots_t[1] + + ctypedef struct acb_dirichlet_hurwitz_precomp_struct: + acb_struct s + mag_struct err + acb_ptr coeffs + int deflate + slong A + slong N + slong K + + ctypedef acb_dirichlet_hurwitz_precomp_struct acb_dirichlet_hurwitz_precomp_t[1] diff --git a/src/flint/flintlib/types/acb_theta.pxd b/src/flint/flintlib/types/acb_theta.pxd new file mode 100644 index 00000000..7a252e91 --- /dev/null +++ b/src/flint/flintlib/types/acb_theta.pxd @@ -0,0 +1,22 @@ +from flint.flintlib.types.flint cimport slong +from flint.flintlib.types.acb cimport acb_ptr, acb_srcptr, acb_t, acb_mat_t + +cdef extern from "flint/acb_theta.h": + + ctypedef struct acb_theta_eld_struct: + slong dim + slong ambient_dim + slong * last_coords + slong min + slong mid + slong max + slong nr + slong nl + acb_theta_eld_struct * rchildren + acb_theta_eld_struct * lchildren + slong nb_pts, nb_border + slong * box + + ctypedef acb_theta_eld_struct acb_theta_eld_t[1] + ctypedef void (*acb_theta_naive_worker_t)(acb_ptr, acb_srcptr, acb_srcptr, const slong *, slong, const acb_t, const slong *, slong, slong, slong, slong) + ctypedef int (*acb_theta_ql_worker_t)(acb_ptr, acb_srcptr, acb_srcptr, arb_srcptr, arb_srcptr, const acb_mat_t, slong, slong) diff --git a/src/flint/flintlib/arb_types.pxd b/src/flint/flintlib/types/arb.pxd similarity index 90% rename from src/flint/flintlib/arb_types.pxd rename to src/flint/flintlib/types/arb.pxd index e8fa4bb4..211fcdf9 100644 --- a/src/flint/flintlib/arb_types.pxd +++ b/src/flint/flintlib/types/arb.pxd @@ -1,5 +1,5 @@ -from flint.flintlib.flint cimport ulong, slong, fmpz_struct -from flint.flintlib.arf_types cimport arf_struct, arf_ptr +from flint.flintlib.types.flint cimport ulong, slong, fmpz_struct +from flint.flintlib.types.arf cimport arf_struct, arf_ptr cdef extern from "flint/arb_types.h": ctypedef struct mag_struct: diff --git a/src/flint/flintlib/arf_types.pxd b/src/flint/flintlib/types/arf.pxd similarity index 90% rename from src/flint/flintlib/arf_types.pxd rename to src/flint/flintlib/types/arf.pxd index 728b458e..1ee8dab6 100644 --- a/src/flint/flintlib/arf_types.pxd +++ b/src/flint/flintlib/types/arf.pxd @@ -1,4 +1,4 @@ -from flint.flintlib.flint cimport fmpz_struct, slong, ulong, nn_ptr +from flint.flintlib.types.flint cimport fmpz_struct, slong, ulong, nn_ptr cdef extern from "flint/arf.h": ctypedef enum arf_rnd_t: diff --git a/src/flint/flintlib/types/arith.pxd b/src/flint/flintlib/types/arith.pxd new file mode 100644 index 00000000..60e34549 --- /dev/null +++ b/src/flint/flintlib/types/arith.pxd @@ -0,0 +1,11 @@ +from flint.flintlib.types.flint cimport ulong +from flint.flintlib.types.fmpz cimport fmpz_poly_t +from flint.flintlib.functions.fmpq_poly cimport fmpq_poly_t + + +cdef extern from "flint/arith.h": + # Macros + void arith_legendre_polynomial(fmpq_poly_t v, ulong n) + void arith_chebyshev_t_polynomial(fmpz_poly_t v, ulong n) + void arith_chebyshev_u_polynomial(fmpz_poly_t v, ulong n) + void arith_cyclotomic_polynomial(fmpz_poly_t v, ulong n) diff --git a/src/flint/flintlib/types/dirichlet.pxd b/src/flint/flintlib/types/dirichlet.pxd new file mode 100644 index 00000000..0e1c70f3 --- /dev/null +++ b/src/flint/flintlib/types/dirichlet.pxd @@ -0,0 +1,26 @@ +from flint.flintlib.types.flint cimport ulong +from flint.flintlib.functions.nmod cimport nmod_t + + +cdef extern from "flint/dirichlet.h": + + ctypedef struct dirichlet_group_struct: + ulong q + ulong q_even + nmod_t mod + ulong rad_q + ulong phi_q + long neven + long num + ulong expo + void * P + ulong * generators + ulong * PHI + ctypedef dirichlet_group_struct dirichlet_group_t[1] + + ctypedef struct dirichlet_char_struct: + ulong n + ulong * log + ctypedef dirichlet_char_struct dirichlet_char_t[1] + + cdef ulong DIRICHLET_CHI_NULL diff --git a/src/flint/flintlib/flint.pxd b/src/flint/flintlib/types/flint.pxd similarity index 95% rename from src/flint/flintlib/flint.pxd rename to src/flint/flintlib/types/flint.pxd index 22166509..8db56127 100644 --- a/src/flint/flintlib/flint.pxd +++ b/src/flint/flintlib/types/flint.pxd @@ -37,8 +37,10 @@ cdef extern from "flint/fmpz.h": ctypedef const ulong * nn_srcptr ctypedef slong fmpz_struct +ctypedef fmpz_struct fmpz_t[1] cdef extern from "flint/fmpz.h": + # Macros int COEFF_IS_MPZ(fmpz_struct x) cdef extern from *: @@ -74,6 +76,10 @@ cdef extern from "flint/flint.h": mp_limb_t ninv flint_bitcnt_t norm + ctypedef struct fmpq: + fmpz_struct num + fmpz_struct den + cdef extern from *: """ /* FLINT_BITS is not known until C compile time. We need to check if long diff --git a/src/flint/flintlib/types/fmpq.pxd b/src/flint/flintlib/types/fmpq.pxd new file mode 100644 index 00000000..6f66d052 --- /dev/null +++ b/src/flint/flintlib/types/fmpq.pxd @@ -0,0 +1,43 @@ +from flint.flintlib.types.flint cimport slong, fmpz_struct, fmpz_t +from flint.flintlib.types.flint cimport fmpq as fmpq_struct +from flint.flintlib.types.fmpz cimport fmpz_mpoly_ctx_t, fmpz_mpoly_t + +cdef extern from "flint/fmpq_types.h": + + ctypedef fmpq_struct fmpq_t[1] + + ctypedef struct fmpq_mat_struct: + fmpq_struct * entries + slong r + slong c + fmpq_struct ** rows + + ctypedef fmpq_mat_struct fmpq_mat_t[1] + + ctypedef struct fmpq_poly_struct: + fmpz_struct * coeffs + slong alloc + slong length + fmpz_t den + + ctypedef fmpq_poly_struct fmpq_poly_t[1] + + ctypedef struct fmpq_mpoly_ctx_struct: + fmpz_mpoly_ctx_t zctx + + ctypedef fmpq_mpoly_ctx_struct fmpq_mpoly_ctx_t[1] + + ctypedef struct fmpq_mpoly_struct: + fmpq_t content + fmpz_mpoly_t zpoly + + ctypedef fmpq_mpoly_struct fmpq_mpoly_t[1] + + ctypedef struct fmpq_mpoly_factor_struct: + fmpq_t constant + fmpq_mpoly_struct * poly + fmpz_struct * exp + slong num + slong alloc + + ctypedef fmpq_mpoly_factor_struct fmpq_mpoly_factor_t[1] diff --git a/src/flint/flintlib/fmpz_types.pxd b/src/flint/flintlib/types/fmpz.pxd similarity index 52% rename from src/flint/flintlib/fmpz_types.pxd rename to src/flint/flintlib/types/fmpz.pxd index 8dc598a6..1a3cb374 100644 --- a/src/flint/flintlib/fmpz_types.pxd +++ b/src/flint/flintlib/types/fmpz.pxd @@ -1,16 +1,16 @@ -from flint.flintlib.flint cimport ( +from flint.flintlib.types.flint cimport ( mp_ptr, fmpz_struct, + fmpz_t, ulong, slong, flint_bitcnt_t, ) +from flint.flintlib.types.mpoly cimport mpoly_ctx_t cdef extern from "flint/fmpz_types.h": - ctypedef fmpz_struct fmpz_t[1] - ctypedef struct fmpz_preinvn_struct: mp_ptr dinv slong n @@ -48,12 +48,66 @@ cdef extern from "flint/fmpz_types.h": slong alloc ctypedef fmpz_poly_factor_struct fmpz_poly_factor_t[1] + ctypedef struct fmpz_mpoly_ctx_struct: + mpoly_ctx_t minfo + + ctypedef fmpz_mpoly_ctx_struct fmpz_mpoly_ctx_t[1] + + ctypedef struct fmpz_mpoly_struct: + fmpz_struct * coeffs + ulong * exps + slong alloc + slong length + flint_bitcnt_t bits + + ctypedef fmpz_mpoly_struct fmpz_mpoly_t[1] + + ctypedef struct fmpz_mpoly_factor_struct: + fmpz_t constant + fmpz_t constant_den + fmpz_mpoly_struct * poly + fmpz_struct * exp + slong num + slong alloc + + ctypedef fmpz_mpoly_factor_struct fmpz_mpoly_factor_t[1] + + ctypedef struct fmpz_poly_q_struct: + fmpz_poly_struct *num + fmpz_poly_struct *den + + ctypedef fmpz_poly_q_struct fmpz_poly_q_t[1] + + ctypedef struct fmpz_mpoly_q_struct: + fmpz_mpoly_struct num + fmpz_mpoly_struct den + + ctypedef fmpz_mpoly_q_struct fmpz_mpoly_q_t[1] + + ctypedef struct fmpzi_struct: + fmpz_struct a + fmpz_struct b + + ctypedef fmpzi_struct fmpzi_t[1] + cdef extern from "flint/fmpz_factor.h": # XXX: Missing from docs... void fmpz_factor_expand(fmpz_t n, const fmpz_factor_t factor) +cdef extern from "flint/fmpz_mpoly.h": + + ctypedef struct fmpz_mpoly_vec_struct: + fmpz_mpoly_struct * p + slong alloc + slong length + + ctypedef fmpz_mpoly_vec_struct fmpz_mpoly_vec_t[1] + + # Macro + fmpz_mpoly_struct * fmpz_mpoly_vec_entry(fmpz_mpoly_vec_t vec, slong i) + cdef extern from "flint/fmpz_lll.h": cdef enum _rep_type: diff --git a/src/flint/flintlib/types/fmpz_mod.pxd b/src/flint/flintlib/types/fmpz_mod.pxd new file mode 100644 index 00000000..c294290a --- /dev/null +++ b/src/flint/flintlib/types/fmpz_mod.pxd @@ -0,0 +1,92 @@ +from flint.flintlib.types.flint cimport ulong, slong, fmpz_struct, fmpz_t, nmod_t, flint_bitcnt_t +from flint.flintlib.types.fmpz cimport fmpz_struct, fmpz_preinvn_struct, fmpz_mat_struct +from flint.flintlib.types.mpoly cimport mpoly_ctx_t + + +cdef extern from "flint/fmpz_mod_types.h": + + ctypedef struct fmpz_mod_ctx_struct: + fmpz_t n + void (* add_fxn)(fmpz_t, const fmpz_t, const fmpz_t, const fmpz_mod_ctx_struct*) + void (* sub_fxn)(fmpz_t, const fmpz_t, const fmpz_t, const fmpz_mod_ctx_struct*) + void (* mul_fxn)(fmpz_t, const fmpz_t, const fmpz_t, const fmpz_mod_ctx_struct*) + nmod_t mod + ulong n_limbs[3] + ulong ninv_limbs[3] + fmpz_preinvn_struct * ninv_huge + + ctypedef fmpz_mod_ctx_struct fmpz_mod_ctx_t[1] + + ctypedef fmpz_mat_struct fmpz_mod_mat_struct + + ctypedef fmpz_mod_mat_struct fmpz_mod_mat_t[1] + + ctypedef struct fmpz_mod_poly_struct: + fmpz_struct * coeffs + slong alloc + slong length + + ctypedef fmpz_mod_poly_struct fmpz_mod_poly_t[1] + + ctypedef struct fmpz_mod_poly_factor_struct: + fmpz_mod_poly_struct * poly + slong *exp + slong num + slong alloc + + ctypedef fmpz_mod_poly_factor_struct fmpz_mod_poly_factor_t[1] + + ctypedef struct fmpz_mod_mpoly_ctx_struct: + mpoly_ctx_t minfo + fmpz_mod_ctx_t ffinfo + + ctypedef fmpz_mod_mpoly_ctx_struct fmpz_mod_mpoly_ctx_t[1] + + ctypedef struct fmpz_mod_mpoly_struct: + fmpz_struct * coeffs + ulong * exps + slong length + flint_bitcnt_t bits + slong coeffs_alloc + slong exps_alloc + + ctypedef fmpz_mod_mpoly_struct fmpz_mod_mpoly_t[1] + + ctypedef struct fmpz_mod_mpoly_factor_struct: + fmpz_t constant + fmpz_mod_mpoly_struct * poly + fmpz_struct * exp + slong num + slong alloc + + ctypedef fmpz_mod_mpoly_factor_struct fmpz_mod_mpoly_factor_t[1] + + +cdef extern from "flint/fmpz_mod.h": + + ctypedef struct fmpz_mod_discrete_log_pohlig_hellman_table_entry_struct: + fmpz_t gammapow + ulong cm + + ctypedef struct fmpz_mod_discrete_log_pohlig_hellman_entry_struct: + slong exp + ulong prime + fmpz_t gamma + fmpz_t gammainv + fmpz_t startingbeta + fmpz_t co + fmpz_t startinge + fmpz_t idem + ulong cbound + ulong dbound + fmpz_mod_discrete_log_pohlig_hellman_table_entry_struct * table # length cbound */ + + ctypedef struct fmpz_mod_discrete_log_pohlig_hellman_struct: + fmpz_mod_ctx_t fpctx + fmpz_t pm1 # p - 1 */ + fmpz_t alpha # p.r. of p */ + fmpz_t alphainv + slong num_factors # factors of p - 1 + fmpz_mod_discrete_log_pohlig_hellman_entry_struct * entries + + ctypedef fmpz_mod_discrete_log_pohlig_hellman_struct fmpz_mod_discrete_log_pohlig_hellman_t[1] diff --git a/src/flint/flintlib/fmpz_mod_mat.pxd b/src/flint/flintlib/types/fmpz_mod_mat_compat.pxd similarity index 95% rename from src/flint/flintlib/fmpz_mod_mat.pxd rename to src/flint/flintlib/types/fmpz_mod_mat_compat.pxd index 22f1b181..eadcc6a2 100644 --- a/src/flint/flintlib/fmpz_mod_mat.pxd +++ b/src/flint/flintlib/types/fmpz_mod_mat_compat.pxd @@ -1,22 +1,5 @@ -from flint.flintlib.flint cimport ( - __FLINT_RELEASE, - ulong, - slong, - fmpz_struct, - flint_rand_t -) -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.fmpz_mod cimport fmpz_mod_ctx_t -from flint.flintlib.fmpz_mat cimport fmpz_mat_t -from flint.flintlib.fmpz_mod_poly cimport fmpz_mod_poly_t - - -cdef extern from "flint/fmpz_mod_mat.h": - ctypedef struct fmpz_mod_mat_struct: - fmpz_mat_t mat - fmpz_t mod - ctypedef fmpz_mod_mat_struct fmpz_mod_mat_t[1] - +from flint.flintlib.types.flint cimport slong, fmpz_struct, fmpz_t +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_ctx_t, fmpz_mod_mat_t, fmpz_mod_poly_t cdef extern from *: """ diff --git a/src/flint/flintlib/types/fmpz_mod_poly.pxd b/src/flint/flintlib/types/fmpz_mod_poly.pxd new file mode 100644 index 00000000..688c0bc7 --- /dev/null +++ b/src/flint/flintlib/types/fmpz_mod_poly.pxd @@ -0,0 +1,72 @@ +from flint.flintlib.types.flint cimport slong, fmpz_struct, fmpz_t +from flint.flintlib.types.fmpz cimport fmpz_mat_struct +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_ctx_struct + + +cdef extern from "flint/fmpz_mod_poly.h": + + # Type definitions *********************************************************/ + ctypedef struct fmpz_mod_poly_struct: + fmpz_struct * coeffs + slong alloc + slong length + + ctypedef fmpz_mod_poly_struct fmpz_mod_poly_t[1] + + ctypedef struct fmpz_mod_poly_res_struct: + fmpz_t res + fmpz_t lc + slong len0 + slong len1 + slong off + + ctypedef fmpz_mod_poly_res_struct fmpz_mod_poly_res_t[1] + + ctypedef struct fmpz_mod_poly_frobenius_powers_2exp_struct: + fmpz_mod_poly_struct * pow + slong len + + ctypedef fmpz_mod_poly_frobenius_powers_2exp_struct fmpz_mod_poly_frobenius_powers_2exp_t[1] + + ctypedef struct fmpz_mod_poly_frobenius_powers_struct: + fmpz_mod_poly_struct * pow + slong len + + ctypedef fmpz_mod_poly_frobenius_powers_struct fmpz_mod_poly_frobenius_powers_t[1] + + ctypedef struct fmpz_mod_poly_matrix_precompute_arg_t: + fmpz_mat_struct * A + fmpz_mod_poly_struct * poly1 + fmpz_mod_poly_struct * poly2 + fmpz_mod_poly_struct * poly2inv + const fmpz_mod_ctx_struct * ctx + + ctypedef struct fmpz_mod_poly_compose_mod_precomp_preinv_arg_t: + fmpz_mat_struct * A + fmpz_mod_poly_struct * res + fmpz_mod_poly_struct * poly1 + fmpz_mod_poly_struct * poly3 + fmpz_mod_poly_struct * poly3inv + const fmpz_mod_ctx_struct * ctx + + # Radix conversion *********************************************************/ + ctypedef struct fmpz_mod_poly_radix_struct: + fmpz_struct *V + fmpz_struct *W + fmpz_struct **Rpow + fmpz_struct **Rinv + slong degR + slong k + fmpz_struct invL + + ctypedef fmpz_mod_poly_radix_struct fmpz_mod_poly_radix_t[1] + + # Berlekamp-Massey Algorithm - see fmpz_mod_poly/berlekamp_massey.c for more info ********/ + ctypedef struct fmpz_mod_berlekamp_massey_struct: + slong npoints + fmpz_mod_poly_t R0, R1 + fmpz_mod_poly_t V0, V1 + fmpz_mod_poly_t qt, rt + fmpz_mod_poly_t points + + ctypedef fmpz_mod_berlekamp_massey_struct fmpz_mod_berlekamp_massey_t[1] diff --git a/src/flint/flintlib/types/fq.pxd b/src/flint/flintlib/types/fq.pxd new file mode 100644 index 00000000..91877fbb --- /dev/null +++ b/src/flint/flintlib/types/fq.pxd @@ -0,0 +1,47 @@ +from flint.flintlib.types.flint cimport fmpz_struct, slong +from flint.flintlib.types.fmpz cimport fmpz_poly_t, fmpz_poly_struct +from flint.flintlib.functions.fmpz_mod cimport fmpz_mod_ctx_t +from flint.flintlib.functions.fmpz_mod_poly cimport fmpz_mod_poly_t + + +cdef extern from "flint/fq.h": + # Type definitions **********************************************/ + ctypedef fmpz_poly_t fq_t + ctypedef fmpz_poly_struct fq_struct + + ctypedef struct fq_ctx_struct: + fmpz_mod_ctx_t ctxp + + int sparse_modulus + int is_conway # whether field was initialized with the Flint Conway tables (assures primitivity) + + fmpz_struct * a + slong * j + slong len + + fmpz_mod_poly_t modulus + fmpz_mod_poly_t inv + + char * var + ctypedef fq_ctx_struct fq_ctx_t[1] + + ctypedef struct fq_mat_struct: + fq_struct * entries + slong r + slong s + fq_struct ** rows + ctypedef fq_mat_struct fq_mat_t[1] + + ctypedef struct fq_poly_struct: + fq_struct * coeffs + slong alloc + slong length + ctypedef fq_poly_struct fq_poly_t[1] + + ctypedef struct fq_poly_factor_struct: + fq_poly_struct * poly + slong * exp + slong num + slong alloc + + ctypedef fq_poly_factor_struct fq_poly_factor_t[1] diff --git a/src/flint/flintlib/types/fq_default.pxd b/src/flint/flintlib/types/fq_default.pxd new file mode 100644 index 00000000..f2514c0d --- /dev/null +++ b/src/flint/flintlib/types/fq_default.pxd @@ -0,0 +1,64 @@ +from flint.flintlib.types.flint cimport ulong, fmpz_t +from flint.flintlib.types.nmod cimport nmod_t, nmod_mat_t, nmod_poly_t, nmod_poly_factor_t +from flint.flintlib.types.fmpz_mod cimport fmpz_mod_ctx_t, fmpz_mod_mat_t, fmpz_mod_poly_t, fmpz_mod_poly_factor_t +from flint.flintlib.types.fq_nmod cimport fq_nmod_t, fq_nmod_ctx_t, fq_nmod_mat_t, fq_nmod_poly_t, fq_nmod_poly_factor_t +from flint.flintlib.types.fq_zech cimport fq_zech_t, fq_zech_ctx_t, fq_zech_mat_t, fq_zech_poly_t, fq_zech_poly_factor_t +from flint.flintlib.types.fq cimport fq_t, fq_ctx_t, fq_mat_t, fq_poly_t, fq_poly_factor_t + + +cdef extern from "flint/fq_default.h": + + ctypedef union fq_default_struct: + fq_t fq + fq_nmod_t fq_nmod + fq_zech_t fq_zech + ulong nmod + fmpz_t fmpz_mod + ctypedef fq_default_struct fq_default_t[1] + + ctypedef struct fq_default_fmpz_mod_ctx_struct: + fmpz_mod_ctx_t mod + fmpz_t a # minpoly is x - a + + ctypedef struct fq_default_nmod_ctx_struct: + nmod_t mod + ulong a # minpoly is x - a + + # This is how it is actually defined now: + # ctypedef gr_ctx_struct fq_default_ctx_struct; + # ctypedef fq_default_ctx_struct fq_default_ctx_t[1]; + + ctypedef union fq_default_ctx_struct: + fq_ctx_t fq + fq_nmod_ctx_t fq_nmod + fq_zech_ctx_t fq_zech + fq_default_nmod_ctx_struct nmod + fq_default_fmpz_mod_ctx_struct fmpz_mod + + ctypedef fq_default_ctx_struct fq_default_ctx_t[1] + + ctypedef union fq_default_mat_struct: + fq_mat_t fq + fq_nmod_mat_t fq_nmod + fq_zech_mat_t fq_zech + nmod_mat_t nmod + fmpz_mod_mat_t fmpz_mod + ctypedef fq_default_mat_struct fq_default_mat_t[1] + + ctypedef union fq_default_poly_struct: + fq_poly_t fq + fq_nmod_poly_t fq_nmod + fq_zech_poly_t fq_zech + nmod_poly_t nmod + fmpz_mod_poly_t fmpz_mod + + ctypedef fq_default_poly_struct fq_default_poly_t[1] + + ctypedef union fq_default_poly_factor_struct: + fq_poly_factor_t fq + fq_nmod_poly_factor_t fq_nmod + fq_zech_poly_factor_t fq_zech + nmod_poly_factor_t nmod + fmpz_mod_poly_factor_t fmpz_mod + + ctypedef fq_default_poly_factor_struct fq_default_poly_factor_t[1] diff --git a/src/flint/flintlib/types/fq_nmod.pxd b/src/flint/flintlib/types/fq_nmod.pxd new file mode 100644 index 00000000..dabb65c3 --- /dev/null +++ b/src/flint/flintlib/types/fq_nmod.pxd @@ -0,0 +1,54 @@ +from flint.flintlib.types.flint cimport mp_limb_t, slong +from flint.flintlib.functions.fmpz cimport fmpz_struct +from flint.flintlib.functions.nmod cimport nmod_t +from flint.flintlib.functions.nmod_poly cimport nmod_poly_struct, nmod_poly_t +from flint.flintlib.types.mpoly cimport mpoly_ctx_t + + +cdef extern from "flint/fq_nmod.h": + # Type definitions **********************************************/ + ctypedef nmod_poly_t fq_nmod_t + ctypedef nmod_poly_struct fq_nmod_struct + + ctypedef struct fq_nmod_ctx_struct: + fmpz_struct p + nmod_t mod + + int sparse_modulus + int is_conway # whether field was generated using Flint Conway table (assures primitivity + + mp_limb_t *a + slong *j + slong len + + nmod_poly_t modulus + nmod_poly_t inv + + char *var + ctypedef fq_nmod_ctx_struct fq_nmod_ctx_t[1] + + ctypedef struct fq_nmod_poly_struct: + fq_nmod_struct * coeffs + slong alloc + slong length + ctypedef fq_nmod_poly_struct fq_nmod_poly_t[1] + + ctypedef struct fq_nmod_poly_factor_struct: + fq_nmod_poly_struct * poly + slong * exp + slong num + slong alloc + ctypedef fq_nmod_poly_factor_struct fq_nmod_poly_factor_t[1] + + ctypedef struct fq_nmod_mat_struct: + fq_nmod_struct * entries + slong r + slong s + fq_nmod_struct ** rows + ctypedef fq_nmod_mat_struct fq_nmod_mat_t[1] + + ctypedef struct fq_nmod_mpoly_ctx_struct: + mpoly_ctx_t minfo + fq_nmod_ctx_t fqctx + + ctypedef fq_nmod_mpoly_ctx_struct fq_nmod_mpoly_ctx_t[1] diff --git a/src/flint/flintlib/types/fq_zech.pxd b/src/flint/flintlib/types/fq_zech.pxd new file mode 100644 index 00000000..0faebdc1 --- /dev/null +++ b/src/flint/flintlib/types/fq_zech.pxd @@ -0,0 +1,50 @@ +from flint.flintlib.types.flint cimport slong, ulong +from flint.flintlib.types.fq_nmod cimport fq_nmod_ctx_struct + + +cdef extern from "flint/fq_zech.h": + + ctypedef struct fq_zech_struct: + ulong value + + ctypedef fq_zech_struct fq_zech_t[1] + + ctypedef struct fq_zech_ctx_struct: + ulong qm1 # q - 1 + ulong qm1o2 # (q - 1) / 2 or 1 when p == 2 + ulong qm1opm1 # (q - 1) / (p - 1) + ulong p + double ppre + ulong prime_root # primitive root for prime subfield + ulong * zech_log_table + ulong * prime_field_table + ulong * eval_table + + fq_nmod_ctx_struct * fq_nmod_ctx + int owns_fq_nmod_ctx + int is_conway # whether field was generated using Flint Conway tables (assures primitivity) + + ctypedef fq_zech_ctx_struct fq_zech_ctx_t[1] + + ctypedef struct fq_zech_mat_struct: + fq_zech_struct * entries + slong r + slong s + fq_zech_struct ** rows + + ctypedef fq_zech_mat_struct fq_zech_mat_t[1] + + ctypedef struct fq_zech_poly_struct: + fq_zech_struct * coeffs + slong alloc + slong length + + ctypedef fq_zech_poly_struct fq_zech_poly_t[1] + + ctypedef struct fq_zech_poly_factor_struct: + fq_zech_poly_struct * poly + slong * exp + slong num + slong alloc + + ctypedef fq_zech_poly_factor_struct fq_zech_poly_factor_t[1] diff --git a/src/flint/flintlib/mpoly.pxd b/src/flint/flintlib/types/mpoly.pxd similarity index 89% rename from src/flint/flintlib/mpoly.pxd rename to src/flint/flintlib/types/mpoly.pxd index 81b7cb8d..b05300ac 100644 --- a/src/flint/flintlib/mpoly.pxd +++ b/src/flint/flintlib/types/mpoly.pxd @@ -1,6 +1,7 @@ -from flint.flintlib.flint cimport slong, FLINT_BITS +from flint.flintlib.types.flint cimport slong, FLINT_BITS cdef extern from "flint/mpoly.h": + ctypedef enum ordering_t: ORD_LEX ORD_DEGLEX diff --git a/src/flint/flintlib/types/nmod.pxd b/src/flint/flintlib/types/nmod.pxd new file mode 100644 index 00000000..1b7616e3 --- /dev/null +++ b/src/flint/flintlib/types/nmod.pxd @@ -0,0 +1,78 @@ +from flint.flintlib.types.flint cimport ulong, slong, nmod_t, fmpz_struct, nn_ptr, flint_bitcnt_t +from flint.flintlib.types.mpoly cimport mpoly_ctx_t + + +cdef extern from "flint/nmod_types.h": + + ctypedef struct nmod_mat_struct: + ulong * entries + slong r + slong c + ulong ** rows + nmod_t mod + + ctypedef nmod_mat_struct nmod_mat_t[1] + + # XXX: Undocumented function: + int nmod_mat_is_square(const nmod_mat_t mat) + + # Macros: + ulong nmod_mat_entry(nmod_mat_t mat, slong i, slong j) + + ctypedef struct nmod_poly_struct: + nn_ptr coeffs + slong alloc + slong length + nmod_t mod + + ctypedef nmod_poly_struct nmod_poly_t[1] + + ctypedef struct nmod_poly_factor_struct: + nmod_poly_struct * p + slong *exp + slong num + slong alloc + + ctypedef nmod_poly_factor_struct nmod_poly_factor_t[1] + + ctypedef struct nmod_poly_mat_struct: + nmod_poly_struct * entries + slong r + slong c + nmod_poly_struct ** rows + ulong modulus + + ctypedef nmod_poly_mat_struct nmod_poly_mat_t[1] + + ctypedef struct nmod_mpoly_ctx_struct: + mpoly_ctx_t minfo + nmod_t mod + + ctypedef nmod_mpoly_ctx_struct nmod_mpoly_ctx_t[1] + + ctypedef struct nmod_mpoly_struct: + ulong * coeffs + ulong * exps + slong length + flint_bitcnt_t bits + slong coeffs_alloc + slong exps_alloc + + ctypedef nmod_mpoly_struct nmod_mpoly_t[1] + + ctypedef struct nmod_mpoly_univar_struct: + nmod_mpoly_struct * coeffs + fmpz_struct * exps + slong alloc + slong length + + ctypedef nmod_mpoly_univar_struct nmod_mpoly_univar_t[1] + + ctypedef struct nmod_mpoly_factor_struct: + ulong constant + nmod_mpoly_struct * poly + fmpz_struct * exp + slong num + slong alloc + + ctypedef nmod_mpoly_factor_struct nmod_mpoly_factor_t[1] diff --git a/src/flint/functions/showgood.pyx b/src/flint/functions/showgood.pyx index 107142d8..4834d447 100644 --- a/src/flint/functions/showgood.pyx +++ b/src/flint/functions/showgood.pyx @@ -8,8 +8,8 @@ from flint.types.arb cimport arb from flint.types.acb cimport acb from flint.types.arb_series cimport arb_series from flint.types.acb_series cimport acb_series -from flint.flintlib.arb cimport * -from flint.flintlib.acb cimport * +from flint.flintlib.functions.arb cimport * +from flint.flintlib.functions.acb cimport * ctx = thectx diff --git a/src/flint/pyflint.pxd b/src/flint/pyflint.pxd index ec18e14c..69a0edef 100644 --- a/src/flint/pyflint.pxd +++ b/src/flint/pyflint.pxd @@ -1,4 +1,4 @@ -from flint.flintlib.arf cimport arf_rnd_t +from flint.flintlib.functions.arf cimport arf_rnd_t from flint.flint_base.flint_base cimport flint_mat from flint.flint_base.flint_base cimport flint_mpoly from flint.flint_base.flint_base cimport flint_series @@ -6,7 +6,7 @@ from flint.flint_base.flint_base cimport flint_scalar from flint.flint_base.flint_base cimport flint_poly from flint.types.fmpz cimport fmpz -from flint.flintlib.flint cimport * +from flint.flintlib.types.flint cimport * cdef flint_rand_t global_random_state diff --git a/src/flint/types/acb.pxd b/src/flint/types/acb.pxd index 5c2781f5..e5720e32 100644 --- a/src/flint/types/acb.pxd +++ b/src/flint/types/acb.pxd @@ -1,5 +1,5 @@ from flint.flint_base.flint_base cimport flint_scalar -from flint.flintlib.acb cimport acb_t +from flint.flintlib.functions.acb cimport acb_t cdef any_as_acb(x) cdef any_as_acb_or_notimplemented(x) diff --git a/src/flint/types/acb.pyx b/src/flint/types/acb.pyx index 6d9b7b5e..cae4f2f0 100644 --- a/src/flint/types/acb.pyx +++ b/src/flint/types/acb.pyx @@ -13,20 +13,20 @@ from flint.types.fmpz cimport fmpz from flint.types.fmpz cimport any_as_fmpz from flint.types.dirichlet cimport dirichlet_char -from flint.flintlib.flint cimport FMPZ_TMP, FMPZ_REF, FMPZ_UNKNOWN -from flint.flintlib.mag cimport * -from flint.flintlib.arb cimport * -from flint.flintlib.arb_types cimport arb_midref, arb_radref -from flint.flintlib.arf cimport * -from flint.flintlib.arf_types cimport ARF_RND_NEAR -from flint.flintlib.acb cimport * -from flint.flintlib.acb_types cimport acb_realref, acb_imagref -from flint.flintlib.acb_modular cimport * -from flint.flintlib.acb_hypgeom cimport * -from flint.flintlib.acb_dirichlet cimport * -from flint.flintlib.acb_elliptic cimport * -from flint.flintlib.acb_calc cimport * -from flint.flintlib.acb_dft cimport * +from flint.flintlib.types.flint cimport FMPZ_TMP, FMPZ_REF, FMPZ_UNKNOWN +from flint.flintlib.functions.mag cimport * +from flint.flintlib.functions.arb cimport * +from flint.flintlib.types.arb cimport arb_midref, arb_radref +from flint.flintlib.functions.arf cimport * +from flint.flintlib.types.arf cimport ARF_RND_NEAR +from flint.flintlib.functions.acb cimport * +from flint.flintlib.types.acb cimport acb_struct, acb_realref, acb_imagref +from flint.flintlib.functions.acb_modular cimport * +from flint.flintlib.functions.acb_hypgeom cimport * +from flint.flintlib.functions.acb_dirichlet cimport * +from flint.flintlib.functions.acb_elliptic cimport * +from flint.flintlib.functions.acb_calc cimport * +from flint.flintlib.functions.acb_dft cimport * cimport libc.stdlib cimport cython diff --git a/src/flint/types/acb_mat.pxd b/src/flint/types/acb_mat.pxd index d2401a42..e192cc4c 100644 --- a/src/flint/types/acb_mat.pxd +++ b/src/flint/types/acb_mat.pxd @@ -1,5 +1,5 @@ from flint.flint_base.flint_base cimport flint_mat -from flint.flintlib.acb_mat cimport acb_mat_t +from flint.flintlib.functions.acb_mat cimport acb_mat_t cdef class acb_mat(flint_mat): cdef acb_mat_t val diff --git a/src/flint/types/acb_mat.pyx b/src/flint/types/acb_mat.pyx index fc032cb3..988f28a6 100644 --- a/src/flint/types/acb_mat.pyx +++ b/src/flint/types/acb_mat.pyx @@ -11,11 +11,11 @@ from flint.types.acb cimport any_as_acb from flint.types.fmpz cimport fmpz from flint.types.fmpq cimport fmpq -from flint.flintlib.fmpz_mat cimport fmpz_mat_nrows, fmpz_mat_ncols -from flint.flintlib.fmpq_mat cimport fmpq_mat_nrows, fmpq_mat_ncols -from flint.flintlib.mag cimport * -from flint.flintlib.arb cimport * -from flint.flintlib.arb_types cimport ( +from flint.flintlib.functions.fmpz_mat cimport fmpz_mat_nrows, fmpz_mat_ncols +from flint.flintlib.functions.fmpq_mat cimport fmpq_mat_nrows, fmpq_mat_ncols +from flint.flintlib.functions.mag cimport * +from flint.flintlib.functions.arb cimport * +from flint.flintlib.types.arb cimport ( mag_struct, arb_radref, arb_midref, @@ -23,11 +23,11 @@ from flint.flintlib.arb_types cimport ( arb_mat_nrows, arb_mat_ncols, ) -from flint.flintlib.arb_mat cimport * -from flint.flintlib.arf cimport * -from flint.flintlib.acb cimport * -from flint.flintlib.acb_mat cimport * -from flint.flintlib.acb_types cimport ( +from flint.flintlib.functions.arb_mat cimport * +from flint.flintlib.functions.arf cimport * +from flint.flintlib.functions.acb cimport * +from flint.flintlib.functions.acb_mat cimport * +from flint.flintlib.types.acb cimport ( acb_realref, acb_imagref, acb_mat_struct, diff --git a/src/flint/types/acb_poly.pxd b/src/flint/types/acb_poly.pxd index eff7b2e3..5679a0a4 100644 --- a/src/flint/types/acb_poly.pxd +++ b/src/flint/types/acb_poly.pxd @@ -1,6 +1,6 @@ from flint.flint_base.flint_base cimport flint_poly -from flint.flintlib.acb_poly cimport acb_poly_t +from flint.flintlib.functions.acb_poly cimport acb_poly_t cdef acb_poly_set_list(acb_poly_t poly, list val, long prec) cdef class acb_poly(flint_poly): diff --git a/src/flint/types/acb_poly.pyx b/src/flint/types/acb_poly.pyx index fa3ab9c7..f6316f6c 100644 --- a/src/flint/types/acb_poly.pyx +++ b/src/flint/types/acb_poly.pyx @@ -12,13 +12,13 @@ from flint.types.fmpz cimport fmpz from flint.types.fmpq cimport fmpq from flint.types.arb cimport arb -from flint.flintlib.mag cimport * -from flint.flintlib.arf cimport * -from flint.flintlib.arb cimport * -from flint.flintlib.arb_types cimport arb_midref -from flint.flintlib.acb cimport * -from flint.flintlib.acb_types cimport acb_struct -from flint.flintlib.acb_poly cimport * +from flint.flintlib.functions.mag cimport * +from flint.flintlib.functions.arf cimport * +from flint.flintlib.functions.arb cimport * +from flint.flintlib.types.arb cimport arb_midref +from flint.flintlib.functions.acb cimport * +from flint.flintlib.types.acb cimport acb_struct +from flint.flintlib.functions.acb_poly cimport * cimport libc.stdlib cdef acb_poly_coerce_operands(x, y): diff --git a/src/flint/types/acb_series.pxd b/src/flint/types/acb_series.pxd index 296744a9..6ff883fa 100644 --- a/src/flint/types/acb_series.pxd +++ b/src/flint/types/acb_series.pxd @@ -1,6 +1,6 @@ from flint.flint_base.flint_base cimport flint_series -from flint.flintlib.acb_poly cimport acb_poly_t +from flint.flintlib.functions.acb_poly cimport acb_poly_t cdef class acb_series(flint_series): cdef acb_poly_t val diff --git a/src/flint/types/acb_series.pyx b/src/flint/types/acb_series.pyx index 6fe65740..7aac621c 100644 --- a/src/flint/types/acb_series.pyx +++ b/src/flint/types/acb_series.pyx @@ -15,11 +15,11 @@ from flint.types.dirichlet cimport dirichlet_char from flint.types.fmpz cimport fmpz from flint.types.fmpq cimport fmpq from flint.types.fmpz cimport any_as_fmpz -from flint.flintlib.acb cimport * -from flint.flintlib.acb_poly cimport * -from flint.flintlib.acb_modular cimport * -from flint.flintlib.acb_hypgeom cimport * -from flint.flintlib.acb_dirichlet cimport * +from flint.flintlib.functions.acb cimport * +from flint.flintlib.functions.acb_poly cimport * +from flint.flintlib.functions.acb_modular cimport * +from flint.flintlib.functions.acb_hypgeom cimport * +from flint.flintlib.functions.acb_dirichlet cimport * cimport cython cimport libc.stdlib diff --git a/src/flint/types/acb_theta.pyx b/src/flint/types/acb_theta.pyx index a5f3bd68..09e2e168 100644 --- a/src/flint/types/acb_theta.pyx +++ b/src/flint/types/acb_theta.pyx @@ -1,12 +1,12 @@ from flint.flint_base.flint_context cimport getprec from flint.types.acb cimport acb from flint.types.acb_mat cimport acb_mat -from flint.flintlib.acb cimport * -from flint.flintlib.acb_types cimport ( +from flint.flintlib.functions.acb cimport * +from flint.flintlib.types.acb cimport ( acb_mat_entry, ) -from flint.flintlib.acb_mat cimport * -from flint.flintlib.acb_theta cimport * +from flint.flintlib.functions.acb_mat cimport * +from flint.flintlib.functions.acb_theta cimport * def acb_theta(acb_mat z, acb_mat tau, ulong square=False): diff --git a/src/flint/types/arb.pxd b/src/flint/types/arb.pxd index fbe1447e..df422ff3 100644 --- a/src/flint/types/arb.pxd +++ b/src/flint/types/arb.pxd @@ -1,6 +1,6 @@ from flint.flint_base.flint_base cimport flint_scalar -from flint.flintlib.arb cimport arb_t +from flint.flintlib.functions.arb cimport arb_t cdef any_as_arb_or_notimplemented(x) cdef int arb_set_python(arb_t x, obj, bint allow_conversion) except -1 diff --git a/src/flint/types/arb.pyx b/src/flint/types/arb.pyx index 3205dadf..2553a92f 100644 --- a/src/flint/types/arb.pyx +++ b/src/flint/types/arb.pyx @@ -11,13 +11,13 @@ from flint.types.arf cimport arf from flint.types.fmpq cimport fmpq from flint.types.fmpz cimport fmpz -from flint.flintlib.flint cimport FMPZ_UNKNOWN, FMPZ_TMP, FMPZ_REF -from flint.flintlib.mag cimport * -from flint.flintlib.fmpz cimport fmpz_init, fmpz_clear -from flint.flintlib.arf cimport * -from flint.flintlib.arf_types cimport ARF_RND_NEAR, ARF_RND_DOWN -from flint.flintlib.arb cimport * -from flint.flintlib.arb_types cimport ( +from flint.flintlib.types.flint cimport FMPZ_UNKNOWN, FMPZ_TMP, FMPZ_REF +from flint.flintlib.functions.mag cimport * +from flint.flintlib.functions.fmpz cimport fmpz_init, fmpz_clear +from flint.flintlib.functions.arf cimport * +from flint.flintlib.types.arf cimport ARF_RND_NEAR, ARF_RND_DOWN +from flint.flintlib.functions.arb cimport * +from flint.flintlib.types.arb cimport ( arb_struct, arb_midref, arb_radref, @@ -25,8 +25,8 @@ from flint.flintlib.arb_types cimport ( ARB_STR_MORE, ARB_STR_CONDENSE, ) -from flint.flintlib.arb_hypgeom cimport * -from flint.flintlib.acb_dirichlet cimport * +from flint.flintlib.functions.arb_hypgeom cimport * +from flint.flintlib.functions.acb_dirichlet cimport * cimport libc.stdlib cimport cython diff --git a/src/flint/types/arb_mat.pxd b/src/flint/types/arb_mat.pxd index b7c578c7..1da1fcd7 100644 --- a/src/flint/types/arb_mat.pxd +++ b/src/flint/types/arb_mat.pxd @@ -1,5 +1,5 @@ from flint.flint_base.flint_base cimport flint_mat -from flint.flintlib.arb_mat cimport arb_mat_t +from flint.flintlib.functions.arb_mat cimport arb_mat_t cdef class arb_mat(flint_mat): cdef arb_mat_t val diff --git a/src/flint/types/arb_mat.pyx b/src/flint/types/arb_mat.pyx index d0bcddb0..92097a1d 100644 --- a/src/flint/types/arb_mat.pyx +++ b/src/flint/types/arb_mat.pyx @@ -12,18 +12,18 @@ from flint.types.acb cimport acb from flint.types.acb_mat cimport acb_mat from flint.types.acb cimport any_as_acb -from flint.flintlib.fmpz_mat cimport fmpz_mat_nrows, fmpz_mat_ncols -from flint.flintlib.fmpq_mat cimport fmpq_mat_nrows, fmpq_mat_ncols -from flint.flintlib.arf cimport * -from flint.flintlib.arb cimport * -from flint.flintlib.arb_types cimport ( +from flint.flintlib.functions.fmpz_mat cimport fmpz_mat_nrows, fmpz_mat_ncols +from flint.flintlib.functions.fmpq_mat cimport fmpq_mat_nrows, fmpq_mat_ncols +from flint.flintlib.functions.arf cimport * +from flint.flintlib.functions.arb cimport * +from flint.flintlib.types.arb cimport ( arb_radref, arb_midref, arb_mat_nrows, arb_mat_ncols, arb_mat_entry, ) -from flint.flintlib.arb_mat cimport * +from flint.flintlib.functions.arb_mat cimport * cimport cython cdef arb_mat_coerce_operands(x, y): diff --git a/src/flint/types/arb_poly.pxd b/src/flint/types/arb_poly.pxd index 536e39dc..b1790aeb 100644 --- a/src/flint/types/arb_poly.pxd +++ b/src/flint/types/arb_poly.pxd @@ -1,5 +1,5 @@ from flint.flint_base.flint_base cimport flint_poly -from flint.flintlib.arb_poly cimport arb_poly_t +from flint.flintlib.functions.arb_poly cimport arb_poly_t cdef arb_poly_set_list(arb_poly_t poly, list val, long prec) diff --git a/src/flint/types/arb_poly.pyx b/src/flint/types/arb_poly.pyx index 512c28b0..aae3025a 100644 --- a/src/flint/types/arb_poly.pyx +++ b/src/flint/types/arb_poly.pyx @@ -12,9 +12,9 @@ from flint.types.fmpq cimport fmpq from flint.types.acb cimport acb from flint.types.acb_poly cimport acb_poly -from flint.flintlib.arb_types cimport arb_struct, arb_poly_set_arb -from flint.flintlib.arb cimport * -from flint.flintlib.arb_poly cimport * +from flint.flintlib.types.arb cimport arb_struct, arb_poly_set_arb +from flint.flintlib.functions.arb cimport * +from flint.flintlib.functions.arb_poly cimport * cimport libc.stdlib cdef arb_poly_coerce_operands(x, y): diff --git a/src/flint/types/arb_series.pxd b/src/flint/types/arb_series.pxd index efbd35ad..a26e17cb 100644 --- a/src/flint/types/arb_series.pxd +++ b/src/flint/types/arb_series.pxd @@ -1,6 +1,6 @@ from flint.flint_base.flint_base cimport flint_series -from flint.flintlib.arb_poly cimport arb_poly_t +from flint.flintlib.functions.arb_poly cimport arb_poly_t cdef class arb_series(flint_series): cdef arb_poly_t val diff --git a/src/flint/types/arb_series.pyx b/src/flint/types/arb_series.pyx index 9d0ebe5e..f18e38a5 100644 --- a/src/flint/types/arb_series.pyx +++ b/src/flint/types/arb_series.pyx @@ -15,9 +15,9 @@ from flint.types.acb cimport acb from flint.types.acb_poly cimport acb_poly from flint.types.acb_series cimport acb_series -from flint.flintlib.arb cimport * -from flint.flintlib.arb_poly cimport * -from flint.flintlib.arb_hypgeom cimport * +from flint.flintlib.functions.arb cimport * +from flint.flintlib.functions.arb_poly cimport * +from flint.flintlib.functions.arb_hypgeom cimport * ctx = thectx diff --git a/src/flint/types/arf.pxd b/src/flint/types/arf.pxd index 1784585b..5fcdc898 100644 --- a/src/flint/types/arf.pxd +++ b/src/flint/types/arf.pxd @@ -1,4 +1,4 @@ -from flint.flintlib.arf cimport arf_t +from flint.flintlib.functions.arf cimport arf_t cdef class arf: cdef arf_t val diff --git a/src/flint/types/arf.pyx b/src/flint/types/arf.pyx index 5f1e930a..e9eba4fb 100644 --- a/src/flint/types/arf.pyx +++ b/src/flint/types/arf.pyx @@ -7,7 +7,7 @@ from flint.types.fmpz cimport fmpz from flint.types.fmpz cimport any_as_fmpz from flint.types.arb cimport arb -from flint.flintlib.arf cimport * +from flint.flintlib.functions.arf cimport * ctx = thectx diff --git a/src/flint/types/dirichlet.pxd b/src/flint/types/dirichlet.pxd index 18988a7a..3ebffc72 100644 --- a/src/flint/types/dirichlet.pxd +++ b/src/flint/types/dirichlet.pxd @@ -1,5 +1,5 @@ -from flint.flintlib.dirichlet cimport dirichlet_group_t -from flint.flintlib.dirichlet cimport dirichlet_char_t +from flint.flintlib.functions.dirichlet cimport dirichlet_group_t +from flint.flintlib.functions.dirichlet cimport dirichlet_char_t cdef class dirichlet_group(object): cdef dirichlet_group_t val diff --git a/src/flint/types/dirichlet.pyx b/src/flint/types/dirichlet.pyx index ff8cab95..4938b883 100644 --- a/src/flint/types/dirichlet.pyx +++ b/src/flint/types/dirichlet.pyx @@ -3,10 +3,11 @@ from flint.types.acb cimport any_as_acb from flint.types.acb cimport acb from flint.types.fmpz cimport fmpz -from flint.flintlib.ulong_extras cimport n_gcd -from flint.flintlib.fmpz cimport fmpz_get_ui -from flint.flintlib.dirichlet cimport * -from flint.flintlib.acb_dirichlet cimport * +from flint.flintlib.functions.ulong_extras cimport n_gcd +from flint.flintlib.functions.fmpz cimport fmpz_get_ui +from flint.flintlib.functions.dirichlet cimport * +from flint.flintlib.types.dirichlet cimport DIRICHLET_CHI_NULL +from flint.flintlib.functions.acb_dirichlet cimport * cdef dict _dirichlet_group_cache = {} diff --git a/src/flint/types/fmpq.pxd b/src/flint/types/fmpq.pxd index 5445fdc3..f421b679 100644 --- a/src/flint/types/fmpq.pxd +++ b/src/flint/types/fmpq.pxd @@ -1,5 +1,5 @@ from flint.flint_base.flint_base cimport flint_scalar -from flint.flintlib.fmpq cimport fmpq_t +from flint.flintlib.functions.fmpq cimport fmpq_t cdef int fmpq_set_any_ref(fmpq_t x, obj) cdef any_as_fmpq(obj) diff --git a/src/flint/types/fmpq.pyx b/src/flint/types/fmpq.pyx index c4569426..4481f20f 100644 --- a/src/flint/types/fmpq.pyx +++ b/src/flint/types/fmpq.pyx @@ -4,15 +4,15 @@ from flint.types.fmpz cimport fmpz_set_any_ref from flint.types.fmpz cimport fmpz from flint.types.fmpz cimport any_as_fmpz -from flint.flintlib.flint cimport FMPZ_UNKNOWN, FMPZ_TMP, FMPZ_REF -from flint.flintlib.fmpz cimport fmpz_set, fmpz_one -from flint.flintlib.fmpz cimport fmpz_is_zero, fmpz_sgn -from flint.flintlib.fmpz cimport fmpz_fdiv_q, fmpz_bits -from flint.flintlib.fmpz cimport fmpz_cdiv_q -from flint.flintlib.fmpz cimport fmpz_tdiv_q -from flint.flintlib.fmpz cimport fmpz_clear -from flint.flintlib.fmpq cimport * -from flint.flintlib.bernoulli cimport * +from flint.flintlib.types.flint cimport FMPZ_UNKNOWN, FMPZ_TMP, FMPZ_REF +from flint.flintlib.functions.fmpz cimport fmpz_set, fmpz_one +from flint.flintlib.functions.fmpz cimport fmpz_is_zero, fmpz_sgn +from flint.flintlib.functions.fmpz cimport fmpz_fdiv_q, fmpz_bits +from flint.flintlib.functions.fmpz cimport fmpz_cdiv_q +from flint.flintlib.functions.fmpz cimport fmpz_tdiv_q +from flint.flintlib.functions.fmpz cimport fmpz_clear +from flint.flintlib.functions.fmpq cimport * +from flint.flintlib.functions.bernoulli cimport * cdef int fmpq_set_any_ref(fmpq_t x, obj): cdef int status diff --git a/src/flint/types/fmpq_mat.pxd b/src/flint/types/fmpq_mat.pxd index 702002f8..b97e2d4d 100644 --- a/src/flint/types/fmpq_mat.pxd +++ b/src/flint/types/fmpq_mat.pxd @@ -1,6 +1,6 @@ from flint.flint_base.flint_base cimport flint_mat -from flint.flintlib.fmpq_mat cimport fmpq_mat_t +from flint.flintlib.functions.fmpq_mat cimport fmpq_mat_t from flint.types.fmpz cimport fmpz from flint.types.fmpq cimport fmpq from flint.types.fmpz_mat cimport fmpz_mat diff --git a/src/flint/types/fmpq_mat.pyx b/src/flint/types/fmpq_mat.pyx index 0daf80dd..364e6726 100644 --- a/src/flint/types/fmpq_mat.pyx +++ b/src/flint/types/fmpq_mat.pyx @@ -4,10 +4,11 @@ from flint.types.fmpq_poly cimport fmpq_poly from flint.types.fmpq cimport any_as_fmpq from flint.types.fmpz cimport any_as_fmpz -from flint.flintlib.fmpz_mat cimport fmpz_mat_nrows, fmpz_mat_ncols -from flint.flintlib.fmpq cimport fmpq_set, fmpq_numref, fmpq_denref -from flint.flintlib.fmpq_poly cimport fmpq_poly_init -from flint.flintlib.fmpq_mat cimport * +from flint.flintlib.types.fmpq cimport fmpq_mat_struct +from flint.flintlib.functions.fmpz_mat cimport fmpz_mat_nrows, fmpz_mat_ncols +from flint.flintlib.functions.fmpq cimport fmpq_set, fmpq_numref, fmpq_denref +from flint.flintlib.functions.fmpq_poly cimport fmpq_poly_init +from flint.flintlib.functions.fmpq_mat cimport * cimport cython diff --git a/src/flint/types/fmpq_mpoly.pxd b/src/flint/types/fmpq_mpoly.pxd index 166f8479..a89871f2 100644 --- a/src/flint/types/fmpq_mpoly.pxd +++ b/src/flint/types/fmpq_mpoly.pxd @@ -1,13 +1,13 @@ from flint.flint_base.flint_base cimport flint_mpoly from flint.flint_base.flint_base cimport flint_mpoly_context -from flint.flintlib.fmpq_mpoly cimport ( +from flint.flintlib.functions.fmpq_mpoly cimport ( fmpq_mpoly_ctx_t, fmpq_mpoly_t, fmpq_mpoly_struct, fmpq_mpoly_init, ) -from flint.flintlib.flint cimport slong +from flint.flintlib.types.flint cimport slong from flint.types.fmpz_mpoly cimport fmpz_mpoly_ctx diff --git a/src/flint/types/fmpq_mpoly.pyx b/src/flint/types/fmpq_mpoly.pyx index 14bc9098..cda577fb 100644 --- a/src/flint/types/fmpq_mpoly.pyx +++ b/src/flint/types/fmpq_mpoly.pyx @@ -15,8 +15,8 @@ from flint.types.fmpq_vec cimport fmpq_vec from flint.types.fmpz cimport fmpz, any_as_fmpz from flint.types.fmpz_mpoly cimport fmpz_mpoly -from flint.flintlib.fmpq cimport fmpq_set, fmpq_one -from flint.flintlib.fmpq_mpoly cimport ( +from flint.flintlib.functions.fmpq cimport fmpq_set, fmpq_one +from flint.flintlib.functions.fmpq_mpoly cimport ( fmpq_mpoly_add, fmpq_mpoly_add_fmpq, fmpq_mpoly_clear, @@ -58,7 +58,7 @@ from flint.flintlib.fmpq_mpoly cimport ( fmpq_mpoly_sub_fmpq, fmpq_mpoly_total_degree_fmpz, ) -from flint.flintlib.fmpq_mpoly_factor cimport ( +from flint.flintlib.functions.fmpq_mpoly_factor cimport ( fmpq_mpoly_factor, fmpq_mpoly_factor_clear, fmpq_mpoly_factor_init, @@ -66,8 +66,8 @@ from flint.flintlib.fmpq_mpoly_factor cimport ( fmpq_mpoly_factor_t, ) -from flint.flintlib.fmpz cimport fmpz_init_set -from flint.flintlib.fmpz_mpoly cimport fmpz_mpoly_set +from flint.flintlib.functions.fmpz cimport fmpz_init_set +from flint.flintlib.functions.fmpz_mpoly cimport fmpz_mpoly_set from cpython.object cimport Py_EQ, Py_NE cimport libc.stdlib diff --git a/src/flint/types/fmpq_poly.pxd b/src/flint/types/fmpq_poly.pxd index b50d015d..6e41361d 100644 --- a/src/flint/types/fmpq_poly.pxd +++ b/src/flint/types/fmpq_poly.pxd @@ -1,5 +1,5 @@ from flint.flint_base.flint_base cimport flint_poly -from flint.flintlib.fmpq_poly cimport fmpq_poly_t +from flint.flintlib.functions.fmpq_poly cimport fmpq_poly_t cdef fmpq_poly_set_list(fmpq_poly_t poly, list val) cdef any_as_fmpq_poly(obj) diff --git a/src/flint/types/fmpq_poly.pyx b/src/flint/types/fmpq_poly.pyx index f9e6df48..ff4879d4 100644 --- a/src/flint/types/fmpq_poly.pyx +++ b/src/flint/types/fmpq_poly.pyx @@ -8,13 +8,13 @@ from flint.types.fmpq cimport any_as_fmpq from flint.types.fmpz cimport fmpz from flint.types.fmpz cimport any_as_fmpz -from flint.flintlib.fmpz cimport fmpz_is_zero -from flint.flintlib.fmpz cimport fmpz_set -from flint.flintlib.fmpq cimport fmpq_is_zero -from flint.flintlib.fmpq_poly cimport * -from flint.flintlib.arith cimport arith_bernoulli_polynomial -from flint.flintlib.arith cimport arith_euler_polynomial -from flint.flintlib.arith cimport arith_legendre_polynomial +from flint.flintlib.functions.fmpz cimport fmpz_is_zero +from flint.flintlib.functions.fmpz cimport fmpz_set +from flint.flintlib.functions.fmpq cimport fmpq_is_zero +from flint.flintlib.functions.fmpq_poly cimport * +from flint.flintlib.functions.arith cimport arith_bernoulli_polynomial +from flint.flintlib.functions.arith cimport arith_euler_polynomial +from flint.flintlib.types.arith cimport arith_legendre_polynomial from flint.utils.flint_exceptions import DomainError diff --git a/src/flint/types/fmpq_series.pxd b/src/flint/types/fmpq_series.pxd index 968791b8..8bfc5905 100644 --- a/src/flint/types/fmpq_series.pxd +++ b/src/flint/types/fmpq_series.pxd @@ -1,5 +1,5 @@ from flint.flint_base.flint_base cimport flint_series -from flint.flintlib.fmpq_poly cimport fmpq_poly_t +from flint.flintlib.functions.fmpq_poly cimport fmpq_poly_t cdef class fmpq_series(flint_series): cdef fmpq_poly_t val diff --git a/src/flint/types/fmpq_series.pyx b/src/flint/types/fmpq_series.pyx index 9dd59fbe..a2ee0260 100644 --- a/src/flint/types/fmpq_series.pyx +++ b/src/flint/types/fmpq_series.pyx @@ -15,8 +15,8 @@ from flint.types.acb_poly cimport acb_poly from flint.types.acb_series cimport acb_series from flint.types.fmpz cimport any_as_fmpz -from flint.flintlib.fmpz cimport fmpz_is_zero, fmpz_set, fmpz_equal -from flint.flintlib.fmpq_poly cimport * +from flint.flintlib.functions.fmpz cimport fmpz_is_zero, fmpz_set, fmpz_equal +from flint.flintlib.functions.fmpq_poly cimport * cdef fmpq_series_coerce_operands(x, y): if isinstance(y, (int, fmpz, fmpz_poly, fmpz_series, fmpq, fmpq_poly)): diff --git a/src/flint/types/fmpq_vec.pxd b/src/flint/types/fmpq_vec.pxd index 5ca2772c..08db8d39 100644 --- a/src/flint/types/fmpq_vec.pxd +++ b/src/flint/types/fmpq_vec.pxd @@ -1,5 +1,5 @@ -from flint.flintlib.fmpq cimport fmpq_struct -from flint.flintlib.flint cimport slong +from flint.flintlib.types.flint cimport slong +from flint.flintlib.types.fmpq cimport fmpq_struct cdef class fmpq_vec: cdef fmpq_struct *val diff --git a/src/flint/types/fmpq_vec.pyx b/src/flint/types/fmpq_vec.pyx index a4d01d79..298b6b16 100644 --- a/src/flint/types/fmpq_vec.pyx +++ b/src/flint/types/fmpq_vec.pyx @@ -1,5 +1,6 @@ -from flint.flintlib.fmpq cimport fmpq_struct, fmpq_set, fmpq_init -from flint.flintlib.fmpq_vec cimport _fmpq_vec_init, _fmpq_vec_clear +from flint.flintlib.types.fmpq cimport fmpq_struct +from flint.flintlib.functions.fmpq cimport fmpq_set, fmpq_init +from flint.flintlib.functions.fmpq_vec cimport _fmpq_vec_init, _fmpq_vec_clear from flint.types.fmpq cimport fmpq, any_as_fmpq diff --git a/src/flint/types/fmpz.pxd b/src/flint/types/fmpz.pxd index bad897ee..f48b059c 100644 --- a/src/flint/types/fmpz.pxd +++ b/src/flint/types/fmpz.pxd @@ -1,9 +1,9 @@ from cpython.long cimport PyLong_Check from flint.flint_base.flint_base cimport flint_scalar from flint.utils.conversion cimport chars_from_str -from flint.flintlib.flint cimport slong, pylong_as_slong -from flint.flintlib.flint cimport PyObject -from flint.flintlib.fmpz cimport fmpz_t, fmpz_set_str, fmpz_set_si +from flint.flintlib.types.flint cimport slong, pylong_as_slong +from flint.flintlib.types.flint cimport PyObject +from flint.flintlib.functions.fmpz cimport fmpz_t, fmpz_set_str, fmpz_set_si cdef int fmpz_set_any_ref(fmpz_t x, obj) cdef fmpz_get_intlong(fmpz_t x) diff --git a/src/flint/types/fmpz.pyx b/src/flint/types/fmpz.pyx index 4a06df60..9ae1dec8 100644 --- a/src/flint/types/fmpz.pyx +++ b/src/flint/types/fmpz.pyx @@ -4,12 +4,12 @@ from flint.utils.conversion cimport chars_from_str from flint.utils.conversion cimport str_from_chars, _str_trunc cimport libc.stdlib -from flint.flintlib.flint cimport FMPZ_REF, FMPZ_TMP, FMPZ_UNKNOWN, COEFF_IS_MPZ -from flint.flintlib.fmpz cimport * -from flint.flintlib.fmpz_types cimport fmpz_factor_expand -from flint.flintlib.fmpz_factor cimport * -from flint.flintlib.arith cimport * -from flint.flintlib.partitions cimport * +from flint.flintlib.types.flint cimport FMPZ_REF, FMPZ_TMP, FMPZ_UNKNOWN, COEFF_IS_MPZ +from flint.flintlib.functions.fmpz cimport * +from flint.flintlib.types.fmpz cimport fmpz_factor_expand +from flint.flintlib.functions.fmpz_factor cimport * +from flint.flintlib.functions.arith cimport * +from flint.flintlib.functions.partitions cimport * from flint.utils.flint_exceptions import DomainError @@ -862,7 +862,7 @@ cdef class fmpz(flint_scalar): 605263138639095300 """ cdef fmpz v = fmpz() - arith_divisor_sigma(v.val, k, n.val) + fmpz_divisor_sigma(v.val, k, n.val) return v def euler_phi(n): @@ -875,7 +875,7 @@ cdef class fmpz(flint_scalar): 39366 """ cdef fmpz v = fmpz() - arith_euler_phi(v.val, n.val) + fmpz_euler_phi(v.val, n.val) return v def __hash__(self): diff --git a/src/flint/types/fmpz_mat.pxd b/src/flint/types/fmpz_mat.pxd index ae482653..c8cca24f 100644 --- a/src/flint/types/fmpz_mat.pxd +++ b/src/flint/types/fmpz_mat.pxd @@ -1,5 +1,5 @@ from flint.flint_base.flint_base cimport flint_mat -from flint.flintlib.fmpz_mat cimport fmpz_mat_t +from flint.flintlib.functions.fmpz_mat cimport fmpz_mat_t from flint.types.fmpz cimport fmpz cdef any_as_fmpz_mat(obj) diff --git a/src/flint/types/fmpz_mat.pyx b/src/flint/types/fmpz_mat.pyx index 8d8d6319..097a90ae 100644 --- a/src/flint/types/fmpz_mat.pyx +++ b/src/flint/types/fmpz_mat.pyx @@ -8,19 +8,19 @@ from flint.pyflint cimport global_random_state from flint.types.fmpq cimport any_as_fmpq cimport cython -from flint.flintlib.fmpz cimport fmpz_set, fmpz_init, fmpz_clear -from flint.flintlib.fmpz cimport fmpz_is_zero, fmpz_is_pm1 -from flint.flintlib.fmpz_types cimport ( +from flint.flintlib.functions.fmpz cimport fmpz_set, fmpz_init, fmpz_clear +from flint.flintlib.functions.fmpz cimport fmpz_is_zero, fmpz_is_pm1 +from flint.flintlib.types.fmpz cimport ( fmpz_mat_struct, rep_type, gram_type, ) -from flint.flintlib.fmpz_poly cimport fmpz_poly_init -from flint.flintlib.fmpz_mat cimport * -from flint.flintlib.fmpz_lll cimport * -from flint.flintlib.fmpq_mat cimport fmpq_mat_init -from flint.flintlib.fmpq_mat cimport fmpq_mat_set_fmpz_mat_div_fmpz -from flint.flintlib.fmpq_mat cimport fmpq_mat_solve_fmpz_mat +from flint.flintlib.functions.fmpz_poly cimport fmpz_poly_init +from flint.flintlib.functions.fmpz_mat cimport * +from flint.flintlib.functions.fmpz_lll cimport * +from flint.flintlib.functions.fmpq_mat cimport fmpq_mat_init +from flint.flintlib.functions.fmpq_mat cimport fmpq_mat_set_fmpz_mat_div_fmpz +from flint.flintlib.functions.fmpq_mat cimport fmpq_mat_solve_fmpz_mat from flint.utils.flint_exceptions import DomainError diff --git a/src/flint/types/fmpz_mod.pxd b/src/flint/types/fmpz_mod.pxd index 7133dfdb..9de08b3c 100644 --- a/src/flint/types/fmpz_mod.pxd +++ b/src/flint/types/fmpz_mod.pxd @@ -1,6 +1,6 @@ from flint.flint_base.flint_base cimport flint_scalar -from flint.flintlib.fmpz cimport fmpz_struct, fmpz_t -from flint.flintlib.fmpz_mod cimport ( +from flint.flintlib.functions.fmpz cimport fmpz_struct, fmpz_t +from flint.flintlib.functions.fmpz_mod cimport ( fmpz_mod_ctx_t, fmpz_mod_discrete_log_pohlig_hellman_t ) diff --git a/src/flint/types/fmpz_mod.pyx b/src/flint/types/fmpz_mod.pyx index 6d208f1a..c92ed650 100644 --- a/src/flint/types/fmpz_mod.pyx +++ b/src/flint/types/fmpz_mod.pyx @@ -1,5 +1,5 @@ from flint.pyflint cimport global_random_state -from flint.flintlib.fmpz cimport( +from flint.flintlib.functions.fmpz cimport( fmpz_t, fmpz_one, fmpz_zero, @@ -17,8 +17,8 @@ from flint.flintlib.fmpz cimport( fmpz_is_zero, fmpz_randm ) -from flint.flintlib.fmpz cimport fmpz_mod as fmpz_type_mod -from flint.flintlib.fmpz_mod cimport * +from flint.flintlib.functions.fmpz cimport fmpz_mod as fmpz_type_mod +from flint.flintlib.functions.fmpz_mod cimport * from flint.utils.typecheck cimport typecheck from flint.flint_base.flint_base cimport flint_scalar diff --git a/src/flint/types/fmpz_mod_mat.pxd b/src/flint/types/fmpz_mod_mat.pxd index bf76f93b..7117bb67 100644 --- a/src/flint/types/fmpz_mod_mat.pxd +++ b/src/flint/types/fmpz_mod_mat.pxd @@ -1,6 +1,6 @@ -from flint.flintlib.flint cimport slong -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.fmpz_mod_mat cimport fmpz_mod_mat_t +from flint.flintlib.types.flint cimport slong +from flint.flintlib.functions.fmpz cimport fmpz_t +from flint.flintlib.functions.fmpz_mod_mat cimport fmpz_mod_mat_t from flint.flint_base.flint_base cimport flint_mat from flint.types.fmpz_mod cimport fmpz_mod_ctx, fmpz_mod diff --git a/src/flint/types/fmpz_mod_mat.pyx b/src/flint/types/fmpz_mod_mat.pyx index f4aac95f..91d7839f 100644 --- a/src/flint/types/fmpz_mod_mat.pyx +++ b/src/flint/types/fmpz_mod_mat.pyx @@ -1,13 +1,13 @@ from flint.utils.typecheck cimport ( typecheck, ) -from flint.flintlib.fmpz cimport ( +from flint.flintlib.functions.fmpz cimport ( fmpz_struct, fmpz_t, fmpz_init_set, fmpz_set, ) -from flint.flintlib.fmpz_mod_mat cimport ( +from flint.flintlib.types.fmpz_mod_mat_compat cimport ( compat_fmpz_mod_mat_init, compat_fmpz_mod_mat_init_set, compat_fmpz_mod_mat_clear, diff --git a/src/flint/types/fmpz_mod_mpoly.pxd b/src/flint/types/fmpz_mod_mpoly.pxd index 3f259c29..50058243 100644 --- a/src/flint/types/fmpz_mod_mpoly.pxd +++ b/src/flint/types/fmpz_mod_mpoly.pxd @@ -1,12 +1,12 @@ from flint.flint_base.flint_base cimport flint_mpoly, flint_mpoly_context -from flint.flintlib.fmpz_mod_mpoly cimport ( +from flint.flintlib.functions.fmpz_mod_mpoly cimport ( fmpz_mod_mpoly_ctx_t, fmpz_mod_mpoly_t, fmpz_mod_mpoly_init, fmpz_mod_mpoly_struct ) -from flint.flintlib.flint cimport slong +from flint.flintlib.types.flint cimport slong cdef inline init_fmpz_mod_mpoly(fmpz_mod_mpoly var, fmpz_mod_mpoly_ctx ctx): var.ctx = ctx diff --git a/src/flint/types/fmpz_mod_mpoly.pyx b/src/flint/types/fmpz_mod_mpoly.pyx index 0ef2877b..287b43e2 100644 --- a/src/flint/types/fmpz_mod_mpoly.pyx +++ b/src/flint/types/fmpz_mod_mpoly.pyx @@ -14,8 +14,8 @@ from flint.types.fmpz_vec cimport fmpz_vec from flint.types.fmpz_mod cimport fmpz_mod from flint.types.nmod cimport nmod -from flint.flintlib.fmpz cimport fmpz_set -from flint.flintlib.fmpz_mod_mpoly cimport ( +from flint.flintlib.functions.fmpz cimport fmpz_set +from flint.flintlib.functions.fmpz_mod_mpoly cimport ( fmpz_mod_mpoly_add, fmpz_mod_mpoly_add_fmpz, fmpz_mod_mpoly_clear, @@ -55,7 +55,7 @@ from flint.flintlib.fmpz_mod_mpoly cimport ( fmpz_mod_mpoly_total_degree_fmpz, fmpz_mod_mpoly_sqrt, ) -from flint.flintlib.fmpz_mod_mpoly_factor cimport ( +from flint.flintlib.functions.fmpz_mod_mpoly_factor cimport ( fmpz_mod_mpoly_factor, fmpz_mod_mpoly_factor_clear, fmpz_mod_mpoly_factor_init, diff --git a/src/flint/types/fmpz_mod_poly.pxd b/src/flint/types/fmpz_mod_poly.pxd index 6b79278f..f6510979 100644 --- a/src/flint/types/fmpz_mod_poly.pxd +++ b/src/flint/types/fmpz_mod_poly.pxd @@ -1,4 +1,4 @@ -from flint.flintlib.fmpz_mod_poly cimport * +from flint.flintlib.functions.fmpz_mod_poly cimport * from flint.flint_base.flint_base cimport flint_poly from flint.types.fmpz_mod cimport fmpz_mod_ctx diff --git a/src/flint/types/fmpz_mod_poly.pyx b/src/flint/types/fmpz_mod_poly.pyx index 69e17e71..a28e56be 100644 --- a/src/flint/types/fmpz_mod_poly.pyx +++ b/src/flint/types/fmpz_mod_poly.pyx @@ -1,10 +1,10 @@ from cpython.list cimport PyList_GET_SIZE from flint.pyflint cimport global_random_state -from flint.flintlib.fmpz_mod cimport fmpz_mod_neg, fmpz_mod_set_fmpz -from flint.flintlib.fmpz_mod_poly cimport * -from flint.flintlib.fmpz_mod_poly_factor cimport * -from flint.flintlib.fmpz cimport( +from flint.flintlib.functions.fmpz_mod cimport fmpz_mod_neg, fmpz_mod_set_fmpz +from flint.flintlib.functions.fmpz_mod_poly cimport * +from flint.flintlib.functions.fmpz_mod_poly_factor cimport * +from flint.flintlib.functions.fmpz cimport( fmpz_init, fmpz_clear, fmpz_is_one diff --git a/src/flint/types/fmpz_mpoly.pxd b/src/flint/types/fmpz_mpoly.pxd index 953bb82e..8c4c58ad 100644 --- a/src/flint/types/fmpz_mpoly.pxd +++ b/src/flint/types/fmpz_mpoly.pxd @@ -1,7 +1,13 @@ from flint.flint_base.flint_base cimport flint_mpoly, flint_mpoly_context -from flint.flintlib.fmpz_mpoly cimport fmpz_mpoly_ctx_t, fmpz_mpoly_vec_t, fmpz_mpoly_t, fmpz_mpoly_init, fmpz_mpoly_struct -from flint.flintlib.flint cimport slong +from flint.flintlib.types.fmpz cimport ( + fmpz_mpoly_ctx_t, + fmpz_mpoly_vec_t, + fmpz_mpoly_t, + fmpz_mpoly_struct, +) +from flint.flintlib.functions.fmpz_mpoly cimport fmpz_mpoly_init + cdef inline init_fmpz_mpoly(fmpz_mpoly var, fmpz_mpoly_ctx ctx): var.ctx = ctx diff --git a/src/flint/types/fmpz_mpoly.pyx b/src/flint/types/fmpz_mpoly.pyx index c7a3528e..fbb88373 100644 --- a/src/flint/types/fmpz_mpoly.pyx +++ b/src/flint/types/fmpz_mpoly.pyx @@ -11,8 +11,11 @@ from flint.utils.flint_exceptions import DomainError, IncompatibleContextError from flint.types.fmpz cimport any_as_fmpz, fmpz from flint.types.fmpz_vec cimport fmpz_vec -from flint.flintlib.fmpz cimport fmpz_set -from flint.flintlib.fmpz_mpoly cimport ( +from flint.flintlib.types.flint cimport slong +from flint.flintlib.types.fmpz cimport fmpz_mpoly_vec_entry +from flint.flintlib.functions.fmpz cimport fmpz_set + +from flint.flintlib.functions.fmpz_mpoly cimport ( fmpz_mpoly_add, fmpz_mpoly_add_fmpz, fmpz_mpoly_buchberger_naive, @@ -58,12 +61,11 @@ from flint.flintlib.fmpz_mpoly cimport ( fmpz_mpoly_vec_autoreduction, fmpz_mpoly_vec_autoreduction_groebner, fmpz_mpoly_vec_clear, - fmpz_mpoly_vec_entry, fmpz_mpoly_vec_init, fmpz_mpoly_vec_is_autoreduced, fmpz_mpoly_vec_is_groebner, ) -from flint.flintlib.fmpz_mpoly_factor cimport ( +from flint.flintlib.functions.fmpz_mpoly_factor cimport ( fmpz_mpoly_factor, fmpz_mpoly_factor_clear, fmpz_mpoly_factor_init, diff --git a/src/flint/types/fmpz_poly.pxd b/src/flint/types/fmpz_poly.pxd index a91ad265..253622ea 100644 --- a/src/flint/types/fmpz_poly.pxd +++ b/src/flint/types/fmpz_poly.pxd @@ -1,6 +1,6 @@ from flint.flint_base.flint_base cimport flint_poly -from flint.flintlib.fmpz_poly cimport fmpz_poly_t +from flint.flintlib.functions.fmpz_poly cimport fmpz_poly_t cdef fmpz_poly_set_list(fmpz_poly_t poly, list val) diff --git a/src/flint/types/fmpz_poly.pyx b/src/flint/types/fmpz_poly.pyx index ec9b761f..7a1c33c3 100644 --- a/src/flint/types/fmpz_poly.pyx +++ b/src/flint/types/fmpz_poly.pyx @@ -15,16 +15,17 @@ from flint.types.arb cimport any_as_arb_or_notimplemented from flint.types.arb cimport arb from flint.types.acb cimport any_as_acb_or_notimplemented cimport libc.stdlib -from flint.flintlib.fmpz cimport fmpz_init, fmpz_clear, fmpz_set -from flint.flintlib.fmpz cimport fmpz_is_zero, fmpz_is_one, fmpz_equal_si, fmpz_equal -from flint.flintlib.acb_modular cimport * -from flint.flintlib.ulong_extras cimport n_is_prime -from flint.flintlib.fmpz_poly cimport * -from flint.flintlib.fmpz_poly_factor cimport * -from flint.flintlib.arith cimport * -from flint.flintlib.acb cimport * -from flint.flintlib.arb_poly cimport * -from flint.flintlib.arb_fmpz_poly cimport * +from flint.flintlib.functions.fmpz cimport fmpz_init, fmpz_clear, fmpz_set +from flint.flintlib.functions.fmpz cimport fmpz_is_zero, fmpz_is_one, fmpz_equal_si, fmpz_equal +from flint.flintlib.functions.acb_modular cimport * +from flint.flintlib.functions.ulong_extras cimport n_is_prime +from flint.flintlib.functions.fmpz_poly cimport * +from flint.flintlib.functions.fmpz_poly_factor cimport * +from flint.flintlib.functions.arith cimport * +from flint.flintlib.types.arith cimport arith_chebyshev_t_polynomial, arith_chebyshev_u_polynomial +from flint.flintlib.functions.acb cimport * +from flint.flintlib.functions.arb_poly cimport * +from flint.flintlib.functions.arb_fmpz_poly cimport * from flint.utils.flint_exceptions import DomainError diff --git a/src/flint/types/fmpz_series.pxd b/src/flint/types/fmpz_series.pxd index 3c476a28..9efd3911 100644 --- a/src/flint/types/fmpz_series.pxd +++ b/src/flint/types/fmpz_series.pxd @@ -1,6 +1,6 @@ from flint.flint_base.flint_base cimport flint_series -from flint.flintlib.fmpz_poly cimport fmpz_poly_t +from flint.flintlib.functions.fmpz_poly cimport fmpz_poly_t cdef class fmpz_series(flint_series): cdef fmpz_poly_t val diff --git a/src/flint/types/fmpz_series.pyx b/src/flint/types/fmpz_series.pyx index d7ac00ef..d0292991 100644 --- a/src/flint/types/fmpz_series.pyx +++ b/src/flint/types/fmpz_series.pyx @@ -14,8 +14,8 @@ from flint.types.acb cimport acb from flint.types.acb_poly cimport acb_poly from flint.types.acb_series cimport acb_series -from flint.flintlib.fmpz cimport fmpz_is_zero, fmpz_is_pm1 -from flint.flintlib.fmpz_poly cimport * +from flint.flintlib.functions.fmpz cimport fmpz_is_zero, fmpz_is_pm1 +from flint.flintlib.functions.fmpz_poly cimport * cdef fmpz_series_coerce_operands(x, y): if isinstance(y, (int, fmpz, fmpz_poly)): diff --git a/src/flint/types/fmpz_vec.pxd b/src/flint/types/fmpz_vec.pxd index 6e4b1cf7..4c36c77f 100644 --- a/src/flint/types/fmpz_vec.pxd +++ b/src/flint/types/fmpz_vec.pxd @@ -1,5 +1,5 @@ -from flint.flintlib.fmpz cimport fmpz_struct -from flint.flintlib.flint cimport slong +from flint.flintlib.functions.fmpz cimport fmpz_struct +from flint.flintlib.types.flint cimport slong cdef class fmpz_vec: cdef fmpz_struct *val diff --git a/src/flint/types/fmpz_vec.pyx b/src/flint/types/fmpz_vec.pyx index 6f8b2044..70854e54 100644 --- a/src/flint/types/fmpz_vec.pyx +++ b/src/flint/types/fmpz_vec.pyx @@ -1,5 +1,5 @@ -from flint.flintlib.fmpz cimport fmpz_struct, fmpz_set, fmpz_init_set -from flint.flintlib.fmpz_vec cimport _fmpz_vec_init, _fmpz_vec_clear +from flint.flintlib.functions.fmpz cimport fmpz_struct, fmpz_set, fmpz_init_set +from flint.flintlib.functions.fmpz_vec cimport _fmpz_vec_init, _fmpz_vec_clear from flint.types.fmpz cimport fmpz, any_as_fmpz diff --git a/src/flint/types/fq_default.pxd b/src/flint/types/fq_default.pxd index 02692281..ddb64ef6 100644 --- a/src/flint/types/fq_default.pxd +++ b/src/flint/types/fq_default.pxd @@ -1,4 +1,4 @@ -from flint.flintlib.fq_default cimport * +from flint.flintlib.functions.fq_default cimport * from flint.types.fmpz cimport fmpz from flint.flint_base.flint_base cimport flint_scalar diff --git a/src/flint/types/fq_default_poly.pxd b/src/flint/types/fq_default_poly.pxd index cec35dcf..e1a7255c 100644 --- a/src/flint/types/fq_default_poly.pxd +++ b/src/flint/types/fq_default_poly.pxd @@ -1,6 +1,6 @@ -from flint.flintlib.fq_default_poly cimport * -from flint.flintlib.fq_default_poly_factor cimport * -from flint.flintlib.fq_default cimport fq_default_neg +from flint.flintlib.functions.fq_default_poly cimport * +from flint.flintlib.functions.fq_default_poly_factor cimport * +from flint.flintlib.functions.fq_default cimport fq_default_neg from flint.flint_base.flint_base cimport flint_poly from flint.types.fq_default cimport fq_default_ctx diff --git a/src/flint/types/nmod.pxd b/src/flint/types/nmod.pxd index 15b6fbc4..44625f59 100644 --- a/src/flint/types/nmod.pxd +++ b/src/flint/types/nmod.pxd @@ -1,6 +1,6 @@ from flint.flint_base.flint_base cimport flint_scalar -from flint.flintlib.flint cimport mp_limb_t -from flint.flintlib.nmod cimport nmod_t +from flint.flintlib.types.flint cimport mp_limb_t +from flint.flintlib.functions.nmod cimport nmod_t cdef int any_as_nmod(mp_limb_t * val, obj, nmod_t mod) except -1 diff --git a/src/flint/types/nmod.pyx b/src/flint/types/nmod.pyx index 68796c4f..0f4d7c3f 100644 --- a/src/flint/types/nmod.pyx +++ b/src/flint/types/nmod.pyx @@ -5,14 +5,20 @@ from flint.types.fmpz cimport any_as_fmpz from flint.types.fmpz cimport fmpz from flint.types.fmpq cimport fmpq -from flint.flintlib.flint cimport ulong -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.nmod cimport nmod_pow_fmpz -from flint.flintlib.nmod_vec cimport * -from flint.flintlib.fmpz cimport fmpz_fdiv_ui, fmpz_init, fmpz_clear -from flint.flintlib.fmpz cimport fmpz_set_ui, fmpz_get_ui -from flint.flintlib.fmpq cimport fmpq_mod_fmpz -from flint.flintlib.ulong_extras cimport n_gcdinv, n_sqrtmod +from flint.flintlib.types.flint cimport ulong, nmod_t, mp_limb_t +from flint.flintlib.functions.fmpz cimport fmpz_t +from flint.flintlib.functions.nmod cimport ( + nmod_init, + nmod_pow_fmpz, + nmod_neg, + nmod_add, + nmod_sub, + nmod_mul, +) +from flint.flintlib.functions.fmpz cimport fmpz_fdiv_ui, fmpz_init, fmpz_clear +from flint.flintlib.functions.fmpz cimport fmpz_set_ui, fmpz_get_ui +from flint.flintlib.functions.fmpq cimport fmpq_mod_fmpz +from flint.flintlib.functions.ulong_extras cimport n_gcdinv, n_sqrtmod from flint.utils.flint_exceptions import DomainError diff --git a/src/flint/types/nmod_mat.pxd b/src/flint/types/nmod_mat.pxd index 0b8336d1..b6fe89b6 100644 --- a/src/flint/types/nmod_mat.pxd +++ b/src/flint/types/nmod_mat.pxd @@ -1,7 +1,7 @@ from flint.flint_base.flint_base cimport flint_mat -from flint.flintlib.nmod_mat cimport nmod_mat_t -from flint.flintlib.flint cimport mp_limb_t +from flint.flintlib.functions.nmod_mat cimport nmod_mat_t +from flint.flintlib.types.flint cimport mp_limb_t cdef class nmod_mat(flint_mat): cdef nmod_mat_t val diff --git a/src/flint/types/nmod_mat.pyx b/src/flint/types/nmod_mat.pyx index 5a54cdce..60f12f5c 100644 --- a/src/flint/types/nmod_mat.pyx +++ b/src/flint/types/nmod_mat.pyx @@ -1,24 +1,28 @@ cimport cython -from flint.flintlib.flint cimport ulong, mp_limb_t -from flint.flintlib.nmod cimport nmod_t +from flint.flintlib.types.flint cimport ulong, mp_limb_t +from flint.flintlib.functions.nmod cimport nmod_t -from flint.flintlib.nmod_poly cimport ( +from flint.flintlib.functions.nmod_poly cimport ( nmod_poly_init, ) -from flint.flintlib.fmpz_mat cimport fmpz_mat_nrows, fmpz_mat_ncols -from flint.flintlib.fmpz_mat cimport fmpz_mat_get_nmod_mat +from flint.flintlib.functions.fmpz_mat cimport fmpz_mat_nrows, fmpz_mat_ncols +from flint.flintlib.functions.fmpz_mat cimport fmpz_mat_get_nmod_mat -from flint.flintlib.nmod_mat cimport ( - nmod_mat_struct, +from flint.flintlib.types.nmod cimport nmod_mat_struct + +from flint.flintlib.types.nmod cimport ( + nmod_mat_is_square, + nmod_mat_entry, +) + +from flint.flintlib.functions.nmod_mat cimport ( nmod_mat_init, nmod_mat_init_set, nmod_mat_clear, nmod_mat_nrows, nmod_mat_ncols, - nmod_mat_is_square, - nmod_mat_entry, nmod_mat_set_entry, nmod_mat_equal, nmod_mat_is_zero, diff --git a/src/flint/types/nmod_mpoly.pxd b/src/flint/types/nmod_mpoly.pxd index a7249f32..3626208f 100644 --- a/src/flint/types/nmod_mpoly.pxd +++ b/src/flint/types/nmod_mpoly.pxd @@ -1,12 +1,12 @@ from flint.flint_base.flint_base cimport flint_mpoly, flint_mpoly_context -from flint.flintlib.nmod_mpoly cimport ( +from flint.flintlib.functions.nmod_mpoly cimport ( nmod_mpoly_ctx_t, nmod_mpoly_t, nmod_mpoly_init, nmod_mpoly_struct ) -from flint.flintlib.flint cimport slong, ulong +from flint.flintlib.types.flint cimport slong, ulong cdef inline init_nmod_mpoly(nmod_mpoly var, nmod_mpoly_ctx ctx): var.ctx = ctx diff --git a/src/flint/types/nmod_mpoly.pyx b/src/flint/types/nmod_mpoly.pyx index 54ed769e..8af80b47 100644 --- a/src/flint/types/nmod_mpoly.pyx +++ b/src/flint/types/nmod_mpoly.pyx @@ -15,10 +15,10 @@ from flint.types.fmpz_mod cimport fmpz_mod from flint.types.nmod cimport nmod -from flint.flintlib.flint cimport SIZEOF_ULONG -from flint.flintlib.fmpz cimport fmpz_set -from flint.flintlib.nmod cimport fmpz_get_nmod -from flint.flintlib.nmod_mpoly cimport ( +from flint.flintlib.types.flint cimport SIZEOF_ULONG +from flint.flintlib.functions.fmpz cimport fmpz_set, fmpz_get_nmod + +from flint.flintlib.functions.nmod_mpoly cimport ( nmod_mpoly_add, nmod_mpoly_add_ui, nmod_mpoly_clear, @@ -58,14 +58,14 @@ from flint.flintlib.nmod_mpoly cimport ( nmod_mpoly_total_degree_fmpz, nmod_mpoly_sqrt, ) -from flint.flintlib.nmod_mpoly_factor cimport ( +from flint.flintlib.functions.nmod_mpoly_factor cimport ( nmod_mpoly_factor, nmod_mpoly_factor_clear, nmod_mpoly_factor_init, nmod_mpoly_factor_squarefree, nmod_mpoly_factor_t, ) -from flint.flintlib.ulong_extras cimport n_is_prime +from flint.flintlib.functions.ulong_extras cimport n_is_prime from cpython.object cimport Py_EQ, Py_NE cimport libc.stdlib diff --git a/src/flint/types/nmod_poly.pxd b/src/flint/types/nmod_poly.pxd index c0d1cd85..fe872bde 100644 --- a/src/flint/types/nmod_poly.pxd +++ b/src/flint/types/nmod_poly.pxd @@ -1,7 +1,7 @@ from flint.flint_base.flint_base cimport flint_poly -from flint.flintlib.nmod_poly cimport nmod_poly_t -from flint.flintlib.flint cimport mp_limb_t +from flint.flintlib.functions.nmod_poly cimport nmod_poly_t +from flint.flintlib.types.flint cimport mp_limb_t cdef class nmod_poly(flint_poly): cdef nmod_poly_t val diff --git a/src/flint/types/nmod_poly.pyx b/src/flint/types/nmod_poly.pyx index b9259676..8727d601 100644 --- a/src/flint/types/nmod_poly.pyx +++ b/src/flint/types/nmod_poly.pyx @@ -7,10 +7,10 @@ from flint.types.fmpz_poly cimport fmpz_poly from flint.types.nmod cimport any_as_nmod from flint.types.nmod cimport nmod -from flint.flintlib.nmod_vec cimport * -from flint.flintlib.nmod_poly cimport * -from flint.flintlib.nmod_poly_factor cimport * -from flint.flintlib.fmpz_poly cimport fmpz_poly_get_nmod_poly +from flint.flintlib.functions.nmod cimport nmod_init +from flint.flintlib.functions.nmod_poly cimport * +from flint.flintlib.functions.nmod_poly_factor cimport * +from flint.flintlib.functions.fmpz_poly cimport fmpz_poly_get_nmod_poly from flint.utils.flint_exceptions import DomainError