diff --git a/bin/all_rst_to_pxd.sh b/bin/all_rst_to_pxd.sh new file mode 100755 index 00000000..6562c85f --- /dev/null +++ b/bin/all_rst_to_pxd.sh @@ -0,0 +1,26 @@ +#!/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\ + " + +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 +done diff --git a/bin/rst_to_pxd.py b/bin/rst_to_pxd.py index f6091b1f..5092ca54 100755 --- a/bin/rst_to_pxd.py +++ b/bin/rst_to_pxd.py @@ -40,11 +40,16 @@ # recognize a function definition in rst is_func = re.compile(r"\.\.( )+(c:)?function( )*::") # rename types to avoid python -- c name collisions -rename_types = [(re.compile(r"\bfmpz\b"),"fmpz_struct"),(re.compile(r"\bfmpq\b"), "fmpq_struct")] +rename_types = [ + (re.compile(r"\bfmpz\b"),"fmpz_struct"), + (re.compile(r"\bfmpq\b"), "fmpq_struct"), + (re.compile(r"\bin\b"), "in_"), + (re.compile(r"\blambda\b"), "lambda_"), +] # comment out functions which use these types comment_types = re.compile(r"(\bFILE\b)|(\bmpz_t\b)|(\bmpq_t\b)") comment_set = set(["FILE", "mpz_t", "mpq_t"]) -c_types = set(["char", "short", "long", "int", "float", "double"]) +c_types = set(["void", "char", "short", "long", "int", "float", "double"]) type_modifers = re.compile(r"\*|(\bconst\b)|(\bunsigned\b)|(\bsigned\b)") import_dict = {} @@ -79,13 +84,15 @@ def undecorate(str): remove variable name, const, ``*``, etc. to just get types """ ret = str.strip() - ret = ret[:ret.rfind(' ')] + if ' ' in ret: + ret = ret[:ret.rfind(' ')] ret = re.sub(type_modifers, '', ret) return ret.strip() def get_parameter_types(str): params = str[str.find("(") + 1 : str.rfind(")")].split(",") - return [undecorate(s) for s in params] + params.append(str.split()[0]) + return [undecorate(s) for s in params if s] def clean_types(function): ret = function.strip() @@ -98,8 +105,15 @@ def get_functions(file): Get a list of functions from an rst file """ ret = [] + macros = [] in_list = False for line in file: + # Keep track of the macros + # We want to give them types in cython... + if line.startswith('.. macro'): + macros.append(line.strip()) + continue + m = is_func.match(line) if m: ret.append( clean_types(line[m.end():])) @@ -110,7 +124,7 @@ def get_functions(file): in_list = False else: ret.append(clean_types(line)) - return ret + return ret, macros def get_all_types(function_list): ret = set() @@ -119,6 +133,11 @@ def get_all_types(function_list): ret.add(t) return ret + +def has_types(line, types): + return any(t in types for t in get_parameter_types(line)) + + def gen_imports(function_list): """ Generate import statements for known functions. @@ -132,10 +151,12 @@ def gen_imports(function_list): imports[import_dict[t]].append(t) else: ret.add(t) - for k,v in imports.items(): - types = ", ".join(v) + for k,v in sorted(imports.items()): + types = ", ".join(sorted(v)) print("from flint.flintlib." + k + " cimport " + types) - return ret + return sorted(ret) + + def generate_pxd_file(h_name, opts): fill_import_dict(opts.flint_lib_dir) @@ -146,14 +167,18 @@ def generate_pxd_file(h_name, opts): docdir = opts.flint_doc_dir name = name[6:] with open(os.path.join(docdir, name + ".rst")) as f: - l = get_functions(f) - s = gen_imports(l) + l, macros = get_functions(f) + unknown_types = gen_imports(l) + print() + for t in unknown_types: + print("# unknown type " + t) print() - print ("\n# unimported types ", s - comment_set) + for m in macros: + print("# " + m) print() print(r'cdef extern from "' + h_name +r'.h":') for f in l: - if comment_types.search(f): + if has_types(f, unknown_types): print(" # " + f) else: print(" " + f) diff --git a/src/flint/flint_base/flint_context.pxd b/src/flint/flint_base/flint_context.pxd index 89bf34c0..e9672f50 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 cimport ( +from flint.flintlib.arf_types cimport ( arf_rnd_t, ) diff --git a/src/flint/flint_base/flint_context.pyx b/src/flint/flint_base/flint_context.pyx index 761390a4..dca6f08f 100644 --- a/src/flint/flint_base/flint_context.pyx +++ b/src/flint/flint_base/flint_context.pyx @@ -1,4 +1,4 @@ -from flint.flintlib.arf cimport ARF_RND_DOWN +from flint.flintlib.arf_types cimport arf_rnd_t from flint.flintlib.flint cimport ( flint_cleanup, flint_get_num_threads, @@ -12,7 +12,7 @@ cdef class FlintContext: def default(self): self.pretty = True - self.rnd = ARF_RND_DOWN + self.rnd = arf_rnd_t.ARF_RND_DOWN self.prec = 53 self.unicode = False self.threads = 1 diff --git a/src/flint/flintlib/acb.pxd b/src/flint/flintlib/acb.pxd index 61f5bd52..c16a60de 100644 --- a/src/flint/flintlib/acb.pxd +++ b/src/flint/flintlib/acb.pxd @@ -1,22 +1,16 @@ -from flint.flintlib.flint cimport ulong, slong, flint_rand_t -from flint.flintlib.arb cimport arb_struct, arb_t, arb_ptr +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 cimport fmpz_t, fmpz_struct -from flint.flintlib.arf cimport arf_t, arf_srcptr -from flint.flintlib.mag cimport mag_t, mag_srcptr +from flint.flintlib.fmpz_types cimport fmpz_t -cdef extern from "flint/acb.h": - ctypedef struct acb_struct: - arb_struct real - arb_struct imag - - ctypedef acb_struct * acb_ptr - ctypedef const acb_struct * acb_srcptr - ctypedef acb_struct acb_t[1] +# unknown type FILE - arb_ptr acb_realref(const acb_t x) - arb_ptr acb_imagref(const acb_t x) +# .. macro:: acb_realref(x) +# .. macro:: acb_imagref(x) +cdef extern from "flint/acb.h": void acb_init(acb_t x) void acb_clear(acb_t x) acb_ptr _acb_vec_init(slong n) @@ -47,12 +41,16 @@ cdef extern from "flint/acb.h": void acb_add_error_arb(acb_t x, const arb_t err) void acb_get_mid(acb_t m, const acb_t x) void acb_print(const acb_t x) + # void acb_fprint(FILE * file, const acb_t x) void acb_printd(const acb_t x, slong digits) + # void acb_fprintd(FILE * file, const acb_t x, slong digits) void acb_printn(const acb_t x, slong digits, ulong flags) + # void acb_fprintn(FILE * file, const acb_t x, slong digits, ulong flags) void acb_randtest(acb_t z, flint_rand_t state, slong prec, slong mag_bits) void acb_randtest_special(acb_t z, flint_rand_t state, slong prec, slong mag_bits) void acb_randtest_precise(acb_t z, flint_rand_t state, slong prec, slong mag_bits) void acb_randtest_param(acb_t z, flint_rand_t state, slong prec, slong mag_bits) + void acb_urandom(acb_t z, flint_rand_t state, slong prec) int acb_is_zero(const acb_t z) int acb_is_one(const acb_t z) int acb_is_finite(const acb_t z) @@ -105,6 +103,7 @@ cdef extern from "flint/acb.h": void acb_sub(acb_t z, const acb_t x, const acb_t y, slong prec) void acb_mul_onei(acb_t z, const acb_t x) void acb_div_onei(acb_t z, const acb_t x) + void acb_mul_i_pow_si(acb_t z, const acb_t x, slong k) void acb_mul_ui(acb_t z, const acb_t x, ulong y, slong prec) void acb_mul_si(acb_t z, const acb_t x, slong y, slong prec) void acb_mul_fmpz(acb_t z, const acb_t x, const fmpz_t y, slong prec) @@ -144,6 +143,7 @@ cdef extern from "flint/acb.h": void acb_sqrt_analytic(acb_t r, const acb_t z, int analytic, slong prec) void acb_rsqrt(acb_t r, const acb_t z, slong prec) void acb_rsqrt_analytic(acb_t r, const acb_t z, int analytic, slong prec) + void acb_sqrts(acb_t y1, acb_t y2, const acb_t x, slong prec) void acb_quadratic_roots_fmpz(acb_t r1, acb_t r2, const fmpz_t a, const fmpz_t b, const fmpz_t c, slong prec) void acb_root_ui(acb_t r, const acb_t z, ulong k, slong prec) void acb_pow_fmpz(acb_t y, const acb_t b, const fmpz_t e, slong prec) @@ -227,9 +227,16 @@ cdef extern from "flint/acb.h": void _acb_vec_zero(acb_ptr A, slong n) int _acb_vec_is_zero(acb_srcptr vec, slong len) int _acb_vec_is_real(acb_srcptr v, slong len) + int _acb_vec_is_finite(acb_srcptr vec, slong len) + int _acb_vec_equal(acb_srcptr vec1, acb_srcptr vec2, slong len) + int _acb_vec_overlaps(acb_srcptr vec1, acb_srcptr vec2, slong len) + int _acb_vec_contains(acb_srcptr vec1, acb_srcptr vec2, slong len) void _acb_vec_set(acb_ptr res, acb_srcptr vec, slong len) void _acb_vec_set_round(acb_ptr res, acb_srcptr vec, slong len, slong prec) void _acb_vec_swap(acb_ptr vec1, acb_ptr vec2, slong len) + void _acb_vec_get_real(arb_ptr re, acb_srcptr vec, slong len) + void _acb_vec_get_imag(arb_ptr im, acb_srcptr vec, slong len) + void _acb_vec_set_real_imag(acb_ptr vec, arb_srcptr re, arb_srcptr im, slong len) void _acb_vec_neg(acb_ptr res, acb_srcptr vec, slong len) void _acb_vec_add(acb_ptr res, acb_srcptr vec1, acb_srcptr vec2, slong len, slong prec) void _acb_vec_sub(acb_ptr res, acb_srcptr vec1, acb_srcptr vec2, slong len, slong prec) @@ -245,6 +252,7 @@ cdef extern from "flint/acb.h": void _acb_vec_scalar_div_arb(acb_ptr res, acb_srcptr vec, slong len, const arb_t c, slong prec) void _acb_vec_scalar_mul_fmpz(acb_ptr res, acb_srcptr vec, slong len, const fmpz_t c, slong prec) void _acb_vec_scalar_div_fmpz(acb_ptr res, acb_srcptr vec, slong len, const fmpz_t c, slong prec) + void _acb_vec_sqr(acb_ptr res, acb_srcptr vec, slong len, slong prec) slong _acb_vec_bits(acb_srcptr vec, slong len) void _acb_vec_set_powers(acb_ptr xs, const acb_t x, slong len, slong prec) void _acb_vec_unit_roots(acb_ptr z, slong order, slong len, slong prec) @@ -254,3 +262,5 @@ cdef extern from "flint/acb.h": void _acb_vec_trim(acb_ptr res, acb_srcptr vec, slong len) int _acb_vec_get_unique_fmpz_vec(fmpz_struct * res, acb_srcptr vec, slong len) void _acb_vec_sort_pretty(acb_ptr vec, slong len) + void _acb_vec_printd(acb_srcptr vec, slong len, slong digits) + void _acb_vec_printn(acb_srcptr vec, slong len, slong digits, ulong flags) diff --git a/src/flint/flintlib/acb_dirichlet.pxd b/src/flint/flintlib/acb_dirichlet.pxd index 17f05471..b93d221b 100644 --- a/src/flint/flintlib/acb_dirichlet.pxd +++ b/src/flint/flintlib/acb_dirichlet.pxd @@ -3,9 +3,8 @@ 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 cimport arb_t, arb_ptr -from flint.flintlib.mag cimport mag_t, mag_struct -from flint.flintlib.acb cimport acb_struct, acb_srcptr +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 diff --git a/src/flint/flintlib/acb_hypgeom.pxd b/src/flint/flintlib/acb_hypgeom.pxd index 75c52058..418a364c 100644 --- a/src/flint/flintlib/acb_hypgeom.pxd +++ b/src/flint/flintlib/acb_hypgeom.pxd @@ -1,7 +1,12 @@ -from flint.flintlib.acb cimport acb_t, acb_srcptr, acb_ptr -from flint.flintlib.acb_poly cimport acb_poly_t, acb_poly_struct -from flint.flintlib.mag cimport mag_t 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 cdef extern from "flint/acb_hypgeom.h": # from here on is parsed diff --git a/src/flint/flintlib/acb_mat.pxd b/src/flint/flintlib/acb_mat.pxd index 72366980..d80ce1de 100644 --- a/src/flint/flintlib/acb_mat.pxd +++ b/src/flint/flintlib/acb_mat.pxd @@ -1,27 +1,16 @@ -from flint.flintlib.flint cimport ulong, flint_rand_t, slong -from flint.flintlib.fmpz_mat cimport fmpz_mat_t +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.mag cimport mag_t -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.acb_poly cimport acb_poly_t -from flint.flintlib.arb cimport arb_t -from flint.flintlib.acb cimport acb_ptr, acb_struct, acb_t, acb_srcptr -from flint.flintlib.arb_mat cimport arb_mat_t +from flint.flintlib.fmpz_types cimport fmpz_mat_t, fmpz_t -cdef extern from "flint/acb_mat.h": - ctypedef struct acb_mat_struct: - acb_ptr entries - long r - long c - acb_ptr * rows +# unknown type FILE - ctypedef acb_mat_struct acb_mat_t[1] -#macros - acb_struct * acb_mat_entry(acb_mat_t mat, long i, long j) +# .. macro:: acb_mat_entry(mat, i, j) +# .. macro:: acb_mat_nrows(mat) +# .. macro:: acb_mat_ncols(mat) - long acb_mat_nrows(const acb_mat_t x) - long acb_mat_ncols(const acb_mat_t x) -# from here on is parsed +cdef extern from "flint/acb_mat.h": void acb_mat_init(acb_mat_t mat, slong r, slong c) void acb_mat_clear(acb_mat_t mat) slong acb_mat_allocated_bytes(const acb_mat_t x) @@ -33,9 +22,13 @@ cdef extern from "flint/acb_mat.h": void acb_mat_set_fmpq_mat(acb_mat_t dest, const fmpq_mat_t src, slong prec) void acb_mat_set_arb_mat(acb_mat_t dest, const arb_mat_t src) void acb_mat_set_round_arb_mat(acb_mat_t dest, const arb_mat_t src, slong prec) + void acb_mat_get_real(arb_mat_t re, const arb_mat_t mat) + void acb_mat_get_imag(arb_mat_t im, const arb_mat_t mat) + void acb_mat_set_real_imag(acb_mat_t mat, const arb_mat_t re, const arb_mat_t im) void acb_mat_randtest(acb_mat_t mat, flint_rand_t state, slong prec, slong mag_bits) void acb_mat_randtest_eig(acb_mat_t mat, flint_rand_t state, acb_srcptr E, slong prec) void acb_mat_printd(const acb_mat_t mat, slong digits) + # void acb_mat_fprintd(FILE * file, const acb_mat_t mat, slong digits) int acb_mat_equal(const acb_mat_t mat1, const acb_mat_t mat2) int acb_mat_overlaps(const acb_mat_t mat1, const acb_mat_t mat2) int acb_mat_contains(const acb_mat_t mat1, const acb_mat_t mat2) @@ -55,13 +48,14 @@ cdef extern from "flint/acb_mat.h": void acb_mat_zero(acb_mat_t mat) void acb_mat_one(acb_mat_t mat) void acb_mat_ones(acb_mat_t mat) + void acb_mat_onei(acb_mat_t mat) void acb_mat_indeterminate(acb_mat_t mat) void acb_mat_dft(acb_mat_t mat, int type, slong prec) void acb_mat_transpose(acb_mat_t dest, const acb_mat_t src) void acb_mat_conjugate_transpose(acb_mat_t dest, const acb_mat_t src) void acb_mat_conjugate(acb_mat_t dest, const acb_mat_t src) void acb_mat_bound_inf_norm(mag_t b, const acb_mat_t A) - void acb_mat_frobenius_norm(acb_t res, const acb_mat_t A, slong prec) + void acb_mat_frobenius_norm(arb_t res, const acb_mat_t A, slong prec) void acb_mat_bound_frobenius_norm(mag_t res, const acb_mat_t A) void acb_mat_neg(acb_mat_t dest, const acb_mat_t src) void acb_mat_add(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec) @@ -88,6 +82,10 @@ cdef extern from "flint/acb_mat.h": void acb_mat_scalar_div_fmpz(acb_mat_t B, const acb_mat_t A, const fmpz_t c, slong prec) void acb_mat_scalar_div_arb(acb_mat_t B, const acb_mat_t A, const arb_t c, slong prec) void acb_mat_scalar_div_acb(acb_mat_t B, const acb_mat_t A, const acb_t c, slong prec) + void _acb_mat_vector_mul_row(acb_ptr res, acb_srcptr v, const acb_mat_t A, slong prec) + void _acb_mat_vector_mul_col(acb_ptr res, const acb_mat_t A, acb_srcptr v, slong prec) + void acb_mat_vector_mul_row(acb_ptr res, acb_srcptr v, const acb_mat_t A, slong prec) + void acb_mat_vector_mul_col(acb_ptr res, const acb_mat_t A, acb_srcptr v, slong prec) int acb_mat_lu_classical(slong * perm, acb_mat_t LU, const acb_mat_t A, slong prec) int acb_mat_lu_recursive(slong * perm, acb_mat_t LU, const acb_mat_t A, slong prec) int acb_mat_lu(slong * perm, acb_mat_t LU, const acb_mat_t A, slong prec) @@ -124,7 +122,7 @@ cdef extern from "flint/acb_mat.h": void acb_mat_add_error_mag(acb_mat_t mat, const mag_t err) int acb_mat_approx_eig_qr(acb_ptr E, acb_mat_t L, acb_mat_t R, const acb_mat_t A, const mag_t tol, slong maxiter, slong prec) void acb_mat_eig_global_enclosure(mag_t eps, const acb_mat_t A, acb_srcptr E, const acb_mat_t R, slong prec) - void acb_mat_eig_enclosure_rump(acb_t l, acb_mat_t J, acb_mat_t R, const acb_mat_t A, const acb_t lambda_approx, const acb_mat_t R_approx, slong prec) + void acb_mat_eig_enclosure_rump(acb_t lambda_, acb_mat_t J, acb_mat_t R, const acb_mat_t A, const acb_t lambda_approx, const acb_mat_t R_approx, slong prec) int acb_mat_eig_simple_rump(acb_ptr E, acb_mat_t L, acb_mat_t R, const acb_mat_t A, acb_srcptr E_approx, const acb_mat_t R_approx, slong prec) int acb_mat_eig_simple_vdhoeven_mourrain(acb_ptr E, acb_mat_t L, acb_mat_t R, const acb_mat_t A, acb_srcptr E_approx, const acb_mat_t R_approx, slong prec) int acb_mat_eig_simple(acb_ptr E, acb_mat_t L, acb_mat_t R, const acb_mat_t A, acb_srcptr E_approx, const acb_mat_t R_approx, slong prec) diff --git a/src/flint/flintlib/acb_poly.pxd b/src/flint/flintlib/acb_poly.pxd index 84617566..d39d18c3 100644 --- a/src/flint/flintlib/acb_poly.pxd +++ b/src/flint/flintlib/acb_poly.pxd @@ -1,23 +1,14 @@ -from flint.flintlib.flint cimport flint_rand_t, ulong, slong -from flint.flintlib.acb cimport acb_ptr, acb_t, acb_srcptr -from flint.flintlib.arb_poly cimport arb_poly_t +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_poly cimport fmpz_poly_t -from flint.flintlib.mag cimport mag_t -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.arb cimport arb_ptr +from flint.flintlib.fmpz_types cimport fmpz_poly_t, fmpz_t -cdef extern from "flint/acb_poly.h": - ctypedef struct acb_poly_struct: - acb_ptr coeffs - long length - long alloc +# unknown type FILE - ctypedef acb_poly_struct acb_poly_t[1] +# .. macro:: acb_poly_get_coeff_ptr(poly, n) -#macros - acb_ptr acb_poly_get_coeff_ptr(arb_poly_t poly, long n) -# from here on is parsed +cdef extern from "flint/acb_poly.h": void acb_poly_init(acb_poly_t poly) void acb_poly_clear(acb_poly_t poly) void acb_poly_fit_length(acb_poly_t poly, slong len) @@ -46,6 +37,7 @@ cdef extern from "flint/acb_poly.h": void acb_poly_truncate(acb_poly_t poly, slong n) slong acb_poly_valuation(const acb_poly_t poly) void acb_poly_printd(const acb_poly_t poly, slong digits) + # void acb_poly_fprintd(FILE * file, const acb_poly_t poly, slong digits) void acb_poly_randtest(acb_poly_t poly, flint_rand_t state, slong len, slong prec, slong mag_bits) int acb_poly_equal(const acb_poly_t A, const acb_poly_t B) int acb_poly_contains(const acb_poly_t poly1, const acb_poly_t poly2) @@ -95,32 +87,12 @@ cdef extern from "flint/acb_poly.h": void _acb_poly_divrem(acb_ptr Q, acb_ptr R, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong prec) int acb_poly_divrem(acb_poly_t Q, acb_poly_t R, const acb_poly_t A, const acb_poly_t B, slong prec) void _acb_poly_div_root(acb_ptr Q, acb_t R, acb_srcptr A, slong len, const acb_t c, slong prec) - void _acb_poly_taylor_shift_horner(acb_ptr g, const acb_t c, slong n, slong prec) - void acb_poly_taylor_shift_horner(acb_poly_t g, const acb_poly_t f, const acb_t c, slong prec) - void _acb_poly_taylor_shift_divconquer(acb_ptr g, const acb_t c, slong n, slong prec) - void acb_poly_taylor_shift_divconquer(acb_poly_t g, const acb_poly_t f, const acb_t c, slong prec) - void _acb_poly_taylor_shift_convolution(acb_ptr g, const acb_t c, slong n, slong prec) - void acb_poly_taylor_shift_convolution(acb_poly_t g, const acb_poly_t f, const acb_t c, slong prec) void _acb_poly_taylor_shift(acb_ptr g, const acb_t c, slong n, slong prec) void acb_poly_taylor_shift(acb_poly_t g, const acb_poly_t f, const acb_t c, slong prec) - void _acb_poly_compose_horner(acb_ptr res, acb_srcptr poly1, slong len1, acb_srcptr poly2, slong len2, slong prec) - void acb_poly_compose_horner(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, slong prec) - void _acb_poly_compose_divconquer(acb_ptr res, acb_srcptr poly1, slong len1, acb_srcptr poly2, slong len2, slong prec) - void acb_poly_compose_divconquer(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, slong prec) void _acb_poly_compose(acb_ptr res, acb_srcptr poly1, slong len1, acb_srcptr poly2, slong len2, slong prec) void acb_poly_compose(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, slong prec) - void _acb_poly_compose_series_horner(acb_ptr res, acb_srcptr poly1, slong len1, acb_srcptr poly2, slong len2, slong n, slong prec) - void acb_poly_compose_series_horner(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, slong n, slong prec) - void _acb_poly_compose_series_brent_kung(acb_ptr res, acb_srcptr poly1, slong len1, acb_srcptr poly2, slong len2, slong n, slong prec) - void acb_poly_compose_series_brent_kung(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, slong n, slong prec) void _acb_poly_compose_series(acb_ptr res, acb_srcptr poly1, slong len1, acb_srcptr poly2, slong len2, slong n, slong prec) void acb_poly_compose_series(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, slong n, slong prec) - void _acb_poly_revert_series_lagrange(acb_ptr h, acb_srcptr f, slong flen, slong n, slong prec) - void acb_poly_revert_series_lagrange(acb_poly_t h, const acb_poly_t f, slong n, slong prec) - void _acb_poly_revert_series_newton(acb_ptr h, acb_srcptr f, slong flen, slong n, slong prec) - void acb_poly_revert_series_newton(acb_poly_t h, const acb_poly_t f, slong n, slong prec) - void _acb_poly_revert_series_lagrange_fast(acb_ptr h, acb_srcptr f, slong flen, slong n, slong prec) - void acb_poly_revert_series_lagrange_fast(acb_poly_t h, const acb_poly_t f, slong n, slong prec) void _acb_poly_revert_series(acb_ptr h, acb_srcptr f, slong flen, slong n, slong prec) void acb_poly_revert_series(acb_poly_t h, const acb_poly_t f, slong n, slong prec) void _acb_poly_evaluate_horner(acb_t y, acb_srcptr f, slong len, const acb_t x, slong prec) @@ -155,6 +127,8 @@ cdef extern from "flint/acb_poly.h": void acb_poly_interpolate_fast(acb_poly_t poly, acb_srcptr xs, acb_srcptr ys, slong n, slong prec) void _acb_poly_derivative(acb_ptr res, acb_srcptr poly, slong len, slong prec) void acb_poly_derivative(acb_poly_t res, const acb_poly_t poly, slong prec) + void _acb_poly_nth_derivative(acb_ptr res, acb_srcptr poly, ulong n, slong len, slong prec) + void acb_poly_nth_derivative(acb_poly_t res, const acb_poly_t poly, ulong n, slong prec) void _acb_poly_integral(acb_ptr res, acb_srcptr poly, slong len, slong prec) void acb_poly_integral(acb_poly_t res, const acb_poly_t poly, slong prec) void _acb_poly_borel_transform(acb_ptr res, acb_srcptr poly, slong len, slong prec) @@ -168,7 +142,7 @@ cdef extern from "flint/acb_poly.h": void _acb_poly_binomial_transform(acb_ptr b, acb_srcptr a, slong alen, slong len, slong prec) void acb_poly_binomial_transform(acb_poly_t b, const acb_poly_t a, slong len, slong prec) void _acb_poly_graeffe_transform(acb_ptr b, acb_srcptr a, slong len, slong prec) - void acb_poly_graeffe_transform(acb_poly_t b, acb_poly_t a, slong prec) + void acb_poly_graeffe_transform(acb_poly_t b, const acb_poly_t a, slong prec) void _acb_poly_pow_ui_trunc_binexp(acb_ptr res, acb_srcptr f, slong flen, ulong exp, slong len, slong prec) void acb_poly_pow_ui_trunc_binexp(acb_poly_t res, const acb_poly_t poly, ulong exp, slong len, slong prec) void _acb_poly_pow_ui(acb_ptr res, acb_srcptr f, slong flen, ulong exp, slong prec) @@ -193,10 +167,6 @@ cdef extern from "flint/acb_poly.h": void acb_poly_exp_series(acb_poly_t f, const acb_poly_t h, slong n, slong prec) void _acb_poly_exp_pi_i_series(acb_ptr f, acb_srcptr h, slong hlen, slong n, slong prec) void acb_poly_exp_pi_i_series(acb_poly_t f, const acb_poly_t h, slong n, slong prec) - void _acb_poly_sin_cos_series_basecase(acb_ptr s, acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec, int times_pi) - void acb_poly_sin_cos_series_basecase(acb_poly_t s, acb_poly_t c, const acb_poly_t h, slong n, slong prec, int times_pi) - void _acb_poly_sin_cos_series_tangent(acb_ptr s, acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec, int times_pi) - void acb_poly_sin_cos_series_tangent(acb_poly_t s, acb_poly_t c, const acb_poly_t h, slong n, slong prec, int times_pi) void _acb_poly_sin_cos_series(acb_ptr s, acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) void acb_poly_sin_cos_series(acb_poly_t s, acb_poly_t c, const acb_poly_t h, slong n, slong prec) void _acb_poly_sin_series(acb_ptr s, acb_srcptr h, slong hlen, slong n, slong prec) @@ -266,7 +236,6 @@ cdef extern from "flint/acb_poly.h": void acb_poly_root_bound_fujiwara(mag_t bound, acb_poly_t poly) void _acb_poly_root_inclusion(acb_t r, const acb_t m, acb_srcptr poly, acb_srcptr polyder, slong len, slong prec) slong _acb_poly_validate_roots(acb_ptr roots, acb_srcptr poly, slong len, slong prec) - void _acb_poly_refine_roots_durand_kerner(acb_ptr roots, acb_srcptr poly, slong len, slong prec) slong _acb_poly_find_roots(acb_ptr roots, acb_srcptr poly, acb_srcptr initial, slong len, slong maxiter, slong prec) slong acb_poly_find_roots(acb_ptr roots, const acb_poly_t poly, acb_srcptr initial, slong maxiter, slong prec) int _acb_poly_validate_real_roots(acb_srcptr roots, acb_srcptr poly, slong len, slong prec) diff --git a/src/flint/flintlib/acb_theta.pxd b/src/flint/flintlib/acb_theta.pxd index 2ef2d405..c60ce30b 100644 --- a/src/flint/flintlib/acb_theta.pxd +++ b/src/flint/flintlib/acb_theta.pxd @@ -1,8 +1,13 @@ -from flint.flintlib.acb cimport acb_t, acb_srcptr, acb_ptr -from flint.flintlib.acb_poly cimport acb_poly_struct, acb_poly_t +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_mat cimport fmpz_mat_t, fmpz_mat_struct +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 diff --git a/src/flint/flintlib/acb_types.pxd b/src/flint/flintlib/acb_types.pxd new file mode 100644 index 00000000..eacba039 --- /dev/null +++ b/src/flint/flintlib/acb_types.pxd @@ -0,0 +1,39 @@ +from flint.flintlib.flint cimport slong +from flint.flintlib.arb_types cimport arb_struct, arb_ptr, arb_poly_t + +cdef extern from "flint/acb_types.h": + + ctypedef struct acb_struct: + arb_struct real + arb_struct imag + + ctypedef acb_struct acb_t[1] + ctypedef acb_struct * acb_ptr + ctypedef const acb_struct * acb_srcptr + + ctypedef struct acb_mat_struct: + acb_ptr entries + slong r + slong c + acb_ptr * rows + + ctypedef acb_mat_struct acb_mat_t[1] + + ctypedef struct acb_poly_struct: + acb_ptr coeffs + slong alloc + slong length + + 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/arb.pxd b/src/flint/flintlib/arb.pxd index eff2161f..8cd8631a 100644 --- a/src/flint/flintlib/arb.pxd +++ b/src/flint/flintlib/arb.pxd @@ -1,297 +1,381 @@ -from flint.flintlib.flint cimport ulong, slong, flint_rand_t -from flint.flintlib.fmpz cimport fmpz_t +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.arf cimport arf_struct, arf_ptr, arf_t -from flint.flintlib.mag cimport mag_struct, mag_ptr, mag_t +from flint.flintlib.fmpz_types cimport fmpz_t -cdef extern from "flint/arb.h": - ctypedef struct arb_struct: - arf_struct mid - mag_struct rad - - ctypedef arb_struct * arb_ptr - ctypedef const arb_struct * arb_srcptr - ctypedef arb_struct arb_t[1] +# unknown type FILE +# unknown type mpfr_rnd_t +# unknown type mpfr_t - arf_ptr arb_midref(const arb_t x) - mag_ptr arb_radref(const arb_t x) - - void arb_init(arb_t x) - void arb_clear(arb_t x) +# .. macro:: arb_midref(x) +# .. macro:: arb_radref(x) +# .. macro:: ARB_LOG_PRIME_CACHE_NUM +# .. macro:: ARB_LOG_REDUCTION_DEFAULT_MAX_PREC +# .. macro:: ARB_ATAN_GAUSS_PRIME_CACHE_NUM +cdef extern from "flint/arb.h": void arb_init(arb_t x) void arb_clear(arb_t x) - int arb_is_exact(const arb_t x) - int arb_equal(const arb_t x, const arb_t y) - int arb_eq(const arb_t x, const arb_t y) - int arb_ne(const arb_t x, const arb_t y) - int arb_lt(const arb_t x, const arb_t y) - int arb_le(const arb_t x, const arb_t y) - int arb_gt(const arb_t x, const arb_t y) - int arb_ge(const arb_t x, const arb_t y) + arb_ptr _arb_vec_init(slong n) + void _arb_vec_clear(arb_ptr v, slong n) + void arb_swap(arb_t x, arb_t y) + slong arb_allocated_bytes(const arb_t x) + slong _arb_vec_allocated_bytes(arb_srcptr vec, slong len) + double _arb_vec_estimate_allocated_bytes(slong len, slong prec) + void arb_set(arb_t y, const arb_t x) + void arb_set_arf(arb_t y, const arf_t x) + void arb_set_si(arb_t y, slong x) + void arb_set_ui(arb_t y, ulong x) + void arb_set_fmpz(arb_t y, const fmpz_t x) + void arb_set_d(arb_t y, double x) + void arb_set_fmpz_2exp(arb_t y, const fmpz_t x, const fmpz_t e) + void arb_set_round(arb_t y, const arb_t x, slong prec) + void arb_set_round_fmpz(arb_t y, const fmpz_t x, slong prec) + void arb_set_round_fmpz_2exp(arb_t y, const fmpz_t x, const fmpz_t e, slong prec) + void arb_set_fmpq(arb_t y, const fmpq_t x, slong prec) + int arb_set_str(arb_t res, const char * inp, slong prec) + char * arb_get_str(const arb_t x, slong n, ulong flags) void arb_zero(arb_t x) - int arb_is_zero(const arb_t x) + void arb_one(arb_t f) void arb_pos_inf(arb_t x) void arb_neg_inf(arb_t x) void arb_zero_pm_inf(arb_t x) void arb_indeterminate(arb_t x) - int arb_is_finite(const arb_t x) - void arb_set(arb_t x, const arb_t y) - void arb_swap(arb_t x, arb_t y) - void arb_set_round(arb_t z, const arb_t x, long prec) + void arb_zero_pm_one(arb_t x) + void arb_unit_interval(arb_t x) + void arb_print(const arb_t x) + # void arb_fprint(FILE * file, const arb_t x) + void arb_printd(const arb_t x, slong digits) + # void arb_fprintd(FILE * file, const arb_t x, slong digits) + void arb_printn(const arb_t x, slong digits, ulong flags) + # void arb_fprintn(FILE * file, const arb_t x, slong digits, ulong flags) + char * arb_dump_str(const arb_t x) + int arb_load_str(arb_t x, const char * str) + # int arb_dump_file(FILE * stream, const arb_t x) + # int arb_load_file(arb_t x, FILE * stream) + void arb_randtest(arb_t x, flint_rand_t state, slong prec, slong mag_bits) + void arb_randtest_exact(arb_t x, flint_rand_t state, slong prec, slong mag_bits) + void arb_randtest_precise(arb_t x, flint_rand_t state, slong prec, slong mag_bits) + void arb_randtest_positive(arb_t x, flint_rand_t state, slong prec, slong mag_bits) + void arb_randtest_wide(arb_t x, flint_rand_t state, slong prec, slong mag_bits) + void arb_randtest_special(arb_t x, flint_rand_t state, slong prec, slong mag_bits) + void arb_get_rand_fmpq(fmpq_t q, flint_rand_t state, const arb_t x, slong bits) + void arb_urandom(arb_t x, flint_rand_t state, slong prec) + void arb_get_mid_arb(arb_t m, const arb_t x) + void arb_get_rad_arb(arb_t r, const arb_t x) + void arb_add_error_arf(arb_t x, const arf_t err) + void arb_add_error_mag(arb_t x, const mag_t err) + void arb_add_error(arb_t x, const arb_t err) + void arb_add_error_2exp_si(arb_t x, slong e) + void arb_add_error_2exp_fmpz(arb_t x, const fmpz_t e) + void arb_union(arb_t z, const arb_t x, const arb_t y, slong prec) + int arb_intersection(arb_t z, const arb_t x, const arb_t y, slong prec) + void arb_nonnegative_part(arb_t res, const arb_t x) + void arb_get_abs_ubound_arf(arf_t u, const arb_t x, slong prec) + void arb_get_abs_lbound_arf(arf_t u, const arb_t x, slong prec) + void arb_get_ubound_arf(arf_t u, const arb_t x, slong prec) + void arb_get_lbound_arf(arf_t u, const arb_t x, slong prec) + void arb_get_mag(mag_t z, const arb_t x) + void arb_get_mag_lower(mag_t z, const arb_t x) + void arb_get_mag_lower_nonnegative(mag_t z, const arb_t x) + void arb_get_interval_fmpz_2exp(fmpz_t a, fmpz_t b, fmpz_t exp, const arb_t x) + void arb_set_interval_mag(arb_t x, const mag_t a, const mag_t b, slong prec) + void arb_set_interval_arf(arb_t x, const arf_t a, const arf_t b, slong prec) + # void arb_set_interval_mpfr(arb_t x, const mpfr_t a, const mpfr_t b, slong prec) + void arb_set_interval_neg_pos_mag(arb_t x, const mag_t a, const mag_t b, slong prec) + void arb_get_interval_arf(arf_t a, arf_t b, const arb_t x, slong prec) + # void arb_get_interval_mpfr(mpfr_t a, mpfr_t b, const arb_t x) + slong arb_rel_error_bits(const arb_t x) + slong arb_rel_accuracy_bits(const arb_t x) + slong arb_rel_one_accuracy_bits(const arb_t x) + slong arb_bits(const arb_t x) void arb_trim(arb_t y, const arb_t x) - void arb_neg(arb_t x, const arb_t y) - void arb_neg_round(arb_t x, const arb_t y, long prec) - void arb_abs(arb_t x, const arb_t y) - void arb_sgn(arb_t x, const arb_t y) - void arb_set_arf(arb_t x, const arf_t y) - void arb_set_si(arb_t x, long y) - void arb_set_ui(arb_t x, ulong y) - void arb_set_fmpz(arb_t x, const fmpz_t y) - void arb_set_fmpz_2exp(arb_t x, const fmpz_t y, const fmpz_t exp) - void arb_set_round_fmpz_2exp(arb_t y, const fmpz_t x, const fmpz_t exp, long prec) - void arb_set_round_fmpz(arb_t y, const fmpz_t x, long prec) + int arb_get_unique_fmpz(fmpz_t z, const arb_t x) + void arb_floor(arb_t y, const arb_t x, slong prec) + void arb_ceil(arb_t y, const arb_t x, slong prec) + void arb_trunc(arb_t y, const arb_t x, slong prec) + void arb_nint(arb_t y, const arb_t x, slong prec) + void arb_get_fmpz_mid_rad_10exp(fmpz_t mid, fmpz_t rad, fmpz_t exp, const arb_t x, slong n) + int arb_can_round_arf(const arb_t x, slong prec, arf_rnd_t rnd) + # int arb_can_round_mpfr(const arb_t x, slong prec, mpfr_rnd_t rnd) + int arb_is_zero(const arb_t x) + int arb_is_nonzero(const arb_t x) int arb_is_one(const arb_t f) - void arb_one(arb_t f) - void arb_print(const arb_t x) - void arb_printd(const arb_t x, long digits) - void arb_mul_2exp_si(arb_t y, const arb_t x, long e) - void arb_mul_2exp_fmpz(arb_t y, const arb_t x, const fmpz_t e) + int arb_is_finite(const arb_t x) + int arb_is_exact(const arb_t x) int arb_is_int(const arb_t x) - int arb_contains_zero(const arb_t x) - int arb_is_nonzero(const arb_t x) + int arb_is_int_2exp_si(const arb_t x, slong e) + int arb_equal(const arb_t x, const arb_t y) + int arb_equal_si(const arb_t x, slong y) int arb_is_positive(const arb_t x) int arb_is_nonnegative(const arb_t x) int arb_is_negative(const arb_t x) int arb_is_nonpositive(const arb_t x) - int arb_contains_negative(const arb_t x) - int arb_contains_nonpositive(const arb_t x) - int arb_contains_positive(const arb_t x) - int arb_contains_nonnegative(const arb_t x) - int arb_contains_int(const arb_t x) - void arb_get_mag_lower(mag_t z, const arb_t x) - void arb_get_mag_lower_nonnegative(mag_t z, const arb_t x) - void arb_get_mag(mag_t z, const arb_t x) - void arb_get_abs_ubound_arf(arf_t u, const arb_t x, long prec) - void arb_get_abs_lbound_arf(arf_t u, const arb_t x, long prec) - void arb_get_ubound_arf(arf_t u, const arb_t z, long prec) - void arb_get_lbound_arf(arf_t u, const arb_t z, long prec) - void arb_nonnegative_part(arb_t u, const arb_t x) - slong arb_rel_error_bits(const arb_t x) - slong arb_rel_accuracy_bits(const arb_t x) - slong arb_rel_one_accuracy_bits(const arb_t x) - long arb_bits(const arb_t x) - void arb_randtest_exact(arb_t x, flint_rand_t state, long prec, long mag_bits) - void arb_randtest_wide(arb_t x, flint_rand_t state, long prec, long mag_bits) - void arb_randtest_precise(arb_t x, flint_rand_t state, long prec, long mag_bits) - void arb_randtest(arb_t x, flint_rand_t state, long prec, long mag_bits) - void arb_randtest_special(arb_t x, flint_rand_t state, long prec, long mag_bits) - void arb_add_error_arf(arb_t x, const arf_t err) - void arb_add_error_2exp_si(arb_t x, long err) - void arb_add_error_2exp_fmpz(arb_t x, const fmpz_t err) - void arb_add_error(arb_t x, const arb_t error) - void arb_add_error_mag(arb_t x, const mag_t err) + int arb_overlaps(const arb_t x, const arb_t y) int arb_contains_arf(const arb_t x, const arf_t y) int arb_contains_fmpq(const arb_t x, const fmpq_t y) int arb_contains_fmpz(const arb_t x, const fmpz_t y) - int arb_contains_si(const arb_t x, long y) - int arb_overlaps(const arb_t x, const arb_t y) + int arb_contains_si(const arb_t x, slong y) + # int arb_contains_mpfr(const arb_t x, const mpfr_t y) int arb_contains(const arb_t x, const arb_t y) + int arb_contains_int(const arb_t x) + int arb_contains_zero(const arb_t x) + int arb_contains_negative(const arb_t x) + int arb_contains_nonpositive(const arb_t x) + int arb_contains_positive(const arb_t x) + int arb_contains_nonnegative(const arb_t x) int arb_contains_interior(const arb_t x, const arb_t y) - void arb_get_interval_fmpz_2exp(fmpz_t a, fmpz_t b, fmpz_t exp, const arb_t x) - int arb_get_unique_fmpz(fmpz_t z, const arb_t x) - void arb_get_fmpz_mid_rad_10exp(fmpz_t mid, fmpz_t rad, fmpz_t exp, const arb_t x, long n) - - int arb_set_str(arb_t res, const char * inp, long prec) - - void arb_floor(arb_t z, const arb_t x, long prec) - void arb_ceil(arb_t z, const arb_t x, long prec) - void arb_set_interval_arf(arb_t x, const arf_t a, const arf_t b, long prec) - void arb_get_interval_arf(arf_t a, arf_t b, const arb_t x, long prec) - void arb_union(arb_t z, const arb_t x, const arb_t y, long prec) - int arb_intersection(arb_t z, const arb_t x, const arb_t y, long prec) - void arb_min(arb_t z, const arb_t x, const arb_t y, long prec) - void arb_max(arb_t z, const arb_t x, const arb_t y, long prec) - - void arb_get_rand_fmpq(fmpq_t q, flint_rand_t state, const arb_t x, long bits) - - void arb_add(arb_t z, const arb_t x, const arb_t y, long prec) - void arb_add_arf(arb_t z, const arb_t x, const arf_t y, long prec) - void arb_add_ui(arb_t z, const arb_t x, ulong y, long prec) - void arb_add_si(arb_t z, const arb_t x, long y, long prec) - void arb_add_fmpz(arb_t z, const arb_t x, const fmpz_t y, long prec) - void arb_add_fmpz_2exp(arb_t z, const arb_t x, const fmpz_t man, const fmpz_t exp, long prec) - - void arb_sub(arb_t z, const arb_t x, const arb_t y, long prec) - void arb_sub_arf(arb_t z, const arb_t x, const arf_t y, long prec) - void arb_sub_ui(arb_t z, const arb_t x, ulong y, long prec) - void arb_sub_si(arb_t z, const arb_t x, long y, long prec) - void arb_sub_fmpz(arb_t z, const arb_t x, const fmpz_t y, long prec) - - void arb_mul(arb_t z, const arb_t x, const arb_t y, long prec) - void arb_mul_arf(arb_t z, const arb_t x, const arf_t y, long prec) - void arb_mul_si(arb_t z, const arb_t x, long y, long prec) - void arb_mul_ui(arb_t z, const arb_t x, ulong y, long prec) - void arb_mul_fmpz(arb_t z, const arb_t x, const fmpz_t y, long prec) - - void arb_addmul(arb_t z, const arb_t x, const arb_t y, long prec) - void arb_addmul_arf(arb_t z, const arb_t x, const arf_t y, long prec) - void arb_addmul_si(arb_t z, const arb_t x, long y, long prec) - void arb_addmul_ui(arb_t z, const arb_t x, ulong y, long prec) - void arb_addmul_fmpz(arb_t z, const arb_t x, const fmpz_t y, long prec) - - void arb_submul(arb_t z, const arb_t x, const arb_t y, long prec) - void arb_submul_arf(arb_t z, const arb_t x, const arf_t y, long prec) - void arb_submul_si(arb_t z, const arb_t x, long y, long prec) - void arb_submul_ui(arb_t z, const arb_t x, ulong y, long prec) - void arb_submul_fmpz(arb_t z, const arb_t x, const fmpz_t y, long prec) - - void arb_div(arb_t z, const arb_t x, const arb_t y, long prec) - void arb_div_arf(arb_t z, const arb_t x, const arf_t y, long prec) - void arb_div_si(arb_t z, const arb_t x, long y, long prec) - void arb_div_ui(arb_t z, const arb_t x, ulong y, long prec) - void arb_div_fmpz(arb_t z, const arb_t x, const fmpz_t y, long prec) - void arb_fmpz_div_fmpz(arb_t z, const fmpz_t x, const fmpz_t y, long prec) - void arb_ui_div(arb_t z, ulong x, const arb_t y, long prec) - - void arb_inv(arb_t y, const arb_t x, long prec) - void arb_set_fmpq(arb_t y, const fmpq_t x, long prec) - - void arb_sqrt(arb_t z, const arb_t x, long prec) - void arb_sqrt_arf(arb_t z, const arf_t x, long prec) - void arb_sqrt_fmpz(arb_t z, const fmpz_t x, long prec) - void arb_sqrt_ui(arb_t z, ulong x, long prec) - - void arb_sqrtpos(arb_t z, const arb_t x, long prec) - void arb_hypot(arb_t z, const arb_t x, const arb_t y, long prec) - - void arb_rsqrt(arb_t z, const arb_t x, long prec) - void arb_rsqrt_ui(arb_t z, ulong x, long prec) - - void arb_pow_fmpz_binexp(arb_t y, const arb_t b, const fmpz_t e, long prec) - void arb_pow_fmpz(arb_t y, const arb_t b, const fmpz_t e, long prec) - void arb_pow_ui(arb_t y, const arb_t b, ulong e, long prec) - void arb_ui_pow_ui(arb_t y, ulong b, ulong e, long prec) - void arb_si_pow_ui(arb_t y, long b, ulong e, long prec) - void arb_pow_fmpq(arb_t y, const arb_t x, const fmpq_t a, long prec) - - void arb_div_2expm1_ui(arb_t z, const arb_t x, ulong n, long prec) - void arb_pow(arb_t z, const arb_t x, const arb_t y, long prec) - void arb_root(arb_t z, const arb_t x, ulong k, long prec) - void arb_log(arb_t z, const arb_t x, long prec) - void arb_log_arf(arb_t z, const arf_t x, long prec) - void arb_log_ui(arb_t z, ulong x, long prec) - void arb_log_fmpz(arb_t z, const fmpz_t x, long prec) - void arb_log1p(arb_t z, const arb_t x, long prec) - void arb_log_base_ui(arb_t z, const arb_t x, ulong b, long prec) - void arb_exp(arb_t z, const arb_t x, long prec) - void arb_expm1(arb_t z, const arb_t x, long prec) - void arb_sin(arb_t s, const arb_t x, long prec) - void arb_cos(arb_t c, const arb_t x, long prec) - void arb_sin_cos(arb_t s, arb_t c, const arb_t x, long prec) - void arb_sin_pi(arb_t s, const arb_t x, long prec) - void arb_cos_pi(arb_t c, const arb_t x, long prec) - void arb_sin_cos_pi(arb_t s, arb_t c, const arb_t x, long prec) - void arb_tan(arb_t y, const arb_t x, long prec) - void arb_cot(arb_t y, const arb_t x, long prec) - void arb_sec(arb_t y, const arb_t x, long prec) - void arb_csc(arb_t y, const arb_t x, long prec) - void arb_tan_pi(arb_t y, const arb_t x, long prec) - void arb_cot_pi(arb_t y, const arb_t x, long prec) - void arb_sin_cos_pi_fmpq(arb_t s, arb_t c, const fmpq_t x, long prec) - void arb_sin_pi_fmpq(arb_t s, const fmpq_t x, long prec) - void arb_cos_pi_fmpq(arb_t c, const fmpq_t x, long prec) - void arb_sinc(arb_t s, const arb_t x, long prec) - void arb_sinc_pi(arb_t s, const arb_t x, long prec) - void arb_sinh(arb_t z, const arb_t x, long prec) - void arb_cosh(arb_t z, const arb_t x, long prec) - void arb_sinh_cosh(arb_t s, arb_t c, const arb_t x, long prec) - void arb_tanh(arb_t y, const arb_t x, long prec) - void arb_coth(arb_t y, const arb_t x, long prec) - void arb_sech(arb_t y, const arb_t x, long prec) - void arb_csch(arb_t y, const arb_t x, long prec) - void arb_atan_arf(arb_t z, const arf_t x, long prec) - void arb_atan(arb_t z, const arb_t x, long prec) - void arb_atan2(arb_t z, const arb_t b, const arb_t a, long prec) - void arb_asin(arb_t z, const arb_t x, long prec) - void arb_acos(arb_t z, const arb_t x, long prec) - void arb_atanh(arb_t z, const arb_t x, long prec) - void arb_asinh(arb_t z, const arb_t x, long prec) - void arb_acosh(arb_t z, const arb_t x, long prec) - void arb_fac_ui(arb_t z, ulong n, long prec) - void arb_bin_ui(arb_t z, const arb_t n, ulong k, long prec) - void arb_bin_uiui(arb_t z, ulong n, ulong k, long prec) - void arb_fib_fmpz(arb_t z, const fmpz_t n, long prec) - void arb_fib_ui(arb_t z, ulong n, long prec) - void arb_const_pi(arb_t z, long prec) - void arb_const_sqrt_pi(arb_t z, long prec) - void arb_const_log_sqrt2pi(arb_t z, long prec) - void arb_const_log2(arb_t z, long prec) - void arb_const_log10(arb_t z, long prec) - void arb_const_euler(arb_t z, long prec) - void arb_const_catalan(arb_t z, long prec) - void arb_const_e(arb_t z, long prec) - void arb_const_khinchin(arb_t z, long prec) - void arb_const_glaisher(arb_t z, long prec) - void arb_agm(arb_t z, const arb_t x, const arb_t y, long prec) - void arb_lgamma(arb_t z, const arb_t x, long prec) - void arb_rgamma(arb_t z, const arb_t x, long prec) - void arb_gamma(arb_t z, const arb_t x, long prec) - void arb_gamma_fmpq(arb_t z, const fmpq_t x, long prec) - void arb_gamma_fmpz(arb_t z, const fmpz_t x, long prec) - void arb_digamma(arb_t y, const arb_t x, long prec) - void arb_zeta(arb_t z, const arb_t s, long prec) - void arb_zeta_ui(arb_t z, ulong n, long prec) - void arb_bernoulli_ui(arb_t z, ulong n, long prec) - void arb_bernoulli_fmpz(arb_t z, const fmpz_t n, long prec) - void arb_bernoulli_poly_ui(arb_t z, ulong n, const arb_t x, long prec) - void arb_hurwitz_zeta(arb_t z, const arb_t s, const arb_t a, long prec) - - void arb_bell_fmpz(arb_t z, const fmpz_t n, long prec) - - void arb_partitions_fmpz(arb_t z, const fmpz_t n, long prec) - void arb_partitions_ui(arb_t z, ulong n, long prec) - - void arb_lambertw(arb_t z, const arb_t x, int flags, long prec) - - void arb_rising_ui_bs(arb_t y, const arb_t x, ulong n, long prec) - void arb_rising_ui_rs(arb_t y, const arb_t x, ulong n, ulong m, long prec) - void arb_rising_ui_rec(arb_t y, const arb_t x, ulong n, long prec) - void arb_rising_ui(arb_t z, const arb_t x, ulong n, long prec) - void arb_rising_fmpq_ui(arb_t y, const fmpq_t x, ulong n, long prec) - void arb_rising(arb_t y, const arb_t x, const arb_t n, long prec) - - void arb_rising2_ui_rs(arb_t u, arb_t v, const arb_t x, ulong n, ulong m, long prec) - void arb_rising2_ui_bs(arb_t u, arb_t v, const arb_t x, ulong n, long prec) - void arb_rising2_ui(arb_t u, arb_t v, const arb_t x, ulong n, long prec) - - void arb_log_ui_from_prev(arb_t s, ulong k, arb_t log_prev, ulong prev, long prec) - - void arb_const_apery(arb_t s, long prec) - - void arb_zeta_ui_asymp(arb_t x, ulong s, long prec) - void arb_zeta_ui_borwein_bsplit(arb_t x, ulong s, long prec) - void arb_zeta_ui_euler_product(arb_t z, ulong s, long prec) - void arb_zeta_ui_bernoulli(arb_t x, ulong n, long prec) - void arb_zeta_ui_vec_borwein(arb_ptr z, ulong start, long num, ulong step, long prec) - void arb_zeta_ui(arb_t x, ulong n, long prec) - void arb_zeta_ui_vec_even(arb_ptr x, ulong start, long num, long prec) - void arb_zeta_ui_vec_odd(arb_ptr x, ulong start, long num, long prec) - void arb_zeta_ui_vec(arb_ptr x, ulong start, long num, long prec) - void arb_bernoulli_ui(arb_t b, ulong n, long prec) - void arb_bernoulli_ui_zeta(arb_t b, ulong n, long prec) - - void arb_polylog(arb_t w, const arb_t s, const arb_t z, long prec) - void arb_polylog_si(arb_t w, long s, const arb_t z, long prec) - - void arb_chebyshev_t_ui(arb_t a, ulong n, const arb_t x, long prec) - void arb_chebyshev_t2_ui(arb_t a, arb_t b, ulong n, const arb_t x, long prec) - void arb_chebyshev_u_ui(arb_t a, ulong n, const arb_t x, long prec) - void arb_chebyshev_u2_ui(arb_t a, arb_t b, ulong n, const arb_t x, long prec) - - void arb_root_ui(arb_t z, const arb_t x, ulong k, long prec) - - cdef ulong ARB_STR_MORE - cdef ulong ARB_STR_NO_RADIUS - cdef ulong ARB_STR_CONDENSE - char * arb_get_str(const arb_t x, long n, ulong flags) + int arb_eq(const arb_t x, const arb_t y) + int arb_ne(const arb_t x, const arb_t y) + int arb_lt(const arb_t x, const arb_t y) + int arb_le(const arb_t x, const arb_t y) + int arb_gt(const arb_t x, const arb_t y) + int arb_ge(const arb_t x, const arb_t y) + void arb_neg(arb_t y, const arb_t x) + void arb_neg_round(arb_t y, const arb_t x, slong prec) + void arb_abs(arb_t y, const arb_t x) + void arb_nonnegative_abs(arb_t y, const arb_t x) + void arb_sgn(arb_t y, const arb_t x) + int arb_sgn_nonzero(const arb_t x) + void arb_min(arb_t z, const arb_t x, const arb_t y, slong prec) + void arb_max(arb_t z, const arb_t x, const arb_t y, slong prec) + void arb_minmax(arb_t z1, arb_t z2, const arb_t x, const arb_t y, slong prec) + void arb_add(arb_t z, const arb_t x, const arb_t y, slong prec) + void arb_add_arf(arb_t z, const arb_t x, const arf_t y, slong prec) + void arb_add_ui(arb_t z, const arb_t x, ulong y, slong prec) + void arb_add_si(arb_t z, const arb_t x, slong y, slong prec) + void arb_add_fmpz(arb_t z, const arb_t x, const fmpz_t y, slong prec) + void arb_add_fmpz_2exp(arb_t z, const arb_t x, const fmpz_t m, const fmpz_t e, slong prec) + void arb_sub(arb_t z, const arb_t x, const arb_t y, slong prec) + void arb_sub_arf(arb_t z, const arb_t x, const arf_t y, slong prec) + void arb_sub_ui(arb_t z, const arb_t x, ulong y, slong prec) + void arb_sub_si(arb_t z, const arb_t x, slong y, slong prec) + void arb_sub_fmpz(arb_t z, const arb_t x, const fmpz_t y, slong prec) + void arb_mul(arb_t z, const arb_t x, const arb_t y, slong prec) + void arb_mul_arf(arb_t z, const arb_t x, const arf_t y, slong prec) + void arb_mul_si(arb_t z, const arb_t x, slong y, slong prec) + void arb_mul_ui(arb_t z, const arb_t x, ulong y, slong prec) + void arb_mul_fmpz(arb_t z, const arb_t x, const fmpz_t y, slong prec) + void arb_mul_2exp_si(arb_t y, const arb_t x, slong e) + void arb_mul_2exp_fmpz(arb_t y, const arb_t x, const fmpz_t e) + void arb_addmul(arb_t z, const arb_t x, const arb_t y, slong prec) + void arb_addmul_arf(arb_t z, const arb_t x, const arf_t y, slong prec) + void arb_addmul_si(arb_t z, const arb_t x, slong y, slong prec) + void arb_addmul_ui(arb_t z, const arb_t x, ulong y, slong prec) + void arb_addmul_fmpz(arb_t z, const arb_t x, const fmpz_t y, slong prec) + void arb_submul(arb_t z, const arb_t x, const arb_t y, slong prec) + void arb_submul_arf(arb_t z, const arb_t x, const arf_t y, slong prec) + void arb_submul_si(arb_t z, const arb_t x, slong y, slong prec) + void arb_submul_ui(arb_t z, const arb_t x, ulong y, slong prec) + void arb_submul_fmpz(arb_t z, const arb_t x, const fmpz_t y, slong prec) + void arb_fma(arb_t res, const arb_t x, const arb_t y, const arb_t z, slong prec) + void arb_fma_arf(arb_t res, const arb_t x, const arf_t y, const arb_t z, slong prec) + void arb_fma_si(arb_t res, const arb_t x, slong y, const arb_t z, slong prec) + void arb_fma_ui(arb_t res, const arb_t x, ulong y, const arb_t z, slong prec) + void arb_fma_fmpz(arb_t res, const arb_t x, const fmpz_t y, const arb_t z, slong prec) + void arb_inv(arb_t z, const arb_t x, slong prec) + void arb_div(arb_t z, const arb_t x, const arb_t y, slong prec) + void arb_div_arf(arb_t z, const arb_t x, const arf_t y, slong prec) + void arb_div_si(arb_t z, const arb_t x, slong y, slong prec) + void arb_div_ui(arb_t z, const arb_t x, ulong y, slong prec) + void arb_div_fmpz(arb_t z, const arb_t x, const fmpz_t y, slong prec) + void arb_fmpz_div_fmpz(arb_t z, const fmpz_t x, const fmpz_t y, slong prec) + void arb_ui_div(arb_t z, ulong x, const arb_t y, slong prec) + void arb_div_2expm1_ui(arb_t z, const arb_t x, ulong n, slong prec) + void arb_dot_precise(arb_t res, const arb_t s, int subtract, arb_srcptr x, slong xstep, arb_srcptr y, slong ystep, slong len, slong prec) + void arb_dot_simple(arb_t res, const arb_t s, int subtract, arb_srcptr x, slong xstep, arb_srcptr y, slong ystep, slong len, slong prec) + void arb_dot(arb_t res, const arb_t s, int subtract, arb_srcptr x, slong xstep, arb_srcptr y, slong ystep, slong len, slong prec) + void arb_approx_dot(arb_t res, const arb_t s, int subtract, arb_srcptr x, slong xstep, arb_srcptr y, slong ystep, slong len, slong prec) + void arb_dot_ui(arb_t res, const arb_t initial, int subtract, arb_srcptr x, slong xstep, const ulong * y, slong ystep, slong len, slong prec) + void arb_dot_si(arb_t res, const arb_t initial, int subtract, arb_srcptr x, slong xstep, const slong * y, slong ystep, slong len, slong prec) + void arb_dot_uiui(arb_t res, const arb_t initial, int subtract, arb_srcptr x, slong xstep, const ulong * y, slong ystep, slong len, slong prec) + void arb_dot_siui(arb_t res, const arb_t initial, int subtract, arb_srcptr x, slong xstep, const ulong * y, slong ystep, slong len, slong prec) + void arb_dot_fmpz(arb_t res, const arb_t initial, int subtract, arb_srcptr x, slong xstep, const fmpz_struct * y, slong ystep, slong len, slong prec) + void arb_sqrt(arb_t z, const arb_t x, slong prec) + void arb_sqrt_arf(arb_t z, const arf_t x, slong prec) + void arb_sqrt_fmpz(arb_t z, const fmpz_t x, slong prec) + void arb_sqrt_ui(arb_t z, ulong x, slong prec) + void arb_sqrtpos(arb_t z, const arb_t x, slong prec) + void arb_hypot(arb_t z, const arb_t x, const arb_t y, slong prec) + void arb_rsqrt(arb_t z, const arb_t x, slong prec) + void arb_rsqrt_ui(arb_t z, ulong x, slong prec) + void arb_sqrt1pm1(arb_t z, const arb_t x, slong prec) + void arb_root_ui(arb_t z, const arb_t x, ulong k, slong prec) + void arb_root(arb_t z, const arb_t x, ulong k, slong prec) + void arb_sqr(arb_t y, const arb_t x, slong prec) + void arb_pow_fmpz_binexp(arb_t y, const arb_t b, const fmpz_t e, slong prec) + void arb_pow_fmpz(arb_t y, const arb_t b, const fmpz_t e, slong prec) + void arb_pow_ui(arb_t y, const arb_t b, ulong e, slong prec) + void arb_ui_pow_ui(arb_t y, ulong b, ulong e, slong prec) + void arb_si_pow_ui(arb_t y, slong b, ulong e, slong prec) + void arb_pow_fmpq(arb_t y, const arb_t x, const fmpq_t a, slong prec) + void arb_pow(arb_t z, const arb_t x, const arb_t y, slong prec) + void arb_log_ui(arb_t z, ulong x, slong prec) + void arb_log_fmpz(arb_t z, const fmpz_t x, slong prec) + void arb_log_arf(arb_t z, const arf_t x, slong prec) + void arb_log(arb_t z, const arb_t x, slong prec) + void arb_log_ui_from_prev(arb_t log_k1, ulong k1, arb_t log_k0, ulong k0, slong prec) + void arb_log1p(arb_t z, const arb_t x, slong prec) + void arb_log_base_ui(arb_t res, const arb_t x, ulong b, slong prec) + void arb_log_hypot(arb_t res, const arb_t x, const arb_t y, slong prec) + void arb_exp(arb_t z, const arb_t x, slong prec) + void arb_expm1(arb_t z, const arb_t x, slong prec) + void arb_exp_invexp(arb_t z, arb_t w, const arb_t x, slong prec) + void arb_sin(arb_t s, const arb_t x, slong prec) + void arb_cos(arb_t c, const arb_t x, slong prec) + void arb_sin_cos(arb_t s, arb_t c, const arb_t x, slong prec) + void arb_sin_pi(arb_t s, const arb_t x, slong prec) + void arb_cos_pi(arb_t c, const arb_t x, slong prec) + void arb_sin_cos_pi(arb_t s, arb_t c, const arb_t x, slong prec) + void arb_tan(arb_t y, const arb_t x, slong prec) + void arb_cot(arb_t y, const arb_t x, slong prec) + void arb_sin_cos_pi_fmpq(arb_t s, arb_t c, const fmpq_t x, slong prec) + void arb_sin_pi_fmpq(arb_t s, const fmpq_t x, slong prec) + void arb_cos_pi_fmpq(arb_t c, const fmpq_t x, slong prec) + void arb_tan_pi(arb_t y, const arb_t x, slong prec) + void arb_cot_pi(arb_t y, const arb_t x, slong prec) + void arb_sec(arb_t res, const arb_t x, slong prec) + void arb_csc(arb_t res, const arb_t x, slong prec) + void arb_csc_pi(arb_t res, const arb_t x, slong prec) + void arb_sinc(arb_t z, const arb_t x, slong prec) + void arb_sinc_pi(arb_t z, const arb_t x, slong prec) + void arb_atan_arf(arb_t z, const arf_t x, slong prec) + void arb_atan(arb_t z, const arb_t x, slong prec) + void arb_atan2(arb_t z, const arb_t b, const arb_t a, slong prec) + void arb_asin(arb_t z, const arb_t x, slong prec) + void arb_acos(arb_t z, const arb_t x, slong prec) + void arb_sinh(arb_t s, const arb_t x, slong prec) + void arb_cosh(arb_t c, const arb_t x, slong prec) + void arb_sinh_cosh(arb_t s, arb_t c, const arb_t x, slong prec) + void arb_tanh(arb_t y, const arb_t x, slong prec) + void arb_coth(arb_t y, const arb_t x, slong prec) + void arb_sech(arb_t res, const arb_t x, slong prec) + void arb_csch(arb_t res, const arb_t x, slong prec) + void arb_atanh(arb_t z, const arb_t x, slong prec) + void arb_asinh(arb_t z, const arb_t x, slong prec) + void arb_acosh(arb_t z, const arb_t x, slong prec) + void arb_const_pi(arb_t z, slong prec) + void arb_const_sqrt_pi(arb_t z, slong prec) + void arb_const_log_sqrt2pi(arb_t z, slong prec) + void arb_const_log2(arb_t z, slong prec) + void arb_const_log10(arb_t z, slong prec) + void arb_const_euler(arb_t z, slong prec) + void arb_const_catalan(arb_t z, slong prec) + void arb_const_e(arb_t z, slong prec) + void arb_const_khinchin(arb_t z, slong prec) + void arb_const_glaisher(arb_t z, slong prec) + void arb_const_apery(arb_t z, slong prec) + void arb_const_reciprocal_fibonacci(arb_t z, slong prec) + void arb_lambertw(arb_t res, const arb_t x, int flags, slong prec) + void arb_rising_ui(arb_t z, const arb_t x, ulong n, slong prec) + void arb_rising(arb_t z, const arb_t x, const arb_t n, slong prec) + void arb_rising_fmpq_ui(arb_t z, const fmpq_t x, ulong n, slong prec) + void arb_rising2_ui(arb_t u, arb_t v, const arb_t x, ulong n, slong prec) + void arb_fac_ui(arb_t z, ulong n, slong prec) + void arb_doublefac_ui(arb_t z, ulong n, slong prec) + void arb_bin_ui(arb_t z, const arb_t n, ulong k, slong prec) + void arb_bin_uiui(arb_t z, ulong n, ulong k, slong prec) + void arb_gamma(arb_t z, const arb_t x, slong prec) + void arb_gamma_fmpq(arb_t z, const fmpq_t x, slong prec) + void arb_gamma_fmpz(arb_t z, const fmpz_t x, slong prec) + void arb_lgamma(arb_t z, const arb_t x, slong prec) + void arb_rgamma(arb_t z, const arb_t x, slong prec) + void arb_digamma(arb_t y, const arb_t x, slong prec) + void arb_zeta_ui_vec_borwein(arb_ptr z, ulong start, slong num, ulong step, slong prec) + void arb_zeta_ui_asymp(arb_t x, ulong s, slong prec) + void arb_zeta_ui_euler_product(arb_t z, ulong s, slong prec) + void arb_zeta_ui_bernoulli(arb_t x, ulong s, slong prec) + void arb_zeta_ui_borwein_bsplit(arb_t x, ulong s, slong prec) + void arb_zeta_ui_vec(arb_ptr x, ulong start, slong num, slong prec) + void arb_zeta_ui_vec_even(arb_ptr x, ulong start, slong num, slong prec) + void arb_zeta_ui_vec_odd(arb_ptr x, ulong start, slong num, slong prec) + void arb_zeta_ui(arb_t x, ulong s, slong prec) + void arb_zeta(arb_t z, const arb_t s, slong prec) + void arb_hurwitz_zeta(arb_t z, const arb_t s, const arb_t a, slong prec) + void arb_bernoulli_ui(arb_t b, ulong n, slong prec) + void arb_bernoulli_fmpz(arb_t b, const fmpz_t n, slong prec) + void arb_bernoulli_ui_zeta(arb_t b, ulong n, slong prec) + void arb_bernoulli_poly_ui(arb_t res, ulong n, const arb_t x, slong prec) + void arb_power_sum_vec(arb_ptr res, const arb_t a, const arb_t b, slong len, slong prec) + void arb_polylog(arb_t w, const arb_t s, const arb_t z, slong prec) + void arb_polylog_si(arb_t w, slong s, const arb_t z, slong prec) + void arb_fib_fmpz(arb_t z, const fmpz_t n, slong prec) + void arb_fib_ui(arb_t z, ulong n, slong prec) + void arb_agm(arb_t z, const arb_t x, const arb_t y, slong prec) + void arb_chebyshev_t_ui(arb_t a, ulong n, const arb_t x, slong prec) + void arb_chebyshev_u_ui(arb_t a, ulong n, const arb_t x, slong prec) + void arb_chebyshev_t2_ui(arb_t a, arb_t b, ulong n, const arb_t x, slong prec) + void arb_chebyshev_u2_ui(arb_t a, arb_t b, ulong n, const arb_t x, slong prec) + void arb_bell_sum_bsplit(arb_t res, const fmpz_t n, const fmpz_t a, const fmpz_t b, const fmpz_t mmag, slong prec) + void arb_bell_sum_taylor(arb_t res, const fmpz_t n, const fmpz_t a, const fmpz_t b, const fmpz_t mmag, slong prec) + void arb_bell_fmpz(arb_t res, const fmpz_t n, slong prec) + void arb_bell_ui(arb_t res, ulong n, slong prec) + void arb_euler_number_fmpz(arb_t res, const fmpz_t n, slong prec) + void arb_euler_number_ui(arb_t res, ulong n, slong prec) + void arb_fmpz_euler_number_ui_multi_mod(fmpz_t res, ulong n, double alpha) + void arb_fmpz_euler_number_ui(fmpz_t res, ulong n) + void arb_partitions_fmpz(arb_t res, const fmpz_t n, slong prec) + void arb_partitions_ui(arb_t res, ulong n, slong prec) + void arb_primorial_nth_ui(arb_t res, ulong n, slong prec) + void arb_primorial_ui(arb_t res, ulong n, slong prec) + void _arb_atan_taylor_naive(nn_ptr y, ulong * error, nn_srcptr x, slong xn, ulong N, int alternating) + void _arb_atan_taylor_rs(nn_ptr y, ulong * error, nn_srcptr x, slong xn, ulong N, int alternating) + void _arb_exp_taylor_naive(nn_ptr y, ulong * error, nn_srcptr x, slong xn, ulong N) + void _arb_exp_taylor_rs(nn_ptr y, ulong * error, nn_srcptr x, slong xn, ulong N) + void _arb_sin_cos_taylor_naive(nn_ptr ysin, nn_ptr ycos, ulong * error, nn_srcptr x, slong xn, ulong N) + void _arb_sin_cos_taylor_rs(nn_ptr ysin, nn_ptr ycos, ulong * error, nn_srcptr x, slong xn, ulong N, int sinonly, int alternating) + int _arb_get_mpn_fixed_mod_log2(nn_ptr w, fmpz_t q, ulong * error, const arf_t x, slong wn) + int _arb_get_mpn_fixed_mod_pi4(nn_ptr w, fmpz_t q, int * octant, ulong * error, const arf_t x, slong wn) + slong _arb_exp_taylor_bound(slong mag, slong prec) + void arb_exp_arf_bb(arb_t z, const arf_t x, slong prec, int m1) + void _arb_exp_sum_bs_simple(fmpz_t T, fmpz_t Q, flint_bitcnt_t * Qexp, const fmpz_t x, flint_bitcnt_t r, slong N) + void _arb_exp_sum_bs_powtab(fmpz_t T, fmpz_t Q, flint_bitcnt_t * Qexp, const fmpz_t x, flint_bitcnt_t r, slong N) + void arb_exp_arf_rs_generic(arb_t res, const arf_t x, slong prec, int minus_one) + void _arb_atan_sum_bs_simple(fmpz_t T, fmpz_t Q, flint_bitcnt_t * Qexp, const fmpz_t x, flint_bitcnt_t r, slong N) + void _arb_atan_sum_bs_powtab(fmpz_t T, fmpz_t Q, flint_bitcnt_t * Qexp, const fmpz_t x, flint_bitcnt_t r, slong N) + void arb_atan_arf_bb(arb_t z, const arf_t x, slong prec) + void arb_atan_frac_bsplit(arb_t s, const fmpz_t p, const fmpz_t q, int hyperbolic, slong prec) + void arb_sin_cos_arf_generic(arb_t s, arb_t c, const arf_t x, slong prec) + void arb_sin_cos_arf_bb(arb_t s, arb_t c, const arf_t x, slong prec) + void arb_sin_cos_wide(arb_t s, arb_t c, const arb_t x, slong prec) + void arb_sin_cos_generic(arb_t s, arb_t c, const arb_t x, slong prec) + void arb_log_primes_vec_bsplit(arb_ptr res, slong n, slong prec) + void _arb_log_p_ensure_cached(slong prec) + void arb_exp_arf_log_reduction(arb_t res, const arf_t x, slong prec, int minus_one) + void arb_exp_arf_generic(arb_t z, const arf_t x, slong prec, int minus_one) + void arb_exp_arf(arb_t z, const arf_t x, slong prec, int minus_one, slong maglim) + void arb_log_newton(arb_t res, const arb_t x, slong prec) + void arb_log_arf_newton(arb_t res, const arf_t x, slong prec) + void arb_atan_gauss_primes_vec_bsplit(arb_ptr res, slong n, slong prec) + void _arb_atan_gauss_p_ensure_cached(slong prec) + void arb_sin_cos_arf_atan_reduction(arb_t res1, arb_t res2, const arf_t x, slong prec) + void arb_atan_newton(arb_t res, const arb_t x, slong prec) + void arb_atan_arf_newton(arb_t res, const arf_t x, slong prec) + void _arb_vec_zero(arb_ptr vec, slong n) + int _arb_vec_is_zero(arb_srcptr vec, slong len) + int _arb_vec_is_finite(arb_srcptr x, slong len) + int _arb_vec_equal(arb_srcptr vec1, arb_srcptr vec2, slong len) + int _arb_vec_overlaps(arb_srcptr vec1, arb_srcptr vec2, slong len) + int _arb_vec_contains(arb_srcptr vec1, arb_srcptr vec2, slong len) + void _arb_vec_set(arb_ptr res, arb_srcptr vec, slong len) + void _arb_vec_set_round(arb_ptr res, arb_srcptr vec, slong len, slong prec) + void _arb_vec_swap(arb_ptr vec1, arb_ptr vec2, slong len) + void _arb_vec_neg(arb_ptr B, arb_srcptr A, slong n) + void _arb_vec_sub(arb_ptr C, arb_srcptr A, arb_srcptr B, slong n, slong prec) + void _arb_vec_add(arb_ptr C, arb_srcptr A, arb_srcptr B, slong n, slong prec) + void _arb_vec_scalar_mul(arb_ptr res, arb_srcptr vec, slong len, const arb_t c, slong prec) + void _arb_vec_scalar_div(arb_ptr res, arb_srcptr vec, slong len, const arb_t c, slong prec) + void _arb_vec_scalar_mul_fmpz(arb_ptr res, arb_srcptr vec, slong len, const fmpz_t c, slong prec) + void _arb_vec_scalar_mul_2exp_si(arb_ptr res, arb_srcptr src, slong len, slong c) + void _arb_vec_scalar_addmul(arb_ptr res, arb_srcptr vec, slong len, const arb_t c, slong prec) + void _arb_vec_get_mag(mag_t bound, arb_srcptr vec, slong len) + slong _arb_vec_bits(arb_srcptr x, slong len) + void _arb_vec_set_powers(arb_ptr xs, const arb_t x, slong len, slong prec) + void _arb_vec_add_error_arf_vec(arb_ptr res, arf_srcptr err, slong len) + void _arb_vec_add_error_mag_vec(arb_ptr res, mag_srcptr err, slong len) + void _arb_vec_indeterminate(arb_ptr vec, slong len) + void _arb_vec_trim(arb_ptr res, arb_srcptr vec, slong len) + int _arb_vec_get_unique_fmpz_vec(fmpz_struct * res, arb_srcptr vec, slong len) + void _arb_vec_printn(arb_srcptr vec, slong len, slong digits, ulong flags) + void _arb_vec_printd(arb_srcptr vec, slong len, slong ndigits) diff --git a/src/flint/flintlib/arb_mat.pxd b/src/flint/flintlib/arb_mat.pxd index 72c0c2c4..ddecb035 100644 --- a/src/flint/flintlib/arb_mat.pxd +++ b/src/flint/flintlib/arb_mat.pxd @@ -1,26 +1,15 @@ -from flint.flintlib.arb cimport arb_ptr, arb_struct -from flint.flintlib.fmpz_mat cimport fmpz_mat_t +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.mag cimport mag_t, mag_srcptr -from flint.flintlib.flint cimport ulong, slong, flint_rand_t -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.arb cimport arb_t, arb_srcptr -from flint.flintlib.arb_poly cimport arb_poly_t +from flint.flintlib.fmpz_types cimport fmpz_mat_t, fmpz_t -cdef extern from "flint/arb_mat.h": - ctypedef struct arb_mat_struct: - arb_ptr entries - long r - long c - arb_ptr * rows +# unknown type FILE - ctypedef arb_mat_struct arb_mat_t[1] -#macros - arb_struct * arb_mat_entry(arb_mat_t mat, long i, long j) +# .. macro:: arb_mat_entry(mat, i, j) +# .. macro:: arb_mat_nrows(mat) +# .. macro:: arb_mat_ncols(mat) - long arb_mat_nrows(const arb_mat_t x) - long arb_mat_ncols(const arb_mat_t x) -# from here on is parsed +cdef extern from "flint/arb_mat.h": void arb_mat_init(arb_mat_t mat, slong r, slong c) void arb_mat_clear(arb_mat_t mat) slong arb_mat_allocated_bytes(const arb_mat_t x) @@ -31,7 +20,10 @@ cdef extern from "flint/arb_mat.h": void arb_mat_set_round_fmpz_mat(arb_mat_t dest, const fmpz_mat_t src, slong prec) void arb_mat_set_fmpq_mat(arb_mat_t dest, const fmpq_mat_t src, slong prec) void arb_mat_randtest(arb_mat_t mat, flint_rand_t state, slong prec, slong mag_bits) + void arb_mat_randtest_cho(arb_mat_t mat, flint_rand_t state, slong prec, slong mag_bits) + void arb_mat_randtest_spd(arb_mat_t mat, flint_rand_t state, slong prec, slong mag_bits) void arb_mat_printd(const arb_mat_t mat, slong digits) + # void arb_mat_fprintd(FILE * file, const arb_mat_t mat, slong digits) int arb_mat_equal(const arb_mat_t mat1, const arb_mat_t mat2) int arb_mat_overlaps(const arb_mat_t mat1, const arb_mat_t mat2) int arb_mat_contains(const arb_mat_t mat1, const arb_mat_t mat2) @@ -82,6 +74,10 @@ cdef extern from "flint/arb_mat.h": void arb_mat_scalar_div_si(arb_mat_t B, const arb_mat_t A, slong c, slong prec) void arb_mat_scalar_div_fmpz(arb_mat_t B, const arb_mat_t A, const fmpz_t c, slong prec) void arb_mat_scalar_div_arb(arb_mat_t B, const arb_mat_t A, const arb_t c, slong prec) + void _arb_mat_vector_mul_row(arb_ptr res, arb_srcptr v, const arb_mat_t A, slong prec) + void _arb_mat_vector_mul_col(arb_ptr res, const arb_mat_t A, arb_srcptr v, slong prec) + void arb_mat_vector_mul_row(arb_ptr res, arb_srcptr v, const arb_mat_t A, slong prec) + void arb_mat_vector_mul_col(arb_ptr res, const arb_mat_t A, arb_srcptr v, slong prec) int arb_mat_lu_classical(slong * perm, arb_mat_t LU, const arb_mat_t A, slong prec) int arb_mat_lu_recursive(slong * perm, arb_mat_t LU, const arb_mat_t A, slong prec) int arb_mat_lu(slong * perm, arb_mat_t LU, const arb_mat_t A, slong prec) @@ -132,3 +128,6 @@ cdef extern from "flint/arb_mat.h": slong arb_mat_count_not_is_zero(const arb_mat_t mat) void arb_mat_get_mid(arb_mat_t B, const arb_mat_t A) void arb_mat_add_error_mag(arb_mat_t mat, const mag_t err) + int arb_mat_spd_get_fmpz_mat(fmpz_mat_t B, const arb_mat_t A, slong prec) + void arb_mat_spd_lll_reduce(fmpz_mat_t U, const arb_mat_t A, slong prec) + int arb_mat_spd_is_lll_reduced(const arb_mat_t A, slong tol_exp, slong prec) diff --git a/src/flint/flintlib/arb_poly.pxd b/src/flint/flintlib/arb_poly.pxd index ed961c66..2ecb8d72 100644 --- a/src/flint/flintlib/arb_poly.pxd +++ b/src/flint/flintlib/arb_poly.pxd @@ -1,23 +1,15 @@ -from flint.flintlib.flint cimport flint_rand_t, ulong, slong -from flint.flintlib.arb cimport arb_ptr, arb_t, arb_srcptr -from flint.flintlib.fmpz_poly cimport fmpz_poly_t +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.acb cimport acb_t, acb_srcptr -from flint.flintlib.mag cimport mag_t -from flint.flintlib.arf cimport arf_t +from flint.flintlib.fmpz_types cimport fmpz_poly_t -cdef extern from "flint/arb_poly.h": - ctypedef struct arb_poly_struct: - arb_ptr coeffs - long length - long alloc - - ctypedef arb_poly_struct arb_poly_t[1] - #macros +# unknown type FILE - arb_ptr arb_poly_get_coeff_ptr(arb_poly_t poly, long n) +# .. macro:: arb_poly_get_coeff_ptr(poly, n) -# from here on is parsed +cdef extern from "flint/arb_poly.h": void arb_poly_init(arb_poly_t poly) void arb_poly_clear(arb_poly_t poly) void arb_poly_fit_length(arb_poly_t poly, slong len) @@ -31,7 +23,6 @@ cdef extern from "flint/arb_poly.h": int arb_poly_is_x(const arb_poly_t poly) void arb_poly_zero(arb_poly_t poly) void arb_poly_one(arb_poly_t poly) - void arb_poly_set_arb(arb_poly_t poly, const arb_t c) void arb_poly_set(arb_poly_t dest, const arb_poly_t src) void arb_poly_set_round(arb_poly_t dest, const arb_poly_t src, slong prec) void arb_poly_set_trunc(arb_poly_t dest, const arb_poly_t src, slong n) @@ -49,6 +40,7 @@ cdef extern from "flint/arb_poly.h": void arb_poly_set_fmpq_poly(arb_poly_t poly, const fmpq_poly_t src, slong prec) void arb_poly_set_si(arb_poly_t poly, slong src) void arb_poly_printd(const arb_poly_t poly, slong digits) + # void arb_poly_fprintd(FILE * file, const arb_poly_t poly, slong digits) void arb_poly_randtest(arb_poly_t poly, flint_rand_t state, slong len, slong prec, slong mag_bits) int arb_poly_contains(const arb_poly_t poly1, const arb_poly_t poly2) int arb_poly_contains_fmpz_poly(const arb_poly_t poly1, const fmpz_poly_t poly2) @@ -88,32 +80,12 @@ cdef extern from "flint/arb_poly.h": void _arb_poly_divrem(arb_ptr Q, arb_ptr R, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong prec) int arb_poly_divrem(arb_poly_t Q, arb_poly_t R, const arb_poly_t A, const arb_poly_t B, slong prec) void _arb_poly_div_root(arb_ptr Q, arb_t R, arb_srcptr A, slong len, const arb_t c, slong prec) - void _arb_poly_taylor_shift_horner(arb_ptr g, const arb_t c, slong n, slong prec) - void arb_poly_taylor_shift_horner(arb_poly_t g, const arb_poly_t f, const arb_t c, slong prec) - void _arb_poly_taylor_shift_divconquer(arb_ptr g, const arb_t c, slong n, slong prec) - void arb_poly_taylor_shift_divconquer(arb_poly_t g, const arb_poly_t f, const arb_t c, slong prec) - void _arb_poly_taylor_shift_convolution(arb_ptr g, const arb_t c, slong n, slong prec) - void arb_poly_taylor_shift_convolution(arb_poly_t g, const arb_poly_t f, const arb_t c, slong prec) void _arb_poly_taylor_shift(arb_ptr g, const arb_t c, slong n, slong prec) void arb_poly_taylor_shift(arb_poly_t g, const arb_poly_t f, const arb_t c, slong prec) - void _arb_poly_compose_horner(arb_ptr res, arb_srcptr poly1, slong len1, arb_srcptr poly2, slong len2, slong prec) - void arb_poly_compose_horner(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, slong prec) - void _arb_poly_compose_divconquer(arb_ptr res, arb_srcptr poly1, slong len1, arb_srcptr poly2, slong len2, slong prec) - void arb_poly_compose_divconquer(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, slong prec) void _arb_poly_compose(arb_ptr res, arb_srcptr poly1, slong len1, arb_srcptr poly2, slong len2, slong prec) void arb_poly_compose(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, slong prec) - void _arb_poly_compose_series_horner(arb_ptr res, arb_srcptr poly1, slong len1, arb_srcptr poly2, slong len2, slong n, slong prec) - void arb_poly_compose_series_horner(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, slong n, slong prec) - void _arb_poly_compose_series_brent_kung(arb_ptr res, arb_srcptr poly1, slong len1, arb_srcptr poly2, slong len2, slong n, slong prec) - void arb_poly_compose_series_brent_kung(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, slong n, slong prec) void _arb_poly_compose_series(arb_ptr res, arb_srcptr poly1, slong len1, arb_srcptr poly2, slong len2, slong n, slong prec) void arb_poly_compose_series(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, slong n, slong prec) - void _arb_poly_revert_series_lagrange(arb_ptr h, arb_srcptr f, slong flen, slong n, slong prec) - void arb_poly_revert_series_lagrange(arb_poly_t h, const arb_poly_t f, slong n, slong prec) - void _arb_poly_revert_series_newton(arb_ptr h, arb_srcptr f, slong flen, slong n, slong prec) - void arb_poly_revert_series_newton(arb_poly_t h, const arb_poly_t f, slong n, slong prec) - void _arb_poly_revert_series_lagrange_fast(arb_ptr h, arb_srcptr f, slong flen, slong n, slong prec) - void arb_poly_revert_series_lagrange_fast(arb_poly_t h, const arb_poly_t f, slong n, slong prec) void _arb_poly_revert_series(arb_ptr h, arb_srcptr f, slong flen, slong n, slong prec) void arb_poly_revert_series(arb_poly_t h, const arb_poly_t f, slong n, slong prec) void _arb_poly_evaluate_horner(arb_t y, arb_srcptr f, slong len, const arb_t x, slong prec) @@ -162,6 +134,8 @@ cdef extern from "flint/arb_poly.h": void arb_poly_interpolate_fast(arb_poly_t poly, arb_srcptr xs, arb_srcptr ys, slong n, slong prec) void _arb_poly_derivative(arb_ptr res, arb_srcptr poly, slong len, slong prec) void arb_poly_derivative(arb_poly_t res, const arb_poly_t poly, slong prec) + void _arb_poly_nth_derivative(arb_ptr res, arb_srcptr poly, ulong n, slong len, slong prec) + void arb_poly_nth_derivative(arb_poly_t res, const arb_poly_t poly, ulong n, slong prec) void _arb_poly_integral(arb_ptr res, arb_srcptr poly, slong len, slong prec) void arb_poly_integral(arb_poly_t res, const arb_poly_t poly, slong prec) void _arb_poly_borel_transform(arb_ptr res, arb_srcptr poly, slong len, slong prec) @@ -175,7 +149,7 @@ cdef extern from "flint/arb_poly.h": void _arb_poly_binomial_transform(arb_ptr b, arb_srcptr a, slong alen, slong len, slong prec) void arb_poly_binomial_transform(arb_poly_t b, const arb_poly_t a, slong len, slong prec) void _arb_poly_graeffe_transform(arb_ptr b, arb_srcptr a, slong len, slong prec) - void arb_poly_graeffe_transform(arb_poly_t b, arb_poly_t a, slong prec) + void arb_poly_graeffe_transform(arb_poly_t b, const arb_poly_t a, slong prec) void _arb_poly_pow_ui_trunc_binexp(arb_ptr res, arb_srcptr f, slong flen, ulong exp, slong len, slong prec) void arb_poly_pow_ui_trunc_binexp(arb_poly_t res, const arb_poly_t poly, ulong exp, slong len, slong prec) void _arb_poly_pow_ui(arb_ptr res, arb_srcptr f, slong flen, ulong exp, slong prec) @@ -202,10 +176,6 @@ cdef extern from "flint/arb_poly.h": void arb_poly_exp_series_basecase(arb_poly_t f, const arb_poly_t h, slong n, slong prec) void _arb_poly_exp_series(arb_ptr f, arb_srcptr h, slong hlen, slong n, slong prec) void arb_poly_exp_series(arb_poly_t f, const arb_poly_t h, slong n, slong prec) - void _arb_poly_sin_cos_series_basecase(arb_ptr s, arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec, int times_pi) - void arb_poly_sin_cos_series_basecase(arb_poly_t s, arb_poly_t c, const arb_poly_t h, slong n, slong prec, int times_pi) - void _arb_poly_sin_cos_series_tangent(arb_ptr s, arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec, int times_pi) - void arb_poly_sin_cos_series_tangent(arb_poly_t s, arb_poly_t c, const arb_poly_t h, slong n, slong prec, int times_pi) void _arb_poly_sin_cos_series(arb_ptr s, arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) void arb_poly_sin_cos_series(arb_poly_t s, arb_poly_t c, const arb_poly_t h, slong n, slong prec) void _arb_poly_sin_series(arb_ptr s, arb_srcptr h, slong hlen, slong n, slong prec) diff --git a/src/flint/flintlib/arb_types.pxd b/src/flint/flintlib/arb_types.pxd new file mode 100644 index 00000000..e8fa4bb4 --- /dev/null +++ b/src/flint/flintlib/arb_types.pxd @@ -0,0 +1,51 @@ +from flint.flintlib.flint cimport ulong, slong, fmpz_struct +from flint.flintlib.arf_types cimport arf_struct, arf_ptr + +cdef extern from "flint/arb_types.h": + ctypedef struct mag_struct: + fmpz_struct exp + ulong man + + ctypedef mag_struct mag_t[1] + ctypedef mag_struct * mag_ptr + ctypedef const mag_struct * mag_srcptr + + ctypedef struct arb_struct: + arf_struct mid + mag_struct rad + + ctypedef arb_struct arb_t[1] + ctypedef arb_struct * arb_ptr + ctypedef const arb_struct * arb_srcptr + + ctypedef struct arb_mat_struct: + arb_ptr entries + slong r + slong c + arb_ptr * rows + + ctypedef arb_mat_struct arb_mat_t[1] + + ctypedef struct arb_poly_struct: + arb_ptr coeffs + slong alloc + slong length + + ctypedef arb_poly_struct arb_poly_t[1] + +cdef extern from "flint/arb_types.h": + # Macros + cdef arf_ptr arb_midref(const arb_t x) + cdef mag_ptr arb_radref(const arb_t x) + cdef const ulong ARB_STR_MORE + cdef const ulong ARB_STR_NO_RADIUS + cdef const ulong ARB_STR_CONDENSE + +cdef extern from "flint/arb_mat.h": + # Macros + arb_ptr arb_mat_entry(arb_mat_t mat, slong i, slong j) + slong arb_mat_nrows(arb_mat_t mat) + slong arb_mat_ncols(arb_mat_t mat) + +cdef extern from "flint/arb_poly.h": + void arb_poly_set_arb(arb_poly_t poly, const arb_t c) diff --git a/src/flint/flintlib/arf.pxd b/src/flint/flintlib/arf.pxd index d39b7d2b..afe466a7 100644 --- a/src/flint/flintlib/arf.pxd +++ b/src/flint/flintlib/arf.pxd @@ -1,27 +1,22 @@ -from flint.flintlib.fmpz cimport fmpz_t, fmpz_struct -from flint.flintlib.flint cimport mp_limb_t, ulong, flint_rand_t, slong +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.mag cimport mag_t +from flint.flintlib.fmpz_types cimport fmpz_t -cdef extern from "flint/arf.h": - ctypedef struct arf_struct: - fmpz_struct exp - long size - mp_limb_t d0 - mp_limb_t d1 - - ctypedef arf_struct arf_t[1] - ctypedef arf_struct * arf_ptr - ctypedef const arf_struct * arf_srcptr +# unknown type FILE +# unknown type mpfr_rnd_t +# unknown type mpfr_t +# unknown type mpz_t - ctypedef int arf_rnd_t - cdef arf_rnd_t ARF_RND_DOWN - cdef arf_rnd_t ARF_RND_NEAR - cdef arf_rnd_t ARF_RND_FLOOR - cdef arf_rnd_t ARF_RND_CEIL - cdef arf_rnd_t ARF_RND_UP +# .. macro:: ARF_RND_DOWN +# .. macro:: ARF_RND_UP +# .. macro:: ARF_RND_FLOOR +# .. macro:: ARF_RND_CEIL +# .. macro:: ARF_RND_NEAR +# .. macro:: ARF_PREC_EXACT -# from here on is parsed +cdef extern from "flint/arf.h": void arf_init(arf_t x) void arf_clear(arf_t x) slong arf_allocated_bytes(const arf_t x) @@ -40,12 +35,11 @@ cdef extern from "flint/arf.h": int arf_is_special(const arf_t x) int arf_is_finite(const arf_t x) void arf_set(arf_t res, const arf_t x) -# void arf_set_mpz(arf_t res, const mpz_t x) -# void arf_set_fmpz(arf_t res, const fmpz_t x) + # void arf_set_mpz(arf_t res, const mpz_t x) + void arf_set_fmpz(arf_t res, const fmpz_t x) void arf_set_ui(arf_t res, ulong x) void arf_set_si(arf_t res, slong x) -# void arf_set_mpfr(arf_t res, const mpfr_t x) -# void arf_set_fmpr(arf_t res, const fmpr_t x) + # void arf_set_mpfr(arf_t res, const mpfr_t x) void arf_set_d(arf_t res, double x) void arf_swap(arf_t x, arf_t y) void arf_init_set_ui(arf_t res, ulong x) @@ -53,7 +47,7 @@ cdef extern from "flint/arf.h": int arf_set_round(arf_t res, const arf_t x, slong prec, arf_rnd_t rnd) int arf_set_round_si(arf_t res, slong x, slong prec, arf_rnd_t rnd) int arf_set_round_ui(arf_t res, ulong x, slong prec, arf_rnd_t rnd) -# int arf_set_round_mpz(arf_t res, const mpz_t x, slong prec, arf_rnd_t rnd) + # int arf_set_round_mpz(arf_t res, const mpz_t x, slong prec, arf_rnd_t rnd) int arf_set_round_fmpz(arf_t res, const fmpz_t x, slong prec, arf_rnd_t rnd) void arf_set_si_2exp_si(arf_t res, slong m, slong e) void arf_set_ui_2exp_si(arf_t res, ulong m, slong e) @@ -62,8 +56,7 @@ cdef extern from "flint/arf.h": void arf_get_fmpz_2exp(fmpz_t m, fmpz_t e, const arf_t x) void arf_frexp(arf_t m, fmpz_t e, const arf_t x) double arf_get_d(const arf_t x, arf_rnd_t rnd) - void arf_set_fmpz(arf_t x, const fmpz_t res) -# int arf_get_mpfr(mpfr_t res, const arf_t x, mpfr_rnd_t rnd) + # int arf_get_mpfr(mpfr_t res, const arf_t x, mpfr_rnd_t rnd) int arf_get_fmpz(fmpz_t res, const arf_t x, arf_rnd_t rnd) slong arf_get_si(const arf_t x, arf_rnd_t rnd) int arf_get_fmpz_fixed_fmpz(fmpz_t res, const arf_t x, const fmpz_t e) @@ -114,8 +107,12 @@ cdef extern from "flint/arf.h": void arf_print(const arf_t x) void arf_printd(const arf_t x, slong d) char * arf_get_str(const arf_t x, slong d) + # void arf_fprint(FILE * file, const arf_t x) + # void arf_fprintd(FILE * file, const arf_t y, slong d) char * arf_dump_str(const arf_t x) int arf_load_str(arf_t x, const char * str) + # int arf_dump_file(FILE * stream, const arf_t x) + # int arf_load_file(arf_t x, FILE * stream) void arf_abs(arf_t res, const arf_t x) void arf_neg(arf_t res, const arf_t x) int arf_neg_round(arf_t res, const arf_t x, slong prec, arf_rnd_t rnd) @@ -133,17 +130,17 @@ cdef extern from "flint/arf.h": int arf_mul(arf_t res, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) int arf_mul_ui(arf_t res, const arf_t x, ulong y, slong prec, arf_rnd_t rnd) int arf_mul_si(arf_t res, const arf_t x, slong y, slong prec, arf_rnd_t rnd) -# int arf_mul_mpz(arf_t res, const arf_t x, const mpz_t y, slong prec, arf_rnd_t rnd) + # int arf_mul_mpz(arf_t res, const arf_t x, const mpz_t y, slong prec, arf_rnd_t rnd) int arf_mul_fmpz(arf_t res, const arf_t x, const fmpz_t y, slong prec, arf_rnd_t rnd) int arf_addmul(arf_t z, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) int arf_addmul_ui(arf_t z, const arf_t x, ulong y, slong prec, arf_rnd_t rnd) int arf_addmul_si(arf_t z, const arf_t x, slong y, slong prec, arf_rnd_t rnd) -# int arf_addmul_mpz(arf_t z, const arf_t x, const mpz_t y, slong prec, arf_rnd_t rnd) + # int arf_addmul_mpz(arf_t z, const arf_t x, const mpz_t y, slong prec, arf_rnd_t rnd) int arf_addmul_fmpz(arf_t z, const arf_t x, const fmpz_t y, slong prec, arf_rnd_t rnd) int arf_submul(arf_t z, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) int arf_submul_ui(arf_t z, const arf_t x, ulong y, slong prec, arf_rnd_t rnd) int arf_submul_si(arf_t z, const arf_t x, slong y, slong prec, arf_rnd_t rnd) -# int arf_submul_mpz(arf_t z, const arf_t x, const mpz_t y, slong prec, arf_rnd_t rnd) + # int arf_submul_mpz(arf_t z, const arf_t x, const mpz_t y, slong prec, arf_rnd_t rnd) int arf_submul_fmpz(arf_t z, const arf_t x, const fmpz_t y, slong prec, arf_rnd_t rnd) int arf_fma(arf_t res, const arf_t x, const arf_t y, const arf_t z, slong prec, arf_rnd_t rnd) int arf_sosq(arf_t res, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) @@ -165,9 +162,8 @@ cdef extern from "flint/arf.h": int arf_complex_mul(arf_t e, arf_t f, const arf_t a, const arf_t b, const arf_t c, const arf_t d, slong prec, arf_rnd_t rnd) int arf_complex_mul_fallback(arf_t e, arf_t f, const arf_t a, const arf_t b, const arf_t c, const arf_t d, slong prec, arf_rnd_t rnd) int arf_complex_sqr(arf_t e, arf_t f, const arf_t a, const arf_t b, slong prec, arf_rnd_t rnd) -# int _arf_get_integer_mpn(mp_ptr y, mp_srcptr xp, mp_size_t xn, slong exp) -# int _arf_set_mpn_fixed(arf_t z, mp_srcptr xp, mp_size_t xn, mp_size_t fixn, int negative, slong prec, arf_rnd_t rnd) + int _arf_get_integer_mpn(nn_ptr y, nn_srcptr xp, slong xn, slong exp) + int _arf_set_mpn_fixed(arf_t z, nn_srcptr xp, slong xn, slong fixn, int negative, slong prec, arf_rnd_t rnd) int _arf_set_round_ui(arf_t z, ulong x, int sgnbit, slong prec, arf_rnd_t rnd) - int _arf_set_round_uiui(arf_t z, slong * fix, mp_limb_t hi, mp_limb_t lo, int sgnbit, slong prec, arf_rnd_t rnd) -# int _arf_set_round_mpn(arf_t z, slong * exp_shift, mp_srcptr x, mp_size_t xn, int sgnbit, slong prec, arf_rnd_t rnd) - + int _arf_set_round_uiui(arf_t z, slong * fix, ulong hi, ulong lo, int sgnbit, slong prec, arf_rnd_t rnd) + int _arf_set_round_mpn(arf_t z, slong * exp_shift, nn_srcptr x, slong xn, int sgnbit, slong prec, arf_rnd_t rnd) diff --git a/src/flint/flintlib/arf_types.pxd b/src/flint/flintlib/arf_types.pxd new file mode 100644 index 00000000..728b458e --- /dev/null +++ b/src/flint/flintlib/arf_types.pxd @@ -0,0 +1,33 @@ +from flint.flintlib.flint cimport fmpz_struct, slong, ulong, nn_ptr + +cdef extern from "flint/arf.h": + ctypedef enum arf_rnd_t: + ARF_RND_DOWN + ARF_RND_NEAR + ARF_RND_FLOOR + ARF_RND_CEIL + ARF_RND_UP + +cdef extern from "flint/arf_types.h": + + cdef const int ARF_NOPTR_LIMBS + + ctypedef struct mantissa_noptr_struct: + ulong d[ARF_NOPTR_LIMBS] + + ctypedef struct mantissa_ptr_struct: + slong alloc + nn_ptr d + + ctypedef union mantissa_struct: + mantissa_noptr_struct noptr + mantissa_ptr_struct ptr + + ctypedef struct arf_struct: + fmpz_struct exp + slong size + mantissa_struct d + + ctypedef arf_struct arf_t[1] + ctypedef arf_struct * arf_ptr + ctypedef const arf_struct * arf_srcptr diff --git a/src/flint/flintlib/flint.pxd b/src/flint/flintlib/flint.pxd index 60be1da3..22166509 100644 --- a/src/flint/flintlib/flint.pxd +++ b/src/flint/flintlib/flint.pxd @@ -33,9 +33,14 @@ cdef extern from "gmp.h": cdef extern from "flint/fmpz.h": ctypedef long slong ctypedef ulong flint_bitcnt_t + ctypedef ulong * nn_ptr + ctypedef const ulong * nn_srcptr ctypedef slong fmpz_struct +cdef extern from "flint/fmpz.h": + int COEFF_IS_MPZ(fmpz_struct x) + cdef extern from *: """ /* @@ -83,25 +88,3 @@ cdef extern from *: #endif """ slong pylong_as_slong(PyObject *pylong, int *overflow) - - -""" -cdef extern from "flint/fmpz_mpoly_factor.h": - - ctypedef struct fmpz_mpoly_factor_struct: - fmpz_t content - fmpz_mpoly_struct * poly - fmpz_struct * exp - slong length - slong alloc - - ctypedef fmpz_mpoly_factor_struct fmpz_mpoly_factor_t[1] - - - void fmpz_mpoly_factor_init(fmpz_mpoly_factor_t fac, const fmpz_mpoly_ctx_t ctx) - - void fmpz_mpoly_factor_clear(fmpz_mpoly_factor_t fac, const fmpz_mpoly_ctx_t ctx) - - int fmpz_mpoly_factor(fmpz_mpoly_factor_t fac, const fmpz_mpoly_t A, int full, const fmpz_mpoly_ctx_t ctx) -""" - diff --git a/src/flint/flintlib/fmpz.pxd b/src/flint/flintlib/fmpz.pxd index 4decaaa9..3a0d57fc 100644 --- a/src/flint/flintlib/fmpz.pxd +++ b/src/flint/flintlib/fmpz.pxd @@ -1,36 +1,44 @@ -from flint.flintlib.flint cimport fmpz_struct, ulong, mp_limb_t, mp_ptr -from flint.flintlib.flint cimport mp_size_t, mp_bitcnt_t, slong, flint_rand_t, flint_bitcnt_t +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 -cdef extern from "flint/fmpz.h": - ctypedef fmpz_struct fmpz_t[1] +# unknown type FILE +# unknown type fmpz_comb_t +# unknown type fmpz_comb_temp_t +# unknown type fmpz_multi_CRT_t +# unknown type mpf_t +# unknown type mpfr_rnd_t +# unknown type mpfr_t +# unknown type mpz_ptr +# unknown type mpz_t +# unknown type size_t - ctypedef struct fmpz_preinvn_struct: - mp_ptr dinv - slong n - flint_bitcnt_t norm - ctypedef fmpz_preinvn_struct fmpz_preinvn_t[1] +# .. macro:: COEFF_MAX +# .. macro:: COEFF_MIN +# .. macro:: COEFF_IS_MPZ(f) +# .. macro:: MPZ_MIN_ALLOC -# from here on is parsed - # fmpz_struct PTR_TO_COEFF(__mpz_struct * ptr) - # __mpz_struct * COEFF_TO_PTR(fmpz_struct f) - int COEFF_IS_MPZ(fmpz_struct f) - # __mpz_struct * _fmpz_new_mpz(void) +cdef extern from "flint/fmpz.h": + # fmpz_struct PTR_TO_COEFF(mpz_ptr ptr) + # mpz_ptr COEFF_TO_PTR(fmpz_struct f) + # mpz_ptr _fmpz_new_mpz(void) void _fmpz_clear_mpz(fmpz_struct f) void _fmpz_cleanup_mpz_content() void _fmpz_cleanup() - # __mpz_struct * _fmpz_promote(fmpz_t f) - # __mpz_struct * _fmpz_promote_val(fmpz_t f) + # mpz_ptr _fmpz_promote(fmpz_t f) + # mpz_ptr _fmpz_promote_val(fmpz_t f) void _fmpz_demote(fmpz_t f) void _fmpz_demote_val(fmpz_t f) + int _fmpz_is_canonical(const fmpz_t f) void fmpz_init(fmpz_t f) void fmpz_init2(fmpz_t f, ulong limbs) void fmpz_clear(fmpz_t f) void fmpz_init_set(fmpz_t f, const fmpz_t g) void fmpz_init_set_ui(fmpz_t f, ulong g) void fmpz_init_set_si(fmpz_t f, slong g) + void fmpz_randbits_unsigned(fmpz_t f, flint_rand_t state, flint_bitcnt_t bits) void fmpz_randbits(fmpz_t f, flint_rand_t state, flint_bitcnt_t bits) - void fmpz_randtest(fmpz_t f, flint_rand_t state, flint_bitcnt_t bits) void fmpz_randtest_unsigned(fmpz_t f, flint_rand_t state, flint_bitcnt_t bits) + void fmpz_randtest(fmpz_t f, flint_rand_t state, flint_bitcnt_t bits) void fmpz_randtest_not_zero(fmpz_t f, flint_rand_t state, flint_bitcnt_t bits) void fmpz_randm(fmpz_t f, flint_rand_t state, const fmpz_t m) void fmpz_randtest_mod(fmpz_t f, flint_rand_t state, const fmpz_t m) @@ -38,43 +46,47 @@ cdef extern from "flint/fmpz.h": void fmpz_randprime(fmpz_t f, flint_rand_t state, flint_bitcnt_t bits, int proved) slong fmpz_get_si(const fmpz_t f) ulong fmpz_get_ui(const fmpz_t f) - void fmpz_get_uiui(mp_limb_t * hi, mp_limb_t * low, const fmpz_t f) - # moved to nmod.pxd - # mp_limb_t fmpz_get_nmod(const fmpz_t f, nmod_t mod) + void fmpz_get_uiui(ulong * hi, ulong * low, const fmpz_t f) + ulong fmpz_get_nmod(const fmpz_t f, nmod_t mod) double fmpz_get_d(const fmpz_t f) # void fmpz_set_mpf(fmpz_t f, const mpf_t x) # void fmpz_get_mpf(mpf_t x, const fmpz_t f) # void fmpz_get_mpfr(mpfr_t x, const fmpz_t f, mpfr_rnd_t rnd) double fmpz_get_d_2exp(slong * exp, const fmpz_t f) # void fmpz_get_mpz(mpz_t x, const fmpz_t f) - # int fmpz_get_mpn(mp_ptr *n, fmpz_t n_in) + int fmpz_get_mpn(nn_ptr * n, fmpz_t n_in) char * fmpz_get_str(char * str, int b, const fmpz_t f) void fmpz_set_si(fmpz_t f, slong val) void fmpz_set_ui(fmpz_t f, ulong val) void fmpz_set_d(fmpz_t f, double c) void fmpz_set_d_2exp(fmpz_t f, double d, slong exp) void fmpz_neg_ui(fmpz_t f, ulong val) - void fmpz_set_uiui(fmpz_t f, mp_limb_t hi, mp_limb_t lo) - void fmpz_neg_uiui(fmpz_t f, mp_limb_t hi, mp_limb_t lo) + void fmpz_set_uiui(fmpz_t f, ulong hi, ulong lo) + void fmpz_neg_uiui(fmpz_t f, ulong hi, ulong lo) void fmpz_set_signed_uiui(fmpz_t f, ulong hi, ulong lo) void fmpz_set_signed_uiuiui(fmpz_t f, ulong hi, ulong mid, ulong lo) void fmpz_set_ui_array(fmpz_t out, const ulong * in_, slong n) void fmpz_set_signed_ui_array(fmpz_t out, const ulong * in_, slong n) void fmpz_get_ui_array(ulong * out, slong n, const fmpz_t in_) void fmpz_get_signed_ui_array(ulong * out, slong n, const fmpz_t in_) + void fmpz_set_mpn_large(fmpz_t z, nn_srcptr src, slong n, int negative) void fmpz_get_signed_uiui(ulong * hi, ulong * lo, const fmpz_t in_) # void fmpz_set_mpz(fmpz_t f, const mpz_t x) int fmpz_set_str(fmpz_t f, const char * str, int b) - void fmpz_set_ui_smod(fmpz_t f, mp_limb_t x, mp_limb_t m) + void fmpz_set_ui_smod(fmpz_t f, ulong x, ulong m) # void flint_mpz_init_set_readonly(mpz_t z, const fmpz_t f) # void flint_mpz_clear_readonly(mpz_t z) # void fmpz_init_set_readonly(fmpz_t f, const mpz_t z) void fmpz_clear_readonly(fmpz_t f) int fmpz_read(fmpz_t f) - int fmpz_print(fmpz_t x) - size_t fmpz_sizeinbase(const fmpz_t f, int b) + # int fmpz_fread(FILE * file, fmpz_t f) + # size_t fmpz_inp_raw(fmpz_t x, FILE * fin) + # int fmpz_fprint(FILE * fs, const fmpz_t x) + int fmpz_print(const fmpz_t x) + # size_t fmpz_out_raw(FILE * fout, const fmpz_t x ) + # size_t fmpz_sizeinbase(const fmpz_t f, int b) flint_bitcnt_t fmpz_bits(const fmpz_t f) - mp_size_t fmpz_size(const fmpz_t f) + slong fmpz_size(const fmpz_t f) int fmpz_sgn(const fmpz_t f) flint_bitcnt_t fmpz_val2(const fmpz_t f) void fmpz_swap(fmpz_t f, fmpz_t g) @@ -85,8 +97,8 @@ cdef extern from "flint/fmpz.h": int fmpz_fits_si(const fmpz_t f) void fmpz_setbit(fmpz_t f, ulong i) int fmpz_tstbit(const fmpz_t f, ulong i) - mp_limb_t fmpz_abs_lbound_ui_2exp(slong * exp, const fmpz_t x, int bits) - mp_limb_t fmpz_abs_ubound_ui_2exp(slong * exp, const fmpz_t x, int bits) + ulong fmpz_abs_lbound_ui_2exp(slong * exp, const fmpz_t x, int bits) + ulong fmpz_abs_ubound_ui_2exp(slong * exp, const fmpz_t x, int bits) int fmpz_cmp(const fmpz_t f, const fmpz_t g) int fmpz_cmp_ui(const fmpz_t f, ulong g) int fmpz_cmp_si(const fmpz_t f, slong g) @@ -155,10 +167,11 @@ cdef extern from "flint/fmpz.h": void fmpz_mod(fmpz_t f, const fmpz_t g, const fmpz_t h) ulong fmpz_mod_ui(fmpz_t f, const fmpz_t g, ulong h) void fmpz_smod(fmpz_t f, const fmpz_t g, const fmpz_t h) - # void fmpz_preinvn_init(fmpz_preinvn_t inv, const fmpz_t f) - # void fmpz_preinvn_clear(fmpz_preinvn_t inv) - # void fmpz_fdiv_qr_preinvn(fmpz_t f, fmpz_t s, const fmpz_t g, const fmpz_t h, const fmpz_preinvn_t hinv) + void fmpz_preinvn_init(fmpz_preinvn_t inv, const fmpz_t f) + void fmpz_preinvn_clear(fmpz_preinvn_t inv) + void fmpz_fdiv_qr_preinvn(fmpz_t f, fmpz_t s, const fmpz_t g, const fmpz_t h, const fmpz_preinvn_t hinv) void fmpz_pow_ui(fmpz_t f, const fmpz_t g, ulong x) + void fmpz_ui_pow_ui(fmpz_t f, ulong g, ulong x) int fmpz_pow_fmpz(fmpz_t f, const fmpz_t g, const fmpz_t x) void fmpz_powm_ui(fmpz_t f, const fmpz_t g, ulong e, const fmpz_t m) void fmpz_powm(fmpz_t f, const fmpz_t g, const fmpz_t e, const fmpz_t m) @@ -196,43 +209,38 @@ cdef extern from "flint/fmpz.h": int fmpz_jacobi(const fmpz_t a, const fmpz_t n) int fmpz_kronecker(const fmpz_t a, const fmpz_t n) void fmpz_divides_mod_list(fmpz_t xstart, fmpz_t xstride, fmpz_t xlength, const fmpz_t a, const fmpz_t b, const fmpz_t n) - int fmpz_bit_pack(mp_limb_t * arr, flint_bitcnt_t shift, flint_bitcnt_t bits, fmpz_t coeff, int negate, int borrow) - int fmpz_bit_unpack(fmpz_t coeff, mp_limb_t * arr, flint_bitcnt_t shift, flint_bitcnt_t bits, int negate, int borrow) - void fmpz_bit_unpack_unsigned(fmpz_t coeff, const mp_limb_t * arr, flint_bitcnt_t shift, flint_bitcnt_t bits) + int fmpz_bit_pack(ulong * arr, flint_bitcnt_t shift, flint_bitcnt_t bits, const fmpz_t coeff, int negate, int borrow) + int fmpz_bit_unpack(fmpz_t coeff, ulong * arr, flint_bitcnt_t shift, flint_bitcnt_t bits, int negate, int borrow) + void fmpz_bit_unpack_unsigned(fmpz_t coeff, const ulong * arr, flint_bitcnt_t shift, flint_bitcnt_t bits) void fmpz_complement(fmpz_t r, const fmpz_t f) void fmpz_clrbit(fmpz_t f, ulong i) void fmpz_combit(fmpz_t f, ulong i) void fmpz_and(fmpz_t r, const fmpz_t a, const fmpz_t b) void fmpz_or(fmpz_t r, const fmpz_t a, const fmpz_t b) void fmpz_xor(fmpz_t r, const fmpz_t a, const fmpz_t b) - int fmpz_popcnt(const fmpz_t a) - void fmpz_CRT_ui(fmpz_t out, fmpz_t r1, fmpz_t m1, ulong r2, ulong m2, int sign) - void fmpz_CRT(fmpz_t out, const fmpz_t r1, const fmpz_t m1, fmpz_t r2, fmpz_t m2, int sign) - # void fmpz_multi_mod_ui(mp_limb_t * out, const fmpz_t in_, const fmpz_comb_t comb, fmpz_comb_temp_t temp) - # void fmpz_multi_CRT_ui(fmpz_t output, mp_srcptr residues, const fmpz_comb_t comb, fmpz_comb_temp_t ctemp, int sign) - # void fmpz_comb_init(fmpz_comb_t comb, mp_srcptr primes, slong num_primes) + ulong fmpz_popcnt(const fmpz_t a) + void fmpz_CRT_ui(fmpz_t out, const fmpz_t r1, const fmpz_t m1, ulong r2, ulong m2, int sign) + void fmpz_CRT(fmpz_t out, const fmpz_t r1, const fmpz_t m1, const fmpz_t r2, const fmpz_t m2, int sign) + # void fmpz_multi_mod_ui(ulong * out, const fmpz_t in_, const fmpz_comb_t comb, fmpz_comb_temp_t temp) + # void fmpz_multi_CRT_ui(fmpz_t output, nn_srcptr residues, const fmpz_comb_t comb, fmpz_comb_temp_t ctemp, int sign) + # void fmpz_comb_init(fmpz_comb_t comb, nn_srcptr primes, slong num_primes) # void fmpz_comb_temp_init(fmpz_comb_temp_t temp, const fmpz_comb_t comb) # void fmpz_comb_clear(fmpz_comb_t comb) # void fmpz_comb_temp_clear(fmpz_comb_temp_t temp) - # void fmpz_multi_crt_init(fmpz_multi_crt_t CRT) - # int fmpz_multi_crt_precompute(fmpz_multi_crt_t CRT, const fmpz_struct * moduli, slong len) - # int fmpz_multi_crt_precompute_p(fmpz_multi_crt_t CRT, const fmpz_struct * const * moduli, slong len) - # void fmpz_multi_crt_precomp(fmpz_t output, const fmpz_multi_crt_t P, const fmpz_struct * inputs) - # void fmpz_multi_crt_precomp_p(fmpz_t output, const fmpz_multi_crt_t P, const fmpz_struct * const * inputs) - int fmpz_multi_crt(fmpz_t output, const fmpz_struct * moduli, const fmpz_struct * values, slong len) - # void fmpz_multi_crt_clear(fmpz_multi_crt_t P) - # slong _nmod_poly_crt_local_size(const nmod_poly_crt_t CRT) - # void _fmpz_multi_crt_run(fmpz_struct * outputs, const fmpz_multi_crt_t CRT, const fmpz_struct * inputs) - # void _fmpz_multi_crt_run_p(fmpz_struct * outputs, const fmpz_multi_crt_t CRT, const fmpz_struct * const * inputs) + # void fmpz_multi_CRT_init(fmpz_multi_CRT_t CRT) + # int fmpz_multi_CRT_precompute(fmpz_multi_CRT_t CRT, const fmpz_struct * moduli, slong len) + # void fmpz_multi_CRT_precomp(fmpz_t output, const fmpz_multi_CRT_t P, const fmpz_struct * inputs, int sign) + int fmpz_multi_CRT(fmpz_t output, const fmpz_struct * moduli, const fmpz_struct * values, slong len, int sign) + # void fmpz_multi_CRT_clear(fmpz_multi_CRT_t P) int fmpz_is_strong_probabprime(const fmpz_t n, const fmpz_t a) int fmpz_is_probabprime_lucas(const fmpz_t n) int fmpz_is_probabprime_BPSW(const fmpz_t n) int fmpz_is_probabprime(const fmpz_t p) int fmpz_is_prime_pseudosquare(const fmpz_t n) - # int fmpz_is_prime_pocklington(fmpz_t F, fmpz_t R, const fmpz_t n, mp_ptr pm1, slong num_pm1) - # void _fmpz_nm1_trial_factors(const fmpz_t n, mp_ptr pm1, slong * num_pm1, ulong limit) - # int fmpz_is_prime_morrison(fmpz_t F, fmpz_t R, const fmpz_t n, mp_ptr pp1, slong num_pp1) - # void _fmpz_np1_trial_factors(const fmpz_t n, mp_ptr pp1, slong * num_pp1, ulong limit) + int fmpz_is_prime_pocklington(fmpz_t F, fmpz_t R, const fmpz_t n, nn_ptr pm1, slong num_pm1) + void _fmpz_nm1_trial_factors(const fmpz_t n, nn_ptr pm1, slong * num_pm1, ulong limit) + int fmpz_is_prime_morrison(fmpz_t F, fmpz_t R, const fmpz_t n, nn_ptr pp1, slong num_pp1) + void _fmpz_np1_trial_factors(const fmpz_t n, nn_ptr pp1, slong * num_pp1, ulong limit) int fmpz_is_prime(const fmpz_t n) void fmpz_lucas_chain(fmpz_t Vm, fmpz_t Vm1, const fmpz_t A, const fmpz_t m, const fmpz_t n) void fmpz_lucas_chain_full(fmpz_t Vm, fmpz_t Vm1, const fmpz_t A, const fmpz_t B, const fmpz_t m, const fmpz_t n) @@ -243,11 +251,9 @@ cdef extern from "flint/fmpz.h": int fmpz_divisor_in_residue_class_lenstra(fmpz_t fac, const fmpz_t n, const fmpz_t r, const fmpz_t s) void fmpz_nextprime(fmpz_t res, const fmpz_t n, int proved) void fmpz_primorial(fmpz_t res, ulong n) - # void fmpz_factor_euler_phi(fmpz_t res, const fmpz_factor_t fac) + void fmpz_factor_euler_phi(fmpz_t res, const fmpz_factor_t fac) void fmpz_euler_phi(fmpz_t res, const fmpz_t n) - # int fmpz_factor_moebius_mu(const fmpz_factor_t fac) + int fmpz_factor_moebius_mu(const fmpz_factor_t fac) int fmpz_moebius_mu(const fmpz_t n) - # void fmpz_factor_divisor_sigma(fmpz_t res, ulong k, const fmpz_factor_t fac) + void fmpz_factor_divisor_sigma(fmpz_t res, ulong k, const fmpz_factor_t fac) void fmpz_divisor_sigma(fmpz_t res, ulong k, const fmpz_t n) - - diff --git a/src/flint/flintlib/fmpz_factor.pxd b/src/flint/flintlib/fmpz_factor.pxd index f7618faa..d5bef2cf 100644 --- a/src/flint/flintlib/fmpz_factor.pxd +++ b/src/flint/flintlib/fmpz_factor.pxd @@ -1,19 +1,14 @@ -from flint.flintlib.flint cimport fmpz_struct, ulong, mp_limb_t, slong, flint_rand_t -from flint.flintlib.fmpz cimport fmpz_t +from flint.flintlib.flint cimport flint_rand_t, nn_ptr, slong, ulong +from flint.flintlib.fmpz_types cimport fmpz_factor_t, fmpz_t + +# unknown type FILE +# unknown type ecm_t -cdef extern from "flint/fmpz_factor.h": - ctypedef struct fmpz_factor_struct: - int sign - fmpz_struct * p - fmpz_struct * exp - long alloc - long num - ctypedef fmpz_factor_struct fmpz_factor_t[1] -# from here on is parsed +cdef extern from "flint/fmpz_factor.h": void fmpz_factor_init(fmpz_factor_t factor) void fmpz_factor_clear(fmpz_factor_t factor) - void _fmpz_factor_append_ui(fmpz_factor_t factor, mp_limb_t p, ulong exp) + void _fmpz_factor_append_ui(fmpz_factor_t factor, ulong p, ulong exp) void _fmpz_factor_append(fmpz_factor_t factor, const fmpz_t p, ulong exp) void fmpz_factor(fmpz_factor_t factor, const fmpz_t n) int fmpz_factor_smooth(fmpz_factor_t factor, const fmpz_t n, slong bits, int proved) @@ -23,25 +18,16 @@ cdef extern from "flint/fmpz_factor.h": void fmpz_factor_refine(fmpz_factor_t res, const fmpz_factor_t f) void fmpz_factor_expand_iterative(fmpz_t n, const fmpz_factor_t factor) int fmpz_factor_pp1(fmpz_t factor, const fmpz_t n, ulong B1, ulong B2_sqrt, ulong c) - int fmpz_factor_pollard_brent_single(fmpz_t p_factor, fmpz_t n_in, fmpz_t yi, fmpz_t ai, mp_limb_t max_iters) - int fmpz_factor_pollard_brent(fmpz_t factor, flint_rand_t state, fmpz_t n, mp_limb_t max_tries, mp_limb_t max_iters) - # void fmpz_factor_ecm_init(ecm_t ecm_inf, mp_limb_t sz) + int fmpz_factor_pollard_brent_single(fmpz_t p_factor, fmpz_t n_in, fmpz_t yi, fmpz_t ai, ulong max_iters) + int fmpz_factor_pollard_brent(fmpz_t factor, flint_rand_t state, fmpz_t n, ulong max_tries, ulong max_iters) + # int fmpz_factor_fprint(FILE * fs, const fmpz_factor_t factor) + int fmpz_factor_print(const fmpz_factor_t factor) + # void fmpz_factor_ecm_init(ecm_t ecm_inf, ulong sz) # void fmpz_factor_ecm_clear(ecm_t ecm_inf) - # void fmpz_factor_ecm_addmod(mp_ptr a, mp_ptr b, mp_ptr c, mp_ptr n, mp_limb_t n_size) - # void fmpz_factor_ecm_submod(mp_ptr x, mp_ptr a, mp_ptr b, mp_ptr n, mp_limb_t n_size) - # void fmpz_factor_ecm_double(mp_ptr x, mp_ptr z, mp_ptr x0, mp_ptr z0, mp_ptr n, ecm_t ecm_inf) - # void fmpz_factor_ecm_add(mp_ptr x, mp_ptr z, mp_ptr x1, mp_ptr z1, mp_ptr x2, mp_ptr z2, mp_ptr x0, mp_ptr z0, mp_ptr n, ecm_t ecm_inf) - # void fmpz_factor_ecm_mul_montgomery_ladder(mp_ptr x, mp_ptr z, mp_ptr x0, mp_ptr z0, mp_limb_t k, mp_ptr n, ecm_t ecm_inf) - # int fmpz_factor_ecm_select_curve(mp_ptr f, mp_ptr sigma, mp_ptr n, ecm_t ecm_inf) - # int fmpz_factor_ecm_stage_I(mp_ptr f, const mp_limb_t *prime_array, mp_limb_t num, mp_limb_t B1, mp_ptr n, ecm_t ecm_inf) - # int fmpz_factor_ecm_stage_II(mp_ptr f, mp_limb_t B1, mp_limb_t B2, mp_limb_t P, mp_ptr n, ecm_t ecm_inf) - # int fmpz_factor_ecm(fmpz_t f, mp_limb_t curves, mp_limb_t B1, mp_limb_t B2, flint_rand_t state, fmpz_t n_in) - - -# this function wasn't in the doc - void fmpz_factor_expand(fmpz_t n, const fmpz_factor_t factor) - -cdef extern from "flint/fmpz.h": - void fmpz_factor_euler_phi(fmpz_t res, const fmpz_factor_t fac) - int fmpz_factor_moebius_mu(const fmpz_factor_t fac) - void fmpz_factor_divisor_sigma(fmpz_t res, ulong k, const fmpz_factor_t fac) + # void fmpz_factor_ecm_double(nn_ptr x, nn_ptr z, nn_ptr x0, nn_ptr z0, nn_ptr n, ecm_t ecm_inf) + # void fmpz_factor_ecm_add(nn_ptr x, nn_ptr z, nn_ptr x1, nn_ptr z1, nn_ptr x2, nn_ptr z2, nn_ptr x0, nn_ptr z0, nn_ptr n, ecm_t ecm_inf) + # void fmpz_factor_ecm_mul_montgomery_ladder(nn_ptr x, nn_ptr z, nn_ptr x0, nn_ptr z0, ulong k, nn_ptr n, ecm_t ecm_inf) + # int fmpz_factor_ecm_select_curve(nn_ptr f, nn_ptr sigma, nn_ptr n, ecm_t ecm_inf) + # int fmpz_factor_ecm_stage_I(nn_ptr f, const ulong * prime_array, ulong num, ulong B1, nn_ptr n, ecm_t ecm_inf) + # int fmpz_factor_ecm_stage_II(nn_ptr f, ulong B1, ulong B2, ulong P, nn_ptr n, ecm_t ecm_inf) + int fmpz_factor_ecm(fmpz_t f, ulong curves, ulong B1, ulong B2, flint_rand_t state, const fmpz_t n_in) diff --git a/src/flint/flintlib/fmpz_lll.pxd b/src/flint/flintlib/fmpz_lll.pxd index 7da0e42b..c0a08e66 100644 --- a/src/flint/flintlib/fmpz_lll.pxd +++ b/src/flint/flintlib/fmpz_lll.pxd @@ -1,28 +1,23 @@ -from flint.flintlib.fmpz_mat cimport fmpz_mat_t -from flint.flintlib.flint cimport flint_rand_t, slong, flint_bitcnt_t -from flint.flintlib.fmpz cimport fmpz_t +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 -cdef extern from "flint/fmpz_lll.h": - ctypedef struct fmpz_lll_struct: - double delta - double eta - int rt - int gt +# unknown type d_mat_t +# unknown type fmpz_gram_t +# unknown type mpf +# unknown type mpf_mat_t +# unknown type mpf_t - ctypedef fmpz_lll_struct fmpz_lll_t[1] - ctypedef int gram_type - ctypedef int rep_type -# from here on is parsed +cdef extern from "flint/fmpz_lll.h": void fmpz_lll_context_init_default(fmpz_lll_t fl) void fmpz_lll_context_init(fmpz_lll_t fl, double delta, double eta, rep_type rt, gram_type gt) void fmpz_lll_randtest(fmpz_lll_t fl, flint_rand_t state) double fmpz_lll_heuristic_dot(const double * vec1, const double * vec2, slong len2, const fmpz_mat_t B, slong k, slong j, slong exp_adj) - # int fmpz_lll_check_babai(int kappa, fmpz_mat_t B, fmpz_mat_t U, d_mat_t mu, d_mat_t r, double *s, d_mat_t appB, int *expo, fmpz_gram_t A, int a, int zeros, int kappamax, int n, const fmpz_lll_t fl) - # int fmpz_lll_check_babai_heuristic_d(int kappa, fmpz_mat_t B, fmpz_mat_t U, d_mat_t mu, d_mat_t r, double *s, d_mat_t appB, int *expo, fmpz_gram_t A, int a, int zeros, int kappamax, int n, const fmpz_lll_t fl) - # int fmpz_lll_check_babai_heuristic(int kappa, fmpz_mat_t B, fmpz_mat_t U, mpf_mat_t mu, mpf_mat_t r, mpf *s, mpf_mat_t appB, fmpz_gram_t A, int a, int zeros, int kappamax, int n, mpf_t tmp, mpf_t rtmp, flint_bitcnt_t prec, const fmpz_lll_t fl) - # int fmpz_lll_advance_check_babai(int cur_kappa, int kappa, fmpz_mat_t B, fmpz_mat_t U, d_mat_t mu, d_mat_t r, double *s, d_mat_t appB, int *expo, fmpz_gram_t A, int a, int zeros, int kappamax, int n, const fmpz_lll_t fl) - # int fmpz_lll_advance_check_babai_heuristic_d(int cur_kappa, int kappa, fmpz_mat_t B, fmpz_mat_t U, d_mat_t mu, d_mat_t r, double *s, d_mat_t appB, int *expo, fmpz_gram_t A, int a, int zeros, int kappamax, int n, const fmpz_lll_t fl) + # int fmpz_lll_check_babai(int kappa, fmpz_mat_t B, fmpz_mat_t U, d_mat_t mu, d_mat_t r, double * s, d_mat_t appB, int * expo, fmpz_gram_t A, int a, int zeros, int kappamax, int n, const fmpz_lll_t fl) + # int fmpz_lll_check_babai_heuristic_d(int kappa, fmpz_mat_t B, fmpz_mat_t U, d_mat_t mu, d_mat_t r, double * s, d_mat_t appB, int * expo, fmpz_gram_t A, int a, int zeros, int kappamax, int n, const fmpz_lll_t fl) + # int fmpz_lll_check_babai_heuristic(int kappa, fmpz_mat_t B, fmpz_mat_t U, mpf_mat_t mu, mpf_mat_t r, mpf * s, mpf_mat_t appB, fmpz_gram_t A, int a, int zeros, int kappamax, int n, mpf_t tmp, mpf_t rtmp, flint_bitcnt_t prec, const fmpz_lll_t fl) + # int fmpz_lll_advance_check_babai(int cur_kappa, int kappa, fmpz_mat_t B, fmpz_mat_t U, d_mat_t mu, d_mat_t r, double * s, d_mat_t appB, int * expo, fmpz_gram_t A, int a, int zeros, int kappamax, int n, const fmpz_lll_t fl) + # int fmpz_lll_advance_check_babai_heuristic_d(int cur_kappa, int kappa, fmpz_mat_t B, fmpz_mat_t U, d_mat_t mu, d_mat_t r, double * s, d_mat_t appB, int * expo, fmpz_gram_t A, int a, int zeros, int kappamax, int n, const fmpz_lll_t fl) int fmpz_lll_shift(const fmpz_mat_t B) int fmpz_lll_d(fmpz_mat_t B, fmpz_mat_t U, const fmpz_lll_t fl) int fmpz_lll_d_heuristic(fmpz_mat_t B, fmpz_mat_t U, const fmpz_lll_t fl) diff --git a/src/flint/flintlib/fmpz_mat.pxd b/src/flint/flintlib/fmpz_mat.pxd index b8cd22f6..e1f7e99e 100644 --- a/src/flint/flintlib/fmpz_mat.pxd +++ b/src/flint/flintlib/fmpz_mat.pxd @@ -1,27 +1,24 @@ -from flint.flintlib.flint cimport flint_rand_t, mp_bitcnt_t, ulong, slong, flint_bitcnt_t, mp_limb_t -from flint.flintlib.fmpz cimport fmpz_struct, fmpz_t -from flint.flintlib.fmpz_poly cimport fmpz_poly_t -from flint.flintlib.nmod_mat cimport nmod_mat_t +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 + +# unknown type FILE +# unknown type d_mat_t +# unknown type fmpz_comb_t +# unknown type fmpz_comb_temp_t -cdef extern from "flint/fmpz_mat.h": - ctypedef struct fmpz_mat_struct: - fmpz_struct * entries - long r - long c - fmpz_struct ** rows - ctypedef fmpz_mat_struct fmpz_mat_t[1] - long fmpz_mat_nrows(fmpz_mat_t mat) - long fmpz_mat_ncols(fmpz_mat_t mat) -# from here on is parsed +cdef extern from "flint/fmpz_mat.h": void fmpz_mat_init(fmpz_mat_t mat, slong rows, slong cols) void fmpz_mat_clear(fmpz_mat_t mat) void fmpz_mat_set(fmpz_mat_t mat1, const fmpz_mat_t mat2) void fmpz_mat_init_set(fmpz_mat_t mat, const fmpz_mat_t src) + slong fmpz_mat_nrows(const fmpz_mat_t mat) + slong fmpz_mat_ncols(const fmpz_mat_t mat) void fmpz_mat_swap(fmpz_mat_t mat1, fmpz_mat_t mat2) void fmpz_mat_swap_entrywise(fmpz_mat_t mat1, fmpz_mat_t mat2) - fmpz_struct * fmpz_mat_entry(fmpz_mat_t mat, slong i, slong j) + fmpz_struct * fmpz_mat_entry(const fmpz_mat_t mat, slong i, slong j) void fmpz_mat_zero(fmpz_mat_t mat) void fmpz_mat_one(fmpz_mat_t mat) void fmpz_mat_swap_rows(fmpz_mat_t mat, slong * perm, slong r, slong s) @@ -41,8 +38,11 @@ cdef extern from "flint/fmpz_mat.h": void fmpz_mat_randrank(fmpz_mat_t mat, flint_rand_t state, slong rank, flint_bitcnt_t bits) void fmpz_mat_randdet(fmpz_mat_t mat, flint_rand_t state, const fmpz_t det) void fmpz_mat_randops(fmpz_mat_t mat, flint_rand_t state, slong count) + # int fmpz_mat_fprint(FILE * file, const fmpz_mat_t mat) + # int fmpz_mat_fprint_pretty(FILE * file, const fmpz_mat_t mat) int fmpz_mat_print(const fmpz_mat_t mat) int fmpz_mat_print_pretty(const fmpz_mat_t mat) + # int fmpz_mat_fread(FILE * file, fmpz_mat_t mat) int fmpz_mat_read(fmpz_mat_t mat) int fmpz_mat_equal(const fmpz_mat_t mat1, const fmpz_mat_t mat2) int fmpz_mat_is_zero(const fmpz_mat_t mat) @@ -50,8 +50,8 @@ cdef extern from "flint/fmpz_mat.h": int fmpz_mat_is_empty(const fmpz_mat_t mat) int fmpz_mat_is_square(const fmpz_mat_t mat) int fmpz_mat_is_zero_row(const fmpz_mat_t mat, slong i) - int fmpz_mat_col_equal(fmpz_mat_t M, slong m, slong n) - int fmpz_mat_row_equal(fmpz_mat_t M, slong m, slong n) + int fmpz_mat_equal_col(fmpz_mat_t M, slong m, slong n) + int fmpz_mat_equal_row(fmpz_mat_t M, slong m, slong n) void fmpz_mat_transpose(fmpz_mat_t B, const fmpz_mat_t A) void fmpz_mat_concat_vertical(fmpz_mat_t res, const fmpz_mat_t mat1, const fmpz_mat_t mat2) void fmpz_mat_concat_horizontal(fmpz_mat_t res, const fmpz_mat_t mat1, const fmpz_mat_t mat2) @@ -59,9 +59,9 @@ cdef extern from "flint/fmpz_mat.h": void fmpz_mat_set_nmod_mat(fmpz_mat_t A, const nmod_mat_t Amod) void fmpz_mat_set_nmod_mat_unsigned(fmpz_mat_t A, const nmod_mat_t Amod) void fmpz_mat_CRT_ui(fmpz_mat_t res, const fmpz_mat_t mat1, const fmpz_t m1, const nmod_mat_t mat2, int sign) - # void fmpz_mat_multi_mod_ui_precomp(nmod_mat_t * residues, slong nres, const fmpz_mat_t mat, fmpz_comb_t comb, fmpz_comb_temp_t temp) + # void fmpz_mat_multi_mod_ui_precomp(nmod_mat_t * residues, slong nres, const fmpz_mat_t mat, const fmpz_comb_t comb, fmpz_comb_temp_t temp) void fmpz_mat_multi_mod_ui(nmod_mat_t * residues, slong nres, const fmpz_mat_t mat) - # void fmpz_mat_multi_CRT_ui_precomp(fmpz_mat_t mat, nmod_mat_t * const residues, slong nres, fmpz_comb_t comb, fmpz_comb_temp_t temp, int sign) + # void fmpz_mat_multi_CRT_ui_precomp(fmpz_mat_t mat, nmod_mat_t * const residues, slong nres, const fmpz_comb_t comb, fmpz_comb_temp_t temp, int sign) void fmpz_mat_multi_CRT_ui(fmpz_mat_t mat, nmod_mat_t * const residues, slong nres, int sign) void fmpz_mat_add(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) void fmpz_mat_sub(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) @@ -85,6 +85,7 @@ cdef extern from "flint/fmpz_mat.h": void fmpz_mat_scalar_smod(fmpz_mat_t B, const fmpz_mat_t A, const fmpz_t P) void fmpz_mat_mul(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) void fmpz_mat_mul_classical(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) + void fmpz_mat_mul_waksman(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) void fmpz_mat_mul_strassen(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) void _fmpz_mat_mul_multi_mod(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B, int sign, flint_bitcnt_t bits) void fmpz_mat_mul_multi_mod(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) @@ -93,7 +94,7 @@ cdef extern from "flint/fmpz_mat.h": void fmpz_mat_sqr(fmpz_mat_t B, const fmpz_mat_t A) void fmpz_mat_sqr_bodrato(fmpz_mat_t B, const fmpz_mat_t A) void fmpz_mat_pow(fmpz_mat_t B, const fmpz_mat_t A, ulong e) - int _fmpz_mat_mul_small(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) + void _fmpz_mat_mul_small(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) void _fmpz_mat_mul_double_word(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) void fmpz_mat_mul_fmpz_vec(fmpz_struct * c, const fmpz_mat_t A, const fmpz_struct * b, slong blen) void fmpz_mat_mul_fmpz_vec_ptr(fmpz_struct * const * c, const fmpz_mat_t A, const fmpz_struct * const * b, slong blen) @@ -110,6 +111,7 @@ cdef extern from "flint/fmpz_mat.h": void fmpz_mat_det_modular_accelerated(fmpz_t det, const fmpz_mat_t A, int proved) void fmpz_mat_det_modular_given_divisor(fmpz_t det, const fmpz_mat_t A, const fmpz_t d, int proved) void fmpz_mat_det_bound(fmpz_t bound, const fmpz_mat_t A) + void fmpz_mat_det_bound_nonzero(fmpz_t bound, const fmpz_mat_t A) void fmpz_mat_det_divisor(fmpz_t d, const fmpz_mat_t A) void fmpz_mat_similarity(fmpz_mat_t A, slong r, fmpz_t d) void _fmpz_mat_charpoly_berkowitz(fmpz_struct * cp, const fmpz_mat_t mat) @@ -130,11 +132,11 @@ cdef extern from "flint/fmpz_mat.h": int fmpz_mat_solve_cramer(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) void fmpz_mat_solve_bound(fmpz_t N, fmpz_t D, const fmpz_mat_t A, const fmpz_mat_t B) int fmpz_mat_solve_dixon(fmpz_mat_t X, fmpz_t M, const fmpz_mat_t A, const fmpz_mat_t B) - void _fmpz_mat_solve_dixon_den(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B, const nmod_mat_t Ainv, mp_limb_t p, const fmpz_t N, const fmpz_t D) + void _fmpz_mat_solve_dixon_den(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B, const nmod_mat_t Ainv, ulong p, const fmpz_t N, const fmpz_t D) int fmpz_mat_solve_dixon_den(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) int fmpz_mat_solve_multi_mod_den(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) int fmpz_mat_can_solve_multi_mod_den(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) - void fmpz_mat_can_solve_fflu(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) + int fmpz_mat_can_solve_fflu(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) int fmpz_mat_can_solve(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) slong fmpz_mat_find_pivot_any(const fmpz_mat_t mat, slong start_row, slong end_row, slong c) slong fmpz_mat_fflu(fmpz_mat_t B, fmpz_t den, slong * perm, const fmpz_mat_t A, int rank_check) @@ -142,9 +144,8 @@ cdef extern from "flint/fmpz_mat.h": slong fmpz_mat_rref_fflu(fmpz_mat_t B, fmpz_t den, const fmpz_mat_t A) slong fmpz_mat_rref_mul(fmpz_mat_t B, fmpz_t den, const fmpz_mat_t A) int fmpz_mat_is_in_rref_with_rank(const fmpz_mat_t A, const fmpz_t den, slong rank) - slong fmpz_mat_rref_mod(slong * perm, fmpz_mat_t A, const fmpz_t p) void fmpz_mat_strong_echelon_form_mod(fmpz_mat_t A, const fmpz_t mod) - slong fmpz_mat_howell_form_mod(nmod_mat_t A, const fmpz_t mod) + slong fmpz_mat_howell_form_mod(fmpz_mat_t A, const fmpz_t mod) slong fmpz_mat_nullspace(fmpz_mat_t B, const fmpz_mat_t A) slong fmpz_mat_rref_fraction_free(slong * perm, fmpz_mat_t B, fmpz_t den, const fmpz_mat_t A) void fmpz_mat_hnf(fmpz_mat_t H, const fmpz_mat_t A) @@ -166,56 +167,11 @@ cdef extern from "flint/fmpz_mat.h": int fmpz_mat_hadamard(fmpz_mat_t H) # int fmpz_mat_get_d_mat(d_mat_t B, const fmpz_mat_t A) # int fmpz_mat_get_d_mat_transpose(d_mat_t B, const fmpz_mat_t A) - # void fmpz_mat_get_mpf_mat(mpf_mat_t B, const fmpz_mat_t A) # void fmpz_mat_chol_d(d_mat_t R, const fmpz_mat_t A) + void fmpz_mat_is_spd(const fmpz_mat_t A) int fmpz_mat_is_reduced(const fmpz_mat_t A, double delta, double eta) int fmpz_mat_is_reduced_gram(const fmpz_mat_t A, double delta, double eta) int fmpz_mat_is_reduced_with_removal(const fmpz_mat_t A, double delta, double eta, const fmpz_t gs_B, int newd) int fmpz_mat_is_reduced_gram_with_removal(const fmpz_mat_t A, double delta, double eta, const fmpz_t gs_B, int newd) void fmpz_mat_lll_original(fmpz_mat_t A, const fmpq_t delta, const fmpq_t eta) void fmpz_mat_lll_storjohann(fmpz_mat_t A, const fmpq_t delta, const fmpq_t eta) - - # fmpz_struct * fmpz_mat_entry(fmpz_mat_t mat, long i, long j) - # void fmpz_mat_init(fmpz_mat_t mat, long rows, long cols) - # void fmpz_mat_init_set(fmpz_mat_t mat, fmpz_mat_t src) - # void fmpz_mat_swap(fmpz_mat_t mat1, fmpz_mat_t mat2) - # void fmpz_mat_set(fmpz_mat_t mat1, fmpz_mat_t mat2) - # void fmpz_mat_clear(fmpz_mat_t mat) - # int fmpz_mat_equal(fmpz_mat_t mat1, fmpz_mat_t mat2) - # int fmpz_mat_is_zero( fmpz_mat_t mat) - # int fmpz_mat_is_empty( fmpz_mat_t mat) - # int fmpz_mat_is_square( fmpz_mat_t mat) - # void fmpz_mat_zero(fmpz_mat_t mat) - # void fmpz_mat_one(fmpz_mat_t mat) - # void fmpz_mat_get_nmod_mat(nmod_mat_t mat, fmpz_mat_t mat2) - # void fmpz_mat_randbits(fmpz_mat_t mat, flint_rand_t state, mp_bitcnt_t bits) - # void fmpz_mat_randtest(fmpz_mat_t mat, flint_rand_t state, mp_bitcnt_t bits) - # void fmpz_mat_randtest_unsigned(fmpz_mat_t mat, flint_rand_t state, mp_bitcnt_t bits) - # void fmpz_mat_randrank(fmpz_mat_t mat, flint_rand_t state, long rank, mp_bitcnt_t bits) - # int fmpz_mat_print_pretty( fmpz_mat_t mat) - # void fmpz_mat_transpose(fmpz_mat_t B, fmpz_mat_t A) - # void fmpz_mat_add(fmpz_mat_t C, fmpz_mat_t A, fmpz_mat_t B) - # void fmpz_mat_sub(fmpz_mat_t C, fmpz_mat_t A, fmpz_mat_t B) - # void fmpz_mat_neg(fmpz_mat_t B, fmpz_mat_t A) - # void fmpz_mat_scalar_mul_fmpz(fmpz_mat_t B, fmpz_mat_t A, fmpz_t c) - # void fmpz_mat_scalar_mul_si(fmpz_mat_t B, fmpz_mat_t A, long c) - # void fmpz_mat_scalar_mul_ui(fmpz_mat_t B, fmpz_mat_t A, ulong c) - # void fmpz_mat_mul(fmpz_mat_t C, fmpz_mat_t A, fmpz_mat_t B) - # void fmpz_mat_det(fmpz_t det, fmpz_mat_t A) - # long fmpz_mat_rank(fmpz_mat_t A) - # long fmpz_mat_rref(fmpz_mat_t R, fmpz_t den, fmpz_mat_t A) - # void fmpz_mat_inv(fmpz_mat_t B, fmpz_t den, fmpz_mat_t A) - # int fmpz_mat_solve(fmpz_mat_t X, fmpz_t den, fmpz_mat_t A, fmpz_mat_t B) - # long fmpz_mat_nullspace(fmpz_mat_t res, fmpz_mat_t mat) - # void fmpz_mat_pow(fmpz_mat_t A, fmpz_mat_t B, ulong e) - # int fmpz_mat_is_hadamard(const fmpz_mat_t A) - # int fmpz_mat_hadamard(fmpz_mat_t A) - - # void fmpz_mat_hnf(fmpz_mat_t H, const fmpz_mat_t A) - # void fmpz_mat_hnf_transform(fmpz_mat_t H, fmpz_mat_t U, const fmpz_mat_t A) - # int fmpz_mat_is_in_hnf(const fmpz_mat_t A) - # void fmpz_mat_snf(fmpz_mat_t S, const fmpz_mat_t A) - # int fmpz_mat_is_in_snf(const fmpz_mat_t A) - - # void fmpz_mat_charpoly(fmpz_poly_t cp, const fmpz_mat_t mat) - # void fmpz_mat_minpoly(fmpz_poly_t cp, const fmpz_mat_t mat) diff --git a/src/flint/flintlib/fmpz_mod.pxd b/src/flint/flintlib/fmpz_mod.pxd index b6d96f82..f5b92363 100644 --- a/src/flint/flintlib/fmpz_mod.pxd +++ b/src/flint/flintlib/fmpz_mod.pxd @@ -1,5 +1,5 @@ from flint.flintlib.flint cimport ulong, slong -from flint.flintlib.fmpz cimport fmpz_t, fmpz_struct, fmpz_preinvn_struct +from flint.flintlib.fmpz_types cimport fmpz_t, fmpz_struct, fmpz_preinvn_struct from flint.flintlib.nmod cimport nmod_t cdef extern from "flint/fmpz_mod.h": diff --git a/src/flint/flintlib/fmpz_mod_mpoly.pxd b/src/flint/flintlib/fmpz_mod_mpoly.pxd index bb00391b..e4fe87a6 100644 --- a/src/flint/flintlib/fmpz_mod_mpoly.pxd +++ b/src/flint/flintlib/fmpz_mod_mpoly.pxd @@ -1,6 +1,5 @@ -from flint.flintlib.fmpz cimport fmpz_t +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.fmpz_poly cimport fmpz_poly_struct, fmpz_poly_t from flint.flintlib.mpoly cimport mpoly_ctx_t, ordering_t from flint.flintlib.fmpz_mod cimport fmpz_mod_ctx_t diff --git a/src/flint/flintlib/fmpz_mod_poly.pxd b/src/flint/flintlib/fmpz_mod_poly.pxd index f9dc4110..150d5db4 100644 --- a/src/flint/flintlib/fmpz_mod_poly.pxd +++ b/src/flint/flintlib/fmpz_mod_poly.pxd @@ -1,7 +1,12 @@ from flint.flintlib.flint cimport ulong, slong, flint_rand_t -from flint.flintlib.fmpz cimport fmpz_t, fmpz_struct -from flint.flintlib.fmpz_mat cimport fmpz_mat_t, fmpz_mat_struct -from flint.flintlib.fmpz_poly cimport fmpz_poly_t, fmpz_poly_struct +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 diff --git a/src/flint/flintlib/fmpz_mpoly.pxd b/src/flint/flintlib/fmpz_mpoly.pxd index 82610dc2..b783f603 100644 --- a/src/flint/flintlib/fmpz_mpoly.pxd +++ b/src/flint/flintlib/fmpz_mpoly.pxd @@ -1,7 +1,6 @@ from flint.flintlib.mpoly cimport mpoly_ctx_t, ordering_t -from flint.flintlib.fmpz cimport fmpz_t, fmpz_struct +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.fmpz_poly cimport fmpz_poly_t, fmpz_poly_struct cdef extern from "flint/fmpz_mpoly.h": ctypedef struct fmpz_mpoly_ctx_struct: diff --git a/src/flint/flintlib/fmpz_poly.pxd b/src/flint/flintlib/fmpz_poly.pxd index 4d6c75e6..ccaf6a90 100644 --- a/src/flint/flintlib/fmpz_poly.pxd +++ b/src/flint/flintlib/fmpz_poly.pxd @@ -1,26 +1,15 @@ -from flint.flintlib.flint cimport ulong, mp_limb_t, slong, flint_rand_t, flint_bitcnt_t -from flint.flintlib.fmpz cimport fmpz_struct,fmpz_t -from flint.flintlib.fmpq cimport fmpq_struct,fmpq_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_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 -cdef extern from "flint/fmpz_poly.h": - ctypedef struct fmpz_poly_struct: - fmpz_struct * coeffs - long alloc - long length - ctypedef fmpz_poly_struct fmpz_poly_t[1] - - ctypedef struct fmpz_poly_factor_struct: - fmpz_struct c - fmpz_poly_struct *p - long *exp - long num - long alloc - ctypedef fmpz_poly_factor_struct fmpz_poly_factor_t[1] +# unknown type FILE +# unknown type fmpz_poly_mul_precache_t +# unknown type fmpz_poly_powers_precomp_t -# from here on is parsed +cdef extern from "flint/fmpz_poly.h": void fmpz_poly_init(fmpz_poly_t poly) void fmpz_poly_init2(fmpz_poly_t poly, slong alloc) void fmpz_poly_realloc(fmpz_poly_t poly, slong alloc) @@ -28,15 +17,14 @@ cdef extern from "flint/fmpz_poly.h": void fmpz_poly_clear(fmpz_poly_t poly) void _fmpz_poly_normalise(fmpz_poly_t poly) void _fmpz_poly_set_length(fmpz_poly_t poly, slong newlen) - void fmpz_poly_attach_truncate(fmpz_poly_t trunc, fmpz_poly_t poly, slong n) - void fmpz_poly_attach_shift(fmpz_poly_t trunc, fmpz_poly_t poly, slong n) + void fmpz_poly_attach_truncate(fmpz_poly_t trunc, const fmpz_poly_t poly, slong n) + void fmpz_poly_attach_shift(fmpz_poly_t trunc, const fmpz_poly_t poly, slong n) slong fmpz_poly_length(const fmpz_poly_t poly) slong fmpz_poly_degree(const fmpz_poly_t poly) void fmpz_poly_set(fmpz_poly_t poly1, const fmpz_poly_t poly2) void fmpz_poly_set_si(fmpz_poly_t poly, slong c) void fmpz_poly_set_ui(fmpz_poly_t poly, ulong c) void fmpz_poly_set_fmpz(fmpz_poly_t poly, const fmpz_t c) - # void fmpz_poly_set_mpz(fmpz_poly_t poly, const mpz_t c) int _fmpz_poly_set_str(fmpz_struct * poly, const char * str) int fmpz_poly_set_str(fmpz_poly_t poly, const char * str) char * _fmpz_poly_get_str(const fmpz_struct * poly, slong len) @@ -55,6 +43,9 @@ cdef extern from "flint/fmpz_poly.h": void fmpz_poly_randtest_unsigned(fmpz_poly_t f, flint_rand_t state, slong len, flint_bitcnt_t bits) void fmpz_poly_randtest_not_zero(fmpz_poly_t f, flint_rand_t state, slong len, flint_bitcnt_t bits) void fmpz_poly_randtest_no_real_root(fmpz_poly_t p, flint_rand_t state, slong len, flint_bitcnt_t bits) + void fmpz_poly_randtest_irreducible1(fmpz_poly_t pol, flint_rand_t state, slong len, flint_bitcnt_t bits) + void fmpz_poly_randtest_irreducible2(fmpz_poly_t pol, flint_rand_t state, slong len, flint_bitcnt_t bits) + void fmpz_poly_randtest_irreducible(fmpz_poly_t pol, flint_rand_t state, slong len, flint_bitcnt_t bits) void fmpz_poly_get_coeff_fmpz(fmpz_t x, const fmpz_poly_t poly, slong n) slong fmpz_poly_get_coeff_si(const fmpz_poly_t poly, slong n) ulong fmpz_poly_get_coeff_ui(const fmpz_poly_t poly, slong n) @@ -71,41 +62,38 @@ cdef extern from "flint/fmpz_poly.h": int fmpz_poly_is_gen(const fmpz_poly_t poly) void _fmpz_poly_add(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) void fmpz_poly_add(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) - void fmpz_poly_add_series(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong n) + void fmpz_poly_add_series(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) void _fmpz_poly_sub(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) void fmpz_poly_sub(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) - void fmpz_poly_sub_series(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong n) + void fmpz_poly_sub_series(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) void fmpz_poly_neg(fmpz_poly_t res, const fmpz_poly_t poly) void fmpz_poly_scalar_abs(fmpz_poly_t res, const fmpz_poly_t poly) void fmpz_poly_scalar_mul_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t x) - # void fmpz_poly_scalar_mul_mpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const mpz_t x) - void fmpz_poly_scalar_mul_si(fmpz_poly_t poly1, fmpz_poly_t poly2, slong x) - void fmpz_poly_scalar_mul_ui(fmpz_poly_t poly1, fmpz_poly_t poly2, ulong x) - void fmpz_poly_scalar_mul_2exp(fmpz_poly_t poly1, fmpz_poly_t poly2, ulong exp) + void fmpz_poly_scalar_mul_si(fmpz_poly_t poly1, const fmpz_poly_t poly2, slong x) + void fmpz_poly_scalar_mul_ui(fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong x) + void fmpz_poly_scalar_mul_2exp(fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong exp) void fmpz_poly_scalar_addmul_si(fmpz_poly_t poly1, const fmpz_poly_t poly2, slong x) void fmpz_poly_scalar_addmul_ui(fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong x) void fmpz_poly_scalar_addmul_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t x) void fmpz_poly_scalar_submul_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t x) void fmpz_poly_scalar_fdiv_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t x) - # void fmpz_poly_scalar_fdiv_mpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const mpz_t x) - void fmpz_poly_scalar_fdiv_si(fmpz_poly_t poly1, fmpz_poly_t poly2, slong x) - void fmpz_poly_scalar_fdiv_ui(fmpz_poly_t poly1, fmpz_poly_t poly2, ulong x) - void fmpz_poly_scalar_fdiv_2exp(fmpz_poly_t poly1, fmpz_poly_t poly2, ulong x) + void fmpz_poly_scalar_fdiv_si(fmpz_poly_t poly1, const fmpz_poly_t poly2, slong x) + void fmpz_poly_scalar_fdiv_ui(fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong x) + void fmpz_poly_scalar_fdiv_2exp(fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong x) void fmpz_poly_scalar_tdiv_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t x) - void fmpz_poly_scalar_tdiv_si(fmpz_poly_t poly1, fmpz_poly_t poly2, slong x) - void fmpz_poly_scalar_tdiv_ui(fmpz_poly_t poly1, fmpz_poly_t poly2, ulong x) - void fmpz_poly_scalar_tdiv_2exp(fmpz_poly_t poly1, fmpz_poly_t poly2, ulong x) + void fmpz_poly_scalar_tdiv_si(fmpz_poly_t poly1, const fmpz_poly_t poly2, slong x) + void fmpz_poly_scalar_tdiv_ui(fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong x) + void fmpz_poly_scalar_tdiv_2exp(fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong x) void fmpz_poly_scalar_divexact_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t x) - # void fmpz_poly_scalar_divexact_mpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const mpz_t x) - void fmpz_poly_scalar_divexact_si(fmpz_poly_t poly1, fmpz_poly_t poly2, slong x) - void fmpz_poly_scalar_divexact_ui(fmpz_poly_t poly1, fmpz_poly_t poly2, ulong x) + void fmpz_poly_scalar_divexact_si(fmpz_poly_t poly1, const fmpz_poly_t poly2, slong x) + void fmpz_poly_scalar_divexact_ui(fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong x) void fmpz_poly_scalar_mod_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t p) void fmpz_poly_scalar_smod_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t p) slong _fmpz_poly_remove_content_2exp(fmpz_struct * pol, slong len) void _fmpz_poly_scale_2exp(fmpz_struct * pol, slong len, slong k) - # void _fmpz_poly_bit_pack(mp_ptr arr, const fmpz_struct * poly, slong len, flint_bitcnt_t bit_size, int negate) - # int _fmpz_poly_bit_unpack(fmpz_struct * poly, slong len, mp_srcptr arr, flint_bitcnt_t bit_size, int negate) - # void _fmpz_poly_bit_unpack_unsigned(fmpz_struct * poly, slong len, mp_srcptr_t arr, flint_bitcnt_t bit_size) + void _fmpz_poly_bit_pack(nn_ptr arr, const fmpz_struct * poly, slong len, flint_bitcnt_t bit_size, int negate) + int _fmpz_poly_bit_unpack(fmpz_struct * poly, slong len, nn_srcptr arr, flint_bitcnt_t bit_size, int negate) + void _fmpz_poly_bit_unpack_unsigned(fmpz_struct * poly, slong len, nn_srcptr arr, flint_bitcnt_t bit_size) void fmpz_poly_bit_pack(fmpz_t f, const fmpz_poly_t poly, flint_bitcnt_t bit_size) void fmpz_poly_bit_unpack(fmpz_poly_t poly, const fmpz_t f, flint_bitcnt_t bit_size) void fmpz_poly_bit_unpack_unsigned(fmpz_poly_t poly, const fmpz_t f, flint_bitcnt_t bit_size) @@ -141,7 +129,7 @@ cdef extern from "flint/fmpz_poly.h": # void fmpz_poly_mul_precache_clear(fmpz_poly_mul_precache_t pre) # void _fmpz_poly_mullow_SS_precache(fmpz_struct * output, const fmpz_struct * input1, slong len1, fmpz_poly_mul_precache_t pre, slong trunc) # void fmpz_poly_mullow_SS_precache(fmpz_poly_t res, const fmpz_poly_t poly1, fmpz_poly_mul_precache_t pre, slong n) - # void fmpz_poly_mul_SS_precache(fmpz_poly_t res, const fmpz_poly_t poly1, fmpz_poly_precache_t pre) + # void fmpz_poly_mul_SS_precache(fmpz_poly_t res, const fmpz_poly_t poly1, fmpz_poly_mul_precache_t pre) void _fmpz_poly_sqr_KS(fmpz_struct * rop, const fmpz_struct * op, slong len) void fmpz_poly_sqr_KS(fmpz_poly_t rop, const fmpz_poly_t op) void _fmpz_poly_sqr_karatsuba(fmpz_struct * rop, const fmpz_struct * op, slong len) @@ -180,7 +168,7 @@ cdef extern from "flint/fmpz_poly.h": void fmpz_poly_height(fmpz_t height, const fmpz_poly_t poly) void _fmpz_poly_2norm(fmpz_t res, const fmpz_struct * poly, slong len) void fmpz_poly_2norm(fmpz_t res, const fmpz_poly_t poly) - mp_limb_t _fmpz_poly_2norm_normalised_bits(const fmpz_struct * poly, slong len) + ulong _fmpz_poly_2norm_normalised_bits(const fmpz_struct * poly, slong len) void _fmpz_poly_gcd_subresultant(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) void fmpz_poly_gcd_subresultant(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) int _fmpz_poly_gcd_heuristic(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) @@ -231,6 +219,8 @@ cdef extern from "flint/fmpz_poly.h": void fmpz_poly_rem(fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B) void _fmpz_poly_div_root(fmpz_struct * Q, const fmpz_struct * A, slong len, const fmpz_t c) void fmpz_poly_div_root(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_t c) + void _fmpz_poly_divexact(fmpz_struct * Q, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB) + void fmpz_poly_divexact(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B) void _fmpz_poly_preinvert(fmpz_struct * B_inv, const fmpz_struct * B, slong n) void fmpz_poly_preinvert(fmpz_poly_t B_inv, const fmpz_poly_t B) void _fmpz_poly_div_preinv(fmpz_struct * Q, const fmpz_struct * A, slong len1, const fmpz_struct * B, const fmpz_struct * B_inv, slong len2) @@ -239,9 +229,9 @@ cdef extern from "flint/fmpz_poly.h": void fmpz_poly_divrem_preinv(fmpz_poly_t Q, fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B, const fmpz_poly_t B_inv) fmpz_struct ** _fmpz_poly_powers_precompute(const fmpz_struct * B, slong len) # void fmpz_poly_powers_precompute(fmpz_poly_powers_precomp_t pinv, fmpz_poly_t poly) - # void _fmpz_poly_powers_clear(fmpz_struct ** powers, slong len) + void _fmpz_poly_powers_clear(fmpz_struct ** powers, slong len) # void fmpz_poly_powers_clear(fmpz_poly_powers_precomp_t pinv) - # void _fmpz_poly_rem_powers_precomp(fmpz_struct * A, slong m, const fmpz_struct * B, slong n, fmpz_struct ** const powers) + void _fmpz_poly_rem_powers_precomp(fmpz_struct * A, slong m, const fmpz_struct * B, slong n, fmpz_struct ** const powers) # void fmpz_poly_rem_powers_precomp(fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B, const fmpz_poly_powers_precomp_t B_inv) int _fmpz_poly_divides(fmpz_struct * Q, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB) int fmpz_poly_divides(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B) @@ -250,9 +240,9 @@ cdef extern from "flint/fmpz_poly.h": void fmpz_poly_divhigh_smodp(fmpz_struct * res, const fmpz_poly_t f, const fmpz_poly_t g, const fmpz_t p, slong n) void _fmpz_poly_inv_series_basecase(fmpz_struct * Qinv, const fmpz_struct * Q, slong Qlen, slong n) void fmpz_poly_inv_series_basecase(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong n) - void _fmpz_poly_inv_series_newton(fmpz_struct * Qinv, const fmpz_struct * Q, slong n) - void fmpz_poly_inv_series_newton(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong Qlen, slong n) - void _fmpz_poly_inv_series(fmpz_struct * Qinv, const fmpz_struct * Q, slong n) + void _fmpz_poly_inv_series_newton(fmpz_struct * Qinv, const fmpz_struct * Q, slong Qlen, slong n) + void fmpz_poly_inv_series_newton(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong n) + void _fmpz_poly_inv_series(fmpz_struct * Qinv, const fmpz_struct * Q, slong Qlen, slong n) void fmpz_poly_inv_series(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong n) void _fmpz_poly_div_series_basecase(fmpz_struct * Q, const fmpz_struct * A, slong Alen, const fmpz_struct * B, slong Blen, slong n) void _fmpz_poly_div_series_divconquer(fmpz_struct * Q, const fmpz_struct * A, slong Alen, const fmpz_struct * B, slong Blen, slong n) @@ -260,19 +250,19 @@ cdef extern from "flint/fmpz_poly.h": void fmpz_poly_div_series_basecase(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B, slong n) void fmpz_poly_div_series_divconquer(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B, slong n) void fmpz_poly_div_series(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B, slong n) - # void _fmpz_poly_pseudo_divrem_basecase(fmpz_struct * Q, fmpz_struct * R, ulong * d, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_preinvn_t inv) + void _fmpz_poly_pseudo_divrem_basecase(fmpz_struct * Q, fmpz_struct * R, ulong * d, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_preinvn_t inv) void fmpz_poly_pseudo_divrem_basecase(fmpz_poly_t Q, fmpz_poly_t R, ulong * d, const fmpz_poly_t A, const fmpz_poly_t B) - # void _fmpz_poly_pseudo_divrem_divconquer(fmpz_struct * Q, fmpz_struct * R, ulong * d, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_preinvn_t inv) + void _fmpz_poly_pseudo_divrem_divconquer(fmpz_struct * Q, fmpz_struct * R, ulong * d, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_preinvn_t inv) void fmpz_poly_pseudo_divrem_divconquer(fmpz_poly_t Q, fmpz_poly_t R, ulong * d, const fmpz_poly_t A, const fmpz_poly_t B) void _fmpz_poly_pseudo_divrem_cohen(fmpz_struct * Q, fmpz_struct * R, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB) void fmpz_poly_pseudo_divrem_cohen(fmpz_poly_t Q, fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B) void _fmpz_poly_pseudo_rem_cohen(fmpz_struct * R, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB) void fmpz_poly_pseudo_rem_cohen(fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B) - # void _fmpz_poly_pseudo_divrem(fmpz_struct * Q, fmpz_struct * R, ulong * d, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_preinvn_t inv) + void _fmpz_poly_pseudo_divrem(fmpz_struct * Q, fmpz_struct * R, ulong * d, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_preinvn_t inv) void fmpz_poly_pseudo_divrem(fmpz_poly_t Q, fmpz_poly_t R, ulong * d, const fmpz_poly_t A, const fmpz_poly_t B) - # void _fmpz_poly_pseudo_div(fmpz_struct * Q, ulong * d, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_preinvn_t inv) + void _fmpz_poly_pseudo_div(fmpz_struct * Q, ulong * d, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_preinvn_t inv) void fmpz_poly_pseudo_div(fmpz_poly_t Q, ulong * d, const fmpz_poly_t A, const fmpz_poly_t B) - # void _fmpz_poly_pseudo_rem(fmpz_struct * R, ulong * d, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_preinvn_t inv) + void _fmpz_poly_pseudo_rem(fmpz_struct * R, ulong * d, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_preinvn_t inv) void fmpz_poly_pseudo_rem(fmpz_poly_t R, ulong * d, const fmpz_poly_t A, const fmpz_poly_t B) void _fmpz_poly_derivative(fmpz_struct * rpoly, const fmpz_struct * poly, slong len) void fmpz_poly_derivative(fmpz_poly_t res, const fmpz_poly_t poly) @@ -290,9 +280,8 @@ cdef extern from "flint/fmpz_poly.h": void fmpz_poly_evaluate_horner_fmpq(fmpq_t res, const fmpz_poly_t f, const fmpq_t a) void _fmpz_poly_evaluate_fmpq(fmpz_t rnum, fmpz_t rden, const fmpz_struct * f, slong len, const fmpz_t anum, const fmpz_t aden) void fmpz_poly_evaluate_fmpq(fmpq_t res, const fmpz_poly_t f, const fmpq_t a) - # void fmpz_poly_evaluate_mpq(mpq_t res, const fmpz_poly_t f, const mpq_t a) - mp_limb_t _fmpz_poly_evaluate_mod(const fmpz_struct * poly, slong len, mp_limb_t a, mp_limb_t n, mp_limb_t ninv) - mp_limb_t fmpz_poly_evaluate_mod(const fmpz_poly_t poly, mp_limb_t a, mp_limb_t n) + ulong _fmpz_poly_evaluate_mod(const fmpz_struct * poly, slong len, ulong a, ulong n, ulong ninv) + ulong fmpz_poly_evaluate_mod(const fmpz_poly_t poly, ulong a, ulong n) void fmpz_poly_evaluate_fmpz_vec(fmpz_struct * res, const fmpz_poly_t f, const fmpz_struct * a, slong n) double _fmpz_poly_evaluate_horner_d(const fmpz_struct * poly, slong n, double d) double fmpz_poly_evaluate_horner_d(const fmpz_poly_t poly, double d) @@ -325,12 +314,6 @@ cdef extern from "flint/fmpz_poly.h": void fmpz_poly_compose_series_brent_kung(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) void _fmpz_poly_compose_series(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2, slong n) void fmpz_poly_compose_series(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) - void _fmpz_poly_revert_series_lagrange(fmpz_struct * Qinv, const fmpz_struct * Q, slong Qlen, slong n) - void fmpz_poly_revert_series_lagrange(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong n) - void _fmpz_poly_revert_series_lagrange_fast(fmpz_struct * Qinv, const fmpz_struct * Q, slong Qlen, slong n) - void fmpz_poly_revert_series_lagrange_fast(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong n) - void _fmpz_poly_revert_series_newton(fmpz_struct * Qinv, const fmpz_struct * Q, slong Qlen, slong n) - void fmpz_poly_revert_series_newton(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong n) void _fmpz_poly_revert_series(fmpz_struct * Qinv, const fmpz_struct * Q, slong Qlen, slong n) void fmpz_poly_revert_series(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong n) int _fmpz_poly_sqrtrem_classical(fmpz_struct * res, fmpz_struct * r, const fmpz_struct * poly, slong len) @@ -354,26 +337,32 @@ cdef extern from "flint/fmpz_poly.h": void fmpz_poly_power_sums_to_poly(fmpz_poly_t res, const fmpz_poly_t Q) void _fmpz_poly_signature(slong * r1, slong * r2, const fmpz_struct * poly, slong len) void fmpz_poly_signature(slong * r1, slong * r2, const fmpz_poly_t poly) - void fmpz_poly_hensel_build_tree(slong * link, fmpz_poly_t *v, fmpz_poly_t *w, const nmod_poly_factor_t fac) + void fmpz_poly_hensel_build_tree(slong * link, fmpz_poly_t * v, fmpz_poly_t * w, const nmod_poly_factor_t fac) void fmpz_poly_hensel_lift(fmpz_poly_t G, fmpz_poly_t H, fmpz_poly_t A, fmpz_poly_t B, const fmpz_poly_t f, const fmpz_poly_t g, const fmpz_poly_t h, const fmpz_poly_t a, const fmpz_poly_t b, const fmpz_t p, const fmpz_t p1) void fmpz_poly_hensel_lift_without_inverse(fmpz_poly_t Gout, fmpz_poly_t Hout, const fmpz_poly_t f, const fmpz_poly_t g, const fmpz_poly_t h, const fmpz_poly_t a, const fmpz_poly_t b, const fmpz_t p, const fmpz_t p1) void fmpz_poly_hensel_lift_only_inverse(fmpz_poly_t Aout, fmpz_poly_t Bout, const fmpz_poly_t G, const fmpz_poly_t H, const fmpz_poly_t a, const fmpz_poly_t b, const fmpz_t p, const fmpz_t p1) - void fmpz_poly_hensel_lift_tree_recursive(slong *link, fmpz_poly_t *v, fmpz_poly_t *w, fmpz_poly_t f, slong j, slong inv, const fmpz_t p0, const fmpz_t p1) - void fmpz_poly_hensel_lift_tree(slong *link, fmpz_poly_t *v, fmpz_poly_t *w, fmpz_poly_t f, slong r, const fmpz_t p, slong e0, slong e1, slong inv) - slong _fmpz_poly_hensel_start_lift(fmpz_poly_factor_t lifted_fac, slong *link, fmpz_poly_t *v, fmpz_poly_t *w, const fmpz_poly_t f, const nmod_poly_factor_t local_fac, slong N) - slong _fmpz_poly_hensel_continue_lift(fmpz_poly_factor_t lifted_fac, slong *link, fmpz_poly_t *v, fmpz_poly_t *w, const fmpz_poly_t f, slong prev, slong curr, slong N, const fmpz_t p) + void fmpz_poly_hensel_lift_tree_recursive(slong * link, fmpz_poly_t * v, fmpz_poly_t * w, fmpz_poly_t f, slong j, slong inv, const fmpz_t p0, const fmpz_t p1) + void fmpz_poly_hensel_lift_tree(slong * link, fmpz_poly_t * v, fmpz_poly_t * w, fmpz_poly_t f, slong r, const fmpz_t p, slong e0, slong e1, slong inv) + slong _fmpz_poly_hensel_start_lift(fmpz_poly_factor_t lifted_fac, slong * link, fmpz_poly_t * v, fmpz_poly_t * w, const fmpz_poly_t f, const nmod_poly_factor_t local_fac, slong N) + slong _fmpz_poly_hensel_continue_lift(fmpz_poly_factor_t lifted_fac, slong * link, fmpz_poly_t * v, fmpz_poly_t * w, const fmpz_poly_t f, slong prev, slong curr, slong N, const fmpz_t p) void fmpz_poly_hensel_lift_once(fmpz_poly_factor_t lifted_fac, const fmpz_poly_t f, const nmod_poly_factor_t local_fac, slong N) int _fmpz_poly_print(const fmpz_struct * poly, slong len) int fmpz_poly_print(const fmpz_poly_t poly) int _fmpz_poly_print_pretty(const fmpz_struct * poly, slong len, const char * x) int fmpz_poly_print_pretty(const fmpz_poly_t poly, const char * x) + # int _fmpz_poly_fprint(FILE * file, const fmpz_struct * poly, slong len) + # int fmpz_poly_fprint(FILE * file, const fmpz_poly_t poly) + # int _fmpz_poly_fprint_pretty(FILE * file, const fmpz_struct * poly, slong len, const char * x) + # int fmpz_poly_fprint_pretty(FILE * file, const fmpz_poly_t poly, const char * x) int fmpz_poly_read(fmpz_poly_t poly) int fmpz_poly_read_pretty(fmpz_poly_t poly, char **x) - void fmpz_poly_get_nmod_poly(nmod_poly_t Amod, fmpz_poly_t A) + # int fmpz_poly_fread(FILE * file, fmpz_poly_t poly) + # int fmpz_poly_fread_pretty(FILE * file, fmpz_poly_t poly, char **x) + void fmpz_poly_get_nmod_poly(nmod_poly_t Amod, const fmpz_poly_t A) void fmpz_poly_set_nmod_poly(fmpz_poly_t A, const nmod_poly_t Amod) void fmpz_poly_set_nmod_poly_unsigned(fmpz_poly_t A, const nmod_poly_t Amod) - # void _fmpz_poly_CRT_ui_precomp(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_t m1, mp_srcptr poly2, slong len2, mp_limb_t m2, mp_limb_t m2inv, fmpz_t m1m2, mp_limb_t c, int sign) - # void _fmpz_poly_CRT_ui(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_t m1, mp_srcptr poly2, slong len2, mp_limb_t m2, mp_limb_t m2inv, int sign) + void _fmpz_poly_CRT_ui_precomp(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_t m1, nn_srcptr poly2, slong len2, ulong m2, ulong m2inv, fmpz_t m1m2, ulong c, int sign) + void _fmpz_poly_CRT_ui(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_t m1, nn_srcptr poly2, slong len2, ulong m2, ulong m2inv, int sign) void fmpz_poly_CRT_ui(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_t m, const nmod_poly_t poly2, int sign) void _fmpz_poly_product_roots_fmpz_vec(fmpz_struct * poly, const fmpz_struct * xs, slong n) void fmpz_poly_product_roots_fmpz_vec(fmpz_poly_t poly, const fmpz_struct * xs, slong n) @@ -385,10 +374,10 @@ cdef extern from "flint/fmpz_poly.h": slong fmpz_poly_num_real_roots_sturm(const fmpz_poly_t pol) slong _fmpz_poly_num_real_roots(const fmpz_struct * pol, slong len) slong fmpz_poly_num_real_roots(const fmpz_poly_t pol) - # void _fmpz_poly_cyclotomic(fmpz_struct * a, ulong n, mp_ptr factors, slong num_factors, ulong phi) + void _fmpz_poly_cyclotomic(fmpz_struct * a, ulong n, nn_ptr factors, slong num_factors, ulong phi) void fmpz_poly_cyclotomic(fmpz_poly_t poly, ulong n) ulong _fmpz_poly_is_cyclotomic(const fmpz_struct * poly, slong len) - ulong fmpz_poly_is_cyclotomic(fmpz_poly_t poly) + ulong fmpz_poly_is_cyclotomic(const fmpz_poly_t poly) void _fmpz_poly_cos_minpoly(fmpz_struct * coeffs, ulong n) void fmpz_poly_cos_minpoly(fmpz_poly_t poly, ulong n) void _fmpz_poly_swinnerton_dyer(fmpz_struct * coeffs, ulong n) @@ -405,7 +394,7 @@ cdef extern from "flint/fmpz_poly.h": void fmpz_poly_hermite_he(fmpz_poly_t poly, ulong n) void _fmpz_poly_fibonacci(fmpz_struct * coeffs, ulong n) void fmpz_poly_fibonacci(fmpz_poly_t poly, ulong n) - void arith_eulerian_polynomial(fmpz_poly_t res, ulong n) + void fmpz_eulerian_polynomial(fmpz_poly_t res, ulong n) void _fmpz_poly_eta_qexp(fmpz_struct * f, slong r, slong len) void fmpz_poly_eta_qexp(fmpz_poly_t f, slong r, slong n) void _fmpz_poly_theta_qexp(fmpz_struct * f, slong r, slong len) diff --git a/src/flint/flintlib/fmpz_poly_factor.pxd b/src/flint/flintlib/fmpz_poly_factor.pxd index c1e2ba43..2a6df0f4 100644 --- a/src/flint/flintlib/fmpz_poly_factor.pxd +++ b/src/flint/flintlib/fmpz_poly_factor.pxd @@ -1,9 +1,9 @@ from flint.flintlib.flint cimport slong -from flint.flintlib.fmpz cimport fmpz_t, fmpz_struct -from flint.flintlib.fmpz_poly cimport fmpz_poly_t, fmpz_poly_factor_t +from flint.flintlib.fmpz_types cimport fmpz_poly_factor_t, fmpz_poly_t, fmpz_t + + cdef extern from "flint/fmpz_poly_factor.h": -# from here on is parsed void fmpz_poly_factor_init(fmpz_poly_factor_t fac) void fmpz_poly_factor_init2(fmpz_poly_factor_t fac, slong alloc) void fmpz_poly_factor_realloc(fmpz_poly_factor_t fac, slong alloc) @@ -13,10 +13,10 @@ cdef extern from "flint/fmpz_poly_factor.h": void fmpz_poly_factor_insert(fmpz_poly_factor_t fac, const fmpz_poly_t p, slong e) void fmpz_poly_factor_concat(fmpz_poly_factor_t res, const fmpz_poly_factor_t fac) void fmpz_poly_factor_print(const fmpz_poly_factor_t fac) - void fmpz_poly_factor_squarefree(fmpz_poly_factor_t fac, fmpz_poly_t F) + void fmpz_poly_factor_squarefree(fmpz_poly_factor_t fac, const fmpz_poly_t F) void fmpz_poly_factor_zassenhaus_recombination(fmpz_poly_factor_t final_fac, const fmpz_poly_factor_t lifted_fac, const fmpz_poly_t F, const fmpz_t P, slong exp) - void _fmpz_poly_factor_zassenhaus(fmpz_poly_factor_t final_fac, slong exp, fmpz_poly_t f, slong cutoff, int use_van_hoeij) - void fmpz_poly_factor_zassenhaus(fmpz_poly_factor_t final_fac, fmpz_poly_t F) + void _fmpz_poly_factor_zassenhaus(fmpz_poly_factor_t final_fac, slong exp, const fmpz_poly_t f, slong cutoff, int use_van_hoeij) + void fmpz_poly_factor_zassenhaus(fmpz_poly_factor_t final_fac, const fmpz_poly_t F) void _fmpz_poly_factor_quadratic(fmpz_poly_factor_t fac, const fmpz_poly_t f, slong exp) void _fmpz_poly_factor_cubic(fmpz_poly_factor_t fac, const fmpz_poly_t f, slong exp) - void fmpz_poly_factor(fmpz_poly_factor_t final_fac, fmpz_poly_t F) + void fmpz_poly_factor(fmpz_poly_factor_t final_fac, const fmpz_poly_t F) diff --git a/src/flint/flintlib/fmpz_types.pxd b/src/flint/flintlib/fmpz_types.pxd new file mode 100644 index 00000000..8dc598a6 --- /dev/null +++ b/src/flint/flintlib/fmpz_types.pxd @@ -0,0 +1,74 @@ +from flint.flintlib.flint cimport ( + mp_ptr, + fmpz_struct, + ulong, + slong, + flint_bitcnt_t, +) + + +cdef extern from "flint/fmpz_types.h": + + ctypedef fmpz_struct fmpz_t[1] + + ctypedef struct fmpz_preinvn_struct: + mp_ptr dinv + slong n + flint_bitcnt_t norm + ctypedef fmpz_preinvn_struct fmpz_preinvn_t[1] + + ctypedef struct fmpz_factor_struct: + int sign + fmpz_struct * p + ulong * exp + slong alloc + slong num + ctypedef fmpz_factor_struct fmpz_factor_t[1] + + ctypedef struct fmpz_mat_struct: + fmpz_struct * entries + slong r + slong c + fmpz_struct ** rows + ctypedef fmpz_mat_struct fmpz_mat_t[1] + long fmpz_mat_nrows(fmpz_mat_t mat) + long fmpz_mat_ncols(fmpz_mat_t mat) + + ctypedef struct fmpz_poly_struct: + fmpz_struct * coeffs + slong alloc + slong length + ctypedef fmpz_poly_struct fmpz_poly_t[1] + + ctypedef struct fmpz_poly_factor_struct: + fmpz_struct c + fmpz_poly_struct *p + slong *exp + slong num + slong alloc + ctypedef fmpz_poly_factor_struct fmpz_poly_factor_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_lll.h": + + cdef enum _rep_type: + GRAM + Z_BASIS + ctypedef _rep_type rep_type + + cdef enum _gram_type: + APPROX + EXACT + ctypedef _gram_type gram_type + + ctypedef struct fmpz_lll_struct: + double delta + double eta + rep_type rt + gram_type gt + ctypedef fmpz_lll_struct fmpz_lll_t[1] diff --git a/src/flint/flintlib/fq.pxd b/src/flint/flintlib/fq.pxd index 7dee6ddf..87dc8911 100644 --- a/src/flint/flintlib/fq.pxd +++ b/src/flint/flintlib/fq.pxd @@ -1,8 +1,12 @@ from flint.flintlib.flint cimport flint_bitcnt_t, fmpz_struct, slong, flint_rand_t, ulong -from flint.flintlib.fmpz cimport fmpz_t, fmpz_struct +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_poly cimport fmpz_poly_t, fmpz_poly_struct from flint.flintlib.fmpz_mod_poly cimport fmpz_mod_poly_t, fmpz_mod_poly_struct cdef extern from "flint/fq.h": diff --git a/src/flint/flintlib/mag.pxd b/src/flint/flintlib/mag.pxd index 8e0eee15..a426ef5e 100644 --- a/src/flint/flintlib/mag.pxd +++ b/src/flint/flintlib/mag.pxd @@ -1,14 +1,9 @@ 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 cdef extern from "flint/mag.h": - ctypedef struct mag_struct: - fmpz_struct exp - mp_limb_t man - ctypedef mag_struct mag_t[1] - ctypedef mag_struct * mag_ptr - ctypedef const mag_struct * mag_srcptr # from here on is parsed void mag_init(mag_t x) diff --git a/src/flint/types/acb.pyx b/src/flint/types/acb.pyx index efd94f3a..6d9b7b5e 100644 --- a/src/flint/types/acb.pyx +++ b/src/flint/types/acb.pyx @@ -16,8 +16,11 @@ 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 * diff --git a/src/flint/types/acb_mat.pyx b/src/flint/types/acb_mat.pyx index 3c0eb187..fc032cb3 100644 --- a/src/flint/types/acb_mat.pyx +++ b/src/flint/types/acb_mat.pyx @@ -15,10 +15,26 @@ 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 ( + mag_struct, + arb_radref, + arb_midref, + arb_mat_entry, + 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 ( + acb_realref, + acb_imagref, + acb_mat_struct, + acb_mat_entry, + acb_mat_nrows, + acb_mat_ncols, +) cimport cython diff --git a/src/flint/types/acb_poly.pyx b/src/flint/types/acb_poly.pyx index 0c2cdaa9..fa3ab9c7 100644 --- a/src/flint/types/acb_poly.pyx +++ b/src/flint/types/acb_poly.pyx @@ -15,7 +15,9 @@ 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 * cimport libc.stdlib diff --git a/src/flint/types/acb_theta.pyx b/src/flint/types/acb_theta.pyx index ae11ce17..a5f3bd68 100644 --- a/src/flint/types/acb_theta.pyx +++ b/src/flint/types/acb_theta.pyx @@ -2,6 +2,9 @@ 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 ( + acb_mat_entry, +) from flint.flintlib.acb_mat cimport * from flint.flintlib.acb_theta cimport * diff --git a/src/flint/types/arb.pyx b/src/flint/types/arb.pyx index 4ae8fa45..3205dadf 100644 --- a/src/flint/types/arb.pyx +++ b/src/flint/types/arb.pyx @@ -15,7 +15,16 @@ 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 ( + arb_struct, + arb_midref, + arb_radref, + ARB_STR_NO_RADIUS, + ARB_STR_MORE, + ARB_STR_CONDENSE, +) from flint.flintlib.arb_hypgeom cimport * from flint.flintlib.acb_dirichlet cimport * diff --git a/src/flint/types/arb_mat.pyx b/src/flint/types/arb_mat.pyx index ff106cca..d0bcddb0 100644 --- a/src/flint/types/arb_mat.pyx +++ b/src/flint/types/arb_mat.pyx @@ -16,6 +16,13 @@ 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 ( + arb_radref, + arb_midref, + arb_mat_nrows, + arb_mat_ncols, + arb_mat_entry, +) from flint.flintlib.arb_mat cimport * cimport cython diff --git a/src/flint/types/arb_poly.pyx b/src/flint/types/arb_poly.pyx index 4f80ba98..512c28b0 100644 --- a/src/flint/types/arb_poly.pyx +++ b/src/flint/types/arb_poly.pyx @@ -12,6 +12,7 @@ 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 * cimport libc.stdlib diff --git a/src/flint/types/fmpz.pyx b/src/flint/types/fmpz.pyx index 71270b75..4a06df60 100644 --- a/src/flint/types/fmpz.pyx +++ b/src/flint/types/fmpz.pyx @@ -4,8 +4,9 @@ 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 +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 * diff --git a/src/flint/types/fmpz_mat.pyx b/src/flint/types/fmpz_mat.pyx index e2d6444f..8d8d6319 100644 --- a/src/flint/types/fmpz_mat.pyx +++ b/src/flint/types/fmpz_mat.pyx @@ -10,6 +10,11 @@ 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 ( + 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 * @@ -632,18 +637,18 @@ cdef class fmpz_mat(flint_mat): cdef fmpz_mat u, v cdef fmpz_lll_t ctx cdef long i - cdef int rt - cdef int gt + cdef rep_type rt + cdef gram_type gt if rep == "zbasis": - rt = 1 + rt = rep_type.Z_BASIS elif rep == "gram": - rt = 0 + rt = rep_type.GRAM else: raise ValueError("rep must be 'zbasis' or 'gram'") if gram == "approx": - gt = 0 + gt = gram_type.APPROX elif gram == "exact": - gt = 1 + gt = gram_type.EXACT else: raise ValueError("gram must be 'approx' or 'exact'") fmpz_lll_context_init(ctx, delta, eta, rt, gt)