diff --git a/src/doc/en/reference/libs/index.rst b/src/doc/en/reference/libs/index.rst index 0fde7b179e0..b7b8fc0abe0 100644 --- a/src/doc/en/reference/libs/index.rst +++ b/src/doc/en/reference/libs/index.rst @@ -42,10 +42,11 @@ FLINT .. toctree:: :maxdepth: 1 - sage/libs/flint/flint - sage/libs/flint/fmpz_poly - sage/libs/flint/arith - sage/libs/flint/qsieve + sage/libs/flint/fmpz_poly_sage + sage/libs/flint/fmpq_poly_sage + sage/libs/flint/arith_sage + sage/libs/flint/qsieve_sage + sage/libs/flint/ulong_extras_sage Giac ---- diff --git a/src/sage/algebras/quatalg/quaternion_algebra_element.pyx b/src/sage/algebras/quatalg/quaternion_algebra_element.pyx index b4c5eed5b49..73e88f40d67 100644 --- a/src/sage/algebras/quatalg/quaternion_algebra_element.pyx +++ b/src/sage/algebras/quatalg/quaternion_algebra_element.pyx @@ -46,6 +46,7 @@ from sage.libs.gmp.mpq cimport * from sage.libs.ntl.convert cimport mpz_to_ZZ, ZZ_to_mpz from sage.libs.flint.fmpz cimport * from sage.libs.flint.fmpz_poly cimport * +from sage.libs.flint.fmpz_poly_sage cimport * from sage.libs.flint.ntl_interface cimport * # variables for holding temporary values computed in diff --git a/src/sage/arith/misc.py b/src/sage/arith/misc.py index 22fa53b5a29..8fd46542236 100644 --- a/src/sage/arith/misc.py +++ b/src/sage/arith/misc.py @@ -375,7 +375,7 @@ def bernoulli(n, algorithm='default', num_threads=1): if n >= 100000: from warnings import warn warn("flint is known to not be accurate for large Bernoulli numbers") - from sage.libs.flint.arith import bernoulli_number as flint_bernoulli + from sage.libs.flint.arith_sage import bernoulli_number as flint_bernoulli return flint_bernoulli(n) elif algorithm == 'pari' or algorithm == 'gp': from sage.libs.pari.all import pari @@ -6230,7 +6230,7 @@ def dedekind_sum(p, q, algorithm='default'): - :wikipedia:`Dedekind\_sum` """ if algorithm == 'default' or algorithm == 'flint': - from sage.libs.flint.arith import dedekind_sum as flint_dedekind_sum + from sage.libs.flint.arith_sage import dedekind_sum as flint_dedekind_sum return flint_dedekind_sum(p, q) if algorithm == 'pari': diff --git a/src/sage/combinat/combinat.py b/src/sage/combinat/combinat.py index 451f8093393..e87a44ad662 100644 --- a/src/sage/combinat/combinat.py +++ b/src/sage/combinat/combinat.py @@ -407,8 +407,8 @@ def bell_number(n, algorithm='flint', **options) -> Integer: return ZZ(int(ret_mp)) elif algorithm == 'flint': - import sage.libs.flint.arith - return sage.libs.flint.arith.bell_number(n) + import sage.libs.flint.arith_sage + return sage.libs.flint.arith_sage.bell_number(n) elif algorithm == 'gap': from sage.libs.gap.libgap import libgap @@ -576,8 +576,8 @@ def euler_number(n, algorithm='flint') -> Integer: if algorithm == 'maxima': return ZZ(maxima.euler(n)) # type:ignore elif algorithm == 'flint': - import sage.libs.flint.arith - return sage.libs.flint.arith.euler_number(n) + import sage.libs.flint.arith_sage + return sage.libs.flint.arith_sage.euler_number(n) else: raise ValueError("algorithm must be 'flint' or 'maxima'") @@ -906,8 +906,8 @@ def stirling_number1(n, k, algorithm="gap") -> Integer: from sage.libs.gap.libgap import libgap return libgap.Stirling1(n, k).sage() if algorithm == 'flint': - import sage.libs.flint.arith - return sage.libs.flint.arith.stirling_number_1(n, k) + import sage.libs.flint.arith_sage + return sage.libs.flint.arith_sage.stirling_number_1(n, k) raise ValueError("unknown algorithm: %s" % algorithm) @@ -1034,8 +1034,8 @@ def stirling_number2(n, k, algorithm=None) -> Integer: from sage.libs.gap.libgap import libgap return libgap.Stirling2(n, k).sage() if algorithm == 'flint': - import sage.libs.flint.arith - return sage.libs.flint.arith.stirling_number_2(n, k) + import sage.libs.flint.arith_sage + return sage.libs.flint.arith_sage.stirling_number_2(n, k) if algorithm == 'maxima': return ZZ(maxima.stirling2(n, k)) # type:ignore raise ValueError("unknown algorithm: %s" % algorithm) diff --git a/src/sage/combinat/partition.py b/src/sage/combinat/partition.py index ee5a9fd85db..3b8cb966702 100644 --- a/src/sage/combinat/partition.py +++ b/src/sage/combinat/partition.py @@ -284,7 +284,7 @@ from sage.arith.misc import binomial, factorial, gcd, multinomial from sage.libs.pari.all import pari -from sage.libs.flint.arith import number_of_partitions as flint_number_of_partitions +from sage.libs.flint.arith_sage import number_of_partitions as flint_number_of_partitions from sage.structure.global_options import GlobalOptions from sage.structure.parent import Parent from sage.structure.unique_representation import UniqueRepresentation diff --git a/src/sage/features/sagemath.py b/src/sage/features/sagemath.py index dd48c55ee6b..d78c95e38b2 100644 --- a/src/sage/features/sagemath.py +++ b/src/sage/features/sagemath.py @@ -380,8 +380,8 @@ def __init__(self): True """ JoinFeature.__init__(self, 'sage.libs.flint', - [PythonModule('sage.libs.flint.flint'), - PythonModule('sage.libs.arb.arith')], + [PythonModule('sage.libs.flint.arith_sage'), + PythonModule('sage.libs.flint.flint_sage')], spkg='sagemath_flint', type='standard') diff --git a/src/sage/functions/log.py b/src/sage/functions/log.py index 38c6ca08bbe..22357977d4b 100644 --- a/src/sage/functions/log.py +++ b/src/sage/functions/log.py @@ -27,7 +27,7 @@ lazy_import('sage.symbolic.constants', 'pi', as_='const_pi') lazy_import('sage.rings.complex_double', 'CDF') -lazy_import('sage.libs.flint.arith', 'harmonic_number', as_='_flint_harmonic_number') +lazy_import('sage.libs.flint.arith_sage', 'harmonic_number', as_='_flint_harmonic_number') lazy_import('sage.libs.mpmath.utils', 'call', as_='_mpmath_utils_call') lazy_import('mpmath', 'harmonic', as_='_mpmath_harmonic') diff --git a/src/sage/graphs/matchpoly.pyx b/src/sage/graphs/matchpoly.pyx index 5d70faf40a1..861d05df8af 100644 --- a/src/sage/graphs/matchpoly.pyx +++ b/src/sage/graphs/matchpoly.pyx @@ -45,6 +45,8 @@ from sage.rings.integer cimport Integer from sage.libs.flint.fmpz cimport * from sage.libs.flint.fmpz_poly cimport * +from sage.libs.flint.fmpz_poly_sage cimport * + x = polygen(ZZ, 'x') diff --git a/src/sage/interfaces/qsieve.py b/src/sage/interfaces/qsieve.py index 94764b7f76a..d7b0c5c18eb 100644 --- a/src/sage/interfaces/qsieve.py +++ b/src/sage/interfaces/qsieve.py @@ -1,4 +1,4 @@ from sage.misc.superseded import deprecated_function_alias -import sage.libs.flint.qsieve +import sage.libs.flint.qsieve_sage -qsieve = deprecated_function_alias(1, sage.libs.flint.qsieve.qsieve) +qsieve = deprecated_function_alias(1, sage.libs.flint.qsieve_sage.qsieve) diff --git a/src/sage/libs/all.py b/src/sage/libs/all.py index 50423191ca4..f85115a4da2 100644 --- a/src/sage/libs/all.py +++ b/src/sage/libs/all.py @@ -14,6 +14,6 @@ lazy_import('sage.libs.eclib.mwrank', 'set_precision', 'mwrank_set_precision') lazy_import('sage.libs.eclib.mwrank', 'initprimes', 'mwrank_initprimes') -lazy_import('sage.libs.flint.qsieve', 'qsieve') +lazy_import('sage.libs.flint.qsieve_sage', 'qsieve') lazy_import('sage.libs.giac.giac', 'libgiac') diff --git a/src/sage/libs/arb/acb.pxd b/src/sage/libs/arb/acb.pxd index 851488d803a..9dac39b52a6 100644 --- a/src/sage/libs/arb/acb.pxd +++ b/src/sage/libs/arb/acb.pxd @@ -1,177 +1,153 @@ -# distutils: libraries = gmp flint -# distutils: depends = acb.h - -from sage.libs.arb.types cimport * -from sage.libs.flint.types cimport fmpz_t, fmpq_t - -# acb.h -cdef extern from "arb_wrap.h": - - arb_t acb_realref(acb_t x) - arb_t acb_imagref(acb_t x) - - void acb_init(acb_t x) - void acb_clear(acb_t x) - acb_ptr _acb_vec_init(long n) - void _acb_vec_clear(acb_ptr v, long n) - - bint acb_is_zero(const acb_t z) - bint acb_is_one(const acb_t z) - bint acb_is_finite(const acb_t z) - bint acb_is_exact(const acb_t z) - bint acb_is_int(const acb_t z) - - void acb_zero(acb_t z) - void acb_one(acb_t z) - void acb_onei(acb_t z) - void acb_set(acb_t z, const acb_t x) - void acb_set_ui(acb_t z, long x) - void acb_set_si(acb_t z, long x) - void acb_set_fmpz(acb_t z, const fmpz_t x) - void acb_set_arb(acb_t z, const arb_t c) - void acb_set_fmpq(acb_t z, const fmpq_t x, long prec) - void acb_set_round(acb_t z, const acb_t x, long prec) - void acb_set_round_fmpz(acb_t z, const fmpz_t x, long prec) - void acb_set_round_arb(acb_t z, const arb_t x, long prec) - void acb_swap(acb_t z, acb_t x) - - void acb_print(const acb_t x) - void acb_printd(const acb_t z, long digits) - - # void acb_randtest(acb_t z, flint_rand_t state, long prec, long mag_bits) - # void acb_randtest_special(acb_t z, flint_rand_t state, long prec, long mag_bits) - # void acb_randtest_precise(acb_t z, flint_rand_t state, long prec, long mag_bits) - # void acb_randtest_param(acb_t z, flint_rand_t state, long prec, long mag_bits) - - bint acb_equal(const acb_t x, const acb_t y) - bint acb_eq(const acb_t x, const acb_t y) - bint acb_ne(const acb_t x, const acb_t y) - bint acb_overlaps(const acb_t x, const acb_t y) - void acb_union(acb_t z, const acb_t x, const acb_t y, long prec) - void acb_get_abs_ubound_arf(arf_t u, const acb_t z, long prec) - void acb_get_abs_lbound_arf(arf_t u, const acb_t z, long prec) - void acb_get_rad_ubound_arf(arf_t u, const acb_t z, long prec) - void acb_get_mag(mag_t u, const acb_t x) - void acb_get_mag_lower(mag_t u, const acb_t x) - bint acb_contains_fmpq(const acb_t x, const fmpq_t y) - bint acb_contains_fmpz(const acb_t x, const fmpz_t y) - bint acb_contains(const acb_t x, const acb_t y) - bint acb_contains_zero(const acb_t x) - bint acb_contains_int(const acb_t x) - - long acb_rel_error_bits(const acb_t x) - long acb_rel_accuracy_bits(const acb_t x) - long acb_bits(const acb_t x) - void acb_indeterminate(acb_t x) - void acb_trim(acb_t y, const acb_t x) - bint acb_is_real(const acb_t x) - bint acb_get_unique_fmpz(fmpz_t z, const acb_t x) - - void acb_arg(arb_t r, const acb_t z, long prec) - void acb_abs(arb_t r, const acb_t z, long prec) - - void acb_neg(acb_t z, const acb_t x) - void acb_conj(acb_t z, const acb_t x) - void acb_add_ui(acb_t z, const acb_t x, unsigned long y, long prec) - void acb_add_fmpz(acb_t z, const acb_t x, const fmpz_t y, long prec) - void acb_add_arb(acb_t z, const acb_t x, const arb_t y, long prec) - void acb_add(acb_t z, const acb_t x, const acb_t y, long prec) - void acb_sub_ui(acb_t z, const acb_t x, unsigned long y, long prec) - void acb_sub_fmpz(acb_t z, const acb_t x, const fmpz_t y, long prec) - void acb_sub_arb(acb_t z, const acb_t x, const arb_t y, long prec) - void acb_sub(acb_t z, const acb_t x, const acb_t y, long 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_ui(acb_t z, const acb_t x, unsigned long y, long prec) - void acb_mul_si(acb_t z, const acb_t x, long y, long prec) - void acb_mul_fmpz(acb_t z, const acb_t x, const fmpz_t y, long prec) - void acb_mul_arb(acb_t z, const acb_t x, const arb_t y, long prec) - void acb_mul(acb_t z, const acb_t x, const acb_t y, long prec) - void acb_mul_2exp_si(acb_t z, const acb_t x, long e) - void acb_mul_2exp_fmpz(acb_t z, const acb_t x, const fmpz_t e) - void acb_cube(acb_t z, const acb_t x, long prec) - void acb_addmul(acb_t z, const acb_t x, const acb_t y, long prec) - void acb_addmul_ui(acb_t z, const acb_t x, unsigned long y, long prec) - void acb_addmul_si(acb_t z, const acb_t x, long y, long prec) - void acb_addmul_fmpz(acb_t z, const acb_t x, const fmpz_t y, long prec) - void acb_addmul_arb(acb_t z, const acb_t x, const arb_t y, long prec) - void acb_submul(acb_t z, const acb_t x, const acb_t y, long prec) - void acb_submul_ui(acb_t z, const acb_t x, unsigned long y, long prec) - void acb_submul_si(acb_t z, const acb_t x, long y, long prec) - void acb_submul_fmpz(acb_t z, const acb_t x, const fmpz_t y, long prec) - void acb_submul_arb(acb_t z, const acb_t x, const arb_t y, long prec) - void acb_inv(acb_t z, const acb_t x, long prec) - void acb_div_ui(acb_t z, const acb_t x, unsigned long y, long prec) - void acb_div_si(acb_t z, const acb_t x, long y, long prec) - void acb_div_fmpz(acb_t z, const acb_t x, const fmpz_t y, long prec) - void acb_div(acb_t z, const acb_t x, const acb_t y, long prec) - - void acb_const_pi(acb_t y, long prec) - - void acb_sqrt(acb_t r, const acb_t z, long prec) - void acb_rsqrt(acb_t r, const acb_t z, long prec) - void acb_pow_fmpz(acb_t y, const acb_t b, const fmpz_t e, long prec) - void acb_pow_ui(acb_t y, const acb_t b, unsigned long e, long prec) - void acb_pow_si(acb_t y, const acb_t b, long e, long prec) - void acb_pow_arb(acb_t z, const acb_t x, const arb_t y, long prec) - void acb_pow(acb_t z, const acb_t x, const acb_t y, long prec) - - void acb_exp(acb_t y, const acb_t z, long prec) - void acb_exp_pi_i(acb_t y, const acb_t z, long prec) - void acb_exp_invexp(acb_t s, acb_t t, const acb_t z, long prec) - void acb_log(acb_t y, const acb_t z, long prec) - void acb_log1p(acb_t z, const acb_t x, long prec) - - void acb_sin(acb_t s, const acb_t z, long prec) - void acb_cos(acb_t c, const acb_t z, long prec) - void acb_sin_cos(arb_t s, arb_t c, const acb_t z, long prec) - void acb_tan(acb_t s, const acb_t z, long prec) - void acb_cot(acb_t s, const acb_t z, long prec) - void acb_sec(acb_t s, const acb_t z, long prec) - void acb_csc(acb_t c, const acb_t z, long prec) - void acb_sin_pi(acb_t s, const acb_t z, long prec) - void acb_cos_pi(acb_t s, const acb_t z, long prec) - void acb_sin_cos_pi(acb_t s, acb_t c, const acb_t z, long prec) - void acb_tan_pi(acb_t s, const acb_t z, long prec) - void acb_cot_pi(acb_t s, const acb_t z, long prec) - - void acb_asin(acb_t s, const acb_t z, long prec) - void acb_acos(acb_t s, const acb_t z, long prec) - void acb_atan(acb_t s, const acb_t z, long prec) - void acb_asinh(acb_t s, const acb_t z, long prec) - void acb_acosh(acb_t s, const acb_t z, long prec) - void acb_atanh(acb_t s, const acb_t z, long prec) - - void acb_lambertw(acb_t res, const acb_t z, const fmpz_t k, int flags, long prec) - - void acb_sinh(acb_t s, const acb_t z, long prec) - void acb_cosh(acb_t c, const acb_t z, long prec) - void acb_sinh_cosh(acb_t s, acb_t c, const acb_t z, long prec) - void acb_tanh(acb_t s, const acb_t z, long prec) - void acb_coth(acb_t s, const acb_t z, long prec) - void acb_sech(acb_t s, const acb_t z, long prec) - void acb_csch(acb_t c, const acb_t z, long prec) - - void acb_rising(acb_t z, const acb_t x, const acb_t n, long prec) - - void acb_gamma(acb_t y, const acb_t x, long prec) - void acb_rgamma(acb_t y, const acb_t x, long prec) - void acb_lgamma(acb_t y, const acb_t x, long prec) - void acb_digamma(acb_t y, const acb_t x, long prec) - void acb_log_sin_pi(acb_t res, const acb_t z, long prec) - void acb_polygamma(acb_t z, const acb_t s, const acb_t z, long prec) - void acb_barnes_g(acb_t res, const acb_t z, long prec) - void acb_log_barnes_g(acb_t res, const acb_t z, long prec) - - void acb_zeta(acb_t z, const acb_t s, long prec) - void acb_hurwitz_zeta(acb_t z, const acb_t s, const acb_t a, long prec) - - void acb_polylog(acb_t w, const acb_t s, const acb_t z, long prec) - void acb_polylog_si(acb_t w, long s, const acb_t z, long prec) - - void acb_agm1(acb_t m, const acb_t z, long prec) - void acb_agm1_cpx(acb_ptr m, const acb_t z, long len, long prec) - - acb_ptr _acb_vec_init(long n) - void _acb_vec_sort_pretty(acb_ptr vec, long len) - void _acb_vec_clear(acb_ptr v, long n) +# Deprecated header file; use sage/libs/flint/acb.pxd instead +# See https://github.com/sagemath/sage/pull/36449 + +from sage.libs.flint.types cimport acb_struct, acb_t, acb_ptr, acb_srcptr + +from sage.libs.flint.acb cimport ( + acb_realref, + acb_imagref, + acb_init, + acb_clear, + _acb_vec_init, + _acb_vec_clear, + acb_is_zero, + acb_is_one, + acb_is_finite, + acb_is_exact, + acb_is_int, + acb_zero, + acb_one, + acb_onei, + acb_set, + acb_set_ui, + acb_set_si, + acb_set_fmpz, + acb_set_arb, + acb_set_fmpq, + acb_set_round, + acb_set_round_fmpz, + acb_set_round_arb, + acb_swap, + acb_print, + acb_printd, + acb_randtest, + acb_randtest_special, + acb_randtest_precise, + acb_randtest_param, + acb_equal, + acb_eq, + acb_ne, + acb_overlaps, + acb_union, + acb_get_abs_ubound_arf, + acb_get_abs_lbound_arf, + acb_get_rad_ubound_arf, + acb_get_mag, + acb_get_mag_lower, + acb_contains_fmpq, + acb_contains_fmpz, + acb_contains, + acb_contains_zero, + acb_contains_int, + acb_rel_error_bits, + acb_rel_accuracy_bits, + acb_bits, + acb_indeterminate, + acb_trim, + acb_is_real, + acb_get_unique_fmpz, + acb_arg, + acb_abs, + acb_neg, + acb_conj, + acb_add_ui, + acb_add_fmpz, + acb_add_arb, + acb_add, + acb_sub_ui, + acb_sub_fmpz, + acb_sub_arb, + acb_sub, + acb_mul_onei, + acb_div_onei, + acb_mul_ui, + acb_mul_si, + acb_mul_fmpz, + acb_mul_arb, + acb_mul, + acb_mul_2exp_si, + acb_mul_2exp_fmpz, + acb_cube, + acb_addmul, + acb_addmul_ui, + acb_addmul_si, + acb_addmul_fmpz, + acb_addmul_arb, + acb_submul, + acb_submul_ui, + acb_submul_si, + acb_submul_fmpz, + acb_submul_arb, + acb_inv, + acb_div_ui, + acb_div_si, + acb_div_fmpz, + acb_div, + acb_const_pi, + acb_sqrt, + acb_rsqrt, + acb_pow_fmpz, + acb_pow_ui, + acb_pow_si, + acb_pow_arb, + acb_pow, + acb_exp, + acb_exp_pi_i, + acb_exp_invexp, + acb_log, + acb_log1p, + acb_sin, + acb_cos, + acb_sin_cos, + acb_tan, + acb_cot, + acb_sec, + acb_csc, + acb_sin_pi, + acb_cos_pi, + acb_sin_cos_pi, + acb_tan_pi, + acb_cot_pi, + acb_asin, + acb_acos, + acb_atan, + acb_asinh, + acb_acosh, + acb_atanh, + acb_lambertw, + acb_sinh, + acb_cosh, + acb_sinh_cosh, + acb_tanh, + acb_coth, + acb_sech, + acb_csch, + acb_rising_ui, + acb_rising, + acb_gamma, + acb_rgamma, + acb_lgamma, + acb_digamma, + acb_log_sin_pi, + acb_polygamma, + acb_barnes_g, + acb_log_barnes_g, + acb_zeta, + acb_hurwitz_zeta, + acb_polylog, + acb_polylog_si, + acb_agm1, + acb_agm1_cpx, + _acb_vec_init, + _acb_vec_sort_pretty, + _acb_vec_clear) diff --git a/src/sage/libs/arb/acb_calc.pxd b/src/sage/libs/arb/acb_calc.pxd index 67bd2ed57dc..c06d7c5ad39 100644 --- a/src/sage/libs/arb/acb_calc.pxd +++ b/src/sage/libs/arb/acb_calc.pxd @@ -1,21 +1,8 @@ -# distutils: libraries = gmp flint -# distutils: depends = acb_calc.h +# Deprecated header file; use sage/libs/flint/acb_calc.pxd instead +# See https://github.com/sagemath/sage/pull/36449 -from sage.libs.arb.types cimport * -from sage.libs.flint.types cimport fmpz_t, fmpq_t +from sage.libs.flint.types cimport acb_calc_integrate_opt_t, acb_calc_func_t -# acb_calc.h -cdef extern from "arb_wrap.h": - - void acb_calc_integrate_opt_init(acb_calc_integrate_opt_t options) - - int acb_calc_integrate( - acb_t res, - acb_calc_func_t func, - void * param, - const acb_t a, - const acb_t b, - long rel_goal, - const mag_t abs_tol, - const acb_calc_integrate_opt_t options, - long prec) +from sage.libs.flint.acb_calc cimport ( + acb_calc_integrate, + acb_calc_integrate_opt_init) diff --git a/src/sage/libs/arb/acb_elliptic.pxd b/src/sage/libs/arb/acb_elliptic.pxd index e3480e9f73b..d1899d64b94 100644 --- a/src/sage/libs/arb/acb_elliptic.pxd +++ b/src/sage/libs/arb/acb_elliptic.pxd @@ -1,29 +1,24 @@ -# distutils: libraries = gmp flint -# distutils: depends = acb_elliptic.h - -from sage.libs.arb.types cimport * - -# acb_elliptic.h -cdef extern from "arb_wrap.h": - void acb_elliptic_k(acb_t k, const acb_t m, long prec) - void acb_elliptic_k_jet(acb_ptr w, const acb_t m, long len, long prec) - void acb_elliptic_k_series(acb_poly_t res, const acb_poly_t m, long len, long prec) - void acb_elliptic_e(acb_t res, const acb_t m, long prec) - void acb_elliptic_rf(acb_t res, const acb_t x, const acb_t y, const acb_t z, int flags, long prec) - void acb_elliptic_rj(acb_t res, const acb_t x, const acb_t y, const acb_t z, const acb_t p, int flags, long prec) - void acb_elliptic_rg(acb_t res, const acb_t x, const acb_t y, const acb_t z, int flags, long prec) - void acb_elliptic_rc1(acb_t res, const acb_t x, long prec) - void acb_elliptic_f(acb_t res, const acb_t phi, const acb_t m, int times_pi, long prec) - void acb_elliptic_e_inc(acb_t res, const acb_t phi, const acb_t m, int times_pi, long prec) - void acb_elliptic_pi(acb_t r, const acb_t n, const acb_t m, long prec) - void acb_elliptic_pi_inc(acb_t res, const acb_t n, const acb_t phi, const acb_t m, int times_pi, long prec) - void acb_elliptic_p(acb_t r, const acb_t z, const acb_t tau, long prec) - void acb_elliptic_p_jet(acb_ptr r, const acb_t z, const acb_t tau, long len, long prec) - void acb_elliptic_p_series(acb_poly_t res, const acb_poly_t z, const acb_t tau, long len, long prec) - void acb_elliptic_zeta(acb_t res, const acb_t z, const acb_t tau, long prec) - void acb_elliptic_sigma(acb_t res, const acb_t z, const acb_t tau, long prec) - void acb_elliptic_roots(acb_t e1, acb_t e2, acb_t e3, const acb_t tau, long prec) - void acb_elliptic_invariants(acb_t g2, acb_t g3, const acb_t tau, long prec) - void acb_elliptic_inv_p(acb_t res, const acb_t z, const acb_t tau, long prec) - +# Deprecated header file; use sage/libs/flint/acb_elliptic.pxd instead +# See https://github.com/sagemath/sage/pull/36449 +from sage.libs.flint.acb_elliptic cimport ( + acb_elliptic_k, + acb_elliptic_k_jet, + acb_elliptic_k_series, + acb_elliptic_e, + acb_elliptic_rf, + acb_elliptic_rj, + acb_elliptic_rg, + acb_elliptic_rc1, + acb_elliptic_f, + acb_elliptic_e_inc, + acb_elliptic_pi, + acb_elliptic_pi_inc, + acb_elliptic_p, + acb_elliptic_p_jet, + acb_elliptic_p_series, + acb_elliptic_zeta, + acb_elliptic_sigma, + acb_elliptic_roots, + acb_elliptic_invariants, + acb_elliptic_inv_p) diff --git a/src/sage/libs/arb/acb_hypgeom.pxd b/src/sage/libs/arb/acb_hypgeom.pxd index c43e5c0623b..641dd595004 100644 --- a/src/sage/libs/arb/acb_hypgeom.pxd +++ b/src/sage/libs/arb/acb_hypgeom.pxd @@ -1,77 +1,73 @@ -# distutils: libraries = gmp flint -# distutils: depends = acb_hypgeom.h - -from sage.libs.arb.types cimport * - -# acb_hypgeom.h -cdef extern from "arb_wrap.h": - void acb_hypgeom_pfq_bound_factor(mag_t C, acb_srcptr a, long p, acb_srcptr b, long q, const acb_t z, unsigned long n) - long acb_hypgeom_pfq_choose_n(acb_srcptr a, long p, acb_srcptr b, long q, const acb_t z, long prec) - void acb_hypgeom_pfq_sum_forward(acb_t s, acb_t t, acb_srcptr a, long p, acb_srcptr b, long q, const acb_t z, long n, long prec) - void acb_hypgeom_pfq_sum_rs(acb_t s, acb_t t, acb_srcptr a, long p, acb_srcptr b, long q, const acb_t z, long n, long prec) - void acb_hypgeom_pfq_sum_bs(acb_t s, acb_t t, acb_srcptr a, long p, acb_srcptr b, long q, const acb_t z, long n, long prec) - void acb_hypgeom_pfq_sum_fme(acb_t s, acb_t t, acb_srcptr a, long p, acb_srcptr b, long q, const acb_t z, long n, long prec) - void acb_hypgeom_pfq_sum(acb_t s, acb_t t, acb_srcptr a, long p, acb_srcptr b, long q, const acb_t z, long n, long prec) - void acb_hypgeom_pfq_sum_bs_invz(acb_t s, acb_t t, acb_srcptr a, long p, acb_srcptr b, long q, const acb_t w, long n, long prec) - void acb_hypgeom_pfq_sum_invz(acb_t s, acb_t t, acb_srcptr a, long p, acb_srcptr b, long q, const acb_t z, const acb_t w, long n, long prec) - void acb_hypgeom_pfq_direct(acb_t res, acb_srcptr a, long p, acb_srcptr b, long q, const acb_t z, long n, long prec) - # void acb_hypgeom_pfq_series_direct(acb_poly_t res, const acb_poly_struct * a, long p, const acb_poly_struct * b, long q, const acb_poly_t z, int regularized, long n, long len, long prec) - void acb_hypgeom_u_asymp(acb_t res, const acb_t a, const acb_t b, const acb_t z, long n, long prec) - bint acb_hypgeom_u_use_asymp(const acb_t z, long prec) - # void acb_hypgeom_u_1f1_series(acb_poly_t res, const acb_poly_t a, const acb_poly_t b, const acb_poly_t z, long len, long prec) - void acb_hypgeom_u_1f1(acb_t res, const acb_t a, const acb_t b, const acb_t z, long prec) - void acb_hypgeom_u(acb_t res, const acb_t a, const acb_t b, const acb_t z, long prec) - void acb_hypgeom_m_asymp(acb_t res, const acb_t a, const acb_t b, const acb_t z, bint regularized, long prec) - void acb_hypgeom_m_1f1(acb_t res, const acb_t a, const acb_t b, const acb_t z, bint regularized, long prec) - void acb_hypgeom_m(acb_t res, const acb_t a, const acb_t b, const acb_t z, bint regularized, long prec) - void acb_hypgeom_erf_1f1a(acb_t res, const acb_t z, long prec) - void acb_hypgeom_erf_1f1b(acb_t res, const acb_t z, long prec) - void acb_hypgeom_erf_asymp(acb_t res, const acb_t z, long prec, long prec2) - void acb_hypgeom_erf(acb_t res, const acb_t z, long prec) - void acb_hypgeom_erfc(acb_t res, const acb_t z, long prec) - void acb_hypgeom_erfi(acb_t res, const acb_t z, long prec) - void acb_hypgeom_bessel_j_asymp(acb_t res, const acb_t nu, const acb_t z, long prec) - void acb_hypgeom_bessel_j_0f1(acb_t res, const acb_t nu, const acb_t z, long prec) - void acb_hypgeom_bessel_j(acb_t res, const acb_t nu, const acb_t z, long prec) - void acb_hypgeom_bessel_jy(acb_t res1, acb_t res2, const acb_t nu, const acb_t z, long prec) - void acb_hypgeom_bessel_y(acb_t res, const acb_t nu, const acb_t z, long prec) - void acb_hypgeom_bessel_i_asymp(acb_t res, const acb_t nu, const acb_t z, long prec) - void acb_hypgeom_bessel_i_0f1(acb_t res, const acb_t nu, const acb_t z, long prec) - void acb_hypgeom_bessel_i(acb_t res, const acb_t nu, const acb_t z, long prec) - void acb_hypgeom_bessel_k_asymp(acb_t res, const acb_t nu, const acb_t z, long prec) - # void acb_hypgeom_bessel_k_0f1_series(acb_poly_t res, const acb_poly_t nu, const acb_poly_t z, long len, long prec) - void acb_hypgeom_bessel_k_0f1(acb_t res, const acb_t nu, const acb_t z, long prec) - void acb_hypgeom_bessel_k(acb_t res, const acb_t nu, const acb_t z, long prec) - void acb_hypgeom_gamma_upper_asymp(acb_t res, const acb_t s, const acb_t z, bint modified, long prec) - void acb_hypgeom_gamma_upper_1f1a(acb_t res, const acb_t s, const acb_t z, bint modified, long prec) - void acb_hypgeom_gamma_upper_1f1b(acb_t res, const acb_t s, const acb_t z, bint modified, long prec) - void acb_hypgeom_gamma_upper_singular(acb_t res, long s, const acb_t z, bint modified, long prec) - void acb_hypgeom_gamma_upper(acb_t res, const acb_t s, const acb_t z, bint modified, long prec) - void acb_hypgeom_expint(acb_t res, const acb_t s, const acb_t z, long prec) - void acb_hypgeom_ei_asymp(acb_t res, const acb_t z, long prec) - void acb_hypgeom_ei_2f2(acb_t res, const acb_t z, long prec) - void acb_hypgeom_ei(acb_t res, const acb_t z, long prec) - void acb_hypgeom_si_asymp(acb_t res, const acb_t z, long prec) - void acb_hypgeom_si_1f2(acb_t res, const acb_t z, long prec) - void acb_hypgeom_si(acb_t res, const acb_t z, long prec) - void acb_hypgeom_ci_asymp(acb_t res, const acb_t z, long prec) - void acb_hypgeom_ci_2f3(acb_t res, const acb_t z, long prec) - void acb_hypgeom_ci(acb_t res, const acb_t z, long prec) - void acb_hypgeom_shi(acb_t res, const acb_t z, long prec) - void acb_hypgeom_chi_asymp(acb_t res, const acb_t z, long prec) - void acb_hypgeom_chi_2f3(acb_t res, const acb_t z, long prec) - void acb_hypgeom_chi(acb_t res, const acb_t z, long prec) - void acb_hypgeom_li(acb_t res, const acb_t z, int offset, long prec) - void acb_hypgeom_0f1(acb_t res, const acb_t b, const acb_t z, bint regularized, long prec) - void acb_hypgeom_2f1(acb_t res, const acb_t a, const acb_t b, const acb_t z, const acb_t z, bint regularized, long prec) - void acb_hypgeom_legendre_p(acb_t res, const acb_t n, const acb_t m, const acb_t z, int type, long prec) - void acb_hypgeom_legendre_q(acb_t res, const acb_t n, const acb_t m, const acb_t z, int type, long prec) - void acb_hypgeom_jacobi_p(acb_t res, const acb_t n, const acb_t a, const acb_t b, const acb_t z, long prec) - void acb_hypgeom_gegenbauer_c(acb_t res, const acb_t n, const acb_t m, const acb_t z, long prec) - void acb_hypgeom_laguerre_l(acb_t res, const acb_t n, const acb_t m, const acb_t z, long prec) - void acb_hypgeom_hermite_h(acb_t res, const acb_t n, const acb_t z, long prec) - void acb_hypgeom_chebyshev_t(acb_t res, const acb_t n, const acb_t z, long prec) - void acb_hypgeom_chebyshev_u(acb_t res, const acb_t n, const acb_t z, long prec) - void acb_hypgeom_spherical_y(acb_t res, long n, long m, const acb_t theta, const acb_t phi, long prec) - void acb_hypgeom_airy(acb_t ai, acb_t aip, acb_t bi, acb_t bip, const acb_t z, long prec) +# Deprecated header file; use sage/libs/flint/acb_hypgeom.pxd instead +# See https://github.com/sagemath/sage/pull/36449 +from sage.libs.flint.acb_hypgeom cimport ( + acb_hypgeom_pfq_bound_factor, + acb_hypgeom_pfq_choose_n, + acb_hypgeom_pfq_sum_forward, + acb_hypgeom_pfq_sum_rs, + acb_hypgeom_pfq_sum_bs, + acb_hypgeom_pfq_sum_fme, + acb_hypgeom_pfq_sum, + acb_hypgeom_pfq_sum_bs_invz, + acb_hypgeom_pfq_sum_invz, + acb_hypgeom_pfq_direct, + acb_hypgeom_pfq_series_direct, + acb_hypgeom_u_asymp, + acb_hypgeom_u_use_asymp, + acb_hypgeom_u_1f1_series, + acb_hypgeom_u_1f1, + acb_hypgeom_u, + acb_hypgeom_m_asymp, + acb_hypgeom_m_1f1, + acb_hypgeom_m, + acb_hypgeom_erf_1f1a, + acb_hypgeom_erf_1f1b, + acb_hypgeom_erf_asymp, + acb_hypgeom_erf, + acb_hypgeom_erfc, + acb_hypgeom_erfi, + acb_hypgeom_bessel_j_asymp, + acb_hypgeom_bessel_j_0f1, + acb_hypgeom_bessel_j, + acb_hypgeom_bessel_jy, + acb_hypgeom_bessel_y, + acb_hypgeom_bessel_i_asymp, + acb_hypgeom_bessel_i_0f1, + acb_hypgeom_bessel_i, + acb_hypgeom_bessel_k_asymp, + acb_hypgeom_bessel_k_0f1_series, + acb_hypgeom_bessel_k_0f1, + acb_hypgeom_bessel_k, + acb_hypgeom_gamma_upper_asymp, + acb_hypgeom_gamma_upper_1f1a, + acb_hypgeom_gamma_upper_1f1b, + acb_hypgeom_gamma_upper_singular, + acb_hypgeom_gamma_upper, + acb_hypgeom_expint, + acb_hypgeom_ei_asymp, + acb_hypgeom_ei_2f2, + acb_hypgeom_ei, + acb_hypgeom_si_asymp, + acb_hypgeom_si_1f2, + acb_hypgeom_si, + acb_hypgeom_ci_asymp, + acb_hypgeom_ci_2f3, + acb_hypgeom_ci, + acb_hypgeom_shi, + acb_hypgeom_chi_asymp, + acb_hypgeom_chi_2f3, + acb_hypgeom_chi, + acb_hypgeom_li, + acb_hypgeom_0f1, + acb_hypgeom_2f1, + acb_hypgeom_legendre_p, + acb_hypgeom_legendre_q, + acb_hypgeom_jacobi_p, + acb_hypgeom_gegenbauer_c, + acb_hypgeom_laguerre_l, + acb_hypgeom_hermite_h, + acb_hypgeom_chebyshev_t, + acb_hypgeom_chebyshev_u, + acb_hypgeom_spherical_y, + acb_hypgeom_airy) diff --git a/src/sage/libs/arb/acb_mat.pxd b/src/sage/libs/arb/acb_mat.pxd index aff7fa7d7b2..5c16b9481a4 100644 --- a/src/sage/libs/arb/acb_mat.pxd +++ b/src/sage/libs/arb/acb_mat.pxd @@ -1,61 +1,61 @@ -# distutils: depends = acb_mat.h +# Deprecated header file; use sage/libs/flint/acb_mat.pxd instead +# See https://github.com/sagemath/sage/pull/36449 -from sage.libs.arb.types cimport acb_t, acb_ptr, acb_srcptr, acb_mat_t, acb_poly_t, mag_t +from sage.libs.flint.types cimport acb_mat_struct, acb_mat_t -# acb_mat.h -cdef extern from "arb_wrap.h": - unsigned int acb_mat_nrows(acb_mat_t mat) - unsigned int acb_mat_ncols(acb_mat_t mat) - acb_t acb_mat_entry(acb_mat_t mat, unsigned long i, unsigned long j) - void acb_mat_init(acb_mat_t mat, long r, long c) - void acb_mat_clear(acb_mat_t mat) - long acb_mat_allocated_bytes(const acb_mat_t x) - void acb_mat_set(acb_mat_t dest, const acb_mat_t src) - void acb_mat_printd(const acb_mat_t mat, long digits) - bint acb_mat_equal(const acb_mat_t mat1, const acb_mat_t mat2) - bint acb_mat_overlaps(const acb_mat_t mat1, const acb_mat_t mat2) - bint acb_mat_contains(const acb_mat_t mat1, const acb_mat_t mat2) - bint acb_mat_eq(const acb_mat_t mat1, const acb_mat_t mat2) - bint acb_mat_ne(const acb_mat_t mat1, const acb_mat_t mat2) - bint acb_mat_is_real(const acb_mat_t mat) - bint acb_mat_is_empty(const acb_mat_t mat) - bint acb_mat_is_square(const acb_mat_t mat) - void acb_mat_zero(acb_mat_t mat) - void acb_mat_one(acb_mat_t mat) - void acb_mat_transpose(acb_mat_t dest, const acb_mat_t src) - void acb_mat_frobenius_norm(acb_t res, const acb_mat_t A, long prec) - 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, long prec) - void acb_mat_sub(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, long prec) - void acb_mat_mul(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, long prec) - void acb_mat_mul_classical(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, long prec) - void acb_mat_mul_threaded(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, long prec) - void acb_mat_mul_entrywise(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, long prec) - void acb_mat_sqr(acb_mat_t res, const acb_mat_t mat, long prec) - void acb_mat_pow_ui(acb_mat_t res, const acb_mat_t mat, unsigned long exp, long prec) - void acb_mat_scalar_mul_2exp_si(acb_mat_t B, const acb_mat_t A, long c) - void acb_mat_scalar_addmul_si(acb_mat_t B, const acb_mat_t A, long c, long prec) - void acb_mat_scalar_addmul_acb(acb_mat_t B, const acb_mat_t A, const acb_t c, long prec) - void acb_mat_scalar_mul_si(acb_mat_t B, const acb_mat_t A, long c, long prec) - void acb_mat_scalar_mul_acb(acb_mat_t B, const acb_mat_t A, const acb_t c, long prec) - void acb_mat_scalar_div_si(acb_mat_t B, const acb_mat_t A, long c, long prec) - void acb_mat_scalar_div_acb(acb_mat_t B, const acb_mat_t A, const acb_t c, long prec) - bint acb_mat_lu(long * perm, acb_mat_t LU, const acb_mat_t A, long prec) - void acb_mat_solve_lu_precomp(acb_mat_t X, const long * perm, const acb_mat_t LU, const acb_mat_t B, long prec) - bint acb_mat_solve(acb_mat_t X, const acb_mat_t A, const acb_mat_t B, long prec) - bint acb_mat_inv(acb_mat_t X, const acb_mat_t A, long prec) - void acb_mat_det(acb_t det, const acb_mat_t A, long prec) - void acb_mat_charpoly(acb_poly_t cp, const acb_mat_t mat, long prec) - void acb_mat_exp_taylor_sum(acb_mat_t S, const acb_mat_t A, long N, long prec) - void acb_mat_exp(acb_mat_t B, const acb_mat_t A, long prec) - void acb_mat_trace(acb_t trace, const acb_mat_t mat, long prec) - void acb_mat_get_mid(acb_mat_t B, const acb_mat_t A) - 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, long maxiter, long prec) - void acb_mat_eig_global_enclosure(mag_t eps, const acb_mat_t A, acb_srcptr E, const acb_mat_t R, long prec) - void acb_mat_eig_enclosure_rump(acb_t lam, acb_mat_t J, acb_mat_t R, const acb_mat_t A, const acb_t lambda_approx, const acb_mat_t R_approx, long 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, long 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, long 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, long prec) - int acb_mat_eig_multiple_rump(acb_ptr E, const acb_mat_t A, acb_srcptr E_approx, const acb_mat_t R_approx, long prec) - int acb_mat_eig_multiple(acb_ptr E, const acb_mat_t A, acb_srcptr E_approx, const acb_mat_t R_approx, long prec) +from sage.libs.flint.acb_mat cimport ( + acb_mat_nrows, + acb_mat_ncols, + acb_mat_entry, + acb_mat_init, + acb_mat_clear, + acb_mat_allocated_bytes, + acb_mat_set, + acb_mat_printd, + acb_mat_equal, + acb_mat_overlaps, + acb_mat_contains, + acb_mat_eq, + acb_mat_ne, + acb_mat_is_real, + acb_mat_is_empty, + acb_mat_is_square, + acb_mat_zero, + acb_mat_one, + acb_mat_transpose, + acb_mat_frobenius_norm, + acb_mat_neg, + acb_mat_add, + acb_mat_sub, + acb_mat_mul, + acb_mat_mul_classical, + acb_mat_mul_threaded, + acb_mat_mul_entrywise, + acb_mat_sqr, + acb_mat_pow_ui, + acb_mat_scalar_mul_2exp_si, + acb_mat_scalar_addmul_si, + acb_mat_scalar_addmul_acb, + acb_mat_scalar_mul_si, + acb_mat_scalar_mul_acb, + acb_mat_scalar_div_si, + acb_mat_scalar_div_acb, + acb_mat_lu, + acb_mat_solve_lu_precomp, + acb_mat_solve, + acb_mat_inv, + acb_mat_det, + acb_mat_charpoly, + acb_mat_exp_taylor_sum, + acb_mat_exp, + acb_mat_trace, + acb_mat_get_mid, + acb_mat_add_error_mag, + acb_mat_approx_eig_qr, + acb_mat_eig_global_enclosure, + acb_mat_eig_enclosure_rump, + acb_mat_eig_simple_rump, + acb_mat_eig_simple_vdhoeven_mourrain, + acb_mat_eig_simple, + acb_mat_eig_multiple_rump, + acb_mat_eig_multiple) diff --git a/src/sage/libs/arb/acb_modular.pxd b/src/sage/libs/arb/acb_modular.pxd index cdc413c92da..46ef451ddd4 100644 --- a/src/sage/libs/arb/acb_modular.pxd +++ b/src/sage/libs/arb/acb_modular.pxd @@ -1,21 +1,16 @@ -# distutils: libraries = gmp flint -# distutils: depends = acb_modular.h - -from sage.libs.arb.types cimport * -from sage.libs.flint.types cimport fmpz_poly_t - -# acb_modular.h -cdef extern from "arb_wrap.h": - void acb_modular_theta(acb_t theta1, acb_t theta2, acb_t theta3, acb_t theta4, const acb_t z, const acb_t tau, long prec) - void acb_modular_j(acb_t z, const acb_t tau, long prec) - void acb_modular_eta(acb_t z, const acb_t tau, long prec) - void acb_modular_lambda(acb_t r, const acb_t tau, long prec) - void acb_modular_delta(acb_t r, const acb_t tau, long prec) - void acb_modular_eisenstein(acb_ptr r, const acb_t tau, long len, long prec) - void acb_modular_elliptic_p(acb_t r, const acb_t z, const acb_t tau, long prec) - void acb_modular_elliptic_p_zpx(acb_ptr r, const acb_t z, const acb_t tau, long len, long prec) - void acb_modular_elliptic_k(acb_t k, const acb_t m, long prec) - void acb_modular_elliptic_k_cpx(acb_ptr w, const acb_t m, long len, long prec) - void acb_modular_elliptic_e(acb_t res, const acb_t m, long prec) - void acb_modular_hilbert_class_poly(fmpz_poly_t res, long D) +# Deprecated header file; use sage/libs/flint/acb_modular.pxd instead +# See https://github.com/sagemath/sage/pull/36449 +from sage.libs.flint.acb_modular cimport ( + acb_modular_theta, + acb_modular_j, + acb_modular_eta, + acb_modular_lambda, + acb_modular_delta, + acb_modular_eisenstein, + acb_modular_elliptic_p, + acb_modular_elliptic_p_zpx, + acb_modular_elliptic_k, + acb_modular_elliptic_k_cpx, + acb_modular_elliptic_e, + acb_modular_hilbert_class_poly) diff --git a/src/sage/libs/arb/acb_poly.pxd b/src/sage/libs/arb/acb_poly.pxd index ae02757ffd9..42f4eae1ad4 100644 --- a/src/sage/libs/arb/acb_poly.pxd +++ b/src/sage/libs/arb/acb_poly.pxd @@ -1,223 +1,215 @@ -# distutils: libraries = gmp flint -# distutils: depends = acb_poly.h +# Deprecated header file; use sage/libs/flint/acb_poly.pxd instead +# See https://github.com/sagemath/sage/pull/36449 -from sage.libs.arb.types cimport * -from sage.libs.flint.types cimport fmpz_t, fmpz_poly_t, fmpq_poly_t +from sage.libs.flint.types cimport acb_poly_struct, acb_poly_t -# acb_poly.h -cdef extern from "arb_wrap.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, long len) - void _acb_poly_set_length(acb_poly_t poly, long len) - void _acb_poly_normalise(acb_poly_t poly) - void acb_poly_swap(acb_poly_t poly1, acb_poly_t poly2) - long acb_poly_length(const acb_poly_t poly) - long acb_poly_degree(const acb_poly_t poly) - bint acb_poly_is_zero(const acb_poly_t poly) - bint acb_poly_is_one(const acb_poly_t poly) - bint acb_poly_is_x(const acb_poly_t poly) - void acb_poly_zero(acb_poly_t poly) - void acb_poly_one(acb_poly_t poly) - void acb_poly_set(acb_poly_t dest, const acb_poly_t src) - void acb_poly_set_round(acb_poly_t dest, const acb_poly_t src, long prec) - void acb_poly_set_coeff_si(acb_poly_t poly, long n, long c) - void acb_poly_set_coeff_acb(acb_poly_t poly, long n, const acb_t c) - void acb_poly_get_coeff_acb(acb_t v, const acb_poly_t poly, long n) - acb_ptr acb_poly_get_coeff_ptr(acb_poly_t, long) - void _acb_poly_shift_right(acb_ptr res, acb_srcptr poly, long len, long n) - void acb_poly_shift_right(acb_poly_t res, const acb_poly_t poly, long n) - void _acb_poly_shift_left(acb_ptr res, acb_srcptr poly, long len, long n) - void acb_poly_shift_left(acb_poly_t res, const acb_poly_t poly, long n) - void acb_poly_truncate(acb_poly_t poly, long n) - void acb_poly_printd(const acb_poly_t poly, long digits) - # void acb_poly_fprintd(FILE * file, const acb_poly_t poly, long digits) - # void acb_poly_randtest(acb_poly_t poly, flint_rand_t state, long len, long prec, long mag_bits) - bint acb_poly_equal(const acb_poly_t A, const acb_poly_t B) - bint acb_poly_contains(const acb_poly_t poly1, const acb_poly_t poly2) - bint acb_poly_contains_fmpz_poly(const acb_poly_t poly1, const fmpz_poly_t poly2) - bint acb_poly_contains_fmpq_poly(const acb_poly_t poly1, const fmpq_poly_t poly2) - bint _acb_poly_overlaps(acb_srcptr poly1, long len1, acb_srcptr poly2, long len2) - bint acb_poly_overlaps(const acb_poly_t poly1, const acb_poly_t poly2) - bint acb_poly_get_unique_fmpz_poly(fmpz_poly_t z, const acb_poly_t x) - bint acb_poly_is_real(const acb_poly_t poly) - void acb_poly_set_fmpz_poly(acb_poly_t poly, const fmpz_poly_t re, long prec) - void acb_poly_set2_fmpz_poly(acb_poly_t poly, const fmpz_poly_t re, const fmpz_poly_t im, long prec) - # void acb_poly_set_arb_poly(acb_poly_t poly, const arb_poly_t re) - # void acb_poly_set2_arb_poly(acb_poly_t poly, const arb_poly_t re, const arb_poly_t im) - void acb_poly_set_fmpq_poly(acb_poly_t poly, const fmpq_poly_t re, long prec) - void acb_poly_set2_fmpq_poly(acb_poly_t poly, const fmpq_poly_t re, const fmpq_poly_t im, long prec) - void acb_poly_set_acb(acb_poly_t poly, long src) - void acb_poly_set_si(acb_poly_t poly, long src) - # void _acb_poly_majorant(arb_ptr res, acb_srcptr poly, long len, long prec) - # void acb_poly_majorant(arb_poly_t res, const acb_poly_t poly, long prec) - void _acb_poly_add(acb_ptr C, acb_srcptr A, long lenA, acb_srcptr B, long lenB, long prec) - void acb_poly_add(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, long prec) - void acb_poly_add_si(acb_poly_t C, const acb_poly_t A, long B, long prec) - void _acb_poly_sub(acb_ptr C, acb_srcptr A, long lenA, acb_srcptr B, long lenB, long prec) - void acb_poly_sub(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, long prec) - void acb_poly_neg(acb_poly_t C, const acb_poly_t A) - void acb_poly_scalar_mul_2exp_si(acb_poly_t C, const acb_poly_t A, long c) - void acb_poly_scalar_mul(acb_poly_t C, const acb_poly_t A, const acb_t c, long prec) - void acb_poly_scalar_div(acb_poly_t C, const acb_poly_t A, const acb_t c, long prec) - void _acb_poly_mullow_classical(acb_ptr C, acb_srcptr A, long lenA, acb_srcptr B, long lenB, long n, long prec) - void _acb_poly_mullow_transpose(acb_ptr C, acb_srcptr A, long lenA, acb_srcptr B, long lenB, long n, long prec) - void _acb_poly_mullow_transpose_gauss(acb_ptr C, acb_srcptr A, long lenA, acb_srcptr B, long lenB, long n, long prec) - void _acb_poly_mullow(acb_ptr C, acb_srcptr A, long lenA, acb_srcptr B, long lenB, long n, long prec) - void acb_poly_mullow_classical(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, long n, long prec) - void acb_poly_mullow_transpose(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, long n, long prec) - void acb_poly_mullow_transpose_gauss(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, long n, long prec) - void acb_poly_mullow(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, long n, long prec) - void _acb_poly_mul(acb_ptr C, acb_srcptr A, long lenA, acb_srcptr B, long lenB, long prec) - void acb_poly_mul(acb_poly_t C, const acb_poly_t A1, const acb_poly_t B2, long prec) - void _acb_poly_inv_series(acb_ptr Qinv, acb_srcptr Q, long Qlen, long len, long prec) - void acb_poly_inv_series(acb_poly_t Qinv, const acb_poly_t Q, long n, long prec) - void _acb_poly_div_series(acb_ptr Q, acb_srcptr A, long Alen, acb_srcptr B, long Blen, long n, long prec) - void acb_poly_div_series(acb_poly_t Q, const acb_poly_t A, const acb_poly_t B, long n, long prec) - void _acb_poly_div(acb_ptr Q, acb_srcptr A, long lenA, acb_srcptr B, long lenB, long prec) - void _acb_poly_rem(acb_ptr R, acb_srcptr A, long lenA, acb_srcptr B, long lenB, long prec) - void _acb_poly_divrem(acb_ptr Q, acb_ptr R, acb_srcptr A, long lenA, acb_srcptr B, long lenB, long prec) - bint acb_poly_divrem(acb_poly_t Q, acb_poly_t R, const acb_poly_t A, const acb_poly_t B, long prec) - void _acb_poly_div_root(acb_ptr Q, acb_t R, acb_srcptr A, long len, const acb_t c, long prec) - void _acb_poly_taylor_shift(acb_ptr g, const acb_t c, long n, long prec) - void acb_poly_taylor_shift(acb_poly_t g, const acb_poly_t f, const acb_t c, long prec) - void _acb_poly_compose(acb_ptr res, acb_srcptr poly1, long len1, acb_srcptr poly2, long len2, long prec) - void acb_poly_compose(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, long prec) - void _acb_poly_compose_series(acb_ptr res, acb_srcptr poly1, long len1, acb_srcptr poly2, long len2, long n, long prec) - void acb_poly_compose_series(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, long n, long prec) - void _acb_poly_revert_series_lagrange(acb_ptr h, acb_srcptr f, long flen, long n, long prec) - void acb_poly_revert_series_lagrange(acb_poly_t h, const acb_poly_t f, long n, long prec) - void _acb_poly_revert_series_newton(acb_ptr h, acb_srcptr f, long flen, long n, long prec) - void acb_poly_revert_series_newton(acb_poly_t h, const acb_poly_t f, long n, long prec) - void _acb_poly_revert_series_lagrange_fast(acb_ptr h, acb_srcptr f, long flen, long n, long prec) - void acb_poly_revert_series_lagrange_fast(acb_poly_t h, const acb_poly_t f, long n, long prec) - void _acb_poly_revert_series(acb_ptr h, acb_srcptr f, long flen, long n, long prec) - void acb_poly_revert_series(acb_poly_t h, const acb_poly_t f, long n, long prec) - void _acb_poly_evaluate_horner(acb_t y, acb_srcptr f, long len, const acb_t x, long prec) - void acb_poly_evaluate_horner(acb_t y, const acb_poly_t f, const acb_t x, long prec) - void _acb_poly_evaluate_rectangular(acb_t y, acb_srcptr f, long len, const acb_t x, long prec) - void acb_poly_evaluate_rectangular(acb_t y, const acb_poly_t f, const acb_t x, long prec) - void _acb_poly_evaluate(acb_t y, acb_srcptr f, long len, const acb_t x, long prec) - void acb_poly_evaluate(acb_t y, const acb_poly_t f, const acb_t x, long prec) - void _acb_poly_evaluate2_horner(acb_t y, acb_t z, acb_srcptr f, long len, const acb_t x, long prec) - void acb_poly_evaluate2_horner(acb_t y, acb_t z, const acb_poly_t f, const acb_t x, long prec) - void _acb_poly_evaluate2_rectangular(acb_t y, acb_t z, acb_srcptr f, long len, const acb_t x, long prec) - void acb_poly_evaluate2_rectangular(acb_t y, acb_t z, const acb_poly_t f, const acb_t x, long prec) - void _acb_poly_evaluate2(acb_t y, acb_t z, acb_srcptr f, long len, const acb_t x, long prec) - void acb_poly_evaluate2(acb_t y, acb_t z, const acb_poly_t f, const acb_t x, long prec) - void _acb_poly_product_roots(acb_ptr poly, acb_srcptr xs, long n, long prec) - void acb_poly_product_roots(acb_poly_t poly, acb_srcptr xs, long n, long prec) - acb_ptr * _acb_poly_tree_alloc(long len) - void _acb_poly_tree_free(acb_ptr * tree, long len) - void _acb_poly_tree_build(acb_ptr * tree, acb_srcptr roots, long len, long prec) - void _acb_poly_evaluate_vec_iter(acb_ptr ys, acb_srcptr poly, long plen, acb_srcptr xs, long n, long prec) - void acb_poly_evaluate_vec_iter(acb_ptr ys, const acb_poly_t poly, acb_srcptr xs, long n, long prec) - void _acb_poly_evaluate_vec_fast_precomp(acb_ptr vs, acb_srcptr poly, long plen, acb_ptr * tree, long len, long prec) - void _acb_poly_evaluate_vec_fast(acb_ptr ys, acb_srcptr poly, long plen, acb_srcptr xs, long n, long prec) - void acb_poly_evaluate_vec_fast(acb_ptr ys, const acb_poly_t poly, acb_srcptr xs, long n, long prec) - void _acb_poly_interpolate_newton(acb_ptr poly, acb_srcptr xs, acb_srcptr ys, long n, long prec) - void acb_poly_interpolate_newton(acb_poly_t poly, acb_srcptr xs, acb_srcptr ys, long n, long prec) - void _acb_poly_interpolate_barycentric(acb_ptr poly, acb_srcptr xs, acb_srcptr ys, long n, long prec) - void acb_poly_interpolate_barycentric(acb_poly_t poly, acb_srcptr xs, acb_srcptr ys, long n, long prec) - void _acb_poly_interpolation_weights(acb_ptr w, acb_ptr * tree, long len, long prec) - void _acb_poly_interpolate_fast_precomp(acb_ptr poly, acb_srcptr ys, acb_ptr * tree, acb_srcptr weights, long len, long prec) - void _acb_poly_interpolate_fast(acb_ptr poly, acb_srcptr xs, acb_srcptr ys, long len, long prec) - void acb_poly_interpolate_fast(acb_poly_t poly, acb_srcptr xs, acb_srcptr ys, long n, long prec) - void _acb_poly_derivative(acb_ptr res, acb_srcptr poly, long len, long prec) - void acb_poly_derivative(acb_poly_t res, const acb_poly_t poly, long prec) - void _acb_poly_integral(acb_ptr res, acb_srcptr poly, long len, long prec) - void acb_poly_integral(acb_poly_t res, const acb_poly_t poly, long prec) - void _acb_poly_pow_ui_trunc_binexp(acb_ptr res, acb_srcptr f, long flen, unsigned long exp, long len, long prec) - void acb_poly_pow_ui_trunc_binexp(acb_poly_t res, const acb_poly_t poly, unsigned long exp, long len, long prec) - void _acb_poly_pow_ui(acb_ptr res, acb_srcptr f, long flen, unsigned long exp, long prec) - void acb_poly_pow_ui(acb_poly_t res, const acb_poly_t poly, unsigned long exp, long prec) - void _acb_poly_pow_series(acb_ptr h, acb_srcptr f, long flen, acb_srcptr g, long glen, long len, long prec) - void acb_poly_pow_series(acb_poly_t h, const acb_poly_t f, const acb_poly_t g, long len, long prec) - void _acb_poly_pow_acb_series(acb_ptr h, acb_srcptr f, long flen, const acb_t g, long len, long prec) - void acb_poly_pow_acb_series(acb_poly_t h, const acb_poly_t f, const acb_t g, long len, long prec) - void _acb_poly_sqrt_series(acb_ptr g, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_sqrt_series(acb_poly_t g, const acb_poly_t h, long n, long prec) - void _acb_poly_rsqrt_series(acb_ptr g, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_rsqrt_series(acb_poly_t g, const acb_poly_t h, long n, long prec) - void _acb_poly_log_series(acb_ptr res, acb_srcptr f, long flen, long n, long prec) - void acb_poly_log_series(acb_poly_t res, const acb_poly_t f, long n, long prec) - void _acb_poly_atan_series(acb_ptr res, acb_srcptr f, long flen, long n, long prec) - void acb_poly_atan_series(acb_poly_t res, const acb_poly_t f, long n, long prec) - void _acb_poly_exp_series_basecase(acb_ptr f, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_exp_series_basecase(acb_poly_t f, const acb_poly_t h, long n, long prec) - void _acb_poly_exp_series(acb_ptr f, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_exp_series(acb_poly_t f, const acb_poly_t h, long n, long prec) - void _acb_poly_sin_cos_series(acb_ptr s, acb_ptr c, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_sin_cos_series(acb_poly_t s, acb_poly_t c, const acb_poly_t h, long n, long prec) - void _acb_poly_sin_series(acb_ptr s, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_sin_series(acb_poly_t s, const acb_poly_t h, long n, long prec) - void _acb_poly_cos_series(acb_ptr c, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_cos_series(acb_poly_t c, const acb_poly_t h, long n, long prec) - void _acb_poly_tan_series(acb_ptr g, acb_srcptr h, long hlen, long len, long prec) - void acb_poly_tan_series(acb_poly_t g, const acb_poly_t h, long n, long prec) - void _acb_poly_sin_cos_pi_series(acb_ptr s, acb_ptr c, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_sin_cos_pi_series(acb_poly_t s, acb_poly_t c, const acb_poly_t h, long n, long prec) - void _acb_poly_sin_pi_series(acb_ptr s, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_sin_pi_series(acb_poly_t s, const acb_poly_t h, long n, long prec) - void _acb_poly_cos_pi_series(acb_ptr c, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_cos_pi_series(acb_poly_t c, const acb_poly_t h, long n, long prec) - void _acb_poly_cot_pi_series(acb_ptr c, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_cot_pi_series(acb_poly_t c, const acb_poly_t h, long n, long prec) - void _acb_poly_sinh_cosh_series_basecase(acb_ptr s, acb_ptr c, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_sinh_cosh_series_basecase(acb_poly_t s, acb_poly_t c, const acb_poly_t h, long n, long prec) - void _acb_poly_sinh_cosh_series_exponential(acb_ptr s, acb_ptr c, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_sinh_cosh_series_exponential(acb_poly_t s, acb_poly_t c, const acb_poly_t h, long n, long prec) - void _acb_poly_sinh_cosh_series(acb_ptr s, acb_ptr c, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_sinh_cosh_series(acb_poly_t s, acb_poly_t c, const acb_poly_t h, long n, long prec) - void _acb_poly_sinh_series(acb_ptr s, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_sinh_series(acb_poly_t s, const acb_poly_t h, long n, long prec) - void _acb_poly_cosh_series(acb_ptr c, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_cosh_series(acb_poly_t c, const acb_poly_t h, long n, long prec) - void _acb_poly_sinc_series(acb_ptr s, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_sinc_series(acb_poly_t s, const acb_poly_t h, long n, long prec) - void _acb_poly_lambertw_series(acb_ptr res, acb_srcptr z, long zlen, const fmpz_t k, int flags, long len, long prec) - void acb_poly_lambertw_series(acb_poly_t res, const acb_poly_t z, const fmpz_t k, int flags, long len, long prec) - void _acb_poly_gamma_series(acb_ptr res, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_gamma_series(acb_poly_t res, const acb_poly_t h, long n, long prec) - void _acb_poly_rgamma_series(acb_ptr res, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_rgamma_series(acb_poly_t res, const acb_poly_t h, long n, long prec) - void _acb_poly_lgamma_series(acb_ptr res, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_lgamma_series(acb_poly_t res, const acb_poly_t h, long n, long prec) - void _acb_poly_digamma_series(acb_ptr res, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_digamma_series(acb_poly_t res, const acb_poly_t h, long n, long prec) - void _acb_poly_rising_ui_series(acb_ptr res, acb_srcptr f, long flen, unsigned long r, long trunc, long prec) - void acb_poly_rising_ui_series(acb_poly_t res, const acb_poly_t f, unsigned long r, long trunc, long prec) - void _acb_poly_powsum_series_naive(acb_ptr z, const acb_t s, const acb_t a, const acb_t q, long n, long len, long prec) - void _acb_poly_powsum_series_naive_threaded(acb_ptr z, const acb_t s, const acb_t a, const acb_t q, long n, long len, long prec) - void _acb_poly_powsum_one_series_sieved(acb_ptr z, const acb_t s, long n, long len, long prec) - void _acb_poly_zeta_em_choose_param(mag_t bound, unsigned long * N, unsigned long * M, const acb_t s, const acb_t a, long d, long target, long prec) - void _acb_poly_zeta_em_bound1(mag_t bound, const acb_t s, const acb_t a, long N, long M, long d, long wp) - # void _acb_poly_zeta_em_bound(arb_ptr vec, const acb_t s, const acb_t a, unsigned long N, unsigned long M, long d, long wp) - void _acb_poly_zeta_em_tail_naive(acb_ptr z, const acb_t s, const acb_t Na, acb_srcptr Nasx, long M, long len, long prec) - void _acb_poly_zeta_em_tail_bsplit(acb_ptr z, const acb_t s, const acb_t Na, acb_srcptr Nasx, long M, long len, long prec) - void _acb_poly_zeta_em_sum(acb_ptr z, const acb_t s, const acb_t a, bint deflate, unsigned long N, unsigned long M, long d, long prec) - void _acb_poly_zeta_cpx_series(acb_ptr z, const acb_t s, const acb_t a, bint deflate, long d, long prec) - void _acb_poly_zeta_series(acb_ptr res, acb_srcptr h, long hlen, const acb_t a, bint deflate, long len, long prec) - void acb_poly_zeta_series(acb_poly_t res, const acb_poly_t f, const acb_t a, bint deflate, long n, long prec) - void _acb_poly_polylog_cpx_small(acb_ptr w, const acb_t s, const acb_t z, long len, long prec) - void _acb_poly_polylog_cpx_zeta(acb_ptr w, const acb_t s, const acb_t z, long len, long prec) - void _acb_poly_polylog_cpx(acb_ptr w, const acb_t s, const acb_t z, long len, long prec) - void _acb_poly_polylog_series(acb_ptr w, acb_srcptr s, long slen, const acb_t z, long len, long prec) - void acb_poly_polylog_series(acb_poly_t w, const acb_poly_t s, const acb_t z, long len, long prec) - void _acb_poly_erf_series(acb_ptr res, acb_srcptr z, long zlen, long n, long prec) - void acb_poly_erf_series(acb_poly_t res, const acb_poly_t z, long n, long prec) - void _acb_poly_agm1_series(acb_ptr res, acb_srcptr z, long zlen, long len, long prec) - void acb_poly_agm1_series(acb_poly_t res, const acb_poly_t z, long n, long prec) - void _acb_poly_elliptic_k_series(acb_ptr res, acb_srcptr z, long zlen, long len, long prec) - void acb_poly_elliptic_k_series(acb_poly_t res, const acb_poly_t z, long n, long prec) - void _acb_poly_elliptic_p_series(acb_ptr res, acb_srcptr z, long zlen, const acb_t tau, long len, long prec) - void acb_poly_elliptic_p_series(acb_poly_t res, const acb_poly_t z, const acb_t tau, long n, long prec) - void _acb_poly_root_bound_fujiwara(mag_t bound, acb_srcptr poly, long len) - 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, long len, long prec) - long _acb_poly_validate_roots(acb_ptr roots, acb_srcptr poly, long len, long prec) - void _acb_poly_refine_roots_durand_kerner(acb_ptr roots, acb_srcptr poly, long len, long prec) - long _acb_poly_find_roots(acb_ptr roots, acb_srcptr poly, acb_srcptr initial, long len, long maxiter, long prec) - long acb_poly_find_roots(acb_ptr roots, const acb_poly_t poly, acb_srcptr initial, long maxiter, long prec) - bint _acb_poly_validate_real_roots(acb_srcptr roots, acb_srcptr poly, long len, long prec) - bint acb_poly_validate_real_roots(acb_srcptr roots, const acb_poly_t poly, long prec) +from sage.libs.flint.acb_poly cimport ( + acb_poly_init, + acb_poly_clear, + acb_poly_fit_length, + _acb_poly_set_length, + _acb_poly_normalise, + acb_poly_swap, + acb_poly_length, + acb_poly_degree, + acb_poly_is_zero, + acb_poly_is_one, + acb_poly_is_x, + acb_poly_zero, + acb_poly_one, + acb_poly_set, + acb_poly_set_round, + acb_poly_set_coeff_si, + acb_poly_set_coeff_acb, + acb_poly_get_coeff_acb, + acb_poly_get_coeff_ptr, + _acb_poly_shift_right, + acb_poly_shift_right, + _acb_poly_shift_left, + acb_poly_shift_left, + acb_poly_truncate, + acb_poly_printd, + acb_poly_fprintd, + acb_poly_randtest, + acb_poly_equal, + acb_poly_contains, + acb_poly_contains_fmpz_poly, + acb_poly_contains_fmpq_poly, + _acb_poly_overlaps, + acb_poly_overlaps, + acb_poly_get_unique_fmpz_poly, + acb_poly_is_real, + acb_poly_set_fmpz_poly, + acb_poly_set2_fmpz_poly, + acb_poly_set_arb_poly, + acb_poly_set2_arb_poly, + acb_poly_set_fmpq_poly, + acb_poly_set2_fmpq_poly, + acb_poly_set_acb, + acb_poly_set_si, + _acb_poly_majorant, + acb_poly_majorant, + _acb_poly_add, + acb_poly_add, + acb_poly_add_si, + _acb_poly_sub, + acb_poly_sub, + acb_poly_neg, + acb_poly_scalar_mul_2exp_si, + acb_poly_scalar_mul, + acb_poly_scalar_div, + _acb_poly_mullow_classical, + _acb_poly_mullow_transpose, + _acb_poly_mullow_transpose_gauss, + _acb_poly_mullow, + acb_poly_mullow_classical, + acb_poly_mullow_transpose, + acb_poly_mullow_transpose_gauss, + acb_poly_mullow, + _acb_poly_mul, + acb_poly_mul, + _acb_poly_inv_series, + acb_poly_inv_series, + _acb_poly_div_series, + acb_poly_div_series, + _acb_poly_div, + _acb_poly_rem, + _acb_poly_divrem, + acb_poly_divrem, + _acb_poly_div_root, + _acb_poly_taylor_shift, + acb_poly_taylor_shift, + _acb_poly_compose, + acb_poly_compose, + _acb_poly_compose_series, + acb_poly_compose_series, + _acb_poly_revert_series, + acb_poly_revert_series, + _acb_poly_evaluate_horner, + acb_poly_evaluate_horner, + _acb_poly_evaluate_rectangular, + acb_poly_evaluate_rectangular, + _acb_poly_evaluate, + acb_poly_evaluate, + _acb_poly_evaluate2_horner, + acb_poly_evaluate2_horner, + _acb_poly_evaluate2_rectangular, + acb_poly_evaluate2_rectangular, + _acb_poly_evaluate2, + acb_poly_evaluate2, + _acb_poly_product_roots, + acb_poly_product_roots, + _acb_poly_tree_alloc, + _acb_poly_tree_free, + _acb_poly_tree_build, + _acb_poly_evaluate_vec_iter, + acb_poly_evaluate_vec_iter, + _acb_poly_evaluate_vec_fast_precomp, + _acb_poly_evaluate_vec_fast, + acb_poly_evaluate_vec_fast, + _acb_poly_interpolate_newton, + acb_poly_interpolate_newton, + _acb_poly_interpolate_barycentric, + acb_poly_interpolate_barycentric, + _acb_poly_interpolation_weights, + _acb_poly_interpolate_fast_precomp, + _acb_poly_interpolate_fast, + acb_poly_interpolate_fast, + _acb_poly_derivative, + acb_poly_derivative, + _acb_poly_integral, + acb_poly_integral, + _acb_poly_pow_ui_trunc_binexp, + acb_poly_pow_ui_trunc_binexp, + _acb_poly_pow_ui, + acb_poly_pow_ui, + _acb_poly_pow_series, + acb_poly_pow_series, + _acb_poly_pow_acb_series, + acb_poly_pow_acb_series, + _acb_poly_sqrt_series, + acb_poly_sqrt_series, + _acb_poly_rsqrt_series, + acb_poly_rsqrt_series, + _acb_poly_log_series, + acb_poly_log_series, + _acb_poly_atan_series, + acb_poly_atan_series, + _acb_poly_exp_series_basecase, + acb_poly_exp_series_basecase, + _acb_poly_exp_series, + acb_poly_exp_series, + _acb_poly_sin_cos_series, + acb_poly_sin_cos_series, + _acb_poly_sin_series, + acb_poly_sin_series, + _acb_poly_cos_series, + acb_poly_cos_series, + _acb_poly_tan_series, + acb_poly_tan_series, + _acb_poly_sin_cos_pi_series, + acb_poly_sin_cos_pi_series, + _acb_poly_sin_pi_series, + acb_poly_sin_pi_series, + _acb_poly_cos_pi_series, + acb_poly_cos_pi_series, + _acb_poly_cot_pi_series, + acb_poly_cot_pi_series, + _acb_poly_sinh_cosh_series_basecase, + acb_poly_sinh_cosh_series_basecase, + _acb_poly_sinh_cosh_series_exponential, + acb_poly_sinh_cosh_series_exponential, + _acb_poly_sinh_cosh_series, + acb_poly_sinh_cosh_series, + _acb_poly_sinh_series, + acb_poly_sinh_series, + _acb_poly_cosh_series, + acb_poly_cosh_series, + _acb_poly_sinc_series, + acb_poly_sinc_series, + _acb_poly_lambertw_series, + acb_poly_lambertw_series, + _acb_poly_gamma_series, + acb_poly_gamma_series, + _acb_poly_rgamma_series, + acb_poly_rgamma_series, + _acb_poly_lgamma_series, + acb_poly_lgamma_series, + _acb_poly_digamma_series, + acb_poly_digamma_series, + _acb_poly_rising_ui_series, + acb_poly_rising_ui_series, + _acb_poly_powsum_series_naive, + _acb_poly_powsum_series_naive_threaded, + _acb_poly_powsum_one_series_sieved, + _acb_poly_zeta_em_choose_param, + _acb_poly_zeta_em_bound1, + _acb_poly_zeta_em_bound, + _acb_poly_zeta_em_tail_naive, + _acb_poly_zeta_em_tail_bsplit, + _acb_poly_zeta_em_sum, + _acb_poly_zeta_cpx_series, + _acb_poly_zeta_series, + acb_poly_zeta_series, + _acb_poly_polylog_cpx_small, + _acb_poly_polylog_cpx_zeta, + _acb_poly_polylog_cpx, + _acb_poly_polylog_series, + acb_poly_polylog_series, + _acb_poly_erf_series, + acb_poly_erf_series, + _acb_poly_agm1_series, + acb_poly_agm1_series, + _acb_poly_elliptic_k_series, + acb_poly_elliptic_k_series, + _acb_poly_elliptic_p_series, + acb_poly_elliptic_p_series, + _acb_poly_root_bound_fujiwara, + acb_poly_root_bound_fujiwara, + _acb_poly_root_inclusion, + _acb_poly_validate_roots, + _acb_poly_refine_roots_durand_kerner, + _acb_poly_find_roots, + acb_poly_find_roots, + _acb_poly_validate_real_roots, + acb_poly_validate_real_roots) diff --git a/src/sage/libs/arb/arb.pxd b/src/sage/libs/arb/arb.pxd index acd232ab816..704a5419c2f 100644 --- a/src/sage/libs/arb/arb.pxd +++ b/src/sage/libs/arb/arb.pxd @@ -1,267 +1,239 @@ -# distutils: libraries = gmp flint -# distutils: depends = arb.h - -from sage.libs.arb.types cimport * -from sage.libs.flint.types cimport fmpz_t, fmpq_t -from sage.libs.mpfr.types cimport mpfr_t - -# arb.h -cdef extern from "arb_wrap.h": - - arf_t arb_midref(arb_t x) - mag_t arb_radref(arb_t x) - - void arb_init(arb_t x) - void arb_clear(arb_t x) - void arb_swap(arb_t x, arb_t y) - - # void arb_set_fmprb(arb_t y, const fmprb_t x) - # void arb_get_fmprb(fmprb_t y, const arb_t x) - 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, long x) - void arb_set_ui(arb_t y, unsigned long x) - void arb_set_fmpz(arb_t y, const fmpz_t 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, long prec) - void arb_set_round_fmpz(arb_t y, const fmpz_t x, long prec) - void arb_set_round_fmpz_2exp(arb_t y, const fmpz_t x, const fmpz_t e, long prec) - void arb_set_fmpq(arb_t y, const fmpq_t x, long prec) - int arb_set_str(arb_t res, const char * inp, long prec) - char * arb_get_str(const arb_t x, long n, unsigned long flags) - char * arb_version - - void arb_zero(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) - - void arb_print(const arb_t x) - void arb_printd(const arb_t x, long digits) - void arb_printn(const arb_t x, long digits, unsigned long flags) - - char *arb_dump_str(const arb_t x) - bint arb_load_str(arb_t x, const char *str) - - # void arb_randtest(arb_t x, flint_rand_t state, long prec, long mag_bits) - # void arb_randtest_exact(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_wide(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_get_rand_fmpq(fmpq_t q, flint_rand_t state, const arb_t x, long bits) - - void arb_add_error_arf(arb_t x, const arf_t err) - void arb_add_error_2exp_si(arb_t x, long e) - void arb_add_error_2exp_fmpz(arb_t x, const fmpz_t e) - void arb_add_error(arb_t x, const arb_t error) - void arb_union(arb_t z, const arb_t x, const arb_t y, long prec) - 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_mag(mag_t z, const arb_t x) - void arb_get_mag_lower(mag_t z, const arb_t x) - 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_arf(arb_t x, const arf_t a, const arf_t b, long prec) - void arb_set_interval_mpfr(arb_t x, const mpfr_t a, const mpfr_t b, long prec) - void arb_get_interval_arf(arf_t a, arf_t b, const arb_t x, long prec) - void arb_get_interval_mpfr(mpfr_t a, mpfr_t b, const arb_t x) - long arb_rel_error_bits(const arb_t x) - long arb_rel_accuracy_bits(const arb_t x) - long arb_bits(const arb_t x) - void arb_trim(arb_t y, const arb_t x) - int arb_get_unique_fmpz(fmpz_t z, const arb_t x) - void arb_floor(arb_t y, const arb_t x, long prec) - void arb_ceil(arb_t y, const arb_t x, long prec) - void arb_get_fmpz_mid_rad_10exp(fmpz_t mid, fmpz_t rad, fmpz_t exp, const arb_t x, long n) - - bint arb_is_zero(const arb_t x) - bint arb_is_nonzero(const arb_t x) - bint arb_is_one(const arb_t f) - bint arb_is_finite(const arb_t x) - bint arb_is_exact(const arb_t x) - bint arb_is_int(const arb_t x) - bint arb_equal(const arb_t x, const arb_t y) - bint arb_is_positive(const arb_t x) - bint arb_is_nonnegative(const arb_t x) - bint arb_is_negative(const arb_t x) - bint arb_is_nonpositive(const arb_t x) - bint arb_overlaps(const arb_t x, const arb_t y) - bint arb_contains_arf(const arb_t x, const arf_t y) - bint arb_contains_fmpq(const arb_t x, const fmpq_t y) - bint arb_contains_fmpz(const arb_t x, const fmpz_t y) - bint arb_contains_si(const arb_t x, long y) - bint arb_contains_mpfr(const arb_t x, const mpfr_t y) - bint arb_contains(const arb_t x, const arb_t y) - bint arb_contains_zero(const arb_t x) - bint arb_contains_negative(const arb_t x) - bint arb_contains_nonpositive(const arb_t x) - bint arb_contains_positive(const arb_t x) - bint arb_contains_nonnegative(const arb_t x) - bint arb_contains_int(const arb_t x) - bint arb_eq(const arb_t x, const arb_t y) - bint arb_ne(const arb_t x, const arb_t y) - bint arb_le(const arb_t x, const arb_t y) - bint arb_ge(const arb_t x, const arb_t y) - bint arb_lt(const arb_t x, const arb_t y) - bint arb_gt(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, long prec) - void arb_abs(arb_t x, const arb_t y) - 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_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, unsigned long 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 m, const fmpz_t e, 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, unsigned long 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, unsigned long y, long prec) - void arb_mul_fmpz(arb_t z, const arb_t x, const fmpz_t y, long prec) - 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) - 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, unsigned long 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, unsigned long y, long prec) - void arb_submul_fmpz(arb_t z, const arb_t x, const fmpz_t y, long prec) - void arb_inv(arb_t y, const arb_t x, 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, unsigned long 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, unsigned long x, const arb_t y, long prec) - void arb_div_2expm1_ui(arb_t z, const arb_t x, unsigned long n, 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, unsigned long 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, unsigned long x, long prec) - void arb_sqrt1pm1(arb_t z, const arb_t x, long prec) - void arb_root(arb_t z, const arb_t x, unsigned long k, 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, unsigned long e, long prec) - void arb_ui_pow_ui(arb_t y, unsigned long b, unsigned long e, long prec) - void arb_si_pow_ui(arb_t y, long b, unsigned long e, long prec) - void arb_pow_fmpq(arb_t y, const arb_t x, const fmpq_t a, long prec) - void arb_pow(arb_t z, const arb_t x, const arb_t y, long prec) - - void arb_log_ui(arb_t z, unsigned long x, long prec) - void arb_log_fmpz(arb_t z, const fmpz_t x, long prec) - void arb_log_arf(arb_t z, const arf_t x, long prec) - void arb_log(arb_t z, const arb_t x, long prec) - void arb_log_ui_from_prev(arb_t log_k1, unsigned long k1, arb_t log_k0, unsigned long k0, long prec) - void arb_log1p(arb_t z, const arb_t x, 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_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_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_sec(arb_t s, const arb_t x, long prec) - void arb_csc(arb_t c, 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_sinh(arb_t s, const arb_t x, long prec) - void arb_cosh(arb_t c, 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 s, const arb_t x, long prec) - void arb_csch(arb_t c, 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_atanh(arb_t z, const arb_t x, 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_const_apery(arb_t z, long prec) - - void arb_lambertw(arb_t res, const arb_t x, int flags, long prec) - - void arb_rising(arb_t z, const arb_t x, const arb_t n, long prec) - void arb_rising_fmpq_ui(arb_t z, const fmpq_t x, unsigned long n, long prec) - void arb_fac_ui(arb_t z, unsigned long n, long prec) - void arb_bin_ui(arb_t z, const arb_t n, unsigned long k, long prec) - void arb_bin_uiui(arb_t z, unsigned long n, unsigned long k, 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_lgamma(arb_t z, const arb_t x, long prec) - void arb_rgamma(arb_t z, const arb_t x, long prec) - void arb_digamma(arb_t y, const arb_t x, long prec) - - void arb_zeta_ui_vec_borwein(arb_ptr z, unsigned long start, long num, unsigned long step, long prec) - void arb_zeta_ui_asymp(arb_t x, unsigned long s, long prec) - void arb_zeta_ui_euler_product(arb_t z, unsigned long s, long prec) - void arb_zeta_ui_bernoulli(arb_t x, unsigned long s, long prec) - void arb_zeta_ui_borwein_bsplit(arb_t x, unsigned long s, long prec) - void arb_zeta_ui_vec(arb_ptr x, unsigned long start, long num, long prec) - void arb_zeta_ui_vec_even(arb_ptr x, unsigned long start, long num, long prec) - void arb_zeta_ui_vec_odd(arb_ptr x, unsigned long start, long num, long prec) - void arb_zeta_ui(arb_t x, unsigned long s, long prec) - void arb_zeta(arb_t z, const arb_t s, long prec) - void arb_hurwitz_zeta(arb_t z, const arb_t s, const arb_t a, long prec) - - void arb_bernoulli_ui(arb_t b, unsigned long n, long prec) - void arb_bernoulli_ui_zeta(arb_t b, unsigned long 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_fib_fmpz(arb_t z, const fmpz_t n, long prec) - void arb_fib_ui(arb_t z, unsigned long n, long prec) - void arb_agm(arb_t z, const arb_t x, const arb_t y, long prec) - void arb_chebyshev_t_ui(arb_t a, unsigned long n, const arb_t x, long prec) - void arb_chebyshev_u_ui(arb_t a, unsigned long n, const arb_t x, long prec) - void arb_chebyshev_t2_ui(arb_t a, arb_t b, unsigned long n, const arb_t x, long prec) - void arb_chebyshev_u2_ui(arb_t a, arb_t b, unsigned long n, const arb_t x, long prec) - void arb_bell_fmpz(arb_t z, const fmpz_t n, long prec) - void arb_bell_ui(arb_t z, unsigned long n, long prec) - void arb_doublefac_ui(arb_t z, unsigned long n, long prec) - +# Deprecated header file; use sage/libs/flint/arb.pxd instead +# See https://github.com/sagemath/sage/pull/36449 + +from sage.libs.flint.types cimport arb_struct, arb_t, arb_ptr, arb_srcptr + +from sage.libs.flint.arb cimport ( + arb_midref, + arb_radref, + arb_init, + arb_clear, + arb_swap, + arb_set, + arb_set_arf, + arb_set_si, + arb_set_ui, + arb_set_fmpz, + arb_set_fmpz_2exp, + arb_set_round, + arb_set_round_fmpz, + arb_set_round_fmpz_2exp, + arb_set_fmpq, + arb_set_str, + arb_get_str, + arb_zero, + arb_one, + arb_dump_str, + arb_pos_inf, + arb_neg_inf, + arb_zero_pm_inf, + arb_indeterminate, + arb_print, + arb_printd, + arb_printn, + arb_load_str, + arb_randtest, + arb_randtest_exact, + arb_randtest_precise, + arb_randtest_wide, + arb_randtest_special, + arb_get_rand_fmpq, + arb_add_error_arf, + arb_add_error_2exp_si, + arb_add_error_2exp_fmpz, + arb_add_error, + arb_union, + arb_get_abs_ubound_arf, + arb_get_abs_lbound_arf, + arb_get_mag, + arb_get_mag_lower, + arb_get_mag_lower_nonnegative, + arb_get_interval_fmpz_2exp, + arb_set_interval_arf, + arb_set_interval_mpfr, + arb_get_interval_arf, + arb_get_interval_mpfr, + arb_rel_error_bits, + arb_rel_accuracy_bits, + arb_bits, + arb_trim, + arb_get_unique_fmpz, + arb_floor, + arb_ceil, + arb_get_fmpz_mid_rad_10exp, + arb_is_zero, + arb_is_nonzero, + arb_is_one, + arb_is_finite, + arb_is_exact, + arb_is_int, + arb_equal, + arb_is_positive, + arb_is_nonnegative, + arb_is_negative, + arb_is_nonpositive, + arb_overlaps, + arb_contains_arf, + arb_contains_fmpq, + arb_contains_fmpz, + arb_contains_si, + arb_contains_mpfr, + arb_contains, + arb_contains_zero, + arb_contains_negative, + arb_contains_nonpositive, + arb_contains_positive, + arb_contains_nonnegative, + arb_contains_int, + arb_eq, + arb_ne, + arb_le, + arb_ge, + arb_lt, + arb_gt, + arb_neg, + arb_neg_round, + arb_abs, + arb_min, + arb_max, + arb_add, + arb_add_arf, + arb_add_ui, + arb_add_si, + arb_add_fmpz, + arb_add_fmpz_2exp, + arb_sub, + arb_sub_arf, + arb_sub_ui, + arb_sub_si, + arb_sub_fmpz, + arb_mul, + arb_mul_arf, + arb_mul_si, + arb_mul_ui, + arb_mul_fmpz, + arb_mul_2exp_si, + arb_mul_2exp_fmpz, + arb_addmul, + arb_addmul_arf, + arb_addmul_si, + arb_addmul_ui, + arb_addmul_fmpz, + arb_submul, + arb_submul_arf, + arb_submul_si, + arb_submul_ui, + arb_submul_fmpz, + arb_inv, + arb_div, + arb_div_arf, + arb_div_si, + arb_div_ui, + arb_div_fmpz, + arb_fmpz_div_fmpz, + arb_ui_div, + arb_div_2expm1_ui, + arb_sqrt, + arb_sqrt_arf, + arb_sqrt_fmpz, + arb_sqrt_ui, + arb_sqrtpos, + arb_hypot, + arb_rsqrt, + arb_rsqrt_ui, + arb_sqrt1pm1, + arb_root, + arb_pow_fmpz_binexp, + arb_pow_fmpz, + arb_pow_ui, + arb_ui_pow_ui, + arb_si_pow_ui, + arb_pow_fmpq, + arb_pow, + arb_log_ui, + arb_log_fmpz, + arb_log_arf, + arb_log, + arb_log_ui_from_prev, + arb_log1p, + arb_exp, + arb_expm1, + arb_sin, + arb_cos, + arb_sin_cos, + arb_sin_pi, + arb_cos_pi, + arb_sin_cos_pi, + arb_tan, + arb_cot, + arb_sin_cos_pi_fmpq, + arb_sin_pi_fmpq, + arb_cos_pi_fmpq, + arb_tan_pi, + arb_cot_pi, + arb_sec, + arb_csc, + arb_atan_arf, + arb_atan, + arb_atan2, + arb_asin, + arb_acos, + arb_sinh, + arb_cosh, + arb_sinh_cosh, + arb_tanh, + arb_coth, + arb_sech, + arb_csch, + arb_asinh, + arb_acosh, + arb_atanh, + arb_const_pi, + arb_const_sqrt_pi, + arb_const_log_sqrt2pi, + arb_const_log2, + arb_const_log10, + arb_const_euler, + arb_const_catalan, + arb_const_e, + arb_const_khinchin, + arb_const_glaisher, + arb_const_apery, + arb_lambertw, + arb_rising_ui, + arb_rising, + arb_rising_fmpq_ui, + arb_fac_ui, + arb_bin_ui, + arb_bin_uiui, + arb_gamma, + arb_gamma_fmpq, + arb_gamma_fmpz, + arb_lgamma, + arb_rgamma, + arb_digamma, + arb_zeta_ui_vec_borwein, + arb_zeta_ui_asymp, + arb_zeta_ui_euler_product, + arb_zeta_ui_bernoulli, + arb_zeta_ui_borwein_bsplit, + arb_zeta_ui_vec, + arb_zeta_ui_vec_even, + arb_zeta_ui_vec_odd, + arb_zeta_ui, + arb_zeta, + arb_hurwitz_zeta, + arb_bernoulli_ui, + arb_bernoulli_ui_zeta, + arb_polylog, + arb_polylog_si, + arb_fib_fmpz, + arb_fib_ui, + arb_agm, + arb_chebyshev_t_ui, + arb_chebyshev_u_ui, + arb_chebyshev_t2_ui, + arb_chebyshev_u2_ui, + arb_bell_fmpz, + arb_bell_ui, + arb_doublefac_ui) diff --git a/src/sage/libs/arb/arb_fmpz_poly.pxd b/src/sage/libs/arb/arb_fmpz_poly.pxd index 55daa705238..a1de902aeb4 100644 --- a/src/sage/libs/arb/arb_fmpz_poly.pxd +++ b/src/sage/libs/arb/arb_fmpz_poly.pxd @@ -1,25 +1,20 @@ -# distutils: libraries = gmp flint -# distutils: depends = arb_fmpz_poly.h +# Deprecated header file; use sage/libs/flint/arb_fmpz_poly.pxd instead +# See https://github.com/sagemath/sage/pull/36449 -from sage.libs.arb.types cimport * -from sage.libs.flint.types cimport fmpz, fmpz_poly_t - -# acb.h -cdef extern from "arb_wrap.h": - - void _arb_fmpz_poly_evaluate_arb_horner(arb_t res, const fmpz * poly, long len, const arb_t x, long prec) - void arb_fmpz_poly_evaluate_arb_horner(arb_t res, const fmpz_poly_t poly, const arb_t x, long prec) - void _arb_fmpz_poly_evaluate_arb_rectangular(arb_t res, const fmpz * poly, long len, const arb_t x, long prec) - void arb_fmpz_poly_evaluate_arb_rectangular(arb_t res, const fmpz_poly_t poly, const arb_t x, long prec) - void _arb_fmpz_poly_evaluate_arb(arb_t res, const fmpz * poly, long len, const arb_t x, long prec) - void arb_fmpz_poly_evaluate_arb(arb_t res, const fmpz_poly_t poly, const arb_t x, long prec) - void _arb_fmpz_poly_evaluate_acb_horner(acb_t res, const fmpz * poly, long len, const acb_t x, long prec) - void arb_fmpz_poly_evaluate_acb_horner(acb_t res, const fmpz_poly_t poly, const acb_t x, long prec) - void _arb_fmpz_poly_evaluate_acb_rectangular(acb_t res, const fmpz * poly, long len, const acb_t x, long prec) - void arb_fmpz_poly_evaluate_acb_rectangular(acb_t res, const fmpz_poly_t poly, const acb_t x, long prec) - void _arb_fmpz_poly_evaluate_acb(acb_t res, const fmpz * poly, long len, const acb_t x, long prec) - void arb_fmpz_poly_evaluate_acb(acb_t res, const fmpz_poly_t poly, const acb_t x, long prec) - unsigned long arb_fmpz_poly_deflation(const fmpz_poly_t poly) - void arb_fmpz_poly_deflate(fmpz_poly_t res, const fmpz_poly_t poly, unsigned long deflation) - void arb_fmpz_poly_complex_roots(acb_ptr roots, const fmpz_poly_t poly, int flags, long prec) - void arb_fmpz_poly_gauss_period_minpoly(fmpz_poly_t res, unsigned long q, unsigned long n) +from sage.libs.flint.arb_fmpz_poly cimport ( + _arb_fmpz_poly_evaluate_arb_horner, + arb_fmpz_poly_evaluate_arb_horner, + _arb_fmpz_poly_evaluate_arb_rectangular, + arb_fmpz_poly_evaluate_arb_rectangular, + _arb_fmpz_poly_evaluate_arb, + arb_fmpz_poly_evaluate_arb, + _arb_fmpz_poly_evaluate_acb_horner, + arb_fmpz_poly_evaluate_acb_horner, + _arb_fmpz_poly_evaluate_acb_rectangular, + arb_fmpz_poly_evaluate_acb_rectangular, + _arb_fmpz_poly_evaluate_acb, + arb_fmpz_poly_evaluate_acb, + arb_fmpz_poly_deflation, + arb_fmpz_poly_deflate, + arb_fmpz_poly_complex_roots, + arb_fmpz_poly_gauss_period_minpoly) diff --git a/src/sage/libs/arb/arb_hypgeom.pxd b/src/sage/libs/arb/arb_hypgeom.pxd index 139b987d669..09ef72742a1 100644 --- a/src/sage/libs/arb/arb_hypgeom.pxd +++ b/src/sage/libs/arb/arb_hypgeom.pxd @@ -1,87 +1,82 @@ -# distutils: libraries = gmp flint -# distutils: depends = arb_hypgeom.h +# Deprecated header file; use sage/libs/flint/arb_hypgeom.pxd instead +# See https://github.com/sagemath/sage/pull/36449 -from sage.libs.flint.types cimport fmpz_t -from sage.libs.arb.types cimport * - -# arb_hypgeom.h -cdef extern from "arb_wrap.h": - void arb_hypgeom_pfq(arb_t res, arb_srcptr a, long p, arb_srcptr b, long q, const arb_t z, int regularized, long prec) - void arb_hypgeom_0f1(arb_t res, const arb_t a, const arb_t z, int regularized, long prec) - void arb_hypgeom_m(arb_t res, const arb_t a, const arb_t b, const arb_t z, int regularized, long prec) - void arb_hypgeom_1f1(arb_t res, const arb_t a, const arb_t b, const arb_t z, int regularized, long prec) - void arb_hypgeom_u(arb_t res, const arb_t a, const arb_t b, const arb_t z, long prec) - void arb_hypgeom_2f1(arb_t res, const arb_t a, const arb_t b, const arb_t c, const arb_t z, int regularized, long prec) - void arb_hypgeom_erf(arb_t res, const arb_t z, long prec) - void _arb_hypgeom_erf_series(arb_ptr res, arb_srcptr z, long zlen, long len, long prec) - void arb_hypgeom_erf_series(arb_poly_t res, const arb_poly_t z, long len, long prec) - void arb_hypgeom_erfc(arb_t res, const arb_t z, long prec) - void _arb_hypgeom_erfc_series(arb_ptr res, arb_srcptr z, long zlen, long len, long prec) - void arb_hypgeom_erfc_series(arb_poly_t res, const arb_poly_t z, long len, long prec) - void arb_hypgeom_erfi(arb_t res, const arb_t z, long prec) - void _arb_hypgeom_erfi_series(arb_ptr res, arb_srcptr z, long zlen, long len, long prec) - void arb_hypgeom_erfi_series(arb_poly_t res, const arb_poly_t z, long len, long prec) - void arb_hypgeom_fresnel(arb_t res1, arb_t res2, const arb_t z, int normalized, long prec) - void _arb_hypgeom_fresnel_series(arb_ptr res1, arb_ptr res2, arb_srcptr z, long zlen, int normalized, long len, long prec) - void arb_hypgeom_fresnel_series(arb_poly_t res1, arb_poly_t res2, const arb_poly_t z, int normalized, long len, long prec) - void arb_hypgeom_gamma_upper(arb_t res, const arb_t s, const arb_t z, int regularized, long prec) - void _arb_hypgeom_gamma_upper_series(arb_ptr res, const arb_t s, arb_srcptr z, long zlen, int regularized, long n, long prec) - void arb_hypgeom_gamma_upper_series(arb_poly_t res, const arb_t s, const arb_poly_t z, int regularized, long n, long prec) - void arb_hypgeom_gamma_lower(arb_t res, const arb_t s, const arb_t z, int regularized, long prec) - void _arb_hypgeom_gamma_lower_series(arb_ptr res, const arb_t s, arb_srcptr z, long zlen, int regularized, long n, long prec) - void arb_hypgeom_gamma_lower_series(arb_poly_t res, const arb_t s, const arb_poly_t z, int regularized, long n, long prec) - void arb_hypgeom_beta_lower(arb_t res, const arb_t a, const arb_t b, const arb_t z, bint regularized, long prec) - void _arb_hypgeom_beta_lower_series(arb_ptr res, const arb_t a, const arb_t b, arb_srcptr z, long zlen, bint regularized, long n, long prec) - void arb_hypgeom_beta_lower_series(arb_poly_t res, const arb_t a, const arb_t b, const arb_poly_t z, bint regularized, long n, long prec) - void arb_hypgeom_expint(arb_t res, const arb_t s, const arb_t z, long prec) - void arb_hypgeom_ei(arb_t res, const arb_t z, long prec) - void _arb_hypgeom_ei_series(arb_ptr res, arb_srcptr z, long zlen, long len, long prec) - void arb_hypgeom_ei_series(arb_poly_t res, const arb_poly_t z, long len, long prec) - void arb_hypgeom_si(arb_t res, const arb_t z, long prec) - void _arb_hypgeom_si_series(arb_ptr res, arb_srcptr z, long zlen, long len, long prec) - void arb_hypgeom_si_series(arb_poly_t res, const arb_poly_t z, long len, long prec) - void arb_hypgeom_ci(arb_t res, const arb_t z, long prec) - void _arb_hypgeom_ci_series(arb_ptr res, arb_srcptr z, long zlen, long len, long prec) - void arb_hypgeom_ci_series(arb_poly_t res, const arb_poly_t z, long len, long prec) - void arb_hypgeom_shi(arb_t res, const arb_t z, long prec) - void _arb_hypgeom_shi_series(arb_ptr res, arb_srcptr z, long zlen, long len, long prec) - void arb_hypgeom_shi_series(arb_poly_t res, const arb_poly_t z, long len, long prec) - void arb_hypgeom_chi(arb_t res, const arb_t z, long prec) - void _arb_hypgeom_chi_series(arb_ptr res, arb_srcptr z, long zlen, long len, long prec) - void arb_hypgeom_chi_series(arb_poly_t res, const arb_poly_t z, long len, long prec) - void arb_hypgeom_li(arb_t res, const arb_t z, bint offset, long prec) - void _arb_hypgeom_li_series(arb_ptr res, arb_srcptr z, long zlen, bint offset, long len, long prec) - void arb_hypgeom_li_series(arb_poly_t res, const arb_poly_t z, bint offset, long len, long prec) - void arb_hypgeom_bessel_j(arb_t res, const arb_t nu, const arb_t z, long prec) - void arb_hypgeom_bessel_y(arb_t res, const arb_t nu, const arb_t z, long prec) - void arb_hypgeom_bessel_jy(arb_t res1, arb_t res2, const arb_t nu, const arb_t z, long prec) - void arb_hypgeom_bessel_i(arb_t res, const arb_t nu, const arb_t z, long prec) - void arb_hypgeom_bessel_i_scaled(arb_t res, const arb_t nu, const arb_t z, long prec) - void arb_hypgeom_bessel_k(arb_t res, const arb_t nu, const arb_t z, long prec) - void arb_hypgeom_bessel_k_scaled(arb_t res, const arb_t nu, const arb_t z, long prec) - void arb_hypgeom_airy(arb_t ai, arb_t ai_prime, arb_t bi, arb_t bi_prime, const arb_t z, long prec) - void arb_hypgeom_airy_jet(arb_ptr ai, arb_ptr bi, const arb_t z, long len, long prec) - void _arb_hypgeom_airy_series(arb_ptr ai, arb_ptr ai_prime, arb_ptr bi, arb_ptr bi_prime, arb_srcptr z, long zlen, long len, long prec) - void arb_hypgeom_airy_series(arb_poly_t ai, arb_poly_t ai_prime, arb_poly_t bi, arb_poly_t bi_prime, const arb_poly_t z, long len, long prec) - void arb_hypgeom_airy_zero(arb_t a, arb_t a_prime, arb_t b, arb_t b_prime, const fmpz_t n, long prec) - void arb_hypgeom_coulomb(arb_t F, arb_t G, const arb_t l, const arb_t eta, const arb_t z, long prec) - void arb_hypgeom_coulomb_jet(arb_ptr F, arb_ptr G, const arb_t l, const arb_t eta, const arb_t z, long len, long prec) - void _arb_hypgeom_coulomb_series(arb_ptr F, arb_ptr G, const arb_t l, const arb_t eta, arb_srcptr z, long zlen, long len, long prec) - void arb_hypgeom_coulomb_series(arb_poly_t F, arb_poly_t G, const arb_t l, const arb_t eta, const arb_poly_t z, long len, long prec) - void arb_hypgeom_chebyshev_t(arb_t res, const arb_t nu, const arb_t z, long prec) - void arb_hypgeom_chebyshev_u(arb_t res, const arb_t nu, const arb_t z, long prec) - void arb_hypgeom_jacobi_p(arb_t res, const arb_t n, const arb_t a, const arb_t b, const arb_t z, long prec) - void arb_hypgeom_gegenbauer_c(arb_t res, const arb_t n, const arb_t m, const arb_t z, long prec) - void arb_hypgeom_laguerre_l(arb_t res, const arb_t n, const arb_t m, const arb_t z, long prec) - void arb_hypgeom_hermite_h(arb_t res, const arb_t nu, const arb_t z, long prec) - void arb_hypgeom_legendre_p(arb_t res, const arb_t n, const arb_t m, const arb_t z, int type, long prec) - void arb_hypgeom_legendre_q(arb_t res, const arb_t n, const arb_t m, const arb_t z, int type, long prec) - void arb_hypgeom_legendre_p_ui_deriv_bound(mag_t dp, mag_t dp2, unsigned long n, const arb_t x, const arb_t x2sub1) - void arb_hypgeom_legendre_p_ui_zero(arb_t res, arb_t res_prime, unsigned long n, const arb_t x, long K, long prec) - void arb_hypgeom_legendre_p_ui_one(arb_t res, arb_t res_prime, unsigned long n, const arb_t x, long K, long prec) - void arb_hypgeom_legendre_p_ui_asymp(arb_t res, arb_t res_prime, unsigned long n, const arb_t x, long K, long prec) - void arb_hypgeom_legendre_p_rec(arb_t res, arb_t res_prime, unsigned long n, const arb_t x, long prec) - void arb_hypgeom_legendre_p_ui(arb_t res, arb_t res_prime, unsigned long n, const arb_t x, long prec) - void arb_hypgeom_legendre_p_ui_root(arb_t res, arb_t weight, unsigned long n, unsigned long k, long prec) - void arb_hypgeom_dilog(arb_t res, const arb_t z, long prec) - void arb_hypgeom_central_bin_ui(arb_t res, unsigned long n, long prec) +from sage.libs.flint.arb_hypgeom cimport ( + arb_hypgeom_pfq, + arb_hypgeom_0f1, + arb_hypgeom_m, + arb_hypgeom_1f1, + arb_hypgeom_u, + arb_hypgeom_2f1, + arb_hypgeom_erf, + _arb_hypgeom_erf_series, + arb_hypgeom_erf_series, + arb_hypgeom_erfc, + _arb_hypgeom_erfc_series, + arb_hypgeom_erfc_series, + arb_hypgeom_erfi, + _arb_hypgeom_erfi_series, + arb_hypgeom_erfi_series, + arb_hypgeom_fresnel, + _arb_hypgeom_fresnel_series, + arb_hypgeom_fresnel_series, + arb_hypgeom_gamma_upper, + _arb_hypgeom_gamma_upper_series, + arb_hypgeom_gamma_upper_series, + arb_hypgeom_gamma_lower, + _arb_hypgeom_gamma_lower_series, + arb_hypgeom_gamma_lower_series, + arb_hypgeom_beta_lower, + _arb_hypgeom_beta_lower_series, + arb_hypgeom_beta_lower_series, + arb_hypgeom_expint, + arb_hypgeom_ei, + _arb_hypgeom_ei_series, + arb_hypgeom_ei_series, + arb_hypgeom_si, + _arb_hypgeom_si_series, + arb_hypgeom_si_series, + arb_hypgeom_ci, + _arb_hypgeom_ci_series, + arb_hypgeom_ci_series, + arb_hypgeom_shi, + _arb_hypgeom_shi_series, + arb_hypgeom_shi_series, + arb_hypgeom_chi, + _arb_hypgeom_chi_series, + arb_hypgeom_chi_series, + arb_hypgeom_li, + _arb_hypgeom_li_series, + arb_hypgeom_li_series, + arb_hypgeom_bessel_j, + arb_hypgeom_bessel_y, + arb_hypgeom_bessel_jy, + arb_hypgeom_bessel_i, + arb_hypgeom_bessel_i_scaled, + arb_hypgeom_bessel_k, + arb_hypgeom_bessel_k_scaled, + arb_hypgeom_airy, + arb_hypgeom_airy_jet, + _arb_hypgeom_airy_series, + arb_hypgeom_airy_series, + arb_hypgeom_airy_zero, + arb_hypgeom_coulomb, + arb_hypgeom_coulomb_jet, + _arb_hypgeom_coulomb_series, + arb_hypgeom_coulomb_series, + arb_hypgeom_chebyshev_t, + arb_hypgeom_chebyshev_u, + arb_hypgeom_jacobi_p, + arb_hypgeom_gegenbauer_c, + arb_hypgeom_laguerre_l, + arb_hypgeom_hermite_h, + arb_hypgeom_legendre_p, + arb_hypgeom_legendre_q, + arb_hypgeom_legendre_p_ui_deriv_bound, + arb_hypgeom_legendre_p_ui_zero, + arb_hypgeom_legendre_p_ui_one, + arb_hypgeom_legendre_p_ui_asymp, + arb_hypgeom_legendre_p_ui, + arb_hypgeom_legendre_p_ui_root, + arb_hypgeom_dilog, + arb_hypgeom_central_bin_ui) diff --git a/src/sage/libs/arb/arb_version.pyx b/src/sage/libs/arb/arb_version.pyx index 55736c392e9..b8ab4d725e5 100644 --- a/src/sage/libs/arb/arb_version.pyx +++ b/src/sage/libs/arb/arb_version.pyx @@ -1,7 +1,11 @@ # -*- coding: utf-8 -from sage.libs.arb.arb cimport arb_version from sage.cpython.string cimport char_to_str + +cdef extern from "arb_wrap.h": + char * arb_version + + def version(): """ Get arb version diff --git a/src/sage/libs/arb/arf.pxd b/src/sage/libs/arb/arf.pxd index 84778fe9f09..bfdca642bc9 100644 --- a/src/sage/libs/arb/arf.pxd +++ b/src/sage/libs/arb/arf.pxd @@ -1,134 +1,130 @@ -# distutils: libraries = gmp flint -# distutils: depends = arf.h +# Deprecated header file; use sage/libs/flint/arf.pxd instead +# See https://github.com/sagemath/sage/pull/36449 -from sage.libs.arb.types cimport * -from sage.libs.gmp.types cimport mpz_t -from sage.libs.flint.types cimport fmpz_t -from sage.libs.mpfr.types cimport mpfr_t, mpfr_rnd_t +from sage.libs.flint.types cimport arf_t -# arf.h -cdef extern from "arb_wrap.h": - void arf_init(arf_t x) - void arf_clear(arf_t x) - void arf_zero(arf_t x) - void arf_one(arf_t x) - void arf_pos_inf(arf_t x) - void arf_neg_inf(arf_t x) - void arf_nan(arf_t x) - bint arf_is_zero(const arf_t x) - bint arf_is_one(const arf_t x) - bint arf_is_pos_inf(const arf_t x) - bint arf_is_neg_inf(const arf_t x) - bint arf_is_nan(const arf_t x) - bint arf_is_inf(const arf_t x) - bint arf_is_normal(const arf_t x) - bint arf_is_special(const arf_t x) - bint arf_is_finite(arf_t x) - void arf_set(arf_t y, const arf_t x) - void arf_set_mpz(arf_t y, const mpz_t x) - void arf_set_fmpz(arf_t y, const fmpz_t x) - void arf_set_ui(arf_t y, unsigned long x) - void arf_set_si(arf_t y, long x) - void arf_set_mpfr(arf_t y, const mpfr_t x) - void arf_set_d(arf_t y, double x) - void arf_swap(arf_t y, arf_t x) - void arf_init_set_ui(arf_t y, unsigned long x) - void arf_init_set_si(arf_t y, long x) - int arf_set_round(arf_t y, const arf_t x, long prec, arf_rnd_t rnd) - int arf_set_round_si(arf_t x, long v, long prec, arf_rnd_t rnd) - int arf_set_round_ui(arf_t x, unsigned long v, long prec, arf_rnd_t rnd) - int arf_set_round_mpz(arf_t y, const mpz_t x, long prec, arf_rnd_t rnd) - int arf_set_round_fmpz(arf_t y, const fmpz_t x, long prec, arf_rnd_t rnd) - void arf_set_si_2exp_si(arf_t y, long m, long e) - void arf_set_ui_2exp_si(arf_t y, unsigned long m, long e) - void arf_set_fmpz_2exp(arf_t y, const fmpz_t m, const fmpz_t e) - int arf_set_round_fmpz_2exp(arf_t y, const fmpz_t x, const fmpz_t e, long prec, arf_rnd_t rnd) - void arf_get_fmpz_2exp(fmpz_t m, fmpz_t e, const arf_t x) - double arf_get_d(const arf_t x, arf_rnd_t rnd) - int arf_get_mpfr(mpfr_t y, const arf_t x, mpfr_rnd_t rnd) - void arf_get_fmpz(fmpz_t z, const arf_t x, arf_rnd_t rnd) - long arf_get_si(const arf_t x, arf_rnd_t rnd) - int arf_get_fmpz_fixed_fmpz(fmpz_t y, const arf_t x, const fmpz_t e) - int arf_get_fmpz_fixed_si(fmpz_t y, const arf_t x, long e) - void arf_floor(arf_t y, const arf_t x) - void arf_ceil(arf_t y, const arf_t x) - bint arf_equal(const arf_t x, const arf_t y) - bint arf_equal_si(const arf_t x, long y) - int arf_cmp(const arf_t x, const arf_t y) - int arf_cmpabs(const arf_t x, const arf_t y) - int arf_cmpabs_ui(const arf_t x, unsigned long y) - int arf_cmpabs_mag(const arf_t x, const mag_t y) - int arf_cmp_2exp_si(const arf_t x, long e) - int arf_cmpabs_2exp_si(const arf_t x, long e) - int arf_sgn(const arf_t x) - void arf_min(arf_t z, const arf_t a, const arf_t b) - void arf_max(arf_t z, const arf_t a, const arf_t b) - long arf_bits(const arf_t x) - bint arf_is_int(const arf_t x) - bint arf_is_int_2exp_si(const arf_t x, long e) - void arf_abs_bound_lt_2exp_fmpz(fmpz_t b, const arf_t x) - void arf_abs_bound_le_2exp_fmpz(fmpz_t b, const arf_t x) - long arf_abs_bound_lt_2exp_si(const arf_t x) - void arf_get_mag(mag_t y, const arf_t x) - void arf_get_mag_lower(mag_t y, const arf_t x) - void arf_set_mag(arf_t y, const mag_t x) - void mag_init_set_arf(mag_t y, const arf_t x) - void mag_fast_init_set_arf(mag_t y, const arf_t x) - void arf_mag_set_ulp(mag_t z, const arf_t y, long prec) - void arf_mag_add_ulp(mag_t z, const mag_t x, const arf_t y, long prec) - void arf_mag_fast_add_ulp(mag_t z, const mag_t x, const arf_t y, long prec) - void arf_init_set_shallow(arf_t z, const arf_t x) - void arf_init_set_mag_shallow(arf_t z, const mag_t x) - void arf_init_neg_shallow(arf_t z, const arf_t x) - void arf_init_neg_mag_shallow(arf_t z, const mag_t x) - # void arf_randtest(arf_t x, flint_rand_t state, long bits, long mag_bits) - # void arf_randtest_not_zero(arf_t x, flint_rand_t state, long bits, long mag_bits) - # void arf_randtest_special(arf_t x, flint_rand_t state, long bits, long mag_bits) - void arf_debug(const arf_t x) - void arf_print(const arf_t x) - void arf_printd(const arf_t y, long d) - void arf_abs(arf_t y, const arf_t x) - void arf_neg(arf_t y, const arf_t x) - int arf_neg_round(arf_t y, const arf_t x, long prec, arf_rnd_t rnd) - void arf_mul_2exp_si(arf_t y, const arf_t x, long e) - void arf_mul_2exp_fmpz(arf_t y, const arf_t x, const fmpz_t e) - int arf_mul(arf_t z, const arf_t x, const arf_t y, long prec, arf_rnd_t rnd) - int arf_mul_ui(arf_t z, const arf_t x, unsigned long y, long prec, arf_rnd_t rnd) - int arf_mul_si(arf_t z, const arf_t x, long y, long prec, arf_rnd_t rnd) - int arf_mul_mpz(arf_t z, const arf_t x, const mpz_t y, long prec, arf_rnd_t rnd) - int arf_mul_fmpz(arf_t z, const arf_t x, const fmpz_t y, long prec, arf_rnd_t rnd) - int arf_add(arf_t z, const arf_t x, const arf_t y, long prec, arf_rnd_t rnd) - int arf_add_si(arf_t z, const arf_t x, long y, long prec, arf_rnd_t rnd) - int arf_add_ui(arf_t z, const arf_t x, unsigned long y, long prec, arf_rnd_t rnd) - int arf_add_fmpz(arf_t z, const arf_t x, const fmpz_t y, long prec, arf_rnd_t rnd) - int arf_add_fmpz_2exp(arf_t z, const arf_t x, const fmpz_t y, const fmpz_t e, long prec, arf_rnd_t rnd) - int arf_sub(arf_t z, const arf_t x, const arf_t y, long prec, arf_rnd_t rnd) - int arf_sub_si(arf_t z, const arf_t x, long y, long prec, arf_rnd_t rnd) - int arf_sub_ui(arf_t z, const arf_t x, unsigned long y, long prec, arf_rnd_t rnd) - int arf_sub_fmpz(arf_t z, const arf_t x, const fmpz_t y, long prec, arf_rnd_t rnd) - int arf_addmul(arf_t z, const arf_t x, const arf_t y, long prec, arf_rnd_t rnd) - int arf_addmul_ui(arf_t z, const arf_t x, unsigned long y, long prec, arf_rnd_t rnd) - int arf_addmul_si(arf_t z, const arf_t x, long y, long prec, arf_rnd_t rnd) - int arf_addmul_mpz(arf_t z, const arf_t x, const mpz_t y, long prec, arf_rnd_t rnd) - int arf_addmul_fmpz(arf_t z, const arf_t x, const fmpz_t y, long prec, arf_rnd_t rnd) - int arf_submul(arf_t z, const arf_t x, const arf_t y, long prec, arf_rnd_t rnd) - int arf_submul_ui(arf_t z, const arf_t x, unsigned long y, long prec, arf_rnd_t rnd) - int arf_submul_si(arf_t z, const arf_t x, long y, long prec, arf_rnd_t rnd) - int arf_submul_mpz(arf_t z, const arf_t x, const mpz_t y, long prec, arf_rnd_t rnd) - int arf_submul_fmpz(arf_t z, const arf_t x, const fmpz_t y, long prec, arf_rnd_t rnd) - int arf_sum(arf_t s, arf_srcptr terms, long len, long prec, arf_rnd_t rnd) - int arf_div(arf_t z, const arf_t x, const arf_t y, long prec, arf_rnd_t rnd) - int arf_div_ui(arf_t z, const arf_t x, unsigned long y, long prec, arf_rnd_t rnd) - int arf_ui_div(arf_t z, unsigned long x, const arf_t y, long prec, arf_rnd_t rnd) - int arf_div_si(arf_t z, const arf_t x, long y, long prec, arf_rnd_t rnd) - int arf_si_div(arf_t z, long x, const arf_t y, long prec, arf_rnd_t rnd) - int arf_div_fmpz(arf_t z, const arf_t x, const fmpz_t y, long prec, arf_rnd_t rnd) - int arf_fmpz_div(arf_t z, const fmpz_t x, const arf_t y, long prec, arf_rnd_t rnd) - int arf_fmpz_div_fmpz(arf_t z, const fmpz_t x, const fmpz_t y, long prec, arf_rnd_t rnd) - int arf_sqrt(arf_t z, const arf_t x, long prec, arf_rnd_t rnd) - int arf_sqrt_ui(arf_t z, unsigned long x, long prec, arf_rnd_t rnd) - int arf_sqrt_fmpz(arf_t z, const fmpz_t x, long prec, arf_rnd_t rnd) - int arf_rsqrt(arf_t z, const arf_t x, long prec, arf_rnd_t rnd) - 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, long 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, long prec, arf_rnd_t rnd) - int arf_complex_sqr(arf_t e, arf_t f, const arf_t a, const arf_t b, long prec, arf_rnd_t rnd) +from sage.libs.flint.arf cimport ( + arf_init, + arf_clear, + arf_zero, + arf_one, + arf_pos_inf, + arf_neg_inf, + arf_nan, + arf_is_zero, + arf_is_one, + arf_is_pos_inf, + arf_is_neg_inf, + arf_is_nan, + arf_is_inf, + arf_is_normal, + arf_is_special, + arf_is_finite, + arf_set, + arf_set_mpz, + arf_set_fmpz, + arf_set_ui, + arf_set_si, + arf_set_mpfr, + arf_set_d, + arf_swap, + arf_init_set_ui, + arf_init_set_si, + arf_set_round, + arf_set_round_si, + arf_set_round_ui, + arf_set_round_mpz, + arf_set_round_fmpz, + arf_set_si_2exp_si, + arf_set_ui_2exp_si, + arf_set_fmpz_2exp, + arf_set_round_fmpz_2exp, + arf_get_fmpz_2exp, + arf_get_d, + arf_get_mpfr, + arf_get_fmpz, + arf_get_si, + arf_get_fmpz_fixed_fmpz, + arf_get_fmpz_fixed_si, + arf_floor, + arf_ceil, + arf_equal, + arf_equal_si, + arf_cmp, + arf_cmpabs, + arf_cmpabs_ui, + arf_cmpabs_mag, + arf_cmp_2exp_si, + arf_cmpabs_2exp_si, + arf_sgn, + arf_min, + arf_max, + arf_bits, + arf_is_int, + arf_is_int_2exp_si, + arf_abs_bound_lt_2exp_fmpz, + arf_abs_bound_le_2exp_fmpz, + arf_abs_bound_lt_2exp_si, + arf_get_mag, + arf_get_mag_lower, + arf_set_mag, + mag_init_set_arf, + mag_fast_init_set_arf, + arf_mag_set_ulp, + arf_mag_add_ulp, + arf_mag_fast_add_ulp, + arf_init_set_shallow, + arf_init_set_mag_shallow, + arf_init_neg_shallow, + arf_init_neg_mag_shallow, + arf_randtest, + arf_randtest_not_zero, + arf_randtest_special, + arf_debug, + arf_print, + arf_printd, + arf_abs, + arf_neg, + arf_neg_round, + arf_mul_2exp_si, + arf_mul_2exp_fmpz, + arf_mul, + arf_mul_ui, + arf_mul_si, + arf_mul_mpz, + arf_mul_fmpz, + arf_add, + arf_add_si, + arf_add_ui, + arf_add_fmpz, + arf_add_fmpz_2exp, + arf_sub, + arf_sub_si, + arf_sub_ui, + arf_sub_fmpz, + arf_addmul, + arf_addmul_ui, + arf_addmul_si, + arf_addmul_mpz, + arf_addmul_fmpz, + arf_submul, + arf_submul_ui, + arf_submul_si, + arf_submul_mpz, + arf_submul_fmpz, + arf_sum, + arf_div, + arf_div_ui, + arf_ui_div, + arf_div_si, + arf_si_div, + arf_div_fmpz, + arf_fmpz_div, + arf_fmpz_div_fmpz, + arf_sqrt, + arf_sqrt_ui, + arf_sqrt_fmpz, + arf_rsqrt, + arf_complex_mul, + arf_complex_mul_fallback, + arf_complex_sqr) diff --git a/src/sage/libs/arb/bernoulli.pxd b/src/sage/libs/arb/bernoulli.pxd index 95a84dd5179..a347f8e8378 100644 --- a/src/sage/libs/arb/bernoulli.pxd +++ b/src/sage/libs/arb/bernoulli.pxd @@ -1,8 +1,5 @@ -# distutils: libraries = gmp flint -# distutils: depends = bernoulli.h +# Deprecated header file; use sage/libs/flint/bernoulli.pxd instead +# See https://github.com/sagemath/sage/pull/36449 -from sage.libs.flint.types cimport fmpq_t, ulong - -# bernoulli.h -cdef extern from "arb_wrap.h": - void bernoulli_fmpq_ui(fmpq_t b, ulong n) +from sage.libs.flint.bernoulli cimport ( + bernoulli_fmpq_ui) diff --git a/src/sage/libs/arb/mag.pxd b/src/sage/libs/arb/mag.pxd index 69dfb990ae0..7c75a4343cc 100644 --- a/src/sage/libs/arb/mag.pxd +++ b/src/sage/libs/arb/mag.pxd @@ -1,77 +1,76 @@ -# distutils: libraries = gmp flint -# distutils: depends = mag.h +# Deprecated header file; use sage/libs/flint/mag.pxd instead +# See https://github.com/sagemath/sage/pull/36449 -from sage.libs.arb.types cimport * -from sage.libs.flint.types cimport fmpz_t, fmpq_t +from sage.libs.flint.types cimport mag_t -# mag.h -cdef extern from "arb_wrap.h": - void mag_init(mag_t x) - void mag_clear(mag_t x) - void mag_init_set(mag_t x, const mag_t y) - void mag_swap(mag_t x, mag_t y) - void mag_set(mag_t x, const mag_t y) - void mag_zero(mag_t x) - void mag_one(mag_t x) - void mag_inf(mag_t x) - bint mag_is_special(const mag_t x) - bint mag_is_zero(const mag_t x) - bint mag_is_inf(const mag_t x) - bint mag_is_finite(const mag_t x) - bint mag_equal(const mag_t x, const mag_t y) - bint mag_cmp(const mag_t x, const mag_t y) - bint mag_cmp_2exp_si(const mag_t x, long y) - void mag_min(mag_t z, const mag_t x, const mag_t y) - void mag_max(mag_t z, const mag_t x, const mag_t y) - void mag_print(const mag_t x) - # void mag_randtest(mag_t x, flint_rand_t state, long expbits) - # void mag_randtest_special(mag_t x, flint_rand_t state, long expbits) - void mag_set_d(mag_t y, double x) - void mag_set_ui(mag_t y, unsigned long x) - void mag_set_fmpz(mag_t y, const fmpz_t x) - void mag_set_d_2exp_fmpz(mag_t z, double x, const fmpz_t y) - void mag_set_fmpz_2exp_fmpz(mag_t z, const fmpz_t x, const fmpz_t y) - void mag_set_ui_2exp_si(mag_t z, unsigned long x, long y) - void mag_get_fmpq(fmpq_t y, const mag_t x) - void mag_set_ui_lower(mag_t z, unsigned long x) - void mag_set_fmpz_lower(mag_t z, const fmpz_t x) - void mag_set_fmpz_2exp_fmpz_lower(mag_t z, const fmpz_t x, const fmpz_t y) - void mag_mul_2exp_si(mag_t z, const mag_t x, long y) - void mag_mul_2exp_fmpz(mag_t z, const mag_t x, const fmpz_t y) - void mag_mul(mag_t z, const mag_t x, const mag_t y) - void mag_mul_ui(mag_t z, const mag_t x, unsigned long y) - void mag_mul_fmpz(mag_t z, const mag_t x, const fmpz_t y) - void mag_add(mag_t z, const mag_t x, const mag_t y) - void mag_addmul(mag_t z, const mag_t x, const mag_t y) - void mag_add_2exp_fmpz(mag_t z, const mag_t x, const fmpz_t e) - void mag_div(mag_t z, const mag_t x, const mag_t y) - void mag_div_ui(mag_t z, const mag_t x, unsigned long y) - void mag_div_fmpz(mag_t z, const mag_t x, const fmpz_t y) - void mag_mul_lower(mag_t z, const mag_t x, const mag_t y) - void mag_mul_ui_lower(mag_t z, const mag_t x, unsigned long y) - void mag_mul_fmpz_lower(mag_t z, const mag_t x, const fmpz_t y) - void mag_add_lower(mag_t z, const mag_t x, const mag_t y) - void mag_sub_lower(mag_t z, const mag_t x, const mag_t y) - void mag_fast_init_set(mag_t x, const mag_t y) - void mag_fast_zero(mag_t x) - bint mag_fast_is_zero(const mag_t x) - void mag_fast_mul(mag_t z, const mag_t x, const mag_t y) - void mag_fast_addmul(mag_t z, const mag_t x, const mag_t y) - void mag_fast_add_2exp_si(mag_t z, const mag_t x, long e) - void mag_fast_mul_2exp_si(mag_t z, const mag_t x, long e) - void mag_pow_ui(mag_t z, const mag_t x, unsigned long e) - void mag_pow_fmpz(mag_t z, const mag_t x, const fmpz_t e) - void mag_pow_ui_lower(mag_t z, const mag_t x, unsigned long e) - void mag_sqrt(mag_t z, const mag_t x) - void mag_rsqrt(mag_t z, const mag_t x) - void mag_hypot(mag_t z, const mag_t x, const mag_t y) - void mag_log1p(mag_t z, const mag_t x) - void mag_log_ui(mag_t z, unsigned long n) - void mag_exp(mag_t z, const mag_t x) - void mag_expm1(mag_t z, const mag_t x) - void mag_exp_tail(mag_t z, const mag_t x, unsigned long N) - void mag_binpow_uiui(mag_t z, unsigned long m, unsigned long n) - void mag_fac_ui(mag_t z, unsigned long n) - void mag_rfac_ui(mag_t z, unsigned long n) - void mag_bernoulli_div_fac_ui(mag_t z, unsigned long n) - void mag_polylog_tail(mag_t u, const mag_t z, long s, unsigned long d, unsigned long N) +from sage.libs.flint.mag cimport ( + MAG_BITS, + mag_init, + mag_clear, + mag_init_set, + mag_swap, + mag_set, + mag_zero, + mag_one, + mag_inf, + mag_is_special, + mag_is_zero, + mag_is_inf, + mag_is_finite, + mag_equal, + mag_cmp, + mag_cmp_2exp_si, + mag_min, + mag_max, + mag_print, + mag_randtest, + mag_randtest_special, + mag_set_d, + mag_set_ui, + mag_set_fmpz, + mag_set_d_2exp_fmpz, + mag_set_fmpz_2exp_fmpz, + mag_set_ui_2exp_si, + mag_get_fmpq, + mag_set_ui_lower, + mag_set_fmpz_lower, + mag_set_fmpz_2exp_fmpz_lower, + mag_mul_2exp_si, + mag_mul_2exp_fmpz, + mag_mul, + mag_mul_ui, + mag_mul_fmpz, + mag_add, + mag_addmul, + mag_add_2exp_fmpz, + mag_div, + mag_div_ui, + mag_div_fmpz, + mag_mul_lower, + mag_mul_ui_lower, + mag_mul_fmpz_lower, + mag_add_lower, + mag_sub_lower, + mag_fast_init_set, + mag_fast_zero, + mag_fast_is_zero, + mag_fast_mul, + mag_fast_addmul, + mag_fast_add_2exp_si, + mag_fast_mul_2exp_si, + mag_pow_ui, + mag_pow_fmpz, + mag_pow_ui_lower, + mag_sqrt, + mag_rsqrt, + mag_hypot, + mag_log1p, + mag_log_ui, + mag_exp, + mag_expm1, + mag_exp_tail, + mag_binpow_uiui, + mag_fac_ui, + mag_rfac_ui, + mag_bernoulli_div_fac_ui, + mag_polylog_tail) diff --git a/src/sage/libs/arb/types.pxd b/src/sage/libs/arb/types.pxd index 98ed96dfb7a..7a9a2fe1706 100644 --- a/src/sage/libs/arb/types.pxd +++ b/src/sage/libs/arb/types.pxd @@ -1,76 +1,40 @@ -# distutils: depends = mag.h arf.h arb.h acb.h acb_mat.h acb_poly.h acb_calc.h - -# mag.h -cdef extern from "arb_wrap.h": - ctypedef struct mag_struct: - pass - ctypedef mag_struct mag_t[1] - ctypedef mag_struct * mag_ptr - ctypedef const mag_struct * mag_srcptr - long MAG_BITS - -# arf.h -cdef extern from "arb_wrap.h": - ctypedef struct arf_struct: - pass - ctypedef arf_struct arf_t[1] - ctypedef arf_struct * arf_ptr - ctypedef const arf_struct * arf_srcptr - cdef enum arf_rnd_t: - ARF_RND_DOWN - ARF_RND_UP - ARF_RND_FLOOR - ARF_RND_CEIL - ARF_RND_NEAR - long ARF_PREC_EXACT - -# arb.h -cdef extern from "arb_wrap.h": - ctypedef struct arb_struct: - pass - ctypedef arb_struct arb_t[1] - ctypedef arb_struct * arb_ptr - ctypedef const arb_struct * arb_srcptr - -# acb.h -cdef extern from "arb_wrap.h": - ctypedef struct acb_struct: - pass - ctypedef acb_struct[1] acb_t - ctypedef acb_struct * acb_ptr - ctypedef const acb_struct * acb_srcptr - -# acb_mat.h -cdef extern from "arb_wrap.h": - ctypedef struct acb_mat_struct: - pass - ctypedef acb_mat_struct[1] acb_mat_t - -# acb_poly.h -cdef extern from "arb_wrap.h": - ctypedef struct acb_poly_struct: - pass - ctypedef acb_poly_struct[1] acb_poly_t - ctypedef acb_poly_struct * acb_poly_ptr - ctypedef const acb_poly_struct * acb_poly_srcptr - -# acb_calc.h -cdef extern from "arb_wrap.h": - ctypedef struct acb_calc_integrate_opt_struct: - long deg_limit - long eval_limit - long depth_limit - bint use_heap - int verbose - ctypedef acb_calc_integrate_opt_struct acb_calc_integrate_opt_t[1] - ctypedef int (*acb_calc_func_t)(acb_ptr out, - const acb_t inp, void * param, long order, long prec) - -# arb_poly.h -cdef extern from "arb_wrap.h": - ctypedef struct arb_poly_struct: - pass - ctypedef arb_poly_struct[1] arb_poly_t - ctypedef arb_poly_struct * arb_poly_ptr - ctypedef const arb_poly_struct * arb_poly_srcptr - +# Deprecated header file; use sage/libs/flint/types.pxd instead +# See https://github.com/sagemath/sage/pull/36449 + +from sage.libs.flint.types cimport ( + mag_struct, + mag_t, + mag_ptr, + mag_srcptr, + arf_struct, + arf_t, + arf_ptr, + arf_srcptr, + arf_rnd_t, + ARF_RND_DOWN, + ARF_RND_UP, + ARF_RND_FLOOR, + ARF_RND_CEIL, + ARF_RND_NEAR, + ARF_PREC_EXACT, + arb_struct, + arb_t, + arb_ptr, + arb_srcptr, + acb_struct, + acb_t, + acb_ptr, + acb_srcptr, + acb_mat_struct, + acb_mat_t, + acb_poly_struct, + acb_poly_t, + acb_poly_ptr, + acb_poly_srcptr, + acb_calc_integrate_opt_struct, + acb_calc_integrate_opt_t, + acb_calc_func_t, + arb_poly_struct, + arb_poly_t, + arb_poly_ptr, + arb_poly_srcptr) diff --git a/src/sage/libs/flint/acb.pxd b/src/sage/libs/flint/acb.pxd new file mode 100644 index 00000000000..9017379224b --- /dev/null +++ b/src/sage/libs/flint/acb.pxd @@ -0,0 +1,268 @@ +# distutils: libraries = flint +# distutils: depends = flint/acb.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void acb_init(acb_t x) noexcept + void acb_clear(acb_t x) noexcept + acb_ptr _acb_vec_init(slong n) noexcept + void _acb_vec_clear(acb_ptr v, slong n) noexcept + slong acb_allocated_bytes(const acb_t x) noexcept + slong _acb_vec_allocated_bytes(acb_srcptr vec, slong len) noexcept + double _acb_vec_estimate_allocated_bytes(slong len, slong prec) noexcept + void acb_zero(acb_t z) noexcept + void acb_one(acb_t z) noexcept + void acb_onei(acb_t z) noexcept + void acb_set(acb_t z, const acb_t x) noexcept + void acb_set_ui(acb_t z, ulong x) noexcept + void acb_set_si(acb_t z, slong x) noexcept + void acb_set_d(acb_t z, double x) noexcept + void acb_set_fmpz(acb_t z, const fmpz_t x) noexcept + void acb_set_arb(acb_t z, const arb_t c) noexcept + void acb_set_si_si(acb_t z, slong x, slong y) noexcept + void acb_set_d_d(acb_t z, double x, double y) noexcept + void acb_set_fmpz_fmpz(acb_t z, const fmpz_t x, const fmpz_t y) noexcept + void acb_set_arb_arb(acb_t z, const arb_t x, const arb_t y) noexcept + void acb_set_fmpq(acb_t z, const fmpq_t x, slong prec) noexcept + void acb_set_round(acb_t z, const acb_t x, slong prec) noexcept + void acb_set_round_fmpz(acb_t z, const fmpz_t x, slong prec) noexcept + void acb_set_round_arb(acb_t z, const arb_t x, slong prec) noexcept + void acb_swap(acb_t z, acb_t x) noexcept + void acb_add_error_arf(acb_t x, const arf_t err) noexcept + void acb_add_error_mag(acb_t x, const mag_t err) noexcept + void acb_add_error_arb(acb_t x, const arb_t err) noexcept + void acb_get_mid(acb_t m, const acb_t x) noexcept + void acb_print(const acb_t x) noexcept + void acb_fprint(FILE * file, const acb_t x) noexcept + void acb_printd(const acb_t x, slong digits) noexcept + void acb_fprintd(FILE * file, const acb_t x, slong digits) noexcept + void acb_printn(const acb_t x, slong digits, ulong flags) noexcept + void acb_fprintn(FILE * file, const acb_t x, slong digits, ulong flags) noexcept + void acb_randtest(acb_t z, flint_rand_t state, slong prec, slong mag_bits) noexcept + void acb_randtest_special(acb_t z, flint_rand_t state, slong prec, slong mag_bits) noexcept + void acb_randtest_precise(acb_t z, flint_rand_t state, slong prec, slong mag_bits) noexcept + void acb_randtest_param(acb_t z, flint_rand_t state, slong prec, slong mag_bits) noexcept + void acb_urandom(acb_t z, flint_rand_t state, slong prec) noexcept + bint acb_is_zero(const acb_t z) noexcept + bint acb_is_one(const acb_t z) noexcept + bint acb_is_finite(const acb_t z) noexcept + bint acb_is_exact(const acb_t z) noexcept + bint acb_is_int(const acb_t z) noexcept + bint acb_is_int_2exp_si(const acb_t x, slong e) noexcept + bint acb_equal(const acb_t x, const acb_t y) noexcept + bint acb_equal_si(const acb_t x, slong y) noexcept + bint acb_eq(const acb_t x, const acb_t y) noexcept + bint acb_ne(const acb_t x, const acb_t y) noexcept + bint acb_overlaps(const acb_t x, const acb_t y) noexcept + void acb_union(acb_t z, const acb_t x, const acb_t y, slong prec) noexcept + void acb_get_abs_ubound_arf(arf_t u, const acb_t z, slong prec) noexcept + void acb_get_abs_lbound_arf(arf_t u, const acb_t z, slong prec) noexcept + void acb_get_rad_ubound_arf(arf_t u, const acb_t z, slong prec) noexcept + void acb_get_mag(mag_t u, const acb_t x) noexcept + void acb_get_mag_lower(mag_t u, const acb_t x) noexcept + bint acb_contains_fmpq(const acb_t x, const fmpq_t y) noexcept + bint acb_contains_fmpz(const acb_t x, const fmpz_t y) noexcept + bint acb_contains(const acb_t x, const acb_t y) noexcept + bint acb_contains_zero(const acb_t x) noexcept + bint acb_contains_int(const acb_t x) noexcept + bint acb_contains_interior(const acb_t x, const acb_t y) noexcept + slong acb_rel_error_bits(const acb_t x) noexcept + slong acb_rel_accuracy_bits(const acb_t x) noexcept + slong acb_rel_one_accuracy_bits(const acb_t x) noexcept + slong acb_bits(const acb_t x) noexcept + void acb_indeterminate(acb_t x) noexcept + void acb_trim(acb_t y, const acb_t x) noexcept + bint acb_is_real(const acb_t x) noexcept + int acb_get_unique_fmpz(fmpz_t z, const acb_t x) noexcept + void acb_get_real(arb_t re, const acb_t z) noexcept + void acb_get_imag(arb_t im, const acb_t z) noexcept + void acb_arg(arb_t r, const acb_t z, slong prec) noexcept + void acb_abs(arb_t r, const acb_t z, slong prec) noexcept + void acb_sgn(acb_t r, const acb_t z, slong prec) noexcept + void acb_csgn(arb_t r, const acb_t z) noexcept + void acb_neg(acb_t z, const acb_t x) noexcept + void acb_neg_round(acb_t z, const acb_t x, slong prec) noexcept + void acb_conj(acb_t z, const acb_t x) noexcept + void acb_add_ui(acb_t z, const acb_t x, ulong y, slong prec) noexcept + void acb_add_si(acb_t z, const acb_t x, slong y, slong prec) noexcept + void acb_add_fmpz(acb_t z, const acb_t x, const fmpz_t y, slong prec) noexcept + void acb_add_arb(acb_t z, const acb_t x, const arb_t y, slong prec) noexcept + void acb_add(acb_t z, const acb_t x, const acb_t y, slong prec) noexcept + void acb_sub_ui(acb_t z, const acb_t x, ulong y, slong prec) noexcept + void acb_sub_si(acb_t z, const acb_t x, slong y, slong prec) noexcept + void acb_sub_fmpz(acb_t z, const acb_t x, const fmpz_t y, slong prec) noexcept + void acb_sub_arb(acb_t z, const acb_t x, const arb_t y, slong prec) noexcept + void acb_sub(acb_t z, const acb_t x, const acb_t y, slong prec) noexcept + void acb_mul_onei(acb_t z, const acb_t x) noexcept + void acb_div_onei(acb_t z, const acb_t x) noexcept + void acb_mul_i_pow_si(acb_t z, const acb_t x, slong k) noexcept + void acb_mul_ui(acb_t z, const acb_t x, ulong y, slong prec) noexcept + void acb_mul_si(acb_t z, const acb_t x, slong y, slong prec) noexcept + void acb_mul_fmpz(acb_t z, const acb_t x, const fmpz_t y, slong prec) noexcept + void acb_mul_arb(acb_t z, const acb_t x, const arb_t y, slong prec) noexcept + void acb_mul(acb_t z, const acb_t x, const acb_t y, slong prec) noexcept + void acb_mul_2exp_si(acb_t z, const acb_t x, slong e) noexcept + void acb_mul_2exp_fmpz(acb_t z, const acb_t x, const fmpz_t e) noexcept + void acb_sqr(acb_t z, const acb_t x, slong prec) noexcept + void acb_cube(acb_t z, const acb_t x, slong prec) noexcept + void acb_addmul(acb_t z, const acb_t x, const acb_t y, slong prec) noexcept + void acb_addmul_ui(acb_t z, const acb_t x, ulong y, slong prec) noexcept + void acb_addmul_si(acb_t z, const acb_t x, slong y, slong prec) noexcept + void acb_addmul_fmpz(acb_t z, const acb_t x, const fmpz_t y, slong prec) noexcept + void acb_addmul_arb(acb_t z, const acb_t x, const arb_t y, slong prec) noexcept + void acb_submul(acb_t z, const acb_t x, const acb_t y, slong prec) noexcept + void acb_submul_ui(acb_t z, const acb_t x, ulong y, slong prec) noexcept + void acb_submul_si(acb_t z, const acb_t x, slong y, slong prec) noexcept + void acb_submul_fmpz(acb_t z, const acb_t x, const fmpz_t y, slong prec) noexcept + void acb_submul_arb(acb_t z, const acb_t x, const arb_t y, slong prec) noexcept + void acb_inv(acb_t z, const acb_t x, slong prec) noexcept + void acb_div_ui(acb_t z, const acb_t x, ulong y, slong prec) noexcept + void acb_div_si(acb_t z, const acb_t x, slong y, slong prec) noexcept + void acb_div_fmpz(acb_t z, const acb_t x, const fmpz_t y, slong prec) noexcept + void acb_div_arb(acb_t z, const acb_t x, const arb_t y, slong prec) noexcept + void acb_div(acb_t z, const acb_t x, const acb_t y, slong prec) noexcept + void acb_dot_precise(acb_t res, const acb_t s, int subtract, acb_srcptr x, slong xstep, acb_srcptr y, slong ystep, slong len, slong prec) noexcept + void acb_dot_simple(acb_t res, const acb_t s, int subtract, acb_srcptr x, slong xstep, acb_srcptr y, slong ystep, slong len, slong prec) noexcept + void acb_dot(acb_t res, const acb_t s, int subtract, acb_srcptr x, slong xstep, acb_srcptr y, slong ystep, slong len, slong prec) noexcept + void acb_approx_dot(acb_t res, const acb_t s, int subtract, acb_srcptr x, slong xstep, acb_srcptr y, slong ystep, slong len, slong prec) noexcept + void acb_dot_ui(acb_t res, const acb_t initial, int subtract, acb_srcptr x, slong xstep, const ulong * y, slong ystep, slong len, slong prec) noexcept + void acb_dot_si(acb_t res, const acb_t initial, int subtract, acb_srcptr x, slong xstep, const slong * y, slong ystep, slong len, slong prec) noexcept + void acb_dot_uiui(acb_t res, const acb_t initial, int subtract, acb_srcptr x, slong xstep, const ulong * y, slong ystep, slong len, slong prec) noexcept + void acb_dot_siui(acb_t res, const acb_t initial, int subtract, acb_srcptr x, slong xstep, const ulong * y, slong ystep, slong len, slong prec) noexcept + void acb_dot_fmpz(acb_t res, const acb_t initial, int subtract, acb_srcptr x, slong xstep, const fmpz * y, slong ystep, slong len, slong prec) noexcept + void acb_const_pi(acb_t y, slong prec) noexcept + void acb_sqrt(acb_t r, const acb_t z, slong prec) noexcept + void acb_sqrt_analytic(acb_t r, const acb_t z, int analytic, slong prec) noexcept + void acb_rsqrt(acb_t r, const acb_t z, slong prec) noexcept + void acb_rsqrt_analytic(acb_t r, const acb_t z, int analytic, slong prec) noexcept + void acb_sqrts(acb_t y1, acb_t y2, const acb_t x, slong prec) noexcept + 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) noexcept + void acb_root_ui(acb_t r, const acb_t z, ulong k, slong prec) noexcept + void acb_pow_fmpz(acb_t y, const acb_t b, const fmpz_t e, slong prec) noexcept + void acb_pow_ui(acb_t y, const acb_t b, ulong e, slong prec) noexcept + void acb_pow_si(acb_t y, const acb_t b, slong e, slong prec) noexcept + void acb_pow_arb(acb_t z, const acb_t x, const arb_t y, slong prec) noexcept + void acb_pow(acb_t z, const acb_t x, const acb_t y, slong prec) noexcept + void acb_pow_analytic(acb_t r, const acb_t x, const acb_t y, int analytic, slong prec) noexcept + void acb_unit_root(acb_t res, ulong order, slong prec) noexcept + void acb_exp(acb_t y, const acb_t z, slong prec) noexcept + void acb_exp_pi_i(acb_t y, const acb_t z, slong prec) noexcept + void acb_exp_invexp(acb_t s, acb_t t, const acb_t z, slong prec) noexcept + void acb_expm1(acb_t res, const acb_t z, slong prec) noexcept + void acb_log(acb_t y, const acb_t z, slong prec) noexcept + void acb_log_analytic(acb_t r, const acb_t z, int analytic, slong prec) noexcept + void acb_log1p(acb_t z, const acb_t x, slong prec) noexcept + void acb_sin(acb_t s, const acb_t z, slong prec) noexcept + void acb_cos(acb_t c, const acb_t z, slong prec) noexcept + void acb_sin_cos(acb_t s, acb_t c, const acb_t z, slong prec) noexcept + void acb_tan(acb_t s, const acb_t z, slong prec) noexcept + void acb_cot(acb_t s, const acb_t z, slong prec) noexcept + void acb_sin_pi(acb_t s, const acb_t z, slong prec) noexcept + void acb_cos_pi(acb_t s, const acb_t z, slong prec) noexcept + void acb_sin_cos_pi(acb_t s, acb_t c, const acb_t z, slong prec) noexcept + void acb_tan_pi(acb_t s, const acb_t z, slong prec) noexcept + void acb_cot_pi(acb_t s, const acb_t z, slong prec) noexcept + void acb_sec(acb_t res, const acb_t z, slong prec) noexcept + void acb_csc(acb_t res, const acb_t z, slong prec) noexcept + void acb_csc_pi(acb_t res, const acb_t z, slong prec) noexcept + void acb_sinc(acb_t s, const acb_t z, slong prec) noexcept + void acb_sinc_pi(acb_t s, const acb_t z, slong prec) noexcept + void acb_asin(acb_t res, const acb_t z, slong prec) noexcept + void acb_acos(acb_t res, const acb_t z, slong prec) noexcept + void acb_atan(acb_t res, const acb_t z, slong prec) noexcept + void acb_sinh(acb_t s, const acb_t z, slong prec) noexcept + void acb_cosh(acb_t c, const acb_t z, slong prec) noexcept + void acb_sinh_cosh(acb_t s, acb_t c, const acb_t z, slong prec) noexcept + void acb_tanh(acb_t s, const acb_t z, slong prec) noexcept + void acb_coth(acb_t s, const acb_t z, slong prec) noexcept + void acb_sech(acb_t res, const acb_t z, slong prec) noexcept + void acb_csch(acb_t res, const acb_t z, slong prec) noexcept + void acb_asinh(acb_t res, const acb_t z, slong prec) noexcept + void acb_acosh(acb_t res, const acb_t z, slong prec) noexcept + void acb_atanh(acb_t res, const acb_t z, slong prec) noexcept + void acb_lambertw_asymp(acb_t res, const acb_t z, const fmpz_t k, slong L, slong M, slong prec) noexcept + int acb_lambertw_check_branch(const acb_t w, const fmpz_t k, slong prec) noexcept + void acb_lambertw_bound_deriv(mag_t res, const acb_t z, const acb_t ez1, const fmpz_t k) noexcept + void acb_lambertw(acb_t res, const acb_t z, const fmpz_t k, int flags, slong prec) noexcept + void acb_rising_ui(acb_t z, const acb_t x, ulong n, slong prec) noexcept + void acb_rising(acb_t z, const acb_t x, const acb_t n, slong prec) noexcept + void acb_gamma(acb_t y, const acb_t x, slong prec) noexcept + void acb_rgamma(acb_t y, const acb_t x, slong prec) noexcept + void acb_lgamma(acb_t y, const acb_t x, slong prec) noexcept + void acb_digamma(acb_t y, const acb_t x, slong prec) noexcept + void acb_log_sin_pi(acb_t res, const acb_t z, slong prec) noexcept + void acb_polygamma(acb_t res, const acb_t s, const acb_t z, slong prec) noexcept + void acb_barnes_g(acb_t res, const acb_t z, slong prec) noexcept + void acb_log_barnes_g(acb_t res, const acb_t z, slong prec) noexcept + void acb_zeta(acb_t z, const acb_t s, slong prec) noexcept + void acb_hurwitz_zeta(acb_t z, const acb_t s, const acb_t a, slong prec) noexcept + void acb_bernoulli_poly_ui(acb_t res, ulong n, const acb_t x, slong prec) noexcept + void acb_polylog(acb_t w, const acb_t s, const acb_t z, slong prec) noexcept + void acb_polylog_si(acb_t w, slong s, const acb_t z, slong prec) noexcept + void acb_agm1(acb_t m, const acb_t z, slong prec) noexcept + void acb_agm1_cpx(acb_ptr m, const acb_t z, slong len, slong prec) noexcept + void acb_agm(acb_t m, const acb_t x, const acb_t y, slong prec) noexcept + void acb_chebyshev_t_ui(acb_t a, ulong n, const acb_t x, slong prec) noexcept + void acb_chebyshev_u_ui(acb_t a, ulong n, const acb_t x, slong prec) noexcept + void acb_chebyshev_t2_ui(acb_t a, acb_t b, ulong n, const acb_t x, slong prec) noexcept + void acb_chebyshev_u2_ui(acb_t a, acb_t b, ulong n, const acb_t x, slong prec) noexcept + void acb_real_abs(acb_t res, const acb_t z, int analytic, slong prec) noexcept + void acb_real_sgn(acb_t res, const acb_t z, int analytic, slong prec) noexcept + void acb_real_heaviside(acb_t res, const acb_t z, int analytic, slong prec) noexcept + void acb_real_floor(acb_t res, const acb_t z, int analytic, slong prec) noexcept + void acb_real_ceil(acb_t res, const acb_t z, int analytic, slong prec) noexcept + void acb_real_max(acb_t res, const acb_t x, const acb_t y, int analytic, slong prec) noexcept + void acb_real_min(acb_t res, const acb_t x, const acb_t y, int analytic, slong prec) noexcept + void acb_real_sqrtpos(acb_t res, const acb_t z, int analytic, slong prec) noexcept + void _acb_vec_zero(acb_ptr A, slong n) noexcept + bint _acb_vec_is_zero(acb_srcptr vec, slong len) noexcept + bint _acb_vec_is_real(acb_srcptr v, slong len) noexcept + bint _acb_vec_is_finite(acb_srcptr vec, slong len) noexcept + bint _acb_vec_equal(acb_srcptr vec1, acb_srcptr vec2, slong len) noexcept + bint _acb_vec_overlaps(acb_srcptr vec1, acb_srcptr vec2, slong len) noexcept + bint _acb_vec_contains(acb_srcptr vec1, acb_srcptr vec2, slong len) noexcept + void _acb_vec_set(acb_ptr res, acb_srcptr vec, slong len) noexcept + void _acb_vec_set_round(acb_ptr res, acb_srcptr vec, slong len, slong prec) noexcept + void _acb_vec_swap(acb_ptr vec1, acb_ptr vec2, slong len) noexcept + void _acb_vec_get_real(arb_ptr re, acb_srcptr vec, slong len) noexcept + void _acb_vec_get_imag(arb_ptr im, acb_srcptr vec, slong len) noexcept + void _acb_vec_set_real_imag(acb_ptr vec, arb_srcptr re, arb_srcptr im, slong len) noexcept + void _acb_vec_neg(acb_ptr res, acb_srcptr vec, slong len) noexcept + void _acb_vec_add(acb_ptr res, acb_srcptr vec1, acb_srcptr vec2, slong len, slong prec) noexcept + void _acb_vec_sub(acb_ptr res, acb_srcptr vec1, acb_srcptr vec2, slong len, slong prec) noexcept + void _acb_vec_scalar_submul(acb_ptr res, acb_srcptr vec, slong len, const acb_t c, slong prec) noexcept + void _acb_vec_scalar_addmul(acb_ptr res, acb_srcptr vec, slong len, const acb_t c, slong prec) noexcept + void _acb_vec_scalar_mul(acb_ptr res, acb_srcptr vec, slong len, const acb_t c, slong prec) noexcept + void _acb_vec_scalar_mul_ui(acb_ptr res, acb_srcptr vec, slong len, ulong c, slong prec) noexcept + void _acb_vec_scalar_mul_2exp_si(acb_ptr res, acb_srcptr vec, slong len, slong c) noexcept + void _acb_vec_scalar_mul_onei(acb_ptr res, acb_srcptr vec, slong len) noexcept + void _acb_vec_scalar_div_ui(acb_ptr res, acb_srcptr vec, slong len, ulong c, slong prec) noexcept + void _acb_vec_scalar_div(acb_ptr res, acb_srcptr vec, slong len, const acb_t c, slong prec) noexcept + void _acb_vec_scalar_mul_arb(acb_ptr res, acb_srcptr vec, slong len, const arb_t c, slong prec) noexcept + void _acb_vec_scalar_div_arb(acb_ptr res, acb_srcptr vec, slong len, const arb_t c, slong prec) noexcept + void _acb_vec_scalar_mul_fmpz(acb_ptr res, acb_srcptr vec, slong len, const fmpz_t c, slong prec) noexcept + void _acb_vec_scalar_div_fmpz(acb_ptr res, acb_srcptr vec, slong len, const fmpz_t c, slong prec) noexcept + void _acb_vec_sqr(acb_ptr res, acb_srcptr vec, slong len, slong prec) noexcept + slong _acb_vec_bits(acb_srcptr vec, slong len) noexcept + void _acb_vec_set_powers(acb_ptr xs, const acb_t x, slong len, slong prec) noexcept + void _acb_vec_unit_roots(acb_ptr z, slong order, slong len, slong prec) noexcept + void _acb_vec_add_error_arf_vec(acb_ptr res, arf_srcptr err, slong len) noexcept + void _acb_vec_add_error_mag_vec(acb_ptr res, mag_srcptr err, slong len) noexcept + void _acb_vec_indeterminate(acb_ptr vec, slong len) noexcept + void _acb_vec_trim(acb_ptr res, acb_srcptr vec, slong len) noexcept + int _acb_vec_get_unique_fmpz_vec(fmpz * res, acb_srcptr vec, slong len) noexcept + void _acb_vec_sort_pretty(acb_ptr vec, slong len) noexcept + void _acb_vec_printd(acb_srcptr vec, slong len, slong digits) noexcept + void _acb_vec_printn(acb_srcptr vec, slong len, slong digits, ulong flags) noexcept + +from .acb_macros cimport * diff --git a/src/sage/libs/flint/acb_calc.pxd b/src/sage/libs/flint/acb_calc.pxd new file mode 100644 index 00000000000..45e6a27db09 --- /dev/null +++ b/src/sage/libs/flint/acb_calc.pxd @@ -0,0 +1,20 @@ +# distutils: libraries = flint +# distutils: depends = flint/acb_calc.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + int acb_calc_integrate(acb_t res, acb_calc_func_t func, void * param, const acb_t a, const acb_t b, slong rel_goal, const mag_t abs_tol, const acb_calc_integrate_opt_t options, slong prec) noexcept + void acb_calc_integrate_opt_init(acb_calc_integrate_opt_t options) noexcept + int acb_calc_integrate_gl_auto_deg(acb_t res, slong * num_eval, acb_calc_func_t func, void * param, const acb_t a, const acb_t b, const mag_t tol, slong deg_limit, int flags, slong prec) noexcept + void acb_calc_cauchy_bound(arb_t bound, acb_calc_func_t func, void * param, const acb_t x, const arb_t radius, slong maxdepth, slong prec) noexcept + int acb_calc_integrate_taylor(acb_t res, acb_calc_func_t func, void * param, const acb_t a, const acb_t b, const arf_t inner_radius, const arf_t outer_radius, slong accuracy_goal, slong prec) noexcept diff --git a/src/sage/libs/flint/acb_dft.pxd b/src/sage/libs/flint/acb_dft.pxd new file mode 100644 index 00000000000..08542aabeca --- /dev/null +++ b/src/sage/libs/flint/acb_dft.pxd @@ -0,0 +1,49 @@ +# distutils: libraries = flint +# distutils: depends = flint/acb_dft.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void acb_dft(acb_ptr w, acb_srcptr v, slong n, slong prec) noexcept + void acb_dft_inverse(acb_ptr w, acb_srcptr v, slong n, slong prec) noexcept + void acb_dft_precomp_init(acb_dft_pre_t pre, slong len, slong prec) noexcept + void acb_dft_precomp_clear(acb_dft_pre_t pre) noexcept + void acb_dft_precomp(acb_ptr w, acb_srcptr v, const acb_dft_pre_t pre, slong prec) noexcept + void acb_dft_inverse_precomp(acb_ptr w, acb_srcptr v, const acb_dft_pre_t pre, slong prec) noexcept + void acb_dirichlet_dft_prod(acb_ptr w, acb_srcptr v, slong * cyc, slong num, slong prec) noexcept + void acb_dft_prod_init(acb_dft_prod_t t, slong * cyc, slong num, slong prec) noexcept + void acb_dft_prod_clear(acb_dft_prod_t t) noexcept + void acb_dirichlet_dft_prod_precomp(acb_ptr w, acb_srcptr v, const acb_dft_prod_t prod, slong prec) noexcept + void acb_dft_convol_naive(acb_ptr w, acb_srcptr f, acb_srcptr g, slong len, slong prec) noexcept + void acb_dft_convol_rad2(acb_ptr w, acb_srcptr f, acb_srcptr g, slong len, slong prec) noexcept + void acb_dft_convol(acb_ptr w, acb_srcptr f, acb_srcptr g, slong len, slong prec) noexcept + void acb_dft_naive(acb_ptr w, acb_srcptr v, slong n, slong prec) noexcept + void acb_dft_naive_init(acb_dft_naive_t t, slong len, slong prec) noexcept + void acb_dft_naive_clear(acb_dft_naive_t t) noexcept + void acb_dft_naive_precomp(acb_ptr w, acb_srcptr v, const acb_dft_naive_t t, slong prec) noexcept + void acb_dft_crt(acb_ptr w, acb_srcptr v, slong n, slong prec) noexcept + void acb_dft_crt_init(acb_dft_crt_t t, slong len, slong prec) noexcept + void acb_dft_crt_clear(acb_dft_crt_t t) noexcept + void acb_dft_crt_precomp(acb_ptr w, acb_srcptr v, const acb_dft_crt_t t, slong prec) noexcept + void acb_dft_cyc(acb_ptr w, acb_srcptr v, slong n, slong prec) noexcept + void acb_dft_cyc_init(acb_dft_cyc_t t, slong len, slong prec) noexcept + void acb_dft_cyc_clear(acb_dft_cyc_t t) noexcept + void acb_dft_cyc_precomp(acb_ptr w, acb_srcptr v, const acb_dft_cyc_t t, slong prec) noexcept + void acb_dft_rad2(acb_ptr w, acb_srcptr v, int e, slong prec) noexcept + void acb_dft_inverse_rad2(acb_ptr w, acb_srcptr v, int e, slong prec) noexcept + void acb_dft_rad2_init(acb_dft_rad2_t t, int e, slong prec) noexcept + void acb_dft_rad2_clear(acb_dft_rad2_t t) noexcept + void acb_dft_rad2_precomp(acb_ptr w, acb_srcptr v, const acb_dft_rad2_t t, slong prec) noexcept + void acb_dft_bluestein(acb_ptr w, acb_srcptr v, slong n, slong prec) noexcept + void acb_dft_bluestein_init(acb_dft_bluestein_t t, slong len, slong prec) noexcept + void acb_dft_bluestein_clear(acb_dft_bluestein_t t) noexcept + void acb_dft_bluestein_precomp(acb_ptr w, acb_srcptr v, const acb_dft_bluestein_t t, slong prec) noexcept diff --git a/src/sage/libs/flint/acb_dirichlet.pxd b/src/sage/libs/flint/acb_dirichlet.pxd new file mode 100644 index 00000000000..a76a8711c84 --- /dev/null +++ b/src/sage/libs/flint/acb_dirichlet.pxd @@ -0,0 +1,110 @@ +# distutils: libraries = flint +# distutils: depends = flint/acb_dirichlet.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void acb_dirichlet_roots_init(acb_dirichlet_roots_t roots, ulong n, slong num, slong prec) noexcept + void acb_dirichlet_roots_clear(acb_dirichlet_roots_t roots) noexcept + void acb_dirichlet_root(acb_t res, const acb_dirichlet_roots_t roots, ulong k, slong prec) noexcept + void acb_dirichlet_powsum_term(acb_ptr res, arb_t log_prev, ulong * prev, const acb_t s, ulong k, int integer, int critical_line, slong len, slong prec) noexcept + void acb_dirichlet_powsum_sieved(acb_ptr res, const acb_t s, ulong n, slong len, slong prec) noexcept + void acb_dirichlet_powsum_smooth(acb_ptr res, const acb_t s, ulong n, slong len, slong prec) noexcept + void acb_dirichlet_zeta(acb_t res, const acb_t s, slong prec) noexcept + void acb_dirichlet_zeta_jet(acb_t res, const acb_t s, int deflate, slong len, slong prec) noexcept + void acb_dirichlet_zeta_bound(mag_t res, const acb_t s) noexcept + void acb_dirichlet_zeta_deriv_bound(mag_t der1, mag_t der2, const acb_t s) noexcept + void acb_dirichlet_eta(acb_t res, const acb_t s, slong prec) noexcept + void acb_dirichlet_xi(acb_t res, const acb_t s, slong prec) noexcept + void acb_dirichlet_zeta_rs_f_coeffs(acb_ptr f, const arb_t p, slong n, slong prec) noexcept + void acb_dirichlet_zeta_rs_d_coeffs(arb_ptr d, const arb_t sigma, slong k, slong prec) noexcept + void acb_dirichlet_zeta_rs_bound(mag_t err, const acb_t s, slong K) noexcept + void acb_dirichlet_zeta_rs_r(acb_t res, const acb_t s, slong K, slong prec) noexcept + void acb_dirichlet_zeta_rs(acb_t res, const acb_t s, slong K, slong prec) noexcept + void acb_dirichlet_zeta_jet_rs(acb_ptr res, const acb_t s, slong len, slong prec) noexcept + void acb_dirichlet_hurwitz(acb_t res, const acb_t s, const acb_t a, slong prec) noexcept + void acb_dirichlet_hurwitz_precomp_init(acb_dirichlet_hurwitz_precomp_t pre, const acb_t s, int deflate, slong A, slong K, slong N, slong prec) noexcept + void acb_dirichlet_hurwitz_precomp_init_num(acb_dirichlet_hurwitz_precomp_t pre, const acb_t s, int deflate, double num_eval, slong prec) noexcept + void acb_dirichlet_hurwitz_precomp_clear(acb_dirichlet_hurwitz_precomp_t pre) noexcept + void acb_dirichlet_hurwitz_precomp_choose_param(ulong * A, ulong * K, ulong * N, const acb_t s, double num_eval, slong prec) noexcept + void acb_dirichlet_hurwitz_precomp_bound(mag_t res, const acb_t s, slong A, slong K, slong N) noexcept + void acb_dirichlet_hurwitz_precomp_eval(acb_t res, const acb_dirichlet_hurwitz_precomp_t pre, ulong p, ulong q, slong prec) noexcept + void acb_dirichlet_lerch_phi_integral(acb_t res, const acb_t z, const acb_t s, const acb_t a, slong prec) noexcept + void acb_dirichlet_lerch_phi_direct(acb_t res, const acb_t z, const acb_t s, const acb_t a, slong prec) noexcept + void acb_dirichlet_lerch_phi(acb_t res, const acb_t z, const acb_t s, const acb_t a, slong prec) noexcept + void acb_dirichlet_stieltjes(acb_t res, const fmpz_t n, const acb_t a, slong prec) noexcept + void acb_dirichlet_chi(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, ulong n, slong prec) noexcept + void acb_dirichlet_chi_vec(acb_ptr v, const dirichlet_group_t G, const dirichlet_char_t chi, slong nv, slong prec) noexcept + void acb_dirichlet_pairing(acb_t res, const dirichlet_group_t G, ulong m, ulong n, slong prec) noexcept + void acb_dirichlet_pairing_char(acb_t res, const dirichlet_group_t G, const dirichlet_char_t a, const dirichlet_char_t b, slong prec) noexcept + void acb_dirichlet_gauss_sum_naive(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) noexcept + void acb_dirichlet_gauss_sum_factor(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) noexcept + void acb_dirichlet_gauss_sum_order2(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) noexcept + void acb_dirichlet_gauss_sum_theta(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) noexcept + void acb_dirichlet_gauss_sum(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) noexcept + void acb_dirichlet_jacobi_sum_naive(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi1, const dirichlet_char_t chi2, slong prec) noexcept + void acb_dirichlet_jacobi_sum_factor(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi1, const dirichlet_char_t chi2, slong prec) noexcept + void acb_dirichlet_jacobi_sum_gauss(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi1, const dirichlet_char_t chi2, slong prec) noexcept + void acb_dirichlet_jacobi_sum(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi1, const dirichlet_char_t chi2, slong prec) noexcept + void acb_dirichlet_jacobi_sum_ui(acb_t res, const dirichlet_group_t G, ulong a, ulong b, slong prec) noexcept + void acb_dirichlet_chi_theta_arb(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, const arb_t t, slong prec) noexcept + void acb_dirichlet_ui_theta_arb(acb_t res, const dirichlet_group_t G, ulong a, const arb_t t, slong prec) noexcept + ulong acb_dirichlet_theta_length(ulong q, const arb_t t, slong prec) noexcept + void acb_dirichlet_qseries_arb_powers_naive(acb_t res, const arb_t x, int p, const ulong * a, const acb_dirichlet_roots_t z, slong len, slong prec) noexcept + void acb_dirichlet_qseries_arb_powers_smallorder(acb_t res, const arb_t x, int p, const ulong * a, const acb_dirichlet_roots_t z, slong len, slong prec) noexcept + void acb_dirichlet_dft_conrey(acb_ptr w, acb_srcptr v, const dirichlet_group_t G, slong prec) noexcept + void acb_dirichlet_dft(acb_ptr w, acb_srcptr v, const dirichlet_group_t G, slong prec) noexcept + void acb_dirichlet_root_number_theta(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) noexcept + void acb_dirichlet_root_number(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) noexcept + void acb_dirichlet_l_hurwitz(acb_t res, const acb_t s, const acb_dirichlet_hurwitz_precomp_t precomp, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) noexcept + void acb_dirichlet_l_euler_product(acb_t res, const acb_t s, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) noexcept + void _acb_dirichlet_euler_product_real_ui(arb_t res, ulong s, const signed char * chi, int mod, int reciprocal, slong prec) noexcept + void acb_dirichlet_l(acb_t res, const acb_t s, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) noexcept + void acb_dirichlet_l_fmpq(acb_t res, const fmpq_t s, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) noexcept + void acb_dirichlet_l_fmpq_afe(acb_t res, const fmpq_t s, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) noexcept + void acb_dirichlet_l_vec_hurwitz(acb_ptr res, const acb_t s, const acb_dirichlet_hurwitz_precomp_t precomp, const dirichlet_group_t G, slong prec) noexcept + void acb_dirichlet_l_jet(acb_ptr res, const acb_t s, const dirichlet_group_t G, const dirichlet_char_t chi, int deflate, slong len, slong prec) noexcept + void _acb_dirichlet_l_series(acb_ptr res, acb_srcptr s, slong slen, const dirichlet_group_t G, const dirichlet_char_t chi, int deflate, slong len, slong prec) noexcept + void acb_dirichlet_l_series(acb_poly_t res, const acb_poly_t s, const dirichlet_group_t G, const dirichlet_char_t chi, int deflate, slong len, slong prec) noexcept + void acb_dirichlet_hardy_theta(acb_ptr res, const acb_t t, const dirichlet_group_t G, const dirichlet_char_t chi, slong len, slong prec) noexcept + void acb_dirichlet_hardy_z(acb_ptr res, const acb_t t, const dirichlet_group_t G, const dirichlet_char_t chi, slong len, slong prec) noexcept + void _acb_dirichlet_hardy_theta_series(acb_ptr res, acb_srcptr t, slong tlen, const dirichlet_group_t G, const dirichlet_char_t chi, slong len, slong prec) noexcept + void acb_dirichlet_hardy_theta_series(acb_poly_t res, const acb_poly_t t, const dirichlet_group_t G, const dirichlet_char_t chi, slong len, slong prec) noexcept + void _acb_dirichlet_hardy_z_series(acb_ptr res, acb_srcptr t, slong tlen, const dirichlet_group_t G, const dirichlet_char_t chi, slong len, slong prec) noexcept + void acb_dirichlet_hardy_z_series(acb_poly_t res, const acb_poly_t t, const dirichlet_group_t G, const dirichlet_char_t chi, slong len, slong prec) noexcept + void acb_dirichlet_gram_point(arb_t res, const fmpz_t n, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) noexcept + ulong acb_dirichlet_turing_method_bound(const fmpz_t p) noexcept + int _acb_dirichlet_definite_hardy_z(arb_t res, const arf_t t, slong * pprec) noexcept + void _acb_dirichlet_isolate_gram_hardy_z_zero(arf_t a, arf_t b, const fmpz_t n) noexcept + void _acb_dirichlet_isolate_rosser_hardy_z_zero(arf_t a, arf_t b, const fmpz_t n) noexcept + void _acb_dirichlet_isolate_turing_hardy_z_zero(arf_t a, arf_t b, const fmpz_t n) noexcept + void acb_dirichlet_isolate_hardy_z_zero(arf_t a, arf_t b, const fmpz_t n) noexcept + void _acb_dirichlet_refine_hardy_z_zero(arb_t res, const arf_t a, const arf_t b, slong prec) noexcept + void acb_dirichlet_hardy_z_zero(arb_t res, const fmpz_t n, slong prec) noexcept + void acb_dirichlet_hardy_z_zeros(arb_ptr res, const fmpz_t n, slong len, slong prec) noexcept + void acb_dirichlet_zeta_zero(acb_t res, const fmpz_t n, slong prec) noexcept + void acb_dirichlet_zeta_zeros(acb_ptr res, const fmpz_t n, slong len, slong prec) noexcept + void _acb_dirichlet_exact_zeta_nzeros(fmpz_t res, const arf_t t) noexcept + void acb_dirichlet_zeta_nzeros(arb_t res, const arb_t t, slong prec) noexcept + void acb_dirichlet_backlund_s(arb_t res, const arb_t t, slong prec) noexcept + void acb_dirichlet_backlund_s_bound(mag_t res, const arb_t t) noexcept + void acb_dirichlet_zeta_nzeros_gram(fmpz_t res, const fmpz_t n) noexcept + slong acb_dirichlet_backlund_s_gram(const fmpz_t n) noexcept + void acb_dirichlet_platt_scaled_lambda(arb_t res, const arb_t t, slong prec) noexcept + void acb_dirichlet_platt_scaled_lambda_vec(arb_ptr res, const fmpz_t T, slong A, slong B, slong prec) noexcept + void acb_dirichlet_platt_multieval(arb_ptr res, const fmpz_t T, slong A, slong B, const arb_t h, const fmpz_t J, slong K, slong sigma, slong prec) noexcept + void acb_dirichlet_platt_multieval_threaded(arb_ptr res, const fmpz_t T, slong A, slong B, const arb_t h, const fmpz_t J, slong K, slong sigma, slong prec) noexcept + void acb_dirichlet_platt_ws_interpolation(arb_t res, arf_t deriv, const arb_t t0, arb_srcptr p, const fmpz_t T, slong A, slong B, slong Ns_max, const arb_t H, slong sigma, slong prec) noexcept + slong _acb_dirichlet_platt_local_hardy_z_zeros(arb_ptr res, const fmpz_t n, slong len, const fmpz_t T, slong A, slong B, const arb_t h, const fmpz_t J, slong K, slong sigma_grid, slong Ns_max, const arb_t H, slong sigma_interp, slong prec) noexcept + slong acb_dirichlet_platt_local_hardy_z_zeros(arb_ptr res, const fmpz_t n, slong len, slong prec) noexcept + slong acb_dirichlet_platt_hardy_z_zeros(arb_ptr res, const fmpz_t n, slong len, slong prec) noexcept + slong acb_dirichlet_platt_zeta_zeros(acb_ptr res, const fmpz_t n, slong len, slong prec) noexcept diff --git a/src/sage/libs/flint/acb_elliptic.pxd b/src/sage/libs/flint/acb_elliptic.pxd new file mode 100644 index 00000000000..cfeb04feaf3 --- /dev/null +++ b/src/sage/libs/flint/acb_elliptic.pxd @@ -0,0 +1,40 @@ +# distutils: libraries = flint +# distutils: depends = flint/acb_elliptic.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void acb_elliptic_k(acb_t res, const acb_t m, slong prec) noexcept + void acb_elliptic_k_jet(acb_ptr res, const acb_t m, slong len, slong prec) noexcept + void _acb_elliptic_k_series(acb_ptr res, acb_srcptr m, slong mlen, slong len, slong prec) noexcept + void acb_elliptic_k_series(acb_poly_t res, const acb_poly_t m, slong len, slong prec) noexcept + void acb_elliptic_e(acb_t res, const acb_t m, slong prec) noexcept + void acb_elliptic_pi(acb_t res, const acb_t n, const acb_t m, slong prec) noexcept + void acb_elliptic_f(acb_t res, const acb_t phi, const acb_t m, int pi, slong prec) noexcept + void acb_elliptic_e_inc(acb_t res, const acb_t phi, const acb_t m, int pi, slong prec) noexcept + void acb_elliptic_pi_inc(acb_t res, const acb_t n, const acb_t phi, const acb_t m, int pi, slong prec) noexcept + void acb_elliptic_rf(acb_t res, const acb_t x, const acb_t y, const acb_t z, int flags, slong prec) noexcept + void acb_elliptic_rg(acb_t res, const acb_t x, const acb_t y, const acb_t z, int flags, slong prec) noexcept + void acb_elliptic_rj(acb_t res, const acb_t x, const acb_t y, const acb_t z, const acb_t p, int flags, slong prec) noexcept + void acb_elliptic_rj_carlson(acb_t res, const acb_t x, const acb_t y, const acb_t z, const acb_t p, int flags, slong prec) noexcept + void acb_elliptic_rj_integration(acb_t res, const acb_t x, const acb_t y, const acb_t z, const acb_t p, int flags, slong prec) noexcept + void acb_elliptic_rc1(acb_t res, const acb_t x, slong prec) noexcept + void acb_elliptic_p(acb_t res, const acb_t z, const acb_t tau, slong prec) noexcept + void acb_elliptic_p_prime(acb_t res, const acb_t z, const acb_t tau, slong prec) noexcept + void acb_elliptic_p_jet(acb_ptr res, const acb_t z, const acb_t tau, slong len, slong prec) noexcept + void _acb_elliptic_p_series(acb_ptr res, acb_srcptr z, slong zlen, const acb_t tau, slong len, slong prec) noexcept + void acb_elliptic_p_series(acb_poly_t res, const acb_poly_t z, const acb_t tau, slong len, slong prec) noexcept + void acb_elliptic_invariants(acb_t g2, acb_t g3, const acb_t tau, slong prec) noexcept + void acb_elliptic_roots(acb_t e1, acb_t e2, acb_t e3, const acb_t tau, slong prec) noexcept + void acb_elliptic_inv_p(acb_t res, const acb_t z, const acb_t tau, slong prec) noexcept + void acb_elliptic_zeta(acb_t res, const acb_t z, const acb_t tau, slong prec) noexcept + void acb_elliptic_sigma(acb_t res, const acb_t z, const acb_t tau, slong prec) noexcept diff --git a/src/sage/libs/flint/acb_hypgeom.pxd b/src/sage/libs/flint/acb_hypgeom.pxd new file mode 100644 index 00000000000..4b8d8664e87 --- /dev/null +++ b/src/sage/libs/flint/acb_hypgeom.pxd @@ -0,0 +1,167 @@ +# distutils: libraries = flint +# distutils: depends = flint/acb_hypgeom.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void acb_hypgeom_rising_ui_forward(acb_t res, const acb_t x, ulong n, slong prec) noexcept + void acb_hypgeom_rising_ui_bs(acb_t res, const acb_t x, ulong n, slong prec) noexcept + void acb_hypgeom_rising_ui_rs(acb_t res, const acb_t x, ulong n, ulong m, slong prec) noexcept + void acb_hypgeom_rising_ui_rec(acb_t res, const acb_t x, ulong n, slong prec) noexcept + void acb_hypgeom_rising_ui(acb_t res, const acb_t x, ulong n, slong prec) noexcept + void acb_hypgeom_rising(acb_t res, const acb_t x, const acb_t n, slong prec) noexcept + void acb_hypgeom_rising_ui_jet_powsum(acb_ptr res, const acb_t x, ulong n, slong len, slong prec) noexcept + void acb_hypgeom_rising_ui_jet_bs(acb_ptr res, const acb_t x, ulong n, slong len, slong prec) noexcept + void acb_hypgeom_rising_ui_jet_rs(acb_ptr res, const acb_t x, ulong n, ulong m, slong len, slong prec) noexcept + void acb_hypgeom_rising_ui_jet(acb_ptr res, const acb_t x, ulong n, slong len, slong prec) noexcept + void acb_hypgeom_log_rising_ui(acb_ptr res, const acb_t x, ulong n, slong prec) noexcept + void acb_hypgeom_log_rising_ui_jet(acb_ptr res, const acb_t x, ulong n, slong len, slong prec) noexcept + void acb_hypgeom_gamma_stirling_sum_horner(acb_t s, const acb_t z, slong N, slong prec) noexcept + void acb_hypgeom_gamma_stirling_sum_improved(acb_t s, const acb_t z, slong N, slong K, slong prec) noexcept + void acb_hypgeom_gamma_stirling(acb_t res, const acb_t x, int reciprocal, slong prec) noexcept + int acb_hypgeom_gamma_taylor(acb_t res, const acb_t x, int reciprocal, slong prec) noexcept + void acb_hypgeom_gamma(acb_t res, const acb_t x, slong prec) noexcept + void acb_hypgeom_rgamma(acb_t res, const acb_t x, slong prec) noexcept + void acb_hypgeom_lgamma(acb_t res, const acb_t x, slong prec) noexcept + void acb_hypgeom_pfq_bound_factor(mag_t C, acb_srcptr a, slong p, acb_srcptr b, slong q, const acb_t z, ulong n) noexcept + slong acb_hypgeom_pfq_choose_n(acb_srcptr a, slong p, acb_srcptr b, slong q, const acb_t z, slong prec) noexcept + void acb_hypgeom_pfq_sum_forward(acb_t s, acb_t t, acb_srcptr a, slong p, acb_srcptr b, slong q, const acb_t z, slong n, slong prec) noexcept + void acb_hypgeom_pfq_sum_rs(acb_t s, acb_t t, acb_srcptr a, slong p, acb_srcptr b, slong q, const acb_t z, slong n, slong prec) noexcept + void acb_hypgeom_pfq_sum_bs(acb_t s, acb_t t, acb_srcptr a, slong p, acb_srcptr b, slong q, const acb_t z, slong n, slong prec) noexcept + void acb_hypgeom_pfq_sum_fme(acb_t s, acb_t t, acb_srcptr a, slong p, acb_srcptr b, slong q, const acb_t z, slong n, slong prec) noexcept + void acb_hypgeom_pfq_sum(acb_t s, acb_t t, acb_srcptr a, slong p, acb_srcptr b, slong q, const acb_t z, slong n, slong prec) noexcept + void acb_hypgeom_pfq_sum_bs_invz(acb_t s, acb_t t, acb_srcptr a, slong p, acb_srcptr b, slong q, const acb_t w, slong n, slong prec) noexcept + void acb_hypgeom_pfq_sum_invz(acb_t s, acb_t t, acb_srcptr a, slong p, acb_srcptr b, slong q, const acb_t z, const acb_t w, slong n, slong prec) noexcept + void acb_hypgeom_pfq_direct(acb_t res, acb_srcptr a, slong p, acb_srcptr b, slong q, const acb_t z, slong n, slong prec) noexcept + void acb_hypgeom_pfq_series_sum_forward(acb_poly_t s, acb_poly_t t, const acb_poly_struct * a, slong p, const acb_poly_struct * b, slong q, const acb_poly_t z, int regularized, slong n, slong len, slong prec) noexcept + void acb_hypgeom_pfq_series_sum_bs(acb_poly_t s, acb_poly_t t, const acb_poly_struct * a, slong p, const acb_poly_struct * b, slong q, const acb_poly_t z, int regularized, slong n, slong len, slong prec) noexcept + void acb_hypgeom_pfq_series_sum_rs(acb_poly_t s, acb_poly_t t, const acb_poly_struct * a, slong p, const acb_poly_struct * b, slong q, const acb_poly_t z, int regularized, slong n, slong len, slong prec) noexcept + void acb_hypgeom_pfq_series_sum(acb_poly_t s, acb_poly_t t, const acb_poly_struct * a, slong p, const acb_poly_struct * b, slong q, const acb_poly_t z, int regularized, slong n, slong len, slong prec) noexcept + void acb_hypgeom_pfq_series_direct(acb_poly_t res, const acb_poly_struct * a, slong p, const acb_poly_struct * b, slong q, const acb_poly_t z, int regularized, slong n, slong len, slong prec) noexcept + void acb_hypgeom_u_asymp(acb_t res, const acb_t a, const acb_t b, const acb_t z, slong n, slong prec) noexcept + int acb_hypgeom_u_use_asymp(const acb_t z, slong prec) noexcept + void acb_hypgeom_pfq(acb_t res, acb_srcptr a, slong p, acb_srcptr b, slong q, const acb_t z, int regularized, slong prec) noexcept + void acb_hypgeom_u_1f1_series(acb_poly_t res, const acb_poly_t a, const acb_poly_t b, const acb_poly_t z, slong len, slong prec) noexcept + void acb_hypgeom_u_1f1(acb_t res, const acb_t a, const acb_t b, const acb_t z, slong prec) noexcept + void acb_hypgeom_u(acb_t res, const acb_t a, const acb_t b, const acb_t z, slong prec) noexcept + void acb_hypgeom_m_asymp(acb_t res, const acb_t a, const acb_t b, const acb_t z, int regularized, slong prec) noexcept + void acb_hypgeom_m_1f1(acb_t res, const acb_t a, const acb_t b, const acb_t z, int regularized, slong prec) noexcept + void acb_hypgeom_m(acb_t res, const acb_t a, const acb_t b, const acb_t z, int regularized, slong prec) noexcept + void acb_hypgeom_1f1(acb_t res, const acb_t a, const acb_t b, const acb_t z, int regularized, slong prec) noexcept + void acb_hypgeom_0f1_asymp(acb_t res, const acb_t a, const acb_t z, int regularized, slong prec) noexcept + void acb_hypgeom_0f1_direct(acb_t res, const acb_t a, const acb_t z, int regularized, slong prec) noexcept + void acb_hypgeom_0f1(acb_t res, const acb_t a, const acb_t z, int regularized, slong prec) noexcept + void acb_hypgeom_erf_propagated_error(mag_t re, mag_t im, const acb_t z) noexcept + void acb_hypgeom_erf_1f1a(acb_t res, const acb_t z, slong prec) noexcept + void acb_hypgeom_erf_1f1b(acb_t res, const acb_t z, slong prec) noexcept + void acb_hypgeom_erf_asymp(acb_t res, const acb_t z, int complementary, slong prec, slong prec2) noexcept + void acb_hypgeom_erf(acb_t res, const acb_t z, slong prec) noexcept + void _acb_hypgeom_erf_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) noexcept + void acb_hypgeom_erf_series(acb_poly_t res, const acb_poly_t z, slong len, slong prec) noexcept + void acb_hypgeom_erfc(acb_t res, const acb_t z, slong prec) noexcept + void _acb_hypgeom_erfc_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) noexcept + void acb_hypgeom_erfc_series(acb_poly_t res, const acb_poly_t z, slong len, slong prec) noexcept + void acb_hypgeom_erfi(acb_t res, const acb_t z, slong prec) noexcept + void _acb_hypgeom_erfi_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) noexcept + void acb_hypgeom_erfi_series(acb_poly_t res, const acb_poly_t z, slong len, slong prec) noexcept + void acb_hypgeom_fresnel(acb_t res1, acb_t res2, const acb_t z, int normalized, slong prec) noexcept + void _acb_hypgeom_fresnel_series(acb_ptr res1, acb_ptr res2, acb_srcptr z, slong zlen, int normalized, slong len, slong prec) noexcept + void acb_hypgeom_fresnel_series(acb_poly_t res1, acb_poly_t res2, const acb_poly_t z, int normalized, slong len, slong prec) noexcept + void acb_hypgeom_bessel_j_asymp(acb_t res, const acb_t nu, const acb_t z, slong prec) noexcept + void acb_hypgeom_bessel_j_0f1(acb_t res, const acb_t nu, const acb_t z, slong prec) noexcept + void acb_hypgeom_bessel_j(acb_t res, const acb_t nu, const acb_t z, slong prec) noexcept + void acb_hypgeom_bessel_y(acb_t res, const acb_t nu, const acb_t z, slong prec) noexcept + void acb_hypgeom_bessel_jy(acb_t res1, acb_t res2, const acb_t nu, const acb_t z, slong prec) noexcept + void acb_hypgeom_bessel_i_asymp(acb_t res, const acb_t nu, const acb_t z, int scaled, slong prec) noexcept + void acb_hypgeom_bessel_i_0f1(acb_t res, const acb_t nu, const acb_t z, int scaled, slong prec) noexcept + void acb_hypgeom_bessel_i(acb_t res, const acb_t nu, const acb_t z, slong prec) noexcept + void acb_hypgeom_bessel_i_scaled(acb_t res, const acb_t nu, const acb_t z, slong prec) noexcept + void acb_hypgeom_bessel_k_asymp(acb_t res, const acb_t nu, const acb_t z, int scaled, slong prec) noexcept + void acb_hypgeom_bessel_k_0f1_series(acb_poly_t res, const acb_poly_t nu, const acb_poly_t z, int scaled, slong len, slong prec) noexcept + void acb_hypgeom_bessel_k_0f1(acb_t res, const acb_t nu, const acb_t z, int scaled, slong prec) noexcept + void acb_hypgeom_bessel_k(acb_t res, const acb_t nu, const acb_t z, slong prec) noexcept + void acb_hypgeom_bessel_k_scaled(acb_t res, const acb_t nu, const acb_t z, slong prec) noexcept + void acb_hypgeom_airy_direct(acb_t ai, acb_t ai_prime, acb_t bi, acb_t bi_prime, const acb_t z, slong n, slong prec) noexcept + void acb_hypgeom_airy_asymp(acb_t ai, acb_t ai_prime, acb_t bi, acb_t bi_prime, const acb_t z, slong n, slong prec) noexcept + void acb_hypgeom_airy_bound(mag_t ai, mag_t ai_prime, mag_t bi, mag_t bi_prime, const acb_t z) noexcept + void acb_hypgeom_airy(acb_t ai, acb_t ai_prime, acb_t bi, acb_t bi_prime, const acb_t z, slong prec) noexcept + void acb_hypgeom_airy_jet(acb_ptr ai, acb_ptr bi, const acb_t z, slong len, slong prec) noexcept + void _acb_hypgeom_airy_series(acb_ptr ai, acb_ptr ai_prime, acb_ptr bi, acb_ptr bi_prime, acb_srcptr z, slong zlen, slong len, slong prec) noexcept + void acb_hypgeom_airy_series(acb_poly_t ai, acb_poly_t ai_prime, acb_poly_t bi, acb_poly_t bi_prime, const acb_poly_t z, slong len, slong prec) noexcept + void acb_hypgeom_coulomb(acb_t F, acb_t G, acb_t Hpos, acb_t Hneg, const acb_t l, const acb_t eta, const acb_t z, slong prec) noexcept + void acb_hypgeom_coulomb_jet(acb_ptr F, acb_ptr G, acb_ptr Hpos, acb_ptr Hneg, const acb_t l, const acb_t eta, const acb_t z, slong len, slong prec) noexcept + void _acb_hypgeom_coulomb_series(acb_ptr F, acb_ptr G, acb_ptr Hpos, acb_ptr Hneg, const acb_t l, const acb_t eta, acb_srcptr z, slong zlen, slong len, slong prec) noexcept + void acb_hypgeom_coulomb_series(acb_poly_t F, acb_poly_t G, acb_poly_t Hpos, acb_poly_t Hneg, const acb_t l, const acb_t eta, const acb_poly_t z, slong len, slong prec) noexcept + void acb_hypgeom_gamma_upper_asymp(acb_t res, const acb_t s, const acb_t z, int regularized, slong prec) noexcept + void acb_hypgeom_gamma_upper_1f1a(acb_t res, const acb_t s, const acb_t z, int regularized, slong prec) noexcept + void acb_hypgeom_gamma_upper_1f1b(acb_t res, const acb_t s, const acb_t z, int regularized, slong prec) noexcept + void acb_hypgeom_gamma_upper_singular(acb_t res, slong s, const acb_t z, int regularized, slong prec) noexcept + void acb_hypgeom_gamma_upper(acb_t res, const acb_t s, const acb_t z, int regularized, slong prec) noexcept + void _acb_hypgeom_gamma_upper_series(acb_ptr res, const acb_t s, acb_srcptr z, slong zlen, int regularized, slong n, slong prec) noexcept + void acb_hypgeom_gamma_upper_series(acb_poly_t res, const acb_t s, const acb_poly_t z, int regularized, slong n, slong prec) noexcept + void acb_hypgeom_gamma_lower(acb_t res, const acb_t s, const acb_t z, int regularized, slong prec) noexcept + void _acb_hypgeom_gamma_lower_series(acb_ptr res, const acb_t s, acb_srcptr z, slong zlen, int regularized, slong n, slong prec) noexcept + void acb_hypgeom_gamma_lower_series(acb_poly_t res, const acb_t s, const acb_poly_t z, int regularized, slong n, slong prec) noexcept + void acb_hypgeom_beta_lower(acb_t res, const acb_t a, const acb_t b, const acb_t z, int regularized, slong prec) noexcept + void _acb_hypgeom_beta_lower_series(acb_ptr res, const acb_t a, const acb_t b, acb_srcptr z, slong zlen, int regularized, slong n, slong prec) noexcept + void acb_hypgeom_beta_lower_series(acb_poly_t res, const acb_t a, const acb_t b, const acb_poly_t z, int regularized, slong n, slong prec) noexcept + void acb_hypgeom_expint(acb_t res, const acb_t s, const acb_t z, slong prec) noexcept + void acb_hypgeom_ei_asymp(acb_t res, const acb_t z, slong prec) noexcept + void acb_hypgeom_ei_2f2(acb_t res, const acb_t z, slong prec) noexcept + void acb_hypgeom_ei(acb_t res, const acb_t z, slong prec) noexcept + void _acb_hypgeom_ei_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) noexcept + void acb_hypgeom_ei_series(acb_poly_t res, const acb_poly_t z, slong len, slong prec) noexcept + void acb_hypgeom_si_asymp(acb_t res, const acb_t z, slong prec) noexcept + void acb_hypgeom_si_1f2(acb_t res, const acb_t z, slong prec) noexcept + void acb_hypgeom_si(acb_t res, const acb_t z, slong prec) noexcept + void _acb_hypgeom_si_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) noexcept + void acb_hypgeom_si_series(acb_poly_t res, const acb_poly_t z, slong len, slong prec) noexcept + void acb_hypgeom_ci_asymp(acb_t res, const acb_t z, slong prec) noexcept + void acb_hypgeom_ci_2f3(acb_t res, const acb_t z, slong prec) noexcept + void acb_hypgeom_ci(acb_t res, const acb_t z, slong prec) noexcept + void _acb_hypgeom_ci_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) noexcept + void acb_hypgeom_ci_series(acb_poly_t res, const acb_poly_t z, slong len, slong prec) noexcept + void acb_hypgeom_shi(acb_t res, const acb_t z, slong prec) noexcept + void _acb_hypgeom_shi_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) noexcept + void acb_hypgeom_shi_series(acb_poly_t res, const acb_poly_t z, slong len, slong prec) noexcept + void acb_hypgeom_chi_asymp(acb_t res, const acb_t z, slong prec) noexcept + void acb_hypgeom_chi_2f3(acb_t res, const acb_t z, slong prec) noexcept + void acb_hypgeom_chi(acb_t res, const acb_t z, slong prec) noexcept + void _acb_hypgeom_chi_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) noexcept + void acb_hypgeom_chi_series(acb_poly_t res, const acb_poly_t z, slong len, slong prec) noexcept + void acb_hypgeom_li(acb_t res, const acb_t z, int offset, slong prec) noexcept + void _acb_hypgeom_li_series(acb_ptr res, acb_srcptr z, slong zlen, int offset, slong len, slong prec) noexcept + void acb_hypgeom_li_series(acb_poly_t res, const acb_poly_t z, int offset, slong len, slong prec) noexcept + void acb_hypgeom_2f1_continuation(acb_t res0, acb_t res1, const acb_t a, const acb_t b, const acb_t c, const acb_t z0, const acb_t z1, const acb_t f0, const acb_t f1, slong prec) noexcept + void acb_hypgeom_2f1_series_direct(acb_poly_t res, const acb_poly_t a, const acb_poly_t b, const acb_poly_t c, const acb_poly_t z, int regularized, slong len, slong prec) noexcept + void acb_hypgeom_2f1_direct(acb_t res, const acb_t a, const acb_t b, const acb_t c, const acb_t z, int regularized, slong prec) noexcept + void acb_hypgeom_2f1_transform(acb_t res, const acb_t a, const acb_t b, const acb_t c, const acb_t z, int flags, int which, slong prec) noexcept + void acb_hypgeom_2f1_transform_limit(acb_t res, const acb_t a, const acb_t b, const acb_t c, const acb_t z, int regularized, int which, slong prec) noexcept + void acb_hypgeom_2f1_corner(acb_t res, const acb_t a, const acb_t b, const acb_t c, const acb_t z, int regularized, slong prec) noexcept + int acb_hypgeom_2f1_choose(const acb_t z) noexcept + void acb_hypgeom_2f1(acb_t res, const acb_t a, const acb_t b, const acb_t c, const acb_t z, int flags, slong prec) noexcept + void acb_hypgeom_chebyshev_t(acb_t res, const acb_t n, const acb_t z, slong prec) noexcept + void acb_hypgeom_chebyshev_u(acb_t res, const acb_t n, const acb_t z, slong prec) noexcept + void acb_hypgeom_jacobi_p(acb_t res, const acb_t n, const acb_t a, const acb_t b, const acb_t z, slong prec) noexcept + void acb_hypgeom_gegenbauer_c(acb_t res, const acb_t n, const acb_t m, const acb_t z, slong prec) noexcept + void acb_hypgeom_laguerre_l(acb_t res, const acb_t n, const acb_t m, const acb_t z, slong prec) noexcept + void acb_hypgeom_hermite_h(acb_t res, const acb_t n, const acb_t z, slong prec) noexcept + void acb_hypgeom_legendre_p(acb_t res, const acb_t n, const acb_t m, const acb_t z, int type, slong prec) noexcept + void acb_hypgeom_legendre_q(acb_t res, const acb_t n, const acb_t m, const acb_t z, int type, slong prec) noexcept + void acb_hypgeom_legendre_p_uiui_rec(acb_t res, ulong n, ulong m, const acb_t z, slong prec) noexcept + void acb_hypgeom_spherical_y(acb_t res, slong n, slong m, const acb_t theta, const acb_t phi, slong prec) noexcept + void acb_hypgeom_dilog_zero_taylor(acb_t res, const acb_t z, slong prec) noexcept + void acb_hypgeom_dilog_zero(acb_t res, const acb_t z, slong prec) noexcept + void acb_hypgeom_dilog_transform(acb_t res, const acb_t z, int algorithm, slong prec) noexcept + void acb_hypgeom_dilog_continuation(acb_t res, const acb_t a, const acb_t z, slong prec) noexcept + void acb_hypgeom_dilog_bitburst(acb_t res, acb_t z0, const acb_t z, slong prec) noexcept + void acb_hypgeom_dilog(acb_t res, const acb_t z, slong prec) noexcept diff --git a/src/sage/libs/flint/acb_macros.pxd b/src/sage/libs/flint/acb_macros.pxd new file mode 100644 index 00000000000..26ef61206bc --- /dev/null +++ b/src/sage/libs/flint/acb_macros.pxd @@ -0,0 +1,8 @@ +# Macros from acb.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + arb_ptr acb_realref(acb_t x) + arb_ptr acb_imagref(acb_t x) diff --git a/src/sage/libs/flint/acb_mat.pxd b/src/sage/libs/flint/acb_mat.pxd new file mode 100644 index 00000000000..031913ab07a --- /dev/null +++ b/src/sage/libs/flint/acb_mat.pxd @@ -0,0 +1,134 @@ +# distutils: libraries = flint +# distutils: depends = flint/acb_mat.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void acb_mat_init(acb_mat_t mat, slong r, slong c) noexcept + void acb_mat_clear(acb_mat_t mat) noexcept + slong acb_mat_allocated_bytes(const acb_mat_t x) noexcept + void acb_mat_window_init(acb_mat_t window, const acb_mat_t mat, slong r1, slong c1, slong r2, slong c2) noexcept + void acb_mat_window_clear(acb_mat_t window) noexcept + void acb_mat_set(acb_mat_t dest, const acb_mat_t src) noexcept + void acb_mat_set_fmpz_mat(acb_mat_t dest, const fmpz_mat_t src) noexcept + void acb_mat_set_round_fmpz_mat(acb_mat_t dest, const fmpz_mat_t src, slong prec) noexcept + void acb_mat_set_fmpq_mat(acb_mat_t dest, const fmpq_mat_t src, slong prec) noexcept + void acb_mat_set_arb_mat(acb_mat_t dest, const arb_mat_t src) noexcept + void acb_mat_set_round_arb_mat(acb_mat_t dest, const arb_mat_t src, slong prec) noexcept + void acb_mat_get_real(arb_mat_t re, const arb_mat_t mat) noexcept + void acb_mat_get_imag(arb_mat_t im, const arb_mat_t mat) noexcept + void acb_mat_set_real_imag(acb_mat_t mat, const arb_mat_t re, const arb_mat_t im) noexcept + void acb_mat_randtest(acb_mat_t mat, flint_rand_t state, slong prec, slong mag_bits) noexcept + void acb_mat_randtest_eig(acb_mat_t mat, flint_rand_t state, acb_srcptr E, slong prec) noexcept + void acb_mat_printd(const acb_mat_t mat, slong digits) noexcept + void acb_mat_fprintd(FILE * file, const acb_mat_t mat, slong digits) noexcept + bint acb_mat_equal(const acb_mat_t mat1, const acb_mat_t mat2) noexcept + bint acb_mat_overlaps(const acb_mat_t mat1, const acb_mat_t mat2) noexcept + bint acb_mat_contains(const acb_mat_t mat1, const acb_mat_t mat2) noexcept + bint acb_mat_contains_fmpz_mat(const acb_mat_t mat1, const fmpz_mat_t mat2) noexcept + bint acb_mat_contains_fmpq_mat(const acb_mat_t mat1, const fmpq_mat_t mat2) noexcept + bint acb_mat_eq(const acb_mat_t mat1, const acb_mat_t mat2) noexcept + bint acb_mat_ne(const acb_mat_t mat1, const acb_mat_t mat2) noexcept + bint acb_mat_is_real(const acb_mat_t mat) noexcept + bint acb_mat_is_empty(const acb_mat_t mat) noexcept + bint acb_mat_is_square(const acb_mat_t mat) noexcept + bint acb_mat_is_exact(const acb_mat_t mat) noexcept + bint acb_mat_is_zero(const acb_mat_t mat) noexcept + bint acb_mat_is_finite(const acb_mat_t mat) noexcept + bint acb_mat_is_triu(const acb_mat_t mat) noexcept + bint acb_mat_is_tril(const acb_mat_t mat) noexcept + bint acb_mat_is_diag(const acb_mat_t mat) noexcept + void acb_mat_zero(acb_mat_t mat) noexcept + void acb_mat_one(acb_mat_t mat) noexcept + void acb_mat_ones(acb_mat_t mat) noexcept + void acb_mat_onei(acb_mat_t mat) noexcept + void acb_mat_indeterminate(acb_mat_t mat) noexcept + void acb_mat_dft(acb_mat_t mat, int type, slong prec) noexcept + void acb_mat_transpose(acb_mat_t dest, const acb_mat_t src) noexcept + void acb_mat_conjugate_transpose(acb_mat_t dest, const acb_mat_t src) noexcept + void acb_mat_conjugate(acb_mat_t dest, const acb_mat_t src) noexcept + void acb_mat_bound_inf_norm(mag_t b, const acb_mat_t A) noexcept + void acb_mat_frobenius_norm(arb_t res, const acb_mat_t A, slong prec) noexcept + void acb_mat_bound_frobenius_norm(mag_t res, const acb_mat_t A) noexcept + void acb_mat_neg(acb_mat_t dest, const acb_mat_t src) noexcept + void acb_mat_add(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec) noexcept + void acb_mat_sub(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec) noexcept + void acb_mat_mul_classical(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec) noexcept + void acb_mat_mul_threaded(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec) noexcept + void acb_mat_mul_reorder(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec) noexcept + void acb_mat_mul(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec) noexcept + void acb_mat_mul_entrywise(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec) noexcept + void acb_mat_sqr_classical(acb_mat_t res, const acb_mat_t mat, slong prec) noexcept + void acb_mat_sqr(acb_mat_t res, const acb_mat_t mat, slong prec) noexcept + void acb_mat_pow_ui(acb_mat_t res, const acb_mat_t mat, ulong exp, slong prec) noexcept + void acb_mat_approx_mul(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec) noexcept + void acb_mat_scalar_mul_2exp_si(acb_mat_t B, const acb_mat_t A, slong c) noexcept + void acb_mat_scalar_addmul_si(acb_mat_t B, const acb_mat_t A, slong c, slong prec) noexcept + void acb_mat_scalar_addmul_fmpz(acb_mat_t B, const acb_mat_t A, const fmpz_t c, slong prec) noexcept + void acb_mat_scalar_addmul_arb(acb_mat_t B, const acb_mat_t A, const arb_t c, slong prec) noexcept + void acb_mat_scalar_addmul_acb(acb_mat_t B, const acb_mat_t A, const acb_t c, slong prec) noexcept + void acb_mat_scalar_mul_si(acb_mat_t B, const acb_mat_t A, slong c, slong prec) noexcept + void acb_mat_scalar_mul_fmpz(acb_mat_t B, const acb_mat_t A, const fmpz_t c, slong prec) noexcept + void acb_mat_scalar_mul_arb(acb_mat_t B, const acb_mat_t A, const arb_t c, slong prec) noexcept + void acb_mat_scalar_mul_acb(acb_mat_t B, const acb_mat_t A, const acb_t c, slong prec) noexcept + void acb_mat_scalar_div_si(acb_mat_t B, const acb_mat_t A, slong c, slong prec) noexcept + void acb_mat_scalar_div_fmpz(acb_mat_t B, const acb_mat_t A, const fmpz_t c, slong prec) noexcept + void acb_mat_scalar_div_arb(acb_mat_t B, const acb_mat_t A, const arb_t c, slong prec) noexcept + void acb_mat_scalar_div_acb(acb_mat_t B, const acb_mat_t A, const acb_t c, slong prec) noexcept + void _acb_mat_vector_mul_row(acb_ptr res, acb_srcptr v, const acb_mat_t A, slong prec) noexcept + void _acb_mat_vector_mul_col(acb_ptr res, const acb_mat_t A, acb_srcptr v, slong prec) noexcept + void acb_mat_vector_mul_row(acb_ptr res, acb_srcptr v, const acb_mat_t A, slong prec) noexcept + void acb_mat_vector_mul_col(acb_ptr res, const acb_mat_t A, acb_srcptr v, slong prec) noexcept + int acb_mat_lu_classical(slong * perm, acb_mat_t LU, const acb_mat_t A, slong prec) noexcept + int acb_mat_lu_recursive(slong * perm, acb_mat_t LU, const acb_mat_t A, slong prec) noexcept + int acb_mat_lu(slong * perm, acb_mat_t LU, const acb_mat_t A, slong prec) noexcept + void acb_mat_solve_tril_classical(acb_mat_t X, const acb_mat_t L, const acb_mat_t B, int unit, slong prec) noexcept + void acb_mat_solve_tril_recursive(acb_mat_t X, const acb_mat_t L, const acb_mat_t B, int unit, slong prec) noexcept + void acb_mat_solve_tril(acb_mat_t X, const acb_mat_t L, const acb_mat_t B, int unit, slong prec) noexcept + void acb_mat_solve_triu_classical(acb_mat_t X, const acb_mat_t U, const acb_mat_t B, int unit, slong prec) noexcept + void acb_mat_solve_triu_recursive(acb_mat_t X, const acb_mat_t U, const acb_mat_t B, int unit, slong prec) noexcept + void acb_mat_solve_triu(acb_mat_t X, const acb_mat_t U, const acb_mat_t B, int unit, slong prec) noexcept + void acb_mat_solve_lu_precomp(acb_mat_t X, const slong * perm, const acb_mat_t LU, const acb_mat_t B, slong prec) noexcept + int acb_mat_solve(acb_mat_t X, const acb_mat_t A, const acb_mat_t B, slong prec) noexcept + int acb_mat_solve_lu(acb_mat_t X, const acb_mat_t A, const acb_mat_t B, slong prec) noexcept + int acb_mat_solve_precond(acb_mat_t X, const acb_mat_t A, const acb_mat_t B, slong prec) noexcept + int acb_mat_inv(acb_mat_t X, const acb_mat_t A, slong prec) noexcept + void acb_mat_det_lu(acb_t det, const acb_mat_t A, slong prec) noexcept + void acb_mat_det_precond(acb_t det, const acb_mat_t A, slong prec) noexcept + void acb_mat_det(acb_t det, const acb_mat_t A, slong prec) noexcept + void acb_mat_approx_solve_triu(acb_mat_t X, const acb_mat_t U, const acb_mat_t B, int unit, slong prec) noexcept + void acb_mat_approx_solve_tril(acb_mat_t X, const acb_mat_t L, const acb_mat_t B, int unit, slong prec) noexcept + int acb_mat_approx_lu(slong * P, acb_mat_t LU, const acb_mat_t A, slong prec) noexcept + void acb_mat_approx_solve_lu_precomp(acb_mat_t X, const slong * perm, const acb_mat_t A, const acb_mat_t B, slong prec) noexcept + int acb_mat_approx_solve(acb_mat_t X, const acb_mat_t A, const acb_mat_t B, slong prec) noexcept + int acb_mat_approx_inv(acb_mat_t X, const acb_mat_t A, slong prec) noexcept + void _acb_mat_charpoly(acb_ptr poly, const acb_mat_t mat, slong prec) noexcept + void acb_mat_charpoly(acb_poly_t poly, const acb_mat_t mat, slong prec) noexcept + void _acb_mat_companion(acb_mat_t mat, acb_srcptr poly, slong prec) noexcept + void acb_mat_companion(acb_mat_t mat, const acb_poly_t poly, slong prec) noexcept + void acb_mat_exp_taylor_sum(acb_mat_t S, const acb_mat_t A, slong N, slong prec) noexcept + void acb_mat_exp(acb_mat_t B, const acb_mat_t A, slong prec) noexcept + void acb_mat_trace(acb_t trace, const acb_mat_t mat, slong prec) noexcept + void _acb_mat_diag_prod(acb_t res, const acb_mat_t mat, slong a, slong b, slong prec) noexcept + void acb_mat_diag_prod(acb_t res, const acb_mat_t mat, slong prec) noexcept + void acb_mat_get_mid(acb_mat_t B, const acb_mat_t A) noexcept + void acb_mat_add_error_mag(acb_mat_t mat, const mag_t err) noexcept + 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) noexcept + void acb_mat_eig_global_enclosure(mag_t eps, const acb_mat_t A, acb_srcptr E, const acb_mat_t R, slong prec) noexcept + void acb_mat_eig_enclosure_rump(acb_t lmbda, 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) noexcept + 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) noexcept + 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) noexcept + 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) noexcept + int acb_mat_eig_multiple_rump(acb_ptr E, const acb_mat_t A, acb_srcptr E_approx, const acb_mat_t R_approx, slong prec) noexcept + int acb_mat_eig_multiple(acb_ptr E, const acb_mat_t A, acb_srcptr E_approx, const acb_mat_t R_approx, slong prec) noexcept + +from .acb_mat_macros cimport * diff --git a/src/sage/libs/flint/acb_mat_macros.pxd b/src/sage/libs/flint/acb_mat_macros.pxd new file mode 100644 index 00000000000..36b95b8f6df --- /dev/null +++ b/src/sage/libs/flint/acb_mat_macros.pxd @@ -0,0 +1,9 @@ +# Macros from acb_mat.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + acb_ptr acb_mat_entry(acb_mat_t mat, slong i, slong j) + slong acb_mat_nrows(acb_mat_t) + slong acb_mat_ncols(acb_mat_t) diff --git a/src/sage/libs/flint/acb_modular.pxd b/src/sage/libs/flint/acb_modular.pxd new file mode 100644 index 00000000000..8a6b824883d --- /dev/null +++ b/src/sage/libs/flint/acb_modular.pxd @@ -0,0 +1,60 @@ +# distutils: libraries = flint +# distutils: depends = flint/acb_modular.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void psl2z_init(psl2z_t g) noexcept + void psl2z_clear(psl2z_t g) noexcept + void psl2z_swap(psl2z_t f, psl2z_t g) noexcept + void psl2z_set(psl2z_t f, const psl2z_t g) noexcept + void psl2z_one(psl2z_t g) noexcept + bint psl2z_is_one(const psl2z_t g) noexcept + void psl2z_print(const psl2z_t g) noexcept + void psl2z_fprint(FILE * file, const psl2z_t g) noexcept + bint psl2z_equal(const psl2z_t f, const psl2z_t g) noexcept + void psl2z_mul(psl2z_t h, const psl2z_t f, const psl2z_t g) noexcept + void psl2z_inv(psl2z_t h, const psl2z_t g) noexcept + bint psl2z_is_correct(const psl2z_t g) noexcept + void psl2z_randtest(psl2z_t g, flint_rand_t state, slong bits) noexcept + void acb_modular_transform(acb_t w, const psl2z_t g, const acb_t z, slong prec) noexcept + void acb_modular_fundamental_domain_approx_d(psl2z_t g, double x, double y, double one_minus_eps) noexcept + void acb_modular_fundamental_domain_approx_arf(psl2z_t g, const arf_t x, const arf_t y, const arf_t one_minus_eps, slong prec) noexcept + void acb_modular_fundamental_domain_approx(acb_t w, psl2z_t g, const acb_t z, const arf_t one_minus_eps, slong prec) noexcept + bint acb_modular_is_in_fundamental_domain(const acb_t z, const arf_t tol, slong prec) noexcept + void acb_modular_fill_addseq(slong * tab, slong len) noexcept + void acb_modular_theta_transform(int * R, int * S, int * C, const psl2z_t g) noexcept + void acb_modular_addseq_theta(slong * exponents, slong * aindex, slong * bindex, slong num) noexcept + void acb_modular_theta_sum(acb_ptr theta1, acb_ptr theta2, acb_ptr theta3, acb_ptr theta4, const acb_t w, int w_is_unit, const acb_t q, slong len, slong prec) noexcept + void acb_modular_theta_const_sum_basecase(acb_t theta2, acb_t theta3, acb_t theta4, const acb_t q, slong N, slong prec) noexcept + void acb_modular_theta_const_sum_rs(acb_t theta2, acb_t theta3, acb_t theta4, const acb_t q, slong N, slong prec) noexcept + void acb_modular_theta_const_sum(acb_t theta2, acb_t theta3, acb_t theta4, const acb_t q, slong prec) noexcept + void acb_modular_theta_notransform(acb_t theta1, acb_t theta2, acb_t theta3, acb_t theta4, const acb_t z, const acb_t tau, slong prec) noexcept + void acb_modular_theta(acb_t theta1, acb_t theta2, acb_t theta3, acb_t theta4, const acb_t z, const acb_t tau, slong prec) noexcept + void acb_modular_theta_jet_notransform(acb_ptr theta1, acb_ptr theta2, acb_ptr theta3, acb_ptr theta4, const acb_t z, const acb_t tau, slong len, slong prec) noexcept + void acb_modular_theta_jet(acb_ptr theta1, acb_ptr theta2, acb_ptr theta3, acb_ptr theta4, const acb_t z, const acb_t tau, slong len, slong prec) noexcept + void _acb_modular_theta_series(acb_ptr theta1, acb_ptr theta2, acb_ptr theta3, acb_ptr theta4, acb_srcptr z, slong zlen, const acb_t tau, slong len, slong prec) noexcept + void acb_modular_theta_series(acb_poly_t theta1, acb_poly_t theta2, acb_poly_t theta3, acb_poly_t theta4, const acb_poly_t z, const acb_t tau, slong len, slong prec) noexcept + void acb_modular_addseq_eta(slong * exponents, slong * aindex, slong * bindex, slong num) noexcept + void acb_modular_eta_sum(acb_t eta, const acb_t q, slong prec) noexcept + int acb_modular_epsilon_arg(const psl2z_t g) noexcept + void acb_modular_eta(acb_t r, const acb_t tau, slong prec) noexcept + void acb_modular_j(acb_t r, const acb_t tau, slong prec) noexcept + void acb_modular_lambda(acb_t r, const acb_t tau, slong prec) noexcept + void acb_modular_delta(acb_t r, const acb_t tau, slong prec) noexcept + void acb_modular_eisenstein(acb_ptr r, const acb_t tau, slong len, slong prec) noexcept + void acb_modular_elliptic_k(acb_t w, const acb_t m, slong prec) noexcept + void acb_modular_elliptic_k_cpx(acb_ptr w, const acb_t m, slong len, slong prec) noexcept + void acb_modular_elliptic_e(acb_t w, const acb_t m, slong prec) noexcept + void acb_modular_elliptic_p(acb_t wp, const acb_t z, const acb_t tau, slong prec) noexcept + void acb_modular_elliptic_p_zpx(acb_ptr wp, const acb_t z, const acb_t tau, slong len, slong prec) noexcept + void acb_modular_hilbert_class_poly(fmpz_poly_t res, slong D) noexcept diff --git a/src/sage/libs/flint/acb_poly.pxd b/src/sage/libs/flint/acb_poly.pxd new file mode 100644 index 00000000000..2e4e900cac0 --- /dev/null +++ b/src/sage/libs/flint/acb_poly.pxd @@ -0,0 +1,249 @@ +# distutils: libraries = flint +# distutils: depends = flint/acb_poly.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void acb_poly_init(acb_poly_t poly) noexcept + void acb_poly_clear(acb_poly_t poly) noexcept + void acb_poly_fit_length(acb_poly_t poly, slong len) noexcept + void _acb_poly_set_length(acb_poly_t poly, slong len) noexcept + void _acb_poly_normalise(acb_poly_t poly) noexcept + void acb_poly_swap(acb_poly_t poly1, acb_poly_t poly2) noexcept + slong acb_poly_allocated_bytes(const acb_poly_t x) noexcept + slong acb_poly_length(const acb_poly_t poly) noexcept + slong acb_poly_degree(const acb_poly_t poly) noexcept + bint acb_poly_is_zero(const acb_poly_t poly) noexcept + bint acb_poly_is_one(const acb_poly_t poly) noexcept + bint acb_poly_is_x(const acb_poly_t poly) noexcept + void acb_poly_zero(acb_poly_t poly) noexcept + void acb_poly_one(acb_poly_t poly) noexcept + void acb_poly_set(acb_poly_t dest, const acb_poly_t src) noexcept + void acb_poly_set_round(acb_poly_t dest, const acb_poly_t src, slong prec) noexcept + void acb_poly_set_trunc(acb_poly_t dest, const acb_poly_t src, slong n) noexcept + void acb_poly_set_trunc_round(acb_poly_t dest, const acb_poly_t src, slong n, slong prec) noexcept + void acb_poly_set_coeff_si(acb_poly_t poly, slong n, slong c) noexcept + void acb_poly_set_coeff_acb(acb_poly_t poly, slong n, const acb_t c) noexcept + void acb_poly_get_coeff_acb(acb_t v, const acb_poly_t poly, slong n) noexcept + void _acb_poly_shift_right(acb_ptr res, acb_srcptr poly, slong len, slong n) noexcept + void acb_poly_shift_right(acb_poly_t res, const acb_poly_t poly, slong n) noexcept + void _acb_poly_shift_left(acb_ptr res, acb_srcptr poly, slong len, slong n) noexcept + void acb_poly_shift_left(acb_poly_t res, const acb_poly_t poly, slong n) noexcept + void acb_poly_truncate(acb_poly_t poly, slong n) noexcept + slong acb_poly_valuation(const acb_poly_t poly) noexcept + void acb_poly_printd(const acb_poly_t poly, slong digits) noexcept + void acb_poly_fprintd(FILE * file, const acb_poly_t poly, slong digits) noexcept + void acb_poly_randtest(acb_poly_t poly, flint_rand_t state, slong len, slong prec, slong mag_bits) noexcept + bint acb_poly_equal(const acb_poly_t A, const acb_poly_t B) noexcept + bint acb_poly_contains(const acb_poly_t poly1, const acb_poly_t poly2) noexcept + bint acb_poly_contains_fmpz_poly(const acb_poly_t poly1, const fmpz_poly_t poly2) noexcept + bint acb_poly_contains_fmpq_poly(const acb_poly_t poly1, const fmpq_poly_t poly2) noexcept + bint _acb_poly_overlaps(acb_srcptr poly1, slong len1, acb_srcptr poly2, slong len2) noexcept + bint acb_poly_overlaps(const acb_poly_t poly1, const acb_poly_t poly2) noexcept + int acb_poly_get_unique_fmpz_poly(fmpz_poly_t z, const acb_poly_t x) noexcept + bint acb_poly_is_real(const acb_poly_t poly) noexcept + void acb_poly_set_fmpz_poly(acb_poly_t poly, const fmpz_poly_t re, slong prec) noexcept + void acb_poly_set2_fmpz_poly(acb_poly_t poly, const fmpz_poly_t re, const fmpz_poly_t im, slong prec) noexcept + void acb_poly_set_arb_poly(acb_poly_t poly, const arb_poly_t re) noexcept + void acb_poly_set2_arb_poly(acb_poly_t poly, const arb_poly_t re, const arb_poly_t im) noexcept + void acb_poly_set_fmpq_poly(acb_poly_t poly, const fmpq_poly_t re, slong prec) noexcept + void acb_poly_set2_fmpq_poly(acb_poly_t poly, const fmpq_poly_t re, const fmpq_poly_t im, slong prec) noexcept + void acb_poly_set_acb(acb_poly_t poly, const acb_t src) noexcept + void acb_poly_set_si(acb_poly_t poly, slong src) noexcept + void _acb_poly_majorant(arb_ptr res, acb_srcptr poly, slong len, slong prec) noexcept + void acb_poly_majorant(arb_poly_t res, const acb_poly_t poly, slong prec) noexcept + void _acb_poly_add(acb_ptr C, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong prec) noexcept + void acb_poly_add(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, slong prec) noexcept + void acb_poly_add_si(acb_poly_t C, const acb_poly_t A, slong B, slong prec) noexcept + void _acb_poly_sub(acb_ptr C, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong prec) noexcept + void acb_poly_sub(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, slong prec) noexcept + void acb_poly_add_series(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, slong len, slong prec) noexcept + void acb_poly_sub_series(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, slong len, slong prec) noexcept + void acb_poly_neg(acb_poly_t C, const acb_poly_t A) noexcept + void acb_poly_scalar_mul_2exp_si(acb_poly_t C, const acb_poly_t A, slong c) noexcept + void acb_poly_scalar_mul(acb_poly_t C, const acb_poly_t A, const acb_t c, slong prec) noexcept + void acb_poly_scalar_div(acb_poly_t C, const acb_poly_t A, const acb_t c, slong prec) noexcept + void _acb_poly_mullow_classical(acb_ptr C, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong n, slong prec) noexcept + void _acb_poly_mullow_transpose(acb_ptr C, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong n, slong prec) noexcept + void _acb_poly_mullow_transpose_gauss(acb_ptr C, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong n, slong prec) noexcept + void _acb_poly_mullow(acb_ptr C, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong n, slong prec) noexcept + void acb_poly_mullow_classical(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, slong n, slong prec) noexcept + void acb_poly_mullow_transpose(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, slong n, slong prec) noexcept + void acb_poly_mullow_transpose_gauss(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, slong n, slong prec) noexcept + void acb_poly_mullow(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, slong n, slong prec) noexcept + void _acb_poly_mul(acb_ptr C, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong prec) noexcept + void acb_poly_mul(acb_poly_t C, const acb_poly_t A1, const acb_poly_t B2, slong prec) noexcept + void _acb_poly_inv_series(acb_ptr Qinv, acb_srcptr Q, slong Qlen, slong len, slong prec) noexcept + void acb_poly_inv_series(acb_poly_t Qinv, const acb_poly_t Q, slong n, slong prec) noexcept + void _acb_poly_div_series(acb_ptr Q, acb_srcptr A, slong Alen, acb_srcptr B, slong Blen, slong n, slong prec) noexcept + void acb_poly_div_series(acb_poly_t Q, const acb_poly_t A, const acb_poly_t B, slong n, slong prec) noexcept + void _acb_poly_div(acb_ptr Q, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong prec) noexcept + void _acb_poly_rem(acb_ptr R, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong prec) noexcept + void _acb_poly_divrem(acb_ptr Q, acb_ptr R, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong prec) noexcept + int acb_poly_divrem(acb_poly_t Q, acb_poly_t R, const acb_poly_t A, const acb_poly_t B, slong prec) noexcept + void _acb_poly_div_root(acb_ptr Q, acb_t R, acb_srcptr A, slong len, const acb_t c, slong prec) noexcept + void _acb_poly_taylor_shift(acb_ptr g, const acb_t c, slong n, slong prec) noexcept + void acb_poly_taylor_shift(acb_poly_t g, const acb_poly_t f, const acb_t c, slong prec) noexcept + void _acb_poly_compose(acb_ptr res, acb_srcptr poly1, slong len1, acb_srcptr poly2, slong len2, slong prec) noexcept + void acb_poly_compose(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, slong prec) noexcept + void _acb_poly_compose_series(acb_ptr res, acb_srcptr poly1, slong len1, acb_srcptr poly2, slong len2, slong n, slong prec) noexcept + void acb_poly_compose_series(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, slong n, slong prec) noexcept + void _acb_poly_revert_series(acb_ptr h, acb_srcptr f, slong flen, slong n, slong prec) noexcept + void acb_poly_revert_series(acb_poly_t h, const acb_poly_t f, slong n, slong prec) noexcept + void _acb_poly_evaluate_horner(acb_t y, acb_srcptr f, slong len, const acb_t x, slong prec) noexcept + void acb_poly_evaluate_horner(acb_t y, const acb_poly_t f, const acb_t x, slong prec) noexcept + void _acb_poly_evaluate_rectangular(acb_t y, acb_srcptr f, slong len, const acb_t x, slong prec) noexcept + void acb_poly_evaluate_rectangular(acb_t y, const acb_poly_t f, const acb_t x, slong prec) noexcept + void _acb_poly_evaluate(acb_t y, acb_srcptr f, slong len, const acb_t x, slong prec) noexcept + void acb_poly_evaluate(acb_t y, const acb_poly_t f, const acb_t x, slong prec) noexcept + void _acb_poly_evaluate2_horner(acb_t y, acb_t z, acb_srcptr f, slong len, const acb_t x, slong prec) noexcept + void acb_poly_evaluate2_horner(acb_t y, acb_t z, const acb_poly_t f, const acb_t x, slong prec) noexcept + void _acb_poly_evaluate2_rectangular(acb_t y, acb_t z, acb_srcptr f, slong len, const acb_t x, slong prec) noexcept + void acb_poly_evaluate2_rectangular(acb_t y, acb_t z, const acb_poly_t f, const acb_t x, slong prec) noexcept + void _acb_poly_evaluate2(acb_t y, acb_t z, acb_srcptr f, slong len, const acb_t x, slong prec) noexcept + void acb_poly_evaluate2(acb_t y, acb_t z, const acb_poly_t f, const acb_t x, slong prec) noexcept + void _acb_poly_product_roots(acb_ptr poly, acb_srcptr xs, slong n, slong prec) noexcept + void acb_poly_product_roots(acb_poly_t poly, acb_srcptr xs, slong n, slong prec) noexcept + acb_ptr * _acb_poly_tree_alloc(slong len) noexcept + void _acb_poly_tree_free(acb_ptr * tree, slong len) noexcept + void _acb_poly_tree_build(acb_ptr * tree, acb_srcptr roots, slong len, slong prec) noexcept + void _acb_poly_evaluate_vec_iter(acb_ptr ys, acb_srcptr poly, slong plen, acb_srcptr xs, slong n, slong prec) noexcept + void acb_poly_evaluate_vec_iter(acb_ptr ys, const acb_poly_t poly, acb_srcptr xs, slong n, slong prec) noexcept + void _acb_poly_evaluate_vec_fast_precomp(acb_ptr vs, acb_srcptr poly, slong plen, acb_ptr * tree, slong len, slong prec) noexcept + void _acb_poly_evaluate_vec_fast(acb_ptr ys, acb_srcptr poly, slong plen, acb_srcptr xs, slong n, slong prec) noexcept + void acb_poly_evaluate_vec_fast(acb_ptr ys, const acb_poly_t poly, acb_srcptr xs, slong n, slong prec) noexcept + void _acb_poly_interpolate_newton(acb_ptr poly, acb_srcptr xs, acb_srcptr ys, slong n, slong prec) noexcept + void acb_poly_interpolate_newton(acb_poly_t poly, acb_srcptr xs, acb_srcptr ys, slong n, slong prec) noexcept + void _acb_poly_interpolate_barycentric(acb_ptr poly, acb_srcptr xs, acb_srcptr ys, slong n, slong prec) noexcept + void acb_poly_interpolate_barycentric(acb_poly_t poly, acb_srcptr xs, acb_srcptr ys, slong n, slong prec) noexcept + void _acb_poly_interpolation_weights(acb_ptr w, acb_ptr * tree, slong len, slong prec) noexcept + void _acb_poly_interpolate_fast_precomp(acb_ptr poly, acb_srcptr ys, acb_ptr * tree, acb_srcptr weights, slong len, slong prec) noexcept + void _acb_poly_interpolate_fast(acb_ptr poly, acb_srcptr xs, acb_srcptr ys, slong len, slong prec) noexcept + void acb_poly_interpolate_fast(acb_poly_t poly, acb_srcptr xs, acb_srcptr ys, slong n, slong prec) noexcept + void _acb_poly_derivative(acb_ptr res, acb_srcptr poly, slong len, slong prec) noexcept + void acb_poly_derivative(acb_poly_t res, const acb_poly_t poly, slong prec) noexcept + void _acb_poly_nth_derivative(acb_ptr res, acb_srcptr poly, ulong n, slong len, slong prec) noexcept + void acb_poly_nth_derivative(acb_poly_t res, const acb_poly_t poly, ulong n, slong prec) noexcept + void _acb_poly_integral(acb_ptr res, acb_srcptr poly, slong len, slong prec) noexcept + void acb_poly_integral(acb_poly_t res, const acb_poly_t poly, slong prec) noexcept + void _acb_poly_borel_transform(acb_ptr res, acb_srcptr poly, slong len, slong prec) noexcept + void acb_poly_borel_transform(acb_poly_t res, const acb_poly_t poly, slong prec) noexcept + void _acb_poly_inv_borel_transform(acb_ptr res, acb_srcptr poly, slong len, slong prec) noexcept + void acb_poly_inv_borel_transform(acb_poly_t res, const acb_poly_t poly, slong prec) noexcept + void _acb_poly_binomial_transform_basecase(acb_ptr b, acb_srcptr a, slong alen, slong len, slong prec) noexcept + void acb_poly_binomial_transform_basecase(acb_poly_t b, const acb_poly_t a, slong len, slong prec) noexcept + void _acb_poly_binomial_transform_convolution(acb_ptr b, acb_srcptr a, slong alen, slong len, slong prec) noexcept + void acb_poly_binomial_transform_convolution(acb_poly_t b, const acb_poly_t a, slong len, slong prec) noexcept + void _acb_poly_binomial_transform(acb_ptr b, acb_srcptr a, slong alen, slong len, slong prec) noexcept + void acb_poly_binomial_transform(acb_poly_t b, const acb_poly_t a, slong len, slong prec) noexcept + void _acb_poly_graeffe_transform(acb_ptr b, acb_srcptr a, slong len, slong prec) noexcept + void acb_poly_graeffe_transform(acb_poly_t b, const acb_poly_t a, slong prec) noexcept + void _acb_poly_pow_ui_trunc_binexp(acb_ptr res, acb_srcptr f, slong flen, ulong exp, slong len, slong prec) noexcept + void acb_poly_pow_ui_trunc_binexp(acb_poly_t res, const acb_poly_t poly, ulong exp, slong len, slong prec) noexcept + void _acb_poly_pow_ui(acb_ptr res, acb_srcptr f, slong flen, ulong exp, slong prec) noexcept + void acb_poly_pow_ui(acb_poly_t res, const acb_poly_t poly, ulong exp, slong prec) noexcept + void _acb_poly_pow_series(acb_ptr h, acb_srcptr f, slong flen, acb_srcptr g, slong glen, slong len, slong prec) noexcept + void acb_poly_pow_series(acb_poly_t h, const acb_poly_t f, const acb_poly_t g, slong len, slong prec) noexcept + void _acb_poly_pow_acb_series(acb_ptr h, acb_srcptr f, slong flen, const acb_t g, slong len, slong prec) noexcept + void acb_poly_pow_acb_series(acb_poly_t h, const acb_poly_t f, const acb_t g, slong len, slong prec) noexcept + void _acb_poly_sqrt_series(acb_ptr g, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_sqrt_series(acb_poly_t g, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_rsqrt_series(acb_ptr g, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_rsqrt_series(acb_poly_t g, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_log_series(acb_ptr res, acb_srcptr f, slong flen, slong n, slong prec) noexcept + void acb_poly_log_series(acb_poly_t res, const acb_poly_t f, slong n, slong prec) noexcept + void _acb_poly_log1p_series(acb_ptr res, acb_srcptr f, slong flen, slong n, slong prec) noexcept + void acb_poly_log1p_series(acb_poly_t res, const acb_poly_t f, slong n, slong prec) noexcept + void _acb_poly_atan_series(acb_ptr res, acb_srcptr f, slong flen, slong n, slong prec) noexcept + void acb_poly_atan_series(acb_poly_t res, const acb_poly_t f, slong n, slong prec) noexcept + void _acb_poly_exp_series_basecase(acb_ptr f, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_exp_series_basecase(acb_poly_t f, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_exp_series(acb_ptr f, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_exp_series(acb_poly_t f, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_exp_pi_i_series(acb_ptr f, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_exp_pi_i_series(acb_poly_t f, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_sin_cos_series(acb_ptr s, acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_sin_cos_series(acb_poly_t s, acb_poly_t c, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_sin_series(acb_ptr s, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_sin_series(acb_poly_t s, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_cos_series(acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_cos_series(acb_poly_t c, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_tan_series(acb_ptr g, acb_srcptr h, slong hlen, slong len, slong prec) noexcept + void acb_poly_tan_series(acb_poly_t g, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_sin_cos_pi_series(acb_ptr s, acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_sin_cos_pi_series(acb_poly_t s, acb_poly_t c, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_sin_pi_series(acb_ptr s, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_sin_pi_series(acb_poly_t s, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_cos_pi_series(acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_cos_pi_series(acb_poly_t c, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_cot_pi_series(acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_cot_pi_series(acb_poly_t c, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_sinh_cosh_series_basecase(acb_ptr s, acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_sinh_cosh_series_basecase(acb_poly_t s, acb_poly_t c, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_sinh_cosh_series_exponential(acb_ptr s, acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_sinh_cosh_series_exponential(acb_poly_t s, acb_poly_t c, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_sinh_cosh_series(acb_ptr s, acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_sinh_cosh_series(acb_poly_t s, acb_poly_t c, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_sinh_series(acb_ptr s, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_sinh_series(acb_poly_t s, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_cosh_series(acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_cosh_series(acb_poly_t c, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_sinc_series(acb_ptr s, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_sinc_series(acb_poly_t s, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_lambertw_series(acb_ptr res, acb_srcptr z, slong zlen, const fmpz_t k, int flags, slong len, slong prec) noexcept + void acb_poly_lambertw_series(acb_poly_t res, const acb_poly_t z, const fmpz_t k, int flags, slong len, slong prec) noexcept + void _acb_poly_gamma_series(acb_ptr res, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_gamma_series(acb_poly_t res, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_rgamma_series(acb_ptr res, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_rgamma_series(acb_poly_t res, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_lgamma_series(acb_ptr res, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_lgamma_series(acb_poly_t res, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_digamma_series(acb_ptr res, acb_srcptr h, slong hlen, slong n, slong prec) noexcept + void acb_poly_digamma_series(acb_poly_t res, const acb_poly_t h, slong n, slong prec) noexcept + void _acb_poly_rising_ui_series(acb_ptr res, acb_srcptr f, slong flen, ulong r, slong trunc, slong prec) noexcept + void acb_poly_rising_ui_series(acb_poly_t res, const acb_poly_t f, ulong r, slong trunc, slong prec) noexcept + void _acb_poly_powsum_series_naive(acb_ptr z, const acb_t s, const acb_t a, const acb_t q, slong n, slong len, slong prec) noexcept + void _acb_poly_powsum_series_naive_threaded(acb_ptr z, const acb_t s, const acb_t a, const acb_t q, slong n, slong len, slong prec) noexcept + void _acb_poly_powsum_one_series_sieved(acb_ptr z, const acb_t s, slong n, slong len, slong prec) noexcept + void _acb_poly_zeta_em_choose_param(mag_t bound, ulong * N, ulong * M, const acb_t s, const acb_t a, slong d, slong target, slong prec) noexcept + void _acb_poly_zeta_em_bound1(mag_t bound, const acb_t s, const acb_t a, slong N, slong M, slong d, slong wp) noexcept + void _acb_poly_zeta_em_bound(arb_ptr vec, const acb_t s, const acb_t a, ulong N, ulong M, slong d, slong wp) noexcept + void _acb_poly_zeta_em_tail_naive(acb_ptr z, const acb_t s, const acb_t Na, acb_srcptr Nasx, slong M, slong len, slong prec) noexcept + void _acb_poly_zeta_em_tail_bsplit(acb_ptr z, const acb_t s, const acb_t Na, acb_srcptr Nasx, slong M, slong len, slong prec) noexcept + void _acb_poly_zeta_em_sum(acb_ptr z, const acb_t s, const acb_t a, int deflate, ulong N, ulong M, slong d, slong prec) noexcept + void _acb_poly_zeta_cpx_series(acb_ptr z, const acb_t s, const acb_t a, int deflate, slong d, slong prec) noexcept + void _acb_poly_zeta_series(acb_ptr res, acb_srcptr h, slong hlen, const acb_t a, int deflate, slong len, slong prec) noexcept + void acb_poly_zeta_series(acb_poly_t res, const acb_poly_t f, const acb_t a, int deflate, slong n, slong prec) noexcept + void _acb_poly_polylog_cpx_small(acb_ptr w, const acb_t s, const acb_t z, slong len, slong prec) noexcept + void _acb_poly_polylog_cpx_zeta(acb_ptr w, const acb_t s, const acb_t z, slong len, slong prec) noexcept + void _acb_poly_polylog_cpx(acb_ptr w, const acb_t s, const acb_t z, slong len, slong prec) noexcept + void _acb_poly_polylog_series(acb_ptr w, acb_srcptr s, slong slen, const acb_t z, slong len, slong prec) noexcept + void acb_poly_polylog_series(acb_poly_t w, const acb_poly_t s, const acb_t z, slong len, slong prec) noexcept + void _acb_poly_erf_series(acb_ptr res, acb_srcptr z, slong zlen, slong n, slong prec) noexcept + void acb_poly_erf_series(acb_poly_t res, const acb_poly_t z, slong n, slong prec) noexcept + void _acb_poly_agm1_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) noexcept + void acb_poly_agm1_series(acb_poly_t res, const acb_poly_t z, slong n, slong prec) noexcept + void _acb_poly_elliptic_k_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) noexcept + void acb_poly_elliptic_k_series(acb_poly_t res, const acb_poly_t z, slong n, slong prec) noexcept + void _acb_poly_elliptic_p_series(acb_ptr res, acb_srcptr z, slong zlen, const acb_t tau, slong len, slong prec) noexcept + void acb_poly_elliptic_p_series(acb_poly_t res, const acb_poly_t z, const acb_t tau, slong n, slong prec) noexcept + void _acb_poly_root_bound_fujiwara(mag_t bound, acb_srcptr poly, slong len) noexcept + void acb_poly_root_bound_fujiwara(mag_t bound, acb_poly_t poly) noexcept + void _acb_poly_root_inclusion(acb_t r, const acb_t m, acb_srcptr poly, acb_srcptr polyder, slong len, slong prec) noexcept + slong _acb_poly_validate_roots(acb_ptr roots, acb_srcptr poly, slong len, slong prec) noexcept + void _acb_poly_refine_roots_durand_kerner(acb_ptr roots, acb_srcptr poly, slong len, slong prec) noexcept + slong _acb_poly_find_roots(acb_ptr roots, acb_srcptr poly, acb_srcptr initial, slong len, slong maxiter, slong prec) noexcept + slong acb_poly_find_roots(acb_ptr roots, const acb_poly_t poly, acb_srcptr initial, slong maxiter, slong prec) noexcept + int _acb_poly_validate_real_roots(acb_srcptr roots, acb_srcptr poly, slong len, slong prec) noexcept + int acb_poly_validate_real_roots(acb_srcptr roots, const acb_poly_t poly, slong prec) noexcept + +from .acb_poly_macros cimport * diff --git a/src/sage/libs/flint/acb_poly_macros.pxd b/src/sage/libs/flint/acb_poly_macros.pxd new file mode 100644 index 00000000000..7fa5b0fe852 --- /dev/null +++ b/src/sage/libs/flint/acb_poly_macros.pxd @@ -0,0 +1,7 @@ +# Macros from acb_poly.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + acb_ptr acb_poly_get_coeff_ptr(acb_poly_t p, ulong n) diff --git a/src/sage/libs/flint/acb_theta.pxd b/src/sage/libs/flint/acb_theta.pxd new file mode 100644 index 00000000000..9ae702fc37f --- /dev/null +++ b/src/sage/libs/flint/acb_theta.pxd @@ -0,0 +1,123 @@ +# distutils: libraries = flint +# distutils: depends = flint/acb_theta.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void acb_theta_all(acb_ptr th, acb_srcptr z, const acb_mat_t tau, int sqr, slong prec) noexcept + void acb_theta_naive_fixed_ab(acb_ptr th, ulong ab, acb_srcptr zs, slong nb, const acb_mat_t tau, slong prec) noexcept + void acb_theta_naive_all(acb_ptr th, acb_srcptr zs, slong nb, const acb_mat_t tau, slong prec) noexcept + void acb_theta_jet_all(acb_ptr dth, acb_srcptr z, const acb_mat_t tau, slong ord, slong prec) noexcept + void acb_theta_jet_naive_fixed_ab(acb_ptr dth, ulong ab, acb_srcptr z, const acb_mat_t tau, slong ord, slong prec) noexcept + void acb_theta_jet_naive_all(acb_ptr dth, acb_srcptr z, const acb_mat_t tau, slong ord, slong prec) noexcept + slong sp2gz_dim(const fmpz_mat_t mat) noexcept + void sp2gz_set_blocks(fmpz_mat_t mat, const fmpz_mat_t alpha, const fmpz_mat_t beta, const fmpz_mat_t gamma, const fmpz_mat_t delta) noexcept + void sp2gz_j(fmpz_mat_t mat) noexcept + void sp2gz_block_diag(fmpz_mat_t mat, const fmpz_mat_t U) noexcept + void sp2gz_trig(fmpz_mat_t mat, const fmpz_mat_t S) noexcept + void sp2gz_embed(fmpz_mat_t res, const fmpz_mat_t mat) noexcept + void sp2gz_restrict(fmpz_mat_t res, const fmpz_mat_t mat) noexcept + slong sp2gz_nb_fundamental(slong g) noexcept + void sp2gz_fundamental(fmpz_mat_t mat, slong j) noexcept + bint sp2gz_is_correct(const fmpz_mat_t mat) noexcept + bint sp2gz_is_j(const fmpz_mat_t mat) noexcept + bint sp2gz_is_block_diag(const fmpz_mat_t mat) noexcept + bint sp2gz_is_trig(const fmpz_mat_t mat) noexcept + bint sp2gz_is_embedded(fmpz_mat_t res, const fmpz_mat_t mat) noexcept + void sp2gz_inv(fmpz_mat_t inv, const fmpz_mat_t mat) noexcept + fmpz_mat_struct * sp2gz_decompose(slong * nb, const fmpz_mat_t mat) noexcept + void sp2gz_randtest(fmpz_mat_t mat, flint_rand_t state, slong bits) noexcept + void acb_siegel_cocycle(acb_mat_t c, const fmpz_mat_t mat, const acb_mat_t tau, slong prec) noexcept + void acb_siegel_transform_cocycle_inv(acb_mat_t w, acb_mat_t c, acb_mat_t cinv, const fmpz_mat_t mat, const acb_mat_t tau, slong prec) noexcept + void acb_siegel_transform(acb_mat_t w, const fmpz_mat_t mat, const acb_mat_t tau, slong prec) noexcept + void acb_siegel_transform_z(acb_ptr r, acb_mat_t w, const fmpz_mat_t mat, acb_srcptr z, const acb_mat_t tau, slong prec) noexcept + void acb_siegel_cho(arb_mat_t C, const acb_mat_t tau, slong prec) noexcept + void acb_siegel_yinv(arb_mat_t Yinv, const acb_mat_t tau, slong prec) noexcept + void acb_siegel_reduce(fmpz_mat_t mat, const acb_mat_t tau, slong prec) noexcept + bint acb_siegel_is_reduced(const acb_mat_t tau, slong tol_exp, slong prec) noexcept + void acb_siegel_randtest(acb_mat_t tau, flint_rand_t state, slong prec, slong mag_bits) noexcept + void acb_siegel_randtest_reduced(acb_mat_t tau, flint_rand_t state, slong prec, slong mag_bits) noexcept + void acb_siegel_randtest_vec(acb_ptr z, flint_rand_t state, slong g, slong prec) noexcept + void acb_theta_char_get_slong(slong * n, ulong a, slong g) noexcept + ulong acb_theta_char_get_a(const slong * n, slong g) noexcept + void acb_theta_char_get_arb(arb_ptr v, ulong a, slong g) noexcept + void acb_theta_char_get_acb(acb_ptr v, ulong a, slong g) noexcept + slong acb_theta_char_dot(ulong a, ulong b, slong g) noexcept + slong acb_theta_char_dot_slong(ulong a, const slong * n, slong g) noexcept + void acb_theta_char_dot_acb(acb_t x, ulong a, acb_srcptr z, slong g, slong prec) noexcept + bint acb_theta_char_is_even(ulong ab, slong g) noexcept + bint acb_theta_char_is_goepel(ulong ch1, ulong ch2, ulong ch3, ulong ch4, slong g) noexcept + bint acb_theta_char_is_syzygous(ulong ch1, ulong ch2, ulong ch3, slong g) noexcept + void acb_theta_eld_init(acb_theta_eld_t E, slong d, slong g) noexcept + void acb_theta_eld_clear(acb_theta_eld_t E) noexcept + int acb_theta_eld_set(acb_theta_eld_t E, const arb_mat_t C, const arf_t R2, arb_srcptr v) noexcept + void acb_theta_eld_points(slong * pts, const acb_theta_eld_t E) noexcept + void acb_theta_eld_border(slong * pts, const acb_theta_eld_t E) noexcept + bint acb_theta_eld_contains(const acb_theta_eld_t E, slong * pt) noexcept + void acb_theta_eld_print(const acb_theta_eld_t E) noexcept + void acb_theta_naive_radius(arf_t R2, arf_t eps, const arb_mat_t C, slong ord, slong prec) noexcept + void acb_theta_naive_reduce(arb_ptr v, acb_ptr new_zs, arb_ptr as, acb_ptr cs, arb_ptr us, acb_srcptr zs, slong nb, const acb_mat_t tau, slong prec) noexcept + void acb_theta_naive_term(acb_t res, acb_srcptr z, const acb_mat_t tau, slong * tup, slong * n, slong prec) noexcept + void acb_theta_naive_worker(acb_ptr th, slong len, acb_srcptr zs, slong nb, const acb_mat_t tau, const acb_theta_eld_t E, slong ord, slong prec, acb_theta_naive_worker_t worker) noexcept + void acb_theta_naive_00(acb_ptr th, acb_srcptr zs, slong nb, const acb_mat_t tau, slong prec) noexcept + void acb_theta_naive_0b(acb_ptr th, acb_srcptr zs, slong nb, const acb_mat_t tau, slong prec) noexcept + void acb_theta_naive_fixed_a(acb_ptr th, ulong a, acb_srcptr zs, slong nb, const acb_mat_t tau, slong prec) noexcept + slong acb_theta_jet_nb(slong ord, slong g) noexcept + slong acb_theta_jet_total_order(const slong * tup, slong g) noexcept + void acb_theta_jet_tuples(slong * tups, slong ord, slong g) noexcept + slong acb_theta_jet_index(const slong * tup, slong g) noexcept + void acb_theta_jet_mul(acb_ptr res, acb_srcptr v1, acb_srcptr v2, slong ord, slong g, slong prec) noexcept + void acb_theta_jet_compose(acb_ptr res, acb_srcptr v, const acb_mat_t N, slong ord, slong prec) noexcept + void acb_theta_jet_exp_pi_i(acb_ptr res, arb_srcptr a, slong ord, slong g, slong prec) noexcept + void acb_theta_jet_naive_radius(arf_t R2, arf_t eps, arb_srcptr v, const arb_mat_t C, slong ord, slong prec) noexcept + void acb_theta_jet_naive_00(acb_ptr dth, acb_srcptr z, const acb_mat_t tau, slong ord, slong prec) noexcept + void acb_theta_jet_error_bounds(arb_ptr err, acb_srcptr z, const acb_mat_t tau, acb_srcptr dth, slong ord, slong prec) noexcept + void acb_theta_dist_pt(arb_t d, arb_srcptr v, const arb_mat_t C, slong * n, slong prec) noexcept + void acb_theta_dist_lat(arb_t d, arb_srcptr v, const arb_mat_t C, slong prec) noexcept + void acb_theta_dist_a0(arb_ptr d, acb_srcptr z, const acb_mat_t tau, slong prec) noexcept + slong acb_theta_dist_addprec(const arb_t d) noexcept + void acb_theta_agm_hadamard(acb_ptr res, acb_srcptr a, slong g, slong prec) noexcept + void acb_theta_agm_sqrt(acb_ptr res, acb_srcptr a, acb_srcptr rts, slong nb, slong prec) noexcept + void acb_theta_agm_mul(acb_ptr res, acb_srcptr a1, acb_srcptr a2, slong g, slong prec) noexcept + void acb_theta_agm_mul_tight(acb_ptr res, acb_srcptr a0, acb_srcptr a, arb_srcptr d0, arb_srcptr d, slong g, slong prec) noexcept + int acb_theta_ql_a0_naive(acb_ptr th, acb_srcptr t, acb_srcptr z, arb_srcptr d0, arb_srcptr d, const acb_mat_t tau, slong guard, slong prec) noexcept + int acb_theta_ql_a0_split(acb_ptr th, acb_srcptr t, acb_srcptr z, arb_srcptr d, const acb_mat_t tau, slong s, slong guard, slong prec, acb_theta_ql_worker_t worker) noexcept + int acb_theta_ql_a0_steps(acb_ptr th, acb_srcptr t, acb_srcptr z, arb_srcptr d0, arb_srcptr d, const acb_mat_t tau, slong nb_steps, slong s, slong guard, slong prec, acb_theta_ql_worker_t worker) noexcept + slong acb_theta_ql_a0_nb_steps(const arb_mat_t C, slong s, slong prec) noexcept + int acb_theta_ql_a0(acb_ptr th, acb_srcptr t, acb_srcptr z, arb_srcptr d0, arb_srcptr d, const acb_mat_t tau, slong guard, slong prec) noexcept + slong acb_theta_ql_reduce(acb_ptr new_z, acb_t c, arb_t u, slong * n1, acb_srcptr z, const acb_mat_t tau, slong prec) noexcept + void acb_theta_ql_all(acb_ptr th, acb_srcptr z, const acb_mat_t tau, int sqr, slong prec) noexcept + void acb_theta_jet_ql_bounds(arb_t c, arb_t rho, acb_srcptr z, const acb_mat_t tau, slong ord) noexcept + void acb_theta_jet_ql_radius(arf_t eps, arf_t err, const arb_t c, const arb_t rho, slong ord, slong g, slong prec) noexcept + void acb_theta_jet_ql_finite_diff(acb_ptr dth, const arf_t eps, const arf_t err, acb_srcptr val, slong ord, slong g, slong prec) noexcept + void acb_theta_jet_ql_all(acb_ptr dth, acb_srcptr z, const acb_mat_t tau, slong ord, slong prec) noexcept + ulong acb_theta_transform_char(slong * e, const fmpz_mat_t mat, ulong ab) noexcept + void acb_theta_transform_sqrtdet(acb_t res, const acb_mat_t tau, slong prec) noexcept + slong acb_theta_transform_kappa(acb_t sqrtdet, const fmpz_mat_t mat, const acb_mat_t tau, slong prec) noexcept + slong acb_theta_transform_kappa2(const fmpz_mat_t mat) noexcept + void acb_theta_transform_proj(acb_ptr res, const fmpz_mat_t mat, acb_srcptr th, int sqr, slong prec) noexcept + void acb_theta_g2_jet_naive_1(acb_ptr dth, const acb_mat_t tau, slong prec) noexcept + void acb_theta_g2_detk_symj(acb_poly_t res, const acb_mat_t m, const acb_poly_t f, slong k, slong j, slong prec) noexcept + void acb_theta_g2_transvectant(acb_poly_t res, const acb_poly_t g, const acb_poly_t h, slong m, slong n, slong k, slong prec) noexcept + void acb_theta_g2_transvectant_lead(acb_t res, const acb_poly_t g, const acb_poly_t h, slong m, slong n, slong k, slong prec) noexcept + slong acb_theta_g2_character(const fmpz_mat_t mat) noexcept + void acb_theta_g2_psi4(acb_t res, acb_srcptr th2, slong prec) noexcept + void acb_theta_g2_psi6(acb_t res, acb_srcptr th2, slong prec) noexcept + void acb_theta_g2_chi10(acb_t res, acb_srcptr th2, slong prec) noexcept + void acb_theta_g2_chi12(acb_t res, acb_srcptr th2, slong prec) noexcept + void acb_theta_g2_chi5(acb_t res, acb_srcptr th, slong prec) noexcept + void acb_theta_g2_chi35(acb_t res, acb_srcptr th, slong prec) noexcept + void acb_theta_g2_chi3_6(acb_poly_t res, acb_srcptr dth, slong prec) noexcept + void acb_theta_g2_sextic(acb_poly_t res, const acb_mat_t tau, slong prec) noexcept + void acb_theta_g2_sextic_chi5(acb_poly_t res, acb_t chi5, const acb_mat_t tau, slong prec) noexcept + void acb_theta_g2_covariants(acb_poly_struct * res, const acb_poly_t f, slong prec) noexcept + void acb_theta_g2_covariants_lead(acb_ptr res, const acb_poly_t f, slong prec) noexcept diff --git a/src/sage/libs/flint/acf.pxd b/src/sage/libs/flint/acf.pxd new file mode 100644 index 00000000000..0e65a589a7e --- /dev/null +++ b/src/sage/libs/flint/acf.pxd @@ -0,0 +1,30 @@ +# distutils: libraries = flint +# distutils: depends = flint/acf.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void acf_init(acf_t x) noexcept + void acf_clear(acf_t x) noexcept + void acf_swap(acf_t z, acf_t x) noexcept + slong acf_allocated_bytes(const acf_t x) noexcept + arf_ptr acf_real_ptr(acf_t z) noexcept + arf_ptr acf_imag_ptr(acf_t z) noexcept + void acf_set(acf_t z, const acf_t x) noexcept + bint acf_equal(const acf_t x, const acf_t y) noexcept + int acf_add(acf_t res, const acf_t x, const acf_t y, slong prec, arf_rnd_t rnd) noexcept + int acf_sub(acf_t res, const acf_t x, const acf_t y, slong prec, arf_rnd_t rnd) noexcept + int acf_mul(acf_t res, const acf_t x, const acf_t y, slong prec, arf_rnd_t rnd) noexcept + void acf_approx_inv(acf_t res, const acf_t x, slong prec, arf_rnd_t rnd) noexcept + void acf_approx_div(acf_t res, const acf_t x, const acf_t y, slong prec, arf_rnd_t rnd) noexcept + void acf_approx_sqrt(acf_t res, const acf_t x, slong prec, arf_rnd_t rnd) noexcept + void acf_approx_dot(acf_t res, const acf_t initial, int subtract, acf_srcptr x, slong xstep, acf_srcptr y, slong ystep, slong len, slong prec, arf_rnd_t rnd) noexcept diff --git a/src/sage/libs/flint/aprcl.pxd b/src/sage/libs/flint/aprcl.pxd new file mode 100644 index 00000000000..4eaa71b85bc --- /dev/null +++ b/src/sage/libs/flint/aprcl.pxd @@ -0,0 +1,82 @@ +# distutils: libraries = flint +# distutils: depends = flint/aprcl.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + bint aprcl_is_prime(const fmpz_t n) noexcept + bint aprcl_is_prime_jacobi(const fmpz_t n) noexcept + bint aprcl_is_prime_gauss(const fmpz_t n) noexcept + primality_test_status _aprcl_is_prime_jacobi(const fmpz_t n, const aprcl_config config) noexcept + primality_test_status _aprcl_is_prime_gauss(const fmpz_t n, const aprcl_config config) noexcept + bint aprcl_is_prime_gauss_min_R(const fmpz_t n, ulong R) noexcept + bint aprcl_is_prime_final_division(const fmpz_t n, const fmpz_t s, ulong r) noexcept + void aprcl_config_gauss_init(aprcl_config conf, const fmpz_t n) noexcept + void aprcl_config_gauss_init_min_R(aprcl_config conf, const fmpz_t n, ulong R) noexcept + void aprcl_config_gauss_clear(aprcl_config conf) noexcept + ulong aprcl_R_value(const fmpz_t n) noexcept + void aprcl_config_jacobi_init(aprcl_config conf, const fmpz_t n) noexcept + void aprcl_config_jacobi_clear(aprcl_config conf) noexcept + void unity_zp_init(unity_zp f, ulong p, ulong exp, const fmpz_t n) noexcept + void unity_zp_clear(unity_zp f) noexcept + void unity_zp_copy(unity_zp f, const unity_zp g) noexcept + void unity_zp_swap(unity_zp f, unity_zp q) noexcept + void unity_zp_set_zero(unity_zp f) noexcept + slong unity_zp_is_unity(unity_zp f) noexcept + bint unity_zp_equal(unity_zp f, unity_zp g) noexcept + void unity_zp_print(const unity_zp f) noexcept + void unity_zp_coeff_set_fmpz(unity_zp f, ulong ind, const fmpz_t x) noexcept + void unity_zp_coeff_set_ui(unity_zp f, ulong ind, ulong x) noexcept + void unity_zp_coeff_add_fmpz(unity_zp f, ulong ind, const fmpz_t x) noexcept + void unity_zp_coeff_add_ui(unity_zp f, ulong ind, ulong x) noexcept + void unity_zp_coeff_inc(unity_zp f, ulong ind) noexcept + void unity_zp_coeff_dec(unity_zp f, ulong ind) noexcept + void unity_zp_mul_scalar_fmpz(unity_zp f, const unity_zp g, const fmpz_t s) noexcept + void unity_zp_mul_scalar_ui(unity_zp f, const unity_zp g, ulong s) noexcept + void unity_zp_add(unity_zp f, const unity_zp g, const unity_zp h) noexcept + void unity_zp_mul(unity_zp f, const unity_zp g, const unity_zp h) noexcept + void unity_zp_sqr(unity_zp f, const unity_zp g) noexcept + void unity_zp_mul_inplace(unity_zp f, const unity_zp g, const unity_zp h, fmpz_t * t) noexcept + void unity_zp_sqr_inplace(unity_zp f, const unity_zp g, fmpz_t * t) noexcept + void unity_zp_pow_fmpz(unity_zp f, const unity_zp g, const fmpz_t pow) noexcept + void unity_zp_pow_ui(unity_zp f, const unity_zp g, ulong pow) noexcept + ulong _unity_zp_pow_select_k(const fmpz_t n) noexcept + void unity_zp_pow_2k_fmpz(unity_zp f, const unity_zp g, const fmpz_t pow) noexcept + void unity_zp_pow_2k_ui(unity_zp f, const unity_zp g, ulong pow) noexcept + void unity_zp_pow_sliding_fmpz(unity_zp f, unity_zp g, const fmpz_t pow) noexcept + void _unity_zp_reduce_cyclotomic_divmod(unity_zp f) noexcept + void _unity_zp_reduce_cyclotomic(unity_zp f) noexcept + void unity_zp_reduce_cyclotomic(unity_zp f, const unity_zp g) noexcept + void unity_zp_aut(unity_zp f, const unity_zp g, ulong x) noexcept + void unity_zp_aut_inv(unity_zp f, const unity_zp g, ulong x) noexcept + void unity_zp_jacobi_sum_pq(unity_zp f, ulong q, ulong p) noexcept + void unity_zp_jacobi_sum_2q_one(unity_zp f, ulong q) noexcept + void unity_zp_jacobi_sum_2q_two(unity_zp f, ulong q) noexcept + void unity_zpq_init(unity_zpq f, ulong q, ulong p, const fmpz_t n) noexcept + void unity_zpq_clear(unity_zpq f) noexcept + void unity_zpq_copy(unity_zpq f, const unity_zpq g) noexcept + void unity_zpq_swap(unity_zpq f, unity_zpq q) noexcept + bint unity_zpq_equal(const unity_zpq f, const unity_zpq g) noexcept + slong unity_zpq_p_unity(const unity_zpq f) noexcept + bint unity_zpq_is_p_unity(const unity_zpq f) noexcept + bint unity_zpq_is_p_unity_generator(const unity_zpq f) noexcept + void unity_zpq_coeff_set_fmpz(unity_zpq f, slong i, slong j, const fmpz_t x) noexcept + void unity_zpq_coeff_set_ui(unity_zpq f, slong i, slong j, ulong x) noexcept + void unity_zpq_coeff_add(unity_zpq f, slong i, slong j, const fmpz_t x) noexcept + void unity_zpq_add(unity_zpq f, const unity_zpq g, const unity_zpq h) noexcept + void unity_zpq_mul(unity_zpq f, const unity_zpq g, const unity_zpq h) noexcept + void _unity_zpq_mul_unity_p(unity_zpq f) noexcept + void unity_zpq_mul_unity_p_pow(unity_zpq f, const unity_zpq g, slong k) noexcept + void unity_zpq_pow(unity_zpq f, const unity_zpq g, const fmpz_t p) noexcept + void unity_zpq_pow_ui(unity_zpq f, const unity_zpq g, ulong p) noexcept + void unity_zpq_gauss_sum(unity_zpq f, ulong q, ulong p) noexcept + void unity_zpq_gauss_sum_sigma_pow(unity_zpq f, ulong q, ulong p) noexcept diff --git a/src/sage/libs/flint/arb.pxd b/src/sage/libs/flint/arb.pxd new file mode 100644 index 00000000000..9da42e43fb8 --- /dev/null +++ b/src/sage/libs/flint/arb.pxd @@ -0,0 +1,380 @@ +# distutils: libraries = flint +# distutils: depends = flint/arb.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void arb_init(arb_t x) noexcept + void arb_clear(arb_t x) noexcept + arb_ptr _arb_vec_init(slong n) noexcept + void _arb_vec_clear(arb_ptr v, slong n) noexcept + void arb_swap(arb_t x, arb_t y) noexcept + slong arb_allocated_bytes(const arb_t x) noexcept + slong _arb_vec_allocated_bytes(arb_srcptr vec, slong len) noexcept + double _arb_vec_estimate_allocated_bytes(slong len, slong prec) noexcept + void arb_set(arb_t y, const arb_t x) noexcept + void arb_set_arf(arb_t y, const arf_t x) noexcept + void arb_set_si(arb_t y, slong x) noexcept + void arb_set_ui(arb_t y, ulong x) noexcept + void arb_set_d(arb_t y, double x) noexcept + void arb_set_fmpz(arb_t y, const fmpz_t x) noexcept + void arb_set_fmpz_2exp(arb_t y, const fmpz_t x, const fmpz_t e) noexcept + void arb_set_round(arb_t y, const arb_t x, slong prec) noexcept + void arb_set_round_fmpz(arb_t y, const fmpz_t x, slong prec) noexcept + void arb_set_round_fmpz_2exp(arb_t y, const fmpz_t x, const fmpz_t e, slong prec) noexcept + void arb_set_fmpq(arb_t y, const fmpq_t x, slong prec) noexcept + int arb_set_str(arb_t res, const char * inp, slong prec) noexcept + char * arb_get_str(const arb_t x, slong n, ulong flags) noexcept + void arb_zero(arb_t x) noexcept + void arb_one(arb_t f) noexcept + void arb_pos_inf(arb_t x) noexcept + void arb_neg_inf(arb_t x) noexcept + void arb_zero_pm_inf(arb_t x) noexcept + void arb_indeterminate(arb_t x) noexcept + void arb_zero_pm_one(arb_t x) noexcept + void arb_unit_interval(arb_t x) noexcept + void arb_print(const arb_t x) noexcept + void arb_fprint(FILE * file, const arb_t x) noexcept + void arb_printd(const arb_t x, slong digits) noexcept + void arb_fprintd(FILE * file, const arb_t x, slong digits) noexcept + void arb_printn(const arb_t x, slong digits, ulong flags) noexcept + void arb_fprintn(FILE * file, const arb_t x, slong digits, ulong flags) noexcept + char * arb_dump_str(const arb_t x) noexcept + int arb_load_str(arb_t x, const char * str) noexcept + int arb_dump_file(FILE * stream, const arb_t x) noexcept + int arb_load_file(arb_t x, FILE * stream) noexcept + void arb_randtest(arb_t x, flint_rand_t state, slong prec, slong mag_bits) noexcept + void arb_randtest_exact(arb_t x, flint_rand_t state, slong prec, slong mag_bits) noexcept + void arb_randtest_precise(arb_t x, flint_rand_t state, slong prec, slong mag_bits) noexcept + void arb_randtest_positive(arb_t x, flint_rand_t state, slong prec, slong mag_bits) noexcept + void arb_randtest_wide(arb_t x, flint_rand_t state, slong prec, slong mag_bits) noexcept + void arb_randtest_special(arb_t x, flint_rand_t state, slong prec, slong mag_bits) noexcept + void arb_get_rand_fmpq(fmpq_t q, flint_rand_t state, const arb_t x, slong bits) noexcept + void arb_urandom(arb_t x, flint_rand_t state, slong prec) noexcept + void arb_get_mid_arb(arb_t m, const arb_t x) noexcept + void arb_get_rad_arb(arb_t r, const arb_t x) noexcept + void arb_add_error_arf(arb_t x, const arf_t err) noexcept + void arb_add_error_mag(arb_t x, const mag_t err) noexcept + void arb_add_error(arb_t x, const arb_t err) noexcept + void arb_add_error_2exp_si(arb_t x, slong e) noexcept + void arb_add_error_2exp_fmpz(arb_t x, const fmpz_t e) noexcept + void arb_union(arb_t z, const arb_t x, const arb_t y, slong prec) noexcept + int arb_intersection(arb_t z, const arb_t x, const arb_t y, slong prec) noexcept + void arb_nonnegative_part(arb_t res, const arb_t x) noexcept + void arb_get_abs_ubound_arf(arf_t u, const arb_t x, slong prec) noexcept + void arb_get_abs_lbound_arf(arf_t u, const arb_t x, slong prec) noexcept + void arb_get_ubound_arf(arf_t u, const arb_t x, slong prec) noexcept + void arb_get_lbound_arf(arf_t u, const arb_t x, slong prec) noexcept + void arb_get_mag(mag_t z, const arb_t x) noexcept + void arb_get_mag_lower(mag_t z, const arb_t x) noexcept + void arb_get_mag_lower_nonnegative(mag_t z, const arb_t x) noexcept + void arb_get_interval_fmpz_2exp(fmpz_t a, fmpz_t b, fmpz_t exp, const arb_t x) noexcept + void arb_set_interval_mag(arb_t x, const mag_t a, const mag_t b, slong prec) noexcept + void arb_set_interval_arf(arb_t x, const arf_t a, const arf_t b, slong prec) noexcept + void arb_set_interval_mpfr(arb_t x, const mpfr_t a, const mpfr_t b, slong prec) noexcept + void arb_set_interval_neg_pos_mag(arb_t x, const mag_t a, const mag_t b, slong prec) noexcept + void arb_get_interval_arf(arf_t a, arf_t b, const arb_t x, slong prec) noexcept + void arb_get_interval_mpfr(mpfr_t a, mpfr_t b, const arb_t x) noexcept + slong arb_rel_error_bits(const arb_t x) noexcept + slong arb_rel_accuracy_bits(const arb_t x) noexcept + slong arb_rel_one_accuracy_bits(const arb_t x) noexcept + slong arb_bits(const arb_t x) noexcept + void arb_trim(arb_t y, const arb_t x) noexcept + int arb_get_unique_fmpz(fmpz_t z, const arb_t x) noexcept + void arb_floor(arb_t y, const arb_t x, slong prec) noexcept + void arb_ceil(arb_t y, const arb_t x, slong prec) noexcept + void arb_trunc(arb_t y, const arb_t x, slong prec) noexcept + void arb_nint(arb_t y, const arb_t x, slong prec) noexcept + void arb_get_fmpz_mid_rad_10exp(fmpz_t mid, fmpz_t rad, fmpz_t exp, const arb_t x, slong n) noexcept + int arb_can_round_arf(const arb_t x, slong prec, arf_rnd_t rnd) noexcept + int arb_can_round_mpfr(const arb_t x, slong prec, mpfr_rnd_t rnd) noexcept + bint arb_is_zero(const arb_t x) noexcept + bint arb_is_nonzero(const arb_t x) noexcept + bint arb_is_one(const arb_t f) noexcept + bint arb_is_finite(const arb_t x) noexcept + bint arb_is_exact(const arb_t x) noexcept + bint arb_is_int(const arb_t x) noexcept + bint arb_is_int_2exp_si(const arb_t x, slong e) noexcept + bint arb_equal(const arb_t x, const arb_t y) noexcept + bint arb_equal_si(const arb_t x, slong y) noexcept + bint arb_is_positive(const arb_t x) noexcept + bint arb_is_nonnegative(const arb_t x) noexcept + bint arb_is_negative(const arb_t x) noexcept + bint arb_is_nonpositive(const arb_t x) noexcept + bint arb_overlaps(const arb_t x, const arb_t y) noexcept + bint arb_contains_arf(const arb_t x, const arf_t y) noexcept + bint arb_contains_fmpq(const arb_t x, const fmpq_t y) noexcept + bint arb_contains_fmpz(const arb_t x, const fmpz_t y) noexcept + bint arb_contains_si(const arb_t x, slong y) noexcept + bint arb_contains_mpfr(const arb_t x, const mpfr_t y) noexcept + bint arb_contains(const arb_t x, const arb_t y) noexcept + bint arb_contains_int(const arb_t x) noexcept + bint arb_contains_zero(const arb_t x) noexcept + bint arb_contains_negative(const arb_t x) noexcept + bint arb_contains_nonpositive(const arb_t x) noexcept + bint arb_contains_positive(const arb_t x) noexcept + bint arb_contains_nonnegative(const arb_t x) noexcept + bint arb_contains_interior(const arb_t x, const arb_t y) noexcept + bint arb_eq(const arb_t x, const arb_t y) noexcept + bint arb_ne(const arb_t x, const arb_t y) noexcept + bint arb_lt(const arb_t x, const arb_t y) noexcept + bint arb_le(const arb_t x, const arb_t y) noexcept + bint arb_gt(const arb_t x, const arb_t y) noexcept + bint arb_ge(const arb_t x, const arb_t y) noexcept + void arb_neg(arb_t y, const arb_t x) noexcept + void arb_neg_round(arb_t y, const arb_t x, slong prec) noexcept + void arb_abs(arb_t y, const arb_t x) noexcept + void arb_nonnegative_abs(arb_t y, const arb_t x) noexcept + void arb_sgn(arb_t y, const arb_t x) noexcept + int arb_sgn_nonzero(const arb_t x) noexcept + void arb_min(arb_t z, const arb_t x, const arb_t y, slong prec) noexcept + void arb_max(arb_t z, const arb_t x, const arb_t y, slong prec) noexcept + void arb_minmax(arb_t z1, arb_t z2, const arb_t x, const arb_t y, slong prec) noexcept + void arb_add(arb_t z, const arb_t x, const arb_t y, slong prec) noexcept + void arb_add_arf(arb_t z, const arb_t x, const arf_t y, slong prec) noexcept + void arb_add_ui(arb_t z, const arb_t x, ulong y, slong prec) noexcept + void arb_add_si(arb_t z, const arb_t x, slong y, slong prec) noexcept + void arb_add_fmpz(arb_t z, const arb_t x, const fmpz_t y, slong prec) noexcept + void arb_add_fmpz_2exp(arb_t z, const arb_t x, const fmpz_t m, const fmpz_t e, slong prec) noexcept + void arb_sub(arb_t z, const arb_t x, const arb_t y, slong prec) noexcept + void arb_sub_arf(arb_t z, const arb_t x, const arf_t y, slong prec) noexcept + void arb_sub_ui(arb_t z, const arb_t x, ulong y, slong prec) noexcept + void arb_sub_si(arb_t z, const arb_t x, slong y, slong prec) noexcept + void arb_sub_fmpz(arb_t z, const arb_t x, const fmpz_t y, slong prec) noexcept + void arb_mul(arb_t z, const arb_t x, const arb_t y, slong prec) noexcept + void arb_mul_arf(arb_t z, const arb_t x, const arf_t y, slong prec) noexcept + void arb_mul_si(arb_t z, const arb_t x, slong y, slong prec) noexcept + void arb_mul_ui(arb_t z, const arb_t x, ulong y, slong prec) noexcept + void arb_mul_fmpz(arb_t z, const arb_t x, const fmpz_t y, slong prec) noexcept + void arb_mul_2exp_si(arb_t y, const arb_t x, slong e) noexcept + void arb_mul_2exp_fmpz(arb_t y, const arb_t x, const fmpz_t e) noexcept + void arb_addmul(arb_t z, const arb_t x, const arb_t y, slong prec) noexcept + void arb_addmul_arf(arb_t z, const arb_t x, const arf_t y, slong prec) noexcept + void arb_addmul_si(arb_t z, const arb_t x, slong y, slong prec) noexcept + void arb_addmul_ui(arb_t z, const arb_t x, ulong y, slong prec) noexcept + void arb_addmul_fmpz(arb_t z, const arb_t x, const fmpz_t y, slong prec) noexcept + void arb_submul(arb_t z, const arb_t x, const arb_t y, slong prec) noexcept + void arb_submul_arf(arb_t z, const arb_t x, const arf_t y, slong prec) noexcept + void arb_submul_si(arb_t z, const arb_t x, slong y, slong prec) noexcept + void arb_submul_ui(arb_t z, const arb_t x, ulong y, slong prec) noexcept + void arb_submul_fmpz(arb_t z, const arb_t x, const fmpz_t y, slong prec) noexcept + void arb_fma(arb_t res, const arb_t x, const arb_t y, const arb_t z, slong prec) noexcept + void arb_fma_arf(arb_t res, const arb_t x, const arf_t y, const arb_t z, slong prec) noexcept + void arb_fma_si(arb_t res, const arb_t x, slong y, const arb_t z, slong prec) noexcept + void arb_fma_ui(arb_t res, const arb_t x, ulong y, const arb_t z, slong prec) noexcept + void arb_fma_fmpz(arb_t res, const arb_t x, const fmpz_t y, const arb_t z, slong prec) noexcept + void arb_inv(arb_t z, const arb_t x, slong prec) noexcept + void arb_div(arb_t z, const arb_t x, const arb_t y, slong prec) noexcept + void arb_div_arf(arb_t z, const arb_t x, const arf_t y, slong prec) noexcept + void arb_div_si(arb_t z, const arb_t x, slong y, slong prec) noexcept + void arb_div_ui(arb_t z, const arb_t x, ulong y, slong prec) noexcept + void arb_div_fmpz(arb_t z, const arb_t x, const fmpz_t y, slong prec) noexcept + void arb_fmpz_div_fmpz(arb_t z, const fmpz_t x, const fmpz_t y, slong prec) noexcept + void arb_ui_div(arb_t z, ulong x, const arb_t y, slong prec) noexcept + void arb_div_2expm1_ui(arb_t z, const arb_t x, ulong n, slong prec) noexcept + 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) noexcept + 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) noexcept + 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) noexcept + 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) noexcept + 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) noexcept + 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) noexcept + 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) noexcept + 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) noexcept + void arb_dot_fmpz(arb_t res, const arb_t initial, int subtract, arb_srcptr x, slong xstep, const fmpz * y, slong ystep, slong len, slong prec) noexcept + void arb_sqrt(arb_t z, const arb_t x, slong prec) noexcept + void arb_sqrt_arf(arb_t z, const arf_t x, slong prec) noexcept + void arb_sqrt_fmpz(arb_t z, const fmpz_t x, slong prec) noexcept + void arb_sqrt_ui(arb_t z, ulong x, slong prec) noexcept + void arb_sqrtpos(arb_t z, const arb_t x, slong prec) noexcept + void arb_hypot(arb_t z, const arb_t x, const arb_t y, slong prec) noexcept + void arb_rsqrt(arb_t z, const arb_t x, slong prec) noexcept + void arb_rsqrt_ui(arb_t z, ulong x, slong prec) noexcept + void arb_sqrt1pm1(arb_t z, const arb_t x, slong prec) noexcept + void arb_root_ui(arb_t z, const arb_t x, ulong k, slong prec) noexcept + void arb_root(arb_t z, const arb_t x, ulong k, slong prec) noexcept + void arb_sqr(arb_t y, const arb_t x, slong prec) noexcept + void arb_pow_fmpz_binexp(arb_t y, const arb_t b, const fmpz_t e, slong prec) noexcept + void arb_pow_fmpz(arb_t y, const arb_t b, const fmpz_t e, slong prec) noexcept + void arb_pow_ui(arb_t y, const arb_t b, ulong e, slong prec) noexcept + void arb_ui_pow_ui(arb_t y, ulong b, ulong e, slong prec) noexcept + void arb_si_pow_ui(arb_t y, slong b, ulong e, slong prec) noexcept + void arb_pow_fmpq(arb_t y, const arb_t x, const fmpq_t a, slong prec) noexcept + void arb_pow(arb_t z, const arb_t x, const arb_t y, slong prec) noexcept + void arb_log_ui(arb_t z, ulong x, slong prec) noexcept + void arb_log_fmpz(arb_t z, const fmpz_t x, slong prec) noexcept + void arb_log_arf(arb_t z, const arf_t x, slong prec) noexcept + void arb_log(arb_t z, const arb_t x, slong prec) noexcept + void arb_log_ui_from_prev(arb_t log_k1, ulong k1, arb_t log_k0, ulong k0, slong prec) noexcept + void arb_log1p(arb_t z, const arb_t x, slong prec) noexcept + void arb_log_base_ui(arb_t res, const arb_t x, ulong b, slong prec) noexcept + void arb_log_hypot(arb_t res, const arb_t x, const arb_t y, slong prec) noexcept + void arb_exp(arb_t z, const arb_t x, slong prec) noexcept + void arb_expm1(arb_t z, const arb_t x, slong prec) noexcept + void arb_exp_invexp(arb_t z, arb_t w, const arb_t x, slong prec) noexcept + void arb_sin(arb_t s, const arb_t x, slong prec) noexcept + void arb_cos(arb_t c, const arb_t x, slong prec) noexcept + void arb_sin_cos(arb_t s, arb_t c, const arb_t x, slong prec) noexcept + void arb_sin_pi(arb_t s, const arb_t x, slong prec) noexcept + void arb_cos_pi(arb_t c, const arb_t x, slong prec) noexcept + void arb_sin_cos_pi(arb_t s, arb_t c, const arb_t x, slong prec) noexcept + void arb_tan(arb_t y, const arb_t x, slong prec) noexcept + void arb_cot(arb_t y, const arb_t x, slong prec) noexcept + void arb_sin_cos_pi_fmpq(arb_t s, arb_t c, const fmpq_t x, slong prec) noexcept + void arb_sin_pi_fmpq(arb_t s, const fmpq_t x, slong prec) noexcept + void arb_cos_pi_fmpq(arb_t c, const fmpq_t x, slong prec) noexcept + void arb_tan_pi(arb_t y, const arb_t x, slong prec) noexcept + void arb_cot_pi(arb_t y, const arb_t x, slong prec) noexcept + void arb_sec(arb_t res, const arb_t x, slong prec) noexcept + void arb_csc(arb_t res, const arb_t x, slong prec) noexcept + void arb_csc_pi(arb_t res, const arb_t x, slong prec) noexcept + void arb_sinc(arb_t z, const arb_t x, slong prec) noexcept + void arb_sinc_pi(arb_t z, const arb_t x, slong prec) noexcept + void arb_atan_arf(arb_t z, const arf_t x, slong prec) noexcept + void arb_atan(arb_t z, const arb_t x, slong prec) noexcept + void arb_atan2(arb_t z, const arb_t b, const arb_t a, slong prec) noexcept + void arb_asin(arb_t z, const arb_t x, slong prec) noexcept + void arb_acos(arb_t z, const arb_t x, slong prec) noexcept + void arb_sinh(arb_t s, const arb_t x, slong prec) noexcept + void arb_cosh(arb_t c, const arb_t x, slong prec) noexcept + void arb_sinh_cosh(arb_t s, arb_t c, const arb_t x, slong prec) noexcept + void arb_tanh(arb_t y, const arb_t x, slong prec) noexcept + void arb_coth(arb_t y, const arb_t x, slong prec) noexcept + void arb_sech(arb_t res, const arb_t x, slong prec) noexcept + void arb_csch(arb_t res, const arb_t x, slong prec) noexcept + void arb_atanh(arb_t z, const arb_t x, slong prec) noexcept + void arb_asinh(arb_t z, const arb_t x, slong prec) noexcept + void arb_acosh(arb_t z, const arb_t x, slong prec) noexcept + void arb_const_pi(arb_t z, slong prec) noexcept + void arb_const_sqrt_pi(arb_t z, slong prec) noexcept + void arb_const_log_sqrt2pi(arb_t z, slong prec) noexcept + void arb_const_log2(arb_t z, slong prec) noexcept + void arb_const_log10(arb_t z, slong prec) noexcept + void arb_const_euler(arb_t z, slong prec) noexcept + void arb_const_catalan(arb_t z, slong prec) noexcept + void arb_const_e(arb_t z, slong prec) noexcept + void arb_const_khinchin(arb_t z, slong prec) noexcept + void arb_const_glaisher(arb_t z, slong prec) noexcept + void arb_const_apery(arb_t z, slong prec) noexcept + void arb_const_reciprocal_fibonacci(arb_t z, slong prec) noexcept + void arb_lambertw(arb_t res, const arb_t x, int flags, slong prec) noexcept + void arb_rising_ui(arb_t z, const arb_t x, ulong n, slong prec) noexcept + void arb_rising(arb_t z, const arb_t x, const arb_t n, slong prec) noexcept + void arb_rising_fmpq_ui(arb_t z, const fmpq_t x, ulong n, slong prec) noexcept + void arb_fac_ui(arb_t z, ulong n, slong prec) noexcept + void arb_doublefac_ui(arb_t z, ulong n, slong prec) noexcept + void arb_bin_ui(arb_t z, const arb_t n, ulong k, slong prec) noexcept + void arb_bin_uiui(arb_t z, ulong n, ulong k, slong prec) noexcept + void arb_gamma(arb_t z, const arb_t x, slong prec) noexcept + void arb_gamma_fmpq(arb_t z, const fmpq_t x, slong prec) noexcept + void arb_gamma_fmpz(arb_t z, const fmpz_t x, slong prec) noexcept + void arb_lgamma(arb_t z, const arb_t x, slong prec) noexcept + void arb_rgamma(arb_t z, const arb_t x, slong prec) noexcept + void arb_digamma(arb_t y, const arb_t x, slong prec) noexcept + void arb_zeta_ui_vec_borwein(arb_ptr z, ulong start, slong num, ulong step, slong prec) noexcept + void arb_zeta_ui_asymp(arb_t x, ulong s, slong prec) noexcept + void arb_zeta_ui_euler_product(arb_t z, ulong s, slong prec) noexcept + void arb_zeta_ui_bernoulli(arb_t x, ulong s, slong prec) noexcept + void arb_zeta_ui_borwein_bsplit(arb_t x, ulong s, slong prec) noexcept + void arb_zeta_ui_vec(arb_ptr x, ulong start, slong num, slong prec) noexcept + void arb_zeta_ui_vec_even(arb_ptr x, ulong start, slong num, slong prec) noexcept + void arb_zeta_ui_vec_odd(arb_ptr x, ulong start, slong num, slong prec) noexcept + void arb_zeta_ui(arb_t x, ulong s, slong prec) noexcept + void arb_zeta(arb_t z, const arb_t s, slong prec) noexcept + void arb_hurwitz_zeta(arb_t z, const arb_t s, const arb_t a, slong prec) noexcept + void arb_bernoulli_ui(arb_t b, ulong n, slong prec) noexcept + void arb_bernoulli_fmpz(arb_t b, const fmpz_t n, slong prec) noexcept + void arb_bernoulli_ui_zeta(arb_t b, ulong n, slong prec) noexcept + void arb_bernoulli_poly_ui(arb_t res, ulong n, const arb_t x, slong prec) noexcept + void arb_power_sum_vec(arb_ptr res, const arb_t a, const arb_t b, slong len, slong prec) noexcept + void arb_polylog(arb_t w, const arb_t s, const arb_t z, slong prec) noexcept + void arb_polylog_si(arb_t w, slong s, const arb_t z, slong prec) noexcept + void arb_fib_fmpz(arb_t z, const fmpz_t n, slong prec) noexcept + void arb_fib_ui(arb_t z, ulong n, slong prec) noexcept + void arb_agm(arb_t z, const arb_t x, const arb_t y, slong prec) noexcept + void arb_chebyshev_t_ui(arb_t a, ulong n, const arb_t x, slong prec) noexcept + void arb_chebyshev_u_ui(arb_t a, ulong n, const arb_t x, slong prec) noexcept + void arb_chebyshev_t2_ui(arb_t a, arb_t b, ulong n, const arb_t x, slong prec) noexcept + void arb_chebyshev_u2_ui(arb_t a, arb_t b, ulong n, const arb_t x, slong prec) noexcept + 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) noexcept + 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) noexcept + void arb_bell_fmpz(arb_t res, const fmpz_t n, slong prec) noexcept + void arb_bell_ui(arb_t res, ulong n, slong prec) noexcept + void arb_euler_number_fmpz(arb_t res, const fmpz_t n, slong prec) noexcept + void arb_euler_number_ui(arb_t res, ulong n, slong prec) noexcept + void arb_fmpz_euler_number_ui_multi_mod(fmpz_t res, ulong n, double alpha) noexcept + void arb_fmpz_euler_number_ui(fmpz_t res, ulong n) noexcept + void arb_partitions_fmpz(arb_t res, const fmpz_t n, slong prec) noexcept + void arb_partitions_ui(arb_t res, ulong n, slong prec) noexcept + void arb_primorial_nth_ui(arb_t res, ulong n, slong prec) noexcept + void arb_primorial_ui(arb_t res, ulong n, slong prec) noexcept + void _arb_atan_taylor_naive(mp_ptr y, mp_limb_t * error, mp_srcptr x, mp_size_t xn, ulong N, int alternating) noexcept + void _arb_atan_taylor_rs(mp_ptr y, mp_limb_t * error, mp_srcptr x, mp_size_t xn, ulong N, int alternating) noexcept + void _arb_exp_taylor_naive(mp_ptr y, mp_limb_t * error, mp_srcptr x, mp_size_t xn, ulong N) noexcept + void _arb_exp_taylor_rs(mp_ptr y, mp_limb_t * error, mp_srcptr x, mp_size_t xn, ulong N) noexcept + void _arb_sin_cos_taylor_naive(mp_ptr ysin, mp_ptr ycos, mp_limb_t * error, mp_srcptr x, mp_size_t xn, ulong N) noexcept + void _arb_sin_cos_taylor_rs(mp_ptr ysin, mp_ptr ycos, mp_limb_t * error, mp_srcptr x, mp_size_t xn, ulong N, int sinonly, int alternating) noexcept + int _arb_get_mpn_fixed_mod_log2(mp_ptr w, fmpz_t q, mp_limb_t * error, const arf_t x, mp_size_t wn) noexcept + int _arb_get_mpn_fixed_mod_pi4(mp_ptr w, fmpz_t q, int * octant, mp_limb_t * error, const arf_t x, mp_size_t wn) noexcept + slong _arb_exp_taylor_bound(slong mag, slong prec) noexcept + void arb_exp_arf_bb(arb_t z, const arf_t x, slong prec, int m1) noexcept + 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) noexcept + 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) noexcept + void arb_exp_arf_rs_generic(arb_t res, const arf_t x, slong prec, int minus_one) noexcept + 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) noexcept + 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) noexcept + void arb_atan_arf_bb(arb_t z, const arf_t x, slong prec) noexcept + void arb_atan_frac_bsplit(arb_t s, const fmpz_t p, const fmpz_t q, int hyperbolic, slong prec) noexcept + void arb_sin_cos_arf_generic(arb_t s, arb_t c, const arf_t x, slong prec) noexcept + void arb_sin_cos_arf_bb(arb_t s, arb_t c, const arf_t x, slong prec) noexcept + void arb_sin_cos_wide(arb_t s, arb_t c, const arb_t x, slong prec) noexcept + void arb_sin_cos_generic(arb_t s, arb_t c, const arb_t x, slong prec) noexcept + void arb_log_primes_vec_bsplit(arb_ptr res, slong n, slong prec) noexcept + void _arb_log_p_ensure_cached(slong prec) noexcept + void arb_exp_arf_log_reduction(arb_t res, const arf_t x, slong prec, int minus_one) noexcept + void arb_exp_arf_generic(arb_t z, const arf_t x, slong prec, int minus_one) noexcept + void arb_exp_arf(arb_t z, const arf_t x, slong prec, int minus_one, slong maglim) noexcept + void arb_log_newton(arb_t res, const arb_t x, slong prec) noexcept + void arb_log_arf_newton(arb_t res, const arf_t x, slong prec) noexcept + void arb_atan_gauss_primes_vec_bsplit(arb_ptr res, slong n, slong prec) noexcept + void _arb_atan_gauss_p_ensure_cached(slong prec) noexcept + void arb_sin_cos_arf_atan_reduction(arb_t res1, arb_t res2, const arf_t x, slong prec) noexcept + void arb_atan_newton(arb_t res, const arb_t x, slong prec) noexcept + void arb_atan_arf_newton(arb_t res, const arf_t x, slong prec) noexcept + void _arb_vec_zero(arb_ptr vec, slong n) noexcept + bint _arb_vec_is_zero(arb_srcptr vec, slong len) noexcept + bint _arb_vec_is_finite(arb_srcptr x, slong len) noexcept + bint _arb_vec_equal(arb_srcptr vec1, arb_srcptr vec2, slong len) noexcept + bint _arb_vec_overlaps(arb_srcptr vec1, arb_srcptr vec2, slong len) noexcept + bint _arb_vec_contains(arb_srcptr vec1, arb_srcptr vec2, slong len) noexcept + void _arb_vec_set(arb_ptr res, arb_srcptr vec, slong len) noexcept + void _arb_vec_set_round(arb_ptr res, arb_srcptr vec, slong len, slong prec) noexcept + void _arb_vec_swap(arb_ptr vec1, arb_ptr vec2, slong len) noexcept + void _arb_vec_neg(arb_ptr B, arb_srcptr A, slong n) noexcept + void _arb_vec_sub(arb_ptr C, arb_srcptr A, arb_srcptr B, slong n, slong prec) noexcept + void _arb_vec_add(arb_ptr C, arb_srcptr A, arb_srcptr B, slong n, slong prec) noexcept + void _arb_vec_scalar_mul(arb_ptr res, arb_srcptr vec, slong len, const arb_t c, slong prec) noexcept + void _arb_vec_scalar_div(arb_ptr res, arb_srcptr vec, slong len, const arb_t c, slong prec) noexcept + void _arb_vec_scalar_mul_fmpz(arb_ptr res, arb_srcptr vec, slong len, const fmpz_t c, slong prec) noexcept + void _arb_vec_scalar_mul_2exp_si(arb_ptr res, arb_srcptr src, slong len, slong c) noexcept + void _arb_vec_scalar_addmul(arb_ptr res, arb_srcptr vec, slong len, const arb_t c, slong prec) noexcept + void _arb_vec_get_mag(mag_t bound, arb_srcptr vec, slong len) noexcept + slong _arb_vec_bits(arb_srcptr x, slong len) noexcept + void _arb_vec_set_powers(arb_ptr xs, const arb_t x, slong len, slong prec) noexcept + void _arb_vec_add_error_arf_vec(arb_ptr res, arf_srcptr err, slong len) noexcept + void _arb_vec_add_error_mag_vec(arb_ptr res, mag_srcptr err, slong len) noexcept + void _arb_vec_indeterminate(arb_ptr vec, slong len) noexcept + void _arb_vec_trim(arb_ptr res, arb_srcptr vec, slong len) noexcept + int _arb_vec_get_unique_fmpz_vec(fmpz * res, arb_srcptr vec, slong len) noexcept + void _arb_vec_printn(arb_srcptr vec, slong len, slong digits, ulong flags) noexcept + void _arb_vec_printd(arb_srcptr vec, slong len, slong ndigits) noexcept + +from .arb_macros cimport * diff --git a/src/sage/libs/flint/arb_calc.pxd b/src/sage/libs/flint/arb_calc.pxd new file mode 100644 index 00000000000..47ff5273d9c --- /dev/null +++ b/src/sage/libs/flint/arb_calc.pxd @@ -0,0 +1,29 @@ +# distutils: libraries = flint +# distutils: depends = flint/arb_calc.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void arf_interval_init(arf_interval_t v) noexcept + void arf_interval_clear(arf_interval_t v) noexcept + arf_interval_ptr _arf_interval_vec_init(slong n) noexcept + void _arf_interval_vec_clear(arf_interval_ptr v, slong n) noexcept + void arf_interval_set(arf_interval_t v, const arf_interval_t u) noexcept + void arf_interval_swap(arf_interval_t v, arf_interval_t u) noexcept + void arf_interval_get_arb(arb_t x, const arf_interval_t v, slong prec) noexcept + void arf_interval_printd(const arf_interval_t v, slong n) noexcept + void arf_interval_fprintd(FILE * file, const arf_interval_t v, slong n) noexcept + slong arb_calc_isolate_roots(arf_interval_ptr * found, int ** flags, arb_calc_func_t func, void * param, const arf_interval_t interval, slong maxdepth, slong maxeval, slong maxfound, slong prec) noexcept + int arb_calc_refine_root_bisect(arf_interval_t r, arb_calc_func_t func, void * param, const arf_interval_t start, slong it, slong prec) noexcept + void arb_calc_newton_conv_factor(arf_t conv_factor, arb_calc_func_t func, void * param, const arb_t conv_region, slong prec) noexcept + int arb_calc_newton_step(arb_t xnew, arb_calc_func_t func, void * param, const arb_t x, const arb_t conv_region, const arf_t conv_factor, slong prec) noexcept + int arb_calc_refine_root_newton(arb_t r, arb_calc_func_t func, void * param, const arb_t start, const arb_t conv_region, const arf_t conv_factor, slong eval_extra_prec, slong prec) noexcept diff --git a/src/sage/libs/flint/arb_fmpz_poly.pxd b/src/sage/libs/flint/arb_fmpz_poly.pxd new file mode 100644 index 00000000000..cee8a0ef8dc --- /dev/null +++ b/src/sage/libs/flint/arb_fmpz_poly.pxd @@ -0,0 +1,32 @@ +# distutils: libraries = flint +# distutils: depends = flint/arb_fmpz_poly.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void _arb_fmpz_poly_evaluate_arb_horner(arb_t res, const fmpz * poly, slong len, const arb_t x, slong prec) noexcept + void arb_fmpz_poly_evaluate_arb_horner(arb_t res, const fmpz_poly_t poly, const arb_t x, slong prec) noexcept + void _arb_fmpz_poly_evaluate_arb_rectangular(arb_t res, const fmpz * poly, slong len, const arb_t x, slong prec) noexcept + void arb_fmpz_poly_evaluate_arb_rectangular(arb_t res, const fmpz_poly_t poly, const arb_t x, slong prec) noexcept + void _arb_fmpz_poly_evaluate_arb(arb_t res, const fmpz * poly, slong len, const arb_t x, slong prec) noexcept + void arb_fmpz_poly_evaluate_arb(arb_t res, const fmpz_poly_t poly, const arb_t x, slong prec) noexcept + void _arb_fmpz_poly_evaluate_acb_horner(acb_t res, const fmpz * poly, slong len, const acb_t x, slong prec) noexcept + void arb_fmpz_poly_evaluate_acb_horner(acb_t res, const fmpz_poly_t poly, const acb_t x, slong prec) noexcept + void _arb_fmpz_poly_evaluate_acb_rectangular(acb_t res, const fmpz * poly, slong len, const acb_t x, slong prec) noexcept + void arb_fmpz_poly_evaluate_acb_rectangular(acb_t res, const fmpz_poly_t poly, const acb_t x, slong prec) noexcept + void _arb_fmpz_poly_evaluate_acb(acb_t res, const fmpz * poly, slong len, const acb_t x, slong prec) noexcept + void arb_fmpz_poly_evaluate_acb(acb_t res, const fmpz_poly_t poly, const acb_t x, slong prec) noexcept + ulong arb_fmpz_poly_deflation(const fmpz_poly_t poly) noexcept + void arb_fmpz_poly_deflate(fmpz_poly_t res, const fmpz_poly_t poly, ulong deflation) noexcept + void arb_fmpz_poly_complex_roots(acb_ptr roots, const fmpz_poly_t poly, int flags, slong prec) noexcept + void arb_fmpz_poly_cos_minpoly(fmpz_poly_t res, ulong n) noexcept + void arb_fmpz_poly_gauss_period_minpoly(fmpz_poly_t res, ulong q, ulong n) noexcept diff --git a/src/sage/libs/flint/arb_fpwrap.pxd b/src/sage/libs/flint/arb_fpwrap.pxd new file mode 100644 index 00000000000..7a5aada626f --- /dev/null +++ b/src/sage/libs/flint/arb_fpwrap.pxd @@ -0,0 +1,213 @@ +# distutils: libraries = flint +# distutils: depends = flint/arb_fpwrap.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + int arb_fpwrap_double_exp(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_exp(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_expm1(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_expm1(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_log(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_log(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_log1p(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_log1p(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_pow(double * res, double x, double y, int flags) noexcept + int arb_fpwrap_cdouble_pow(complex_double * res, complex_double x, complex_double y, int flags) noexcept + int arb_fpwrap_double_sqrt(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_sqrt(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_rsqrt(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_rsqrt(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_cbrt(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_cbrt(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_sin(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_sin(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_cos(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_cos(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_tan(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_tan(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_cot(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_cot(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_sec(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_sec(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_csc(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_csc(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_sinc(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_sinc(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_sin_pi(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_sin_pi(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_cos_pi(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_cos_pi(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_tan_pi(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_tan_pi(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_cot_pi(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_cot_pi(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_sinc_pi(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_sinc_pi(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_asin(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_asin(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_acos(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_acos(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_atan(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_atan(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_atan2(double * res, double x1, double x2, int flags) noexcept + int arb_fpwrap_double_asinh(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_asinh(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_acosh(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_acosh(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_atanh(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_atanh(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_lambertw(double * res, double x, slong branch, int flags) noexcept + int arb_fpwrap_cdouble_lambertw(complex_double * res, complex_double x, slong branch, int flags) noexcept + int arb_fpwrap_double_rising(double * res, double x, double n, int flags) noexcept + int arb_fpwrap_cdouble_rising(complex_double * res, complex_double x, complex_double n, int flags) noexcept + int arb_fpwrap_double_gamma(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_gamma(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_rgamma(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_rgamma(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_lgamma(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_lgamma(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_digamma(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_digamma(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_zeta(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_zeta(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_hurwitz_zeta(double * res, double s, double z, int flags) noexcept + int arb_fpwrap_cdouble_hurwitz_zeta(complex_double * res, complex_double s, complex_double z, int flags) noexcept + int arb_fpwrap_double_lerch_phi(double * res, double z, double s, double a, int flags) noexcept + int arb_fpwrap_cdouble_lerch_phi(complex_double * res, complex_double z, complex_double s, complex_double a, int flags) noexcept + int arb_fpwrap_double_barnes_g(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_barnes_g(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_log_barnes_g(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_log_barnes_g(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_polygamma(double * res, double s, double z, int flags) noexcept + int arb_fpwrap_cdouble_polygamma(complex_double * res, complex_double s, complex_double z, int flags) noexcept + int arb_fpwrap_double_polylog(double * res, double s, double z, int flags) noexcept + int arb_fpwrap_cdouble_polylog(complex_double * res, complex_double s, complex_double z, int flags) noexcept + int arb_fpwrap_cdouble_dirichlet_eta(complex_double * res, complex_double s, int flags) noexcept + int arb_fpwrap_cdouble_riemann_xi(complex_double * res, complex_double s, int flags) noexcept + int arb_fpwrap_cdouble_hardy_theta(complex_double * res, complex_double z, int flags) noexcept + int arb_fpwrap_cdouble_hardy_z(complex_double * res, complex_double z, int flags) noexcept + int arb_fpwrap_cdouble_zeta_zero(complex_double * res, ulong n, int flags) noexcept + int arb_fpwrap_double_erf(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_erf(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_erfc(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_erfc(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_erfi(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_erfi(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_erfinv(double * res, double x, int flags) noexcept + int arb_fpwrap_double_erfcinv(double * res, double x, int flags) noexcept + int arb_fpwrap_double_fresnel_s(double * res, double x, int normalized, int flags) noexcept + int arb_fpwrap_cdouble_fresnel_s(complex_double * res, complex_double x, int normalized, int flags) noexcept + int arb_fpwrap_double_fresnel_c(double * res, double x, int normalized, int flags) noexcept + int arb_fpwrap_cdouble_fresnel_c(complex_double * res, complex_double x, int normalized, int flags) noexcept + int arb_fpwrap_double_gamma_upper(double * res, double s, double z, int regularized, int flags) noexcept + int arb_fpwrap_cdouble_gamma_upper(complex_double * res, complex_double s, complex_double z, int regularized, int flags) noexcept + int arb_fpwrap_double_gamma_lower(double * res, double s, double z, int regularized, int flags) noexcept + int arb_fpwrap_cdouble_gamma_lower(complex_double * res, complex_double s, complex_double z, int regularized, int flags) noexcept + int arb_fpwrap_double_beta_lower(double * res, double a, double b, double z, int regularized, int flags) noexcept + int arb_fpwrap_cdouble_beta_lower(complex_double * res, complex_double a, complex_double b, complex_double z, int regularized, int flags) noexcept + int arb_fpwrap_double_exp_integral_e(double * res, double s, double z, int flags) noexcept + int arb_fpwrap_cdouble_exp_integral_e(complex_double * res, complex_double s, complex_double z, int flags) noexcept + int arb_fpwrap_double_exp_integral_ei(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_exp_integral_ei(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_sin_integral(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_sin_integral(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_cos_integral(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_cos_integral(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_sinh_integral(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_sinh_integral(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_cosh_integral(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_cosh_integral(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_log_integral(double * res, double x, int offset, int flags) noexcept + int arb_fpwrap_cdouble_log_integral(complex_double * res, complex_double x, int offset, int flags) noexcept + int arb_fpwrap_double_dilog(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_dilog(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_bessel_j(double * res, double nu, double x, int flags) noexcept + int arb_fpwrap_cdouble_bessel_j(complex_double * res, complex_double nu, complex_double x, int flags) noexcept + int arb_fpwrap_double_bessel_y(double * res, double nu, double x, int flags) noexcept + int arb_fpwrap_cdouble_bessel_y(complex_double * res, complex_double nu, complex_double x, int flags) noexcept + int arb_fpwrap_double_bessel_i(double * res, double nu, double x, int flags) noexcept + int arb_fpwrap_cdouble_bessel_i(complex_double * res, complex_double nu, complex_double x, int flags) noexcept + int arb_fpwrap_double_bessel_k(double * res, double nu, double x, int flags) noexcept + int arb_fpwrap_cdouble_bessel_k(complex_double * res, complex_double nu, complex_double x, int flags) noexcept + int arb_fpwrap_double_bessel_k_scaled(double * res, double nu, double x, int flags) noexcept + int arb_fpwrap_cdouble_bessel_k_scaled(complex_double * res, complex_double nu, complex_double x, int flags) noexcept + int arb_fpwrap_double_airy_ai(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_airy_ai(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_airy_ai_prime(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_airy_ai_prime(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_airy_bi(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_airy_bi(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_airy_bi_prime(double * res, double x, int flags) noexcept + int arb_fpwrap_cdouble_airy_bi_prime(complex_double * res, complex_double x, int flags) noexcept + int arb_fpwrap_double_airy_ai_zero(double * res, ulong n, int flags) noexcept + int arb_fpwrap_double_airy_ai_prime_zero(double * res, ulong n, int flags) noexcept + int arb_fpwrap_double_airy_bi_zero(double * res, ulong n, int flags) noexcept + int arb_fpwrap_double_airy_bi_prime_zero(double * res, ulong n, int flags) noexcept + int arb_fpwrap_double_coulomb_f(double * res, double l, double eta, double x, int flags) noexcept + int arb_fpwrap_cdouble_coulomb_f(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags) noexcept + int arb_fpwrap_double_coulomb_g(double * res, double l, double eta, double x, int flags) noexcept + int arb_fpwrap_cdouble_coulomb_g(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags) noexcept + int arb_fpwrap_cdouble_coulomb_hpos(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags) noexcept + int arb_fpwrap_cdouble_coulomb_hneg(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags) noexcept + int arb_fpwrap_double_chebyshev_t(double * res, double n, double x, int flags) noexcept + int arb_fpwrap_cdouble_chebyshev_t(complex_double * res, complex_double n, complex_double x, int flags) noexcept + int arb_fpwrap_double_chebyshev_u(double * res, double n, double x, int flags) noexcept + int arb_fpwrap_cdouble_chebyshev_u(complex_double * res, complex_double n, complex_double x, int flags) noexcept + int arb_fpwrap_double_jacobi_p(double * res, double n, double a, double b, double x, int flags) noexcept + int arb_fpwrap_cdouble_jacobi_p(complex_double * res, complex_double n, complex_double a, complex_double b, complex_double x, int flags) noexcept + int arb_fpwrap_double_gegenbauer_c(double * res, double n, double m, double x, int flags) noexcept + int arb_fpwrap_cdouble_gegenbauer_c(complex_double * res, complex_double n, complex_double m, complex_double x, int flags) noexcept + int arb_fpwrap_double_laguerre_l(double * res, double n, double m, double x, int flags) noexcept + int arb_fpwrap_cdouble_laguerre_l(complex_double * res, complex_double n, complex_double m, complex_double x, int flags) noexcept + int arb_fpwrap_double_hermite_h(double * res, double n, double x, int flags) noexcept + int arb_fpwrap_cdouble_hermite_h(complex_double * res, complex_double n, complex_double x, int flags) noexcept + int arb_fpwrap_double_legendre_p(double * res, double n, double m, double x, int type, int flags) noexcept + int arb_fpwrap_cdouble_legendre_p(complex_double * res, complex_double n, complex_double m, complex_double x, int type, int flags) noexcept + int arb_fpwrap_double_legendre_q(double * res, double n, double m, double x, int type, int flags) noexcept + int arb_fpwrap_cdouble_legendre_q(complex_double * res, complex_double n, complex_double m, complex_double x, int type, int flags) noexcept + int arb_fpwrap_double_legendre_root(double * res1, double * res2, ulong n, ulong k, int flags) noexcept + int arb_fpwrap_cdouble_spherical_y(complex_double * res, slong n, slong m, complex_double x1, complex_double x2, int flags) noexcept + int arb_fpwrap_double_hypgeom_0f1(double * res, double a, double x, int regularized, int flags) noexcept + int arb_fpwrap_cdouble_hypgeom_0f1(complex_double * res, complex_double a, complex_double x, int regularized, int flags) noexcept + int arb_fpwrap_double_hypgeom_1f1(double * res, double a, double b, double x, int regularized, int flags) noexcept + int arb_fpwrap_cdouble_hypgeom_1f1(complex_double * res, complex_double a, complex_double b, complex_double x, int regularized, int flags) noexcept + int arb_fpwrap_double_hypgeom_u(double * res, double a, double b, double x, int flags) noexcept + int arb_fpwrap_cdouble_hypgeom_u(complex_double * res, complex_double a, complex_double b, complex_double x, int flags) noexcept + int arb_fpwrap_double_hypgeom_2f1(double * res, double a, double b, double c, double x, int regularized, int flags) noexcept + int arb_fpwrap_cdouble_hypgeom_2f1(complex_double * res, complex_double a, complex_double b, complex_double c, complex_double x, int regularized, int flags) noexcept + int arb_fpwrap_double_hypgeom_pfq(double * res, const double * a, slong p, const double * b, slong q, double z, int regularized, int flags) noexcept + int arb_fpwrap_cdouble_hypgeom_pfq(complex_double * res, const complex_double * a, slong p, const complex_double * b, slong q, complex_double z, int regularized, int flags) noexcept + int arb_fpwrap_double_agm(double * res, double x, double y, int flags) noexcept + int arb_fpwrap_cdouble_agm(complex_double * res, complex_double x, complex_double y, int flags) noexcept + int arb_fpwrap_cdouble_elliptic_k(complex_double * res, complex_double m, int flags) noexcept + int arb_fpwrap_cdouble_elliptic_e(complex_double * res, complex_double m, int flags) noexcept + int arb_fpwrap_cdouble_elliptic_pi(complex_double * res, complex_double n, complex_double m, int flags) noexcept + int arb_fpwrap_cdouble_elliptic_f(complex_double * res, complex_double phi, complex_double m, int pi, int flags) noexcept + int arb_fpwrap_cdouble_elliptic_e_inc(complex_double * res, complex_double phi, complex_double m, int pi, int flags) noexcept + int arb_fpwrap_cdouble_elliptic_pi_inc(complex_double * res, complex_double n, complex_double phi, complex_double m, int pi, int flags) noexcept + int arb_fpwrap_cdouble_elliptic_rf(complex_double * res, complex_double x, complex_double y, complex_double z, int option, int flags) noexcept + int arb_fpwrap_cdouble_elliptic_rg(complex_double * res, complex_double x, complex_double y, complex_double z, int option, int flags) noexcept + int arb_fpwrap_cdouble_elliptic_rj(complex_double * res, complex_double x, complex_double y, complex_double z, complex_double w, int option, int flags) noexcept + int arb_fpwrap_cdouble_elliptic_p(complex_double * res, complex_double z, complex_double tau, int flags) noexcept + int arb_fpwrap_cdouble_elliptic_p_prime(complex_double * res, complex_double z, complex_double tau, int flags) noexcept + int arb_fpwrap_cdouble_elliptic_inv_p(complex_double * res, complex_double z, complex_double tau, int flags) noexcept + int arb_fpwrap_cdouble_elliptic_zeta(complex_double * res, complex_double z, complex_double tau, int flags) noexcept + int arb_fpwrap_cdouble_elliptic_sigma(complex_double * res, complex_double z, complex_double tau, int flags) noexcept + int arb_fpwrap_cdouble_jacobi_theta_1(complex_double * res, complex_double z, complex_double tau, int flags) noexcept + int arb_fpwrap_cdouble_jacobi_theta_2(complex_double * res, complex_double z, complex_double tau, int flags) noexcept + int arb_fpwrap_cdouble_jacobi_theta_3(complex_double * res, complex_double z, complex_double tau, int flags) noexcept + int arb_fpwrap_cdouble_jacobi_theta_4(complex_double * res, complex_double z, complex_double tau, int flags) noexcept + int arb_fpwrap_cdouble_dedekind_eta(complex_double * res, complex_double tau, int flags) noexcept + int arb_fpwrap_cdouble_modular_j(complex_double * res, complex_double tau, int flags) noexcept + int arb_fpwrap_cdouble_modular_lambda(complex_double * res, complex_double tau, int flags) noexcept + int arb_fpwrap_cdouble_modular_delta(complex_double * res, complex_double tau, int flags) noexcept diff --git a/src/sage/libs/flint/arb_hypgeom.pxd b/src/sage/libs/flint/arb_hypgeom.pxd new file mode 100644 index 00000000000..1d82b859eac --- /dev/null +++ b/src/sage/libs/flint/arb_hypgeom.pxd @@ -0,0 +1,145 @@ +# distutils: libraries = flint +# distutils: depends = flint/arb_hypgeom.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void _arb_hypgeom_rising_coeffs_1(ulong * c, ulong k, slong n) noexcept + void _arb_hypgeom_rising_coeffs_2(ulong * c, ulong k, slong n) noexcept + void _arb_hypgeom_rising_coeffs_fmpz(fmpz * c, ulong k, slong n) noexcept + void arb_hypgeom_rising_ui_forward(arb_t res, const arb_t x, ulong n, slong prec) noexcept + void arb_hypgeom_rising_ui_bs(arb_t res, const arb_t x, ulong n, slong prec) noexcept + void arb_hypgeom_rising_ui_rs(arb_t res, const arb_t x, ulong n, ulong m, slong prec) noexcept + void arb_hypgeom_rising_ui_rec(arb_t res, const arb_t x, ulong n, slong prec) noexcept + void arb_hypgeom_rising_ui(arb_t res, const arb_t x, ulong n, slong prec) noexcept + void arb_hypgeom_rising(arb_t res, const arb_t x, const arb_t n, slong prec) noexcept + void arb_hypgeom_rising_ui_jet_powsum(arb_ptr res, const arb_t x, ulong n, slong len, slong prec) noexcept + void arb_hypgeom_rising_ui_jet_bs(arb_ptr res, const arb_t x, ulong n, slong len, slong prec) noexcept + void arb_hypgeom_rising_ui_jet_rs(arb_ptr res, const arb_t x, ulong n, ulong m, slong len, slong prec) noexcept + void arb_hypgeom_rising_ui_jet(arb_ptr res, const arb_t x, ulong n, slong len, slong prec) noexcept + void _arb_hypgeom_gamma_stirling_term_bounds(slong * bound, const mag_t zinv, slong N) noexcept + void arb_hypgeom_gamma_stirling_sum_horner(arb_t res, const arb_t z, slong N, slong prec) noexcept + void arb_hypgeom_gamma_stirling_sum_improved(arb_t res, const arb_t z, slong N, slong K, slong prec) noexcept + void arb_hypgeom_gamma_stirling(arb_t res, const arb_t x, int reciprocal, slong prec) noexcept + int arb_hypgeom_gamma_taylor(arb_t res, const arb_t x, int reciprocal, slong prec) noexcept + void arb_hypgeom_gamma(arb_t res, const arb_t x, slong prec) noexcept + void arb_hypgeom_gamma_fmpq(arb_t res, const fmpq_t x, slong prec) noexcept + void arb_hypgeom_gamma_fmpz(arb_t res, const fmpz_t x, slong prec) noexcept + void arb_hypgeom_rgamma(arb_t res, const arb_t x, slong prec) noexcept + void arb_hypgeom_lgamma(arb_t res, const arb_t x, slong prec) noexcept + void arb_hypgeom_central_bin_ui(arb_t res, ulong n, slong prec) noexcept + void arb_hypgeom_pfq(arb_t res, arb_srcptr a, slong p, arb_srcptr b, slong q, const arb_t z, int regularized, slong prec) noexcept + void arb_hypgeom_0f1(arb_t res, const arb_t a, const arb_t z, int regularized, slong prec) noexcept + void arb_hypgeom_m(arb_t res, const arb_t a, const arb_t b, const arb_t z, int regularized, slong prec) noexcept + void arb_hypgeom_1f1(arb_t res, const arb_t a, const arb_t b, const arb_t z, int regularized, slong prec) noexcept + void arb_hypgeom_1f1_integration(arb_t res, const arb_t a, const arb_t b, const arb_t z, int regularized, slong prec) noexcept + void arb_hypgeom_u(arb_t res, const arb_t a, const arb_t b, const arb_t z, slong prec) noexcept + void arb_hypgeom_u_integration(arb_t res, const arb_t a, const arb_t b, const arb_t z, slong prec) noexcept + void arb_hypgeom_2f1(arb_t res, const arb_t a, const arb_t b, const arb_t c, const arb_t z, int regularized, slong prec) noexcept + void arb_hypgeom_2f1_integration(arb_t res, const arb_t a, const arb_t b, const arb_t c, const arb_t z, int regularized, slong prec) noexcept + void arb_hypgeom_erf(arb_t res, const arb_t z, slong prec) noexcept + void _arb_hypgeom_erf_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) noexcept + void arb_hypgeom_erf_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) noexcept + void arb_hypgeom_erfc(arb_t res, const arb_t z, slong prec) noexcept + void _arb_hypgeom_erfc_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) noexcept + void arb_hypgeom_erfc_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) noexcept + void arb_hypgeom_erfi(arb_t res, const arb_t z, slong prec) noexcept + void _arb_hypgeom_erfi_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) noexcept + void arb_hypgeom_erfi_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) noexcept + void arb_hypgeom_erfinv(arb_t res, const arb_t z, slong prec) noexcept + void arb_hypgeom_erfcinv(arb_t res, const arb_t z, slong prec) noexcept + void arb_hypgeom_fresnel(arb_t res1, arb_t res2, const arb_t z, int normalized, slong prec) noexcept + void _arb_hypgeom_fresnel_series(arb_ptr res1, arb_ptr res2, arb_srcptr z, slong zlen, int normalized, slong len, slong prec) noexcept + void arb_hypgeom_fresnel_series(arb_poly_t res1, arb_poly_t res2, const arb_poly_t z, int normalized, slong len, slong prec) noexcept + void arb_hypgeom_gamma_upper(arb_t res, const arb_t s, const arb_t z, int regularized, slong prec) noexcept + void arb_hypgeom_gamma_upper_integration(arb_t res, const arb_t s, const arb_t z, int regularized, slong prec) noexcept + void _arb_hypgeom_gamma_upper_series(arb_ptr res, const arb_t s, arb_srcptr z, slong zlen, int regularized, slong n, slong prec) noexcept + void arb_hypgeom_gamma_upper_series(arb_poly_t res, const arb_t s, const arb_poly_t z, int regularized, slong n, slong prec) noexcept + void arb_hypgeom_gamma_lower(arb_t res, const arb_t s, const arb_t z, int regularized, slong prec) noexcept + void _arb_hypgeom_gamma_lower_series(arb_ptr res, const arb_t s, arb_srcptr z, slong zlen, int regularized, slong n, slong prec) noexcept + void arb_hypgeom_gamma_lower_series(arb_poly_t res, const arb_t s, const arb_poly_t z, int regularized, slong n, slong prec) noexcept + void arb_hypgeom_beta_lower(arb_t res, const arb_t a, const arb_t b, const arb_t z, int regularized, slong prec) noexcept + void _arb_hypgeom_beta_lower_series(arb_ptr res, const arb_t a, const arb_t b, arb_srcptr z, slong zlen, int regularized, slong n, slong prec) noexcept + void arb_hypgeom_beta_lower_series(arb_poly_t res, const arb_t a, const arb_t b, const arb_poly_t z, int regularized, slong n, slong prec) noexcept + void _arb_hypgeom_gamma_lower_sum_rs_1(arb_t res, ulong p, ulong q, const arb_t z, slong N, slong prec) noexcept + void _arb_hypgeom_gamma_upper_sum_rs_1(arb_t res, ulong p, ulong q, const arb_t z, slong N, slong prec) noexcept + slong _arb_hypgeom_gamma_upper_fmpq_inf_choose_N(mag_t err, const fmpq_t a, const arb_t z, const mag_t abs_tol) noexcept + void _arb_hypgeom_gamma_upper_fmpq_inf_bsplit(arb_t res, const fmpq_t a, const arb_t z, slong N, slong prec) noexcept + slong _arb_hypgeom_gamma_lower_fmpq_0_choose_N(mag_t err, const fmpq_t a, const arb_t z, const mag_t abs_tol) noexcept + void _arb_hypgeom_gamma_lower_fmpq_0_bsplit(arb_t res, const fmpq_t a, const arb_t z, slong N, slong prec) noexcept + slong _arb_hypgeom_gamma_upper_singular_si_choose_N(mag_t err, slong n, const arb_t z, const mag_t abs_tol) noexcept + void _arb_hypgeom_gamma_upper_singular_si_bsplit(arb_t res, slong n, const arb_t z, slong N, slong prec) noexcept + void _arb_gamma_upper_fmpq_step_bsplit(arb_t Gz1, const fmpq_t a, const arb_t z0, const arb_t z1, const arb_t Gz0, const arb_t expmz0, const mag_t abs_tol, slong prec) noexcept + void arb_hypgeom_expint(arb_t res, const arb_t s, const arb_t z, slong prec) noexcept + void arb_hypgeom_ei(arb_t res, const arb_t z, slong prec) noexcept + void _arb_hypgeom_ei_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) noexcept + void arb_hypgeom_ei_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) noexcept + void _arb_hypgeom_si_asymp(arb_t res, const arb_t z, slong N, slong prec) noexcept + void _arb_hypgeom_si_1f2(arb_t res, const arb_t z, slong N, slong wp, slong prec) noexcept + void arb_hypgeom_si(arb_t res, const arb_t z, slong prec) noexcept + void _arb_hypgeom_si_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) noexcept + void arb_hypgeom_si_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) noexcept + void _arb_hypgeom_ci_asymp(arb_t res, const arb_t z, slong N, slong prec) noexcept + void _arb_hypgeom_ci_2f3(arb_t res, const arb_t z, slong N, slong wp, slong prec) noexcept + void arb_hypgeom_ci(arb_t res, const arb_t z, slong prec) noexcept + void _arb_hypgeom_ci_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) noexcept + void arb_hypgeom_ci_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) noexcept + void arb_hypgeom_shi(arb_t res, const arb_t z, slong prec) noexcept + void _arb_hypgeom_shi_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) noexcept + void arb_hypgeom_shi_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) noexcept + void arb_hypgeom_chi(arb_t res, const arb_t z, slong prec) noexcept + void _arb_hypgeom_chi_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) noexcept + void arb_hypgeom_chi_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) noexcept + void arb_hypgeom_li(arb_t res, const arb_t z, int offset, slong prec) noexcept + void _arb_hypgeom_li_series(arb_ptr res, arb_srcptr z, slong zlen, int offset, slong len, slong prec) noexcept + void arb_hypgeom_li_series(arb_poly_t res, const arb_poly_t z, int offset, slong len, slong prec) noexcept + void arb_hypgeom_bessel_j(arb_t res, const arb_t nu, const arb_t z, slong prec) noexcept + void arb_hypgeom_bessel_y(arb_t res, const arb_t nu, const arb_t z, slong prec) noexcept + void arb_hypgeom_bessel_jy(arb_t res1, arb_t res2, const arb_t nu, const arb_t z, slong prec) noexcept + void arb_hypgeom_bessel_i(arb_t res, const arb_t nu, const arb_t z, slong prec) noexcept + void arb_hypgeom_bessel_i_scaled(arb_t res, const arb_t nu, const arb_t z, slong prec) noexcept + void arb_hypgeom_bessel_k(arb_t res, const arb_t nu, const arb_t z, slong prec) noexcept + void arb_hypgeom_bessel_k_scaled(arb_t res, const arb_t nu, const arb_t z, slong prec) noexcept + void arb_hypgeom_bessel_i_integration(arb_t res, const arb_t nu, const arb_t z, int scaled, slong prec) noexcept + void arb_hypgeom_bessel_k_integration(arb_t res, const arb_t nu, const arb_t z, int scaled, slong prec) noexcept + void arb_hypgeom_airy(arb_t ai, arb_t ai_prime, arb_t bi, arb_t bi_prime, const arb_t z, slong prec) noexcept + void arb_hypgeom_airy_jet(arb_ptr ai, arb_ptr bi, const arb_t z, slong len, slong prec) noexcept + void _arb_hypgeom_airy_series(arb_ptr ai, arb_ptr ai_prime, arb_ptr bi, arb_ptr bi_prime, arb_srcptr z, slong zlen, slong len, slong prec) noexcept + void arb_hypgeom_airy_series(arb_poly_t ai, arb_poly_t ai_prime, arb_poly_t bi, arb_poly_t bi_prime, const arb_poly_t z, slong len, slong prec) noexcept + void arb_hypgeom_airy_zero(arb_t a, arb_t a_prime, arb_t b, arb_t b_prime, const fmpz_t n, slong prec) noexcept + void arb_hypgeom_coulomb(arb_t F, arb_t G, const arb_t l, const arb_t eta, const arb_t z, slong prec) noexcept + void arb_hypgeom_coulomb_jet(arb_ptr F, arb_ptr G, const arb_t l, const arb_t eta, const arb_t z, slong len, slong prec) noexcept + void _arb_hypgeom_coulomb_series(arb_ptr F, arb_ptr G, const arb_t l, const arb_t eta, arb_srcptr z, slong zlen, slong len, slong prec) noexcept + void arb_hypgeom_coulomb_series(arb_poly_t F, arb_poly_t G, const arb_t l, const arb_t eta, const arb_poly_t z, slong len, slong prec) noexcept + void arb_hypgeom_chebyshev_t(arb_t res, const arb_t nu, const arb_t z, slong prec) noexcept + void arb_hypgeom_chebyshev_u(arb_t res, const arb_t nu, const arb_t z, slong prec) noexcept + void arb_hypgeom_jacobi_p(arb_t res, const arb_t n, const arb_t a, const arb_t b, const arb_t z, slong prec) noexcept + void arb_hypgeom_gegenbauer_c(arb_t res, const arb_t n, const arb_t m, const arb_t z, slong prec) noexcept + void arb_hypgeom_laguerre_l(arb_t res, const arb_t n, const arb_t m, const arb_t z, slong prec) noexcept + void arb_hypgeom_hermite_h(arb_t res, const arb_t nu, const arb_t z, slong prec) noexcept + void arb_hypgeom_legendre_p(arb_t res, const arb_t n, const arb_t m, const arb_t z, int type, slong prec) noexcept + void arb_hypgeom_legendre_q(arb_t res, const arb_t n, const arb_t m, const arb_t z, int type, slong prec) noexcept + void arb_hypgeom_legendre_p_ui_deriv_bound(mag_t dp, mag_t dp2, ulong n, const arb_t x, const arb_t x2sub1) noexcept + void arb_hypgeom_legendre_p_ui_zero(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong K, slong prec) noexcept + void arb_hypgeom_legendre_p_ui_one(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong K, slong prec) noexcept + void arb_hypgeom_legendre_p_ui_asymp(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong K, slong prec) noexcept + void arb_hypgeom_legendre_p_ui_rec(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong prec) noexcept + void arb_hypgeom_legendre_p_ui(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong prec) noexcept + void arb_hypgeom_legendre_p_ui_root(arb_t res, arb_t weight, ulong n, ulong k, slong prec) noexcept + void arb_hypgeom_dilog(arb_t res, const arb_t z, slong prec) noexcept + void arb_hypgeom_sum_fmpq_arb_forward(arb_t res, const fmpq * a, slong alen, const fmpq * b, slong blen, const arb_t z, int reciprocal, slong N, slong prec) noexcept + void arb_hypgeom_sum_fmpq_arb_rs(arb_t res, const fmpq * a, slong alen, const fmpq * b, slong blen, const arb_t z, int reciprocal, slong N, slong prec) noexcept + void arb_hypgeom_sum_fmpq_arb(arb_t res, const fmpq * a, slong alen, const fmpq * b, slong blen, const arb_t z, int reciprocal, slong N, slong prec) noexcept + void arb_hypgeom_sum_fmpq_imag_arb_forward(arb_t res1, arb_t res2, const fmpq * a, slong alen, const fmpq * b, slong blen, const arb_t z, int reciprocal, slong N, slong prec) noexcept + void arb_hypgeom_sum_fmpq_imag_arb_rs(arb_t res1, arb_t res2, const fmpq * a, slong alen, const fmpq * b, slong blen, const arb_t z, int reciprocal, slong N, slong prec) noexcept + void arb_hypgeom_sum_fmpq_imag_arb_bs(arb_t res1, arb_t res2, const fmpq * a, slong alen, const fmpq * b, slong blen, const arb_t z, int reciprocal, slong N, slong prec) noexcept + void arb_hypgeom_sum_fmpq_imag_arb(arb_t res1, arb_t res2, const fmpq * a, slong alen, const fmpq * b, slong blen, const arb_t z, int reciprocal, slong N, slong prec) noexcept diff --git a/src/sage/libs/flint/arb_macros.pxd b/src/sage/libs/flint/arb_macros.pxd new file mode 100644 index 00000000000..46f9a516434 --- /dev/null +++ b/src/sage/libs/flint/arb_macros.pxd @@ -0,0 +1,8 @@ +# Macros from arb.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + arf_ptr arb_midref(arb_t x) + mag_ptr arb_radref(arb_t x) diff --git a/src/sage/libs/flint/arb_mat.pxd b/src/sage/libs/flint/arb_mat.pxd new file mode 100644 index 00000000000..133a4bac57f --- /dev/null +++ b/src/sage/libs/flint/arb_mat.pxd @@ -0,0 +1,138 @@ +# distutils: libraries = flint +# distutils: depends = flint/arb_mat.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void arb_mat_init(arb_mat_t mat, slong r, slong c) noexcept + void arb_mat_clear(arb_mat_t mat) noexcept + slong arb_mat_allocated_bytes(const arb_mat_t x) noexcept + void arb_mat_window_init(arb_mat_t window, const arb_mat_t mat, slong r1, slong c1, slong r2, slong c2) noexcept + void arb_mat_window_clear(arb_mat_t window) noexcept + void arb_mat_set(arb_mat_t dest, const arb_mat_t src) noexcept + void arb_mat_set_fmpz_mat(arb_mat_t dest, const fmpz_mat_t src) noexcept + void arb_mat_set_round_fmpz_mat(arb_mat_t dest, const fmpz_mat_t src, slong prec) noexcept + void arb_mat_set_fmpq_mat(arb_mat_t dest, const fmpq_mat_t src, slong prec) noexcept + void arb_mat_randtest(arb_mat_t mat, flint_rand_t state, slong prec, slong mag_bits) noexcept + void arb_mat_randtest_cho(arb_mat_t mat, flint_rand_t state, slong prec, slong mag_bits) noexcept + void arb_mat_randtest_spd(arb_mat_t mat, flint_rand_t state, slong prec, slong mag_bits) noexcept + void arb_mat_printd(const arb_mat_t mat, slong digits) noexcept + void arb_mat_fprintd(FILE * file, const arb_mat_t mat, slong digits) noexcept + bint arb_mat_equal(const arb_mat_t mat1, const arb_mat_t mat2) noexcept + bint arb_mat_overlaps(const arb_mat_t mat1, const arb_mat_t mat2) noexcept + bint arb_mat_contains(const arb_mat_t mat1, const arb_mat_t mat2) noexcept + bint arb_mat_contains_fmpz_mat(const arb_mat_t mat1, const fmpz_mat_t mat2) noexcept + bint arb_mat_contains_fmpq_mat(const arb_mat_t mat1, const fmpq_mat_t mat2) noexcept + bint arb_mat_eq(const arb_mat_t mat1, const arb_mat_t mat2) noexcept + bint arb_mat_ne(const arb_mat_t mat1, const arb_mat_t mat2) noexcept + bint arb_mat_is_empty(const arb_mat_t mat) noexcept + bint arb_mat_is_square(const arb_mat_t mat) noexcept + bint arb_mat_is_exact(const arb_mat_t mat) noexcept + bint arb_mat_is_zero(const arb_mat_t mat) noexcept + bint arb_mat_is_finite(const arb_mat_t mat) noexcept + bint arb_mat_is_triu(const arb_mat_t mat) noexcept + bint arb_mat_is_tril(const arb_mat_t mat) noexcept + bint arb_mat_is_diag(const arb_mat_t mat) noexcept + void arb_mat_zero(arb_mat_t mat) noexcept + void arb_mat_one(arb_mat_t mat) noexcept + void arb_mat_ones(arb_mat_t mat) noexcept + void arb_mat_indeterminate(arb_mat_t mat) noexcept + void arb_mat_hilbert(arb_mat_t mat, slong prec) noexcept + void arb_mat_pascal(arb_mat_t mat, int triangular, slong prec) noexcept + void arb_mat_stirling(arb_mat_t mat, int kind, slong prec) noexcept + void arb_mat_dct(arb_mat_t mat, int type, slong prec) noexcept + void arb_mat_transpose(arb_mat_t dest, const arb_mat_t src) noexcept + void arb_mat_bound_inf_norm(mag_t b, const arb_mat_t A) noexcept + void arb_mat_frobenius_norm(arb_t res, const arb_mat_t A, slong prec) noexcept + void arb_mat_bound_frobenius_norm(mag_t res, const arb_mat_t A) noexcept + void arb_mat_neg(arb_mat_t dest, const arb_mat_t src) noexcept + void arb_mat_add(arb_mat_t res, const arb_mat_t mat1, const arb_mat_t mat2, slong prec) noexcept + void arb_mat_sub(arb_mat_t res, const arb_mat_t mat1, const arb_mat_t mat2, slong prec) noexcept + void arb_mat_mul_classical(arb_mat_t C, const arb_mat_t A, const arb_mat_t B, slong prec) noexcept + void arb_mat_mul_threaded(arb_mat_t C, const arb_mat_t A, const arb_mat_t B, slong prec) noexcept + void arb_mat_mul_block(arb_mat_t C, const arb_mat_t A, const arb_mat_t B, slong prec) noexcept + void arb_mat_mul(arb_mat_t res, const arb_mat_t mat1, const arb_mat_t mat2, slong prec) noexcept + void arb_mat_mul_entrywise(arb_mat_t C, const arb_mat_t A, const arb_mat_t B, slong prec) noexcept + void arb_mat_sqr_classical(arb_mat_t B, const arb_mat_t A, slong prec) noexcept + void arb_mat_sqr(arb_mat_t res, const arb_mat_t mat, slong prec) noexcept + void arb_mat_pow_ui(arb_mat_t res, const arb_mat_t mat, ulong exp, slong prec) noexcept + void _arb_mat_addmul_rad_mag_fast(arb_mat_t C, mag_srcptr A, mag_srcptr B, slong ar, slong ac, slong bc) noexcept + void arb_mat_approx_mul(arb_mat_t res, const arb_mat_t mat1, const arb_mat_t mat2, slong prec) noexcept + void arb_mat_scalar_mul_2exp_si(arb_mat_t B, const arb_mat_t A, slong c) noexcept + void arb_mat_scalar_addmul_si(arb_mat_t B, const arb_mat_t A, slong c, slong prec) noexcept + void arb_mat_scalar_addmul_fmpz(arb_mat_t B, const arb_mat_t A, const fmpz_t c, slong prec) noexcept + void arb_mat_scalar_addmul_arb(arb_mat_t B, const arb_mat_t A, const arb_t c, slong prec) noexcept + void arb_mat_scalar_mul_si(arb_mat_t B, const arb_mat_t A, slong c, slong prec) noexcept + void arb_mat_scalar_mul_fmpz(arb_mat_t B, const arb_mat_t A, const fmpz_t c, slong prec) noexcept + void arb_mat_scalar_mul_arb(arb_mat_t B, const arb_mat_t A, const arb_t c, slong prec) noexcept + void arb_mat_scalar_div_si(arb_mat_t B, const arb_mat_t A, slong c, slong prec) noexcept + void arb_mat_scalar_div_fmpz(arb_mat_t B, const arb_mat_t A, const fmpz_t c, slong prec) noexcept + void arb_mat_scalar_div_arb(arb_mat_t B, const arb_mat_t A, const arb_t c, slong prec) noexcept + void _arb_mat_vector_mul_row(arb_ptr res, arb_srcptr v, const arb_mat_t A, slong prec) noexcept + void _arb_mat_vector_mul_col(arb_ptr res, const arb_mat_t A, arb_srcptr v, slong prec) noexcept + void arb_mat_vector_mul_row(arb_ptr res, arb_srcptr v, const arb_mat_t A, slong prec) noexcept + void arb_mat_vector_mul_col(arb_ptr res, const arb_mat_t A, arb_srcptr v, slong prec) noexcept + int arb_mat_lu_classical(slong * perm, arb_mat_t LU, const arb_mat_t A, slong prec) noexcept + int arb_mat_lu_recursive(slong * perm, arb_mat_t LU, const arb_mat_t A, slong prec) noexcept + int arb_mat_lu(slong * perm, arb_mat_t LU, const arb_mat_t A, slong prec) noexcept + void arb_mat_solve_tril_classical(arb_mat_t X, const arb_mat_t L, const arb_mat_t B, int unit, slong prec) noexcept + void arb_mat_solve_tril_recursive(arb_mat_t X, const arb_mat_t L, const arb_mat_t B, int unit, slong prec) noexcept + void arb_mat_solve_tril(arb_mat_t X, const arb_mat_t L, const arb_mat_t B, int unit, slong prec) noexcept + void arb_mat_solve_triu_classical(arb_mat_t X, const arb_mat_t U, const arb_mat_t B, int unit, slong prec) noexcept + void arb_mat_solve_triu_recursive(arb_mat_t X, const arb_mat_t U, const arb_mat_t B, int unit, slong prec) noexcept + void arb_mat_solve_triu(arb_mat_t X, const arb_mat_t U, const arb_mat_t B, int unit, slong prec) noexcept + void arb_mat_solve_lu_precomp(arb_mat_t X, const slong * perm, const arb_mat_t LU, const arb_mat_t B, slong prec) noexcept + int arb_mat_solve(arb_mat_t X, const arb_mat_t A, const arb_mat_t B, slong prec) noexcept + int arb_mat_solve_lu(arb_mat_t X, const arb_mat_t A, const arb_mat_t B, slong prec) noexcept + int arb_mat_solve_precond(arb_mat_t X, const arb_mat_t A, const arb_mat_t B, slong prec) noexcept + int arb_mat_solve_preapprox(arb_mat_t X, const arb_mat_t A, const arb_mat_t B, const arb_mat_t R, const arb_mat_t T, slong prec) noexcept + int arb_mat_inv(arb_mat_t X, const arb_mat_t A, slong prec) noexcept + void arb_mat_det_lu(arb_t det, const arb_mat_t A, slong prec) noexcept + void arb_mat_det_precond(arb_t det, const arb_mat_t A, slong prec) noexcept + void arb_mat_det(arb_t det, const arb_mat_t A, slong prec) noexcept + void arb_mat_approx_solve_triu(arb_mat_t X, const arb_mat_t U, const arb_mat_t B, int unit, slong prec) noexcept + void arb_mat_approx_solve_tril(arb_mat_t X, const arb_mat_t L, const arb_mat_t B, int unit, slong prec) noexcept + int arb_mat_approx_lu(slong * P, arb_mat_t LU, const arb_mat_t A, slong prec) noexcept + void arb_mat_approx_solve_lu_precomp(arb_mat_t X, const slong * perm, const arb_mat_t A, const arb_mat_t B, slong prec) noexcept + int arb_mat_approx_solve(arb_mat_t X, const arb_mat_t A, const arb_mat_t B, slong prec) noexcept + int arb_mat_approx_inv(arb_mat_t X, const arb_mat_t A, slong prec) noexcept + int _arb_mat_cholesky_banachiewicz(arb_mat_t A, slong prec) noexcept + int arb_mat_cho(arb_mat_t L, const arb_mat_t A, slong prec) noexcept + void arb_mat_solve_cho_precomp(arb_mat_t X, const arb_mat_t L, const arb_mat_t B, slong prec) noexcept + int arb_mat_spd_solve(arb_mat_t X, const arb_mat_t A, const arb_mat_t B, slong prec) noexcept + void arb_mat_inv_cho_precomp(arb_mat_t X, const arb_mat_t L, slong prec) noexcept + int arb_mat_spd_inv(arb_mat_t X, const arb_mat_t A, slong prec) noexcept + int _arb_mat_ldl_inplace(arb_mat_t A, slong prec) noexcept + int _arb_mat_ldl_golub_and_van_loan(arb_mat_t A, slong prec) noexcept + int arb_mat_ldl(arb_mat_t res, const arb_mat_t A, slong prec) noexcept + void arb_mat_solve_ldl_precomp(arb_mat_t X, const arb_mat_t L, const arb_mat_t B, slong prec) noexcept + void arb_mat_inv_ldl_precomp(arb_mat_t X, const arb_mat_t L, slong prec) noexcept + void _arb_mat_charpoly(arb_ptr poly, const arb_mat_t mat, slong prec) noexcept + void arb_mat_charpoly(arb_poly_t poly, const arb_mat_t mat, slong prec) noexcept + void _arb_mat_companion(arb_mat_t mat, arb_srcptr poly, slong prec) noexcept + void arb_mat_companion(arb_mat_t mat, const arb_poly_t poly, slong prec) noexcept + void arb_mat_exp_taylor_sum(arb_mat_t S, const arb_mat_t A, slong N, slong prec) noexcept + void arb_mat_exp(arb_mat_t B, const arb_mat_t A, slong prec) noexcept + void arb_mat_trace(arb_t trace, const arb_mat_t mat, slong prec) noexcept + void _arb_mat_diag_prod(arb_t res, const arb_mat_t mat, slong a, slong b, slong prec) noexcept + void arb_mat_diag_prod(arb_t res, const arb_mat_t mat, slong prec) noexcept + void arb_mat_entrywise_is_zero(fmpz_mat_t dest, const arb_mat_t src) noexcept + void arb_mat_entrywise_not_is_zero(fmpz_mat_t dest, const arb_mat_t src) noexcept + slong arb_mat_count_is_zero(const arb_mat_t mat) noexcept + slong arb_mat_count_not_is_zero(const arb_mat_t mat) noexcept + void arb_mat_get_mid(arb_mat_t B, const arb_mat_t A) noexcept + void arb_mat_add_error_mag(arb_mat_t mat, const mag_t err) noexcept + int arb_mat_spd_get_fmpz_mat(fmpz_mat_t B, const arb_mat_t A, slong prec) noexcept + void arb_mat_spd_lll_reduce(fmpz_mat_t U, const arb_mat_t A, slong prec) noexcept + bint arb_mat_spd_is_lll_reduced(const arb_mat_t A, slong tol_exp, slong prec) noexcept + +from .arb_mat_macros cimport * diff --git a/src/sage/libs/flint/arb_mat_macros.pxd b/src/sage/libs/flint/arb_mat_macros.pxd new file mode 100644 index 00000000000..c7bc5dfcad9 --- /dev/null +++ b/src/sage/libs/flint/arb_mat_macros.pxd @@ -0,0 +1,9 @@ +# Macros from arb_mat.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + arb_ptr arb_mat_entry(arb_mat_t mat, slong i, slong j) + slong arb_mat_nrows(arb_mat_t) + slong arb_mat_ncols(arb_mat_t) diff --git a/src/sage/libs/flint/arb_poly.pxd b/src/sage/libs/flint/arb_poly.pxd new file mode 100644 index 00000000000..754dec0bf72 --- /dev/null +++ b/src/sage/libs/flint/arb_poly.pxd @@ -0,0 +1,235 @@ +# distutils: libraries = flint +# distutils: depends = flint/arb_poly.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void arb_poly_init(arb_poly_t poly) noexcept + void arb_poly_clear(arb_poly_t poly) noexcept + void arb_poly_fit_length(arb_poly_t poly, slong len) noexcept + void _arb_poly_set_length(arb_poly_t poly, slong len) noexcept + void _arb_poly_normalise(arb_poly_t poly) noexcept + slong arb_poly_allocated_bytes(const arb_poly_t x) noexcept + slong arb_poly_length(const arb_poly_t poly) noexcept + slong arb_poly_degree(const arb_poly_t poly) noexcept + bint arb_poly_is_zero(const arb_poly_t poly) noexcept + bint arb_poly_is_one(const arb_poly_t poly) noexcept + bint arb_poly_is_x(const arb_poly_t poly) noexcept + void arb_poly_zero(arb_poly_t poly) noexcept + void arb_poly_one(arb_poly_t poly) noexcept + void arb_poly_set(arb_poly_t dest, const arb_poly_t src) noexcept + void arb_poly_set_round(arb_poly_t dest, const arb_poly_t src, slong prec) noexcept + void arb_poly_set_trunc(arb_poly_t dest, const arb_poly_t src, slong n) noexcept + void arb_poly_set_trunc_round(arb_poly_t dest, const arb_poly_t src, slong n, slong prec) noexcept + void arb_poly_set_coeff_si(arb_poly_t poly, slong n, slong c) noexcept + void arb_poly_set_coeff_arb(arb_poly_t poly, slong n, const arb_t c) noexcept + void arb_poly_get_coeff_arb(arb_t v, const arb_poly_t poly, slong n) noexcept + void _arb_poly_shift_right(arb_ptr res, arb_srcptr poly, slong len, slong n) noexcept + void arb_poly_shift_right(arb_poly_t res, const arb_poly_t poly, slong n) noexcept + void _arb_poly_shift_left(arb_ptr res, arb_srcptr poly, slong len, slong n) noexcept + void arb_poly_shift_left(arb_poly_t res, const arb_poly_t poly, slong n) noexcept + void arb_poly_truncate(arb_poly_t poly, slong n) noexcept + slong arb_poly_valuation(const arb_poly_t poly) noexcept + void arb_poly_set_fmpz_poly(arb_poly_t poly, const fmpz_poly_t src, slong prec) noexcept + void arb_poly_set_fmpq_poly(arb_poly_t poly, const fmpq_poly_t src, slong prec) noexcept + void arb_poly_set_si(arb_poly_t poly, slong src) noexcept + void arb_poly_printd(const arb_poly_t poly, slong digits) noexcept + void arb_poly_fprintd(FILE * file, const arb_poly_t poly, slong digits) noexcept + void arb_poly_randtest(arb_poly_t poly, flint_rand_t state, slong len, slong prec, slong mag_bits) noexcept + bint arb_poly_contains(const arb_poly_t poly1, const arb_poly_t poly2) noexcept + bint arb_poly_contains_fmpz_poly(const arb_poly_t poly1, const fmpz_poly_t poly2) noexcept + bint arb_poly_contains_fmpq_poly(const arb_poly_t poly1, const fmpq_poly_t poly2) noexcept + bint arb_poly_equal(const arb_poly_t A, const arb_poly_t B) noexcept + bint _arb_poly_overlaps(arb_srcptr poly1, slong len1, arb_srcptr poly2, slong len2) noexcept + bint arb_poly_overlaps(const arb_poly_t poly1, const arb_poly_t poly2) noexcept + int arb_poly_get_unique_fmpz_poly(fmpz_poly_t z, const arb_poly_t x) noexcept + void _arb_poly_majorant(arb_ptr res, arb_srcptr poly, slong len, slong prec) noexcept + void arb_poly_majorant(arb_poly_t res, const arb_poly_t poly, slong prec) noexcept + void _arb_poly_add(arb_ptr C, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong prec) noexcept + void arb_poly_add(arb_poly_t C, const arb_poly_t A, const arb_poly_t B, slong prec) noexcept + void arb_poly_add_si(arb_poly_t C, const arb_poly_t A, slong B, slong prec) noexcept + void _arb_poly_sub(arb_ptr C, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong prec) noexcept + void arb_poly_sub(arb_poly_t C, const arb_poly_t A, const arb_poly_t B, slong prec) noexcept + void arb_poly_add_series(arb_poly_t C, const arb_poly_t A, const arb_poly_t B, slong len, slong prec) noexcept + void arb_poly_sub_series(arb_poly_t C, const arb_poly_t A, const arb_poly_t B, slong len, slong prec) noexcept + void arb_poly_neg(arb_poly_t C, const arb_poly_t A) noexcept + void arb_poly_scalar_mul_2exp_si(arb_poly_t C, const arb_poly_t A, slong c) noexcept + void arb_poly_scalar_mul(arb_poly_t C, const arb_poly_t A, const arb_t c, slong prec) noexcept + void arb_poly_scalar_div(arb_poly_t C, const arb_poly_t A, const arb_t c, slong prec) noexcept + void _arb_poly_mullow_classical(arb_ptr C, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong n, slong prec) noexcept + void _arb_poly_mullow_block(arb_ptr C, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong n, slong prec) noexcept + void _arb_poly_mullow(arb_ptr C, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong n, slong prec) noexcept + void arb_poly_mullow_classical(arb_poly_t C, const arb_poly_t A, const arb_poly_t B, slong n, slong prec) noexcept + void arb_poly_mullow_ztrunc(arb_poly_t C, const arb_poly_t A, const arb_poly_t B, slong n, slong prec) noexcept + void arb_poly_mullow_block(arb_poly_t C, const arb_poly_t A, const arb_poly_t B, slong n, slong prec) noexcept + void arb_poly_mullow(arb_poly_t C, const arb_poly_t A, const arb_poly_t B, slong n, slong prec) noexcept + void _arb_poly_mul(arb_ptr C, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong prec) noexcept + void arb_poly_mul(arb_poly_t C, const arb_poly_t A, const arb_poly_t B, slong prec) noexcept + void _arb_poly_inv_series(arb_ptr Q, arb_srcptr A, slong Alen, slong len, slong prec) noexcept + void arb_poly_inv_series(arb_poly_t Q, const arb_poly_t A, slong n, slong prec) noexcept + void _arb_poly_div_series(arb_ptr Q, arb_srcptr A, slong Alen, arb_srcptr B, slong Blen, slong n, slong prec) noexcept + void arb_poly_div_series(arb_poly_t Q, const arb_poly_t A, const arb_poly_t B, slong n, slong prec) noexcept + void _arb_poly_div(arb_ptr Q, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong prec) noexcept + void _arb_poly_rem(arb_ptr R, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong prec) noexcept + void _arb_poly_divrem(arb_ptr Q, arb_ptr R, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong prec) noexcept + int arb_poly_divrem(arb_poly_t Q, arb_poly_t R, const arb_poly_t A, const arb_poly_t B, slong prec) noexcept + void _arb_poly_div_root(arb_ptr Q, arb_t R, arb_srcptr A, slong len, const arb_t c, slong prec) noexcept + void _arb_poly_taylor_shift(arb_ptr g, const arb_t c, slong n, slong prec) noexcept + void arb_poly_taylor_shift(arb_poly_t g, const arb_poly_t f, const arb_t c, slong prec) noexcept + void _arb_poly_compose(arb_ptr res, arb_srcptr poly1, slong len1, arb_srcptr poly2, slong len2, slong prec) noexcept + void arb_poly_compose(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, slong prec) noexcept + void _arb_poly_compose_series(arb_ptr res, arb_srcptr poly1, slong len1, arb_srcptr poly2, slong len2, slong n, slong prec) noexcept + void arb_poly_compose_series(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, slong n, slong prec) noexcept + void _arb_poly_revert_series(arb_ptr h, arb_srcptr f, slong flen, slong n, slong prec) noexcept + void arb_poly_revert_series(arb_poly_t h, const arb_poly_t f, slong n, slong prec) noexcept + void _arb_poly_evaluate_horner(arb_t y, arb_srcptr f, slong len, const arb_t x, slong prec) noexcept + void arb_poly_evaluate_horner(arb_t y, const arb_poly_t f, const arb_t x, slong prec) noexcept + void _arb_poly_evaluate_rectangular(arb_t y, arb_srcptr f, slong len, const arb_t x, slong prec) noexcept + void arb_poly_evaluate_rectangular(arb_t y, const arb_poly_t f, const arb_t x, slong prec) noexcept + void _arb_poly_evaluate(arb_t y, arb_srcptr f, slong len, const arb_t x, slong prec) noexcept + void arb_poly_evaluate(arb_t y, const arb_poly_t f, const arb_t x, slong prec) noexcept + void _arb_poly_evaluate_acb_horner(acb_t y, arb_srcptr f, slong len, const acb_t x, slong prec) noexcept + void arb_poly_evaluate_acb_horner(acb_t y, const arb_poly_t f, const acb_t x, slong prec) noexcept + void _arb_poly_evaluate_acb_rectangular(acb_t y, arb_srcptr f, slong len, const acb_t x, slong prec) noexcept + void arb_poly_evaluate_acb_rectangular(acb_t y, const arb_poly_t f, const acb_t x, slong prec) noexcept + void _arb_poly_evaluate_acb(acb_t y, arb_srcptr f, slong len, const acb_t x, slong prec) noexcept + void arb_poly_evaluate_acb(acb_t y, const arb_poly_t f, const acb_t x, slong prec) noexcept + void _arb_poly_evaluate2_horner(arb_t y, arb_t z, arb_srcptr f, slong len, const arb_t x, slong prec) noexcept + void arb_poly_evaluate2_horner(arb_t y, arb_t z, const arb_poly_t f, const arb_t x, slong prec) noexcept + void _arb_poly_evaluate2_rectangular(arb_t y, arb_t z, arb_srcptr f, slong len, const arb_t x, slong prec) noexcept + void arb_poly_evaluate2_rectangular(arb_t y, arb_t z, const arb_poly_t f, const arb_t x, slong prec) noexcept + void _arb_poly_evaluate2(arb_t y, arb_t z, arb_srcptr f, slong len, const arb_t x, slong prec) noexcept + void arb_poly_evaluate2(arb_t y, arb_t z, const arb_poly_t f, const arb_t x, slong prec) noexcept + void _arb_poly_evaluate2_acb_horner(acb_t y, acb_t z, arb_srcptr f, slong len, const acb_t x, slong prec) noexcept + void arb_poly_evaluate2_acb_horner(acb_t y, acb_t z, const arb_poly_t f, const acb_t x, slong prec) noexcept + void _arb_poly_evaluate2_acb_rectangular(acb_t y, acb_t z, arb_srcptr f, slong len, const acb_t x, slong prec) noexcept + void arb_poly_evaluate2_acb_rectangular(acb_t y, acb_t z, const arb_poly_t f, const acb_t x, slong prec) noexcept + void _arb_poly_evaluate2_acb(acb_t y, acb_t z, arb_srcptr f, slong len, const acb_t x, slong prec) noexcept + void arb_poly_evaluate2_acb(acb_t y, acb_t z, const arb_poly_t f, const acb_t x, slong prec) noexcept + void _arb_poly_product_roots(arb_ptr poly, arb_srcptr xs, slong n, slong prec) noexcept + void arb_poly_product_roots(arb_poly_t poly, arb_srcptr xs, slong n, slong prec) noexcept + void _arb_poly_product_roots_complex(arb_ptr poly, arb_srcptr r, slong rn, acb_srcptr c, slong cn, slong prec) noexcept + void arb_poly_product_roots_complex(arb_poly_t poly, arb_srcptr r, slong rn, acb_srcptr c, slong cn, slong prec) noexcept + arb_ptr * _arb_poly_tree_alloc(slong len) noexcept + void _arb_poly_tree_free(arb_ptr * tree, slong len) noexcept + void _arb_poly_tree_build(arb_ptr * tree, arb_srcptr roots, slong len, slong prec) noexcept + void _arb_poly_evaluate_vec_iter(arb_ptr ys, arb_srcptr poly, slong plen, arb_srcptr xs, slong n, slong prec) noexcept + void arb_poly_evaluate_vec_iter(arb_ptr ys, const arb_poly_t poly, arb_srcptr xs, slong n, slong prec) noexcept + void _arb_poly_evaluate_vec_fast_precomp(arb_ptr vs, arb_srcptr poly, slong plen, arb_ptr * tree, slong len, slong prec) noexcept + void _arb_poly_evaluate_vec_fast(arb_ptr ys, arb_srcptr poly, slong plen, arb_srcptr xs, slong n, slong prec) noexcept + void arb_poly_evaluate_vec_fast(arb_ptr ys, const arb_poly_t poly, arb_srcptr xs, slong n, slong prec) noexcept + void _arb_poly_interpolate_newton(arb_ptr poly, arb_srcptr xs, arb_srcptr ys, slong n, slong prec) noexcept + void arb_poly_interpolate_newton(arb_poly_t poly, arb_srcptr xs, arb_srcptr ys, slong n, slong prec) noexcept + void _arb_poly_interpolate_barycentric(arb_ptr poly, arb_srcptr xs, arb_srcptr ys, slong n, slong prec) noexcept + void arb_poly_interpolate_barycentric(arb_poly_t poly, arb_srcptr xs, arb_srcptr ys, slong n, slong prec) noexcept + void _arb_poly_interpolation_weights(arb_ptr w, arb_ptr * tree, slong len, slong prec) noexcept + void _arb_poly_interpolate_fast_precomp(arb_ptr poly, arb_srcptr ys, arb_ptr * tree, arb_srcptr weights, slong len, slong prec) noexcept + void _arb_poly_interpolate_fast(arb_ptr poly, arb_srcptr xs, arb_srcptr ys, slong len, slong prec) noexcept + void arb_poly_interpolate_fast(arb_poly_t poly, arb_srcptr xs, arb_srcptr ys, slong n, slong prec) noexcept + void _arb_poly_derivative(arb_ptr res, arb_srcptr poly, slong len, slong prec) noexcept + void arb_poly_derivative(arb_poly_t res, const arb_poly_t poly, slong prec) noexcept + void _arb_poly_nth_derivative(arb_ptr res, arb_srcptr poly, ulong n, slong len, slong prec) noexcept + void arb_poly_nth_derivative(arb_poly_t res, const arb_poly_t poly, ulong n, slong prec) noexcept + void _arb_poly_integral(arb_ptr res, arb_srcptr poly, slong len, slong prec) noexcept + void arb_poly_integral(arb_poly_t res, const arb_poly_t poly, slong prec) noexcept + void _arb_poly_borel_transform(arb_ptr res, arb_srcptr poly, slong len, slong prec) noexcept + void arb_poly_borel_transform(arb_poly_t res, const arb_poly_t poly, slong prec) noexcept + void _arb_poly_inv_borel_transform(arb_ptr res, arb_srcptr poly, slong len, slong prec) noexcept + void arb_poly_inv_borel_transform(arb_poly_t res, const arb_poly_t poly, slong prec) noexcept + void _arb_poly_binomial_transform_basecase(arb_ptr b, arb_srcptr a, slong alen, slong len, slong prec) noexcept + void arb_poly_binomial_transform_basecase(arb_poly_t b, const arb_poly_t a, slong len, slong prec) noexcept + void _arb_poly_binomial_transform_convolution(arb_ptr b, arb_srcptr a, slong alen, slong len, slong prec) noexcept + void arb_poly_binomial_transform_convolution(arb_poly_t b, const arb_poly_t a, slong len, slong prec) noexcept + void _arb_poly_binomial_transform(arb_ptr b, arb_srcptr a, slong alen, slong len, slong prec) noexcept + void arb_poly_binomial_transform(arb_poly_t b, const arb_poly_t a, slong len, slong prec) noexcept + void _arb_poly_graeffe_transform(arb_ptr b, arb_srcptr a, slong len, slong prec) noexcept + void arb_poly_graeffe_transform(arb_poly_t b, const arb_poly_t a, slong prec) noexcept + void _arb_poly_pow_ui_trunc_binexp(arb_ptr res, arb_srcptr f, slong flen, ulong exp, slong len, slong prec) noexcept + void arb_poly_pow_ui_trunc_binexp(arb_poly_t res, const arb_poly_t poly, ulong exp, slong len, slong prec) noexcept + void _arb_poly_pow_ui(arb_ptr res, arb_srcptr f, slong flen, ulong exp, slong prec) noexcept + void arb_poly_pow_ui(arb_poly_t res, const arb_poly_t poly, ulong exp, slong prec) noexcept + void _arb_poly_pow_series(arb_ptr h, arb_srcptr f, slong flen, arb_srcptr g, slong glen, slong len, slong prec) noexcept + void arb_poly_pow_series(arb_poly_t h, const arb_poly_t f, const arb_poly_t g, slong len, slong prec) noexcept + void _arb_poly_pow_arb_series(arb_ptr h, arb_srcptr f, slong flen, const arb_t g, slong len, slong prec) noexcept + void arb_poly_pow_arb_series(arb_poly_t h, const arb_poly_t f, const arb_t g, slong len, slong prec) noexcept + void _arb_poly_sqrt_series(arb_ptr g, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_sqrt_series(arb_poly_t g, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_rsqrt_series(arb_ptr g, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_rsqrt_series(arb_poly_t g, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_log_series(arb_ptr res, arb_srcptr f, slong flen, slong n, slong prec) noexcept + void arb_poly_log_series(arb_poly_t res, const arb_poly_t f, slong n, slong prec) noexcept + void _arb_poly_log1p_series(arb_ptr res, arb_srcptr f, slong flen, slong n, slong prec) noexcept + void arb_poly_log1p_series(arb_poly_t res, const arb_poly_t f, slong n, slong prec) noexcept + void _arb_poly_atan_series(arb_ptr res, arb_srcptr f, slong flen, slong n, slong prec) noexcept + void arb_poly_atan_series(arb_poly_t res, const arb_poly_t f, slong n, slong prec) noexcept + void _arb_poly_asin_series(arb_ptr res, arb_srcptr f, slong flen, slong n, slong prec) noexcept + void arb_poly_asin_series(arb_poly_t res, const arb_poly_t f, slong n, slong prec) noexcept + void _arb_poly_acos_series(arb_ptr res, arb_srcptr f, slong flen, slong n, slong prec) noexcept + void arb_poly_acos_series(arb_poly_t res, const arb_poly_t f, slong n, slong prec) noexcept + void _arb_poly_exp_series_basecase(arb_ptr f, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_exp_series_basecase(arb_poly_t f, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_exp_series(arb_ptr f, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_exp_series(arb_poly_t f, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_sin_cos_series(arb_ptr s, arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_sin_cos_series(arb_poly_t s, arb_poly_t c, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_sin_series(arb_ptr s, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_sin_series(arb_poly_t s, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_cos_series(arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_cos_series(arb_poly_t c, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_tan_series(arb_ptr g, arb_srcptr h, slong hlen, slong len, slong prec) noexcept + void arb_poly_tan_series(arb_poly_t g, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_sin_cos_pi_series(arb_ptr s, arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_sin_cos_pi_series(arb_poly_t s, arb_poly_t c, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_sin_pi_series(arb_ptr s, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_sin_pi_series(arb_poly_t s, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_cos_pi_series(arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_cos_pi_series(arb_poly_t c, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_cot_pi_series(arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_cot_pi_series(arb_poly_t c, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_sinh_cosh_series_basecase(arb_ptr s, arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_sinh_cosh_series_basecase(arb_poly_t s, arb_poly_t c, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_sinh_cosh_series_exponential(arb_ptr s, arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_sinh_cosh_series_exponential(arb_poly_t s, arb_poly_t c, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_sinh_cosh_series(arb_ptr s, arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_sinh_cosh_series(arb_poly_t s, arb_poly_t c, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_sinh_series(arb_ptr s, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_sinh_series(arb_poly_t s, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_cosh_series(arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_cosh_series(arb_poly_t c, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_sinc_series(arb_ptr s, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_sinc_series(arb_poly_t s, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_sinc_pi_series(arb_ptr s, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_sinc_pi_series(arb_poly_t s, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_lambertw_series(arb_ptr res, arb_srcptr z, slong zlen, int flags, slong len, slong prec) noexcept + void arb_poly_lambertw_series(arb_poly_t res, const arb_poly_t z, int flags, slong len, slong prec) noexcept + void _arb_poly_gamma_series(arb_ptr res, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_gamma_series(arb_poly_t res, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_rgamma_series(arb_ptr res, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_rgamma_series(arb_poly_t res, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_lgamma_series(arb_ptr res, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_lgamma_series(arb_poly_t res, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_digamma_series(arb_ptr res, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_digamma_series(arb_poly_t res, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_rising_ui_series(arb_ptr res, arb_srcptr f, slong flen, ulong r, slong trunc, slong prec) noexcept + void arb_poly_rising_ui_series(arb_poly_t res, const arb_poly_t f, ulong r, slong trunc, slong prec) noexcept + void arb_poly_zeta_series(arb_poly_t res, const arb_poly_t s, const arb_t a, int deflate, slong n, slong prec) noexcept + void _arb_poly_riemann_siegel_theta_series(arb_ptr res, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_riemann_siegel_theta_series(arb_poly_t res, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_riemann_siegel_z_series(arb_ptr res, arb_srcptr h, slong hlen, slong n, slong prec) noexcept + void arb_poly_riemann_siegel_z_series(arb_poly_t res, const arb_poly_t h, slong n, slong prec) noexcept + void _arb_poly_root_bound_fujiwara(mag_t bound, arb_srcptr poly, slong len) noexcept + void arb_poly_root_bound_fujiwara(mag_t bound, arb_poly_t poly) noexcept + void _arb_poly_newton_convergence_factor(arf_t convergence_factor, arb_srcptr poly, slong len, const arb_t convergence_interval, slong prec) noexcept + int _arb_poly_newton_step(arb_t xnew, arb_srcptr poly, slong len, const arb_t x, const arb_t convergence_interval, const arf_t convergence_factor, slong prec) noexcept + void _arb_poly_newton_refine_root(arb_t r, arb_srcptr poly, slong len, const arb_t start, const arb_t convergence_interval, const arf_t convergence_factor, slong eval_extra_prec, slong prec) noexcept + void _arb_poly_swinnerton_dyer_ui(arb_ptr poly, ulong n, slong trunc, slong prec) noexcept + void arb_poly_swinnerton_dyer_ui(arb_poly_t poly, ulong n, slong prec) noexcept diff --git a/src/sage/libs/flint/arf.pxd b/src/sage/libs/flint/arf.pxd new file mode 100644 index 00000000000..8e2218d7d8a --- /dev/null +++ b/src/sage/libs/flint/arf.pxd @@ -0,0 +1,165 @@ +# distutils: libraries = flint +# distutils: depends = flint/arf.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void arf_init(arf_t x) noexcept + void arf_clear(arf_t x) noexcept + slong arf_allocated_bytes(const arf_t x) noexcept + void arf_zero(arf_t res) noexcept + void arf_one(arf_t res) noexcept + void arf_pos_inf(arf_t res) noexcept + void arf_neg_inf(arf_t res) noexcept + void arf_nan(arf_t res) noexcept + bint arf_is_zero(const arf_t x) noexcept + bint arf_is_one(const arf_t x) noexcept + bint arf_is_pos_inf(const arf_t x) noexcept + bint arf_is_neg_inf(const arf_t x) noexcept + bint arf_is_nan(const arf_t x) noexcept + bint arf_is_inf(const arf_t x) noexcept + bint arf_is_normal(const arf_t x) noexcept + bint arf_is_special(const arf_t x) noexcept + bint arf_is_finite(const arf_t x) noexcept + void arf_set(arf_t res, const arf_t x) noexcept + void arf_set_mpz(arf_t res, const mpz_t x) noexcept + void arf_set_fmpz(arf_t res, const fmpz_t x) noexcept + void arf_set_ui(arf_t res, ulong x) noexcept + void arf_set_si(arf_t res, slong x) noexcept + void arf_set_mpfr(arf_t res, const mpfr_t x) noexcept + void arf_set_d(arf_t res, double x) noexcept + void arf_swap(arf_t x, arf_t y) noexcept + void arf_init_set_ui(arf_t res, ulong x) noexcept + void arf_init_set_si(arf_t res, slong x) noexcept + int arf_set_round(arf_t res, const arf_t x, slong prec, arf_rnd_t rnd) noexcept + int arf_set_round_si(arf_t res, slong x, slong prec, arf_rnd_t rnd) noexcept + int arf_set_round_ui(arf_t res, ulong x, slong prec, arf_rnd_t rnd) noexcept + int arf_set_round_mpz(arf_t res, const mpz_t x, slong prec, arf_rnd_t rnd) noexcept + int arf_set_round_fmpz(arf_t res, const fmpz_t x, slong prec, arf_rnd_t rnd) noexcept + void arf_set_si_2exp_si(arf_t res, slong m, slong e) noexcept + void arf_set_ui_2exp_si(arf_t res, ulong m, slong e) noexcept + void arf_set_fmpz_2exp(arf_t res, const fmpz_t m, const fmpz_t e) noexcept + int arf_set_round_fmpz_2exp(arf_t res, const fmpz_t x, const fmpz_t e, slong prec, arf_rnd_t rnd) noexcept + void arf_get_fmpz_2exp(fmpz_t m, fmpz_t e, const arf_t x) noexcept + void arf_frexp(arf_t m, fmpz_t e, const arf_t x) noexcept + double arf_get_d(const arf_t x, arf_rnd_t rnd) noexcept + int arf_get_mpfr(mpfr_t res, const arf_t x, mpfr_rnd_t rnd) noexcept + int arf_get_fmpz(fmpz_t res, const arf_t x, arf_rnd_t rnd) noexcept + slong arf_get_si(const arf_t x, arf_rnd_t rnd) noexcept + int arf_get_fmpz_fixed_fmpz(fmpz_t res, const arf_t x, const fmpz_t e) noexcept + int arf_get_fmpz_fixed_si(fmpz_t res, const arf_t x, slong e) noexcept + void arf_floor(arf_t res, const arf_t x) noexcept + void arf_ceil(arf_t res, const arf_t x) noexcept + void arf_get_fmpq(fmpq_t res, const arf_t x) noexcept + bint arf_equal(const arf_t x, const arf_t y) noexcept + bint arf_equal_si(const arf_t x, slong y) noexcept + bint arf_equal_ui(const arf_t x, ulong y) noexcept + bint arf_equal_d(const arf_t x, double y) noexcept + int arf_cmp(const arf_t x, const arf_t y) noexcept + int arf_cmp_si(const arf_t x, slong y) noexcept + int arf_cmp_ui(const arf_t x, ulong y) noexcept + int arf_cmp_d(const arf_t x, double y) noexcept + int arf_cmpabs(const arf_t x, const arf_t y) noexcept + int arf_cmpabs_ui(const arf_t x, ulong y) noexcept + int arf_cmpabs_d(const arf_t x, double y) noexcept + int arf_cmpabs_mag(const arf_t x, const mag_t y) noexcept + int arf_cmp_2exp_si(const arf_t x, slong e) noexcept + int arf_cmpabs_2exp_si(const arf_t x, slong e) noexcept + int arf_sgn(const arf_t x) noexcept + void arf_min(arf_t res, const arf_t a, const arf_t b) noexcept + void arf_max(arf_t res, const arf_t a, const arf_t b) noexcept + slong arf_bits(const arf_t x) noexcept + bint arf_is_int(const arf_t x) noexcept + bint arf_is_int_2exp_si(const arf_t x, slong e) noexcept + void arf_abs_bound_lt_2exp_fmpz(fmpz_t res, const arf_t x) noexcept + void arf_abs_bound_le_2exp_fmpz(fmpz_t res, const arf_t x) noexcept + slong arf_abs_bound_lt_2exp_si(const arf_t x) noexcept + void arf_get_mag(mag_t res, const arf_t x) noexcept + void arf_get_mag_lower(mag_t res, const arf_t x) noexcept + void arf_set_mag(arf_t res, const mag_t x) noexcept + void mag_init_set_arf(mag_t res, const arf_t x) noexcept + void mag_fast_init_set_arf(mag_t res, const arf_t x) noexcept + void arf_mag_set_ulp(mag_t res, const arf_t x, slong prec) noexcept + void arf_mag_add_ulp(mag_t res, const mag_t x, const arf_t y, slong prec) noexcept + void arf_mag_fast_add_ulp(mag_t res, const mag_t x, const arf_t y, slong prec) noexcept + void arf_init_set_shallow(arf_t z, const arf_t x) noexcept + void arf_init_set_mag_shallow(arf_t z, const mag_t x) noexcept + void arf_init_neg_shallow(arf_t z, const arf_t x) noexcept + void arf_init_neg_mag_shallow(arf_t z, const mag_t x) noexcept + void arf_randtest(arf_t res, flint_rand_t state, slong bits, slong mag_bits) noexcept + void arf_randtest_not_zero(arf_t res, flint_rand_t state, slong bits, slong mag_bits) noexcept + void arf_randtest_special(arf_t res, flint_rand_t state, slong bits, slong mag_bits) noexcept + void arf_urandom(arf_t res, flint_rand_t state, slong bits, arf_rnd_t rnd) noexcept + void arf_debug(const arf_t x) noexcept + void arf_print(const arf_t x) noexcept + void arf_printd(const arf_t x, slong d) noexcept + char * arf_get_str(const arf_t x, slong d) noexcept + void arf_fprint(FILE * file, const arf_t x) noexcept + void arf_fprintd(FILE * file, const arf_t y, slong d) noexcept + char * arf_dump_str(const arf_t x) noexcept + int arf_load_str(arf_t x, const char * str) noexcept + int arf_dump_file(FILE * stream, const arf_t x) noexcept + int arf_load_file(arf_t x, FILE * stream) noexcept + void arf_abs(arf_t res, const arf_t x) noexcept + void arf_neg(arf_t res, const arf_t x) noexcept + int arf_neg_round(arf_t res, const arf_t x, slong prec, arf_rnd_t rnd) noexcept + int arf_add(arf_t res, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_add_si(arf_t res, const arf_t x, slong y, slong prec, arf_rnd_t rnd) noexcept + int arf_add_ui(arf_t res, const arf_t x, ulong y, slong prec, arf_rnd_t rnd) noexcept + int arf_add_fmpz(arf_t res, const arf_t x, const fmpz_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_add_fmpz_2exp(arf_t res, const arf_t x, const fmpz_t y, const fmpz_t e, slong prec, arf_rnd_t rnd) noexcept + int arf_sub(arf_t res, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_sub_si(arf_t res, const arf_t x, slong y, slong prec, arf_rnd_t rnd) noexcept + int arf_sub_ui(arf_t res, const arf_t x, ulong y, slong prec, arf_rnd_t rnd) noexcept + int arf_sub_fmpz(arf_t res, const arf_t x, const fmpz_t y, slong prec, arf_rnd_t rnd) noexcept + void arf_mul_2exp_si(arf_t res, const arf_t x, slong e) noexcept + void arf_mul_2exp_fmpz(arf_t res, const arf_t x, const fmpz_t e) noexcept + int arf_mul(arf_t res, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_mul_ui(arf_t res, const arf_t x, ulong y, slong prec, arf_rnd_t rnd) noexcept + int arf_mul_si(arf_t res, const arf_t x, slong y, slong prec, arf_rnd_t rnd) noexcept + int arf_mul_mpz(arf_t res, const arf_t x, const mpz_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_mul_fmpz(arf_t res, const arf_t x, const fmpz_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_addmul(arf_t z, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_addmul_ui(arf_t z, const arf_t x, ulong y, slong prec, arf_rnd_t rnd) noexcept + int arf_addmul_si(arf_t z, const arf_t x, slong y, slong prec, arf_rnd_t rnd) noexcept + int arf_addmul_mpz(arf_t z, const arf_t x, const mpz_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_addmul_fmpz(arf_t z, const arf_t x, const fmpz_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_submul(arf_t z, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_submul_ui(arf_t z, const arf_t x, ulong y, slong prec, arf_rnd_t rnd) noexcept + int arf_submul_si(arf_t z, const arf_t x, slong y, slong prec, arf_rnd_t rnd) noexcept + int arf_submul_mpz(arf_t z, const arf_t x, const mpz_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_submul_fmpz(arf_t z, const arf_t x, const fmpz_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_fma(arf_t res, const arf_t x, const arf_t y, const arf_t z, slong prec, arf_rnd_t rnd) noexcept + int arf_sosq(arf_t res, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_sum(arf_t res, arf_srcptr terms, slong len, slong prec, arf_rnd_t rnd) noexcept + void arf_approx_dot(arf_t res, const arf_t initial, int subtract, arf_srcptr x, slong xstep, arf_srcptr y, slong ystep, slong len, slong prec, arf_rnd_t rnd) noexcept + int arf_div(arf_t res, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_div_ui(arf_t res, const arf_t x, ulong y, slong prec, arf_rnd_t rnd) noexcept + int arf_ui_div(arf_t res, ulong x, const arf_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_div_si(arf_t res, const arf_t x, slong y, slong prec, arf_rnd_t rnd) noexcept + int arf_si_div(arf_t res, slong x, const arf_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_div_fmpz(arf_t res, const arf_t x, const fmpz_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_fmpz_div(arf_t res, const fmpz_t x, const arf_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_fmpz_div_fmpz(arf_t res, const fmpz_t x, const fmpz_t y, slong prec, arf_rnd_t rnd) noexcept + int arf_sqrt(arf_t res, const arf_t x, slong prec, arf_rnd_t rnd) noexcept + int arf_sqrt_ui(arf_t res, ulong x, slong prec, arf_rnd_t rnd) noexcept + int arf_sqrt_fmpz(arf_t res, const fmpz_t x, slong prec, arf_rnd_t rnd) noexcept + int arf_rsqrt(arf_t res, const arf_t x, slong prec, arf_rnd_t rnd) noexcept + int arf_root(arf_t res, const arf_t x, ulong k, slong prec, arf_rnd_t rnd) noexcept + 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) noexcept + 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) noexcept + int arf_complex_sqr(arf_t e, arf_t f, const arf_t a, const arf_t b, slong prec, arf_rnd_t rnd) noexcept + int _arf_get_integer_mpn(mp_ptr y, mp_srcptr xp, mp_size_t xn, slong exp) noexcept + 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) noexcept + int _arf_set_round_ui(arf_t z, ulong x, int sgnbit, slong prec, arf_rnd_t rnd) noexcept + 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) noexcept + 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) noexcept diff --git a/src/sage/libs/flint/arith.pxd b/src/sage/libs/flint/arith.pxd index c8e1fb35566..70e7f5e5d29 100644 --- a/src/sage/libs/flint/arith.pxd +++ b/src/sage/libs/flint/arith.pxd @@ -1,15 +1,74 @@ # distutils: libraries = flint # distutils: depends = flint/arith.h -from sage.libs.flint.types cimport fmpz_t, fmpq_t, ulong, slong +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * -# flint/arith.h cdef extern from "flint_wrap.h": - void arith_bell_number(fmpz_t b, ulong n) - void arith_bernoulli_number(fmpq_t x, ulong n) - void arith_euler_number(fmpz_t res, ulong n) - void arith_stirling_number_1u(fmpz_t res, slong n, slong k) - void arith_stirling_number_2(fmpz_t res, slong n, slong k) - void arith_number_of_partitions(fmpz_t x, ulong n) - void arith_dedekind_sum(fmpq_t, fmpz_t, fmpz_t) - void arith_harmonic_number(fmpq_t, unsigned long n) + void arith_primorial(fmpz_t res, slong n) noexcept + void _arith_harmonic_number(fmpz_t num, fmpz_t den, slong n) noexcept + void arith_harmonic_number(fmpq_t x, slong n) noexcept + void arith_stirling_number_1u(fmpz_t s, ulong n, ulong k) noexcept + void arith_stirling_number_1(fmpz_t s, ulong n, ulong k) noexcept + void arith_stirling_number_2(fmpz_t s, ulong n, ulong k) noexcept + void arith_stirling_number_1u_vec(fmpz * row, ulong n, slong klen) noexcept + void arith_stirling_number_1_vec(fmpz * row, ulong n, slong klen) noexcept + void arith_stirling_number_2_vec(fmpz * row, ulong n, slong klen) noexcept + void arith_stirling_number_1u_vec_next(fmpz * row, const fmpz * prev, slong n, slong klen) noexcept + void arith_stirling_number_1_vec_next(fmpz * row, const fmpz * prev, slong n, slong klen) noexcept + void arith_stirling_number_2_vec_next(fmpz * row, const fmpz * prev, slong n, slong klen) noexcept + void arith_stirling_matrix_1u(fmpz_mat_t mat) noexcept + void arith_stirling_matrix_1(fmpz_mat_t mat) noexcept + void arith_stirling_matrix_2(fmpz_mat_t mat) noexcept + void arith_bell_number(fmpz_t b, ulong n) noexcept + void arith_bell_number_dobinski(fmpz_t res, ulong n) noexcept + void arith_bell_number_multi_mod(fmpz_t res, ulong n) noexcept + void arith_bell_number_vec(fmpz * b, slong n) noexcept + void arith_bell_number_vec_recursive(fmpz * b, slong n) noexcept + void arith_bell_number_vec_multi_mod(fmpz * b, slong n) noexcept + mp_limb_t arith_bell_number_nmod(ulong n, nmod_t mod) noexcept + void arith_bell_number_nmod_vec(mp_ptr b, slong n, nmod_t mod) noexcept + void arith_bell_number_nmod_vec_recursive(mp_ptr b, slong n, nmod_t mod) noexcept + void arith_bell_number_nmod_vec_ogf(mp_ptr b, slong n, nmod_t mod) noexcept + int arith_bell_number_nmod_vec_series(mp_ptr b, slong n, nmod_t mod) noexcept + double arith_bell_number_size(ulong n) noexcept + void _arith_bernoulli_number(fmpz_t num, fmpz_t den, ulong n) noexcept + void arith_bernoulli_number(fmpq_t x, ulong n) noexcept + void _arith_bernoulli_number_vec(fmpz * num, fmpz * den, slong n) noexcept + void arith_bernoulli_number_vec(fmpq * x, slong n) noexcept + void arith_bernoulli_number_denom(fmpz_t den, ulong n) noexcept + double arith_bernoulli_number_size(ulong n) noexcept + void arith_bernoulli_polynomial(fmpq_poly_t poly, ulong n) noexcept + void _arith_bernoulli_number_vec_recursive(fmpz * num, fmpz * den, slong n) noexcept + void _arith_bernoulli_number_vec_multi_mod(fmpz * num, fmpz * den, slong n) noexcept + void arith_euler_number(fmpz_t res, ulong n) noexcept + void arith_euler_number_vec(fmpz * res, slong n) noexcept + double arith_euler_number_size(ulong n) noexcept + void arith_euler_polynomial(fmpq_poly_t poly, ulong n) noexcept + void arith_euler_phi(fmpz_t res, const fmpz_t n) noexcept + int arith_moebius_mu(const fmpz_t n) noexcept + void arith_divisor_sigma(fmpz_t res, ulong k, const fmpz_t n) noexcept + void arith_divisors(fmpz_poly_t res, const fmpz_t n) noexcept + void arith_ramanujan_tau(fmpz_t res, const fmpz_t n) noexcept + void arith_ramanujan_tau_series(fmpz_poly_t res, slong n) noexcept + void arith_landau_function_vec(fmpz * res, slong len) noexcept + void arith_dedekind_sum_naive(fmpq_t s, const fmpz_t h, const fmpz_t k) noexcept + double arith_dedekind_sum_coprime_d(double h, double k) noexcept + void arith_dedekind_sum_coprime_large(fmpq_t s, const fmpz_t h, const fmpz_t k) noexcept + void arith_dedekind_sum_coprime(fmpq_t s, const fmpz_t h, const fmpz_t k) noexcept + void arith_dedekind_sum(fmpq_t s, const fmpz_t h, const fmpz_t k) noexcept + void arith_number_of_partitions_vec(fmpz * res, slong len) noexcept + void arith_number_of_partitions_nmod_vec(mp_ptr res, slong len, nmod_t mod) noexcept + void arith_hrr_expsum_factored(trig_prod_t prod, mp_limb_t k, mp_limb_t n) noexcept + void arith_number_of_partitions_mpfr(mpfr_t x, ulong n) noexcept + void arith_number_of_partitions(fmpz_t x, ulong n) noexcept + void arith_sum_of_squares(fmpz_t r, ulong k, const fmpz_t n) noexcept + void arith_sum_of_squares_vec(fmpz * r, ulong k, slong n) noexcept diff --git a/src/sage/libs/flint/arith.pyx b/src/sage/libs/flint/arith.pyx index fefe5f07efd..fe599af4dfc 100644 --- a/src/sage/libs/flint/arith.pyx +++ b/src/sage/libs/flint/arith.pyx @@ -1,301 +1,76 @@ -# distutils: extra_compile_args = -D_XPG6 +r""" +Deprecated module. + +Functions were moved in arith_sage.pyx + +TESTS:: + + sage: from sage.libs.flint.arith import bell_number, bernoulli_number, euler_number, stirling_number_1, stirling_number_2, number_of_partitions, dedekind_sum, harmonic_number + sage: bell_number(4) + doctest:warning + ... + DeprecationWarning: + Importing bell_number from here is deprecated; please use "from sage.libs.flint.arith_sage import bell_number" instead. + See https://github.com/sagemath/sage/issues/36449 for details. + 15 + sage: bernoulli_number(4) + doctest:warning + ... + DeprecationWarning: + Importing bernoulli_number from here is deprecated; please use "from sage.libs.flint.arith_sage import bernoulli_number" instead. + See https://github.com/sagemath/sage/issues/36449 for details. + -1/30 + sage: euler_number(4) + doctest:warning + ... + DeprecationWarning: + Importing euler_number from here is deprecated; please use "from sage.libs.flint.arith_sage import euler_number" instead. + See https://github.com/sagemath/sage/issues/36449 for details. + 5 + sage: stirling_number_1(2, 4) + doctest:warning + ... + DeprecationWarning: + Importing stirling_number_1 from here is deprecated; please use "from sage.libs.flint.arith_sage import stirling_number_1" instead. + See https://github.com/sagemath/sage/issues/36449 for details. + 0 + sage: stirling_number_2(2, 4) + doctest:warning + ... + DeprecationWarning: + Importing stirling_number_2 from here is deprecated; please use "from sage.libs.flint.arith_sage import stirling_number_2" instead. + See https://github.com/sagemath/sage/issues/36449 for details. + 0 + sage: number_of_partitions(4) + doctest:warning + ... + DeprecationWarning: + Importing number_of_partitions from here is deprecated; please use "from sage.libs.flint.arith_sage import number_of_partitions" instead. + See https://github.com/sagemath/sage/issues/36449 for details. + 5 + sage: dedekind_sum(4, 5) + doctest:warning + ... + DeprecationWarning: + Importing dedekind_sum from here is deprecated; please use "from sage.libs.flint.arith_sage import dedekind_sum" instead. + See https://github.com/sagemath/sage/issues/36449 for details. + -1/5 + sage: harmonic_number(4) + doctest:warning + ... + DeprecationWarning: + Importing harmonic_number from here is deprecated; please use "from sage.libs.flint.arith_sage import harmonic_number" instead. + See https://github.com/sagemath/sage/issues/36449 for details. + 25/12 """ -FLINT Arithmetic Functions -""" - -#***************************************************************************** -# Copyright (C) 2013 Fredrik Johansson -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 2 of the License, or -# (at your option) any later version. -# http://www.gnu.org/licenses/ -#***************************************************************************** - -from cysignals.signals cimport sig_on, sig_off - -from sage.libs.flint.fmpz cimport * -from sage.libs.flint.fmpq cimport * - - -from sage.rings.integer cimport Integer -from sage.rings.rational cimport Rational - - -def bell_number(unsigned long n): - """ - Return the `n`-th Bell number. - - See :wikipedia:`Bell_number`. - - EXAMPLES:: - - sage: from sage.libs.flint.arith import bell_number - sage: [bell_number(i) for i in range(10)] - [1, 1, 2, 5, 15, 52, 203, 877, 4140, 21147] - sage: bell_number(10) - 115975 - sage: bell_number(40) - 157450588391204931289324344702531067 - sage: bell_number(100) - 47585391276764833658790768841387207826363669686825611466616334637559114497892442622672724044217756306953557882560751 - """ - cdef fmpz_t ans_fmpz - cdef Integer ans = Integer(0) - - fmpz_init(ans_fmpz) - - if n > 1000: - sig_on() - arith_bell_number(ans_fmpz, n) - fmpz_get_mpz(ans.value, ans_fmpz) - fmpz_clear(ans_fmpz) - if n > 1000: - sig_off() - - return ans - - -def bernoulli_number(unsigned long n): - """ - Return the `n`-th Bernoulli number. - - See :wikipedia:`Bernoulli_number`. - - EXAMPLES:: - - sage: from sage.libs.flint.arith import bernoulli_number - sage: [bernoulli_number(i) for i in range(10)] - [1, -1/2, 1/6, 0, -1/30, 0, 1/42, 0, -1/30, 0] - sage: bernoulli_number(10) - 5/66 - sage: bernoulli_number(40) - -261082718496449122051/13530 - sage: bernoulli_number(100) - -94598037819122125295227433069493721872702841533066936133385696204311395415197247711/33330 - """ - cdef fmpq_t ans_fmpq - cdef Rational ans = Rational.__new__(Rational) - - fmpq_init(ans_fmpq) - sig_on() - arith_bernoulli_number(ans_fmpq, n) - sig_off() - fmpq_get_mpq(ans.value, ans_fmpq) - fmpq_clear(ans_fmpq) - - return ans - - -def euler_number(unsigned long n): - """ - Return the Euler number of index `n`. - - See :wikipedia:`Euler_number`. - - EXAMPLES:: - - sage: from sage.libs.flint.arith import euler_number - sage: [euler_number(i) for i in range(8)] - [1, 0, -1, 0, 5, 0, -61, 0] - """ - cdef fmpz_t ans_fmpz - cdef Integer ans = Integer(0) - - fmpz_init(ans_fmpz) - - if n > 1000: - sig_on() - arith_euler_number(ans_fmpz, n) - fmpz_get_mpz(ans.value, ans_fmpz) - fmpz_clear(ans_fmpz) - if n > 1000: - sig_off() - - return ans - - -def stirling_number_1(long n, long k): - """ - Return the unsigned Stirling number of the first kind. - - EXAMPLES:: - - sage: from sage.libs.flint.arith import stirling_number_1 - sage: [stirling_number_1(8,i) for i in range(9)] - [0, 5040, 13068, 13132, 6769, 1960, 322, 28, 1] - """ - cdef fmpz_t ans_fmpz - cdef Integer ans = Integer(0) - - fmpz_init(ans_fmpz) - - if n > 1000: - sig_on() - arith_stirling_number_1u(ans_fmpz, n, k) - fmpz_get_mpz(ans.value, ans_fmpz) - fmpz_clear(ans_fmpz) - if n > 1000: - sig_off() - return ans - - -def stirling_number_2(long n, long k): - """ - Return the Stirling number of the second kind. - - EXAMPLES:: - - sage: from sage.libs.flint.arith import stirling_number_2 - sage: [stirling_number_2(8,i) for i in range(9)] - [0, 1, 127, 966, 1701, 1050, 266, 28, 1] - """ - cdef fmpz_t ans_fmpz - cdef Integer ans = Integer(0) - - fmpz_init(ans_fmpz) - - if n > 1000: - sig_on() - arith_stirling_number_2(ans_fmpz, n, k) - fmpz_get_mpz(ans.value, ans_fmpz) - fmpz_clear(ans_fmpz) - if n > 1000: - sig_off() - return ans - - -def number_of_partitions(unsigned long n): - """ - Return the number of partitions of the integer `n`. - - See :wikipedia:`Partition_(number_theory)`. - - EXAMPLES:: - - sage: from sage.libs.flint.arith import number_of_partitions - sage: number_of_partitions(3) - 3 - sage: number_of_partitions(10) - 42 - sage: number_of_partitions(40) - 37338 - sage: number_of_partitions(100) - 190569292 - sage: number_of_partitions(100000) - 27493510569775696512677516320986352688173429315980054758203125984302147328114964173055050741660736621590157844774296248940493063070200461792764493033510116079342457190155718943509725312466108452006369558934464248716828789832182345009262853831404597021307130674510624419227311238999702284408609370935531629697851569569892196108480158600569421098519 - - TESTS:: - - sage: n = 500 + randint(0,500) - sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0 - True - sage: n = 1500 + randint(0,1500) - sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0 - True - sage: n = 1000000 + randint(0,1000000) - sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0 - True - sage: n = 1000000 + randint(0,1000000) - sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0 - True - sage: n = 1000000 + randint(0,1000000) - sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0 - True - sage: n = 1000000 + randint(0,1000000) - sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0 - True - sage: n = 1000000 + randint(0,1000000) - sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0 - True - sage: n = 1000000 + randint(0,1000000) - sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0 - True - sage: n = 100000000 + randint(0,100000000) - sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0 # long time - True - """ - cdef fmpz_t ans_fmpz - cdef Integer ans - - fmpz_init(ans_fmpz) - - if n > 1000: - sig_on() - - arith_number_of_partitions(ans_fmpz, n) - - if n > 1000: - sig_off() - - ans = Integer(0) - fmpz_get_mpz(ans.value, ans_fmpz) - fmpz_clear(ans_fmpz) - return ans - - -def dedekind_sum(p, q): - """ - Return the Dedekind sum `s(p, q)` where `p` and `q` are arbitrary integers. - - See :wikipedia:`Dedekind_sum`. - - EXAMPLES:: - - sage: from sage.libs.flint.arith import dedekind_sum - sage: dedekind_sum(4, 5) - -1/5 - """ - p = Integer(p) - q = Integer(q) - s = Rational(0) - - cdef fmpz_t p_fmpz, q_fmpz - cdef fmpq_t s_fmpq - - fmpz_init(p_fmpz) - fmpz_init(q_fmpz) - fmpq_init(s_fmpq) - - fmpz_set_mpz(p_fmpz, (p).value) - fmpz_set_mpz(q_fmpz, (q).value) - - arith_dedekind_sum(s_fmpq, p_fmpz, q_fmpz) - - fmpq_get_mpq((s).value, s_fmpq) - - fmpz_clear(p_fmpz) - fmpz_clear(q_fmpz) - fmpq_clear(s_fmpq) - - return s - - -def harmonic_number(unsigned long n): - """ - Return the harmonic number `H_n`. - - See :wikipedia:`Harmonic_number`. - - EXAMPLES:: - - sage: from sage.libs.flint.arith import harmonic_number - sage: n = 500 + randint(0,500) - sage: bool( sum(1/k for k in range(1,n+1)) == harmonic_number(n) ) - True - """ - s = Rational(0) - cdef fmpq_t s_fmpq - - fmpq_init(s_fmpq) - - sig_on() - arith_harmonic_number(s_fmpq, n) - - fmpq_get_mpq((s).value, s_fmpq) - sig_off() - fmpq_clear(s_fmpq) +from sage.misc.lazy_import import LazyImport - return s +bell_number = LazyImport('sage.libs.flint.arith_sage', 'bell_number', deprecation=36449) +bernoulli_number = LazyImport('sage.libs.flint.arith_sage', 'bernoulli_number', deprecation=36449) +euler_number = LazyImport('sage.libs.flint.arith_sage', 'euler_number', deprecation=36449) +stirling_number_1 = LazyImport('sage.libs.flint.arith_sage', 'stirling_number_1', deprecation=36449) +stirling_number_2 = LazyImport('sage.libs.flint.arith_sage', 'stirling_number_2', deprecation=36449) +number_of_partitions = LazyImport('sage.libs.flint.arith_sage', 'number_of_partitions', deprecation=36449) +dedekind_sum = LazyImport('sage.libs.flint.arith_sage', 'dedekind_sum', deprecation=36449) +harmonic_number = LazyImport('sage.libs.flint.arith_sage', 'harmonic_number', deprecation=36449) diff --git a/src/sage/libs/flint/arith_sage.pyx b/src/sage/libs/flint/arith_sage.pyx new file mode 100644 index 00000000000..dcd22bbdf9a --- /dev/null +++ b/src/sage/libs/flint/arith_sage.pyx @@ -0,0 +1,303 @@ +# distutils: extra_compile_args = -D_XPG6 +""" +FLINT Arithmetic Functions +""" + +#***************************************************************************** +# Copyright (C) 2013 Fredrik Johansson +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# http://www.gnu.org/licenses/ +#***************************************************************************** + +from cysignals.signals cimport sig_on, sig_off + +from sage.libs.flint.types cimport * +from sage.libs.flint.fmpz cimport * +from sage.libs.flint.fmpq cimport * +from sage.libs.flint.arith cimport * + + +from sage.rings.integer cimport Integer +from sage.rings.rational cimport Rational + + +def bell_number(unsigned long n): + """ + Return the `n`-th Bell number. + + See :wikipedia:`Bell_number`. + + EXAMPLES:: + + sage: from sage.libs.flint.arith_sage import bell_number + sage: [bell_number(i) for i in range(10)] + [1, 1, 2, 5, 15, 52, 203, 877, 4140, 21147] + sage: bell_number(10) + 115975 + sage: bell_number(40) + 157450588391204931289324344702531067 + sage: bell_number(100) + 47585391276764833658790768841387207826363669686825611466616334637559114497892442622672724044217756306953557882560751 + """ + cdef fmpz_t ans_fmpz + cdef Integer ans = Integer(0) + + fmpz_init(ans_fmpz) + + if n > 1000: + sig_on() + arith_bell_number(ans_fmpz, n) + fmpz_get_mpz(ans.value, ans_fmpz) + fmpz_clear(ans_fmpz) + if n > 1000: + sig_off() + + return ans + + +def bernoulli_number(unsigned long n): + """ + Return the `n`-th Bernoulli number. + + See :wikipedia:`Bernoulli_number`. + + EXAMPLES:: + + sage: from sage.libs.flint.arith_sage import bernoulli_number + sage: [bernoulli_number(i) for i in range(10)] + [1, -1/2, 1/6, 0, -1/30, 0, 1/42, 0, -1/30, 0] + sage: bernoulli_number(10) + 5/66 + sage: bernoulli_number(40) + -261082718496449122051/13530 + sage: bernoulli_number(100) + -94598037819122125295227433069493721872702841533066936133385696204311395415197247711/33330 + """ + cdef fmpq_t ans_fmpq + cdef Rational ans = Rational.__new__(Rational) + + fmpq_init(ans_fmpq) + sig_on() + arith_bernoulli_number(ans_fmpq, n) + sig_off() + fmpq_get_mpq(ans.value, ans_fmpq) + fmpq_clear(ans_fmpq) + + return ans + + +def euler_number(unsigned long n): + """ + Return the Euler number of index `n`. + + See :wikipedia:`Euler_number`. + + EXAMPLES:: + + sage: from sage.libs.flint.arith_sage import euler_number + sage: [euler_number(i) for i in range(8)] + [1, 0, -1, 0, 5, 0, -61, 0] + """ + cdef fmpz_t ans_fmpz + cdef Integer ans = Integer(0) + + fmpz_init(ans_fmpz) + + if n > 1000: + sig_on() + arith_euler_number(ans_fmpz, n) + fmpz_get_mpz(ans.value, ans_fmpz) + fmpz_clear(ans_fmpz) + if n > 1000: + sig_off() + + return ans + + +def stirling_number_1(long n, long k): + """ + Return the unsigned Stirling number of the first kind. + + EXAMPLES:: + + sage: from sage.libs.flint.arith_sage import stirling_number_1 + sage: [stirling_number_1(8,i) for i in range(9)] + [0, 5040, 13068, 13132, 6769, 1960, 322, 28, 1] + """ + cdef fmpz_t ans_fmpz + cdef Integer ans = Integer(0) + + fmpz_init(ans_fmpz) + + if n > 1000: + sig_on() + arith_stirling_number_1u(ans_fmpz, n, k) + fmpz_get_mpz(ans.value, ans_fmpz) + fmpz_clear(ans_fmpz) + if n > 1000: + sig_off() + return ans + + +def stirling_number_2(long n, long k): + """ + Return the Stirling number of the second kind. + + EXAMPLES:: + + sage: from sage.libs.flint.arith_sage import stirling_number_2 + sage: [stirling_number_2(8,i) for i in range(9)] + [0, 1, 127, 966, 1701, 1050, 266, 28, 1] + """ + cdef fmpz_t ans_fmpz + cdef Integer ans = Integer(0) + + fmpz_init(ans_fmpz) + + if n > 1000: + sig_on() + arith_stirling_number_2(ans_fmpz, n, k) + fmpz_get_mpz(ans.value, ans_fmpz) + fmpz_clear(ans_fmpz) + if n > 1000: + sig_off() + return ans + + +def number_of_partitions(unsigned long n): + """ + Return the number of partitions of the integer `n`. + + See :wikipedia:`Partition_(number_theory)`. + + EXAMPLES:: + + sage: from sage.libs.flint.arith_sage import number_of_partitions + sage: number_of_partitions(3) + 3 + sage: number_of_partitions(10) + 42 + sage: number_of_partitions(40) + 37338 + sage: number_of_partitions(100) + 190569292 + sage: number_of_partitions(100000) + 27493510569775696512677516320986352688173429315980054758203125984302147328114964173055050741660736621590157844774296248940493063070200461792764493033510116079342457190155718943509725312466108452006369558934464248716828789832182345009262853831404597021307130674510624419227311238999702284408609370935531629697851569569892196108480158600569421098519 + + TESTS:: + + sage: n = 500 + randint(0,500) + sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0 + True + sage: n = 1500 + randint(0,1500) + sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0 + True + sage: n = 1000000 + randint(0,1000000) + sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0 + True + sage: n = 1000000 + randint(0,1000000) + sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0 + True + sage: n = 1000000 + randint(0,1000000) + sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0 + True + sage: n = 1000000 + randint(0,1000000) + sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0 + True + sage: n = 1000000 + randint(0,1000000) + sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0 + True + sage: n = 1000000 + randint(0,1000000) + sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0 + True + sage: n = 100000000 + randint(0,100000000) + sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0 # long time + True + """ + cdef fmpz_t ans_fmpz + cdef Integer ans + + fmpz_init(ans_fmpz) + + if n > 1000: + sig_on() + + arith_number_of_partitions(ans_fmpz, n) + + if n > 1000: + sig_off() + + ans = Integer(0) + fmpz_get_mpz(ans.value, ans_fmpz) + fmpz_clear(ans_fmpz) + return ans + + +def dedekind_sum(p, q): + """ + Return the Dedekind sum `s(p, q)` where `p` and `q` are arbitrary integers. + + See :wikipedia:`Dedekind_sum`. + + EXAMPLES:: + + sage: from sage.libs.flint.arith_sage import dedekind_sum + sage: dedekind_sum(4, 5) + -1/5 + """ + p = Integer(p) + q = Integer(q) + s = Rational(0) + + cdef fmpz_t p_fmpz, q_fmpz + cdef fmpq_t s_fmpq + + fmpz_init(p_fmpz) + fmpz_init(q_fmpz) + fmpq_init(s_fmpq) + + fmpz_set_mpz(p_fmpz, (p).value) + fmpz_set_mpz(q_fmpz, (q).value) + + arith_dedekind_sum(s_fmpq, p_fmpz, q_fmpz) + + fmpq_get_mpq((s).value, s_fmpq) + + fmpz_clear(p_fmpz) + fmpz_clear(q_fmpz) + fmpq_clear(s_fmpq) + + return s + + +def harmonic_number(unsigned long n): + """ + Return the harmonic number `H_n`. + + See :wikipedia:`Harmonic_number`. + + EXAMPLES:: + + sage: from sage.libs.flint.arith_sage import harmonic_number + sage: n = 500 + randint(0,500) + sage: bool( sum(1/k for k in range(1,n+1)) == harmonic_number(n) ) + True + """ + s = Rational(0) + cdef fmpq_t s_fmpq + + fmpq_init(s_fmpq) + + sig_on() + arith_harmonic_number(s_fmpq, n) + + fmpq_get_mpq((s).value, s_fmpq) + sig_off() + + fmpq_clear(s_fmpq) + + return s diff --git a/src/sage/libs/flint/bernoulli.pxd b/src/sage/libs/flint/bernoulli.pxd new file mode 100644 index 00000000000..edbff6fb26e --- /dev/null +++ b/src/sage/libs/flint/bernoulli.pxd @@ -0,0 +1,26 @@ +# distutils: libraries = flint +# distutils: depends = flint/bernoulli.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void bernoulli_rev_init(bernoulli_rev_t it, ulong n) noexcept + void bernoulli_rev_next(fmpz_t numer, fmpz_t denom, bernoulli_rev_t it) noexcept + void bernoulli_rev_clear(bernoulli_rev_t it) noexcept + void bernoulli_fmpq_vec_no_cache(fmpq * res, ulong a, slong num) noexcept + void bernoulli_cache_compute(slong n) noexcept + slong bernoulli_bound_2exp_si(ulong n) noexcept + ulong bernoulli_mod_p_harvey(ulong n, ulong p) noexcept + void _bernoulli_fmpq_ui_zeta(fmpz_t num, fmpz_t den, ulong n) noexcept + void _bernoulli_fmpq_ui_multi_mod(fmpz_t num, fmpz_t den, ulong n, double alpha) noexcept + void _bernoulli_fmpq_ui(fmpz_t num, fmpz_t den, ulong n) noexcept + void bernoulli_fmpq_ui(fmpq_t b, ulong n) noexcept diff --git a/src/sage/libs/flint/bool_mat.pxd b/src/sage/libs/flint/bool_mat.pxd new file mode 100644 index 00000000000..0ef3b44feb8 --- /dev/null +++ b/src/sage/libs/flint/bool_mat.pxd @@ -0,0 +1,50 @@ +# distutils: libraries = flint +# distutils: depends = flint/bool_mat.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + int bool_mat_get_entry(const bool_mat_t mat, slong i, slong j) noexcept + void bool_mat_set_entry(bool_mat_t mat, slong i, slong j, int x) noexcept + void bool_mat_init(bool_mat_t mat, slong r, slong c) noexcept + void bool_mat_clear(bool_mat_t mat) noexcept + bint bool_mat_is_empty(const bool_mat_t mat) noexcept + bint bool_mat_is_square(const bool_mat_t mat) noexcept + void bool_mat_set(bool_mat_t dest, const bool_mat_t src) noexcept + void bool_mat_print(const bool_mat_t mat) noexcept + void bool_mat_fprint(FILE * file, const bool_mat_t mat) noexcept + bint bool_mat_equal(const bool_mat_t mat1, const bool_mat_t mat2) noexcept + int bool_mat_any(const bool_mat_t mat) noexcept + int bool_mat_all(const bool_mat_t mat) noexcept + bint bool_mat_is_diagonal(const bool_mat_t A) noexcept + bint bool_mat_is_lower_triangular(const bool_mat_t A) noexcept + bint bool_mat_is_transitive(const bool_mat_t mat) noexcept + bint bool_mat_is_nilpotent(const bool_mat_t A) noexcept + void bool_mat_randtest(bool_mat_t mat, flint_rand_t state) noexcept + void bool_mat_randtest_diagonal(bool_mat_t mat, flint_rand_t state) noexcept + void bool_mat_randtest_nilpotent(bool_mat_t mat, flint_rand_t state) noexcept + void bool_mat_zero(bool_mat_t mat) noexcept + void bool_mat_one(bool_mat_t mat) noexcept + void bool_mat_directed_path(bool_mat_t A) noexcept + void bool_mat_directed_cycle(bool_mat_t A) noexcept + void bool_mat_transpose(bool_mat_t dest, const bool_mat_t src) noexcept + void bool_mat_complement(bool_mat_t B, const bool_mat_t A) noexcept + void bool_mat_add(bool_mat_t res, const bool_mat_t mat1, const bool_mat_t mat2) noexcept + void bool_mat_mul(bool_mat_t res, const bool_mat_t mat1, const bool_mat_t mat2) noexcept + void bool_mat_mul_entrywise(bool_mat_t res, const bool_mat_t mat1, const bool_mat_t mat2) noexcept + void bool_mat_sqr(bool_mat_t B, const bool_mat_t A) noexcept + void bool_mat_pow_ui(bool_mat_t B, const bool_mat_t A, ulong exp) noexcept + int bool_mat_trace(const bool_mat_t mat) noexcept + slong bool_mat_nilpotency_degree(const bool_mat_t A) noexcept + void bool_mat_transitive_closure(bool_mat_t B, const bool_mat_t A) noexcept + slong bool_mat_get_strongly_connected_components(slong * p, const bool_mat_t A) noexcept + slong bool_mat_all_pairs_longest_walk(fmpz_mat_t B, const bool_mat_t A) noexcept diff --git a/src/sage/libs/flint/ca.pxd b/src/sage/libs/flint/ca.pxd new file mode 100644 index 00000000000..121a90b2f94 --- /dev/null +++ b/src/sage/libs/flint/ca.pxd @@ -0,0 +1,201 @@ +# distutils: libraries = flint +# distutils: depends = flint/ca.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void ca_ctx_init(ca_ctx_t ctx) noexcept + void ca_ctx_clear(ca_ctx_t ctx) noexcept + void ca_ctx_print(ca_ctx_t ctx) noexcept + void ca_init(ca_t x, ca_ctx_t ctx) noexcept + void ca_clear(ca_t x, ca_ctx_t ctx) noexcept + void ca_swap(ca_t x, ca_t y, ca_ctx_t ctx) noexcept + void ca_get_fexpr(fexpr_t res, const ca_t x, ulong flags, ca_ctx_t ctx) noexcept + int ca_set_fexpr(ca_t res, const fexpr_t expr, ca_ctx_t ctx) noexcept + void ca_print(const ca_t x, ca_ctx_t ctx) noexcept + void ca_fprint(FILE * fp, const ca_t x, ca_ctx_t ctx) noexcept + char * ca_get_str(const ca_t x, ca_ctx_t ctx) noexcept + void ca_printn(const ca_t x, slong n, ca_ctx_t ctx) noexcept + void ca_zero(ca_t res, ca_ctx_t ctx) noexcept + void ca_one(ca_t res, ca_ctx_t ctx) noexcept + void ca_neg_one(ca_t res, ca_ctx_t ctx) noexcept + void ca_i(ca_t res, ca_ctx_t ctx) noexcept + void ca_neg_i(ca_t res, ca_ctx_t ctx) noexcept + void ca_pi(ca_t res, ca_ctx_t ctx) noexcept + void ca_pi_i(ca_t res, ca_ctx_t ctx) noexcept + void ca_euler(ca_t res, ca_ctx_t ctx) noexcept + void ca_unknown(ca_t res, ca_ctx_t ctx) noexcept + void ca_undefined(ca_t res, ca_ctx_t ctx) noexcept + void ca_uinf(ca_t res, ca_ctx_t ctx) noexcept + void ca_pos_inf(ca_t res, ca_ctx_t ctx) noexcept + void ca_neg_inf(ca_t res, ca_ctx_t ctx) noexcept + void ca_pos_i_inf(ca_t res, ca_ctx_t ctx) noexcept + void ca_neg_i_inf(ca_t res, ca_ctx_t ctx) noexcept + void ca_set(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_set_si(ca_t res, slong v, ca_ctx_t ctx) noexcept + void ca_set_ui(ca_t res, ulong v, ca_ctx_t ctx) noexcept + void ca_set_fmpz(ca_t res, const fmpz_t v, ca_ctx_t ctx) noexcept + void ca_set_fmpq(ca_t res, const fmpq_t v, ca_ctx_t ctx) noexcept + void ca_set_d(ca_t res, double x, ca_ctx_t ctx) noexcept + void ca_set_d_d(ca_t res, double x, double y, ca_ctx_t ctx) noexcept + void ca_transfer(ca_t res, ca_ctx_t res_ctx, const ca_t src, ca_ctx_t src_ctx) noexcept + void ca_set_qqbar(ca_t res, const qqbar_t x, ca_ctx_t ctx) noexcept + int ca_get_fmpz(fmpz_t res, const ca_t x, ca_ctx_t ctx) noexcept + int ca_get_fmpq(fmpq_t res, const ca_t x, ca_ctx_t ctx) noexcept + int ca_get_qqbar(qqbar_t res, const ca_t x, ca_ctx_t ctx) noexcept + int ca_can_evaluate_qqbar(const ca_t x, ca_ctx_t ctx) noexcept + void ca_randtest_rational(ca_t res, flint_rand_t state, slong bits, ca_ctx_t ctx) noexcept + void ca_randtest(ca_t res, flint_rand_t state, slong depth, slong bits, ca_ctx_t ctx) noexcept + void ca_randtest_special(ca_t res, flint_rand_t state, slong depth, slong bits, ca_ctx_t ctx) noexcept + void ca_randtest_same_nf(ca_t res, flint_rand_t state, const ca_t x, slong bits, slong den_bits, ca_ctx_t ctx) noexcept + bint ca_equal_repr(const ca_t x, const ca_t y, ca_ctx_t ctx) noexcept + int ca_cmp_repr(const ca_t x, const ca_t y, ca_ctx_t ctx) noexcept + ulong ca_hash_repr(const ca_t x, ca_ctx_t ctx) noexcept + bint ca_is_unknown(const ca_t x, ca_ctx_t ctx) noexcept + bint ca_is_special(const ca_t x, ca_ctx_t ctx) noexcept + bint ca_is_qq_elem(const ca_t x, ca_ctx_t ctx) noexcept + bint ca_is_qq_elem_zero(const ca_t x, ca_ctx_t ctx) noexcept + bint ca_is_qq_elem_one(const ca_t x, ca_ctx_t ctx) noexcept + bint ca_is_qq_elem_integer(const ca_t x, ca_ctx_t ctx) noexcept + bint ca_is_nf_elem(const ca_t x, ca_ctx_t ctx) noexcept + bint ca_is_cyclotomic_nf_elem(slong * p, ulong * q, const ca_t x, ca_ctx_t ctx) noexcept + bint ca_is_generic_elem(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_number(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_zero(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_one(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_neg_one(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_i(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_neg_i(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_algebraic(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_rational(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_integer(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_real(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_negative_real(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_imaginary(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_undefined(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_infinity(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_uinf(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_signed_inf(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_pos_inf(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_neg_inf(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_pos_i_inf(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_is_neg_i_inf(const ca_t x, ca_ctx_t ctx) noexcept + truth_t ca_check_equal(const ca_t x, const ca_t y, ca_ctx_t ctx) noexcept + truth_t ca_check_lt(const ca_t x, const ca_t y, ca_ctx_t ctx) noexcept + truth_t ca_check_le(const ca_t x, const ca_t y, ca_ctx_t ctx) noexcept + truth_t ca_check_gt(const ca_t x, const ca_t y, ca_ctx_t ctx) noexcept + truth_t ca_check_ge(const ca_t x, const ca_t y, ca_ctx_t ctx) noexcept + void ca_merge_fields(ca_t resx, ca_t resy, const ca_t x, const ca_t y, ca_ctx_t ctx) noexcept + void ca_condense_field(ca_t res, ca_ctx_t ctx) noexcept + ca_ext_ptr ca_is_gen_as_ext(const ca_t x, ca_ctx_t ctx) noexcept + void ca_neg(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_add_fmpq(ca_t res, const ca_t x, const fmpq_t y, ca_ctx_t ctx) noexcept + void ca_add_fmpz(ca_t res, const ca_t x, const fmpz_t y, ca_ctx_t ctx) noexcept + void ca_add_ui(ca_t res, const ca_t x, ulong y, ca_ctx_t ctx) noexcept + void ca_add_si(ca_t res, const ca_t x, slong y, ca_ctx_t ctx) noexcept + void ca_add(ca_t res, const ca_t x, const ca_t y, ca_ctx_t ctx) noexcept + void ca_sub_fmpq(ca_t res, const ca_t x, const fmpq_t y, ca_ctx_t ctx) noexcept + void ca_sub_fmpz(ca_t res, const ca_t x, const fmpz_t y, ca_ctx_t ctx) noexcept + void ca_sub_ui(ca_t res, const ca_t x, ulong y, ca_ctx_t ctx) noexcept + void ca_sub_si(ca_t res, const ca_t x, slong y, ca_ctx_t ctx) noexcept + void ca_fmpq_sub(ca_t res, const fmpq_t x, const ca_t y, ca_ctx_t ctx) noexcept + void ca_fmpz_sub(ca_t res, const fmpz_t x, const ca_t y, ca_ctx_t ctx) noexcept + void ca_ui_sub(ca_t res, ulong x, const ca_t y, ca_ctx_t ctx) noexcept + void ca_si_sub(ca_t res, slong x, const ca_t y, ca_ctx_t ctx) noexcept + void ca_sub(ca_t res, const ca_t x, const ca_t y, ca_ctx_t ctx) noexcept + void ca_mul_fmpq(ca_t res, const ca_t x, const fmpq_t y, ca_ctx_t ctx) noexcept + void ca_mul_fmpz(ca_t res, const ca_t x, const fmpz_t y, ca_ctx_t ctx) noexcept + void ca_mul_ui(ca_t res, const ca_t x, ulong y, ca_ctx_t ctx) noexcept + void ca_mul_si(ca_t res, const ca_t x, slong y, ca_ctx_t ctx) noexcept + void ca_mul(ca_t res, const ca_t x, const ca_t y, ca_ctx_t ctx) noexcept + void ca_inv(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_fmpq_div(ca_t res, const fmpq_t x, const ca_t y, ca_ctx_t ctx) noexcept + void ca_fmpz_div(ca_t res, const fmpz_t x, const ca_t y, ca_ctx_t ctx) noexcept + void ca_ui_div(ca_t res, ulong x, const ca_t y, ca_ctx_t ctx) noexcept + void ca_si_div(ca_t res, slong x, const ca_t y, ca_ctx_t ctx) noexcept + void ca_div_fmpq(ca_t res, const ca_t x, const fmpq_t y, ca_ctx_t ctx) noexcept + void ca_div_fmpz(ca_t res, const ca_t x, const fmpz_t y, ca_ctx_t ctx) noexcept + void ca_div_ui(ca_t res, const ca_t x, ulong y, ca_ctx_t ctx) noexcept + void ca_div_si(ca_t res, const ca_t x, slong y, ca_ctx_t ctx) noexcept + void ca_div(ca_t res, const ca_t x, const ca_t y, ca_ctx_t ctx) noexcept + void ca_dot(ca_t res, const ca_t initial, int subtract, ca_srcptr x, slong xstep, ca_srcptr y, slong ystep, slong len, ca_ctx_t ctx) noexcept + void ca_fmpz_poly_evaluate(ca_t res, const fmpz_poly_t poly, const ca_t x, ca_ctx_t ctx) noexcept + void ca_fmpq_poly_evaluate(ca_t res, const fmpq_poly_t poly, const ca_t x, ca_ctx_t ctx) noexcept + void ca_fmpz_mpoly_evaluate_horner(ca_t res, const fmpz_mpoly_t f, ca_srcptr x, const fmpz_mpoly_ctx_t mctx, ca_ctx_t ctx) noexcept + void ca_fmpz_mpoly_evaluate_iter(ca_t res, const fmpz_mpoly_t f, ca_srcptr x, const fmpz_mpoly_ctx_t mctx, ca_ctx_t ctx) noexcept + void ca_fmpz_mpoly_evaluate(ca_t res, const fmpz_mpoly_t f, ca_srcptr x, const fmpz_mpoly_ctx_t mctx, ca_ctx_t ctx) noexcept + void ca_fmpz_mpoly_q_evaluate(ca_t res, const fmpz_mpoly_q_t f, ca_srcptr x, const fmpz_mpoly_ctx_t mctx, ca_ctx_t ctx) noexcept + void ca_fmpz_mpoly_q_evaluate_no_division_by_zero(ca_t res, const fmpz_mpoly_q_t f, ca_srcptr x, const fmpz_mpoly_ctx_t mctx, ca_ctx_t ctx) noexcept + void ca_inv_no_division_by_zero(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_sqr(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_pow_fmpq(ca_t res, const ca_t x, const fmpq_t y, ca_ctx_t ctx) noexcept + void ca_pow_fmpz(ca_t res, const ca_t x, const fmpz_t y, ca_ctx_t ctx) noexcept + void ca_pow_ui(ca_t res, const ca_t x, ulong y, ca_ctx_t ctx) noexcept + void ca_pow_si(ca_t res, const ca_t x, slong y, ca_ctx_t ctx) noexcept + void ca_pow(ca_t res, const ca_t x, const ca_t y, ca_ctx_t ctx) noexcept + void ca_pow_si_arithmetic(ca_t res, const ca_t x, slong n, ca_ctx_t ctx) noexcept + void ca_sqrt_inert(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_sqrt_nofactor(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_sqrt_factor(ca_t res, const ca_t x, ulong flags, ca_ctx_t ctx) noexcept + void ca_sqrt(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_sqrt_ui(ca_t res, ulong n, ca_ctx_t ctx) noexcept + void ca_abs(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_sgn(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_csgn(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_arg(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_re(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_im(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_conj_deep(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_conj_shallow(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_conj(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_floor(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_ceil(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_exp(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_log(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_sin_cos_exponential(ca_t res1, ca_t res2, const ca_t x, ca_ctx_t ctx) noexcept + void ca_sin_cos_direct(ca_t res1, ca_t res2, const ca_t x, ca_ctx_t ctx) noexcept + void ca_sin_cos_tangent(ca_t res1, ca_t res2, const ca_t x, ca_ctx_t ctx) noexcept + void ca_sin_cos(ca_t res1, ca_t res2, const ca_t x, ca_ctx_t ctx) noexcept + void ca_sin(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_cos(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_tan_sine_cosine(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_tan_exponential(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_tan_direct(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_tan(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_cot(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_atan_logarithm(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_atan_direct(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_atan(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_asin_logarithm(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_acos_logarithm(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_asin_direct(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_acos_direct(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_asin(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_acos(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_gamma(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_erf(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_erfc(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_erfi(ca_t res, const ca_t x, ca_ctx_t ctx) noexcept + void ca_get_acb_raw(acb_t res, const ca_t x, slong prec, ca_ctx_t ctx) noexcept + void ca_get_acb(acb_t res, const ca_t x, slong prec, ca_ctx_t ctx) noexcept + void ca_get_acb_accurate_parts(acb_t res, const ca_t x, slong prec, ca_ctx_t ctx) noexcept + char * ca_get_decimal_str(const ca_t x, slong digits, ulong flags, ca_ctx_t ctx) noexcept + void ca_rewrite_complex_normal_form(ca_t res, const ca_t x, int deep, ca_ctx_t ctx) noexcept + void ca_factor_init(ca_factor_t fac, ca_ctx_t ctx) noexcept + void ca_factor_clear(ca_factor_t fac, ca_ctx_t ctx) noexcept + void ca_factor_one(ca_factor_t fac, ca_ctx_t ctx) noexcept + void ca_factor_print(const ca_factor_t fac, ca_ctx_t ctx) noexcept + void ca_factor_insert(ca_factor_t fac, const ca_t base, const ca_t exp, ca_ctx_t ctx) noexcept + void ca_factor_get_ca(ca_t res, const ca_factor_t fac, ca_ctx_t ctx) noexcept + void ca_factor(ca_factor_t res, const ca_t x, ulong flags, ca_ctx_t ctx) noexcept + void _ca_make_field_element(ca_t x, ca_field_srcptr new_index, ca_ctx_t ctx) noexcept + void _ca_make_fmpq(ca_t x, ca_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/ca_ext.pxd b/src/sage/libs/flint/ca_ext.pxd new file mode 100644 index 00000000000..62aa7309934 --- /dev/null +++ b/src/sage/libs/flint/ca_ext.pxd @@ -0,0 +1,32 @@ +# distutils: libraries = flint +# distutils: depends = flint/ca_ext.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void ca_ext_init_qqbar(ca_ext_t res, const qqbar_t x, ca_ctx_t ctx) noexcept + void ca_ext_init_const(ca_ext_t res, calcium_func_code func, ca_ctx_t ctx) noexcept + void ca_ext_init_fx(ca_ext_t res, calcium_func_code func, const ca_t x, ca_ctx_t ctx) noexcept + void ca_ext_init_fxy(ca_ext_t res, calcium_func_code func, const ca_t x, const ca_t y, ca_ctx_t ctx) noexcept + void ca_ext_init_fxn(ca_ext_t res, calcium_func_code func, ca_srcptr x, slong nargs, ca_ctx_t ctx) noexcept + void ca_ext_init_set(ca_ext_t res, const ca_ext_t x, ca_ctx_t ctx) noexcept + void ca_ext_clear(ca_ext_t res, ca_ctx_t ctx) noexcept + slong ca_ext_nargs(const ca_ext_t x, ca_ctx_t ctx) noexcept + void ca_ext_get_arg(ca_t res, const ca_ext_t x, slong i, ca_ctx_t ctx) noexcept + ulong ca_ext_hash(const ca_ext_t x, ca_ctx_t ctx) noexcept + bint ca_ext_equal_repr(const ca_ext_t x, const ca_ext_t y, ca_ctx_t ctx) noexcept + int ca_ext_cmp_repr(const ca_ext_t x, const ca_ext_t y, ca_ctx_t ctx) noexcept + void ca_ext_print(const ca_ext_t x, ca_ctx_t ctx) noexcept + void ca_ext_get_acb_raw(acb_t res, ca_ext_t x, slong prec, ca_ctx_t ctx) noexcept + void ca_ext_cache_init(ca_ext_cache_t cache, ca_ctx_t ctx) noexcept + void ca_ext_cache_clear(ca_ext_cache_t cache, ca_ctx_t ctx) noexcept + ca_ext_ptr ca_ext_cache_insert(ca_ext_cache_t cache, const ca_ext_t x, ca_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/ca_field.pxd b/src/sage/libs/flint/ca_field.pxd new file mode 100644 index 00000000000..3116540c419 --- /dev/null +++ b/src/sage/libs/flint/ca_field.pxd @@ -0,0 +1,30 @@ +# distutils: libraries = flint +# distutils: depends = flint/ca_field.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void ca_field_init_qq(ca_field_t K, ca_ctx_t ctx) noexcept + void ca_field_init_nf(ca_field_t K, const qqbar_t x, ca_ctx_t ctx) noexcept + void ca_field_init_const(ca_field_t K, calcium_func_code func, ca_ctx_t ctx) noexcept + void ca_field_init_fx(ca_field_t K, calcium_func_code func, const ca_t x, ca_ctx_t ctx) noexcept + void ca_field_init_fxy(ca_field_t K, calcium_func_code func, const ca_t x, const ca_t y, ca_ctx_t ctx) noexcept + void ca_field_init_multi(ca_field_t K, slong len, ca_ctx_t ctx) noexcept + void ca_field_set_ext(ca_field_t K, slong i, ca_ext_srcptr x_index, ca_ctx_t ctx) noexcept + void ca_field_clear(ca_field_t K, ca_ctx_t ctx) noexcept + void ca_field_print(const ca_field_t K, ca_ctx_t ctx) noexcept + void ca_field_build_ideal(ca_field_t K, ca_ctx_t ctx) noexcept + void ca_field_build_ideal_erf(ca_field_t K, ca_ctx_t ctx) noexcept + int ca_field_cmp(const ca_field_t K1, const ca_field_t K2, ca_ctx_t ctx) noexcept + void ca_field_cache_init(ca_field_cache_t cache, ca_ctx_t ctx) noexcept + void ca_field_cache_clear(ca_field_cache_t cache, ca_ctx_t ctx) noexcept + ca_field_ptr ca_field_cache_insert_ext(ca_field_cache_t cache, ca_ext_struct ** x, slong len, ca_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/ca_mat.pxd b/src/sage/libs/flint/ca_mat.pxd new file mode 100644 index 00000000000..600f5d50887 --- /dev/null +++ b/src/sage/libs/flint/ca_mat.pxd @@ -0,0 +1,115 @@ +# distutils: libraries = flint +# distutils: depends = flint/ca_mat.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + ca_ptr ca_mat_entry_ptr(ca_mat_t mat, slong i, slong j) noexcept + void ca_mat_init(ca_mat_t mat, slong r, slong c, ca_ctx_t ctx) noexcept + void ca_mat_clear(ca_mat_t mat, ca_ctx_t ctx) noexcept + void ca_mat_swap(ca_mat_t mat1, ca_mat_t mat2, ca_ctx_t ctx) noexcept + void ca_mat_window_init(ca_mat_t window, const ca_mat_t mat, slong r1, slong c1, slong r2, slong c2, ca_ctx_t ctx) noexcept + void ca_mat_window_clear(ca_mat_t window, ca_ctx_t ctx) noexcept + void ca_mat_set(ca_mat_t dest, const ca_mat_t src, ca_ctx_t ctx) noexcept + void ca_mat_set_fmpz_mat(ca_mat_t dest, const fmpz_mat_t src, ca_ctx_t ctx) noexcept + void ca_mat_set_fmpq_mat(ca_mat_t dest, const fmpq_mat_t src, ca_ctx_t ctx) noexcept + void ca_mat_set_ca(ca_mat_t mat, const ca_t c, ca_ctx_t ctx) noexcept + void ca_mat_transfer(ca_mat_t res, ca_ctx_t res_ctx, const ca_mat_t src, ca_ctx_t src_ctx) noexcept + void ca_mat_randtest(ca_mat_t mat, flint_rand_t state, slong depth, slong bits, ca_ctx_t ctx) noexcept + void ca_mat_randtest_rational(ca_mat_t mat, flint_rand_t state, slong bits, ca_ctx_t ctx) noexcept + void ca_mat_randops(ca_mat_t mat, flint_rand_t state, slong count, ca_ctx_t ctx) noexcept + void ca_mat_print(const ca_mat_t mat, ca_ctx_t ctx) noexcept + void ca_mat_printn(const ca_mat_t mat, slong digits, ca_ctx_t ctx) noexcept + void ca_mat_zero(ca_mat_t mat, ca_ctx_t ctx) noexcept + void ca_mat_one(ca_mat_t mat, ca_ctx_t ctx) noexcept + void ca_mat_ones(ca_mat_t mat, ca_ctx_t ctx) noexcept + void ca_mat_pascal(ca_mat_t mat, int triangular, ca_ctx_t ctx) noexcept + void ca_mat_stirling(ca_mat_t mat, int kind, ca_ctx_t ctx) noexcept + void ca_mat_hilbert(ca_mat_t mat, ca_ctx_t ctx) noexcept + void ca_mat_dft(ca_mat_t mat, int type, ca_ctx_t ctx) noexcept + truth_t ca_mat_check_equal(const ca_mat_t A, const ca_mat_t B, ca_ctx_t ctx) noexcept + truth_t ca_mat_check_is_zero(const ca_mat_t A, ca_ctx_t ctx) noexcept + truth_t ca_mat_check_is_one(const ca_mat_t A, ca_ctx_t ctx) noexcept + void ca_mat_transpose(ca_mat_t res, const ca_mat_t A, ca_ctx_t ctx) noexcept + void ca_mat_conj(ca_mat_t res, const ca_mat_t A, ca_ctx_t ctx) noexcept + void ca_mat_conj_transpose(ca_mat_t res, const ca_mat_t A, ca_ctx_t ctx) noexcept + void ca_mat_neg(ca_mat_t res, const ca_mat_t A, ca_ctx_t ctx) noexcept + void ca_mat_add(ca_mat_t res, const ca_mat_t A, const ca_mat_t B, ca_ctx_t ctx) noexcept + void ca_mat_sub(ca_mat_t res, const ca_mat_t A, const ca_mat_t B, ca_ctx_t ctx) noexcept + void ca_mat_mul_classical(ca_mat_t res, const ca_mat_t A, const ca_mat_t B, ca_ctx_t ctx) noexcept + void ca_mat_mul_same_nf(ca_mat_t res, const ca_mat_t A, const ca_mat_t B, ca_field_t K, ca_ctx_t ctx) noexcept + void ca_mat_mul(ca_mat_t res, const ca_mat_t A, const ca_mat_t B, ca_ctx_t ctx) noexcept + void ca_mat_mul_si(ca_mat_t B, const ca_mat_t A, slong c, ca_ctx_t ctx) noexcept + void ca_mat_mul_fmpz(ca_mat_t B, const ca_mat_t A, const fmpz_t c, ca_ctx_t ctx) noexcept + void ca_mat_mul_fmpq(ca_mat_t B, const ca_mat_t A, const fmpq_t c, ca_ctx_t ctx) noexcept + void ca_mat_mul_ca(ca_mat_t B, const ca_mat_t A, const ca_t c, ca_ctx_t ctx) noexcept + void ca_mat_div_si(ca_mat_t B, const ca_mat_t A, slong c, ca_ctx_t ctx) noexcept + void ca_mat_div_fmpz(ca_mat_t B, const ca_mat_t A, const fmpz_t c, ca_ctx_t ctx) noexcept + void ca_mat_div_fmpq(ca_mat_t B, const ca_mat_t A, const fmpq_t c, ca_ctx_t ctx) noexcept + void ca_mat_div_ca(ca_mat_t B, const ca_mat_t A, const ca_t c, ca_ctx_t ctx) noexcept + void ca_mat_add_ca(ca_mat_t B, const ca_mat_t A, const ca_t c, ca_ctx_t ctx) noexcept + void ca_mat_sub_ca(ca_mat_t B, const ca_mat_t A, const ca_t c, ca_ctx_t ctx) noexcept + void ca_mat_addmul_ca(ca_mat_t B, const ca_mat_t A, const ca_t c, ca_ctx_t ctx) noexcept + void ca_mat_submul_ca(ca_mat_t B, const ca_mat_t A, const ca_t c, ca_ctx_t ctx) noexcept + void ca_mat_sqr(ca_mat_t B, const ca_mat_t A, ca_ctx_t ctx) noexcept + void ca_mat_pow_ui_binexp(ca_mat_t B, const ca_mat_t A, ulong exp, ca_ctx_t ctx) noexcept + void _ca_mat_ca_poly_evaluate(ca_mat_t res, ca_srcptr poly, slong len, const ca_mat_t A, ca_ctx_t ctx) noexcept + void ca_mat_ca_poly_evaluate(ca_mat_t res, const ca_poly_t poly, const ca_mat_t A, ca_ctx_t ctx) noexcept + truth_t ca_mat_find_pivot(slong * pivot_row, ca_mat_t mat, slong start_row, slong end_row, slong column, ca_ctx_t ctx) noexcept + int ca_mat_lu_classical(slong * rank, slong * P, ca_mat_t LU, const ca_mat_t A, int rank_check, ca_ctx_t ctx) noexcept + int ca_mat_lu_recursive(slong * rank, slong * P, ca_mat_t LU, const ca_mat_t A, int rank_check, ca_ctx_t ctx) noexcept + int ca_mat_lu(slong * rank, slong * P, ca_mat_t LU, const ca_mat_t A, int rank_check, ca_ctx_t ctx) noexcept + int ca_mat_fflu(slong * rank, slong * P, ca_mat_t LU, ca_t den, const ca_mat_t A, int rank_check, ca_ctx_t ctx) noexcept + truth_t ca_mat_nonsingular_lu(slong * P, ca_mat_t LU, const ca_mat_t A, ca_ctx_t ctx) noexcept + truth_t ca_mat_nonsingular_fflu(slong * P, ca_mat_t LU, ca_t den, const ca_mat_t A, ca_ctx_t ctx) noexcept + truth_t ca_mat_inv(ca_mat_t X, const ca_mat_t A, ca_ctx_t ctx) noexcept + truth_t ca_mat_nonsingular_solve_adjugate(ca_mat_t X, const ca_mat_t A, const ca_mat_t B, ca_ctx_t ctx) noexcept + truth_t ca_mat_nonsingular_solve_fflu(ca_mat_t X, const ca_mat_t A, const ca_mat_t B, ca_ctx_t ctx) noexcept + truth_t ca_mat_nonsingular_solve_lu(ca_mat_t X, const ca_mat_t A, const ca_mat_t B, ca_ctx_t ctx) noexcept + truth_t ca_mat_nonsingular_solve(ca_mat_t X, const ca_mat_t A, const ca_mat_t B, ca_ctx_t ctx) noexcept + void ca_mat_solve_tril_classical(ca_mat_t X, const ca_mat_t L, const ca_mat_t B, int unit, ca_ctx_t ctx) noexcept + void ca_mat_solve_tril_recursive(ca_mat_t X, const ca_mat_t L, const ca_mat_t B, int unit, ca_ctx_t ctx) noexcept + void ca_mat_solve_tril(ca_mat_t X, const ca_mat_t L, const ca_mat_t B, int unit, ca_ctx_t ctx) noexcept + void ca_mat_solve_triu_classical(ca_mat_t X, const ca_mat_t U, const ca_mat_t B, int unit, ca_ctx_t ctx) noexcept + void ca_mat_solve_triu_recursive(ca_mat_t X, const ca_mat_t U, const ca_mat_t B, int unit, ca_ctx_t ctx) noexcept + void ca_mat_solve_triu(ca_mat_t X, const ca_mat_t U, const ca_mat_t B, int unit, ca_ctx_t ctx) noexcept + void ca_mat_solve_fflu_precomp(ca_mat_t X, const slong * perm, const ca_mat_t A, const ca_t den, const ca_mat_t B, ca_ctx_t ctx) noexcept + void ca_mat_solve_lu_precomp(ca_mat_t X, const slong * P, const ca_mat_t LU, const ca_mat_t B, ca_ctx_t ctx) noexcept + int ca_mat_rank(slong * rank, const ca_mat_t A, ca_ctx_t ctx) noexcept + int ca_mat_rref_fflu(slong * rank, ca_mat_t R, const ca_mat_t A, ca_ctx_t ctx) noexcept + int ca_mat_rref_lu(slong * rank, ca_mat_t R, const ca_mat_t A, ca_ctx_t ctx) noexcept + int ca_mat_rref(slong * rank, ca_mat_t R, const ca_mat_t A, ca_ctx_t ctx) noexcept + int ca_mat_right_kernel(ca_mat_t X, const ca_mat_t A, ca_ctx_t ctx) noexcept + void ca_mat_trace(ca_t trace, const ca_mat_t mat, ca_ctx_t ctx) noexcept + void ca_mat_det_berkowitz(ca_t det, const ca_mat_t A, ca_ctx_t ctx) noexcept + int ca_mat_det_lu(ca_t det, const ca_mat_t A, ca_ctx_t ctx) noexcept + int ca_mat_det_bareiss(ca_t det, const ca_mat_t A, ca_ctx_t ctx) noexcept + void ca_mat_det_cofactor(ca_t det, const ca_mat_t A, ca_ctx_t ctx) noexcept + void ca_mat_det(ca_t det, const ca_mat_t A, ca_ctx_t ctx) noexcept + void ca_mat_adjugate_cofactor(ca_mat_t adj, ca_t det, const ca_mat_t A, ca_ctx_t ctx) noexcept + void ca_mat_adjugate_charpoly(ca_mat_t adj, ca_t det, const ca_mat_t A, ca_ctx_t ctx) noexcept + void ca_mat_adjugate(ca_mat_t adj, ca_t det, const ca_mat_t A, ca_ctx_t ctx) noexcept + void _ca_mat_charpoly_berkowitz(ca_ptr cp, const ca_mat_t mat, ca_ctx_t ctx) noexcept + void ca_mat_charpoly_berkowitz(ca_poly_t cp, const ca_mat_t mat, ca_ctx_t ctx) noexcept + int _ca_mat_charpoly_danilevsky(ca_ptr cp, const ca_mat_t mat, ca_ctx_t ctx) noexcept + int ca_mat_charpoly_danilevsky(ca_poly_t cp, const ca_mat_t mat, ca_ctx_t ctx) noexcept + void _ca_mat_charpoly(ca_ptr cp, const ca_mat_t mat, ca_ctx_t ctx) noexcept + void ca_mat_charpoly(ca_poly_t cp, const ca_mat_t mat, ca_ctx_t ctx) noexcept + int ca_mat_companion(ca_mat_t mat, const ca_poly_t poly, ca_ctx_t ctx) noexcept + int ca_mat_eigenvalues(ca_vec_t lmbda, ulong * exp, const ca_mat_t mat, ca_ctx_t ctx) noexcept + truth_t ca_mat_diagonalization(ca_mat_t D, ca_mat_t P, const ca_mat_t A, ca_ctx_t ctx) noexcept + int ca_mat_jordan_blocks(ca_vec_t lmbda, slong * num_blocks, slong * block_lambda, slong * block_size, const ca_mat_t A, ca_ctx_t ctx) noexcept + void ca_mat_set_jordan_blocks(ca_mat_t mat, const ca_vec_t lmbda, slong num_blocks, slong * block_lambda, slong * block_size, ca_ctx_t ctx) noexcept + int ca_mat_jordan_transformation(ca_mat_t mat, const ca_vec_t lmbda, slong num_blocks, slong * block_lambda, slong * block_size, const ca_mat_t A, ca_ctx_t ctx) noexcept + int ca_mat_jordan_form(ca_mat_t J, ca_mat_t P, const ca_mat_t A, ca_ctx_t ctx) noexcept + int ca_mat_exp(ca_mat_t res, const ca_mat_t A, ca_ctx_t ctx) noexcept + truth_t ca_mat_log(ca_mat_t res, const ca_mat_t A, ca_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/ca_poly.pxd b/src/sage/libs/flint/ca_poly.pxd new file mode 100644 index 00000000000..a18a3cdfcd4 --- /dev/null +++ b/src/sage/libs/flint/ca_poly.pxd @@ -0,0 +1,102 @@ +# distutils: libraries = flint +# distutils: depends = flint/ca_poly.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void ca_poly_init(ca_poly_t poly, ca_ctx_t ctx) noexcept + void ca_poly_clear(ca_poly_t poly, ca_ctx_t ctx) noexcept + void ca_poly_fit_length(ca_poly_t poly, slong len, ca_ctx_t ctx) noexcept + void _ca_poly_set_length(ca_poly_t poly, slong len, ca_ctx_t ctx) noexcept + void _ca_poly_normalise(ca_poly_t poly, ca_ctx_t ctx) noexcept + void ca_poly_zero(ca_poly_t poly, ca_ctx_t ctx) noexcept + void ca_poly_one(ca_poly_t poly, ca_ctx_t ctx) noexcept + void ca_poly_x(ca_poly_t poly, ca_ctx_t ctx) noexcept + void ca_poly_set_ca(ca_poly_t poly, const ca_t c, ca_ctx_t ctx) noexcept + void ca_poly_set_si(ca_poly_t poly, slong c, ca_ctx_t ctx) noexcept + void ca_poly_set(ca_poly_t res, const ca_poly_t src, ca_ctx_t ctx) noexcept + void ca_poly_set_fmpz_poly(ca_poly_t res, const fmpz_poly_t src, ca_ctx_t ctx) noexcept + void ca_poly_set_fmpq_poly(ca_poly_t res, const fmpq_poly_t src, ca_ctx_t ctx) noexcept + void ca_poly_set_coeff_ca(ca_poly_t poly, slong n, const ca_t x, ca_ctx_t ctx) noexcept + void ca_poly_transfer(ca_poly_t res, ca_ctx_t res_ctx, const ca_poly_t src, ca_ctx_t src_ctx) noexcept + void ca_poly_randtest(ca_poly_t poly, flint_rand_t state, slong len, slong depth, slong bits, ca_ctx_t ctx) noexcept + void ca_poly_randtest_rational(ca_poly_t poly, flint_rand_t state, slong len, slong bits, ca_ctx_t ctx) noexcept + void ca_poly_print(const ca_poly_t poly, ca_ctx_t ctx) noexcept + void ca_poly_printn(const ca_poly_t poly, slong digits, ca_ctx_t ctx) noexcept + bint ca_poly_is_proper(const ca_poly_t poly, ca_ctx_t ctx) noexcept + int ca_poly_make_monic(ca_poly_t res, const ca_poly_t poly, ca_ctx_t ctx) noexcept + void _ca_poly_reverse(ca_ptr res, ca_srcptr poly, slong len, slong n, ca_ctx_t ctx) noexcept + void ca_poly_reverse(ca_poly_t res, const ca_poly_t poly, slong n, ca_ctx_t ctx) noexcept + truth_t _ca_poly_check_equal(ca_srcptr poly1, slong len1, ca_srcptr poly2, slong len2, ca_ctx_t ctx) noexcept + truth_t ca_poly_check_equal(const ca_poly_t poly1, const ca_poly_t poly2, ca_ctx_t ctx) noexcept + truth_t ca_poly_check_is_zero(const ca_poly_t poly, ca_ctx_t ctx) noexcept + truth_t ca_poly_check_is_one(const ca_poly_t poly, ca_ctx_t ctx) noexcept + void _ca_poly_shift_left(ca_ptr res, ca_srcptr poly, slong len, slong n, ca_ctx_t ctx) noexcept + void ca_poly_shift_left(ca_poly_t res, const ca_poly_t poly, slong n, ca_ctx_t ctx) noexcept + void _ca_poly_shift_right(ca_ptr res, ca_srcptr poly, slong len, slong n, ca_ctx_t ctx) noexcept + void ca_poly_shift_right(ca_poly_t res, const ca_poly_t poly, slong n, ca_ctx_t ctx) noexcept + void ca_poly_neg(ca_poly_t res, const ca_poly_t src, ca_ctx_t ctx) noexcept + void _ca_poly_add(ca_ptr res, ca_srcptr poly1, slong len1, ca_srcptr poly2, slong len2, ca_ctx_t ctx) noexcept + void ca_poly_add(ca_poly_t res, const ca_poly_t poly1, const ca_poly_t poly2, ca_ctx_t ctx) noexcept + void _ca_poly_sub(ca_ptr res, ca_srcptr poly1, slong len1, ca_srcptr poly2, slong len2, ca_ctx_t ctx) noexcept + void ca_poly_sub(ca_poly_t res, const ca_poly_t poly1, const ca_poly_t poly2, ca_ctx_t ctx) noexcept + void _ca_poly_mul(ca_ptr res, ca_srcptr poly1, slong len1, ca_srcptr poly2, slong len2, ca_ctx_t ctx) noexcept + void ca_poly_mul(ca_poly_t res, const ca_poly_t poly1, const ca_poly_t poly2, ca_ctx_t ctx) noexcept + void _ca_poly_mullow(ca_ptr C, ca_srcptr poly1, slong len1, ca_srcptr poly2, slong len2, slong n, ca_ctx_t ctx) noexcept + void ca_poly_mullow(ca_poly_t res, const ca_poly_t poly1, const ca_poly_t poly2, slong n, ca_ctx_t ctx) noexcept + void ca_poly_mul_ca(ca_poly_t res, const ca_poly_t poly, const ca_t c, ca_ctx_t ctx) noexcept + void ca_poly_div_ca(ca_poly_t res, const ca_poly_t poly, const ca_t c, ca_ctx_t ctx) noexcept + void _ca_poly_divrem_basecase(ca_ptr Q, ca_ptr R, ca_srcptr A, slong lenA, ca_srcptr B, slong lenB, const ca_t invB, ca_ctx_t ctx) noexcept + int ca_poly_divrem_basecase(ca_poly_t Q, ca_poly_t R, const ca_poly_t A, const ca_poly_t B, ca_ctx_t ctx) noexcept + void _ca_poly_divrem(ca_ptr Q, ca_ptr R, ca_srcptr A, slong lenA, ca_srcptr B, slong lenB, const ca_t invB, ca_ctx_t ctx) noexcept + int ca_poly_divrem(ca_poly_t Q, ca_poly_t R, const ca_poly_t A, const ca_poly_t B, ca_ctx_t ctx) noexcept + int ca_poly_div(ca_poly_t Q, const ca_poly_t A, const ca_poly_t B, ca_ctx_t ctx) noexcept + int ca_poly_rem(ca_poly_t R, const ca_poly_t A, const ca_poly_t B, ca_ctx_t ctx) noexcept + void _ca_poly_pow_ui_trunc(ca_ptr res, ca_srcptr f, slong flen, ulong exp, slong len, ca_ctx_t ctx) noexcept + void ca_poly_pow_ui_trunc(ca_poly_t res, const ca_poly_t poly, ulong exp, slong len, ca_ctx_t ctx) noexcept + void _ca_poly_pow_ui(ca_ptr res, ca_srcptr f, slong flen, ulong exp, ca_ctx_t ctx) noexcept + void ca_poly_pow_ui(ca_poly_t res, const ca_poly_t poly, ulong exp, ca_ctx_t ctx) noexcept + void _ca_poly_evaluate_horner(ca_t res, ca_srcptr f, slong len, const ca_t x, ca_ctx_t ctx) noexcept + void ca_poly_evaluate_horner(ca_t res, const ca_poly_t f, const ca_t a, ca_ctx_t ctx) noexcept + void _ca_poly_evaluate(ca_t res, ca_srcptr f, slong len, const ca_t x, ca_ctx_t ctx) noexcept + void ca_poly_evaluate(ca_t res, const ca_poly_t f, const ca_t a, ca_ctx_t ctx) noexcept + void _ca_poly_compose(ca_ptr res, ca_srcptr poly1, slong len1, ca_srcptr poly2, slong len2, ca_ctx_t ctx) noexcept + void ca_poly_compose(ca_poly_t res, const ca_poly_t poly1, const ca_poly_t poly2, ca_ctx_t ctx) noexcept + void _ca_poly_derivative(ca_ptr res, ca_srcptr poly, slong len, ca_ctx_t ctx) noexcept + void ca_poly_derivative(ca_poly_t res, const ca_poly_t poly, ca_ctx_t ctx) noexcept + void _ca_poly_integral(ca_ptr res, ca_srcptr poly, slong len, ca_ctx_t ctx) noexcept + void ca_poly_integral(ca_poly_t res, const ca_poly_t poly, ca_ctx_t ctx) noexcept + void _ca_poly_inv_series(ca_ptr res, ca_srcptr f, slong flen, slong len, ca_ctx_t ctx) noexcept + void ca_poly_inv_series(ca_poly_t res, const ca_poly_t f, slong len, ca_ctx_t ctx) noexcept + void _ca_poly_div_series(ca_ptr res, ca_srcptr f, slong flen, ca_srcptr g, slong glen, slong len, ca_ctx_t ctx) noexcept + void ca_poly_div_series(ca_poly_t res, const ca_poly_t f, const ca_poly_t g, slong len, ca_ctx_t ctx) noexcept + void _ca_poly_exp_series(ca_ptr res, ca_srcptr f, slong flen, slong len, ca_ctx_t ctx) noexcept + void ca_poly_exp_series(ca_poly_t res, const ca_poly_t f, slong len, ca_ctx_t ctx) noexcept + void _ca_poly_log_series(ca_ptr res, ca_srcptr f, slong flen, slong len, ca_ctx_t ctx) noexcept + void ca_poly_log_series(ca_poly_t res, const ca_poly_t f, slong len, ca_ctx_t ctx) noexcept + slong _ca_poly_gcd_euclidean(ca_ptr res, ca_srcptr A, slong lenA, ca_srcptr B, slong lenB, ca_ctx_t ctx) noexcept + int ca_poly_gcd_euclidean(ca_poly_t res, const ca_poly_t A, const ca_poly_t B, ca_ctx_t ctx) noexcept + slong _ca_poly_gcd(ca_ptr res, ca_srcptr A, slong lenA, ca_srcptr B, slong lenB, ca_ctx_t ctx) noexcept + int ca_poly_gcd(ca_poly_t res, const ca_poly_t A, const ca_poly_t g, ca_ctx_t ctx) noexcept + int ca_poly_factor_squarefree(ca_t c, ca_poly_vec_t fac, ulong * exp, const ca_poly_t F, ca_ctx_t ctx) noexcept + int ca_poly_squarefree_part(ca_poly_t res, const ca_poly_t poly, ca_ctx_t ctx) noexcept + void _ca_poly_set_roots(ca_ptr poly, ca_srcptr roots, const ulong * exp, slong n, ca_ctx_t ctx) noexcept + void ca_poly_set_roots(ca_poly_t poly, ca_vec_t roots, const ulong * exp, ca_ctx_t ctx) noexcept + int _ca_poly_roots(ca_ptr roots, ca_srcptr poly, slong len, ca_ctx_t ctx) noexcept + int ca_poly_roots(ca_vec_t roots, ulong * exp, const ca_poly_t poly, ca_ctx_t ctx) noexcept + ca_poly_struct * _ca_poly_vec_init(slong len, ca_ctx_t ctx) noexcept + void ca_poly_vec_init(ca_poly_vec_t res, slong len, ca_ctx_t ctx) noexcept + void _ca_poly_vec_fit_length(ca_poly_vec_t vec, slong len, ca_ctx_t ctx) noexcept + void ca_poly_vec_set_length(ca_poly_vec_t vec, slong len, ca_ctx_t ctx) noexcept + void _ca_poly_vec_clear(ca_poly_struct * vec, slong len, ca_ctx_t ctx) noexcept + void ca_poly_vec_clear(ca_poly_vec_t vec, ca_ctx_t ctx) noexcept + void ca_poly_vec_append(ca_poly_vec_t vec, const ca_poly_t poly, ca_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/ca_vec.pxd b/src/sage/libs/flint/ca_vec.pxd new file mode 100644 index 00000000000..3ed69ea9968 --- /dev/null +++ b/src/sage/libs/flint/ca_vec.pxd @@ -0,0 +1,44 @@ +# distutils: libraries = flint +# distutils: depends = flint/ca_vec.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + ca_ptr _ca_vec_init(slong len, ca_ctx_t ctx) noexcept + void ca_vec_init(ca_vec_t vec, slong len, ca_ctx_t ctx) noexcept + void _ca_vec_clear(ca_ptr vec, slong len, ca_ctx_t ctx) noexcept + void ca_vec_clear(ca_vec_t vec, ca_ctx_t ctx) noexcept + void _ca_vec_swap(ca_ptr vec1, ca_ptr vec2, slong len, ca_ctx_t ctx) noexcept + void ca_vec_swap(ca_vec_t vec1, ca_vec_t vec2, ca_ctx_t ctx) noexcept + slong ca_vec_length(const ca_vec_t vec, ca_ctx_t ctx) noexcept + void _ca_vec_fit_length(ca_vec_t vec, slong len, ca_ctx_t ctx) noexcept + void ca_vec_set_length(ca_vec_t vec, slong len, ca_ctx_t ctx) noexcept + void _ca_vec_set(ca_ptr res, ca_srcptr src, slong len, ca_ctx_t ctx) noexcept + void ca_vec_set(ca_vec_t res, const ca_vec_t src, ca_ctx_t ctx) noexcept + void _ca_vec_zero(ca_ptr res, slong len, ca_ctx_t ctx) noexcept + void ca_vec_zero(ca_vec_t res, slong len, ca_ctx_t ctx) noexcept + void ca_vec_print(const ca_vec_t vec, ca_ctx_t ctx) noexcept + void ca_vec_printn(const ca_vec_t poly, slong digits, ca_ctx_t ctx) noexcept + void ca_vec_append(ca_vec_t vec, const ca_t f, ca_ctx_t ctx) noexcept + void _ca_vec_neg(ca_ptr res, ca_srcptr src, slong len, ca_ctx_t ctx) noexcept + void ca_vec_neg(ca_vec_t res, const ca_vec_t src, ca_ctx_t ctx) noexcept + void _ca_vec_add(ca_ptr res, ca_srcptr vec1, ca_srcptr vec2, slong len, ca_ctx_t ctx) noexcept + void _ca_vec_sub(ca_ptr res, ca_srcptr vec1, ca_srcptr vec2, slong len, ca_ctx_t ctx) noexcept + void _ca_vec_scalar_mul_ca(ca_ptr res, ca_srcptr src, slong len, const ca_t c, ca_ctx_t ctx) noexcept + void _ca_vec_scalar_div_ca(ca_ptr res, ca_srcptr src, slong len, const ca_t c, ca_ctx_t ctx) noexcept + void _ca_vec_scalar_addmul_ca(ca_ptr res, ca_srcptr src, slong len, const ca_t c, ca_ctx_t ctx) noexcept + void _ca_vec_scalar_submul_ca(ca_ptr res, ca_srcptr src, slong len, const ca_t c, ca_ctx_t ctx) noexcept + truth_t _ca_vec_check_is_zero(ca_srcptr vec, slong len, ca_ctx_t ctx) noexcept + bint _ca_vec_is_fmpq_vec(ca_srcptr vec, slong len, ca_ctx_t ctx) noexcept + bint _ca_vec_fmpq_vec_is_fmpz_vec(ca_srcptr vec, slong len, ca_ctx_t ctx) noexcept + void _ca_vec_fmpq_vec_get_fmpz_vec_den(fmpz * c, fmpz_t den, ca_srcptr vec, slong len, ca_ctx_t ctx) noexcept + void _ca_vec_set_fmpz_vec_div_fmpz(ca_ptr res, const fmpz * v, const fmpz_t den, slong len, ca_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/calcium.pxd b/src/sage/libs/flint/calcium.pxd new file mode 100644 index 00000000000..60507d53ac6 --- /dev/null +++ b/src/sage/libs/flint/calcium.pxd @@ -0,0 +1,25 @@ +# distutils: libraries = flint +# distutils: depends = flint/calcium.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + const char * calcium_version() noexcept + ulong calcium_fmpz_hash(const fmpz_t x) noexcept + void calcium_stream_init_file(calcium_stream_t out, FILE * fp) noexcept + void calcium_stream_init_str(calcium_stream_t out) noexcept + void calcium_write(calcium_stream_t out, const char * s) noexcept + void calcium_write_free(calcium_stream_t out, char * s) noexcept + void calcium_write_si(calcium_stream_t out, slong x) noexcept + void calcium_write_fmpz(calcium_stream_t out, const fmpz_t x) noexcept + void calcium_write_arb(calcium_stream_t out, const arb_t z, slong digits, ulong flags) noexcept + void calcium_write_acb(calcium_stream_t out, const acb_t z, slong digits, ulong flags) noexcept diff --git a/src/sage/libs/flint/d_mat.pxd b/src/sage/libs/flint/d_mat.pxd new file mode 100644 index 00000000000..0f398f5ada0 --- /dev/null +++ b/src/sage/libs/flint/d_mat.pxd @@ -0,0 +1,37 @@ +# distutils: libraries = flint +# distutils: depends = flint/d_mat.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void d_mat_init(d_mat_t mat, slong rows, slong cols) noexcept + void d_mat_clear(d_mat_t mat) noexcept + void d_mat_set(d_mat_t mat1, const d_mat_t mat2) noexcept + void d_mat_swap(d_mat_t mat1, d_mat_t mat2) noexcept + void d_mat_swap_entrywise(d_mat_t mat1, d_mat_t mat2) noexcept + double d_mat_entry(d_mat_t mat, slong i, slong j) noexcept + double d_mat_get_entry(const d_mat_t mat, slong i, slong j) noexcept + double * d_mat_entry_ptr(const d_mat_t mat, slong i, slong j) noexcept + void d_mat_zero(d_mat_t mat) noexcept + void d_mat_one(d_mat_t mat) noexcept + void d_mat_randtest(d_mat_t mat, flint_rand_t state, slong minexp, slong maxexp) noexcept + void d_mat_print(const d_mat_t mat) noexcept + bint d_mat_equal(const d_mat_t mat1, const d_mat_t mat2) noexcept + bint d_mat_approx_equal(const d_mat_t mat1, const d_mat_t mat2, double eps) noexcept + bint d_mat_is_zero(const d_mat_t mat) noexcept + bint d_mat_is_approx_zero(const d_mat_t mat, double eps) noexcept + bint d_mat_is_empty(const d_mat_t mat) noexcept + bint d_mat_is_square(const d_mat_t mat) noexcept + void d_mat_transpose(d_mat_t B, const d_mat_t A) noexcept + void d_mat_mul_classical(d_mat_t C, const d_mat_t A, const d_mat_t B) noexcept + void d_mat_gso(d_mat_t B, const d_mat_t A) noexcept + void d_mat_qr(d_mat_t Q, d_mat_t R, const d_mat_t A) noexcept diff --git a/src/sage/libs/flint/d_vec.pxd b/src/sage/libs/flint/d_vec.pxd new file mode 100644 index 00000000000..3ce55fde92a --- /dev/null +++ b/src/sage/libs/flint/d_vec.pxd @@ -0,0 +1,30 @@ +# distutils: libraries = flint +# distutils: depends = flint/d_vec.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + double * _d_vec_init(slong len) noexcept + void _d_vec_clear(double * vec) noexcept + void _d_vec_randtest(double * f, flint_rand_t state, slong len, slong minexp, slong maxexp) noexcept + void _d_vec_set(double * vec1, const double * vec2, slong len2) noexcept + void _d_vec_zero(double * vec, slong len) noexcept + bint _d_vec_equal(const double * vec1, const double * vec2, slong len) noexcept + bint _d_vec_is_zero(const double * vec, slong len) noexcept + bint _d_vec_is_approx_zero(const double * vec, slong len, double eps) noexcept + bint _d_vec_approx_equal(const double * vec1, const double * vec2, slong len, double eps) noexcept + void _d_vec_add(double * res, const double * vec1, const double * vec2, slong len2) noexcept + void _d_vec_sub(double * res, const double * vec1, const double * vec2, slong len2) noexcept + double _d_vec_dot(const double * vec1, const double * vec2, slong len2) noexcept + double _d_vec_norm(const double * vec, slong len) noexcept + double _d_vec_dot_heuristic(const double * vec1, const double * vec2, slong len2, double * err) noexcept + double _d_vec_dot_thrice(const double * vec1, const double * vec2, slong len2, double * err) noexcept diff --git a/src/sage/libs/flint/dirichlet.pxd b/src/sage/libs/flint/dirichlet.pxd new file mode 100644 index 00000000000..79d9908fd9e --- /dev/null +++ b/src/sage/libs/flint/dirichlet.pxd @@ -0,0 +1,55 @@ +# distutils: libraries = flint +# distutils: depends = flint/dirichlet.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + int dirichlet_group_init(dirichlet_group_t G, ulong q) noexcept + void dirichlet_subgroup_init(dirichlet_group_t H, const dirichlet_group_t G, ulong h) noexcept + void dirichlet_group_clear(dirichlet_group_t G) noexcept + ulong dirichlet_group_size(const dirichlet_group_t G) noexcept + ulong dirichlet_group_num_primitive(const dirichlet_group_t G) noexcept + void dirichlet_group_dlog_precompute(dirichlet_group_t G, ulong num) noexcept + void dirichlet_group_dlog_clear(dirichlet_group_t G) noexcept + void dirichlet_char_init(dirichlet_char_t chi, const dirichlet_group_t G) noexcept + void dirichlet_char_clear(dirichlet_char_t chi) noexcept + void dirichlet_char_print(const dirichlet_group_t G, const dirichlet_char_t chi) noexcept + void dirichlet_char_log(dirichlet_char_t x, const dirichlet_group_t G, ulong m) noexcept + ulong dirichlet_char_exp(const dirichlet_group_t G, const dirichlet_char_t x) noexcept + ulong _dirichlet_char_exp(dirichlet_char_t x, const dirichlet_group_t G) noexcept + void dirichlet_char_one(dirichlet_char_t x, const dirichlet_group_t G) noexcept + void dirichlet_char_first_primitive(dirichlet_char_t x, const dirichlet_group_t G) noexcept + void dirichlet_char_set(dirichlet_char_t x, const dirichlet_group_t G, const dirichlet_char_t y) noexcept + int dirichlet_char_next(dirichlet_char_t x, const dirichlet_group_t G) noexcept + int dirichlet_char_next_primitive(dirichlet_char_t x, const dirichlet_group_t G) noexcept + ulong dirichlet_index_char(const dirichlet_group_t G, const dirichlet_char_t x) noexcept + void dirichlet_char_index(dirichlet_char_t x, const dirichlet_group_t G, ulong j) noexcept + bint dirichlet_char_eq(const dirichlet_char_t x, const dirichlet_char_t y) noexcept + int dirichlet_char_eq_deep(const dirichlet_group_t G, const dirichlet_char_t x, const dirichlet_char_t y) noexcept + bint dirichlet_char_is_principal(const dirichlet_group_t G, const dirichlet_char_t chi) noexcept + ulong dirichlet_conductor_ui(const dirichlet_group_t G, ulong a) noexcept + ulong dirichlet_conductor_char(const dirichlet_group_t G, const dirichlet_char_t x) noexcept + int dirichlet_parity_ui(const dirichlet_group_t G, ulong a) noexcept + int dirichlet_parity_char(const dirichlet_group_t G, const dirichlet_char_t x) noexcept + ulong dirichlet_order_ui(const dirichlet_group_t G, ulong a) noexcept + ulong dirichlet_order_char(const dirichlet_group_t G, const dirichlet_char_t x) noexcept + bint dirichlet_char_is_real(const dirichlet_group_t G, const dirichlet_char_t chi) noexcept + bint dirichlet_char_is_primitive(const dirichlet_group_t G, const dirichlet_char_t chi) noexcept + ulong dirichlet_pairing(const dirichlet_group_t G, ulong m, ulong n) noexcept + ulong dirichlet_pairing_char(const dirichlet_group_t G, const dirichlet_char_t chi, const dirichlet_char_t psi) noexcept + ulong dirichlet_chi(const dirichlet_group_t G, const dirichlet_char_t chi, ulong n) noexcept + void dirichlet_chi_vec(ulong * v, const dirichlet_group_t G, const dirichlet_char_t chi, slong nv) noexcept + void dirichlet_chi_vec_order(ulong * v, const dirichlet_group_t G, const dirichlet_char_t chi, ulong order, slong nv) noexcept + void dirichlet_char_mul(dirichlet_char_t chi12, const dirichlet_group_t G, const dirichlet_char_t chi1, const dirichlet_char_t chi2) noexcept + void dirichlet_char_pow(dirichlet_char_t c, const dirichlet_group_t G, const dirichlet_char_t a, ulong n) noexcept + void dirichlet_char_lift(dirichlet_char_t chi_G, const dirichlet_group_t G, const dirichlet_char_t chi_H, const dirichlet_group_t H) noexcept + void dirichlet_char_lower(dirichlet_char_t chi_H, const dirichlet_group_t H, const dirichlet_char_t chi_G, const dirichlet_group_t G) noexcept diff --git a/src/sage/libs/flint/dlog.pxd b/src/sage/libs/flint/dlog.pxd new file mode 100644 index 00000000000..68bbaa2690a --- /dev/null +++ b/src/sage/libs/flint/dlog.pxd @@ -0,0 +1,51 @@ +# distutils: libraries = flint +# distutils: depends = flint/dlog.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + ulong dlog_once(ulong b, ulong a, const nmod_t mod, ulong n) noexcept + void dlog_precomp_n_init(dlog_precomp_t pre, ulong a, ulong mod, ulong n, ulong num) noexcept + ulong dlog_precomp(const dlog_precomp_t pre, ulong b) noexcept + void dlog_precomp_clear(dlog_precomp_t pre) noexcept + void dlog_precomp_modpe_init(dlog_precomp_t pre, ulong a, ulong p, ulong e, ulong pe, ulong num) noexcept + void dlog_precomp_p_init(dlog_precomp_t pre, ulong a, ulong mod, ulong p, ulong num) noexcept + void dlog_precomp_pe_init(dlog_precomp_t pre, ulong a, ulong mod, ulong p, ulong e, ulong pe, ulong num) noexcept + void dlog_precomp_small_init(dlog_precomp_t pre, ulong a, ulong mod, ulong n, ulong num) noexcept + void dlog_vec_fill(ulong * v, ulong nv, ulong x) noexcept + void dlog_vec_set_not_found(ulong * v, ulong nv, nmod_t mod) noexcept + void dlog_vec(ulong * v, ulong nv, ulong a, ulong va, nmod_t mod, ulong na, nmod_t order) noexcept + void dlog_vec_add(ulong * v, ulong nv, ulong a, ulong va, nmod_t mod, ulong na, nmod_t order) noexcept + void dlog_vec_loop(ulong * v, ulong nv, ulong a, ulong va, nmod_t mod, ulong na, nmod_t order) noexcept + void dlog_vec_loop_add(ulong * v, ulong nv, ulong a, ulong va, nmod_t mod, ulong na, nmod_t order) noexcept + void dlog_vec_eratos(ulong * v, ulong nv, ulong a, ulong va, nmod_t mod, ulong na, nmod_t order) noexcept + void dlog_vec_eratos_add(ulong * v, ulong nv, ulong a, ulong va, nmod_t mod, ulong na, nmod_t order) noexcept + void dlog_vec_sieve_add(ulong * v, ulong nv, ulong a, ulong va, nmod_t mod, ulong na, nmod_t order) noexcept + void dlog_vec_sieve(ulong * v, ulong nv, ulong a, ulong va, nmod_t mod, ulong na, nmod_t order) noexcept + ulong dlog_table_init(dlog_table_t t, ulong a, ulong mod) noexcept + void dlog_table_clear(dlog_table_t t) noexcept + ulong dlog_table(const dlog_table_t t, ulong b) noexcept + ulong dlog_bsgs_init(dlog_bsgs_t t, ulong a, ulong mod, ulong n, ulong m) noexcept + void dlog_bsgs_clear(dlog_bsgs_t t) noexcept + ulong dlog_bsgs(const dlog_bsgs_t t, ulong b) noexcept + ulong dlog_modpe_init(dlog_modpe_t t, ulong a, ulong p, ulong e, ulong pe, ulong num) noexcept + void dlog_modpe_clear(dlog_modpe_t t) noexcept + ulong dlog_modpe(const dlog_modpe_t t, ulong b) noexcept + ulong dlog_crt_init(dlog_crt_t t, ulong a, ulong mod, ulong n, ulong num) noexcept + void dlog_crt_clear(dlog_crt_t t) noexcept + ulong dlog_crt(const dlog_crt_t t, ulong b) noexcept + ulong dlog_power_init(dlog_power_t t, ulong a, ulong mod, ulong p, ulong e, ulong num) noexcept + void dlog_power_clear(dlog_power_t t) noexcept + ulong dlog_power(const dlog_power_t t, ulong b) noexcept + void dlog_rho_init(dlog_rho_t t, ulong a, ulong mod, ulong n) noexcept + void dlog_rho_clear(dlog_rho_t t) noexcept + ulong dlog_rho(const dlog_rho_t t, ulong b) noexcept diff --git a/src/sage/libs/flint/double_extras.pxd b/src/sage/libs/flint/double_extras.pxd new file mode 100644 index 00000000000..1019aca407d --- /dev/null +++ b/src/sage/libs/flint/double_extras.pxd @@ -0,0 +1,22 @@ +# distutils: libraries = flint +# distutils: depends = flint/double_extras.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + double d_randtest(flint_rand_t state) noexcept + double d_randtest_signed(flint_rand_t state, slong minexp, slong maxexp) noexcept + double d_randtest_special(flint_rand_t state, slong minexp, slong maxexp) noexcept + double d_polyval(const double * poly, int len, double x) noexcept + double d_lambertw(double x) noexcept + bint d_is_nan(double x) noexcept + double d_log2(double x) noexcept diff --git a/src/sage/libs/flint/double_interval.pxd b/src/sage/libs/flint/double_interval.pxd new file mode 100644 index 00000000000..72de28838b8 --- /dev/null +++ b/src/sage/libs/flint/double_interval.pxd @@ -0,0 +1,34 @@ +# distutils: libraries = flint +# distutils: depends = flint/double_interval.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + di_t di_interval(double a, double b) noexcept + di_t arb_get_di(const arb_t x) noexcept + void arb_set_di(arb_t res, di_t x, slong prec) noexcept + void di_print(di_t x) noexcept + double d_randtest2(flint_rand_t state) noexcept + di_t di_randtest(flint_rand_t state) noexcept + di_t di_neg(di_t x) noexcept + di_t di_fast_add(di_t x, di_t y) noexcept + di_t di_fast_sub(di_t x, di_t y) noexcept + di_t di_fast_mul(di_t x, di_t y) noexcept + di_t di_fast_div(di_t x, di_t y) noexcept + di_t di_fast_sqr(di_t x) noexcept + di_t di_fast_add_d(di_t x, double y) noexcept + di_t di_fast_sub_d(di_t x, double y) noexcept + di_t di_fast_mul_d(di_t x, double y) noexcept + di_t di_fast_div_d(di_t x, double y) noexcept + di_t di_fast_log_nonnegative(di_t x) noexcept + di_t di_fast_mid(di_t x) noexcept + double di_fast_ubound_radius(di_t x) noexcept diff --git a/src/sage/libs/flint/fexpr.pxd b/src/sage/libs/flint/fexpr.pxd new file mode 100644 index 00000000000..7a264b74639 --- /dev/null +++ b/src/sage/libs/flint/fexpr.pxd @@ -0,0 +1,102 @@ +# distutils: libraries = flint +# distutils: depends = flint/fexpr.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fexpr_init(fexpr_t expr) noexcept + void fexpr_clear(fexpr_t expr) noexcept + fexpr_ptr _fexpr_vec_init(slong len) noexcept + void _fexpr_vec_clear(fexpr_ptr vec, slong len) noexcept + void fexpr_fit_size(fexpr_t expr, slong size) noexcept + void fexpr_set(fexpr_t res, const fexpr_t expr) noexcept + void fexpr_swap(fexpr_t a, fexpr_t b) noexcept + slong fexpr_depth(const fexpr_t expr) noexcept + slong fexpr_num_leaves(const fexpr_t expr) noexcept + slong fexpr_size(const fexpr_t expr) noexcept + slong fexpr_size_bytes(const fexpr_t expr) noexcept + slong fexpr_allocated_bytes(const fexpr_t expr) noexcept + bint fexpr_equal(const fexpr_t a, const fexpr_t b) noexcept + bint fexpr_equal_si(const fexpr_t expr, slong c) noexcept + bint fexpr_equal_ui(const fexpr_t expr, ulong c) noexcept + ulong fexpr_hash(const fexpr_t expr) noexcept + int fexpr_cmp_fast(const fexpr_t a, const fexpr_t b) noexcept + bint fexpr_is_integer(const fexpr_t expr) noexcept + bint fexpr_is_symbol(const fexpr_t expr) noexcept + bint fexpr_is_string(const fexpr_t expr) noexcept + bint fexpr_is_atom(const fexpr_t expr) noexcept + void fexpr_zero(fexpr_t res) noexcept + bint fexpr_is_zero(const fexpr_t expr) noexcept + bint fexpr_is_neg_integer(const fexpr_t expr) noexcept + void fexpr_set_si(fexpr_t res, slong c) noexcept + void fexpr_set_ui(fexpr_t res, ulong c) noexcept + void fexpr_set_fmpz(fexpr_t res, const fmpz_t c) noexcept + int fexpr_get_fmpz(fmpz_t res, const fexpr_t expr) noexcept + void fexpr_set_symbol_builtin(fexpr_t res, slong id) noexcept + bint fexpr_is_builtin_symbol(const fexpr_t expr, slong id) noexcept + bint fexpr_is_any_builtin_symbol(const fexpr_t expr) noexcept + void fexpr_set_symbol_str(fexpr_t res, const char * s) noexcept + char * fexpr_get_symbol_str(const fexpr_t expr) noexcept + void fexpr_set_string(fexpr_t res, const char * s) noexcept + char * fexpr_get_string(const fexpr_t expr) noexcept + void fexpr_write(calcium_stream_t stream, const fexpr_t expr) noexcept + void fexpr_print(const fexpr_t expr) noexcept + char * fexpr_get_str(const fexpr_t expr) noexcept + void fexpr_write_latex(calcium_stream_t stream, const fexpr_t expr, ulong flags) noexcept + void fexpr_print_latex(const fexpr_t expr, ulong flags) noexcept + char * fexpr_get_str_latex(const fexpr_t expr, ulong flags) noexcept + slong fexpr_nargs(const fexpr_t expr) noexcept + void fexpr_func(fexpr_t res, const fexpr_t expr) noexcept + void fexpr_view_func(fexpr_t view, const fexpr_t expr) noexcept + void fexpr_arg(fexpr_t res, const fexpr_t expr, slong i) noexcept + void fexpr_view_arg(fexpr_t view, const fexpr_t expr, slong i) noexcept + void fexpr_view_next(fexpr_t view) noexcept + bint fexpr_is_builtin_call(const fexpr_t expr, slong id) noexcept + bint fexpr_is_any_builtin_call(const fexpr_t expr) noexcept + void fexpr_call0(fexpr_t res, const fexpr_t f) noexcept + void fexpr_call1(fexpr_t res, const fexpr_t f, const fexpr_t x1) noexcept + void fexpr_call2(fexpr_t res, const fexpr_t f, const fexpr_t x1, const fexpr_t x2) noexcept + void fexpr_call3(fexpr_t res, const fexpr_t f, const fexpr_t x1, const fexpr_t x2, const fexpr_t x3) noexcept + void fexpr_call4(fexpr_t res, const fexpr_t f, const fexpr_t x1, const fexpr_t x2, const fexpr_t x3, const fexpr_t x4) noexcept + void fexpr_call_vec(fexpr_t res, const fexpr_t f, fexpr_srcptr args, slong len) noexcept + void fexpr_call_builtin1(fexpr_t res, slong f, const fexpr_t x1) noexcept + void fexpr_call_builtin2(fexpr_t res, slong f, const fexpr_t x1, const fexpr_t x2) noexcept + bint fexpr_contains(const fexpr_t expr, const fexpr_t x) noexcept + int fexpr_replace(fexpr_t res, const fexpr_t expr, const fexpr_t x, const fexpr_t y) noexcept + int fexpr_replace2(fexpr_t res, const fexpr_t expr, const fexpr_t x1, const fexpr_t y1, const fexpr_t x2, const fexpr_t y2) noexcept + int fexpr_replace_vec(fexpr_t res, const fexpr_t expr, const fexpr_vec_t xs, const fexpr_vec_t ys) noexcept + void fexpr_set_fmpq(fexpr_t res, const fmpq_t x) noexcept + void fexpr_set_arf(fexpr_t res, const arf_t x) noexcept + void fexpr_set_d(fexpr_t res, double x) noexcept + void fexpr_set_re_im_d(fexpr_t res, double x, double y) noexcept + void fexpr_neg(fexpr_t res, const fexpr_t a) noexcept + void fexpr_add(fexpr_t res, const fexpr_t a, const fexpr_t b) noexcept + void fexpr_sub(fexpr_t res, const fexpr_t a, const fexpr_t b) noexcept + void fexpr_mul(fexpr_t res, const fexpr_t a, const fexpr_t b) noexcept + void fexpr_div(fexpr_t res, const fexpr_t a, const fexpr_t b) noexcept + void fexpr_pow(fexpr_t res, const fexpr_t a, const fexpr_t b) noexcept + bint fexpr_is_arithmetic_operation(const fexpr_t expr) noexcept + void fexpr_arithmetic_nodes(fexpr_vec_t nodes, const fexpr_t expr) noexcept + int fexpr_get_fmpz_mpoly_q(fmpz_mpoly_q_t res, const fexpr_t expr, const fexpr_vec_t vars, const fmpz_mpoly_ctx_t ctx) noexcept + void fexpr_set_fmpz_mpoly(fexpr_t res, const fmpz_mpoly_t poly, const fexpr_vec_t vars, const fmpz_mpoly_ctx_t ctx) noexcept + void fexpr_set_fmpz_mpoly_q(fexpr_t res, const fmpz_mpoly_q_t frac, const fexpr_vec_t vars, const fmpz_mpoly_ctx_t ctx) noexcept + int fexpr_expanded_normal_form(fexpr_t res, const fexpr_t expr, ulong flags) noexcept + void fexpr_vec_init(fexpr_vec_t vec, slong len) noexcept + void fexpr_vec_clear(fexpr_vec_t vec) noexcept + void fexpr_vec_print(const fexpr_vec_t vec) noexcept + void fexpr_vec_swap(fexpr_vec_t x, fexpr_vec_t y) noexcept + void fexpr_vec_fit_length(fexpr_vec_t vec, slong len) noexcept + void fexpr_vec_set(fexpr_vec_t dest, const fexpr_vec_t src) noexcept + void fexpr_vec_append(fexpr_vec_t vec, const fexpr_t expr) noexcept + slong fexpr_vec_insert_unique(fexpr_vec_t vec, const fexpr_t expr) noexcept + void fexpr_vec_set_length(fexpr_vec_t vec, slong len) noexcept + void _fexpr_vec_sort_fast(fexpr_ptr vec, slong len) noexcept diff --git a/src/sage/libs/flint/fexpr_builtin.pxd b/src/sage/libs/flint/fexpr_builtin.pxd new file mode 100644 index 00000000000..d434d9c40d6 --- /dev/null +++ b/src/sage/libs/flint/fexpr_builtin.pxd @@ -0,0 +1,18 @@ +# distutils: libraries = flint +# distutils: depends = flint/fexpr_builtin.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + slong fexpr_builtin_lookup(const char * s) noexcept + const char * fexpr_builtin_name(slong n) noexcept + slong fexpr_builtin_length() noexcept diff --git a/src/sage/libs/flint/fft.pxd b/src/sage/libs/flint/fft.pxd new file mode 100644 index 00000000000..e5362f1b90b --- /dev/null +++ b/src/sage/libs/flint/fft.pxd @@ -0,0 +1,64 @@ +# distutils: libraries = flint +# distutils: depends = flint/fft.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + mp_size_t fft_split_limbs(mp_limb_t ** poly, mp_srcptr limbs, mp_size_t total_limbs, mp_size_t coeff_limbs, mp_size_t output_limbs) noexcept + mp_size_t fft_split_bits(mp_limb_t ** poly, mp_srcptr limbs, mp_size_t total_limbs, flint_bitcnt_t bits, mp_size_t output_limbs) noexcept + void fft_combine_limbs(mp_limb_t * res, mp_limb_t ** poly, slong length, mp_size_t coeff_limbs, mp_size_t output_limbs, mp_size_t total_limbs) noexcept + void fft_combine_bits(mp_limb_t * res, mp_limb_t ** poly, slong length, flint_bitcnt_t bits, mp_size_t output_limbs, mp_size_t total_limbs) noexcept + void fermat_to_mpz(mpz_t m, mp_limb_t * i, mp_size_t limbs) noexcept + void mpn_negmod_2expp1(mp_limb_t * z, const mp_limb_t * a, mp_size_t limbs) noexcept + void mpn_addmod_2expp1_1(mp_limb_t * r, mp_size_t limbs, mp_limb_signed_t c) noexcept + void mpn_normmod_2expp1(mp_limb_t * t, mp_size_t limbs) noexcept + void mpn_mul_2expmod_2expp1(mp_limb_t * t, mp_limb_t * i1, mp_size_t limbs, flint_bitcnt_t d) noexcept + void mpn_div_2expmod_2expp1(mp_limb_t * t, mp_limb_t * i1, mp_size_t limbs, flint_bitcnt_t d) noexcept + void fft_adjust(mp_limb_t * r, mp_limb_t * i1, mp_size_t i, mp_size_t limbs, flint_bitcnt_t w) noexcept + void fft_adjust_sqrt2(mp_limb_t * r, mp_limb_t * i1, mp_size_t i, mp_size_t limbs, flint_bitcnt_t w, mp_limb_t * temp) noexcept + void butterfly_lshB(mp_limb_t * t, mp_limb_t * u, mp_limb_t * i1, mp_limb_t * i2, mp_size_t limbs, mp_size_t x, mp_size_t y) noexcept + void butterfly_rshB(mp_limb_t * t, mp_limb_t * u, mp_limb_t * i1, mp_limb_t * i2, mp_size_t limbs, mp_size_t x, mp_size_t y) noexcept + void fft_butterfly(mp_limb_t * s, mp_limb_t * t, mp_limb_t * i1, mp_limb_t * i2, mp_size_t i, mp_size_t limbs, flint_bitcnt_t w) noexcept + void ifft_butterfly(mp_limb_t * s, mp_limb_t * t, mp_limb_t * i1, mp_limb_t * i2, mp_size_t i, mp_size_t limbs, flint_bitcnt_t w) noexcept + void fft_radix2(mp_limb_t ** ii, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2) noexcept + void fft_truncate(mp_limb_t ** ii, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_size_t trunc) noexcept + void fft_truncate1(mp_limb_t ** ii, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_size_t trunc) noexcept + void ifft_radix2(mp_limb_t ** ii, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2) noexcept + void ifft_truncate(mp_limb_t ** ii, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_size_t trunc) noexcept + void ifft_truncate1(mp_limb_t ** ii, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_size_t trunc) noexcept + void fft_butterfly_sqrt2(mp_limb_t * s, mp_limb_t * t, mp_limb_t * i1, mp_limb_t * i2, mp_size_t i, mp_size_t limbs, flint_bitcnt_t w, mp_limb_t * temp) noexcept + void ifft_butterfly_sqrt2(mp_limb_t * s, mp_limb_t * t, mp_limb_t * i1, mp_limb_t * i2, mp_size_t i, mp_size_t limbs, flint_bitcnt_t w, mp_limb_t * temp) noexcept + void fft_truncate_sqrt2(mp_limb_t ** ii, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_limb_t ** temp, mp_size_t trunc) noexcept + void ifft_truncate_sqrt2(mp_limb_t ** ii, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_limb_t ** temp, mp_size_t trunc) noexcept + void fft_butterfly_twiddle(mp_limb_t * u, mp_limb_t * v, mp_limb_t * s, mp_limb_t * t, mp_size_t limbs, flint_bitcnt_t b1, flint_bitcnt_t b2) noexcept + void ifft_butterfly_twiddle(mp_limb_t * u, mp_limb_t * v, mp_limb_t * s, mp_limb_t * t, mp_size_t limbs, flint_bitcnt_t b1, flint_bitcnt_t b2) noexcept + void fft_radix2_twiddle(mp_limb_t ** ii, mp_size_t iis, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_size_t ws, mp_size_t r, mp_size_t c, mp_size_t rs) noexcept + void ifft_radix2_twiddle(mp_limb_t ** ii, mp_size_t iis, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_size_t ws, mp_size_t r, mp_size_t c, mp_size_t rs) noexcept + void fft_truncate1_twiddle(mp_limb_t ** ii, mp_size_t iis, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_size_t ws, mp_size_t r, mp_size_t c, mp_size_t rs, mp_size_t trunc) noexcept + void ifft_truncate1_twiddle(mp_limb_t ** ii, mp_size_t iis, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_size_t ws, mp_size_t r, mp_size_t c, mp_size_t rs, mp_size_t trunc) noexcept + void fft_mfa_truncate_sqrt2(mp_limb_t ** ii, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_limb_t ** temp, mp_size_t n1, mp_size_t trunc) noexcept + void ifft_mfa_truncate_sqrt2(mp_limb_t ** ii, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_limb_t ** temp, mp_size_t n1, mp_size_t trunc) noexcept + void fft_mfa_truncate_sqrt2_outer(mp_limb_t ** ii, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_limb_t ** temp, mp_size_t n1, mp_size_t trunc) noexcept + void fft_mfa_truncate_sqrt2_inner(mp_limb_t ** ii, mp_limb_t ** jj, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_limb_t ** temp, mp_size_t n1, mp_size_t trunc, mp_limb_t ** tt) noexcept + void ifft_mfa_truncate_sqrt2_outer(mp_limb_t ** ii, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_limb_t ** temp, mp_size_t n1, mp_size_t trunc) noexcept + void fft_negacyclic(mp_limb_t ** ii, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_limb_t ** temp) noexcept + void ifft_negacyclic(mp_limb_t ** ii, mp_size_t n, flint_bitcnt_t w, mp_limb_t ** t1, mp_limb_t ** t2, mp_limb_t ** temp) noexcept + void fft_naive_convolution_1(mp_limb_t * r, mp_limb_t * ii, mp_limb_t * jj, mp_size_t m) noexcept + void _fft_mulmod_2expp1(mp_limb_t * r1, mp_limb_t * i1, mp_limb_t * i2, mp_size_t r_limbs, flint_bitcnt_t depth, flint_bitcnt_t w) noexcept + slong fft_adjust_limbs(mp_size_t limbs) noexcept + void fft_mulmod_2expp1(mp_limb_t * r, mp_limb_t * i1, mp_limb_t * i2, mp_size_t n, mp_size_t w, mp_limb_t * tt) noexcept + void mul_truncate_sqrt2(mp_ptr r1, mp_srcptr i1, mp_size_t n1, mp_srcptr i2, mp_size_t n2, flint_bitcnt_t depth, flint_bitcnt_t w) noexcept + void mul_mfa_truncate_sqrt2(mp_ptr r1, mp_srcptr i1, mp_size_t n1, mp_srcptr i2, mp_size_t n2, flint_bitcnt_t depth, flint_bitcnt_t w) noexcept + void flint_mpn_mul_fft_main(mp_ptr r1, mp_srcptr i1, mp_size_t n1, mp_srcptr i2, mp_size_t n2) noexcept + void fft_convolution(mp_limb_t ** ii, mp_limb_t ** jj, slong depth, slong limbs, slong trunc, mp_limb_t ** t1, mp_limb_t ** t2, mp_limb_t ** s1, mp_limb_t ** tt) noexcept + void fft_precache(mp_limb_t ** jj, slong depth, slong limbs, slong trunc, mp_limb_t ** t1, mp_limb_t ** t2, mp_limb_t ** s1) noexcept + void fft_convolution_precache(mp_limb_t ** ii, mp_limb_t ** jj, slong depth, slong limbs, slong trunc, mp_limb_t ** t1, mp_limb_t ** t2, mp_limb_t ** s1, mp_limb_t ** tt) noexcept diff --git a/src/sage/libs/flint/flint.pxd b/src/sage/libs/flint/flint.pxd index df9e6a1e870..33af77f9c16 100644 --- a/src/sage/libs/flint/flint.pxd +++ b/src/sage/libs/flint/flint.pxd @@ -1,11 +1,34 @@ # distutils: libraries = flint -# distutils: depends = flint/flint.h flint/fmpz.h +# distutils: depends = flint/flint.h -# flint/flint.h -cdef extern from "flint_wrap.h": - cdef unsigned long FLINT_BIT_COUNT(unsigned long) - void flint_free(void * ptr) +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * -# flint/fmpz.h cdef extern from "flint_wrap.h": - void _fmpz_cleanup_mpz_content() + mp_limb_t FLINT_BIT_COUNT(mp_limb_t x) noexcept + void * flint_malloc(size_t size) noexcept + void * flint_realloc(void * ptr, size_t size) noexcept + void * flint_calloc(size_t num, size_t size) noexcept + void flint_free(void * ptr) noexcept + flint_rand_s * flint_rand_alloc() noexcept + void flint_rand_free(flint_rand_s * state) noexcept + void flint_randinit(flint_rand_t state) noexcept + void flint_randclear(flint_rand_t state) noexcept + void flint_set_num_threads(int num_threads) noexcept + int flint_get_num_threads() noexcept + int flint_set_num_workers(int num_workers) noexcept + void flint_reset_num_workers(int num_workers) noexcept + int flint_printf(const char * str, ...) noexcept + int flint_fprintf(FILE * f, const char * str, ...) noexcept + int flint_sprintf(char * s, const char * str, ...) noexcept + int flint_scanf(const char * str, ...) noexcept + int flint_fscanf(FILE * f, const char * str, ...) noexcept + int flint_sscanf(const char * s, const char * str, ...) noexcept diff --git a/src/sage/libs/flint/flint_sage.pyx b/src/sage/libs/flint/flint_sage.pyx new file mode 100644 index 00000000000..7ebbc1a7571 --- /dev/null +++ b/src/sage/libs/flint/flint_sage.pyx @@ -0,0 +1,158 @@ +# distutils: extra_compile_args = -D_XPG6 +""" +Flint imports + +TESTS: + +Import this module:: + + sage: import sage.libs.flint.flint_sage + +We verify that :trac:`6919` is correctly fixed:: + + sage: R. = PolynomialRing(ZZ) + sage: A = 2^(2^17+2^15) + sage: a = A * x^31 + sage: b = (A * x) * x^30 + sage: a == b + True +""" + +# cimport all .pxd files to make sure they compile +from .acb cimport * +from .acb_calc cimport * +from .acb_dft cimport * +from .acb_dirichlet cimport * +from .acb_elliptic cimport * +from .acb_hypgeom cimport * +from .acb_mat cimport * +from .acb_modular cimport * +from .acb_poly cimport * +from .acf cimport * +from .aprcl cimport * +from .arb cimport * +from .arb_calc cimport * +from .arb_fmpz_poly cimport * +from .arb_fpwrap cimport * +from .arb_hypgeom cimport * +from .arb_mat cimport * +from .arb_poly cimport * +from .arf cimport * +from .arith cimport * +from .bernoulli cimport * +from .bool_mat cimport * +from .ca cimport * +from .ca_ext cimport * +from .ca_field cimport * +from .ca_mat cimport * +from .ca_poly cimport * +from .ca_vec cimport * +from .calcium cimport * +from .d_mat cimport * +from .d_vec cimport * +from .dirichlet cimport * +from .dlog cimport * +from .double_extras cimport * +from .double_interval cimport * +from .fexpr cimport * +from .fexpr_builtin cimport * +from .fft cimport * +from .flint cimport * +from .fmpq cimport * +from .fmpq_mat cimport * +from .fmpq_mpoly cimport * +from .fmpq_mpoly_factor cimport * +from .fmpq_poly cimport * +from .fmpq_vec cimport * +from .fmpz cimport * +from .fmpz_extras cimport * +from .fmpz_factor cimport * +from .fmpz_lll cimport * +from .fmpz_mat cimport * +from .fmpz_mod cimport * +from .fmpz_mod_mat cimport * +from .fmpz_mod_mpoly cimport * +from .fmpz_mod_mpoly_factor cimport * +from .fmpz_mod_poly cimport * +from .fmpz_mod_poly_factor cimport * +from .fmpz_mod_vec cimport * +from .fmpz_mpoly cimport * +from .fmpz_mpoly_factor cimport * +from .fmpz_mpoly_q cimport * +from .fmpz_poly cimport * +from .fmpz_poly_factor cimport * +from .fmpz_poly_mat cimport * +from .fmpz_poly_q cimport * +from .fmpz_vec cimport * +from .fmpzi cimport * +from .fq cimport * +from .fq_default cimport * +from .fq_default_mat cimport * +from .fq_default_poly cimport * +from .fq_default_poly_factor cimport * +from .fq_embed cimport * +from .fq_mat cimport * +from .fq_nmod cimport * +from .fq_nmod_embed cimport * +from .fq_nmod_mat cimport * +from .fq_nmod_mpoly cimport * +from .fq_nmod_mpoly_factor cimport * +from .fq_nmod_poly cimport * +from .fq_nmod_poly_factor cimport * +from .fq_nmod_vec cimport * +from .fq_poly cimport * +from .fq_poly_factor cimport * +from .fq_vec cimport * +from .fq_zech cimport * +from .fq_zech_embed cimport * +from .fq_zech_mat cimport * +from .fq_zech_poly cimport * +from .fq_zech_poly_factor cimport * +from .fq_zech_vec cimport * +from .gr cimport * +from .gr_generic cimport * +from .gr_mat cimport * +from .gr_mpoly cimport * +from .gr_poly cimport * +from .gr_special cimport * +from .gr_vec cimport * +from .hypgeom cimport * +from .long_extras cimport * +from .mag cimport * +from .mpf_mat cimport * +from .mpf_vec cimport * +from .mpfr_mat cimport * +from .mpfr_vec cimport * +from .mpn_extras cimport * +from .mpoly cimport * +from .nf cimport * +from .nf_elem cimport * +from .nmod cimport * +from .nmod_mat cimport * +from .nmod_mpoly cimport * +from .nmod_mpoly_factor cimport * +from .nmod_poly cimport * +from .nmod_poly_factor cimport * +from .nmod_poly_mat cimport * +from .nmod_vec cimport * +from .padic cimport * +from .padic_mat cimport * +from .padic_poly cimport * +from .partitions cimport * +from .perm cimport * +from .profiler cimport * +from .qadic cimport * +from .qfb cimport * +from .qqbar cimport * +from .qsieve cimport * +from .thread_pool cimport * +from .ulong_extras cimport * + +# Try to clean up after ourselves before sage terminates. This +# probably doesn't do anything if your copy of flint is re-entrant +# (and most are). Moreover it isn't strictly necessary, because the OS +# will reclaim these resources anyway after sage terminates. However +# this might reveal other bugs, and can help tools like valgrind do +# their jobs. +import atexit +atexit.register(_fmpz_cleanup_mpz_content) diff --git a/src/sage/libs/flint/flint_wrap.h b/src/sage/libs/flint/flint_wrap.h index 4db72b97660..a7c6cb399c6 100644 --- a/src/sage/libs/flint/flint_wrap.h +++ b/src/sage/libs/flint/flint_wrap.h @@ -32,29 +32,134 @@ #define slong mp_limb_signed_t #endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include -#include #include +#include +#include #include +#include #include +#include #include -#include +#include #include -#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include #include +#include +#include #include #include +#include #include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include +#include +#include #include #include +#include #include +#include +#include +#include #include +#include +#include #include +#include #include #undef ulong diff --git a/src/sage/libs/flint/fmpq.pxd b/src/sage/libs/flint/fmpq.pxd index 0616c0a7408..41f075326fe 100644 --- a/src/sage/libs/flint/fmpq.pxd +++ b/src/sage/libs/flint/fmpq.pxd @@ -1,78 +1,137 @@ # distutils: libraries = flint # distutils: depends = flint/fmpq.h +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + from libc.stdio cimport FILE -from sage.libs.gmp.types cimport mpq_t -from sage.libs.flint.types cimport fmpz_t, fmpq_t, flint_rand_t, mp_bitcnt_t, fmpz -from sage.libs.mpfr.types cimport mpfr_t, mpfr_rnd_t +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * -# flint/fmpq.h cdef extern from "flint_wrap.h": - fmpz * fmpq_numref(fmpq_t) - fmpz * fmpq_denref(fmpq_t) - void fmpq_init(fmpq_t) - void fmpq_clear(fmpq_t) - void fmpq_init_set_readonly(fmpq_t, const mpq_t) - void fmpq_clear_readonly(fmpq_t) - void fmpq_one(fmpq_t) - void fmpq_zero(fmpq_t) - bint fmpq_is_zero(fmpq_t) - bint fmpq_is_one(fmpq_t) - int fmpq_sgn(const fmpq_t x) - void fmpq_set(fmpq_t dest, const fmpq_t src) - void fmpq_swap(fmpq_t op1, fmpq_t op2) - void fmpq_neg(fmpq_t dest, const fmpq_t src) - void fmpq_abs(fmpq_t dest, const fmpq_t src) - int fmpq_cmp(const fmpq_t x, const fmpq_t y) - void fmpq_canonicalise(fmpq_t res) - int fmpq_is_canonical(const fmpq_t x) - void fmpq_set_si(fmpq_t res, long p, unsigned long q) - void fmpq_set_fmpz_frac(fmpq_t res, const fmpz_t p, const fmpz_t q) - void fmpq_set_mpq(fmpq_t dest, const mpq_t src) - void fmpq_get_mpq(mpq_t dest, const fmpq_t src) - int fmpq_get_mpfr(mpfr_t r, const fmpq_t x, mpfr_rnd_t rnd) - void flint_mpq_init_set_readonly(mpq_t z, const fmpq_t f) - void flint_mpq_clear_readonly(mpq_t z) - void fmpq_init_set_readonly(fmpq_t f, const mpq_t z) - void fmpq_clear_readonly(fmpq_t f) - char * fmpq_get_str(char * str, int b, const fmpq_t x) - void fmpq_fprint(FILE * file, const fmpq_t x) - void fmpq_print(const fmpq_t x) - void fmpq_randtest(fmpq_t res, flint_rand_t state, mp_bitcnt_t bits) - void fmpq_randtest_not_zero(fmpq_t res, flint_rand_t state, mp_bitcnt_t bits) - void fmpq_randbits(fmpq_t res, flint_rand_t state, mp_bitcnt_t bits) - void fmpq_add(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void fmpq_add_si(fmpq_t res, const fmpq_t op1, long c) - void fmpq_add_fmpz(fmpq_t res, const fmpq_t op1, const fmpz_t c) - void fmpq_sub(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void fmpq_sub_si(fmpq_t res, const fmpq_t op1, long c) - void fmpq_sub_fmpz(fmpq_t res, const fmpq_t op1, const fmpz_t c) - void fmpq_mul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void fmpq_mul_fmpz(fmpq_t res, const fmpq_t op, const fmpz_t x) - void fmpq_pow_si(fmpq_t rop, const fmpq_t op, long e) - void fmpq_addmul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void fmpq_submul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void fmpq_inv(fmpq_t dest, const fmpq_t src) - void fmpq_div(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - void fmpq_div_fmpz(fmpq_t res, const fmpq_t op, const fmpz_t x) - void fmpq_mul_2exp(fmpq_t res, const fmpq_t x, mp_bitcnt_t exp) - void fmpq_div_2exp(fmpq_t res, const fmpq_t x, mp_bitcnt_t exp) - int fmpq_mod_fmpz(fmpz_t res, const fmpq_t x, const fmpz_t mod) - void fmpq_gcd(fmpq_t res, const fmpq_t op1, const fmpq_t op2) - int fmpq_reconstruct_fmpz(fmpq_t res, const fmpz_t a, const fmpz_t m) - int fmpq_reconstruct_fmpz_2(fmpq_t res, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) - mp_bitcnt_t fmpq_height_bits(const fmpq_t x) - void fmpq_height(fmpz_t height, const fmpq_t x) - void fmpq_next_calkin_wilf(fmpq_t res, const fmpq_t x) - void fmpq_next_signed_calkin_wilf(fmpq_t res, const fmpq_t x) - void fmpq_next_minimal(fmpq_t res, const fmpq_t x) - void fmpq_next_signed_minimal(fmpq_t res, const fmpq_t x) - long fmpq_get_cfrac(fmpz * c, fmpq_t rem, const fmpq_t x, long n) - void fmpq_set_cfrac(fmpq_t x, const fmpz * c, long n) - long fmpq_cfrac_bound(const fmpq_t x) - void fmpq_dedekind_sum_naive(fmpq_t s, const fmpz_t h, const fmpz_t k) - void fmpq_dedekind_sum_coprime_large(fmpq_t s, const fmpz_t h, const fmpz_t k) - double fmpq_dedekind_sum_coprime_d(double h, double k) - void fmpq_dedekind_sum_coprime(fmpq_t s, const fmpz_t h, const fmpz_t k) - void fmpq_dedekind_sum(fmpq_t s, const fmpz_t h, const fmpz_t k) - void fmpq_harmonic_ui(fmpq_t x, unsigned long n) + fmpz * fmpq_numref(const fmpq_t x) noexcept + fmpz * fmpq_denref(const fmpq_t x) noexcept + void fmpq_init(fmpq_t x) noexcept + void fmpq_clear(fmpq_t x) noexcept + void fmpq_canonicalise(fmpq_t res) noexcept + void _fmpq_canonicalise(fmpz_t num, fmpz_t den) noexcept + bint fmpq_is_canonical(const fmpq_t x) noexcept + bint _fmpq_is_canonical(const fmpz_t num, const fmpz_t den) noexcept + void fmpq_set(fmpq_t dest, const fmpq_t src) noexcept + void fmpq_swap(fmpq_t op1, fmpq_t op2) noexcept + void fmpq_neg(fmpq_t dest, const fmpq_t src) noexcept + void fmpq_abs(fmpq_t dest, const fmpq_t src) noexcept + void fmpq_zero(fmpq_t res) noexcept + void fmpq_one(fmpq_t res) noexcept + bint fmpq_is_zero(const fmpq_t res) noexcept + bint fmpq_is_one(const fmpq_t res) noexcept + bint fmpq_is_pm1(const fmpq_t res) noexcept + bint fmpq_equal(const fmpq_t x, const fmpq_t y) noexcept + int fmpq_sgn(const fmpq_t x) noexcept + int fmpq_cmp(const fmpq_t x, const fmpq_t y) noexcept + int fmpq_cmp_fmpz(const fmpq_t x, const fmpz_t y) noexcept + int fmpq_cmp_ui(const fmpq_t x, ulong y) noexcept + int fmpq_cmp_si(const fmpq_t x, slong y) noexcept + bint fmpq_equal_ui(fmpq_t x, ulong y) noexcept + bint fmpq_equal_si(fmpq_t x, slong y) noexcept + void fmpq_height(fmpz_t height, const fmpq_t x) noexcept + flint_bitcnt_t fmpq_height_bits(const fmpq_t x) noexcept + void fmpq_set_fmpz_frac(fmpq_t res, const fmpz_t p, const fmpz_t q) noexcept + void fmpq_get_mpz_frac(mpz_t a, mpz_t b, fmpq_t c) noexcept + void fmpq_set_si(fmpq_t res, slong p, ulong q) noexcept + void _fmpq_set_si(fmpz_t rnum, fmpz_t rden, slong p, ulong q) noexcept + void fmpq_set_ui(fmpq_t res, ulong p, ulong q) noexcept + void _fmpq_set_ui(fmpz_t rnum, fmpz_t rden, ulong p, ulong q) noexcept + void fmpq_set_mpq(fmpq_t dest, const mpq_t src) noexcept + int fmpq_set_str(fmpq_t dest, const char * s, int base) noexcept + void fmpq_init_set_mpz_frac_readonly(fmpq_t z, const mpz_t p, const mpz_t q) noexcept + double fmpq_get_d(const fmpq_t f) noexcept + void fmpq_get_mpq(mpq_t dest, const fmpq_t src) noexcept + int fmpq_get_mpfr(mpfr_t dest, const fmpq_t src, mpfr_rnd_t rnd) noexcept + char * _fmpq_get_str(char * str, int b, const fmpz_t num, const fmpz_t den) noexcept + char * fmpq_get_str(char * str, int b, const fmpq_t x) noexcept + void flint_mpq_init_set_readonly(mpq_t z, const fmpq_t f) noexcept + void flint_mpq_clear_readonly(mpq_t z) noexcept + void fmpq_init_set_readonly(fmpq_t f, const mpq_t z) noexcept + void fmpq_clear_readonly(fmpq_t f) noexcept + int fmpq_fprint(FILE * file, const fmpq_t x) noexcept + int _fmpq_fprint(FILE * file, const fmpz_t num, const fmpz_t den) noexcept + int fmpq_print(const fmpq_t x) noexcept + int _fmpq_print(const fmpz_t num, const fmpz_t den) noexcept + void fmpq_randtest(fmpq_t res, flint_rand_t state, flint_bitcnt_t bits) noexcept + void _fmpq_randtest(fmpz_t num, fmpz_t den, flint_rand_t state, flint_bitcnt_t bits) noexcept + void fmpq_randtest_not_zero(fmpq_t res, flint_rand_t state, flint_bitcnt_t bits) noexcept + void fmpq_randbits(fmpq_t res, flint_rand_t state, flint_bitcnt_t bits) noexcept + void _fmpq_randbits(fmpz_t num, fmpz_t den, flint_rand_t state, flint_bitcnt_t bits) noexcept + void fmpq_add(fmpq_t res, const fmpq_t op1, const fmpq_t op2) noexcept + void fmpq_sub(fmpq_t res, const fmpq_t op1, const fmpq_t op2) noexcept + void fmpq_mul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) noexcept + void fmpq_div(fmpq_t res, const fmpq_t op1, const fmpq_t op2) noexcept + void _fmpq_add(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) noexcept + void _fmpq_sub(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) noexcept + void _fmpq_mul(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) noexcept + void _fmpq_div(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) noexcept + void _fmpq_add_si(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, slong r) noexcept + void _fmpq_sub_si(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, slong r) noexcept + void _fmpq_add_ui(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, ulong r) noexcept + void _fmpq_sub_ui(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, ulong r) noexcept + void _fmpq_add_fmpz(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, const fmpz_t r) noexcept + void _fmpq_sub_fmpz(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, const fmpz_t r) noexcept + void fmpq_add_si(fmpq_t res, const fmpq_t op1, slong c) noexcept + void fmpq_sub_si(fmpq_t res, const fmpq_t op1, slong c) noexcept + void fmpq_add_ui(fmpq_t res, const fmpq_t op1, ulong c) noexcept + void fmpq_sub_ui(fmpq_t res, const fmpq_t op1, ulong c) noexcept + void fmpq_add_fmpz(fmpq_t res, const fmpq_t op1, const fmpz_t c) noexcept + void fmpq_sub_fmpz(fmpq_t res, const fmpq_t op1, const fmpz_t c) noexcept + void _fmpq_mul_si(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, slong r) noexcept + void fmpq_mul_si(fmpq_t res, const fmpq_t op1, slong c) noexcept + void _fmpq_mul_ui(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, ulong r) noexcept + void fmpq_mul_ui(fmpq_t res, const fmpq_t op1, ulong c) noexcept + void fmpq_addmul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) noexcept + void fmpq_submul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) noexcept + void _fmpq_addmul(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) noexcept + void _fmpq_submul(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) noexcept + void fmpq_inv(fmpq_t dest, const fmpq_t src) noexcept + void _fmpq_pow_si(fmpz_t rnum, fmpz_t rden, const fmpz_t opnum, const fmpz_t opden, slong e) noexcept + void fmpq_pow_si(fmpq_t res, const fmpq_t op, slong e) noexcept + int fmpq_pow_fmpz(fmpq_t a, const fmpq_t b, const fmpz_t e) noexcept + void fmpq_mul_fmpz(fmpq_t res, const fmpq_t op, const fmpz_t x) noexcept + void fmpq_div_fmpz(fmpq_t res, const fmpq_t op, const fmpz_t x) noexcept + void fmpq_mul_2exp(fmpq_t res, const fmpq_t x, flint_bitcnt_t exp) noexcept + void fmpq_div_2exp(fmpq_t res, const fmpq_t x, flint_bitcnt_t exp) noexcept + void _fmpq_gcd(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, const fmpz_t r, const fmpz_t s) noexcept + void fmpq_gcd(fmpq_t res, const fmpq_t op1, const fmpq_t op2) noexcept + void _fmpq_gcd_cofactors(fmpz_t gnum, fmpz_t gden, fmpz_t abar, fmpz_t bbar, const fmpz_t anum, const fmpz_t aden, const fmpz_t bnum, const fmpz_t bden) noexcept + void fmpq_gcd_cofactors(fmpq_t g, fmpz_t abar, fmpz_t bbar, const fmpq_t a, const fmpq_t b) noexcept + void _fmpq_add_small(fmpz_t rnum, fmpz_t rden, slong p1, ulong q1, slong p2, ulong q2) noexcept + void _fmpq_mul_small(fmpz_t rnum, fmpz_t rden, slong p1, ulong q1, slong p2, ulong q2) noexcept + int _fmpq_mod_fmpz(fmpz_t res, const fmpz_t num, const fmpz_t den, const fmpz_t mod) noexcept + int fmpq_mod_fmpz(fmpz_t res, const fmpq_t x, const fmpz_t mod) noexcept + int _fmpq_reconstruct_fmpz_2_naive(fmpz_t n, fmpz_t d, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) noexcept + int _fmpq_reconstruct_fmpz_2(fmpz_t n, fmpz_t d, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) noexcept + int fmpq_reconstruct_fmpz_2(fmpq_t res, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) noexcept + int _fmpq_reconstruct_fmpz(fmpz_t n, fmpz_t d, const fmpz_t a, const fmpz_t m) noexcept + int fmpq_reconstruct_fmpz(fmpq_t res, const fmpz_t a, const fmpz_t m) noexcept + void _fmpq_next_minimal(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) noexcept + void fmpq_next_minimal(fmpq_t res, const fmpq_t x) noexcept + void _fmpq_next_signed_minimal(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) noexcept + void fmpq_next_signed_minimal(fmpq_t res, const fmpq_t x) noexcept + void _fmpq_next_calkin_wilf(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) noexcept + void fmpq_next_calkin_wilf(fmpq_t res, const fmpq_t x) noexcept + void _fmpq_next_signed_calkin_wilf(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) noexcept + void fmpq_next_signed_calkin_wilf(fmpq_t res, const fmpq_t x) noexcept + void fmpq_farey_neighbors(fmpq_t l, fmpq_t r, const fmpq_t x, const fmpz_t Q) noexcept + void fmpq_simplest_between(fmpq_t x, const fmpq_t l, const fmpq_t r) noexcept + void _fmpq_simplest_between(fmpz_t x_num, fmpz_t x_den, const fmpz_t l_num, const fmpz_t l_den, const fmpz_t r_num, const fmpz_t r_den) noexcept + slong fmpq_get_cfrac(fmpz * c, fmpq_t rem, const fmpq_t x, slong n) noexcept + slong fmpq_get_cfrac_naive(fmpz * c, fmpq_t rem, const fmpq_t x, slong n) noexcept + void fmpq_set_cfrac(fmpq_t x, const fmpz * c, slong n) noexcept + slong fmpq_cfrac_bound(const fmpq_t x) noexcept + void _fmpq_harmonic_ui(fmpz_t num, fmpz_t den, ulong n) noexcept + void fmpq_harmonic_ui(fmpq_t x, ulong n) noexcept + void fmpq_dedekind_sum(fmpq_t s, const fmpz_t h, const fmpz_t k) noexcept + void fmpq_dedekind_sum_naive(fmpq_t s, const fmpz_t h, const fmpz_t k) noexcept diff --git a/src/sage/libs/flint/fmpq_mat.pxd b/src/sage/libs/flint/fmpq_mat.pxd index ccd90c251a8..0227b8523a6 100644 --- a/src/sage/libs/flint/fmpq_mat.pxd +++ b/src/sage/libs/flint/fmpq_mat.pxd @@ -1,64 +1,103 @@ # distutils: libraries = flint # distutils: depends = flint/fmpq_mat.h -from sage.libs.flint.types cimport fmpz_t, fmpz, fmpq_t, fmpq, fmpz_mat_t, fmpq_mat_t, flint_rand_t, mp_bitcnt_t +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * -# flint/fmpq_mat.h cdef extern from "flint_wrap.h": - fmpq * fmpq_mat_entry(const fmpq_mat_t mat, long i, long j) - fmpz * fmpq_mat_entry_num(const fmpq_mat_t mat, long i, long j) - fmpz * fmpq_mat_entry_den(const fmpq_mat_t mat, long i, long j) - long fmpq_mat_nrows(const fmpq_mat_t mat) - long fmpq_mat_ncols(const fmpq_mat_t mat) - void fmpq_mat_init(fmpq_mat_t mat, long rows, long cols) - void fmpq_mat_clear(fmpq_mat_t mat) - void fmpq_mat_swap(fmpq_mat_t mat1, fmpq_mat_t mat2) - void fmpq_mat_window_init(fmpq_mat_t window, const fmpq_mat_t mat, long r1, long c1, long r2, long c2) - void fmpq_mat_window_clear(fmpq_mat_t window) - void fmpq_mat_concat_horizontal(fmpq_mat_t res, const fmpq_mat_t mat1, const fmpq_mat_t mat2) - void fmpq_mat_concat_vertical(fmpq_mat_t res, const fmpq_mat_t mat1, const fmpq_mat_t mat2) - void fmpq_mat_print(const fmpq_mat_t mat) - void fmpq_mat_randbits(fmpq_mat_t mat, flint_rand_t state, mp_bitcnt_t bits) - void fmpq_mat_randtest(fmpq_mat_t mat, flint_rand_t state, mp_bitcnt_t bits) - void fmpq_mat_hilbert_matrix(fmpq_mat_t mat) - void fmpq_mat_set(fmpq_mat_t dest, const fmpq_mat_t src) - void fmpq_mat_zero(fmpq_mat_t mat) - void fmpq_mat_one(fmpq_mat_t mat) - void fmpq_mat_transpose(fmpq_mat_t rop, const fmpq_mat_t op) - void fmpq_mat_add(fmpq_mat_t mat, const fmpq_mat_t mat1, const fmpq_mat_t mat2) - void fmpq_mat_sub(fmpq_mat_t mat, const fmpq_mat_t mat1, const fmpq_mat_t mat2) - void fmpq_mat_neg(fmpq_mat_t rop, const fmpq_mat_t op) - void fmpq_mat_scalar_mul_fmpz(fmpq_mat_t rop, const fmpq_mat_t op, const fmpz_t x) - void fmpq_mat_scalar_div_fmpz(fmpq_mat_t rop, const fmpq_mat_t op, const fmpz_t x) - bint fmpq_mat_equal(const fmpq_mat_t mat1, const fmpq_mat_t mat2) - bint fmpq_mat_is_integral(const fmpq_mat_t mat) - bint fmpq_mat_is_zero(const fmpq_mat_t mat) - bint fmpq_mat_is_empty(const fmpq_mat_t mat) - bint fmpq_mat_is_square(const fmpq_mat_t mat) - int fmpq_mat_get_fmpz_mat(fmpz_mat_t dest, const fmpq_mat_t mat) - void fmpq_mat_get_fmpz_mat_entrywise(fmpz_mat_t num, fmpz_mat_t den, const fmpq_mat_t mat) - void fmpq_mat_get_fmpz_mat_matwise(fmpz_mat_t num, fmpz_t den, const fmpq_mat_t mat) - void fmpq_mat_get_fmpz_mat_rowwise(fmpz_mat_t num, fmpz * den, const fmpq_mat_t mat) - void fmpq_mat_get_fmpz_mat_colwise(fmpz_mat_t num, fmpz * den, const fmpq_mat_t mat) - void fmpq_mat_get_fmpz_mat_rowwise_2(fmpz_mat_t num, fmpz_mat_t num2, fmpz * den, const fmpq_mat_t mat, const fmpq_mat_t mat2) - void fmpq_mat_get_fmpz_mat_mod_fmpz(fmpz_mat_t dest, const fmpq_mat_t mat, const fmpz_t mod) - void fmpq_mat_set_fmpz_mat(fmpq_mat_t dest, const fmpz_mat_t src) - void fmpq_mat_set_fmpz_mat_div_fmpz(fmpq_mat_t X, const fmpz_mat_t Xmod, const fmpz_t div) - int fmpq_mat_set_fmpz_mat_mod_fmpz(fmpq_mat_t X, const fmpz_mat_t Xmod, const fmpz_t mod) - void fmpq_mat_mul_direct(fmpq_mat_t C, const fmpq_mat_t A, const fmpq_mat_t B) - void fmpq_mat_mul_cleared(fmpq_mat_t C, const fmpq_mat_t A, const fmpq_mat_t B) - void fmpq_mat_mul(fmpq_mat_t C, const fmpq_mat_t A, const fmpq_mat_t B) - void fmpq_mat_mul_fmpz_mat(fmpq_mat_t C, const fmpq_mat_t A, const fmpz_mat_t B) - void fmpq_mat_mul_r_fmpz_mat(fmpq_mat_t C, const fmpz_mat_t A, const fmpq_mat_t B) - void fmpq_mat_trace(fmpq_t trace, const fmpq_mat_t mat) - void fmpq_mat_det(fmpq_t det, const fmpq_mat_t mat) - int fmpq_mat_solve_fraction_free(fmpq_mat_t X, const fmpq_mat_t A, const fmpq_mat_t B) - int fmpq_mat_solve_dixon(fmpq_mat_t X, const fmpq_mat_t A, const fmpq_mat_t B) - int fmpq_mat_solve_fmpz_mat(fmpq_mat_t X, const fmpz_mat_t A, const fmpz_mat_t B) - int fmpq_mat_inv(fmpq_mat_t B, const fmpq_mat_t A) - int fmpq_mat_pivot(long * perm, fmpq_mat_t mat, long r, long c) - long fmpq_mat_rref_classical(fmpq_mat_t B, const fmpq_mat_t A) - long fmpq_mat_rref_fraction_free(fmpq_mat_t B, const fmpq_mat_t A) - long fmpq_mat_rref(fmpq_mat_t B, const fmpq_mat_t A) - void fmpq_mat_gso(fmpq_mat_t B, const fmpq_mat_t A) + void fmpq_mat_init(fmpq_mat_t mat, slong rows, slong cols) noexcept + void fmpq_mat_init_set(fmpq_mat_t mat1, const fmpq_mat_t mat2) noexcept + void fmpq_mat_clear(fmpq_mat_t mat) noexcept + void fmpq_mat_swap(fmpq_mat_t mat1, fmpq_mat_t mat2) noexcept + void fmpq_mat_swap_entrywise(fmpq_mat_t mat1, fmpq_mat_t mat2) noexcept + fmpq * fmpq_mat_entry(const fmpq_mat_t mat, slong i, slong j) noexcept + fmpz * fmpq_mat_entry_num(const fmpq_mat_t mat, slong i, slong j) noexcept + fmpz * fmpq_mat_entry_den(const fmpq_mat_t mat, slong i, slong j) noexcept + slong fmpq_mat_nrows(const fmpq_mat_t mat) noexcept + slong fmpq_mat_ncols(const fmpq_mat_t mat) noexcept + void fmpq_mat_set(fmpq_mat_t dest, const fmpq_mat_t src) noexcept + void fmpq_mat_zero(fmpq_mat_t mat) noexcept + void fmpq_mat_one(fmpq_mat_t mat) noexcept + void fmpq_mat_transpose(fmpq_mat_t rop, const fmpq_mat_t op) noexcept + void fmpq_mat_swap_rows(fmpq_mat_t mat, slong * perm, slong r, slong s) noexcept + void fmpq_mat_swap_cols(fmpq_mat_t mat, slong * perm, slong r, slong s) noexcept + void fmpq_mat_invert_rows(fmpq_mat_t mat, slong * perm) noexcept + void fmpq_mat_invert_cols(fmpq_mat_t mat, slong * perm) noexcept + void fmpq_mat_add(fmpq_mat_t mat, const fmpq_mat_t mat1, const fmpq_mat_t mat2) noexcept + void fmpq_mat_sub(fmpq_mat_t mat, const fmpq_mat_t mat1, const fmpq_mat_t mat2) noexcept + void fmpq_mat_neg(fmpq_mat_t rop, const fmpq_mat_t op) noexcept + void fmpq_mat_scalar_mul_fmpq(fmpq_mat_t rop, const fmpq_mat_t op, const fmpq_t x) noexcept + void fmpq_mat_scalar_mul_fmpz(fmpq_mat_t rop, const fmpq_mat_t op, const fmpz_t x) noexcept + void fmpq_mat_scalar_div_fmpz(fmpq_mat_t rop, const fmpq_mat_t op, const fmpz_t x) noexcept + void fmpq_mat_print(const fmpq_mat_t mat) noexcept + void fmpq_mat_randbits(fmpq_mat_t mat, flint_rand_t state, flint_bitcnt_t bits) noexcept + void fmpq_mat_randtest(fmpq_mat_t mat, flint_rand_t state, flint_bitcnt_t bits) noexcept + void fmpq_mat_window_init(fmpq_mat_t window, const fmpq_mat_t mat, slong r1, slong c1, slong r2, slong c2) noexcept + void fmpq_mat_window_clear(fmpq_mat_t window) noexcept + void fmpq_mat_concat_vertical(fmpq_mat_t res, const fmpq_mat_t mat1, const fmpq_mat_t mat2) noexcept + void fmpq_mat_concat_horizontal(fmpq_mat_t res, const fmpq_mat_t mat1, const fmpq_mat_t mat2) noexcept + void fmpq_mat_hilbert_matrix(fmpq_mat_t mat) noexcept + bint fmpq_mat_equal(const fmpq_mat_t mat1, const fmpq_mat_t mat2) noexcept + bint fmpq_mat_is_integral(const fmpq_mat_t mat) noexcept + bint fmpq_mat_is_zero(const fmpq_mat_t mat) noexcept + bint fmpq_mat_is_one(const fmpq_mat_t mat) noexcept + bint fmpq_mat_is_empty(const fmpq_mat_t mat) noexcept + bint fmpq_mat_is_square(const fmpq_mat_t mat) noexcept + int fmpq_mat_get_fmpz_mat(fmpz_mat_t dest, const fmpq_mat_t mat) noexcept + void fmpq_mat_get_fmpz_mat_entrywise(fmpz_mat_t num, fmpz_mat_t den, const fmpq_mat_t mat) noexcept + void fmpq_mat_get_fmpz_mat_matwise(fmpz_mat_t num, fmpz_t den, const fmpq_mat_t mat) noexcept + void fmpq_mat_get_fmpz_mat_rowwise(fmpz_mat_t num, fmpz * den, const fmpq_mat_t mat) noexcept + void fmpq_mat_get_fmpz_mat_rowwise_2(fmpz_mat_t num, fmpz_mat_t num2, fmpz * den, const fmpq_mat_t mat, const fmpq_mat_t mat2) noexcept + void fmpq_mat_get_fmpz_mat_colwise(fmpz_mat_t num, fmpz * den, const fmpq_mat_t mat) noexcept + void fmpq_mat_set_fmpz_mat(fmpq_mat_t dest, const fmpz_mat_t src) noexcept + void fmpq_mat_set_fmpz_mat_div_fmpz(fmpq_mat_t mat, const fmpz_mat_t num, const fmpz_t den) noexcept + void fmpq_mat_get_fmpz_mat_mod_fmpz(fmpz_mat_t dest, const fmpq_mat_t mat, const fmpz_t mod) noexcept + int fmpq_mat_set_fmpz_mat_mod_fmpz(fmpq_mat_t X, const fmpz_mat_t Xmod, const fmpz_t mod) noexcept + void fmpq_mat_mul_direct(fmpq_mat_t C, const fmpq_mat_t A, const fmpq_mat_t B) noexcept + void fmpq_mat_mul_cleared(fmpq_mat_t C, const fmpq_mat_t A, const fmpq_mat_t B) noexcept + void fmpq_mat_mul(fmpq_mat_t C, const fmpq_mat_t A, const fmpq_mat_t B) noexcept + void fmpq_mat_mul_fmpz_mat(fmpq_mat_t C, const fmpq_mat_t A, const fmpz_mat_t B) noexcept + void fmpq_mat_mul_r_fmpz_mat(fmpq_mat_t C, const fmpz_mat_t A, const fmpq_mat_t B) noexcept + void fmpq_mat_mul_fmpq_vec(fmpq * c, const fmpq_mat_t A, const fmpq * b, slong blen) noexcept + void fmpq_mat_mul_fmpz_vec(fmpq * c, const fmpq_mat_t A, const fmpz * b, slong blen) noexcept + void fmpq_mat_mul_fmpq_vec_ptr(fmpq * const * c, const fmpq_mat_t A, const fmpq * const * b, slong blen) noexcept + void fmpq_mat_mul_fmpz_vec_ptr(fmpq * const * c, const fmpq_mat_t A, const fmpz * const * b, slong blen) noexcept + void fmpq_mat_fmpq_vec_mul(fmpq * c, const fmpq * a, slong alen, const fmpq_mat_t B) noexcept + void fmpq_mat_fmpz_vec_mul(fmpq * c, const fmpz * a, slong alen, const fmpq_mat_t B) noexcept + void fmpq_mat_fmpq_vec_mul_ptr(fmpq * const * c, const fmpq * const * a, slong alen, const fmpq_mat_t B) noexcept + void fmpq_mat_fmpz_vec_mul_ptr(fmpq * const * c, const fmpz * const * a, slong alen, const fmpq_mat_t B) noexcept + void fmpq_mat_kronecker_product(fmpq_mat_t C, const fmpq_mat_t A, const fmpq_mat_t B) noexcept + void fmpq_mat_trace(fmpq_t trace, const fmpq_mat_t mat) noexcept + void fmpq_mat_det(fmpq_t det, const fmpq_mat_t mat) noexcept + int fmpq_mat_solve_fraction_free(fmpq_mat_t X, const fmpq_mat_t A, const fmpq_mat_t B) noexcept + int fmpq_mat_solve_dixon(fmpq_mat_t X, const fmpq_mat_t A, const fmpq_mat_t B) noexcept + int fmpq_mat_solve_multi_mod(fmpq_mat_t X, const fmpq_mat_t A, const fmpq_mat_t B) noexcept + int fmpq_mat_solve(fmpq_mat_t X, const fmpq_mat_t A, const fmpq_mat_t B) noexcept + int fmpq_mat_solve_fmpz_mat_fraction_free(fmpq_mat_t X, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + int fmpq_mat_solve_fmpz_mat_dixon(fmpq_mat_t X, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + int fmpq_mat_solve_fmpz_mat_multi_mod(fmpq_mat_t X, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + int fmpq_mat_solve_fmpz_mat(fmpq_mat_t X, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + int fmpq_mat_can_solve_multi_mod(fmpq_mat_t X, const fmpq_mat_t A, const fmpq_mat_t B) noexcept + int fmpq_mat_can_solve_fraction_free(fmpq_mat_t X, const fmpq_mat_t A, const fmpq_mat_t B) noexcept + int fmpq_mat_can_solve(fmpq_mat_t X, const fmpq_mat_t A, const fmpq_mat_t B) noexcept + int fmpq_mat_inv(fmpq_mat_t B, const fmpq_mat_t A) noexcept + int fmpq_mat_pivot(slong * perm, fmpq_mat_t mat, slong r, slong c) noexcept + slong fmpq_mat_rref_classical(fmpq_mat_t B, const fmpq_mat_t A) noexcept + slong fmpq_mat_rref_fraction_free(fmpq_mat_t B, const fmpq_mat_t A) noexcept + slong fmpq_mat_rref(fmpq_mat_t B, const fmpq_mat_t A) noexcept + void fmpq_mat_gso(fmpq_mat_t B, const fmpq_mat_t A) noexcept + void fmpq_mat_similarity(fmpq_mat_t A, slong r, fmpq_t d) noexcept + void _fmpq_mat_charpoly(fmpz * coeffs, fmpz_t den, const fmpq_mat_t mat) noexcept + void fmpq_mat_charpoly(fmpq_poly_t pol, const fmpq_mat_t mat) noexcept + slong _fmpq_mat_minpoly(fmpz * coeffs, fmpz_t den, const fmpq_mat_t mat) noexcept + void fmpq_mat_minpoly(fmpq_poly_t pol, const fmpq_mat_t mat) noexcept +from .fmpq_mat_macros cimport * diff --git a/src/sage/libs/flint/fmpq_mat_macros.pxd b/src/sage/libs/flint/fmpq_mat_macros.pxd new file mode 100644 index 00000000000..45720b0511a --- /dev/null +++ b/src/sage/libs/flint/fmpq_mat_macros.pxd @@ -0,0 +1,9 @@ +# Macros from fmpq_mat.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + fmpq * fmpq_mat_entry(fmpq_mat_t mat, slong i, slong j) + slong fmpq_mat_nrows(fmpq_mat_t) + slong fmpq_mat_ncols(fmpq_mat_t) diff --git a/src/sage/libs/flint/fmpq_mpoly.pxd b/src/sage/libs/flint/fmpq_mpoly.pxd new file mode 100644 index 00000000000..34caf4ba56f --- /dev/null +++ b/src/sage/libs/flint/fmpq_mpoly.pxd @@ -0,0 +1,163 @@ +# distutils: libraries = flint +# distutils: depends = flint/fmpq_mpoly.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fmpq_mpoly_ctx_init(fmpq_mpoly_ctx_t ctx, slong nvars, const ordering_t ord) noexcept + slong fmpq_mpoly_ctx_nvars(const fmpq_mpoly_ctx_t ctx) noexcept + ordering_t fmpq_mpoly_ctx_ord(const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_ctx_clear(fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_init(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_init2(fmpq_mpoly_t A, slong alloc, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_init3(fmpq_mpoly_t A, slong alloc, flint_bitcnt_t bits, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_fit_length(fmpq_mpoly_t A, slong len, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_fit_bits(fmpq_mpoly_t A, flint_bitcnt_t bits, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_realloc(fmpq_mpoly_t A, slong alloc, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_clear(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + char * fmpq_mpoly_get_str_pretty(const fmpq_mpoly_t A, const char ** x, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_fprint_pretty(FILE * file, const fmpq_mpoly_t A, const char ** x, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_print_pretty(const fmpq_mpoly_t A, const char ** x, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_set_str_pretty(fmpq_mpoly_t A, const char * str, const char ** x, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_gen(fmpq_mpoly_t A, slong var, const fmpq_mpoly_ctx_t ctx) noexcept + bint fmpq_mpoly_is_gen(const fmpq_mpoly_t A, slong var, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_set(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) noexcept + bint fmpq_mpoly_equal(const fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_swap(fmpq_mpoly_t A, fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) noexcept + bint fmpq_mpoly_is_fmpq(const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_get_fmpq(fmpq_t c, const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_set_fmpq(fmpq_mpoly_t A, const fmpq_t c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_set_fmpz(fmpq_mpoly_t A, const fmpz_t c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_set_ui(fmpq_mpoly_t A, ulong c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_set_si(fmpq_mpoly_t A, slong c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_zero(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_one(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + bint fmpq_mpoly_equal_fmpq(const fmpq_mpoly_t A, const fmpq_t c, const fmpq_mpoly_ctx_t ctx) noexcept + bint fmpq_mpoly_equal_fmpz(const fmpq_mpoly_t A, const fmpz_t c, const fmpq_mpoly_ctx_t ctx) noexcept + bint fmpq_mpoly_equal_ui(const fmpq_mpoly_t A, ulong c, const fmpq_mpoly_ctx_t ctx) noexcept + bint fmpq_mpoly_equal_si(const fmpq_mpoly_t A, slong c, const fmpq_mpoly_ctx_t ctx) noexcept + bint fmpq_mpoly_is_zero(const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + bint fmpq_mpoly_is_one(const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_degrees_fit_si(const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_degrees_fmpz(fmpz ** degs, const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_degrees_si(slong * degs, const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_degree_fmpz(fmpz_t deg, const fmpq_mpoly_t A, slong var, const fmpq_mpoly_ctx_t ctx) noexcept + slong fmpq_mpoly_degree_si(const fmpq_mpoly_t A, slong var, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_total_degree_fits_si(const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_total_degree_fmpz(fmpz_t tdeg, const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + slong fmpq_mpoly_total_degree_si(const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_used_vars(int * used, const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_get_denominator(fmpz_t d, const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_get_coeff_fmpq_monomial(fmpq_t c, const fmpq_mpoly_t A, const fmpq_mpoly_t M, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_set_coeff_fmpq_monomial(fmpq_mpoly_t A, const fmpq_t c, const fmpq_mpoly_t M, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_get_coeff_fmpq_fmpz(fmpq_t c, const fmpq_mpoly_t A, fmpz * const * exp, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_get_coeff_fmpq_ui(fmpq_t c, const fmpq_mpoly_t A, const ulong * exp, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_set_coeff_fmpq_fmpz(fmpq_mpoly_t A, const fmpq_t c, fmpz * const * exp, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_set_coeff_fmpq_ui(fmpq_mpoly_t A, const fmpq_t c, const ulong * exp, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_get_coeff_vars_ui(fmpq_mpoly_t C, const fmpq_mpoly_t A, const slong * vars, const ulong * exps, slong length, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_cmp(const fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) noexcept + fmpq * fmpq_mpoly_content_ref(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + fmpz_mpoly_struct * fmpq_mpoly_zpoly_ref(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + fmpz * fmpq_mpoly_zpoly_term_coeff_ref(fmpq_mpoly_t A, slong i, const fmpq_mpoly_ctx_t ctx) noexcept + bint fmpq_mpoly_is_canonical(const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + slong fmpq_mpoly_length(const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_resize(fmpq_mpoly_t A, slong new_length, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_get_term_coeff_fmpq(fmpq_t c, const fmpq_mpoly_t A, slong i, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_set_term_coeff_fmpq(fmpq_mpoly_t A, slong i, const fmpq_t c, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_term_exp_fits_si(const fmpq_mpoly_t A, slong i, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_term_exp_fits_ui(const fmpq_mpoly_t A, slong i, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_get_term_exp_fmpz(fmpz ** exps, const fmpq_mpoly_t A, slong i, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_get_term_exp_ui(ulong * exps, const fmpq_mpoly_t A, slong i, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_get_term_exp_si(slong * exps, const fmpq_mpoly_t A, slong i, const fmpq_mpoly_ctx_t ctx) noexcept + ulong fmpq_mpoly_get_term_var_exp_ui(const fmpq_mpoly_t A, slong i, slong var, const fmpq_mpoly_ctx_t ctx) noexcept + slong fmpq_mpoly_get_term_var_exp_si(const fmpq_mpoly_t A, slong i, slong var, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_set_term_exp_fmpz(fmpq_mpoly_t A, slong i, fmpz * const * exps, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_set_term_exp_ui(fmpq_mpoly_t A, slong i, const ulong * exps, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_get_term(fmpq_mpoly_t M, const fmpq_mpoly_t A, slong i, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_get_term_monomial(fmpq_mpoly_t M, const fmpq_mpoly_t A, slong i, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_push_term_fmpq_fmpz(fmpq_mpoly_t A, const fmpq_t c, fmpz * const * exp, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_push_term_fmpq_ffmpz(fmpq_mpoly_t A, const fmpq_t c, const fmpz * exp, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_push_term_fmpz_fmpz(fmpq_mpoly_t A, const fmpz_t c, fmpz * const * exp, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_push_term_fmpz_ffmpz(fmpq_mpoly_t A, const fmpz_t c, const fmpz * exp, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_push_term_ui_fmpz(fmpq_mpoly_t A, ulong c, fmpz * const * exp, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_push_term_ui_ffmpz(fmpq_mpoly_t A, ulong c, const fmpz * exp, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_push_term_si_fmpz(fmpq_mpoly_t A, slong c, fmpz * const * exp, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_push_term_si_ffmpz(fmpq_mpoly_t A, slong c, const fmpz * exp, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_push_term_fmpq_ui(fmpq_mpoly_t A, const fmpq_t c, const ulong * exp, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_push_term_fmpz_ui(fmpq_mpoly_t A, const fmpz_t c, const ulong * exp, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_push_term_ui_ui(fmpq_mpoly_t A, ulong c, const ulong * exp, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_push_term_si_ui(fmpq_mpoly_t A, slong c, const ulong * exp, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_reduce(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_sort_terms(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_combine_like_terms(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_reverse(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_randtest_bound(fmpq_mpoly_t A, flint_rand_t state, slong length, mp_limb_t coeff_bits, ulong exp_bound, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_randtest_bounds(fmpq_mpoly_t A, flint_rand_t state, slong length, mp_limb_t coeff_bits, ulong * exp_bounds, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_randtest_bits(fmpq_mpoly_t A, flint_rand_t state, slong length, mp_limb_t coeff_bits, mp_limb_t exp_bits, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_add_fmpq(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_t c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_add_fmpz(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpz_t c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_add_ui(fmpq_mpoly_t A, const fmpq_mpoly_t B, ulong c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_add_si(fmpq_mpoly_t A, const fmpq_mpoly_t B, slong c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_sub_fmpq(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_t c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_sub_fmpz(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpz_t c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_sub_ui(fmpq_mpoly_t A, const fmpq_mpoly_t B, ulong c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_sub_si(fmpq_mpoly_t A, const fmpq_mpoly_t B, slong c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_add(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_t C, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_sub(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_t C, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_neg(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_scalar_mul_fmpq(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_t c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_scalar_mul_fmpz(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpz_t c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_scalar_mul_ui(fmpq_mpoly_t A, const fmpq_mpoly_t B, ulong c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_scalar_mul_si(fmpq_mpoly_t A, const fmpq_mpoly_t B, slong c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_scalar_div_fmpq(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_t c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_scalar_div_fmpz(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpz_t c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_scalar_div_ui(fmpq_mpoly_t A, const fmpq_mpoly_t B, ulong c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_scalar_div_si(fmpq_mpoly_t A, const fmpq_mpoly_t B, slong c, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_make_monic(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_derivative(fmpq_mpoly_t A, const fmpq_mpoly_t B, slong var, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_integral(fmpq_mpoly_t A, const fmpq_mpoly_t B, slong var, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_evaluate_all_fmpq(fmpq_t ev, const fmpq_mpoly_t A, fmpq * const * vals, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_evaluate_one_fmpq(fmpq_mpoly_t A, const fmpq_mpoly_t B, slong var, const fmpq_t val, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_compose_fmpq_poly(fmpq_poly_t A, const fmpq_mpoly_t B, fmpq_poly_struct * const * C, const fmpq_mpoly_ctx_t ctxB) noexcept + int fmpq_mpoly_compose_fmpq_mpoly(fmpq_mpoly_t A, const fmpq_mpoly_t B, fmpq_mpoly_struct * const * C, const fmpq_mpoly_ctx_t ctxB, const fmpq_mpoly_ctx_t ctxAC) noexcept + void fmpq_mpoly_compose_fmpq_mpoly_gen(fmpq_mpoly_t A, const fmpq_mpoly_t B, const slong * c, const fmpq_mpoly_ctx_t ctxB, const fmpq_mpoly_ctx_t ctxAC) noexcept + void fmpq_mpoly_mul(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_t C, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_pow_fmpz(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpz_t k, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_pow_ui(fmpq_mpoly_t A, const fmpq_mpoly_t B, ulong k, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_divides(fmpq_mpoly_t Q, const fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_div(fmpq_mpoly_t Q, const fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_divrem(fmpq_mpoly_t Q, fmpq_mpoly_t R, const fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_divrem_ideal(fmpq_mpoly_struct ** Q, fmpq_mpoly_t R, const fmpq_mpoly_t A, fmpq_mpoly_struct * const * B, slong len, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_content(fmpq_t g, const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_term_content(fmpq_mpoly_t M, const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_content_vars(fmpq_mpoly_t g, const fmpq_mpoly_t A, slong * vars, slong vars_length, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_gcd(fmpq_mpoly_t G, const fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_gcd_cofactors(fmpq_mpoly_t G, fmpq_mpoly_t Abar, fmpq_mpoly_t Bbar, const fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_gcd_brown(fmpq_mpoly_t G, const fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_gcd_hensel(fmpq_mpoly_t G, const fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_gcd_subresultant(fmpq_mpoly_t G, const fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_gcd_zippel(fmpq_mpoly_t G, const fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_gcd_zippel2(fmpq_mpoly_t G, const fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_resultant(fmpq_mpoly_t R, const fmpq_mpoly_t A, const fmpq_mpoly_t B, slong var, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_discriminant(fmpq_mpoly_t D, const fmpq_mpoly_t A, slong var, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_sqrt(fmpq_mpoly_t Q, const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + bint fmpq_mpoly_is_square(const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_univar_init(fmpq_mpoly_univar_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_univar_clear(fmpq_mpoly_univar_t A, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_univar_swap(fmpq_mpoly_univar_t A, fmpq_mpoly_univar_t B, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_to_univar(fmpq_mpoly_univar_t A, const fmpq_mpoly_t B, slong var, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_from_univar(fmpq_mpoly_t A, const fmpq_mpoly_univar_t B, slong var, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_univar_degree_fits_si(const fmpq_mpoly_univar_t A, const fmpq_mpoly_ctx_t ctx) noexcept + slong fmpq_mpoly_univar_length(const fmpq_mpoly_univar_t A, const fmpq_mpoly_ctx_t ctx) noexcept + slong fmpq_mpoly_univar_get_term_exp_si(fmpq_mpoly_univar_t A, slong i, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_univar_get_term_coeff(fmpq_mpoly_t c, const fmpq_mpoly_univar_t A, slong i, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_univar_swap_term_coeff(fmpq_mpoly_t c, fmpq_mpoly_univar_t A, slong i, const fmpq_mpoly_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fmpq_mpoly_factor.pxd b/src/sage/libs/flint/fmpq_mpoly_factor.pxd new file mode 100644 index 00000000000..c291de6946c --- /dev/null +++ b/src/sage/libs/flint/fmpq_mpoly_factor.pxd @@ -0,0 +1,28 @@ +# distutils: libraries = flint +# distutils: depends = flint/fmpq_mpoly_factor.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fmpq_mpoly_factor_init(fmpq_mpoly_factor_t f, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_factor_clear(fmpq_mpoly_factor_t f, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_factor_swap(fmpq_mpoly_factor_t f, fmpq_mpoly_factor_t g, const fmpq_mpoly_ctx_t ctx) noexcept + slong fmpq_mpoly_factor_length(const fmpq_mpoly_factor_t f, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_factor_get_constant_fmpq(fmpq_t c, const fmpq_mpoly_factor_t f, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_factor_get_base(fmpq_mpoly_t B, const fmpq_mpoly_factor_t f, slong i, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_factor_swap_base(fmpq_mpoly_t B, fmpq_mpoly_factor_t f, slong i, const fmpq_mpoly_ctx_t ctx) noexcept + slong fmpq_mpoly_factor_get_exp_si(fmpq_mpoly_factor_t f, slong i, const fmpq_mpoly_ctx_t ctx) noexcept + void fmpq_mpoly_factor_sort(fmpq_mpoly_factor_t f, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_factor_make_monic(fmpq_mpoly_factor_t f, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_factor_make_integral(fmpq_mpoly_factor_t f, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_factor_squarefree(fmpq_mpoly_factor_t f, const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept + int fmpq_mpoly_factor(fmpq_mpoly_factor_t f, const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fmpq_poly.pxd b/src/sage/libs/flint/fmpq_poly.pxd index afa16e5bbdd..f8622ebfd41 100644 --- a/src/sage/libs/flint/fmpq_poly.pxd +++ b/src/sage/libs/flint/fmpq_poly.pxd @@ -1,190 +1,239 @@ # distutils: libraries = flint # distutils: depends = flint/fmpq_poly.h -#***************************************************************************** -# Copyright (C) 2010 Sebastian Pancratz -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 2 of the License, or -# (at your option) any later version. -# http://www.gnu.org/licenses/ -#***************************************************************************** - -from sage.libs.gmp.types cimport mpz_t, mpq_t +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * from sage.libs.flint.types cimport * -from sage.libs.flint.fmpz_vec cimport _fmpz_vec_max_limbs -# flint/fmpq_poly.h cdef extern from "flint_wrap.h": - # Memory management - void fmpq_poly_init(fmpq_poly_t) - - void fmpq_poly_init2(fmpq_poly_t, slong) - void fmpq_poly_realloc(fmpq_poly_t, slong) - - void fmpq_poly_fit_length(fmpq_poly_t, slong) - - void fmpq_poly_clear(fmpq_poly_t) - - void fmpq_poly_canonicalise(fmpq_poly_t) - int fmpq_poly_is_canonical(const fmpq_poly_t) - - void _fmpq_poly_set_length(fmpq_poly_t, slong) - void _fmpq_poly_normalise(fmpq_poly_t) - - # Polynomial parameters - slong fmpq_poly_degree(const fmpq_poly_t) - ulong fmpq_poly_length(const fmpq_poly_t) - - # Accessing the numerator and denominator - fmpz *fmpq_poly_numref(fmpq_poly_t) - fmpz *fmpq_poly_denref(fmpq_poly_t) - - void fmpq_poly_get_numerator(fmpz_poly_t, const fmpq_poly_t) - - # Assignment, swap, negation - void fmpq_poly_set(fmpq_poly_t, const fmpq_poly_t) - void fmpq_poly_set_si(fmpq_poly_t, slong) - void fmpq_poly_set_ui(fmpq_poly_t, ulong) - void fmpq_poly_set_fmpz(fmpq_poly_t, const fmpz_t) - void fmpq_poly_set_fmpq(fmpq_poly_t, const fmpq_t) - void fmpq_poly_set_fmpz_poly(fmpq_poly_t, const fmpz_poly_t) - - void fmpq_poly_set_str(fmpq_poly_t, const char *) - char *fmpq_poly_get_str(const fmpq_poly_t) - char *fmpq_poly_get_str_pretty(const fmpq_poly_t, const char *) - - void fmpq_poly_zero(fmpq_poly_t) - void fmpq_poly_one(fmpq_poly_t) - - void fmpq_poly_neg(fmpq_poly_t, const fmpq_poly_t) - void fmpq_poly_inv(fmpq_poly_t, const fmpq_poly_t) - - void fmpq_poly_swap(fmpq_poly_t, fmpq_poly_t) - void fmpq_poly_truncate(fmpq_poly_t, slong) - void fmpq_poly_get_slice(fmpq_poly_t, const fmpq_poly_t, slong, slong) - void fmpq_poly_reverse(fmpq_poly_t, const fmpq_poly_t, slong) - - void fmpq_poly_get_coeff_fmpq(fmpq_t, const fmpq_poly_t, slong) - void fmpq_poly_get_coeff_si(slong, const fmpq_poly_t, slong) - void fmpq_poly_get_coeff_ui(ulong, const fmpq_poly_t, slong) - - void fmpq_poly_set_coeff_si(fmpq_poly_t, slong, slong) - void fmpq_poly_set_coeff_ui(fmpq_poly_t, slong, ulong) - void fmpq_poly_set_coeff_fmpz(fmpq_poly_t, slong, const fmpz_t) - void fmpq_poly_set_coeff_fmpq(fmpq_poly_t, slong, const fmpq_t) - - # Comparison - int fmpq_poly_equal(const fmpq_poly_t, const fmpq_poly_t) - int fmpq_poly_cmp(const fmpq_poly_t, const fmpq_poly_t) - int fmpq_poly_is_one(const fmpq_poly_t) - int fmpq_poly_is_zero(const fmpq_poly_t) - - # Addition and subtraction - void fmpq_poly_add(fmpq_poly_t, const fmpq_poly_t, const fmpq_poly_t) - void fmpq_poly_sub(fmpq_poly_t, const fmpq_poly_t, const fmpq_poly_t) - - void fmpq_poly_add_can( - fmpq_poly_t, const fmpq_poly_t, const fmpq_poly_t, int) - void fmpq_poly_sub_can( - fmpq_poly_t, const fmpq_poly_t, const fmpq_poly_t, int) - - # Scalar multiplication and division - void fmpq_poly_scalar_mul_si(fmpq_poly_t, const fmpq_poly_t, slong) - void fmpq_poly_scalar_mul_ui(fmpq_poly_t, const fmpq_poly_t, ulong) - void fmpq_poly_scalar_mul_fmpz( - fmpq_poly_t, const fmpq_poly_t, const fmpz_t) - void fmpq_poly_scalar_mul_fmpq( - fmpq_poly_t, const fmpq_poly_t, const fmpq_t) - - void fmpq_poly_scalar_div_si(fmpq_poly_t, const fmpq_poly_t, slong) - void fmpq_poly_scalar_div_ui(fmpq_poly_t, const fmpq_poly_t, ulong) - void fmpq_poly_scalar_div_fmpz( - fmpq_poly_t, const fmpq_poly_t, const fmpz_t) - void fmpq_poly_scalar_div_fmpq( - fmpq_poly_t, const fmpq_poly_t, const fmpq_t) - - # Multiplication - void fmpq_poly_mul(fmpq_poly_t, const fmpq_poly_t, const fmpq_poly_t) - void fmpq_poly_mullow(fmpq_poly_t, const fmpq_poly_t, const fmpq_poly_t, slong) - - void fmpq_poly_addmul(fmpq_poly_t, const fmpq_poly_t, const fmpq_poly_t) - void fmpq_poly_submul(fmpq_poly_t, const fmpq_poly_t, const fmpq_poly_t) - - # Powering - void fmpq_poly_pow(fmpq_poly_t, const fmpq_poly_t, ulong) - - # Shifting - void fmpq_poly_shift_left(fmpq_poly_t, const fmpq_poly_t, slong) - void fmpq_poly_shift_right(fmpq_poly_t, const fmpq_poly_t, slong) - - # Euclidean division - void fmpq_poly_divrem( - fmpq_poly_t, fmpq_poly_t, const fmpq_poly_t, const fmpq_poly_t) - void fmpq_poly_div(fmpq_poly_t, const fmpq_poly_t, const fmpq_poly_t) - void fmpq_poly_rem(fmpq_poly_t, const fmpq_poly_t, const fmpq_poly_t) - - # Greatest common divisor - void fmpq_poly_gcd(fmpq_poly_t, const fmpq_poly_t, const fmpq_poly_t) - void fmpq_poly_xgcd( - fmpq_poly_t, fmpq_poly_t, fmpq_poly_t, - const fmpq_poly_t, const fmpq_poly_t) - - void fmpq_poly_lcm(fmpq_poly_t, const fmpq_poly_t, const fmpq_poly_t) - - void fmpq_poly_resultant(fmpq_t, const fmpq_poly_t, const fmpq_poly_t) - - # Power series division - void fmpq_poly_inv_series_newton(fmpq_poly_t, const fmpq_poly_t, slong) - void fmpq_poly_inv_series(fmpq_poly_t, const fmpq_poly_t, slong) - void fmpq_poly_div_series( - fmpq_poly_t, const fmpq_poly_t, const fmpq_poly_t, slong) - - # Derivative and integral - void fmpq_poly_derivative(fmpq_poly_t, const fmpq_poly_t) - void fmpq_poly_integral(fmpq_poly_t, const fmpq_poly_t) - - # Evaluation - void fmpq_poly_evaluate_fmpz(fmpq_t, const fmpq_poly_t, const fmpz_t) - void fmpq_poly_evaluate_fmpq(fmpq_t, const fmpq_poly_t, const fmpq_t) - - # Composition - void fmpq_poly_compose(fmpq_poly_t, const fmpq_poly_t, const fmpq_poly_t) - void fmpq_poly_rescale(fmpq_poly_t, const fmpq_poly_t, const fmpq_t) - - # Revert - void fmpq_poly_revert_series(fmpq_poly_t, fmpq_poly_t, unsigned long) - - # Gaussian content - void fmpq_poly_content(fmpq_t, const fmpq_poly_t) - void fmpq_poly_primitive_part(fmpq_poly_t, const fmpq_poly_t) - - int fmpq_poly_is_monic(const fmpq_poly_t) - void fmpq_poly_make_monic(fmpq_poly_t, const fmpq_poly_t) - - # Transcendental functions - void fmpq_poly_log_series(fmpq_poly_t, const fmpq_poly_t, slong) - void fmpq_poly_exp_series(fmpq_poly_t, const fmpq_poly_t, slong) - void fmpq_poly_atan_series(fmpq_poly_t, const fmpq_poly_t, slong) - void fmpq_poly_atanh_series(fmpq_poly_t, const fmpq_poly_t, slong) - void fmpq_poly_asin_series(fmpq_poly_t, const fmpq_poly_t, slong) - void fmpq_poly_asinh_series(fmpq_poly_t, const fmpq_poly_t, slong) - void fmpq_poly_tan_series(fmpq_poly_t, const fmpq_poly_t, slong) - void fmpq_poly_sin_series(fmpq_poly_t, const fmpq_poly_t, slong) - void fmpq_poly_cos_series(fmpq_poly_t, const fmpq_poly_t, slong) - void fmpq_poly_sinh_series(fmpq_poly_t, const fmpq_poly_t, slong) - void fmpq_poly_cosh_series(fmpq_poly_t, const fmpq_poly_t, slong) - void fmpq_poly_tanh_series(fmpq_poly_t, const fmpq_poly_t, slong) - -# since the fmpq_poly header seems to be lacking this inline function -cdef inline sage_fmpq_poly_max_limbs(const fmpq_poly_t poly) noexcept: - return _fmpz_vec_max_limbs(fmpq_poly_numref(poly), fmpq_poly_length(poly)) - -# functions removed from flint but still needed in sage -cdef void fmpq_poly_scalar_mul_mpz(fmpq_poly_t, const fmpq_poly_t, const mpz_t) -cdef void fmpq_poly_scalar_mul_mpq(fmpq_poly_t, const fmpq_poly_t, const mpq_t) -cdef void fmpq_poly_set_coeff_mpq(fmpq_poly_t, slong, const mpq_t) -cdef void fmpq_poly_get_coeff_mpq(mpq_t, const fmpq_poly_t, slong) -cdef void fmpq_poly_set_mpz(fmpq_poly_t, const mpz_t) -cdef void fmpq_poly_set_mpq(fmpq_poly_t, const mpq_t) + void fmpq_poly_init(fmpq_poly_t poly) noexcept + void fmpq_poly_init2(fmpq_poly_t poly, slong alloc) noexcept + void fmpq_poly_realloc(fmpq_poly_t poly, slong alloc) noexcept + void fmpq_poly_fit_length(fmpq_poly_t poly, slong len) noexcept + void _fmpq_poly_set_length(fmpq_poly_t poly, slong len) noexcept + void fmpq_poly_clear(fmpq_poly_t poly) noexcept + void _fmpq_poly_normalise(fmpq_poly_t poly) noexcept + void _fmpq_poly_canonicalise(fmpz * poly, fmpz_t den, slong len) noexcept + void fmpq_poly_canonicalise(fmpq_poly_t poly) noexcept + bint _fmpq_poly_is_canonical(const fmpz * poly, const fmpz_t den, slong len) noexcept + bint fmpq_poly_is_canonical(const fmpq_poly_t poly) noexcept + slong fmpq_poly_degree(const fmpq_poly_t poly) noexcept + slong fmpq_poly_length(const fmpq_poly_t poly) noexcept + fmpz * fmpq_poly_numref(fmpq_poly_t poly) noexcept + fmpz_t fmpq_poly_denref(fmpq_poly_t poly) noexcept + void fmpq_poly_get_numerator(fmpz_poly_t res, const fmpq_poly_t poly) noexcept + void fmpq_poly_get_denominator(fmpz_t den, const fmpq_poly_t poly) noexcept + void fmpq_poly_randtest(fmpq_poly_t f, flint_rand_t state, slong len, flint_bitcnt_t bits) noexcept + void fmpq_poly_randtest_unsigned(fmpq_poly_t f, flint_rand_t state, slong len, flint_bitcnt_t bits) noexcept + void fmpq_poly_randtest_not_zero(fmpq_poly_t f, flint_rand_t state, slong len, flint_bitcnt_t bits) noexcept + void fmpq_poly_set(fmpq_poly_t poly1, const fmpq_poly_t poly2) noexcept + void fmpq_poly_set_si(fmpq_poly_t poly, slong x) noexcept + void fmpq_poly_set_ui(fmpq_poly_t poly, ulong x) noexcept + void fmpq_poly_set_fmpz(fmpq_poly_t poly, const fmpz_t x) noexcept + void fmpq_poly_set_fmpq(fmpq_poly_t poly, const fmpq_t x) noexcept + void fmpq_poly_set_fmpz_poly(fmpq_poly_t rop, const fmpz_poly_t op) noexcept + void fmpq_poly_set_nmod_poly(fmpq_poly_t rop, const nmod_poly_t op) noexcept + void fmpq_poly_get_nmod_poly(nmod_poly_t rop, const fmpq_poly_t op) noexcept + void fmpq_poly_get_nmod_poly_den(nmod_poly_t rop, const fmpq_poly_t op, int den) noexcept + int _fmpq_poly_set_str(fmpz * poly, fmpz_t den, const char * str, slong len) noexcept + int fmpq_poly_set_str(fmpq_poly_t poly, const char * str) noexcept + char * fmpq_poly_get_str(const fmpq_poly_t poly) noexcept + char * fmpq_poly_get_str_pretty(const fmpq_poly_t poly, const char * var) noexcept + void fmpq_poly_zero(fmpq_poly_t poly) noexcept + void fmpq_poly_one(fmpq_poly_t poly) noexcept + void fmpq_poly_neg(fmpq_poly_t poly1, const fmpq_poly_t poly2) noexcept + void fmpq_poly_inv(fmpq_poly_t poly1, const fmpq_poly_t poly2) noexcept + void fmpq_poly_swap(fmpq_poly_t poly1, fmpq_poly_t poly2) noexcept + void fmpq_poly_truncate(fmpq_poly_t poly, slong n) noexcept + void fmpq_poly_set_trunc(fmpq_poly_t res, const fmpq_poly_t poly, slong n) noexcept + void fmpq_poly_get_slice(fmpq_poly_t rop, const fmpq_poly_t op, slong i, slong j) noexcept + void fmpq_poly_reverse(fmpq_poly_t res, const fmpq_poly_t poly, slong n) noexcept + void fmpq_poly_get_coeff_fmpz(fmpz_t x, const fmpq_poly_t poly, slong n) noexcept + void fmpq_poly_get_coeff_fmpq(fmpq_t x, const fmpq_poly_t poly, slong n) noexcept + void fmpq_poly_set_coeff_si(fmpq_poly_t poly, slong n, slong x) noexcept + void fmpq_poly_set_coeff_ui(fmpq_poly_t poly, slong n, ulong x) noexcept + void fmpq_poly_set_coeff_fmpz(fmpq_poly_t poly, slong n, const fmpz_t x) noexcept + void fmpq_poly_set_coeff_fmpq(fmpq_poly_t poly, slong n, const fmpq_t x) noexcept + bint fmpq_poly_equal(const fmpq_poly_t poly1, const fmpq_poly_t poly2) noexcept + bint _fmpq_poly_equal_trunc(const fmpz * poly1, const fmpz_t den1, slong len1, const fmpz * poly2, const fmpz_t den2, slong len2, slong n) noexcept + bint fmpq_poly_equal_trunc(const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n) noexcept + int _fmpq_poly_cmp(const fmpz * lpoly, const fmpz_t lden, const fmpz * rpoly, const fmpz_t rden, slong len) noexcept + int fmpq_poly_cmp(const fmpq_poly_t left, const fmpq_poly_t right) noexcept + bint fmpq_poly_is_one(const fmpq_poly_t poly) noexcept + bint fmpq_poly_is_zero(const fmpq_poly_t poly) noexcept + bint fmpq_poly_is_gen(const fmpq_poly_t poly) noexcept + void _fmpq_poly_add(fmpz * rpoly, fmpz_t rden, const fmpz * poly1, const fmpz_t den1, slong len1, const fmpz * poly2, const fmpz_t den2, slong len2) noexcept + void _fmpq_poly_add_can(fmpz * rpoly, fmpz_t rden, const fmpz * poly1, const fmpz_t den1, slong len1, const fmpz * poly2, const fmpz_t den2, slong len2, int can) noexcept + void fmpq_poly_add(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2) noexcept + void fmpq_poly_add_can(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, int can) noexcept + void _fmpq_poly_add_series(fmpz * rpoly, fmpz_t rden, const fmpz * poly1, const fmpz_t den1, slong len1, const fmpz * poly2, const fmpz_t den2, slong len2, slong n) noexcept + void _fmpq_poly_add_series_can(fmpz * rpoly, fmpz_t rden, const fmpz * poly1, const fmpz_t den1, slong len1, const fmpz * poly2, const fmpz_t den2, slong len2, slong n, int can) noexcept + void fmpq_poly_add_series(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n) noexcept + void fmpq_poly_add_series_can(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n, int can) noexcept + void _fmpq_poly_sub(fmpz * rpoly, fmpz_t rden, const fmpz * poly1, const fmpz_t den1, slong len1, const fmpz * poly2, const fmpz_t den2, slong len2) noexcept + void _fmpq_poly_sub_can(fmpz * rpoly, fmpz_t rden, const fmpz * poly1, const fmpz_t den1, slong len1, const fmpz * poly2, const fmpz_t den2, slong len2, int can) noexcept + void fmpq_poly_sub(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2) noexcept + void fmpq_poly_sub_can(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, int can) noexcept + void _fmpq_poly_sub_series(fmpz * rpoly, fmpz_t rden, const fmpz * poly1, const fmpz_t den1, slong len1, const fmpz * poly2, const fmpz_t den2, slong len2, slong n) noexcept + void _fmpq_poly_sub_series_can(fmpz * rpoly, fmpz_t rden, const fmpz * poly1, const fmpz_t den1, slong len1, const fmpz * poly2, const fmpz_t den2, slong len2, slong n, int can) noexcept + void fmpq_poly_sub_series(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n) noexcept + void fmpq_poly_sub_series_can(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n, int can) noexcept + void _fmpq_poly_scalar_mul_si(fmpz * rpoly, fmpz_t rden, const fmpz * poly, const fmpz_t den, slong len, slong c) noexcept + void _fmpq_poly_scalar_mul_ui(fmpz * rpoly, fmpz_t rden, const fmpz * poly, const fmpz_t den, slong len, ulong c) noexcept + void _fmpq_poly_scalar_mul_fmpz(fmpz * rpoly, fmpz_t rden, const fmpz * poly, const fmpz_t den, slong len, const fmpz_t c) noexcept + void _fmpq_poly_scalar_mul_fmpq(fmpz * rpoly, fmpz_t rden, const fmpz * poly, const fmpz_t den, slong len, const fmpz_t r, const fmpz_t s) noexcept + void fmpq_poly_scalar_mul_fmpq(fmpq_poly_t rop, const fmpq_poly_t op, const fmpq_t c) noexcept + void fmpq_poly_scalar_mul_si(fmpq_poly_t rop, const fmpq_poly_t op, slong c) noexcept + void fmpq_poly_scalar_mul_ui(fmpq_poly_t rop, const fmpq_poly_t op, ulong c) noexcept + void fmpq_poly_scalar_mul_fmpz(fmpq_poly_t rop, const fmpq_poly_t op, const fmpz_t c) noexcept + void _fmpq_poly_scalar_div_fmpz(fmpz * rpoly, fmpz_t rden, const fmpz * poly, const fmpz_t den, slong len, const fmpz_t c) noexcept + void _fmpq_poly_scalar_div_si(fmpz * rpoly, fmpz_t rden, const fmpz * poly, const fmpz_t den, slong len, slong c) noexcept + void _fmpq_poly_scalar_div_ui(fmpz * rpoly, fmpz_t rden, const fmpz * poly, const fmpz_t den, slong len, ulong c) noexcept + void _fmpq_poly_scalar_div_fmpq(fmpz * rpoly, fmpz_t rden, const fmpz * poly, const fmpz_t den, slong len, const fmpz_t r, const fmpz_t s) noexcept + void fmpq_poly_scalar_div_si(fmpq_poly_t rop, const fmpq_poly_t op, slong c) noexcept + void fmpq_poly_scalar_div_ui(fmpq_poly_t rop, const fmpq_poly_t op, ulong c) noexcept + void fmpq_poly_scalar_div_fmpz(fmpq_poly_t rop, const fmpq_poly_t op, const fmpz_t c) noexcept + void fmpq_poly_scalar_div_fmpq(fmpq_poly_t rop, const fmpq_poly_t op, const fmpq_t c) noexcept + void _fmpq_poly_mul(fmpz * rpoly, fmpz_t rden, const fmpz * poly1, const fmpz_t den1, slong len1, const fmpz * poly2, const fmpz_t den2, slong len2) noexcept + void fmpq_poly_mul(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2) noexcept + void _fmpq_poly_mullow(fmpz * rpoly, fmpz_t rden, const fmpz * poly1, const fmpz_t den1, slong len1, const fmpz * poly2, const fmpz_t den2, slong len2, slong n) noexcept + void fmpq_poly_mullow(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n) noexcept + void fmpq_poly_addmul(fmpq_poly_t rop, const fmpq_poly_t op1, const fmpq_poly_t op2) noexcept + void fmpq_poly_submul(fmpq_poly_t rop, const fmpq_poly_t op1, const fmpq_poly_t op2) noexcept + void _fmpq_poly_pow(fmpz * rpoly, fmpz_t rden, const fmpz * poly, const fmpz_t den, slong len, ulong e) noexcept + void fmpq_poly_pow(fmpq_poly_t res, const fmpq_poly_t poly, ulong e) noexcept + void _fmpq_poly_pow_trunc(fmpz * res, fmpz_t rden, const fmpz * f, const fmpz_t fden, slong flen, ulong exp, slong len) noexcept + void fmpq_poly_pow_trunc(fmpq_poly_t res, const fmpq_poly_t poly, ulong e, slong n) noexcept + void fmpq_poly_shift_left(fmpq_poly_t res, const fmpq_poly_t poly, slong n) noexcept + void fmpq_poly_shift_right(fmpq_poly_t res, const fmpq_poly_t poly, slong n) noexcept + void _fmpq_poly_divrem(fmpz * Q, fmpz_t q, fmpz * R, fmpz_t r, const fmpz * A, const fmpz_t a, slong lenA, const fmpz * B, const fmpz_t b, slong lenB, const fmpz_preinvn_t inv) noexcept + void fmpq_poly_divrem(fmpq_poly_t Q, fmpq_poly_t R, const fmpq_poly_t poly1, const fmpq_poly_t poly2) noexcept + void _fmpq_poly_div(fmpz * Q, fmpz_t q, const fmpz * A, const fmpz_t a, slong lenA, const fmpz * B, const fmpz_t b, slong lenB, const fmpz_preinvn_t inv) noexcept + void fmpq_poly_div(fmpq_poly_t Q, const fmpq_poly_t poly1, const fmpq_poly_t poly2) noexcept + void _fmpq_poly_rem(fmpz * R, fmpz_t r, const fmpz * A, const fmpz_t a, slong lenA, const fmpz * B, const fmpz_t b, slong lenB, const fmpz_preinvn_t inv) noexcept + void fmpq_poly_rem(fmpq_poly_t R, const fmpq_poly_t poly1, const fmpq_poly_t poly2) noexcept + fmpq_poly_struct * _fmpq_poly_powers_precompute(const fmpz * B, const fmpz_t denB, slong len) noexcept + void fmpq_poly_powers_precompute(fmpq_poly_powers_precomp_t pinv, fmpq_poly_t poly) noexcept + void _fmpq_poly_powers_clear(fmpq_poly_struct * powers, slong len) noexcept + void fmpq_poly_powers_clear(fmpq_poly_powers_precomp_t pinv) noexcept + void _fmpq_poly_rem_powers_precomp(fmpz * A, fmpz_t denA, slong m, const fmpz * B, const fmpz_t denB, slong n, fmpq_poly_struct * const powers) noexcept + void fmpq_poly_rem_powers_precomp(fmpq_poly_t R, const fmpq_poly_t A, const fmpq_poly_t B, const fmpq_poly_powers_precomp_t B_inv) noexcept + int _fmpq_poly_divides(fmpz * qpoly, fmpz_t qden, const fmpz * poly1, const fmpz_t den1, slong len1, const fmpz * poly2, const fmpz_t den2, slong len2) noexcept + int fmpq_poly_divides(fmpq_poly_t q, const fmpq_poly_t poly1, const fmpq_poly_t poly2) noexcept + slong fmpq_poly_remove(fmpq_poly_t q, const fmpq_poly_t poly1, const fmpq_poly_t poly2) noexcept + void _fmpq_poly_inv_series_newton(fmpz * rpoly, fmpz_t rden, const fmpz * poly, const fmpz_t den, slong len, slong n) noexcept + void fmpq_poly_inv_series_newton(fmpq_poly_t res, const fmpq_poly_t poly, slong n) noexcept + void _fmpq_poly_inv_series(fmpz * rpoly, fmpz_t rden, const fmpz * poly, const fmpz_t den, slong den_len, slong n) noexcept + void fmpq_poly_inv_series(fmpq_poly_t res, const fmpq_poly_t poly, slong n) noexcept + void _fmpq_poly_div_series(fmpz * Q, fmpz_t denQ, const fmpz * A, const fmpz_t denA, slong lenA, const fmpz * B, const fmpz_t denB, slong lenB, slong n) noexcept + void fmpq_poly_div_series(fmpq_poly_t Q, const fmpq_poly_t A, const fmpq_poly_t B, slong n) noexcept + void _fmpq_poly_gcd(fmpz * G, fmpz_t denG, const fmpz * A, slong lenA, const fmpz * B, slong lenB) noexcept + void fmpq_poly_gcd(fmpq_poly_t G, const fmpq_poly_t A, const fmpq_poly_t B) noexcept + void _fmpq_poly_xgcd(fmpz * G, fmpz_t denG, fmpz * S, fmpz_t denS, fmpz * T, fmpz_t denT, const fmpz * A, const fmpz_t denA, slong lenA, const fmpz * B, const fmpz_t denB, slong lenB) noexcept + void fmpq_poly_xgcd(fmpq_poly_t G, fmpq_poly_t S, fmpq_poly_t T, const fmpq_poly_t A, const fmpq_poly_t B) noexcept + void _fmpq_poly_lcm(fmpz * L, fmpz_t denL, const fmpz * A, slong lenA, const fmpz * B, slong lenB) noexcept + void fmpq_poly_lcm(fmpq_poly_t L, const fmpq_poly_t A, const fmpq_poly_t B) noexcept + void _fmpq_poly_resultant(fmpz_t rnum, fmpz_t rden, const fmpz * poly1, const fmpz_t den1, slong len1, const fmpz * poly2, const fmpz_t den2, slong len2) noexcept + void fmpq_poly_resultant(fmpq_t r, const fmpq_poly_t f, const fmpq_poly_t g) noexcept + void fmpq_poly_resultant_div(fmpq_t r, const fmpq_poly_t f, const fmpq_poly_t g, const fmpz_t div, slong nbits) noexcept + void _fmpq_poly_derivative(fmpz * rpoly, fmpz_t rden, const fmpz * poly, const fmpz_t den, slong len) noexcept + void fmpq_poly_derivative(fmpq_poly_t res, const fmpq_poly_t poly) noexcept + void _fmpq_poly_nth_derivative(fmpz * rpoly, fmpz_t rden, const fmpz * poly, const fmpz_t den, ulong n, slong len) noexcept + void fmpq_poly_nth_derivative(fmpq_poly_t res, const fmpq_poly_t poly, ulong n) noexcept + void _fmpq_poly_integral(fmpz * rpoly, fmpz_t rden, const fmpz * poly, const fmpz_t den, slong len) noexcept + void fmpq_poly_integral(fmpq_poly_t res, const fmpq_poly_t poly) noexcept + void _fmpq_poly_sqrt_series(fmpz * g, fmpz_t gden, const fmpz * f, const fmpz_t fden, slong flen, slong n) noexcept + void fmpq_poly_sqrt_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) noexcept + void _fmpq_poly_invsqrt_series(fmpz * g, fmpz_t gden, const fmpz * f, const fmpz_t fden, slong flen, slong n) noexcept + void fmpq_poly_invsqrt_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) noexcept + void _fmpq_poly_power_sums(fmpz * res, fmpz_t rden, const fmpz * poly, slong len, slong n) noexcept + void fmpq_poly_power_sums(fmpq_poly_t res, const fmpq_poly_t poly, slong n) noexcept + void _fmpq_poly_power_sums_to_poly(fmpz * res, const fmpz * poly, const fmpz_t den, slong len) noexcept + void fmpq_poly_power_sums_to_fmpz_poly(fmpz_poly_t res, const fmpq_poly_t Q) noexcept + void fmpq_poly_power_sums_to_poly(fmpq_poly_t res, const fmpq_poly_t Q) noexcept + void _fmpq_poly_log_series(fmpz * g, fmpz_t gden, const fmpz * f, const fmpz_t fden, slong flen, slong n) noexcept + void fmpq_poly_log_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) noexcept + void _fmpq_poly_exp_series(fmpz * g, fmpz_t gden, const fmpz * h, const fmpz_t hden, slong hlen, slong n) noexcept + void fmpq_poly_exp_series(fmpq_poly_t res, const fmpq_poly_t h, slong n) noexcept + void _fmpq_poly_exp_expinv_series(fmpz * res1, fmpz_t res1den, fmpz * res2, fmpz_t res2den, const fmpz * h, const fmpz_t hden, slong hlen, slong n) noexcept + void fmpq_poly_exp_expinv_series(fmpq_poly_t res1, fmpq_poly_t res2, const fmpq_poly_t h, slong n) noexcept + void _fmpq_poly_atan_series(fmpz * g, fmpz_t gden, const fmpz * f, const fmpz_t fden, slong flen, slong n) noexcept + void fmpq_poly_atan_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) noexcept + void _fmpq_poly_atanh_series(fmpz * g, fmpz_t gden, const fmpz * f, const fmpz_t fden, slong flen, slong n) noexcept + void fmpq_poly_atanh_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) noexcept + void _fmpq_poly_asin_series(fmpz * g, fmpz_t gden, const fmpz * f, const fmpz_t fden, slong flen, slong n) noexcept + void fmpq_poly_asin_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) noexcept + void _fmpq_poly_asinh_series(fmpz * g, fmpz_t gden, const fmpz * f, const fmpz_t fden, slong flen, slong n) noexcept + void fmpq_poly_asinh_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) noexcept + void _fmpq_poly_tan_series(fmpz * g, fmpz_t gden, const fmpz * f, const fmpz_t fden, slong flen, slong n) noexcept + void fmpq_poly_tan_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) noexcept + void _fmpq_poly_sin_series(fmpz * g, fmpz_t gden, const fmpz * f, const fmpz_t fden, slong flen, slong n) noexcept + void fmpq_poly_sin_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) noexcept + void _fmpq_poly_cos_series(fmpz * g, fmpz_t gden, const fmpz * f, const fmpz_t fden, slong flen, slong n) noexcept + void fmpq_poly_cos_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) noexcept + void _fmpq_poly_sin_cos_series(fmpz * s, fmpz_t sden, fmpz * c, fmpz_t cden, const fmpz * f, const fmpz_t fden, slong flen, slong n) noexcept + void fmpq_poly_sin_cos_series(fmpq_poly_t res1, fmpq_poly_t res2, const fmpq_poly_t f, slong n) noexcept + void _fmpq_poly_sinh_series(fmpz * g, fmpz_t gden, const fmpz * f, const fmpz_t fden, slong flen, slong n) noexcept + void fmpq_poly_sinh_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) noexcept + void _fmpq_poly_cosh_series(fmpz * g, fmpz_t gden, const fmpz * f, const fmpz_t fden, slong flen, slong n) noexcept + void fmpq_poly_cosh_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) noexcept + void _fmpq_poly_sinh_cosh_series(fmpz * s, fmpz_t sden, fmpz * c, fmpz_t cden, const fmpz * f, const fmpz_t fden, slong flen, slong n) noexcept + void fmpq_poly_sinh_cosh_series(fmpq_poly_t res1, fmpq_poly_t res2, const fmpq_poly_t f, slong n) noexcept + void _fmpq_poly_tanh_series(fmpz * g, fmpz_t gden, const fmpz * f, const fmpz_t fden, slong flen, slong n) noexcept + void fmpq_poly_tanh_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) noexcept + void _fmpq_poly_legendre_p(fmpz * coeffs, fmpz_t den, ulong n) noexcept + void fmpq_poly_legendre_p(fmpq_poly_t poly, ulong n) noexcept + void _fmpq_poly_laguerre_l(fmpz * coeffs, fmpz_t den, ulong n) noexcept + void fmpq_poly_laguerre_l(fmpq_poly_t poly, ulong n) noexcept + void _fmpq_poly_gegenbauer_c(fmpz * coeffs, fmpz_t den, ulong n, const fmpq_t a) noexcept + void fmpq_poly_gegenbauer_c(fmpq_poly_t poly, ulong n, const fmpq_t a) noexcept + void _fmpq_poly_evaluate_fmpz(fmpz_t rnum, fmpz_t rden, const fmpz * poly, const fmpz_t den, slong len, const fmpz_t a) noexcept + void fmpq_poly_evaluate_fmpz(fmpq_t res, const fmpq_poly_t poly, const fmpz_t a) noexcept + void _fmpq_poly_evaluate_fmpq(fmpz_t rnum, fmpz_t rden, const fmpz * poly, const fmpz_t den, slong len, const fmpz_t anum, const fmpz_t aden) noexcept + void fmpq_poly_evaluate_fmpq(fmpq_t res, const fmpq_poly_t poly, const fmpq_t a) noexcept + void _fmpq_poly_interpolate_fmpz_vec(fmpz * poly, fmpz_t den, const fmpz * xs, const fmpz * ys, slong n) noexcept + void fmpq_poly_interpolate_fmpz_vec(fmpq_poly_t poly, const fmpz * xs, const fmpz * ys, slong n) noexcept + void _fmpq_poly_compose(fmpz * res, fmpz_t den, const fmpz * poly1, const fmpz_t den1, slong len1, const fmpz * poly2, const fmpz_t den2, slong len2) noexcept + void fmpq_poly_compose(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2) noexcept + void _fmpq_poly_rescale(fmpz * res, fmpz_t denr, const fmpz * poly, const fmpz_t den, slong len, const fmpz_t anum, const fmpz_t aden) noexcept + void fmpq_poly_rescale(fmpq_poly_t res, const fmpq_poly_t poly, const fmpq_t a) noexcept + void _fmpq_poly_compose_series_horner(fmpz * res, fmpz_t den, const fmpz * poly1, const fmpz_t den1, slong len1, const fmpz * poly2, const fmpz_t den2, slong len2, slong n) noexcept + void fmpq_poly_compose_series_horner(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n) noexcept + void _fmpq_poly_compose_series_brent_kung(fmpz * res, fmpz_t den, const fmpz * poly1, const fmpz_t den1, slong len1, const fmpz * poly2, const fmpz_t den2, slong len2, slong n) noexcept + void fmpq_poly_compose_series_brent_kung(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n) noexcept + void _fmpq_poly_compose_series(fmpz * res, fmpz_t den, const fmpz * poly1, const fmpz_t den1, slong len1, const fmpz * poly2, const fmpz_t den2, slong len2, slong n) noexcept + void fmpq_poly_compose_series(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n) noexcept + void _fmpq_poly_revert_series_lagrange(fmpz * res, fmpz_t den, const fmpz * poly1, const fmpz_t den1, slong len1, slong n) noexcept + void fmpq_poly_revert_series_lagrange(fmpq_poly_t res, const fmpq_poly_t poly, slong n) noexcept + void _fmpq_poly_revert_series_lagrange_fast(fmpz * res, fmpz_t den, const fmpz * poly1, const fmpz_t den1, slong len1, slong n) noexcept + void fmpq_poly_revert_series_lagrange_fast(fmpq_poly_t res, const fmpq_poly_t poly, slong n) noexcept + void _fmpq_poly_revert_series_newton(fmpz * res, fmpz_t den, const fmpz * poly1, const fmpz_t den1, slong len1, slong n) noexcept + void fmpq_poly_revert_series_newton(fmpq_poly_t res, const fmpq_poly_t poly, slong n) noexcept + void _fmpq_poly_revert_series(fmpz * res, fmpz_t den, const fmpz * poly1, const fmpz_t den1, slong len1, slong n) noexcept + void fmpq_poly_revert_series(fmpq_poly_t res, const fmpq_poly_t poly, slong n) noexcept + void _fmpq_poly_content(fmpq_t res, const fmpz * poly, const fmpz_t den, slong len) noexcept + void fmpq_poly_content(fmpq_t res, const fmpq_poly_t poly) noexcept + void _fmpq_poly_primitive_part(fmpz * rpoly, fmpz_t rden, const fmpz * poly, const fmpz_t den, slong len) noexcept + void fmpq_poly_primitive_part(fmpq_poly_t res, const fmpq_poly_t poly) noexcept + bint _fmpq_poly_is_monic(const fmpz * poly, const fmpz_t den, slong len) noexcept + bint fmpq_poly_is_monic(const fmpq_poly_t poly) noexcept + void _fmpq_poly_make_monic(fmpz * rpoly, fmpz_t rden, const fmpz * poly, const fmpz_t den, slong len) noexcept + void fmpq_poly_make_monic(fmpq_poly_t res, const fmpq_poly_t poly) noexcept + bint fmpq_poly_is_squarefree(const fmpq_poly_t poly) noexcept + int _fmpq_poly_print(const fmpz * poly, const fmpz_t den, slong len) noexcept + int fmpq_poly_print(const fmpq_poly_t poly) noexcept + int _fmpq_poly_print_pretty(const fmpz * poly, const fmpz_t den, slong len, const char * x) noexcept + int fmpq_poly_print_pretty(const fmpq_poly_t poly, const char * var) noexcept + int _fmpq_poly_fprint(FILE * file, const fmpz * poly, const fmpz_t den, slong len) noexcept + int fmpq_poly_fprint(FILE * file, const fmpq_poly_t poly) noexcept + int _fmpq_poly_fprint_pretty(FILE * file, const fmpz * poly, const fmpz_t den, slong len, const char * x) noexcept + int fmpq_poly_fprint_pretty(FILE * file, const fmpq_poly_t poly, const char * var) noexcept + int fmpq_poly_read(fmpq_poly_t poly) noexcept + int fmpq_poly_fread(FILE * file, fmpq_poly_t poly) noexcept diff --git a/src/sage/libs/flint/fmpq_poly_macros.pxd b/src/sage/libs/flint/fmpq_poly_macros.pxd new file mode 100644 index 00000000000..41e1a8a4df0 --- /dev/null +++ b/src/sage/libs/flint/fmpq_poly_macros.pxd @@ -0,0 +1,8 @@ +# Macros from fmpz_poly.h +# See https://github.com/flintlib/flint/issues/152 + +from .types cimport * + +cdef extern from "flint_wrap.h": + fmpq_ptr fmpq_poly_get_coeff_ptr(fmpq_poly_t p, ulong n) + # Macro giving a pointer to the n-th coefficient of p (or NULL) diff --git a/src/sage/libs/flint/fmpq_poly_sage.pxd b/src/sage/libs/flint/fmpq_poly_sage.pxd new file mode 100644 index 00000000000..661623745b4 --- /dev/null +++ b/src/sage/libs/flint/fmpq_poly_sage.pxd @@ -0,0 +1,30 @@ +# distutils: libraries = flint +# distutils: depends = flint/fmpq_poly.h + +#***************************************************************************** +# Copyright (C) 2010 Sebastian Pancratz +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# http://www.gnu.org/licenses/ +#***************************************************************************** + +from sage.libs.gmp.types cimport mpz_t, mpq_t +from sage.libs.flint.types cimport * +from sage.libs.flint.fmpz_vec cimport _fmpz_vec_max_limbs +from sage.libs.flint.fmpq_poly cimport fmpq_poly_numref, fmpq_poly_length + + +# since the fmpq_poly header seems to be lacking this inline function +cdef inline sage_fmpq_poly_max_limbs(const fmpq_poly_t poly) noexcept: + return _fmpz_vec_max_limbs(fmpq_poly_numref(poly), fmpq_poly_length(poly)) + +# functions removed from flint but still needed in sage +cdef void fmpq_poly_scalar_mul_mpz(fmpq_poly_t, const fmpq_poly_t, const mpz_t) noexcept +cdef void fmpq_poly_scalar_mul_mpq(fmpq_poly_t, const fmpq_poly_t, const mpq_t) noexcept +cdef void fmpq_poly_set_coeff_mpq(fmpq_poly_t, slong, const mpq_t) noexcept +cdef void fmpq_poly_get_coeff_mpq(mpq_t, const fmpq_poly_t, slong) noexcept +cdef void fmpq_poly_set_mpz(fmpq_poly_t, const mpz_t) noexcept +cdef void fmpq_poly_set_mpq(fmpq_poly_t, const mpq_t) noexcept diff --git a/src/sage/libs/flint/fmpq_poly.pyx b/src/sage/libs/flint/fmpq_poly_sage.pyx similarity index 81% rename from src/sage/libs/flint/fmpq_poly.pyx rename to src/sage/libs/flint/fmpq_poly_sage.pyx index 3b8a0cf0c51..fcaf6407bfc 100644 --- a/src/sage/libs/flint/fmpq_poly.pyx +++ b/src/sage/libs/flint/fmpq_poly_sage.pyx @@ -4,40 +4,42 @@ from sage.libs.gmp.mpq cimport * from sage.libs.flint.fmpz cimport * from sage.libs.flint.fmpq cimport * +from sage.libs.flint.fmpq_poly cimport * -cdef void fmpq_poly_scalar_mul_mpz(fmpq_poly_t rop, const fmpq_poly_t op, const mpz_t c): + +cdef void fmpq_poly_scalar_mul_mpz(fmpq_poly_t rop, const fmpq_poly_t op, const mpz_t c) noexcept: cdef fmpz_t f fmpz_init_set_readonly(f, c) fmpq_poly_scalar_mul_fmpz(rop, op, f) fmpz_clear_readonly(f) -cdef void fmpq_poly_scalar_mul_mpq(fmpq_poly_t rop, const fmpq_poly_t op, const mpq_t c): +cdef void fmpq_poly_scalar_mul_mpq(fmpq_poly_t rop, const fmpq_poly_t op, const mpq_t c) noexcept: cdef fmpq_t f fmpq_init_set_readonly(f, c) fmpq_poly_scalar_mul_fmpq(rop, op, f) fmpq_clear_readonly(f) -cdef void fmpq_poly_set_coeff_mpq(fmpq_poly_t poly, slong n, const mpq_t x): +cdef void fmpq_poly_set_coeff_mpq(fmpq_poly_t poly, slong n, const mpq_t x) noexcept: cdef fmpq_t t fmpq_init_set_readonly(t, x) fmpq_poly_set_coeff_fmpq(poly, n, t) fmpq_clear_readonly(t) -cdef void fmpq_poly_get_coeff_mpq(mpq_t x, const fmpq_poly_t poly, slong n): +cdef void fmpq_poly_get_coeff_mpq(mpq_t x, const fmpq_poly_t poly, slong n) noexcept: cdef fmpq_t t fmpq_init(t) fmpq_poly_get_coeff_fmpq(t, poly, n) fmpq_get_mpq(x, t) fmpq_clear(t) -cdef void fmpq_poly_set_mpq(fmpq_poly_t poly, const mpq_t x): +cdef void fmpq_poly_set_mpq(fmpq_poly_t poly, const mpq_t x) noexcept: fmpq_poly_fit_length(poly, 1) fmpz_set_mpz(fmpq_poly_numref(poly), mpq_numref(x)) fmpz_set_mpz(fmpq_poly_denref(poly), mpq_denref(x)) _fmpq_poly_set_length(poly, 1) _fmpq_poly_normalise(poly) -cdef void fmpq_poly_set_mpz(fmpq_poly_t poly, const mpz_t x): +cdef void fmpq_poly_set_mpz(fmpq_poly_t poly, const mpz_t x) noexcept: fmpq_poly_fit_length(poly, 1) fmpz_set_mpz(fmpq_poly_numref(poly), x) fmpz_one(fmpq_poly_denref(poly)) diff --git a/src/sage/libs/flint/fmpq_vec.pxd b/src/sage/libs/flint/fmpq_vec.pxd new file mode 100644 index 00000000000..6606e041d58 --- /dev/null +++ b/src/sage/libs/flint/fmpq_vec.pxd @@ -0,0 +1,25 @@ +# distutils: libraries = flint +# distutils: depends = flint/fmpq_vec.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + fmpq * _fmpq_vec_init(slong n) noexcept + void _fmpq_vec_clear(fmpq * vec, slong n) noexcept + void _fmpq_vec_randtest(fmpq * f, flint_rand_t state, slong len, flint_bitcnt_t bits) noexcept + void _fmpq_vec_randtest_uniq_sorted(fmpq * vec, flint_rand_t state, slong len, flint_bitcnt_t bits) noexcept + void _fmpq_vec_sort(fmpq * vec, slong len) noexcept + void _fmpq_vec_set_fmpz_vec(fmpq * res, const fmpz * vec, slong len) noexcept + void _fmpq_vec_get_fmpz_vec_fmpz(fmpz * num, fmpz_t den, const fmpq * a, slong len) noexcept + void _fmpq_vec_dot(fmpq_t res, const fmpq * vec1, const fmpq * vec2, slong len) noexcept + int _fmpq_vec_fprint(FILE * file, const fmpq * vec, slong len) noexcept + int _fmpq_vec_print(const fmpq * vec, slong len) noexcept diff --git a/src/sage/libs/flint/fmpz.pxd b/src/sage/libs/flint/fmpz.pxd index b97fbe1eae0..237ac135cd9 100644 --- a/src/sage/libs/flint/fmpz.pxd +++ b/src/sage/libs/flint/fmpz.pxd @@ -1,195 +1,254 @@ # distutils: libraries = flint # distutils: depends = flint/fmpz.h +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + from libc.stdio cimport FILE -from sage.libs.gmp.types cimport mpz_t +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * from sage.libs.flint.types cimport * -# flint/fmpz.h cdef extern from "flint_wrap.h": - # Memory management - void fmpz_init(fmpz_t) - void fmpz_init2(fmpz_t, ulong limbs) - - void fmpz_clear(fmpz_t) - - void fmpz_init_set(fmpz_t, fmpz_t) - void fmpz_init_set_ui(fmpz_t, ulong) - - void fmpz_init_set_readonly(fmpz_t, const mpz_t) - void fmpz_clear_readonly(fmpz_t) - - # Conversion - void fmpz_set(fmpz_t f, fmpz_t g) - void fmpz_set_ui(fmpz_t, ulong) - void fmpz_neg_ui(fmpz_t, ulong) - ulong fmpz_get_ui(fmpz_t) - - void fmpz_set_si(fmpz_t, slong) - slong fmpz_get_si(fmpz_t) - - void fmpz_set_d(fmpz_t, double) - double fmpz_get_d(fmpz_t) - double fmpz_get_d_2exp(slong *, fmpz_t) - - void fmpz_set_mpz(fmpz_t, mpz_t) - void fmpz_get_mpz(mpz_t, fmpz_t) - - int fmpz_set_str(fmpz_t, char *, int) - char *fmpz_get_str(char *, int, fmpz_t) - - void fmpz_set_uiui(fmpz_t, mp_limb_t, mp_limb_t) - void fmpz_neg_uiui(fmpz_t, mp_limb_t, mp_limb_t) - void fmpz_set_ui_smod(fmpz_t, mp_limb_t, mp_limb_t) - - void flint_mpz_init_set_readonly(mpz_t, fmpz_t) - void flint_mpz_clear_readonly(mpz_t) - - void fmpz_init_set_readonly(fmpz_t, mpz_t) - void fmpz_clear_readonly(fmpz_t) - - int fmpz_abs_fits_ui(fmpz_t f) - int fmpz_fits_si(fmpz_t f) - void fmpz_zero(fmpz_t f) - void fmpz_one(fmpz_t f) - void fmpz_setbit(fmpz_t f, ulong i) - int fmpz_tstbit(fmpz_t f, ulong i) - - # Input and output - int fmpz_read(fmpz_t) - int fmpz_fread(FILE *, fmpz_t) - size_t fmpz_inp_raw(fmpz_t, FILE *) - - int fmpz_print(fmpz_t) - int fmpz_fprint(FILE *, fmpz_t) - size_t fmpz_out_raw(FILE *, fmpz_t) - - size_t fmpz_sizeinbase(fmpz_t f, int b) - - # Comparison - int fmpz_cmp(fmpz_t, fmpz_t) - int fmpz_cmp_ui(fmpz_t, ulong) - int fmpz_cmp_si(fmpz_t, slong) - - int fmpz_sgn(fmpz_t f) - int fmpz_cmpabs(fmpz_t, fmpz_t) - - int fmpz_equal(fmpz_t, fmpz_t) - int fmpz_equal_ui(fmpz_t, ulong) - int fmpz_equal_si(fmpz_t, slong) - - int fmpz_is_zero(fmpz_t) - int fmpz_is_one(fmpz_t) - int fmpz_is_pm1(fmpz_t) - int fmpz_is_even(fmpz_t) - int fmpz_is_odd(fmpz_t) - - # Basic arithmetic - void fmpz_neg(fmpz_t, fmpz_t) - void fmpz_abs(fmpz_t, fmpz_t) - - void fmpz_add(fmpz_t, fmpz_t, fmpz_t) - void fmpz_add_ui(fmpz_t, fmpz_t, ulong) - - void fmpz_sub(fmpz_t, fmpz_t, fmpz_t) - void fmpz_sub_ui(fmpz_t, fmpz_t, ulong) - - void fmpz_mul(fmpz_t, fmpz_t, fmpz_t) - void fmpz_mul_ui(fmpz_t, fmpz_t, ulong) - void fmpz_mul_si(fmpz_t, fmpz_t, slong) - void fmpz_mul2_uiui(fmpz_t, fmpz_t, ulong, ulong) - void fmpz_mul_2exp(fmpz_t, fmpz_t, ulong) - - void fmpz_addmul(fmpz_t, fmpz_t, fmpz_t) - void fmpz_addmul_ui(fmpz_t, fmpz_t, ulong) - - void fmpz_submul(fmpz_t, fmpz_t, fmpz_t) - void fmpz_submul_ui(fmpz_t, fmpz_t, ulong) - - void fmpz_cdiv_q(fmpz_t, fmpz_t, fmpz_t) - void fmpz_cdiv_q_ui(fmpz_t, fmpz_t, ulong) - void fmpz_cdiv_q_si(fmpz_t, fmpz_t, slong) - void fmpz_cdiv_q_2exp(fmpz_t, fmpz_t, ulong) - - void fmpz_fdiv_q(fmpz_t, fmpz_t, fmpz_t) - void fmpz_fdiv_q_ui(fmpz_t, fmpz_t, ulong) - void fmpz_fdiv_q_si(fmpz_t, fmpz_t, slong) - void fmpz_fdiv_q_2exp(fmpz_t, fmpz_t, ulong) - - ulong fmpz_fdiv_ui(fmpz_t, ulong) - - void fmpz_fdiv_r(fmpz_t, fmpz_t, fmpz_t) - void fmpz_fdiv_r_2exp(fmpz_t, fmpz_t, ulong) - - void fmpz_fdiv_qr(fmpz_t, fmpz_t, fmpz_t, fmpz_t) - void fmpz_fdiv_qr_preinvn(fmpz_t f, fmpz_t s, fmpz_t g, - fmpz_t h, fmpz_preinvn_t inv) - - void fmpz_tdiv_q(fmpz_t, fmpz_t, fmpz_t) - void fmpz_tdiv_q_ui(fmpz_t, fmpz_t, ulong) - void fmpz_tdiv_q_si(fmpz_t, fmpz_t, slong) - void fmpz_tdiv_q_2exp(fmpz_t, fmpz_t, ulong) - - ulong fmpz_tdiv_ui(fmpz_t, ulong) - - void fmpz_tdiv_qr(fmpz_t, fmpz_t, fmpz_t, fmpz_t) - - void fmpz_divexact(fmpz_t, fmpz_t, fmpz_t) - void fmpz_divexact_ui(fmpz_t, fmpz_t, ulong) - void fmpz_divexact_si(fmpz_t, fmpz_t, slong) - void fmpz_divexact2_uiui(fmpz_t, fmpz_t, ulong, ulong) - - void fmpz_mul_tdiv_q_2exp(fmpz_t, fmpz_t, fmpz_t, ulong) - void fmpz_mul_si_tdiv_q_2exp(fmpz_t, fmpz_t, slong, ulong) - - int fmpz_divisible(fmpz_t, fmpz_t) - int fmpz_divisible_si(fmpz_t, slong) - - void fmpz_mod(fmpz_t, fmpz_t, fmpz_t) - void fmpz_mod_ui(fmpz_t, fmpz_t, ulong) - void fmpz_negmod(fmpz_t r, fmpz_t a, fmpz_t mod) - - void fmpz_gcd(fmpz_t f, fmpz_t g, fmpz_t h) - void fmpz_lcm(fmpz_t f, fmpz_t g, fmpz_t h) - void fmpz_gcdinv(fmpz_t d, fmpz_t a, fmpz_t f, fmpz_t g) - void fmpz_xgcd(fmpz_t d, fmpz_t a, fmpz_t b, fmpz_t f, fmpz_t g) - void fmpz_xgcd_partial(fmpz_t co2, fmpz_t co1, fmpz_t r2, fmpz_t r1, fmpz_t L) - int fmpz_invmod(fmpz_t f, fmpz_t g, fmpz_t h) - int fmpz_jacobi(fmpz_t a, fmpz_t p) - long fmpz_remove(fmpz_t rop, fmpz_t op, fmpz_t f) - - void fmpz_preinvn_init(fmpz_preinvn_t, fmpz_t) - void fmpz_preinvn_clear(fmpz_preinvn_t) - - void fmpz_fdiv_preinvn(fmpz_t, fmpz_t, fmpz_t, fmpz_t, fmpz_preinvn_t) - - void fmpz_pow_ui(fmpz_t, fmpz_t, ulong) - - void fmpz_powm(fmpz_t, fmpz_t, fmpz_t, fmpz_t) - void fmpz_powm_ui(fmpz_t, fmpz_t, ulong, ulong) - - slong fmpz_clog(fmpz_t, fmpz_t) - slong fmpz_clog_ui(fmpz_t, ulong) - - slong fmpz_flog(fmpz_t, fmpz_t) - slong fmpz_flog_ui(fmpz_t, ulong) - - double fmpz_dlog(fmpz_t) - - int fmpz_sqrtmod(fmpz_t, fmpz_t, fmpz_t) - - int fmpz_is_square(fmpz_t) - void fmpz_sqrt(fmpz_t, fmpz_t) - void fmpz_sqrtrem(fmpz_t, fmpz_t, fmpz_t) - - void fmpz_root(fmpz_t, fmpz_t, slong) - - void fmpz_fac_ui(fmpz_t, ulong) - void fmpz_fib_ui(fmpz_t, ulong) - void fmpz_bin_uiui(fmpz_t, ulong, ulong) - void fmpz_rfac_ui(fmpz_t, fmpz_t, ulong) - void fmpz_rfac_uiui(fmpz_t, ulong, ulong) - - # Random Generators - void fmpz_randbits(fmpz_t f, flint_rand_t state, mp_bitcnt_t bits) - void fmpz_randm(fmpz_t f, flint_rand_t state, const fmpz_t m) + fmpz PTR_TO_COEFF(__mpz_struct * ptr) noexcept + __mpz_struct * COEFF_TO_PTR(fmpz f) noexcept + __mpz_struct * _fmpz_new_mpz() noexcept + void _fmpz_clear_mpz(fmpz f) noexcept + void _fmpz_cleanup_mpz_content() noexcept + void _fmpz_cleanup() noexcept + __mpz_struct * _fmpz_promote(fmpz_t f) noexcept + __mpz_struct * _fmpz_promote_val(fmpz_t f) noexcept + void _fmpz_demote(fmpz_t f) noexcept + void _fmpz_demote_val(fmpz_t f) noexcept + bint _fmpz_is_canonical(const fmpz_t f) noexcept + void fmpz_init(fmpz_t f) noexcept + void fmpz_init2(fmpz_t f, ulong limbs) noexcept + void fmpz_clear(fmpz_t f) noexcept + void fmpz_init_set(fmpz_t f, const fmpz_t g) noexcept + void fmpz_init_set_ui(fmpz_t f, ulong g) noexcept + void fmpz_init_set_si(fmpz_t f, slong g) noexcept + void fmpz_randbits(fmpz_t f, flint_rand_t state, flint_bitcnt_t bits) noexcept + void fmpz_randtest(fmpz_t f, flint_rand_t state, flint_bitcnt_t bits) noexcept + void fmpz_randtest_unsigned(fmpz_t f, flint_rand_t state, flint_bitcnt_t bits) noexcept + void fmpz_randtest_not_zero(fmpz_t f, flint_rand_t state, flint_bitcnt_t bits) noexcept + void fmpz_randm(fmpz_t f, flint_rand_t state, const fmpz_t m) noexcept + void fmpz_randtest_mod(fmpz_t f, flint_rand_t state, const fmpz_t m) noexcept + void fmpz_randtest_mod_signed(fmpz_t f, flint_rand_t state, const fmpz_t m) noexcept + void fmpz_randprime(fmpz_t f, flint_rand_t state, flint_bitcnt_t bits, int proved) noexcept + slong fmpz_get_si(const fmpz_t f) noexcept + ulong fmpz_get_ui(const fmpz_t f) noexcept + void fmpz_get_uiui(mp_limb_t * hi, mp_limb_t * low, const fmpz_t f) noexcept + mp_limb_t fmpz_get_nmod(const fmpz_t f, nmod_t mod) noexcept + double fmpz_get_d(const fmpz_t f) noexcept + void fmpz_set_mpf(fmpz_t f, const mpf_t x) noexcept + void fmpz_get_mpf(mpf_t x, const fmpz_t f) noexcept + void fmpz_get_mpfr(mpfr_t x, const fmpz_t f, mpfr_rnd_t rnd) noexcept + double fmpz_get_d_2exp(slong * exp, const fmpz_t f) noexcept + void fmpz_get_mpz(mpz_t x, const fmpz_t f) noexcept + int fmpz_get_mpn(mp_ptr * n, fmpz_t n_in) noexcept + char * fmpz_get_str(char * str, int b, const fmpz_t f) noexcept + void fmpz_set_si(fmpz_t f, slong val) noexcept + void fmpz_set_ui(fmpz_t f, ulong val) noexcept + void fmpz_set_d(fmpz_t f, double c) noexcept + void fmpz_set_d_2exp(fmpz_t f, double d, slong exp) noexcept + void fmpz_neg_ui(fmpz_t f, ulong val) noexcept + void fmpz_set_uiui(fmpz_t f, mp_limb_t hi, mp_limb_t lo) noexcept + void fmpz_neg_uiui(fmpz_t f, mp_limb_t hi, mp_limb_t lo) noexcept + void fmpz_set_signed_uiui(fmpz_t f, ulong hi, ulong lo) noexcept + void fmpz_set_signed_uiuiui(fmpz_t f, ulong hi, ulong mid, ulong lo) noexcept + void fmpz_set_ui_array(fmpz_t out, const ulong * input, slong n) noexcept + void fmpz_set_signed_ui_array(fmpz_t out, const ulong * input, slong n) noexcept + void fmpz_get_ui_array(ulong * out, slong n, const fmpz_t input) noexcept + void fmpz_get_signed_ui_array(ulong * out, slong n, const fmpz_t input) noexcept + void fmpz_get_signed_uiui(ulong * hi, ulong * lo, const fmpz_t input) noexcept + void fmpz_set_mpz(fmpz_t f, const mpz_t x) noexcept + int fmpz_set_str(fmpz_t f, const char * str, int b) noexcept + void fmpz_set_ui_smod(fmpz_t f, mp_limb_t x, mp_limb_t m) noexcept + void flint_mpz_init_set_readonly(mpz_t z, const fmpz_t f) noexcept + void flint_mpz_clear_readonly(mpz_t z) noexcept + void fmpz_init_set_readonly(fmpz_t f, const mpz_t z) noexcept + void fmpz_clear_readonly(fmpz_t f) noexcept + int fmpz_read(fmpz_t f) noexcept + int fmpz_fread(FILE * file, fmpz_t f) noexcept + size_t fmpz_inp_raw(fmpz_t x, FILE * fin) noexcept + int fmpz_print(const fmpz_t x) noexcept + int fmpz_fprint(FILE * file, const fmpz_t x) noexcept + size_t fmpz_out_raw(FILE * fout, const fmpz_t x ) noexcept + size_t fmpz_sizeinbase(const fmpz_t f, int b) noexcept + flint_bitcnt_t fmpz_bits(const fmpz_t f) noexcept + mp_size_t fmpz_size(const fmpz_t f) noexcept + int fmpz_sgn(const fmpz_t f) noexcept + flint_bitcnt_t fmpz_val2(const fmpz_t f) noexcept + void fmpz_swap(fmpz_t f, fmpz_t g) noexcept + void fmpz_set(fmpz_t f, const fmpz_t g) noexcept + void fmpz_zero(fmpz_t f) noexcept + void fmpz_one(fmpz_t f) noexcept + int fmpz_abs_fits_ui(const fmpz_t f) noexcept + int fmpz_fits_si(const fmpz_t f) noexcept + void fmpz_setbit(fmpz_t f, ulong i) noexcept + int fmpz_tstbit(const fmpz_t f, ulong i) noexcept + mp_limb_t fmpz_abs_lbound_ui_2exp(slong * exp, const fmpz_t x, int bits) noexcept + mp_limb_t fmpz_abs_ubound_ui_2exp(slong * exp, const fmpz_t x, int bits) noexcept + int fmpz_cmp(const fmpz_t f, const fmpz_t g) noexcept + int fmpz_cmp_ui(const fmpz_t f, ulong g) noexcept + int fmpz_cmp_si(const fmpz_t f, slong g) noexcept + int fmpz_cmpabs(const fmpz_t f, const fmpz_t g) noexcept + int fmpz_cmp2abs(const fmpz_t f, const fmpz_t g) noexcept + bint fmpz_equal(const fmpz_t f, const fmpz_t g) noexcept + bint fmpz_equal_ui(const fmpz_t f, ulong g) noexcept + bint fmpz_equal_si(const fmpz_t f, slong g) noexcept + bint fmpz_is_zero(const fmpz_t f) noexcept + bint fmpz_is_one(const fmpz_t f) noexcept + bint fmpz_is_pm1(const fmpz_t f) noexcept + bint fmpz_is_even(const fmpz_t f) noexcept + bint fmpz_is_odd(const fmpz_t f) noexcept + void fmpz_neg(fmpz_t f1, const fmpz_t f2) noexcept + void fmpz_abs(fmpz_t f1, const fmpz_t f2) noexcept + void fmpz_add(fmpz_t f, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_add_ui(fmpz_t f, const fmpz_t g, ulong h) noexcept + void fmpz_add_si(fmpz_t f, const fmpz_t g, slong h) noexcept + void fmpz_sub(fmpz_t f, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_sub_ui(fmpz_t f, const fmpz_t g, ulong h) noexcept + void fmpz_sub_si(fmpz_t f, const fmpz_t g, slong h) noexcept + void fmpz_mul(fmpz_t f, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_mul_ui(fmpz_t f, const fmpz_t g, ulong h) noexcept + void fmpz_mul_si(fmpz_t f, const fmpz_t g, slong h) noexcept + void fmpz_mul2_uiui(fmpz_t f, const fmpz_t g, ulong x, ulong y) noexcept + void fmpz_mul_2exp(fmpz_t f, const fmpz_t g, ulong e) noexcept + void fmpz_one_2exp(fmpz_t f, ulong e) noexcept + void fmpz_addmul(fmpz_t f, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_addmul_ui(fmpz_t f, const fmpz_t g, ulong h) noexcept + void fmpz_addmul_si(fmpz_t f, const fmpz_t g, slong h) noexcept + void fmpz_submul(fmpz_t f, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_submul_ui(fmpz_t f, const fmpz_t g, ulong h) noexcept + void fmpz_submul_si(fmpz_t f, const fmpz_t g, slong h) noexcept + void fmpz_fmma(fmpz_t f, const fmpz_t a, const fmpz_t b, const fmpz_t c, const fmpz_t d) noexcept + void fmpz_fmms(fmpz_t f, const fmpz_t a, const fmpz_t b, const fmpz_t c, const fmpz_t d) noexcept + void fmpz_cdiv_qr(fmpz_t f, fmpz_t s, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_fdiv_qr(fmpz_t f, fmpz_t s, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_tdiv_qr(fmpz_t f, fmpz_t s, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_ndiv_qr(fmpz_t f, fmpz_t s, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_cdiv_q(fmpz_t f, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_fdiv_q(fmpz_t f, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_tdiv_q(fmpz_t f, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_cdiv_q_si(fmpz_t f, const fmpz_t g, slong h) noexcept + void fmpz_fdiv_q_si(fmpz_t f, const fmpz_t g, slong h) noexcept + void fmpz_tdiv_q_si(fmpz_t f, const fmpz_t g, slong h) noexcept + void fmpz_cdiv_q_ui(fmpz_t f, const fmpz_t g, ulong h) noexcept + void fmpz_fdiv_q_ui(fmpz_t f, const fmpz_t g, ulong h) noexcept + void fmpz_tdiv_q_ui(fmpz_t f, const fmpz_t g, ulong h) noexcept + void fmpz_cdiv_q_2exp(fmpz_t f, const fmpz_t g, ulong exp) noexcept + void fmpz_fdiv_q_2exp(fmpz_t f, const fmpz_t g, ulong exp) noexcept + void fmpz_tdiv_q_2exp(fmpz_t f, const fmpz_t g, ulong exp) noexcept + void fmpz_fdiv_r(fmpz_t s, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_cdiv_r_2exp(fmpz_t s, const fmpz_t g, ulong exp) noexcept + void fmpz_fdiv_r_2exp(fmpz_t s, const fmpz_t g, ulong exp) noexcept + void fmpz_tdiv_r_2exp(fmpz_t s, const fmpz_t g, ulong exp) noexcept + ulong fmpz_cdiv_ui(const fmpz_t g, ulong h) noexcept + ulong fmpz_fdiv_ui(const fmpz_t g, ulong h) noexcept + ulong fmpz_tdiv_ui(const fmpz_t g, ulong h) noexcept + void fmpz_divexact(fmpz_t f, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_divexact_si(fmpz_t f, const fmpz_t g, slong h) noexcept + void fmpz_divexact_ui(fmpz_t f, const fmpz_t g, ulong h) noexcept + void fmpz_divexact2_uiui(fmpz_t f, const fmpz_t g, ulong x, ulong y) noexcept + int fmpz_divisible(const fmpz_t f, const fmpz_t g) noexcept + int fmpz_divisible_si(const fmpz_t f, slong g) noexcept + int fmpz_divides(fmpz_t q, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_mod(fmpz_t f, const fmpz_t g, const fmpz_t h) noexcept + ulong fmpz_mod_ui(fmpz_t f, const fmpz_t g, ulong h) noexcept + void fmpz_smod(fmpz_t f, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_preinvn_init(fmpz_preinvn_t inv, const fmpz_t f) noexcept + void fmpz_preinvn_clear(fmpz_preinvn_t inv) noexcept + void fmpz_fdiv_qr_preinvn(fmpz_t f, fmpz_t s, const fmpz_t g, const fmpz_t h, const fmpz_preinvn_t hinv) noexcept + void fmpz_pow_ui(fmpz_t f, const fmpz_t g, ulong x) noexcept + void fmpz_ui_pow_ui(fmpz_t f, ulong g, ulong x) noexcept + int fmpz_pow_fmpz(fmpz_t f, const fmpz_t g, const fmpz_t x) noexcept + void fmpz_powm_ui(fmpz_t f, const fmpz_t g, ulong e, const fmpz_t m) noexcept + void fmpz_powm(fmpz_t f, const fmpz_t g, const fmpz_t e, const fmpz_t m) noexcept + slong fmpz_clog(const fmpz_t x, const fmpz_t b) noexcept + slong fmpz_clog_ui(const fmpz_t x, ulong b) noexcept + slong fmpz_flog(const fmpz_t x, const fmpz_t b) noexcept + slong fmpz_flog_ui(const fmpz_t x, ulong b) noexcept + double fmpz_dlog(const fmpz_t x) noexcept + int fmpz_sqrtmod(fmpz_t b, const fmpz_t a, const fmpz_t p) noexcept + void fmpz_sqrt(fmpz_t f, const fmpz_t g) noexcept + void fmpz_sqrtrem(fmpz_t f, fmpz_t r, const fmpz_t g) noexcept + bint fmpz_is_square(const fmpz_t f) noexcept + int fmpz_root(fmpz_t r, const fmpz_t f, slong n) noexcept + bint fmpz_is_perfect_power(fmpz_t root, const fmpz_t f) noexcept + void fmpz_fac_ui(fmpz_t f, ulong n) noexcept + void fmpz_fib_ui(fmpz_t f, ulong n) noexcept + void fmpz_bin_uiui(fmpz_t f, ulong n, ulong k) noexcept + void _fmpz_rfac_ui(fmpz_t r, const fmpz_t x, ulong a, ulong b) noexcept + void fmpz_rfac_ui(fmpz_t r, const fmpz_t x, ulong k) noexcept + void fmpz_rfac_uiui(fmpz_t r, ulong x, ulong k) noexcept + void fmpz_mul_tdiv_q_2exp(fmpz_t f, const fmpz_t g, const fmpz_t h, ulong exp) noexcept + void fmpz_mul_si_tdiv_q_2exp(fmpz_t f, const fmpz_t g, slong x, ulong exp) noexcept + void fmpz_gcd_ui(fmpz_t f, const fmpz_t g, ulong h) noexcept + void fmpz_gcd(fmpz_t f, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_gcd3(fmpz_t f, const fmpz_t a, const fmpz_t b, const fmpz_t c) noexcept + void fmpz_lcm(fmpz_t f, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_gcdinv(fmpz_t d, fmpz_t a, const fmpz_t f, const fmpz_t g) noexcept + void fmpz_xgcd(fmpz_t d, fmpz_t a, fmpz_t b, const fmpz_t f, const fmpz_t g) noexcept + void fmpz_xgcd_canonical_bezout(fmpz_t d, fmpz_t a, fmpz_t b, const fmpz_t f, const fmpz_t g) noexcept + void fmpz_xgcd_partial(fmpz_t co2, fmpz_t co1, fmpz_t r2, fmpz_t r1, const fmpz_t L) noexcept + slong _fmpz_remove(fmpz_t x, const fmpz_t f, double finv) noexcept + slong fmpz_remove(fmpz_t rop, const fmpz_t op, const fmpz_t f) noexcept + int fmpz_invmod(fmpz_t f, const fmpz_t g, const fmpz_t h) noexcept + void fmpz_negmod(fmpz_t f, const fmpz_t g, const fmpz_t h) noexcept + int fmpz_jacobi(const fmpz_t a, const fmpz_t n) noexcept + int fmpz_kronecker(const fmpz_t a, const fmpz_t n) noexcept + 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) noexcept + int fmpz_bit_pack(mp_limb_t * arr, flint_bitcnt_t shift, flint_bitcnt_t bits, const fmpz_t coeff, int negate, int borrow) noexcept + int fmpz_bit_unpack(fmpz_t coeff, mp_limb_t * arr, flint_bitcnt_t shift, flint_bitcnt_t bits, int negate, int borrow) noexcept + void fmpz_bit_unpack_unsigned(fmpz_t coeff, const mp_limb_t * arr, flint_bitcnt_t shift, flint_bitcnt_t bits) noexcept + void fmpz_complement(fmpz_t r, const fmpz_t f) noexcept + void fmpz_clrbit(fmpz_t f, ulong i) noexcept + void fmpz_combit(fmpz_t f, ulong i) noexcept + void fmpz_and(fmpz_t r, const fmpz_t a, const fmpz_t b) noexcept + void fmpz_or(fmpz_t r, const fmpz_t a, const fmpz_t b) noexcept + void fmpz_xor(fmpz_t r, const fmpz_t a, const fmpz_t b) noexcept + ulong fmpz_popcnt(const fmpz_t a) noexcept + void fmpz_CRT_ui(fmpz_t out, const fmpz_t r1, const fmpz_t m1, ulong r2, ulong m2, int sign) noexcept + void fmpz_CRT(fmpz_t out, const fmpz_t r1, const fmpz_t m1, const fmpz_t r2, const fmpz_t m2, int sign) noexcept + void fmpz_multi_mod_ui(mp_limb_t * out, const fmpz_t input, const fmpz_comb_t comb, fmpz_comb_temp_t temp) noexcept + void fmpz_multi_CRT_ui(fmpz_t output, mp_srcptr residues, const fmpz_comb_t comb, fmpz_comb_temp_t ctemp, int sign) noexcept + void fmpz_comb_init(fmpz_comb_t comb, mp_srcptr primes, slong num_primes) noexcept + void fmpz_comb_temp_init(fmpz_comb_temp_t temp, const fmpz_comb_t comb) noexcept + void fmpz_comb_clear(fmpz_comb_t comb) noexcept + void fmpz_comb_temp_clear(fmpz_comb_temp_t temp) noexcept + void fmpz_multi_CRT_init(fmpz_multi_CRT_t CRT) noexcept + int fmpz_multi_CRT_precompute(fmpz_multi_CRT_t CRT, const fmpz * moduli, slong len) noexcept + void fmpz_multi_CRT_precomp(fmpz_t output, const fmpz_multi_CRT_t P, const fmpz * inputs, int sign) noexcept + int fmpz_multi_CRT(fmpz_t output, const fmpz * moduli, const fmpz * values, slong len, int sign) noexcept + void fmpz_multi_CRT_clear(fmpz_multi_CRT_t P) noexcept + bint fmpz_is_strong_probabprime(const fmpz_t n, const fmpz_t a) noexcept + bint fmpz_is_probabprime_lucas(const fmpz_t n) noexcept + bint fmpz_is_probabprime_BPSW(const fmpz_t n) noexcept + bint fmpz_is_probabprime(const fmpz_t p) noexcept + bint fmpz_is_prime_pseudosquare(const fmpz_t n) noexcept + bint fmpz_is_prime_pocklington(fmpz_t F, fmpz_t R, const fmpz_t n, mp_ptr pm1, slong num_pm1) noexcept + void _fmpz_nm1_trial_factors(const fmpz_t n, mp_ptr pm1, slong * num_pm1, ulong limit) noexcept + bint fmpz_is_prime_morrison(fmpz_t F, fmpz_t R, const fmpz_t n, mp_ptr pp1, slong num_pp1) noexcept + void _fmpz_np1_trial_factors(const fmpz_t n, mp_ptr pp1, slong * num_pp1, ulong limit) noexcept + bint fmpz_is_prime(const fmpz_t n) noexcept + void fmpz_lucas_chain(fmpz_t Vm, fmpz_t Vm1, const fmpz_t A, const fmpz_t m, const fmpz_t n) noexcept + 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) noexcept + void fmpz_lucas_chain_double(fmpz_t U2m, fmpz_t U2m1, const fmpz_t Um, const fmpz_t Um1, const fmpz_t A, const fmpz_t B, const fmpz_t n) noexcept + void fmpz_lucas_chain_add(fmpz_t Umn, fmpz_t Umn1, const fmpz_t Um, const fmpz_t Um1, const fmpz_t Un, const fmpz_t Un1, const fmpz_t A, const fmpz_t B, const fmpz_t n) noexcept + void fmpz_lucas_chain_mul(fmpz_t Ukm, fmpz_t Ukm1, const fmpz_t Um, const fmpz_t Um1, const fmpz_t A, const fmpz_t B, const fmpz_t k, const fmpz_t n) noexcept + void fmpz_lucas_chain_VtoU(fmpz_t Um, fmpz_t Um1, const fmpz_t Vm, const fmpz_t Vm1, const fmpz_t A, const fmpz_t B, const fmpz_t Dinv, const fmpz_t n) noexcept + int fmpz_divisor_in_residue_class_lenstra(fmpz_t fac, const fmpz_t n, const fmpz_t r, const fmpz_t s) noexcept + void fmpz_nextprime(fmpz_t res, const fmpz_t n, int proved) noexcept + void fmpz_primorial(fmpz_t res, ulong n) noexcept + void fmpz_factor_euler_phi(fmpz_t res, const fmpz_factor_t fac) noexcept + void fmpz_euler_phi(fmpz_t res, const fmpz_t n) noexcept + int fmpz_factor_moebius_mu(const fmpz_factor_t fac) noexcept + int fmpz_moebius_mu(const fmpz_t n) noexcept + void fmpz_factor_divisor_sigma(fmpz_t res, ulong k, const fmpz_factor_t fac) noexcept + void fmpz_divisor_sigma(fmpz_t res, ulong k, const fmpz_t n) noexcept + +from .fmpz_macros cimport * diff --git a/src/sage/libs/flint/fmpz_extras.pxd b/src/sage/libs/flint/fmpz_extras.pxd new file mode 100644 index 00000000000..940d1fdb766 --- /dev/null +++ b/src/sage/libs/flint/fmpz_extras.pxd @@ -0,0 +1,30 @@ +# distutils: libraries = flint +# distutils: depends = flint/fmpz_extras.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + slong fmpz_allocated_bytes(const fmpz_t x) noexcept + void fmpz_adiv_q_2exp(fmpz_t z, const fmpz_t x, flint_bitcnt_t exp) noexcept + void fmpz_ui_mul_ui(fmpz_t x, ulong a, ulong b) noexcept + void fmpz_max(fmpz_t z, const fmpz_t x, const fmpz_t y) noexcept + void fmpz_min(fmpz_t z, const fmpz_t x, const fmpz_t y) noexcept + void fmpz_add_inline(fmpz_t z, const fmpz_t x, const fmpz_t y) noexcept + void fmpz_add_si_inline(fmpz_t z, const fmpz_t x, slong y) noexcept + void fmpz_add_ui_inline(fmpz_t z, const fmpz_t x, ulong y) noexcept + void fmpz_sub_si_inline(fmpz_t z, const fmpz_t x, slong y) noexcept + void fmpz_add2_fmpz_si_inline(fmpz_t z, const fmpz_t x, const fmpz_t y, slong c) noexcept + mp_size_t _fmpz_size(const fmpz_t x) noexcept + slong _fmpz_sub_small(const fmpz_t x, const fmpz_t y) noexcept + void _fmpz_set_si_small(fmpz_t x, slong v) noexcept + void fmpz_set_mpn_large(fmpz_t z, mp_srcptr src, mp_size_t n, int negative) noexcept + void fmpz_lshift_mpn(fmpz_t z, mp_srcptr src, mp_size_t n, int negative, flint_bitcnt_t shift) noexcept diff --git a/src/sage/libs/flint/fmpz_factor.pxd b/src/sage/libs/flint/fmpz_factor.pxd index 7d28c2795b4..1e93305c7f5 100644 --- a/src/sage/libs/flint/fmpz_factor.pxd +++ b/src/sage/libs/flint/fmpz_factor.pxd @@ -1,12 +1,40 @@ # distutils: libraries = flint # distutils: depends = flint/fmpz_factor.h +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * from sage.libs.flint.types cimport * -# flint/fmpz_factor.h cdef extern from "flint_wrap.h": - void fmpz_factor_clear(fmpz_factor_t) - void fmpz_factor_init(fmpz_factor_t) - void fmpz_factor(fmpz_factor_t, const fmpz_t) - -cdef fmpz_factor_to_pairlist(const fmpz_factor_t) noexcept + void fmpz_factor_init(fmpz_factor_t factor) noexcept + void fmpz_factor_clear(fmpz_factor_t factor) noexcept + void _fmpz_factor_append_ui(fmpz_factor_t factor, mp_limb_t p, ulong exp) noexcept + void _fmpz_factor_append(fmpz_factor_t factor, const fmpz_t p, ulong exp) noexcept + void fmpz_factor(fmpz_factor_t factor, const fmpz_t n) noexcept + int fmpz_factor_smooth(fmpz_factor_t factor, const fmpz_t n, slong bits, int proved) noexcept + void fmpz_factor_si(fmpz_factor_t factor, slong n) noexcept + int fmpz_factor_trial_range(fmpz_factor_t factor, const fmpz_t n, ulong start, ulong num_primes) noexcept + int fmpz_factor_trial(fmpz_factor_t factor, const fmpz_t n, slong num_primes) noexcept + void fmpz_factor_refine(fmpz_factor_t res, const fmpz_factor_t f) noexcept + void fmpz_factor_expand_iterative(fmpz_t n, const fmpz_factor_t factor) noexcept + int fmpz_factor_pp1(fmpz_t factor, const fmpz_t n, ulong B1, ulong B2_sqrt, ulong c) noexcept + 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) noexcept + 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) noexcept + void fmpz_factor_ecm_init(ecm_t ecm_inf, mp_limb_t sz) noexcept + void fmpz_factor_ecm_clear(ecm_t ecm_inf) noexcept + void fmpz_factor_ecm_addmod(mp_ptr a, mp_ptr b, mp_ptr c, mp_ptr n, mp_limb_t n_size) noexcept + void fmpz_factor_ecm_submod(mp_ptr x, mp_ptr a, mp_ptr b, mp_ptr n, mp_limb_t n_size) noexcept + void fmpz_factor_ecm_double(mp_ptr x, mp_ptr z, mp_ptr x0, mp_ptr z0, mp_ptr n, ecm_t ecm_inf) noexcept + 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) noexcept + 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) noexcept + int fmpz_factor_ecm_select_curve(mp_ptr f, mp_ptr sigma, mp_ptr n, ecm_t ecm_inf) noexcept + 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) noexcept + 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) noexcept + int fmpz_factor_ecm(fmpz_t f, mp_limb_t curves, mp_limb_t B1, mp_limb_t B2, flint_rand_t state, const fmpz_t n_in) noexcept diff --git a/src/sage/libs/flint/fmpz_factor_sage.pxd b/src/sage/libs/flint/fmpz_factor_sage.pxd new file mode 100644 index 00000000000..e91931005c7 --- /dev/null +++ b/src/sage/libs/flint/fmpz_factor_sage.pxd @@ -0,0 +1,3 @@ +from .types cimport * + +cdef fmpz_factor_to_pairlist(const fmpz_factor_t factors) noexcept diff --git a/src/sage/libs/flint/fmpz_factor.pyx b/src/sage/libs/flint/fmpz_factor_sage.pyx similarity index 100% rename from src/sage/libs/flint/fmpz_factor.pyx rename to src/sage/libs/flint/fmpz_factor_sage.pyx diff --git a/src/sage/libs/flint/fmpz_lll.pxd b/src/sage/libs/flint/fmpz_lll.pxd new file mode 100644 index 00000000000..f673f775794 --- /dev/null +++ b/src/sage/libs/flint/fmpz_lll.pxd @@ -0,0 +1,47 @@ +# distutils: libraries = flint +# distutils: depends = flint/fmpz_lll.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fmpz_lll_context_init_default(fmpz_lll_t fl) noexcept + void fmpz_lll_context_init(fmpz_lll_t fl, double delta, double eta, rep_type rt, gram_type gt) noexcept + void fmpz_lll_randtest(fmpz_lll_t fl, flint_rand_t state) noexcept + 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) noexcept + 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) noexcept + 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) noexcept + 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) noexcept + 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) noexcept + 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) noexcept + int fmpz_lll_shift(const fmpz_mat_t B) noexcept + int fmpz_lll_d(fmpz_mat_t B, fmpz_mat_t U, const fmpz_lll_t fl) noexcept + int fmpz_lll_d_heuristic(fmpz_mat_t B, fmpz_mat_t U, const fmpz_lll_t fl) noexcept + int fmpz_lll_mpf2(fmpz_mat_t B, fmpz_mat_t U, flint_bitcnt_t prec, const fmpz_lll_t fl) noexcept + int fmpz_lll_mpf(fmpz_mat_t B, fmpz_mat_t U, const fmpz_lll_t fl) noexcept + int fmpz_lll_wrapper(fmpz_mat_t B, fmpz_mat_t U, const fmpz_lll_t fl) noexcept + int fmpz_lll_d_with_removal(fmpz_mat_t B, fmpz_mat_t U, const fmpz_t gs_B, const fmpz_lll_t fl) noexcept + int fmpz_lll_d_heuristic_with_removal(fmpz_mat_t B, fmpz_mat_t U, const fmpz_t gs_B, const fmpz_lll_t fl) noexcept + int fmpz_lll_mpf2_with_removal(fmpz_mat_t B, fmpz_mat_t U, flint_bitcnt_t prec, const fmpz_t gs_B, const fmpz_lll_t fl) noexcept + int fmpz_lll_mpf_with_removal(fmpz_mat_t B, fmpz_mat_t U, const fmpz_t gs_B, const fmpz_lll_t fl) noexcept + int fmpz_lll_wrapper_with_removal(fmpz_mat_t B, fmpz_mat_t U, const fmpz_t gs_B, const fmpz_lll_t fl) noexcept + int fmpz_lll_d_with_removal_knapsack(fmpz_mat_t B, fmpz_mat_t U, const fmpz_t gs_B, const fmpz_lll_t fl) noexcept + int fmpz_lll_wrapper_with_removal_knapsack(fmpz_mat_t B, fmpz_mat_t U, const fmpz_t gs_B, const fmpz_lll_t fl) noexcept + int fmpz_lll_with_removal_ulll(fmpz_mat_t FM, fmpz_mat_t UM, slong new_size, const fmpz_t gs_B, const fmpz_lll_t fl) noexcept + bint fmpz_lll_is_reduced_d(const fmpz_mat_t B, const fmpz_lll_t fl) noexcept + bint fmpz_lll_is_reduced_mpfr(const fmpz_mat_t B, const fmpz_lll_t fl, flint_bitcnt_t prec) noexcept + bint fmpz_lll_is_reduced_d_with_removal(const fmpz_mat_t B, const fmpz_lll_t fl, const fmpz_t gs_B, int newd) noexcept + bint fmpz_lll_is_reduced_mpfr_with_removal(const fmpz_mat_t B, const fmpz_lll_t fl, const fmpz_t gs_B, int newd, flint_bitcnt_t prec) noexcept + bint fmpz_lll_is_reduced(const fmpz_mat_t B, const fmpz_lll_t fl, flint_bitcnt_t prec) noexcept + bint fmpz_lll_is_reduced_with_removal(const fmpz_mat_t B, const fmpz_lll_t fl, const fmpz_t gs_B, int newd, flint_bitcnt_t prec) noexcept + void fmpz_lll_storjohann_ulll(fmpz_mat_t FM, slong new_size, const fmpz_lll_t fl) noexcept + void fmpz_lll(fmpz_mat_t B, fmpz_mat_t U, const fmpz_lll_t fl) noexcept + int fmpz_lll_with_removal(fmpz_mat_t B, fmpz_mat_t U, const fmpz_t gs_B, const fmpz_lll_t fl) noexcept diff --git a/src/sage/libs/flint/fmpz_macros.pxd b/src/sage/libs/flint/fmpz_macros.pxd new file mode 100644 index 00000000000..4256a213c21 --- /dev/null +++ b/src/sage/libs/flint/fmpz_macros.pxd @@ -0,0 +1,7 @@ +# Macros from fmpz_poly.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + bint COEFF_IS_MPZ(fmpz f) diff --git a/src/sage/libs/flint/fmpz_mat.pxd b/src/sage/libs/flint/fmpz_mat.pxd index 91457930213..abde570c32f 100644 --- a/src/sage/libs/flint/fmpz_mat.pxd +++ b/src/sage/libs/flint/fmpz_mat.pxd @@ -1,39 +1,182 @@ # distutils: libraries = flint # distutils: depends = flint/fmpz_mat.h -from sage.libs.flint.types cimport fmpz_t, fmpz_poly_t, fmpz_mat_t +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * -# flint/fmpz_mat.h cdef extern from "flint_wrap.h": - void fmpz_mat_init(fmpz_mat_t mat, unsigned long rows, unsigned long cols) - void fmpz_mat_init_set(fmpz_mat_t mat, const fmpz_mat_t src) - void fmpz_mat_set(fmpz_mat_t result, fmpz_mat_t mat) - void fmpz_mat_clear(fmpz_mat_t mat) - int fmpz_mat_print_pretty(const fmpz_mat_t mat) - fmpz_t fmpz_mat_entry(fmpz_mat_t mat, long i, long j) - long fmpz_mat_nrows(fmpz_mat_t mat) - long fmpz_mat_ncols(fmpz_mat_t mat) - void fmpz_mat_one(fmpz_mat_t mat) - void fmpz_mat_zero(fmpz_mat_t mat) - void fmpz_mat_neg(fmpz_mat_t f, fmpz_mat_t g) - void fmpz_mat_scalar_mul_si(fmpz_mat_t B, const fmpz_mat_t A, long c) - void fmpz_mat_scalar_mul_fmpz(fmpz_mat_t B, const fmpz_mat_t A, const fmpz_t c) - void fmpz_mat_mul(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) - void fmpz_mat_sqr(fmpz_mat_t B, const fmpz_mat_t A) - 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) - void fmpz_mat_pow(fmpz_mat_t C, const fmpz_mat_t A, unsigned long n) - bint fmpz_mat_is_zero(const fmpz_mat_t mat) - bint fmpz_mat_is_one(const fmpz_mat_t mat) - void fmpz_mat_charpoly(fmpz_poly_t cp, const fmpz_mat_t mat) - void fmpz_mat_det(fmpz_t det, const fmpz_mat_t A) - int fmpz_mat_inv(fmpz_mat_t Ainv, fmpz_t den, const fmpz_mat_t A) - void fmpz_mat_transpose(fmpz_mat_t B, const fmpz_mat_t A) - long fmpz_mat_rref(fmpz_mat_t B, fmpz_t den, const fmpz_mat_t A) - long fmpz_mat_fflu(fmpz_mat_t B, fmpz_poly_t den, long *perm, const fmpz_mat_t A, int rank_check) - long fmpz_mat_rref_fraction_free(long * perm, fmpz_mat_t B, fmpz_t den, const fmpz_mat_t A) - long fmpz_mat_rank(const fmpz_mat_t A) - int fmpz_mat_solve(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) - long fmpz_mat_nullspace(fmpz_mat_t B, const 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) + void fmpz_mat_init(fmpz_mat_t mat, slong rows, slong cols) noexcept + void fmpz_mat_clear(fmpz_mat_t mat) noexcept + void fmpz_mat_set(fmpz_mat_t mat1, const fmpz_mat_t mat2) noexcept + void fmpz_mat_init_set(fmpz_mat_t mat, const fmpz_mat_t src) noexcept + slong fmpz_mat_nrows(const fmpz_mat_t mat) noexcept + slong fmpz_mat_ncols(const fmpz_mat_t mat) noexcept + void fmpz_mat_swap(fmpz_mat_t mat1, fmpz_mat_t mat2) noexcept + void fmpz_mat_swap_entrywise(fmpz_mat_t mat1, fmpz_mat_t mat2) noexcept + fmpz * fmpz_mat_entry(const fmpz_mat_t mat, slong i, slong j) noexcept + void fmpz_mat_zero(fmpz_mat_t mat) noexcept + void fmpz_mat_one(fmpz_mat_t mat) noexcept + void fmpz_mat_swap_rows(fmpz_mat_t mat, slong * perm, slong r, slong s) noexcept + void fmpz_mat_swap_cols(fmpz_mat_t mat, slong * perm, slong r, slong s) noexcept + void fmpz_mat_invert_rows(fmpz_mat_t mat, slong * perm) noexcept + void fmpz_mat_invert_cols(fmpz_mat_t mat, slong * perm) noexcept + void fmpz_mat_window_init(fmpz_mat_t window, const fmpz_mat_t mat, slong r1, slong c1, slong r2, slong c2) noexcept + void fmpz_mat_window_clear(fmpz_mat_t window) noexcept + void fmpz_mat_randbits(fmpz_mat_t mat, flint_rand_t state, flint_bitcnt_t bits) noexcept + void fmpz_mat_randtest(fmpz_mat_t mat, flint_rand_t state, flint_bitcnt_t bits) noexcept + void fmpz_mat_randintrel(fmpz_mat_t mat, flint_rand_t state, flint_bitcnt_t bits) noexcept + void fmpz_mat_randsimdioph(fmpz_mat_t mat, flint_rand_t state, flint_bitcnt_t bits, flint_bitcnt_t bits2) noexcept + void fmpz_mat_randntrulike(fmpz_mat_t mat, flint_rand_t state, flint_bitcnt_t bits, ulong q) noexcept + void fmpz_mat_randntrulike2(fmpz_mat_t mat, flint_rand_t state, flint_bitcnt_t bits, ulong q) noexcept + void fmpz_mat_randajtai(fmpz_mat_t mat, flint_rand_t state, double alpha) noexcept + int fmpz_mat_randpermdiag(fmpz_mat_t mat, flint_rand_t state, const fmpz * diag, slong n) noexcept + void fmpz_mat_randrank(fmpz_mat_t mat, flint_rand_t state, slong rank, flint_bitcnt_t bits) noexcept + void fmpz_mat_randdet(fmpz_mat_t mat, flint_rand_t state, const fmpz_t det) noexcept + void fmpz_mat_randops(fmpz_mat_t mat, flint_rand_t state, slong count) noexcept + int fmpz_mat_fprint(FILE * file, const fmpz_mat_t mat) noexcept + int fmpz_mat_fprint_pretty(FILE * file, const fmpz_mat_t mat) noexcept + int fmpz_mat_print(const fmpz_mat_t mat) noexcept + int fmpz_mat_print_pretty(const fmpz_mat_t mat) noexcept + int fmpz_mat_fread(FILE * file, fmpz_mat_t mat) noexcept + int fmpz_mat_read(fmpz_mat_t mat) noexcept + bint fmpz_mat_equal(const fmpz_mat_t mat1, const fmpz_mat_t mat2) noexcept + bint fmpz_mat_is_zero(const fmpz_mat_t mat) noexcept + bint fmpz_mat_is_one(const fmpz_mat_t mat) noexcept + bint fmpz_mat_is_empty(const fmpz_mat_t mat) noexcept + bint fmpz_mat_is_square(const fmpz_mat_t mat) noexcept + bint fmpz_mat_is_zero_row(const fmpz_mat_t mat, slong i) noexcept + bint fmpz_mat_equal_col(fmpz_mat_t M, slong m, slong n) noexcept + bint fmpz_mat_equal_row(fmpz_mat_t M, slong m, slong n) noexcept + void fmpz_mat_transpose(fmpz_mat_t B, const fmpz_mat_t A) noexcept + void fmpz_mat_concat_vertical(fmpz_mat_t res, const fmpz_mat_t mat1, const fmpz_mat_t mat2) noexcept + void fmpz_mat_concat_horizontal(fmpz_mat_t res, const fmpz_mat_t mat1, const fmpz_mat_t mat2) noexcept + void fmpz_mat_get_nmod_mat(nmod_mat_t Amod, const fmpz_mat_t A) noexcept + void fmpz_mat_set_nmod_mat(fmpz_mat_t A, const nmod_mat_t Amod) noexcept + void fmpz_mat_set_nmod_mat_unsigned(fmpz_mat_t A, const nmod_mat_t Amod) noexcept + 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) noexcept + 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) noexcept + void fmpz_mat_multi_mod_ui(nmod_mat_t * residues, slong nres, const fmpz_mat_t mat) noexcept + 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) noexcept + void fmpz_mat_multi_CRT_ui(fmpz_mat_t mat, nmod_mat_t * const residues, slong nres, int sign) noexcept + void fmpz_mat_add(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + void fmpz_mat_sub(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + void fmpz_mat_neg(fmpz_mat_t B, const fmpz_mat_t A) noexcept + void fmpz_mat_scalar_mul_si(fmpz_mat_t B, const fmpz_mat_t A, slong c) noexcept + void fmpz_mat_scalar_mul_ui(fmpz_mat_t B, const fmpz_mat_t A, ulong c) noexcept + void fmpz_mat_scalar_mul_fmpz(fmpz_mat_t B, const fmpz_mat_t A, const fmpz_t c) noexcept + void fmpz_mat_scalar_addmul_si(fmpz_mat_t B, const fmpz_mat_t A, slong c) noexcept + void fmpz_mat_scalar_addmul_ui(fmpz_mat_t B, const fmpz_mat_t A, ulong c) noexcept + void fmpz_mat_scalar_addmul_fmpz(fmpz_mat_t B, const fmpz_mat_t A, const fmpz_t c) noexcept + void fmpz_mat_scalar_submul_si(fmpz_mat_t B, const fmpz_mat_t A, slong c) noexcept + void fmpz_mat_scalar_submul_ui(fmpz_mat_t B, const fmpz_mat_t A, ulong c) noexcept + void fmpz_mat_scalar_submul_fmpz(fmpz_mat_t B, const fmpz_mat_t A, const fmpz_t c) noexcept + void fmpz_mat_scalar_addmul_nmod_mat_ui(fmpz_mat_t B, const nmod_mat_t A, ulong c) noexcept + void fmpz_mat_scalar_addmul_nmod_mat_fmpz(fmpz_mat_t B, const nmod_mat_t A, const fmpz_t c) noexcept + void fmpz_mat_scalar_divexact_si(fmpz_mat_t B, const fmpz_mat_t A, slong c) noexcept + void fmpz_mat_scalar_divexact_ui(fmpz_mat_t B, const fmpz_mat_t A, ulong c) noexcept + void fmpz_mat_scalar_divexact_fmpz(fmpz_mat_t B, const fmpz_mat_t A, const fmpz_t c) noexcept + void fmpz_mat_scalar_mul_2exp(fmpz_mat_t B, const fmpz_mat_t A, ulong exp) noexcept + void fmpz_mat_scalar_tdiv_q_2exp(fmpz_mat_t B, const fmpz_mat_t A, ulong exp) noexcept + void fmpz_mat_scalar_smod(fmpz_mat_t B, const fmpz_mat_t A, const fmpz_t P) noexcept + void fmpz_mat_mul(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + void fmpz_mat_mul_classical(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + void fmpz_mat_mul_strassen(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + 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) noexcept + void fmpz_mat_mul_multi_mod(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + int fmpz_mat_mul_blas(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + void fmpz_mat_mul_fft(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + void fmpz_mat_sqr(fmpz_mat_t B, const fmpz_mat_t A) noexcept + void fmpz_mat_sqr_bodrato(fmpz_mat_t B, const fmpz_mat_t A) noexcept + void fmpz_mat_pow(fmpz_mat_t B, const fmpz_mat_t A, ulong e) noexcept + void _fmpz_mat_mul_small(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + void _fmpz_mat_mul_double_word(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + void fmpz_mat_mul_fmpz_vec(fmpz * c, const fmpz_mat_t A, const fmpz * b, slong blen) noexcept + void fmpz_mat_mul_fmpz_vec_ptr(fmpz * const * c, const fmpz_mat_t A, const fmpz * const * b, slong blen) noexcept + void fmpz_mat_fmpz_vec_mul(fmpz * c, const fmpz * a, slong alen, const fmpz_mat_t B) noexcept + void fmpz_mat_fmpz_vec_mul_ptr(fmpz * const * c, const fmpz * const * a, slong alen, const fmpz_mat_t B) noexcept + int fmpz_mat_inv(fmpz_mat_t Ainv, fmpz_t den, const fmpz_mat_t A) noexcept + void fmpz_mat_kronecker_product(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + void fmpz_mat_content(fmpz_t mat_gcd, const fmpz_mat_t A) noexcept + void fmpz_mat_trace(fmpz_t trace, const fmpz_mat_t mat) noexcept + void fmpz_mat_det(fmpz_t det, const fmpz_mat_t A) noexcept + void fmpz_mat_det_cofactor(fmpz_t det, const fmpz_mat_t A) noexcept + void fmpz_mat_det_bareiss(fmpz_t det, const fmpz_mat_t A) noexcept + void fmpz_mat_det_modular(fmpz_t det, const fmpz_mat_t A, int proved) noexcept + void fmpz_mat_det_modular_accelerated(fmpz_t det, const fmpz_mat_t A, int proved) noexcept + void fmpz_mat_det_modular_given_divisor(fmpz_t det, const fmpz_mat_t A, const fmpz_t d, int proved) noexcept + void fmpz_mat_det_bound(fmpz_t bound, const fmpz_mat_t A) noexcept + void fmpz_mat_det_bound_nonzero(fmpz_t bound, const fmpz_mat_t A) noexcept + void fmpz_mat_det_divisor(fmpz_t d, const fmpz_mat_t A) noexcept + void fmpz_mat_similarity(fmpz_mat_t A, slong r, fmpz_t d) noexcept + void _fmpz_mat_charpoly_berkowitz(fmpz * cp, const fmpz_mat_t mat) noexcept + void fmpz_mat_charpoly_berkowitz(fmpz_poly_t cp, const fmpz_mat_t mat) noexcept + void _fmpz_mat_charpoly_modular(fmpz * cp, const fmpz_mat_t mat) noexcept + void fmpz_mat_charpoly_modular(fmpz_poly_t cp, const fmpz_mat_t mat) noexcept + void _fmpz_mat_charpoly(fmpz * cp, const fmpz_mat_t mat) noexcept + void fmpz_mat_charpoly(fmpz_poly_t cp, const fmpz_mat_t mat) noexcept + slong _fmpz_mat_minpoly_modular(fmpz * cp, const fmpz_mat_t mat) noexcept + void fmpz_mat_minpoly_modular(fmpz_poly_t cp, const fmpz_mat_t mat) noexcept + slong _fmpz_mat_minpoly(fmpz * cp, const fmpz_mat_t mat) noexcept + void fmpz_mat_minpoly(fmpz_poly_t cp, const fmpz_mat_t mat) noexcept + slong fmpz_mat_rank(const fmpz_mat_t A) noexcept + int fmpz_mat_col_partition(slong * part, fmpz_mat_t M, int short_circuit) noexcept + int fmpz_mat_solve(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + int fmpz_mat_solve_fflu(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + int fmpz_mat_solve_fflu_precomp(fmpz_mat_t X, const slong * perm, const fmpz_mat_t FFLU, const fmpz_mat_t B) noexcept + int fmpz_mat_solve_cramer(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + void fmpz_mat_solve_bound(fmpz_t N, fmpz_t D, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + int fmpz_mat_solve_dixon(fmpz_mat_t X, fmpz_t M, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + 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) noexcept + int fmpz_mat_solve_dixon_den(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + int fmpz_mat_solve_multi_mod_den(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + 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) noexcept + int fmpz_mat_can_solve_fflu(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + int fmpz_mat_can_solve(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) noexcept + slong fmpz_mat_find_pivot_any(const fmpz_mat_t mat, slong start_row, slong end_row, slong c) noexcept + slong fmpz_mat_fflu(fmpz_mat_t B, fmpz_t den, slong * perm, const fmpz_mat_t A, int rank_check) noexcept + slong fmpz_mat_rref(fmpz_mat_t B, fmpz_t den, const fmpz_mat_t A) noexcept + slong fmpz_mat_rref_fflu(fmpz_mat_t B, fmpz_t den, const fmpz_mat_t A) noexcept + slong fmpz_mat_rref_mul(fmpz_mat_t B, fmpz_t den, const fmpz_mat_t A) noexcept + bint fmpz_mat_is_in_rref_with_rank(const fmpz_mat_t A, const fmpz_t den, slong rank) noexcept + slong fmpz_mat_rref_mod(slong * perm, fmpz_mat_t A, const fmpz_t p) noexcept + void fmpz_mat_strong_echelon_form_mod(fmpz_mat_t A, const fmpz_t mod) noexcept + slong fmpz_mat_howell_form_mod(fmpz_mat_t A, const fmpz_t mod) noexcept + slong fmpz_mat_nullspace(fmpz_mat_t B, const fmpz_mat_t A) noexcept + slong fmpz_mat_rref_fraction_free(slong * perm, fmpz_mat_t B, fmpz_t den, const fmpz_mat_t A) noexcept + void fmpz_mat_hnf(fmpz_mat_t H, const fmpz_mat_t A) noexcept + void fmpz_mat_hnf_transform(fmpz_mat_t H, fmpz_mat_t U, const fmpz_mat_t A) noexcept + void fmpz_mat_hnf_classical(fmpz_mat_t H, const fmpz_mat_t A) noexcept + void fmpz_mat_hnf_xgcd(fmpz_mat_t H, const fmpz_mat_t A) noexcept + void fmpz_mat_hnf_modular(fmpz_mat_t H, const fmpz_mat_t A, const fmpz_t D) noexcept + void fmpz_mat_hnf_modular_eldiv(fmpz_mat_t A, const fmpz_t D) noexcept + void fmpz_mat_hnf_minors(fmpz_mat_t H, const fmpz_mat_t A) noexcept + void fmpz_mat_hnf_pernet_stein(fmpz_mat_t H, const fmpz_mat_t A, flint_rand_t state) noexcept + bint fmpz_mat_is_in_hnf(const fmpz_mat_t A) noexcept + void fmpz_mat_snf(fmpz_mat_t S, const fmpz_mat_t A) noexcept + void fmpz_mat_snf_diagonal(fmpz_mat_t S, const fmpz_mat_t A) noexcept + void fmpz_mat_snf_kannan_bachem(fmpz_mat_t S, const fmpz_mat_t A) noexcept + void fmpz_mat_snf_iliopoulos(fmpz_mat_t S, const fmpz_mat_t A, const fmpz_t mod) noexcept + bint fmpz_mat_is_in_snf(const fmpz_mat_t A) noexcept + void fmpz_mat_gram(fmpz_mat_t B, const fmpz_mat_t A) noexcept + bint fmpz_mat_is_hadamard(const fmpz_mat_t H) noexcept + int fmpz_mat_hadamard(fmpz_mat_t H) noexcept + int fmpz_mat_get_d_mat(d_mat_t B, const fmpz_mat_t A) noexcept + int fmpz_mat_get_d_mat_transpose(d_mat_t B, const fmpz_mat_t A) noexcept + void fmpz_mat_is_spd(const fmpz_mat_t A) noexcept + void fmpz_mat_chol_d(d_mat_t R, const fmpz_mat_t A) noexcept + bint fmpz_mat_is_reduced(const fmpz_mat_t A, double delta, double eta) noexcept + bint fmpz_mat_is_reduced_gram(const fmpz_mat_t A, double delta, double eta) noexcept + bint fmpz_mat_is_reduced_with_removal(const fmpz_mat_t A, double delta, double eta, const fmpz_t gs_B, int newd) noexcept + bint fmpz_mat_is_reduced_gram_with_removal(const fmpz_mat_t A, double delta, double eta, const fmpz_t gs_B, int newd) noexcept + void fmpz_mat_lll_original(fmpz_mat_t A, const fmpq_t delta, const fmpq_t eta) noexcept + void fmpz_mat_lll_storjohann(fmpz_mat_t A, const fmpq_t delta, const fmpq_t eta) noexcept + +from .fmpz_mat_macros cimport * diff --git a/src/sage/libs/flint/fmpz_mat_macros.pxd b/src/sage/libs/flint/fmpz_mat_macros.pxd new file mode 100644 index 00000000000..3aa4ef5ada0 --- /dev/null +++ b/src/sage/libs/flint/fmpz_mat_macros.pxd @@ -0,0 +1,9 @@ +# Macros from fmpz_mat.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + fmpz * fmpz_mat_entry(fmpz_mat_t mat, slong i, slong j) + slong fmpz_mat_nrows(fmpz_mat_t) + slong fmpz_mat_ncols(fmpz_mat_t) diff --git a/src/sage/libs/flint/fmpz_mod.pxd b/src/sage/libs/flint/fmpz_mod.pxd index 555b3123398..4089589dd53 100644 --- a/src/sage/libs/flint/fmpz_mod.pxd +++ b/src/sage/libs/flint/fmpz_mod.pxd @@ -1,46 +1,44 @@ # distutils: libraries = flint # distutils: depends = flint/fmpz_mod.h -# flint/fmpz_mod.h -cdef extern from "flint_wrap.h": - void fmpz_mod_ctx_init(fmpz_mod_ctx_t ctx, const fmpz_t n) - void fmpz_mod_ctx_init_ui(fmpz_mod_ctx_t ctx, ulong n) - void fmpz_mod_ctx_clear(fmpz_mod_ctx_t ctx) - - const fmpz * fmpz_mod_ctx_modulus(const fmpz_mod_ctx_t ctx) - - void fmpz_mod_ctx_set_modulus(fmpz_mod_ctx_t ctx, const fmpz_t n) - void fmpz_mod_ctx_set_modulus_ui(fmpz_mod_ctx_t ctx, ulong n) - - int fmpz_mod_is_canonical(const fmpz_t a, const fmpz_mod_ctx_t ctx) - void fmpz_mod_assert_canonical(const fmpz_t a, const fmpz_mod_ctx_t ctx) - - int fmpz_mod_is_one(const fmpz_t a, const fmpz_mod_ctx_t ctx) - void fmpz_mod_add(fmpz_t a, const fmpz_t b, const fmpz_t c, const fmpz_mod_ctx_t ctx) - void fmpz_mod_sub(fmpz_t a, const fmpz_t b, const fmpz_t c, const fmpz_mod_ctx_t ctx) - void fmpz_mod_neg(fmpz_t a, const fmpz_t b, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_mul(fmpz_t a, const fmpz_t b, const fmpz_t c, const fmpz_mod_ctx_t ctx) - void fmpz_mod_inv(fmpz_t a, const fmpz_t b, const fmpz_mod_ctx_t ctx) +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ - int fmpz_mod_divides(fmpz_t a, const fmpz_t b, const fmpz_t c, const fmpz_mod_ctx_t ctx) - void fmpz_mod_pow_ui(fmpz_t a, const fmpz_t b, ulong pow, const fmpz_mod_ctx_t ctx) - int fmpz_mod_pow_fmpz(fmpz_t a, const fmpz_t b, const fmpz_t pow, const fmpz_mod_ctx_t ctx) +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * - void fmpz_mod_discrete_log_pohlig_hellman_init(fmpz_mod_discrete_log_pohlig_hellman_t L) - - void fmpz_mod_discrete_log_pohlig_hellman_clear(fmpz_mod_discrete_log_pohlig_hellman_t L) - - double fmpz_mod_discrete_log_pohlig_hellman_precompute_prime( - fmpz_mod_discrete_log_pohlig_hellman_t L, - const fmpz_t p) - - void fmpz_mod_discrete_log_pohlig_hellman_run( - fmpz_t x, - const fmpz_mod_discrete_log_pohlig_hellman_t L, - const fmpz_t y) - - const fmpz * fmpz_mod_discrete_log_pohlig_hellman_primitive_root( - fmpz_mod_discrete_log_pohlig_hellman_t L) - - int fmpz_next_smooth_prime(fmpz_t a, const fmpz_t b) +cdef extern from "flint_wrap.h": + void fmpz_mod_ctx_init(fmpz_mod_ctx_t ctx, const fmpz_t n) noexcept + void fmpz_mod_ctx_clear(fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_ctx_set_modulus(fmpz_mod_ctx_t ctx, const fmpz_t n) noexcept + void fmpz_mod_set_fmpz(fmpz_t a, const fmpz_t b, const fmpz_mod_ctx_t ctx) noexcept + bint fmpz_mod_is_canonical(const fmpz_t a, const fmpz_mod_ctx_t ctx) noexcept + bint fmpz_mod_is_one(const fmpz_t a, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_add(fmpz_t a, const fmpz_t b, const fmpz_t c, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_add_fmpz(fmpz_t a, const fmpz_t b, const fmpz_t c, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_add_ui(fmpz_t a, const fmpz_t b, ulong c, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_add_si(fmpz_t a, const fmpz_t b, slong c, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_sub(fmpz_t a, const fmpz_t b, const fmpz_t c, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_sub_fmpz(fmpz_t a, const fmpz_t b, const fmpz_t c, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_sub_ui(fmpz_t a, const fmpz_t b, ulong c, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_sub_si(fmpz_t a, const fmpz_t b, slong c, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_fmpz_sub(fmpz_t a, const fmpz_t b, const fmpz_t c, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_ui_sub(fmpz_t a, ulong b, const fmpz_t c, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_si_sub(fmpz_t a, slong b, const fmpz_t c, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_neg(fmpz_t a, const fmpz_t b, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_mul(fmpz_t a, const fmpz_t b, const fmpz_t c, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_inv(fmpz_t a, const fmpz_t b, const fmpz_mod_ctx_t ctx) noexcept + int fmpz_mod_divides(fmpz_t a, const fmpz_t b, const fmpz_t c, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_pow_ui(fmpz_t a, const fmpz_t b, ulong e, const fmpz_mod_ctx_t ctx) noexcept + int fmpz_mod_pow_fmpz(fmpz_t a, const fmpz_t b, const fmpz_t e, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_discrete_log_pohlig_hellman_init(fmpz_mod_discrete_log_pohlig_hellman_t L) noexcept + void fmpz_mod_discrete_log_pohlig_hellman_clear(fmpz_mod_discrete_log_pohlig_hellman_t L) noexcept + double fmpz_mod_discrete_log_pohlig_hellman_precompute_prime(fmpz_mod_discrete_log_pohlig_hellman_t L, const fmpz_t p) noexcept + const fmpz * fmpz_mod_discrete_log_pohlig_hellman_primitive_root(fmpz_mod_discrete_log_pohlig_hellman_t L) noexcept + void fmpz_mod_discrete_log_pohlig_hellman_run(fmpz_t x, const fmpz_mod_discrete_log_pohlig_hellman_t L, const fmpz_t y) noexcept + int fmpz_next_smooth_prime(fmpz_t a, const fmpz_t b) noexcept diff --git a/src/sage/libs/flint/fmpz_mod_mat.pxd b/src/sage/libs/flint/fmpz_mod_mat.pxd new file mode 100644 index 00000000000..ce473497e3a --- /dev/null +++ b/src/sage/libs/flint/fmpz_mod_mat.pxd @@ -0,0 +1,69 @@ +# distutils: libraries = flint +# distutils: depends = flint/fmpz_mod_mat.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + fmpz * fmpz_mod_mat_entry(const fmpz_mod_mat_t mat, slong i, slong j) noexcept + void fmpz_mod_mat_set_entry(fmpz_mod_mat_t mat, slong i, slong j, const fmpz_t val) noexcept + void fmpz_mod_mat_init(fmpz_mod_mat_t mat, slong rows, slong cols, const fmpz_t n) noexcept + void fmpz_mod_mat_init_set(fmpz_mod_mat_t mat, const fmpz_mod_mat_t src) noexcept + void fmpz_mod_mat_clear(fmpz_mod_mat_t mat) noexcept + slong fmpz_mod_mat_nrows(const fmpz_mod_mat_t mat) noexcept + slong fmpz_mod_mat_ncols(const fmpz_mod_mat_t mat) noexcept + void _fmpz_mod_mat_set_mod(fmpz_mod_mat_t mat, const fmpz_t n) noexcept + void fmpz_mod_mat_one(fmpz_mod_mat_t mat) noexcept + void fmpz_mod_mat_zero(fmpz_mod_mat_t mat) noexcept + void fmpz_mod_mat_swap(fmpz_mod_mat_t mat1, fmpz_mod_mat_t mat2) noexcept + void fmpz_mod_mat_swap_entrywise(fmpz_mod_mat_t mat1, fmpz_mod_mat_t mat2) noexcept + bint fmpz_mod_mat_is_empty(const fmpz_mod_mat_t mat) noexcept + bint fmpz_mod_mat_is_square(const fmpz_mod_mat_t mat) noexcept + void _fmpz_mod_mat_reduce(fmpz_mod_mat_t mat) noexcept + void fmpz_mod_mat_randtest(fmpz_mod_mat_t mat, flint_rand_t state) noexcept + void fmpz_mod_mat_window_init(fmpz_mod_mat_t window, const fmpz_mod_mat_t mat, slong r1, slong c1, slong r2, slong c2) noexcept + void fmpz_mod_mat_window_clear(fmpz_mod_mat_t window) noexcept + void fmpz_mod_mat_concat_horizontal(fmpz_mod_mat_t res, const fmpz_mod_mat_t mat1, const fmpz_mod_mat_t mat2) noexcept + void fmpz_mod_mat_concat_vertical(fmpz_mod_mat_t res, const fmpz_mod_mat_t mat1, const fmpz_mod_mat_t mat2) noexcept + void fmpz_mod_mat_print_pretty(const fmpz_mod_mat_t mat) noexcept + bint fmpz_mod_mat_is_zero(const fmpz_mod_mat_t mat) noexcept + void fmpz_mod_mat_set(fmpz_mod_mat_t B, const fmpz_mod_mat_t A) noexcept + void fmpz_mod_mat_transpose(fmpz_mod_mat_t B, const fmpz_mod_mat_t A) noexcept + void fmpz_mod_mat_set_fmpz_mat(fmpz_mod_mat_t A, const fmpz_mat_t B) noexcept + void fmpz_mod_mat_get_fmpz_mat(fmpz_mat_t A, const fmpz_mod_mat_t B) noexcept + void fmpz_mod_mat_add(fmpz_mod_mat_t C, const fmpz_mod_mat_t A, const fmpz_mod_mat_t B) noexcept + void fmpz_mod_mat_sub(fmpz_mod_mat_t C, const fmpz_mod_mat_t A, const fmpz_mod_mat_t B) noexcept + void fmpz_mod_mat_neg(fmpz_mod_mat_t B, const fmpz_mod_mat_t A) noexcept + void fmpz_mod_mat_scalar_mul_si(fmpz_mod_mat_t B, const fmpz_mod_mat_t A, slong c) noexcept + void fmpz_mod_mat_scalar_mul_ui(fmpz_mod_mat_t B, const fmpz_mod_mat_t A, ulong c) noexcept + void fmpz_mod_mat_scalar_mul_fmpz(fmpz_mod_mat_t B, const fmpz_mod_mat_t A, fmpz_t c) noexcept + void fmpz_mod_mat_mul(fmpz_mod_mat_t C, const fmpz_mod_mat_t A, const fmpz_mod_mat_t B) noexcept + void _fmpz_mod_mat_mul_classical_threaded_pool_op(fmpz_mod_mat_t D, const fmpz_mod_mat_t C, const fmpz_mod_mat_t A, const fmpz_mod_mat_t B, int op, thread_pool_handle * threads, slong num_threads) noexcept + void _fmpz_mod_mat_mul_classical_threaded_op(fmpz_mod_mat_t D, const fmpz_mod_mat_t C, const fmpz_mod_mat_t A, const fmpz_mod_mat_t B, int op) noexcept + void fmpz_mod_mat_mul_classical_threaded(fmpz_mod_mat_t C, const fmpz_mod_mat_t A, const fmpz_mod_mat_t B) noexcept + void fmpz_mod_mat_sqr(fmpz_mod_mat_t B, const fmpz_mod_mat_t A) noexcept + void fmpz_mod_mat_mul_fmpz_vec(fmpz * c, const fmpz_mod_mat_t A, const fmpz * b, slong blen) noexcept + void fmpz_mod_mat_mul_fmpz_vec_ptr(fmpz * const * c, const fmpz_mod_mat_t A, const fmpz * const * b, slong blen) noexcept + void fmpz_mod_mat_fmpz_vec_mul(fmpz * c, const fmpz * a, slong alen, const fmpz_mod_mat_t B) noexcept + void fmpz_mod_mat_fmpz_vec_mul_ptr(fmpz * const * c, const fmpz * const * a, slong alen, const fmpz_mod_mat_t B) noexcept + void fmpz_mod_mat_trace(fmpz_t trace, const fmpz_mod_mat_t mat) noexcept + slong fmpz_mod_mat_rref(slong * perm, fmpz_mod_mat_t mat) noexcept + void fmpz_mod_mat_strong_echelon_form(fmpz_mod_mat_t mat) noexcept + slong fmpz_mod_mat_howell_form(fmpz_mod_mat_t mat) noexcept + int fmpz_mod_mat_inv(fmpz_mod_mat_t B, fmpz_mod_mat_t A) noexcept + slong fmpz_mod_mat_lu(slong * P, fmpz_mod_mat_t A, int rank_check) noexcept + void fmpz_mod_mat_solve_tril(fmpz_mod_mat_t X, const fmpz_mod_mat_t L, const fmpz_mod_mat_t B, int unit) noexcept + void fmpz_mod_mat_solve_triu(fmpz_mod_mat_t X, const fmpz_mod_mat_t U, const fmpz_mod_mat_t B, int unit) noexcept + int fmpz_mod_mat_solve(fmpz_mod_mat_t X, const fmpz_mod_mat_t A, const fmpz_mod_mat_t B) noexcept + int fmpz_mod_mat_can_solve(fmpz_mod_mat_t X, const fmpz_mod_mat_t A, const fmpz_mod_mat_t B) noexcept + void fmpz_mod_mat_similarity(fmpz_mod_mat_t M, slong r, fmpz_t d) noexcept + void fmpz_mod_mat_charpoly(fmpz_mod_poly_t p, const fmpz_mod_mat_t M, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_mat_minpoly(fmpz_mod_poly_t p, const fmpz_mod_mat_t M, const fmpz_mod_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fmpz_mod_mpoly.pxd b/src/sage/libs/flint/fmpz_mod_mpoly.pxd new file mode 100644 index 00000000000..d0a32382809 --- /dev/null +++ b/src/sage/libs/flint/fmpz_mod_mpoly.pxd @@ -0,0 +1,159 @@ +# distutils: libraries = flint +# distutils: depends = flint/fmpz_mod_mpoly.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fmpz_mod_mpoly_ctx_init(fmpz_mod_mpoly_ctx_t ctx, slong nvars, const ordering_t ord, const fmpz_t p) noexcept + slong fmpz_mod_mpoly_ctx_nvars(const fmpz_mod_mpoly_ctx_t ctx) noexcept + ordering_t fmpz_mod_mpoly_ctx_ord(const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_ctx_get_modulus(fmpz_t n, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_ctx_clear(fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_init(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_init2(fmpz_mod_mpoly_t A, slong alloc, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_init3(fmpz_mod_mpoly_t A, slong alloc, flint_bitcnt_t bits, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_clear(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + char * fmpz_mod_mpoly_get_str_pretty(const fmpz_mod_mpoly_t A, const char ** x, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_fprint_pretty(FILE * file, const fmpz_mod_mpoly_t A, const char ** x, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_print_pretty(const fmpz_mod_mpoly_t A, const char ** x, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_set_str_pretty(fmpz_mod_mpoly_t A, const char * str, const char ** x, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_gen(fmpz_mod_mpoly_t A, slong var, const fmpz_mod_mpoly_ctx_t ctx) noexcept + bint fmpz_mod_mpoly_is_gen(const fmpz_mod_mpoly_t A, slong var, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_set(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) noexcept + bint fmpz_mod_mpoly_equal(const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_swap(fmpz_mod_mpoly_t poly1, fmpz_mod_mpoly_t poly2, const fmpz_mod_mpoly_ctx_t ctx) noexcept + bint fmpz_mod_mpoly_is_fmpz(const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_get_fmpz(fmpz_t c, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_set_fmpz(fmpz_mod_mpoly_t A, const fmpz_t c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_set_ui(fmpz_mod_mpoly_t A, ulong c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_set_si(fmpz_mod_mpoly_t A, slong c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_zero(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_one(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + bint fmpz_mod_mpoly_equal_fmpz(const fmpz_mod_mpoly_t A, const fmpz_t c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + bint fmpz_mod_mpoly_equal_ui(const fmpz_mod_mpoly_t A, ulong c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + bint fmpz_mod_mpoly_equal_si(const fmpz_mod_mpoly_t A, slong c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + bint fmpz_mod_mpoly_is_zero(const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + bint fmpz_mod_mpoly_is_one(const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_degrees_fit_si(const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_degrees_fmpz(fmpz ** degs, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_degrees_si(slong * degs, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_degree_fmpz(fmpz_t deg, const fmpz_mod_mpoly_t A, slong var, const fmpz_mod_mpoly_ctx_t ctx) noexcept + slong fmpz_mod_mpoly_degree_si(const fmpz_mod_mpoly_t A, slong var, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_total_degree_fits_si(const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_total_degree_fmpz(fmpz_t tdeg, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + slong fmpz_mod_mpoly_total_degree_si(const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_used_vars(int * used, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_get_coeff_fmpz_monomial(fmpz_t c, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t M, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_set_coeff_fmpz_monomial(fmpz_mod_mpoly_t A, const fmpz_t c, const fmpz_mod_mpoly_t M, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_get_coeff_fmpz_fmpz(fmpz_t c, const fmpz_mod_mpoly_t A, fmpz * const * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_get_coeff_fmpz_ui(fmpz_t c, const fmpz_mod_mpoly_t A, const ulong * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_set_coeff_fmpz_fmpz(fmpz_mod_mpoly_t A, const fmpz_t c, fmpz * const * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_set_coeff_ui_fmpz(fmpz_mod_mpoly_t A, ulong c, fmpz * const * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_set_coeff_si_fmpz(fmpz_mod_mpoly_t A, slong c, fmpz * const * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_set_coeff_fmpz_ui(fmpz_mod_mpoly_t A, const fmpz_t c, const ulong * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_set_coeff_ui_ui(fmpz_mod_mpoly_t A, ulong c, const ulong * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_set_coeff_si_ui(fmpz_mod_mpoly_t A, slong c, const ulong * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_get_coeff_vars_ui(fmpz_mod_mpoly_t C, const fmpz_mod_mpoly_t A, const slong * vars, const ulong * exps, slong length, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_cmp(const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) noexcept + bint fmpz_mod_mpoly_is_canonical(const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + slong fmpz_mod_mpoly_length(const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_resize(fmpz_mod_mpoly_t A, slong new_length, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_get_term_coeff_fmpz(fmpz_t c, const fmpz_mod_mpoly_t A, slong i, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_set_term_coeff_fmpz(fmpz_mod_mpoly_t A, slong i, const fmpz_t c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_set_term_coeff_ui(fmpz_mod_mpoly_t A, slong i, ulong c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_set_term_coeff_si(fmpz_mod_mpoly_t A, slong i, slong c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_term_exp_fits_si(const fmpz_mod_mpoly_t poly, slong i, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_term_exp_fits_ui(const fmpz_mod_mpoly_t poly, slong i, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_get_term_exp_fmpz(fmpz ** exp, const fmpz_mod_mpoly_t A, slong i, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_get_term_exp_ui(ulong * exp, const fmpz_mod_mpoly_t A, slong i, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_get_term_exp_si(slong * exp, const fmpz_mod_mpoly_t A, slong i, const fmpz_mod_mpoly_ctx_t ctx) noexcept + ulong fmpz_mod_mpoly_get_term_var_exp_ui(const fmpz_mod_mpoly_t A, slong i, slong var, const fmpz_mod_mpoly_ctx_t ctx) noexcept + slong fmpz_mod_mpoly_get_term_var_exp_si(const fmpz_mod_mpoly_t A, slong i, slong var, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_set_term_exp_fmpz(fmpz_mod_mpoly_t A, slong i, fmpz * const * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_set_term_exp_ui(fmpz_mod_mpoly_t A, slong i, const ulong * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_get_term(fmpz_mod_mpoly_t M, const fmpz_mod_mpoly_t A, slong i, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_get_term_monomial(fmpz_mod_mpoly_t M, const fmpz_mod_mpoly_t A, slong i, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_push_term_fmpz_fmpz(fmpz_mod_mpoly_t A, const fmpz_t c, fmpz * const * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_push_term_fmpz_ffmpz(fmpz_mod_mpoly_t A, const fmpz_t c, const fmpz * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_push_term_ui_fmpz(fmpz_mod_mpoly_t A, ulong c, fmpz * const * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_push_term_ui_ffmpz(fmpz_mod_mpoly_t A, ulong c, const fmpz * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_push_term_si_fmpz(fmpz_mod_mpoly_t A, slong c, fmpz * const * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_push_term_si_ffmpz(fmpz_mod_mpoly_t A, slong c, const fmpz * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_push_term_fmpz_ui(fmpz_mod_mpoly_t A, const fmpz_t c, const ulong * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_push_term_ui_ui(fmpz_mod_mpoly_t A, ulong c, const ulong * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_push_term_si_ui(fmpz_mod_mpoly_t A, slong c, const ulong * exp, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_sort_terms(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_combine_like_terms(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_reverse(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_randtest_bound(fmpz_mod_mpoly_t A, flint_rand_t state, slong length, ulong exp_bound, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_randtest_bounds(fmpz_mod_mpoly_t A, flint_rand_t state, slong length, ulong * exp_bounds, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_randtest_bits(fmpz_mod_mpoly_t A, flint_rand_t state, slong length, mp_limb_t exp_bits, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_add_fmpz(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_t c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_add_ui(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, ulong c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_add_si(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, slong c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_sub_fmpz(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_t c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_sub_ui(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, ulong c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_sub_si(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, slong c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_add(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_t C, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_sub(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_t C, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_neg(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_scalar_mul_fmpz(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_t c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_scalar_mul_ui(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, ulong c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_scalar_mul_si(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, slong c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_scalar_addmul_fmpz(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_t C, const fmpz_t d, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_make_monic(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_derivative(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, slong var, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_evaluate_all_fmpz(fmpz_t eval, const fmpz_mod_mpoly_t A, fmpz * const * vals, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_evaluate_one_fmpz(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, slong var, const fmpz_t val, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_compose_fmpz_poly(fmpz_poly_t A, const fmpz_mod_mpoly_t B, fmpz_poly_struct * const * C, const fmpz_mod_mpoly_ctx_t ctxB) noexcept + int fmpz_mod_mpoly_compose_fmpz_mod_mpoly_geobucket(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, fmpz_mod_mpoly_struct * const * C, const fmpz_mod_mpoly_ctx_t ctxB, const fmpz_mod_mpoly_ctx_t ctxAC) noexcept + int fmpz_mod_mpoly_compose_fmpz_mod_mpoly(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, fmpz_mod_mpoly_struct * const * C, const fmpz_mod_mpoly_ctx_t ctxB, const fmpz_mod_mpoly_ctx_t ctxAC) noexcept + void fmpz_mod_mpoly_compose_fmpz_mod_mpoly_gen(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const slong * c, const fmpz_mod_mpoly_ctx_t ctxB, const fmpz_mod_mpoly_ctx_t ctxAC) noexcept + void fmpz_mod_mpoly_mul(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_t C, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_mul_johnson(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_t C, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_mul_dense(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_t C, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_pow_fmpz(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_t k, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_pow_ui(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, ulong k, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_divides(fmpz_mod_mpoly_t Q, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_div(fmpz_mod_mpoly_t Q, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_divrem(fmpz_mod_mpoly_t Q, fmpz_mod_mpoly_t R, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_divrem_ideal(fmpz_mod_mpoly_struct ** Q, fmpz_mod_mpoly_t R, const fmpz_mod_mpoly_t A, fmpz_mod_mpoly_struct * const * B, slong len, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_term_content(fmpz_mod_mpoly_t M, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_content_vars(fmpz_mod_mpoly_t g, const fmpz_mod_mpoly_t A, slong * vars, slong vars_length, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_gcd(fmpz_mod_mpoly_t G, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_gcd_cofactors(fmpz_mod_mpoly_t G, fmpz_mod_mpoly_t Abar, fmpz_mod_mpoly_t Bbar, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_gcd_brown(fmpz_mod_mpoly_t G, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_gcd_hensel(fmpz_mod_mpoly_t G, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_gcd_subresultant(fmpz_mod_mpoly_t G, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_gcd_zippel(fmpz_mod_mpoly_t G, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_gcd_zippel2(fmpz_mod_mpoly_t G, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_resultant(fmpz_mod_mpoly_t R, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, slong var, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_discriminant(fmpz_mod_mpoly_t D, const fmpz_mod_mpoly_t A, slong var, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_sqrt(fmpz_mod_mpoly_t Q, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + bint fmpz_mod_mpoly_is_square(const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_quadratic_root(fmpz_mod_mpoly_t Q, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_univar_init(fmpz_mod_mpoly_univar_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_univar_clear(fmpz_mod_mpoly_univar_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_univar_swap(fmpz_mod_mpoly_univar_t A, fmpz_mod_mpoly_univar_t B, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_to_univar(fmpz_mod_mpoly_univar_t A, const fmpz_mod_mpoly_t B, slong var, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_from_univar(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_univar_t B, slong var, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_univar_degree_fits_si(const fmpz_mod_mpoly_univar_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + slong fmpz_mod_mpoly_univar_length(const fmpz_mod_mpoly_univar_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + slong fmpz_mod_mpoly_univar_get_term_exp_si(fmpz_mod_mpoly_univar_t A, slong i, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_univar_get_term_coeff(fmpz_mod_mpoly_t c, const fmpz_mod_mpoly_univar_t A, slong i, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_univar_swap_term_coeff(fmpz_mod_mpoly_t c, fmpz_mod_mpoly_univar_t A, slong i, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_univar_set_coeff_ui(fmpz_mod_mpoly_univar_t Ax, ulong e, const fmpz_mod_mpoly_t c, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_univar_resultant(fmpz_mod_mpoly_t R, const fmpz_mod_mpoly_univar_t Ax, const fmpz_mod_mpoly_univar_t Bx, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_univar_discriminant(fmpz_mod_mpoly_t D, const fmpz_mod_mpoly_univar_t Ax, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_inflate(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz * shift, const fmpz * stride, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_deflate(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz * shift, const fmpz * stride, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_deflation(fmpz * shift, fmpz * stride, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fmpz_mod_mpoly_factor.pxd b/src/sage/libs/flint/fmpz_mod_mpoly_factor.pxd new file mode 100644 index 00000000000..c1c9657975e --- /dev/null +++ b/src/sage/libs/flint/fmpz_mod_mpoly_factor.pxd @@ -0,0 +1,26 @@ +# distutils: libraries = flint +# distutils: depends = flint/fmpz_mod_mpoly_factor.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fmpz_mod_mpoly_factor_init(fmpz_mod_mpoly_factor_t f, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_factor_clear(fmpz_mod_mpoly_factor_t f, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_factor_swap(fmpz_mod_mpoly_factor_t f, fmpz_mod_mpoly_factor_t g, const fmpz_mod_mpoly_ctx_t ctx) noexcept + slong fmpz_mod_mpoly_factor_length(const fmpz_mod_mpoly_factor_t f, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_factor_get_constant_fmpz(fmpz_t c, const fmpz_mod_mpoly_factor_t f, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_factor_get_base(fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_factor_t f, slong i, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_factor_swap_base(fmpz_mod_mpoly_t B, fmpz_mod_mpoly_factor_t f, slong i, const fmpz_mod_mpoly_ctx_t ctx) noexcept + slong fmpz_mod_mpoly_factor_get_exp_si(fmpz_mod_mpoly_factor_t f, slong i, const fmpz_mod_mpoly_ctx_t ctx) noexcept + void fmpz_mod_mpoly_factor_sort(fmpz_mod_mpoly_factor_t f, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_factor_squarefree(fmpz_mod_mpoly_factor_t f, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept + int fmpz_mod_mpoly_factor(fmpz_mod_mpoly_factor_t f, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fmpz_mod_poly.pxd b/src/sage/libs/flint/fmpz_mod_poly.pxd index 2727246da98..302113e191b 100644 --- a/src/sage/libs/flint/fmpz_mod_poly.pxd +++ b/src/sage/libs/flint/fmpz_mod_poly.pxd @@ -1,453 +1,247 @@ # distutils: libraries = flint # distutils: depends = flint/fmpz_mod_poly.h +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * from sage.libs.flint.types cimport * -from sage.libs.flint.thread_pool cimport * -# flint/fmpz_mod_poly.h cdef extern from "flint_wrap.h": - void fmpz_mod_poly_init(fmpz_mod_poly_t poly, const fmpz_t p, const fmpz_mod_ctx_t ctx) - void fmpz_mod_poly_clear(fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_realloc(fmpz_mod_poly_t poly, slong alloc, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_fit_length(fmpz_mod_poly_t poly, slong len, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_truncate(fmpz_mod_poly_t poly, slong len, const fmpz_mod_ctx_t ctx) - void fmpz_mod_poly_set_trunc(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, slong n, const fmpz_mod_ctx_t ctx) - - slong fmpz_mod_poly_degree(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - slong fmpz_mod_poly_length(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - fmpz * fmpz_mod_poly_lead(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - int fmpz_mod_poly_is_one(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - int fmpz_mod_poly_is_gen(const fmpz_mod_poly_t op, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_set(fmpz_mod_poly_t poly1, - const fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) - void fmpz_mod_poly_swap(fmpz_mod_poly_t poly1, - fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) - void fmpz_mod_poly_reverse(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, slong n, const fmpz_mod_ctx_t ctx) - void fmpz_mod_poly_zero(fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - void fmpz_mod_poly_one(fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - void fmpz_mod_poly_zero_coeffs(fmpz_mod_poly_t poly, - slong i, slong j, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_set_ui(fmpz_mod_poly_t f, ulong x, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_set_fmpz(fmpz_mod_poly_t poly, const fmpz_t c, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_set_fmpz_poly(fmpz_mod_poly_t f, - const fmpz_poly_t g, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_get_fmpz_poly(fmpz_poly_t f, - const fmpz_mod_poly_t g, const fmpz_mod_ctx_t ctx) - - int fmpz_mod_poly_equal(const fmpz_mod_poly_t poly1, - const fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) - - int fmpz_mod_poly_equal_trunc(const fmpz_mod_poly_t poly1, - const fmpz_mod_poly_t poly2, slong n, const fmpz_mod_ctx_t ctx) - - int fmpz_mod_poly_is_zero(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_set_coeff_fmpz(fmpz_mod_poly_t poly, slong n, - const fmpz_t x, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_set_coeff_ui(fmpz_mod_poly_t poly, slong n, - ulong x, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_set_coeff_si(fmpz_mod_poly_t poly, slong n, - slong x, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_get_coeff_fmpz(fmpz_t x, const fmpz_mod_poly_t poly, - slong n, const fmpz_mod_ctx_t ctx) - - void _fmpz_mod_poly_shift_left(fmpz * res, const fmpz * poly, - slong len, slong n) - - void fmpz_mod_poly_shift_left(fmpz_mod_poly_t f, - const fmpz_mod_poly_t g, slong n, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_shift_right(fmpz_mod_poly_t f, - const fmpz_mod_poly_t g, slong n, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_add(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, - const fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_add_series(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, - slong n, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_sub(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, - const fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_sub_series(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, - slong n, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_neg(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_scalar_mul_fmpz(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, const fmpz_t x, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_scalar_mul_ui(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, ulong x, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_scalar_div_fmpz(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, const fmpz_t x, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_mul(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, - const fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_mullow(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, - slong n, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_sqr(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_mulmod(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, - const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_mulmod_preinv(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, - const fmpz_mod_poly_t f, const fmpz_mod_poly_t finv, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_pow(fmpz_mod_poly_t rop, const fmpz_mod_poly_t op, - ulong e, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_pow_trunc(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, ulong e, slong trunc, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_pow_trunc_binexp(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, ulong e, slong trunc, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_powmod_ui_binexp(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, ulong e, - const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_powmod_ui_binexp_preinv(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, ulong e, - const fmpz_mod_poly_t f, const fmpz_mod_poly_t finv, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_powmod_fmpz_binexp(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, const fmpz_t e, - const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_powmod_fmpz_binexp_preinv(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, const fmpz_t e, - const fmpz_mod_poly_t f, const fmpz_mod_poly_t finv, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_powmod_x_fmpz_preinv(fmpz_mod_poly_t res, - const fmpz_t e, const fmpz_mod_poly_t f, const fmpz_mod_poly_t finv, - const fmpz_mod_ctx_t ctx) - - - void fmpz_mod_poly_powers_mod_naive(fmpz_mod_poly_struct * res, - const fmpz_mod_poly_t f, slong n, const fmpz_mod_poly_t g, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_powers_mod_bsgs(fmpz_mod_poly_struct * res, - const fmpz_mod_poly_t f, slong n, const fmpz_mod_poly_t g, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_frobenius_powers_2exp_precomp( - fmpz_mod_poly_frobenius_powers_2exp_t pow, const fmpz_mod_poly_t f, - const fmpz_mod_poly_t finv, ulong m, const fmpz_mod_ctx_t ctx) - - - void fmpz_mod_poly_frobenius_powers_2exp_clear( - fmpz_mod_poly_frobenius_powers_2exp_t pow, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_frobenius_power(fmpz_mod_poly_t res, - fmpz_mod_poly_frobenius_powers_2exp_t pow, - const fmpz_mod_poly_t f, ulong m, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_frobenius_powers_precomp( - fmpz_mod_poly_frobenius_powers_t pow, const fmpz_mod_poly_t f, - const fmpz_mod_poly_t finv, ulong m, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_frobenius_powers_clear( - fmpz_mod_poly_frobenius_powers_t pow, const fmpz_mod_ctx_t ctx) - - - void fmpz_mod_poly_divrem_basecase(fmpz_mod_poly_t Q, fmpz_mod_poly_t R, - const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_divrem_newton_n_preinv(fmpz_mod_poly_t Q, - fmpz_mod_poly_t R, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, - const fmpz_mod_poly_t Binv, const fmpz_mod_ctx_t ctx) - - ulong fmpz_mod_poly_remove(fmpz_mod_poly_t f, - const fmpz_mod_poly_t p, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_rem_basecase(fmpz_mod_poly_t R, - const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_divrem(fmpz_mod_poly_t Q, fmpz_mod_poly_t R, - const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_divrem_f(fmpz_t f, fmpz_mod_poly_t Q, - fmpz_mod_poly_t R, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_rem(fmpz_mod_poly_t R, const fmpz_mod_poly_t A, - const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) - - - void fmpz_mod_poly_rem_f(fmpz_t f, fmpz_mod_poly_t R, const fmpz_mod_poly_t A, - const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) - - - void fmpz_mod_poly_inv_series_newton(fmpz_mod_poly_t Qinv, - const fmpz_mod_poly_t Q, slong n, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_inv_series_newton_f(fmpz_t f, fmpz_mod_poly_t Qinv, - const fmpz_mod_poly_t Q, slong n, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_inv_series(fmpz_mod_poly_t Qinv, const fmpz_mod_poly_t Q, - slong n, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_inv_series_f(fmpz_t f, fmpz_mod_poly_t Qinv, - const fmpz_mod_poly_t Q, slong n, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_div_series(fmpz_mod_poly_t Q, - const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, slong n, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_make_monic(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_make_monic_f(fmpz_t f, fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_gcd_f(fmpz_t f, fmpz_mod_poly_t G, const fmpz_mod_poly_t A, - const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_gcd(fmpz_mod_poly_t G, const fmpz_mod_poly_t A, - const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) - - - void fmpz_mod_poly_xgcd(fmpz_mod_poly_t G, fmpz_mod_poly_t S, fmpz_mod_poly_t T, - const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_xgcd_f(fmpz_t f, fmpz_mod_poly_t G, fmpz_mod_poly_t S, - fmpz_mod_poly_t T, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_gcdinv_euclidean_f(fmpz_t f, fmpz_mod_poly_t G, - fmpz_mod_poly_t S, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_gcdinv_euclidean(fmpz_mod_poly_t G, - fmpz_mod_poly_t S, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_gcdinv(fmpz_mod_poly_t G, fmpz_mod_poly_t S, - const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_gcdinv_f(fmpz_t f, fmpz_mod_poly_t G, - fmpz_mod_poly_t S, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, - const fmpz_mod_ctx_t ctx) - - int fmpz_mod_poly_invmod(fmpz_mod_poly_t A, const fmpz_mod_poly_t B, - const fmpz_mod_poly_t P, const fmpz_mod_ctx_t ctx) - - int fmpz_mod_poly_invmod_f(fmpz_t f, fmpz_mod_poly_t A, - const fmpz_mod_poly_t B, const fmpz_mod_poly_t P, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_minpoly_bm(fmpz_mod_poly_t poly, const fmpz* seq, slong len, - const fmpz_mod_ctx_t ctx) - void fmpz_mod_poly_minpoly_hgcd(fmpz_mod_poly_t poly, const fmpz* seq, slong len, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_minpoly(fmpz_mod_poly_t poly, const fmpz* seq, slong len, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_resultant_euclidean(fmpz_t r, - const fmpz_mod_poly_t f, const fmpz_mod_poly_t g, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_resultant_hgcd(fmpz_t res, const fmpz_mod_poly_t A, - const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_resultant(fmpz_t res, const fmpz_mod_poly_t f, - const fmpz_mod_poly_t g, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_discriminant(fmpz_t d, const fmpz_mod_poly_t f, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_derivative(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_evaluate_fmpz(fmpz_t res, - const fmpz_mod_poly_t poly, const fmpz_t a, - const fmpz_mod_ctx_t ctx) - - fmpz_poly_struct ** _fmpz_mod_poly_tree_alloc(slong len) - - void fmpz_mod_poly_evaluate_fmpz_vec_iter(fmpz * ys, - const fmpz_mod_poly_t poly, const fmpz * xs, slong n, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_evaluate_fmpz_vec_fast(fmpz * ys, - const fmpz_mod_poly_t poly, const fmpz * xs, slong n, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_evaluate_fmpz_vec(fmpz * ys, - const fmpz_mod_poly_t poly, const fmpz * xs, slong n, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_compose(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, - const fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_compose_mod(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, - const fmpz_mod_poly_t poly3, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_compose_mod_brent_kung(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, - const fmpz_mod_poly_t poly3, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_precompute_matrix(fmpz_mat_t A, - const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, - const fmpz_mod_poly_t poly2inv, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_compose_mod_brent_kung_precomp_preinv(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly1, const fmpz_mat_t A, - const fmpz_mod_poly_t poly3, const fmpz_mod_poly_t poly3inv, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_compose_mod_brent_kung_preinv(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, - const fmpz_mod_poly_t poly3, const fmpz_mod_poly_t poly3inv, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_compose_mod_horner(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, - const fmpz_mod_poly_t poly3, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_compose_mod_brent_kung_vec_preinv( - fmpz_mod_poly_struct * res, const fmpz_mod_poly_struct * polys, - slong len1,slong n, const fmpz_mod_poly_t g, const fmpz_mod_poly_t poly, - const fmpz_mod_poly_t polyinv, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(fmpz_mod_poly_struct * res, - const fmpz_mod_poly_struct * polys, slong len1, slong n, - const fmpz_mod_poly_t g, const fmpz_mod_poly_t poly, - const fmpz_mod_poly_t polyinv, const fmpz_mod_ctx_t ctx, - thread_pool_handle * threads, slong num_threads) - - void fmpz_mod_poly_compose_mod_brent_kung_vec_preinv_threaded(fmpz_mod_poly_struct * res, - const fmpz_mod_poly_struct * polys, slong len1, slong n, - const fmpz_mod_poly_t g, const fmpz_mod_poly_t poly, - const fmpz_mod_poly_t polyinv, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_radix_init(fmpz_mod_poly_radix_t D, - const fmpz_mod_poly_t R, slong degF, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_radix_clear(fmpz_mod_poly_radix_t D) - - void fmpz_mod_poly_radix(fmpz_mod_poly_struct **B, const fmpz_mod_poly_t F, - const fmpz_mod_poly_radix_t D, const fmpz_mod_ctx_t ctx) - - int fmpz_mod_poly_fprint(FILE * file, const fmpz_mod_poly_t poly, - const fmpz_mod_ctx_t ctx) - - int fmpz_mod_poly_fread(FILE * file, fmpz_mod_poly_t poly, - fmpz_mod_ctx_t ctx) - - - int fmpz_mod_poly_fprint_pretty(FILE * file, const fmpz_mod_poly_t poly, - const char * x, const fmpz_mod_ctx_t ctx) - - - - int fmpz_mod_poly_print(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - - - int fmpz_mod_poly_print_pretty(const fmpz_mod_poly_t poly, const char * x, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_product_roots_fmpz_vec(fmpz_poly_t poly, const fmpz * xs, - slong n, const fmpz_t mod) - - int fmpz_mod_poly_find_distinct_nonzero_roots(fmpz * roots, - const fmpz_mod_poly_t P, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_berlekamp_massey_init( - fmpz_mod_berlekamp_massey_t B, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_berlekamp_massey_start_over( - fmpz_mod_berlekamp_massey_t B, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_berlekamp_massey_clear(fmpz_mod_berlekamp_massey_t B, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_berlekamp_massey_print( - const fmpz_mod_berlekamp_massey_t B, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_berlekamp_massey_add_points( - fmpz_mod_berlekamp_massey_t B, const fmpz * a, slong count, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_berlekamp_massey_add_zeros( - fmpz_mod_berlekamp_massey_t B, slong count, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_berlekamp_massey_add_point( - fmpz_mod_berlekamp_massey_t B, const fmpz_t a, - const fmpz_mod_ctx_t ctx) - - void fmpz_mod_berlekamp_massey_add_point_ui( - fmpz_mod_berlekamp_massey_t B, ulong a, - const fmpz_mod_ctx_t ctx) - - int fmpz_mod_berlekamp_massey_reduce( - fmpz_mod_berlekamp_massey_t B, const fmpz_mod_ctx_t ctx) - - const fmpz * fmpz_mod_berlekamp_massey_points( - const fmpz_mod_berlekamp_massey_t B) - - slong fmpz_mod_berlekamp_massey_point_count( - const fmpz_mod_berlekamp_massey_t B) - - const fmpz_mod_poly_struct * fmpz_mod_berlekamp_massey_V_poly( - const fmpz_mod_berlekamp_massey_t B) - - const fmpz_mod_poly_struct * fmpz_mod_berlekamp_massey_R_poly( - const fmpz_mod_berlekamp_massey_t B) - - void fmpz_mod_poly_add_si(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, slong c, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_sub_si(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, slong c, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_si_sub(fmpz_mod_poly_t res, slong c, - const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_add_fmpz(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, fmpz_t c, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_sub_fmpz(fmpz_mod_poly_t res, - const fmpz_mod_poly_t poly, fmpz_t c, const fmpz_mod_ctx_t ctx) - - void fmpz_mod_poly_fmpz_sub(fmpz_mod_poly_t res, fmpz_t c, - const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) + void fmpz_mod_poly_init(fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_init2(fmpz_mod_poly_t poly, slong alloc, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_clear(fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_realloc(fmpz_mod_poly_t poly, slong alloc, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_fit_length(fmpz_mod_poly_t poly, slong len, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_normalise(fmpz_mod_poly_t poly) noexcept + void _fmpz_mod_poly_set_length(fmpz_mod_poly_t poly, slong len) noexcept + void fmpz_mod_poly_truncate(fmpz_mod_poly_t poly, slong len, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_set_trunc(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, slong n, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_randtest(fmpz_mod_poly_t f, flint_rand_t state, slong len, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_randtest_irreducible(fmpz_mod_poly_t f, flint_rand_t state, slong len, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_randtest_not_zero(fmpz_mod_poly_t f, flint_rand_t state, slong len, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_randtest_monic(fmpz_mod_poly_t poly, flint_rand_t state, slong len, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_randtest_monic_irreducible(fmpz_mod_poly_t poly, flint_rand_t state, slong len, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_randtest_monic_primitive(fmpz_mod_poly_t poly, flint_rand_t state, slong len, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_randtest_trinomial(fmpz_mod_poly_t poly, flint_rand_t state, slong len, const fmpz_mod_ctx_t ctx) noexcept + int fmpz_mod_poly_randtest_trinomial_irreducible(fmpz_mod_poly_t poly, flint_rand_t state, slong len, slong max_attempts, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_randtest_pentomial(fmpz_mod_poly_t poly, flint_rand_t state, slong len, const fmpz_mod_ctx_t ctx) noexcept + int fmpz_mod_poly_randtest_pentomial_irreducible(fmpz_mod_poly_t poly, flint_rand_t state, slong len, slong max_attempts, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_randtest_sparse_irreducible(fmpz_mod_poly_t poly, flint_rand_t state, slong len, const fmpz_mod_ctx_t ctx) noexcept + slong fmpz_mod_poly_degree(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) noexcept + slong fmpz_mod_poly_length(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) noexcept + fmpz * fmpz_mod_poly_lead(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_set(fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_swap(fmpz_mod_poly_t poly1, fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_zero(fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_one(fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_zero_coeffs(fmpz_mod_poly_t poly, slong i, slong j, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_reverse(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, slong n, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_set_ui(fmpz_mod_poly_t f, ulong c, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_set_fmpz(fmpz_mod_poly_t f, const fmpz_t c, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_set_fmpz_poly(fmpz_mod_poly_t f, const fmpz_poly_t g, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_get_fmpz_poly(fmpz_poly_t f, const fmpz_mod_poly_t g, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_get_nmod_poly(nmod_poly_t f, const fmpz_mod_poly_t g) noexcept + void fmpz_mod_poly_set_nmod_poly(fmpz_mod_poly_t f, const nmod_poly_t g) noexcept + bint fmpz_mod_poly_equal(const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) noexcept + bint fmpz_mod_poly_equal_trunc(const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, slong n, const fmpz_mod_ctx_t ctx) noexcept + bint fmpz_mod_poly_is_zero(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) noexcept + bint fmpz_mod_poly_is_one(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) noexcept + bint fmpz_mod_poly_is_gen(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_set_coeff_fmpz(fmpz_mod_poly_t poly, slong n, const fmpz_t x, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_set_coeff_ui(fmpz_mod_poly_t poly, slong n, ulong x, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_get_coeff_fmpz(fmpz_t x, const fmpz_mod_poly_t poly, slong n, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_set_coeff_mpz(fmpz_mod_poly_t poly, slong n, const mpz_t x, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_get_coeff_mpz(mpz_t x, const fmpz_mod_poly_t poly, slong n, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_shift_left(fmpz * res, const fmpz * poly, slong len, slong n) noexcept + void fmpz_mod_poly_shift_left(fmpz_mod_poly_t f, const fmpz_mod_poly_t g, slong n, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_shift_right(fmpz * res, const fmpz * poly, slong len, slong n) noexcept + void fmpz_mod_poly_shift_right(fmpz_mod_poly_t f, const fmpz_mod_poly_t g, slong n, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_add(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_add(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_add_series(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, slong n, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_sub(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_sub(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_sub_series(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, slong n, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_neg(fmpz * res, const fmpz * poly, slong len, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_neg(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_scalar_mul_fmpz(fmpz * res, const fmpz * poly, slong len, const fmpz_t x, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_scalar_mul_fmpz(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, const fmpz_t x, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_scalar_addmul_fmpz(fmpz_mod_poly_t rop, const fmpz_mod_poly_t op, const fmpz_t x, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_scalar_div_fmpz(fmpz * res, const fmpz * poly, slong len, const fmpz_t x, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_scalar_div_fmpz(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, const fmpz_t x, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_mul(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_mul(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_mullow(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2, slong n, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_mullow(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, slong n, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_sqr(fmpz * res, const fmpz * poly, slong len, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_sqr(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_mulhigh(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, slong start, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_mulmod(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2, const fmpz * f, slong lenf, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_mulmod(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_mulmod_preinv(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2, const fmpz * f, slong lenf, const fmpz * finv, slong lenfinv, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_mulmod_preinv(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, const fmpz_mod_poly_t f, const fmpz_mod_poly_t finv, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_product_roots_fmpz_vec(fmpz * poly, const fmpz * xs, slong n, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_product_roots_fmpz_vec(fmpz_mod_poly_t poly, const fmpz * xs, slong n, const fmpz_mod_ctx_t ctx) noexcept + int fmpz_mod_poly_find_distinct_nonzero_roots(fmpz * roots, const fmpz_mod_poly_t A, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_pow(fmpz * rop, const fmpz * op, slong len, ulong e, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_pow(fmpz_mod_poly_t rop, const fmpz_mod_poly_t op, ulong e, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_pow_trunc(fmpz * res, const fmpz * poly, ulong e, slong trunc, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_pow_trunc(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, ulong e, slong trunc, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_pow_trunc_binexp(fmpz * res, const fmpz * poly, ulong e, slong trunc, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_pow_trunc_binexp(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, ulong e, slong trunc, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_powmod_ui_binexp(fmpz * res, const fmpz * poly, ulong e, const fmpz * f, slong lenf, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_powmod_ui_binexp(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, ulong e, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_powmod_ui_binexp_preinv(fmpz * res, const fmpz * poly, ulong e, const fmpz * f, slong lenf, const fmpz * finv, slong lenfinv, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_powmod_ui_binexp_preinv(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, ulong e, const fmpz_mod_poly_t f, const fmpz_mod_poly_t finv, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_powmod_fmpz_binexp(fmpz * res, const fmpz * poly, const fmpz_t e, const fmpz * f, slong lenf, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_powmod_fmpz_binexp(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, const fmpz_t e, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_powmod_fmpz_binexp_preinv(fmpz * res, const fmpz * poly, const fmpz_t e, const fmpz * f, slong lenf, const fmpz * finv, slong lenfinv, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_powmod_fmpz_binexp_preinv(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, const fmpz_t e, const fmpz_mod_poly_t f, const fmpz_mod_poly_t finv, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_powmod_x_fmpz_preinv(fmpz * res, const fmpz_t e, const fmpz * f, slong lenf, const fmpz * finv, slong lenfinv, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_powmod_x_fmpz_preinv(fmpz_mod_poly_t res, const fmpz_t e, const fmpz_mod_poly_t f, const fmpz_mod_poly_t finv, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_powers_mod_preinv_naive(fmpz ** res, const fmpz * f, slong flen, slong n, const fmpz * g, slong glen, const fmpz * ginv, slong ginvlen, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_powers_mod_naive(fmpz_mod_poly_struct * res, const fmpz_mod_poly_t f, slong n, const fmpz_mod_poly_t g, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_powers_mod_preinv_threaded_pool(fmpz ** res, const fmpz * f, slong flen, slong n, const fmpz * g, slong glen, const fmpz * ginv, slong ginvlen, const fmpz_mod_ctx_t p, thread_pool_handle * threads, slong num_threads) noexcept + void fmpz_mod_poly_powers_mod_bsgs(fmpz_mod_poly_struct * res, const fmpz_mod_poly_t f, slong n, const fmpz_mod_poly_t g, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_frobenius_powers_2exp_precomp(fmpz_mod_poly_frobenius_powers_2exp_t pow, const fmpz_mod_poly_t f, const fmpz_mod_poly_t finv, ulong m, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_frobenius_powers_2exp_clear(fmpz_mod_poly_frobenius_powers_2exp_t pow, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_frobenius_power(fmpz_mod_poly_t res, fmpz_mod_poly_frobenius_powers_2exp_t pow, const fmpz_mod_poly_t f, ulong m, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_frobenius_powers_precomp(fmpz_mod_poly_frobenius_powers_t pow, const fmpz_mod_poly_t f, const fmpz_mod_poly_t finv, ulong m, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_frobenius_powers_clear(fmpz_mod_poly_frobenius_powers_t pow, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_divrem_basecase(fmpz * Q, fmpz * R, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_divrem_basecase(fmpz_mod_poly_t Q, fmpz_mod_poly_t R, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_divrem_newton_n_preinv (fmpz * Q, fmpz * R, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz * Binv, slong lenBinv, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_divrem_newton_n_preinv(fmpz_mod_poly_t Q, fmpz_mod_poly_t R, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_poly_t Binv, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_div_newton_n_preinv (fmpz * Q, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz * Binv, slong lenBinv, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_div_newton_n_preinv(fmpz_mod_poly_t Q, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_poly_t Binv, const fmpz_mod_ctx_t ctx) noexcept + ulong fmpz_mod_poly_remove(fmpz_mod_poly_t f, const fmpz_mod_poly_t g, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_rem_basecase(fmpz * R, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_rem_basecase(fmpz_mod_poly_t R, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_div(fmpz * Q, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_div(fmpz_mod_poly_t Q, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_divrem(fmpz * Q, fmpz * R, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_divrem(fmpz_mod_poly_t Q, fmpz_mod_poly_t R, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_divrem_f(fmpz_t f, fmpz_mod_poly_t Q, fmpz_mod_poly_t R, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_rem(fmpz * R, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_rem_f(fmpz_t f, fmpz_mod_poly_t R, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_rem(fmpz_mod_poly_t R, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + int _fmpz_mod_poly_divides_classical(fmpz * Q, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_mod_ctx_t ctx) noexcept + int fmpz_mod_poly_divides_classical(fmpz_mod_poly_t Q, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + int _fmpz_mod_poly_divides(fmpz * Q, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_mod_ctx_t ctx) noexcept + int fmpz_mod_poly_divides(fmpz_mod_poly_t Q, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_inv_series(fmpz * Qinv, const fmpz * Q, slong Qlen, slong n, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_inv_series(fmpz_mod_poly_t Qinv, const fmpz_mod_poly_t Q, slong n, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_inv_series_f(fmpz_t f, fmpz_mod_poly_t Qinv, const fmpz_mod_poly_t Q, slong n, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_div_series(fmpz * Q, const fmpz * A, slong Alen, const fmpz * B, slong Blen, slong n, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_div_series(fmpz_mod_poly_t Q, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, slong n, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_make_monic(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_make_monic_f(fmpz_t f, fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) noexcept + slong _fmpz_mod_poly_gcd(fmpz * G, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_gcd(fmpz_mod_poly_t G, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + slong _fmpz_mod_poly_gcd_euclidean_f(fmpz_t f, fmpz * G, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_gcd_euclidean_f(fmpz_t f, fmpz_mod_poly_t G, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + slong _fmpz_mod_poly_gcd_f(fmpz_t f, fmpz * G, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_gcd_f(fmpz_t f, fmpz_mod_poly_t G, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + slong _fmpz_mod_poly_hgcd(fmpz **M, slong * lenM, fmpz * A, slong * lenA, fmpz * B, slong * lenB, const fmpz * a, slong lena, const fmpz * b, slong lenb, const fmpz_mod_ctx_t ctx) noexcept + slong _fmpz_mod_poly_xgcd_euclidean_f(fmpz_t f, fmpz * G, fmpz * S, fmpz * T, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_xgcd_euclidean_f(fmpz_t f, fmpz_mod_poly_t G, fmpz_mod_poly_t S, fmpz_mod_poly_t T, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + slong _fmpz_mod_poly_xgcd(fmpz * G, fmpz * S, fmpz * T, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_xgcd(fmpz_mod_poly_t G, fmpz_mod_poly_t S, fmpz_mod_poly_t T, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_xgcd_f(fmpz_t f, fmpz_mod_poly_t G, fmpz_mod_poly_t S, fmpz_mod_poly_t T, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + slong _fmpz_mod_poly_gcdinv_euclidean(fmpz * G, fmpz * S, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_t invA, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_gcdinv_euclidean(fmpz_mod_poly_t G, fmpz_mod_poly_t S, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + slong _fmpz_mod_poly_gcdinv_euclidean_f(fmpz_t f, fmpz * G, fmpz * S, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_t invA, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_gcdinv_euclidean_f(fmpz_t f, fmpz_mod_poly_t G, fmpz_mod_poly_t S, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + slong _fmpz_mod_poly_gcdinv(fmpz * G, fmpz * S, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_mod_ctx_t ctx) noexcept + slong _fmpz_mod_poly_gcdinv_f(fmpz_t f, fmpz * G, fmpz * S, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_gcdinv(fmpz_mod_poly_t G, fmpz_mod_poly_t S, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_gcdinv_f(fmpz_t f, fmpz_mod_poly_t G, fmpz_mod_poly_t S, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) noexcept + int _fmpz_mod_poly_invmod(fmpz * A, const fmpz * B, slong lenB, const fmpz * P, slong lenP, const fmpz_mod_ctx_t ctx) noexcept + int _fmpz_mod_poly_invmod_f(fmpz_t f, fmpz * A, const fmpz * B, slong lenB, const fmpz * P, slong lenP, const fmpz_mod_ctx_t ctx) noexcept + int fmpz_mod_poly_invmod(fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_poly_t P, const fmpz_mod_ctx_t ctx) noexcept + int fmpz_mod_poly_invmod_f(fmpz_t f, fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_poly_t P, const fmpz_mod_ctx_t ctx) noexcept + slong _fmpz_mod_poly_minpoly_bm(fmpz * poly, const fmpz * seq, slong len, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_minpoly_bm(fmpz_mod_poly_t poly, const fmpz * seq, slong len, const fmpz_mod_ctx_t ctx) noexcept + slong _fmpz_mod_poly_minpoly_hgcd(fmpz * poly, const fmpz * seq, slong len, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_minpoly_hgcd(fmpz_mod_poly_t poly, const fmpz * seq, slong len, const fmpz_mod_ctx_t ctx) noexcept + slong _fmpz_mod_poly_minpoly(fmpz * poly, const fmpz * seq, slong len, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_minpoly(fmpz_mod_poly_t poly, const fmpz * seq, slong len, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_resultant_euclidean(fmpz_t res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_resultant_euclidean(fmpz_t r, const fmpz_mod_poly_t f, const fmpz_mod_poly_t g, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_resultant_hgcd(fmpz_t res, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_resultant_hgcd(fmpz_t res, const fmpz_mod_poly_t f, const fmpz_mod_poly_t g, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_resultant(fmpz_t res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_resultant(fmpz_t res, const fmpz_mod_poly_t f, const fmpz_mod_poly_t g, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_discriminant(fmpz_t d, const fmpz * poly, slong len, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_discriminant(fmpz_t d, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_derivative(fmpz * res, const fmpz * poly, slong len, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_derivative(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_evaluate_fmpz(fmpz_t res, const fmpz * poly, slong len, const fmpz_t a, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_evaluate_fmpz(fmpz_t res, const fmpz_mod_poly_t poly, const fmpz_t a, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_evaluate_fmpz_vec_iter(fmpz * ys, const fmpz * coeffs, slong len, const fmpz * xs, slong n, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_evaluate_fmpz_vec_iter(fmpz * ys, const fmpz_mod_poly_t poly, const fmpz * xs, slong n, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_evaluate_fmpz_vec_fast_precomp(fmpz * vs, const fmpz * poly, slong plen, fmpz_poly_struct * const * tree, slong len, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_evaluate_fmpz_vec_fast(fmpz * ys, const fmpz * poly, slong plen, const fmpz * xs, slong n, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_evaluate_fmpz_vec_fast(fmpz * ys, const fmpz_mod_poly_t poly, const fmpz * xs, slong n, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_evaluate_fmpz_vec(fmpz * ys, const fmpz * coeffs, slong len, const fmpz * xs, slong n, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_evaluate_fmpz_vec(fmpz * ys, const fmpz_mod_poly_t poly, const fmpz * xs, slong n, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_compose(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_compose(fmpz_mod_poly_t res, const fmpz_mod_poly_t poly1, const fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_invsqrt_series(fmpz * g, const fmpz * h, slong hlen, slong n, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_invsqrt_series(fmpz_mod_poly_t g, const fmpz_mod_poly_t h, slong n, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_sqrt_series(fmpz * g, const fmpz * h, slong hlen, slong n, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_sqrt_series(fmpz_mod_poly_t g, const fmpz_mod_poly_t h, slong n, const fmpz_mod_ctx_t ctx) noexcept + int _fmpz_mod_poly_sqrt(fmpz * s, const fmpz * p, slong n, const fmpz_mod_ctx_t ctx) noexcept + int fmpz_mod_poly_sqrt(fmpz_mod_poly_t s, const fmpz_mod_poly_t p, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_compose_mod(fmpz * res, const fmpz * f, slong lenf, const fmpz * g, const fmpz * h, slong lenh, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_compose_mod(fmpz_mod_poly_t res, const fmpz_mod_poly_t f, const fmpz_mod_poly_t g, const fmpz_mod_poly_t h, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_compose_mod_horner(fmpz * res, const fmpz * f, slong lenf, const fmpz * g, const fmpz * h, slong lenh, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_compose_mod_horner(fmpz_mod_poly_t res, const fmpz_mod_poly_t f, const fmpz_mod_poly_t g, const fmpz_mod_poly_t h, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_compose_mod_brent_kung(fmpz * res, const fmpz * f, slong len1, const fmpz * g, const fmpz * h, slong len3, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_compose_mod_brent_kung(fmpz_mod_poly_t res, const fmpz_mod_poly_t f, const fmpz_mod_poly_t g, const fmpz_mod_poly_t h, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_reduce_matrix_mod_poly (fmpz_mat_t A, const fmpz_mat_t B, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_precompute_matrix_worker(void * arg_ptr) noexcept + void _fmpz_mod_poly_precompute_matrix (fmpz_mat_t A, const fmpz * f, const fmpz * g, slong leng, const fmpz * ginv, slong lenginv, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_precompute_matrix(fmpz_mat_t A, const fmpz_mod_poly_t f, const fmpz_mod_poly_t g, const fmpz_mod_poly_t ginv, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_compose_mod_brent_kung_precomp_preinv_worker(void * arg_ptr) noexcept + void _fmpz_mod_poly_compose_mod_brent_kung_precomp_preinv(fmpz * res, const fmpz * f, slong lenf, const fmpz_mat_t A, const fmpz * h, slong lenh, const fmpz * hinv, slong lenhinv, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_compose_mod_brent_kung_precomp_preinv(fmpz_mod_poly_t res, const fmpz_mod_poly_t f, const fmpz_mat_t A, const fmpz_mod_poly_t h, const fmpz_mod_poly_t hinv, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_compose_mod_brent_kung_preinv(fmpz * res, const fmpz * f, slong lenf, const fmpz * g, const fmpz * h, slong lenh, const fmpz * hinv, slong lenhinv, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_compose_mod_brent_kung_preinv(fmpz_mod_poly_t res, const fmpz_mod_poly_t f, const fmpz_mod_poly_t g, const fmpz_mod_poly_t h, const fmpz_mod_poly_t hinv, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_compose_mod_brent_kung_vec_preinv(fmpz_mod_poly_struct * res, const fmpz_mod_poly_struct * polys, slong len1, slong l, const fmpz * g, slong glen, const fmpz * h, slong lenh, const fmpz * hinv, slong lenhinv, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_compose_mod_brent_kung_vec_preinv(fmpz_mod_poly_struct * res, const fmpz_mod_poly_struct * polys, slong len1, slong n, const fmpz_mod_poly_t g, const fmpz_mod_poly_t h, const fmpz_mod_poly_t hinv, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(fmpz_mod_poly_struct * res, const fmpz_mod_poly_struct * polys, slong lenpolys, slong l, const fmpz * g, slong glen, const fmpz * poly, slong len, const fmpz * polyinv, slong leninv, const fmpz_mod_ctx_t ctx, thread_pool_handle * threads, slong num_threads) noexcept + void fmpz_mod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(fmpz_mod_poly_struct * res, const fmpz_mod_poly_struct * polys, slong len1, slong n, const fmpz_mod_poly_t g, const fmpz_mod_poly_t poly, const fmpz_mod_poly_t polyinv, const fmpz_mod_ctx_t ctx, thread_pool_handle * threads, slong num_threads) noexcept + void fmpz_mod_poly_compose_mod_brent_kung_vec_preinv_threaded(fmpz_mod_poly_struct * res, const fmpz_mod_poly_struct * polys, slong len1, slong n, const fmpz_mod_poly_t g, const fmpz_mod_poly_t poly, const fmpz_mod_poly_t polyinv, const fmpz_mod_ctx_t ctx) noexcept + fmpz_poly_struct ** _fmpz_mod_poly_tree_alloc(slong len) noexcept + void _fmpz_mod_poly_tree_free(fmpz_poly_struct ** tree, slong len) noexcept + void _fmpz_mod_poly_tree_build(fmpz_poly_struct ** tree, const fmpz * roots, slong len, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_radix_init(fmpz **Rpow, fmpz **Rinv, const fmpz * R, slong lenR, slong k, const fmpz_t invL, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_radix_init(fmpz_mod_poly_radix_t D, const fmpz_mod_poly_t R, slong degF, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_radix(fmpz **B, const fmpz * F, fmpz **Rpow, fmpz **Rinv, slong degR, slong k, slong i, fmpz * W, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_radix(fmpz_mod_poly_struct **B, const fmpz_mod_poly_t F, const fmpz_mod_poly_radix_t D, const fmpz_mod_ctx_t ctx) noexcept + int _fmpz_mod_poly_fprint(FILE * file, const fmpz * poly, slong len, const fmpz_t p) noexcept + int fmpz_mod_poly_fprint(FILE * file, const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) noexcept + int fmpz_mod_poly_fprint_pretty(FILE * file, const fmpz_mod_poly_t poly, const char * x, const fmpz_mod_ctx_t ctx) noexcept + int fmpz_mod_poly_print(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) noexcept + int fmpz_mod_poly_print_pretty(const fmpz_mod_poly_t poly, const char * x, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_inflate(fmpz_mod_poly_t result, const fmpz_mod_poly_t input, ulong inflation, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_deflate(fmpz_mod_poly_t result, const fmpz_mod_poly_t input, ulong deflation, const fmpz_mod_ctx_t ctx) noexcept + ulong fmpz_mod_poly_deflation(const fmpz_mod_poly_t input, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_berlekamp_massey_init(fmpz_mod_berlekamp_massey_t B, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_berlekamp_massey_clear(fmpz_mod_berlekamp_massey_t B, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_berlekamp_massey_start_over(fmpz_mod_berlekamp_massey_t B, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_berlekamp_massey_add_points(fmpz_mod_berlekamp_massey_t B, const fmpz * a, slong count, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_berlekamp_massey_add_zeros(fmpz_mod_berlekamp_massey_t B, slong count, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_berlekamp_massey_add_point(fmpz_mod_berlekamp_massey_t B, const fmpz_t a, const fmpz_mod_ctx_t ctx) noexcept + int fmpz_mod_berlekamp_massey_reduce(fmpz_mod_berlekamp_massey_t B, const fmpz_mod_ctx_t ctx) noexcept + slong fmpz_mod_berlekamp_massey_point_count(const fmpz_mod_berlekamp_massey_t B) noexcept + const fmpz * fmpz_mod_berlekamp_massey_points(const fmpz_mod_berlekamp_massey_t B) noexcept + const fmpz_mod_poly_struct * fmpz_mod_berlekamp_massey_V_poly(const fmpz_mod_berlekamp_massey_t B) noexcept + const fmpz_mod_poly_struct * fmpz_mod_berlekamp_massey_R_poly(const fmpz_mod_berlekamp_massey_t B) noexcept diff --git a/src/sage/libs/flint/fmpz_mod_poly_factor.pxd b/src/sage/libs/flint/fmpz_mod_poly_factor.pxd new file mode 100644 index 00000000000..312ceb175c9 --- /dev/null +++ b/src/sage/libs/flint/fmpz_mod_poly_factor.pxd @@ -0,0 +1,44 @@ +# distutils: libraries = flint +# distutils: depends = flint/fmpz_mod_poly_factor.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fmpz_mod_poly_factor_init(fmpz_mod_poly_factor_t fac, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_factor_clear(fmpz_mod_poly_factor_t fac, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_factor_realloc(fmpz_mod_poly_factor_t fac, slong alloc, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_factor_fit_length(fmpz_mod_poly_factor_t fac, slong len, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_factor_set(fmpz_mod_poly_factor_t res, const fmpz_mod_poly_factor_t fac, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_factor_print(const fmpz_mod_poly_factor_t fac, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_factor_insert(fmpz_mod_poly_factor_t fac, const fmpz_mod_poly_t poly, slong exp, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_factor_concat(fmpz_mod_poly_factor_t res, const fmpz_mod_poly_factor_t fac, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_factor_pow(fmpz_mod_poly_factor_t fac, slong exp, const fmpz_mod_ctx_t ctx) noexcept + bint fmpz_mod_poly_is_irreducible(const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) noexcept + bint fmpz_mod_poly_is_irreducible_ddf(const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) noexcept + bint fmpz_mod_poly_is_irreducible_rabin(const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) noexcept + bint fmpz_mod_poly_is_irreducible_rabin_f(fmpz_t r, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) noexcept + bint _fmpz_mod_poly_is_squarefree(const fmpz * f, slong len, const fmpz_mod_ctx_t ctx) noexcept + bint _fmpz_mod_poly_is_squarefree_f(fmpz_t fac, const fmpz * f, slong len, const fmpz_mod_ctx_t ctx) noexcept + bint fmpz_mod_poly_is_squarefree(const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) noexcept + bint fmpz_mod_poly_is_squarefree_f(fmpz_t fac, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) noexcept + bint fmpz_mod_poly_factor_equal_deg_prob(fmpz_mod_poly_t factor, flint_rand_t state, const fmpz_mod_poly_t pol, slong d, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_factor_equal_deg(fmpz_mod_poly_factor_t factors, const fmpz_mod_poly_t pol, slong d, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_factor_distinct_deg(fmpz_mod_poly_factor_t res, const fmpz_mod_poly_t poly, slong * const * degs, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_factor_distinct_deg_threaded(fmpz_mod_poly_factor_t res, const fmpz_mod_poly_t poly, slong * const * degs, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_factor_squarefree(fmpz_mod_poly_factor_t res, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_factor(fmpz_mod_poly_factor_t res, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_factor_cantor_zassenhaus(fmpz_mod_poly_factor_t res, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_factor_kaltofen_shoup(fmpz_mod_poly_factor_t res, const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t ctx) noexcept + void fmpz_mod_poly_factor_berlekamp(fmpz_mod_poly_factor_t factors, const fmpz_mod_poly_t f, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_poly_interval_poly_worker(void * arg_ptr) noexcept + void fmpz_mod_poly_roots(fmpz_mod_poly_factor_t r, const fmpz_mod_poly_t f, int with_multiplicity, const fmpz_mod_ctx_t ctx) noexcept + int fmpz_mod_poly_roots_factored(fmpz_mod_poly_factor_t r, const fmpz_mod_poly_t f, int with_multiplicity, const fmpz_factor_t n, const fmpz_mod_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fmpz_mod_vec.pxd b/src/sage/libs/flint/fmpz_mod_vec.pxd new file mode 100644 index 00000000000..5b1bc0c4715 --- /dev/null +++ b/src/sage/libs/flint/fmpz_mod_vec.pxd @@ -0,0 +1,25 @@ +# distutils: libraries = flint +# distutils: depends = flint/fmpz_mod_vec.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void _fmpz_mod_vec_set_fmpz_vec(fmpz * A, const fmpz * B, slong len, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_vec_neg(fmpz * A, const fmpz * B, slong len, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_vec_add(fmpz * a, const fmpz * b, const fmpz * c, slong n, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_vec_sub(fmpz * a, const fmpz * b, const fmpz * c, slong n, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_vec_scalar_mul_fmpz_mod(fmpz * A, const fmpz * B, slong len, const fmpz_t c, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_vec_scalar_addmul_fmpz_mod(fmpz * A, const fmpz * B, slong len, const fmpz_t c, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_vec_scalar_div_fmpz_mod(fmpz * A, const fmpz * B, slong len, const fmpz_t c, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_vec_dot(fmpz_t d, const fmpz * A, const fmpz * B, slong len, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_vec_dot_rev(fmpz_t d, const fmpz * A, const fmpz * B, slong len, const fmpz_mod_ctx_t ctx) noexcept + void _fmpz_mod_vec_mul(fmpz * A, const fmpz * B, const fmpz * C, slong len, const fmpz_mod_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fmpz_mpoly.pxd b/src/sage/libs/flint/fmpz_mpoly.pxd new file mode 100644 index 00000000000..0cc6dd108bd --- /dev/null +++ b/src/sage/libs/flint/fmpz_mpoly.pxd @@ -0,0 +1,222 @@ +# distutils: libraries = flint +# distutils: depends = flint/fmpz_mpoly.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fmpz_mpoly_ctx_init(fmpz_mpoly_ctx_t ctx, slong nvars, const ordering_t ord) noexcept + slong fmpz_mpoly_ctx_nvars(const fmpz_mpoly_ctx_t ctx) noexcept + ordering_t fmpz_mpoly_ctx_ord(const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_ctx_clear(fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_init(fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_init2(fmpz_mpoly_t A, slong alloc, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_init3(fmpz_mpoly_t A, slong alloc, flint_bitcnt_t bits, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_fit_length(fmpz_mpoly_t A, slong len, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_fit_bits(fmpz_mpoly_t A, flint_bitcnt_t bits, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_realloc(fmpz_mpoly_t A, slong alloc, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_clear(fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + char * fmpz_mpoly_get_str_pretty(const fmpz_mpoly_t A, const char ** x, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_fprint_pretty(FILE * file, const fmpz_mpoly_t A, const char ** x, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_print_pretty(const fmpz_mpoly_t A, const char ** x, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_set_str_pretty(fmpz_mpoly_t A, const char * str, const char ** x, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_gen(fmpz_mpoly_t A, slong var, const fmpz_mpoly_ctx_t ctx) noexcept + bint fmpz_mpoly_is_gen(const fmpz_mpoly_t A, slong var, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_set(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + bint fmpz_mpoly_equal(const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_swap(fmpz_mpoly_t poly1, fmpz_mpoly_t poly2, const fmpz_mpoly_ctx_t ctx) noexcept + int _fmpz_mpoly_fits_small(const fmpz * poly, slong len) noexcept + slong fmpz_mpoly_max_bits(const fmpz_mpoly_t A) noexcept + bint fmpz_mpoly_is_fmpz(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_get_fmpz(fmpz_t c, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_set_fmpz(fmpz_mpoly_t A, const fmpz_t c, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_set_ui(fmpz_mpoly_t A, ulong c, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_set_si(fmpz_mpoly_t A, slong c, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_zero(fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_one(fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + bint fmpz_mpoly_equal_fmpz(const fmpz_mpoly_t A, const fmpz_t c, const fmpz_mpoly_ctx_t ctx) noexcept + bint fmpz_mpoly_equal_ui(const fmpz_mpoly_t A, ulong c, const fmpz_mpoly_ctx_t ctx) noexcept + bint fmpz_mpoly_equal_si(const fmpz_mpoly_t A, slong c, const fmpz_mpoly_ctx_t ctx) noexcept + bint fmpz_mpoly_is_zero(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + bint fmpz_mpoly_is_one(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_degrees_fit_si(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_degrees_fmpz(fmpz ** degs, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_degrees_si(slong * degs, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_degree_fmpz(fmpz_t deg, const fmpz_mpoly_t A, slong var, const fmpz_mpoly_ctx_t ctx) noexcept + slong fmpz_mpoly_degree_si(const fmpz_mpoly_t A, slong var, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_total_degree_fits_si(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_total_degree_fmpz(fmpz_t tdeg, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + slong fmpz_mpoly_total_degree_si(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_used_vars(int * used, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_get_coeff_fmpz_monomial(fmpz_t c, const fmpz_mpoly_t A, const fmpz_mpoly_t M, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_set_coeff_fmpz_monomial(fmpz_mpoly_t poly, const fmpz_t c, const fmpz_mpoly_t poly2, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_get_coeff_fmpz_fmpz(fmpz_t c, const fmpz_mpoly_t A, fmpz * const * exp, const fmpz_mpoly_ctx_t ctx) noexcept + ulong fmpz_mpoly_get_coeff_ui_fmpz(const fmpz_mpoly_t A, fmpz * const * exp, const fmpz_mpoly_ctx_t ctx) noexcept + slong fmpz_mpoly_get_coeff_si_fmpz(const fmpz_mpoly_t A, fmpz * const * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_get_coeff_fmpz_ui(fmpz_t c, const fmpz_mpoly_t A, const ulong * exp, const fmpz_mpoly_ctx_t ctx) noexcept + ulong fmpz_mpoly_get_coeff_ui_ui(const fmpz_mpoly_t A, const ulong * exp, const fmpz_mpoly_ctx_t ctx) noexcept + slong fmpz_mpoly_get_coeff_si_ui(const fmpz_mpoly_t A, const ulong * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_set_coeff_fmpz_fmpz(fmpz_mpoly_t A, const fmpz_t c, fmpz * const * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_set_coeff_ui_fmpz(fmpz_mpoly_t A, ulong c, fmpz * const * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_set_coeff_si_fmpz(fmpz_mpoly_t A, slong c, fmpz * const * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_set_coeff_fmpz_ui(fmpz_mpoly_t A, const fmpz_t c, const ulong * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_set_coeff_ui_ui(fmpz_mpoly_t A, ulong c, const ulong * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_set_coeff_si_ui(fmpz_mpoly_t A, slong c, const ulong * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_get_coeff_vars_ui(fmpz_mpoly_t C, const fmpz_mpoly_t A, const slong * vars, const ulong * exps, slong length, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_cmp(const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + bint fmpz_mpoly_is_fmpz_poly(const fmpz_mpoly_t A, slong var, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_get_fmpz_poly(fmpz_poly_t A, const fmpz_mpoly_t B, slong var, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_set_fmpz_poly(fmpz_mpoly_t A, const fmpz_poly_t B, slong var, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_set_gen_fmpz_poly(fmpz_mpoly_t A, slong var, const fmpz_poly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + fmpz * fmpz_mpoly_term_coeff_ref(fmpz_mpoly_t A, slong i, const fmpz_mpoly_ctx_t ctx) noexcept + bint fmpz_mpoly_is_canonical(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + slong fmpz_mpoly_length(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_resize(fmpz_mpoly_t A, slong new_length, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_get_term_coeff_fmpz(fmpz_t c, const fmpz_mpoly_t A, slong i, const fmpz_mpoly_ctx_t ctx) noexcept + ulong fmpz_mpoly_get_term_coeff_ui(const fmpz_mpoly_t A, slong i, const fmpz_mpoly_ctx_t ctx) noexcept + slong fmpz_mpoly_get_term_coeff_si(const fmpz_mpoly_t poly, slong i, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_set_term_coeff_fmpz(fmpz_mpoly_t A, slong i, const fmpz_t c, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_set_term_coeff_ui(fmpz_mpoly_t A, slong i, ulong c, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_set_term_coeff_si(fmpz_mpoly_t A, slong i, slong c, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_term_exp_fits_si(const fmpz_mpoly_t poly, slong i, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_term_exp_fits_ui(const fmpz_mpoly_t poly, slong i, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_get_term_exp_fmpz(fmpz ** exp, const fmpz_mpoly_t A, slong i, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_get_term_exp_ui(ulong * exp, const fmpz_mpoly_t A, slong i, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_get_term_exp_si(slong * exp, const fmpz_mpoly_t A, slong i, const fmpz_mpoly_ctx_t ctx) noexcept + ulong fmpz_mpoly_get_term_var_exp_ui(const fmpz_mpoly_t A, slong i, slong var, const fmpz_mpoly_ctx_t ctx) noexcept + slong fmpz_mpoly_get_term_var_exp_si(const fmpz_mpoly_t A, slong i, slong var, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_set_term_exp_fmpz(fmpz_mpoly_t A, slong i, fmpz * const * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_set_term_exp_ui(fmpz_mpoly_t A, slong i, const ulong * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_get_term(fmpz_mpoly_t M, const fmpz_mpoly_t A, slong i, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_get_term_monomial(fmpz_mpoly_t M, const fmpz_mpoly_t A, slong i, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_push_term_fmpz_fmpz(fmpz_mpoly_t A, const fmpz_t c, fmpz * const * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_push_term_fmpz_ffmpz(fmpz_mpoly_t A, const fmpz_t c, const fmpz * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_push_term_ui_fmpz(fmpz_mpoly_t A, ulong c, fmpz * const * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_push_term_ui_ffmpz(fmpz_mpoly_t A, ulong c, const fmpz * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_push_term_si_fmpz(fmpz_mpoly_t A, slong c, fmpz * const * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_push_term_si_ffmpz(fmpz_mpoly_t A, slong c, const fmpz * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_push_term_fmpz_ui(fmpz_mpoly_t A, const fmpz_t c, const ulong * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_push_term_ui_ui(fmpz_mpoly_t A, ulong c, const ulong * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_push_term_si_ui(fmpz_mpoly_t A, slong c, const ulong * exp, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_sort_terms(fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_combine_like_terms(fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_reverse(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_randtest_bound(fmpz_mpoly_t A, flint_rand_t state, slong length, mp_limb_t coeff_bits, ulong exp_bound, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_randtest_bounds(fmpz_mpoly_t A, flint_rand_t state, slong length, mp_limb_t coeff_bits, ulong * exp_bounds, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_randtest_bits(fmpz_mpoly_t A, flint_rand_t state, slong length, mp_limb_t coeff_bits, mp_limb_t exp_bits, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_add_fmpz(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_t c, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_add_ui(fmpz_mpoly_t A, const fmpz_mpoly_t B, ulong c, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_add_si(fmpz_mpoly_t A, const fmpz_mpoly_t B, slong c, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_sub_fmpz(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_t c, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_sub_ui(fmpz_mpoly_t A, const fmpz_mpoly_t B, ulong c, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_sub_si(fmpz_mpoly_t A, const fmpz_mpoly_t B, slong c, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_add(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_t C, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_sub(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_t C, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_neg(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_scalar_mul_fmpz(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_t c, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_scalar_mul_ui(fmpz_mpoly_t A, const fmpz_mpoly_t B, ulong c, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_scalar_mul_si(fmpz_mpoly_t A, const fmpz_mpoly_t B, slong c, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_scalar_fmma(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_t c, const fmpz_mpoly_t D, const fmpz_t e, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_scalar_divexact_fmpz(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_t c, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_scalar_divexact_ui(fmpz_mpoly_t A, const fmpz_mpoly_t B, ulong c, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_scalar_divexact_si(fmpz_mpoly_t A, const fmpz_mpoly_t B, slong c, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_scalar_divides_fmpz(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_t c, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_scalar_divides_ui(fmpz_mpoly_t A, const fmpz_mpoly_t B, ulong c, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_scalar_divides_si(fmpz_mpoly_t A, const fmpz_mpoly_t B, slong c, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_derivative(fmpz_mpoly_t A, const fmpz_mpoly_t B, slong var, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_integral(fmpz_mpoly_t A, fmpz_t scale, const fmpz_mpoly_t B, slong var, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_evaluate_all_fmpz(fmpz_t ev, const fmpz_mpoly_t A, fmpz * const * vals, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_evaluate_one_fmpz(fmpz_mpoly_t A, const fmpz_mpoly_t B, slong var, const fmpz_t val, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_compose_fmpz_poly(fmpz_poly_t A, const fmpz_mpoly_t B, fmpz_poly_struct * const * C, const fmpz_mpoly_ctx_t ctxB) noexcept + int fmpz_mpoly_compose_fmpz_mpoly_geobucket(fmpz_mpoly_t A, const fmpz_mpoly_t B, fmpz_mpoly_struct * const * C, const fmpz_mpoly_ctx_t ctxB, const fmpz_mpoly_ctx_t ctxAC) noexcept + int fmpz_mpoly_compose_fmpz_mpoly_horner(fmpz_mpoly_t A, const fmpz_mpoly_t B, fmpz_mpoly_struct * const * C, const fmpz_mpoly_ctx_t ctxB, const fmpz_mpoly_ctx_t ctxAC) noexcept + int fmpz_mpoly_compose_fmpz_mpoly(fmpz_mpoly_t A, const fmpz_mpoly_t B, fmpz_mpoly_struct * const * C, const fmpz_mpoly_ctx_t ctxB, const fmpz_mpoly_ctx_t ctxAC) noexcept + void fmpz_mpoly_compose_fmpz_mpoly_gen(fmpz_mpoly_t A, const fmpz_mpoly_t B, const slong * c, const fmpz_mpoly_ctx_t ctxB, const fmpz_mpoly_ctx_t ctxAC) noexcept + void fmpz_mpoly_mul(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_t C, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_mul_threaded(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_t C, const fmpz_mpoly_ctx_t ctx, slong thread_limit) noexcept + void fmpz_mpoly_mul_johnson(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_t C, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_mul_heap_threaded(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_t C, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_mul_array(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_t C, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_mul_array_threaded(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_t C, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_mul_dense(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_t C, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_pow_fmpz(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_t k, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_pow_ui(fmpz_mpoly_t A, const fmpz_mpoly_t B, ulong k, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_divides(fmpz_mpoly_t Q, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_divrem(fmpz_mpoly_t Q, fmpz_mpoly_t R, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_quasidivrem(fmpz_t scale, fmpz_mpoly_t Q, fmpz_mpoly_t R, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_div(fmpz_mpoly_t Q, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_quasidiv(fmpz_t scale, fmpz_mpoly_t Q, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_divrem_ideal(fmpz_mpoly_struct ** Q, fmpz_mpoly_t R, const fmpz_mpoly_t A, fmpz_mpoly_struct * const * B, slong len, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_quasidivrem_ideal(fmpz_t scale, fmpz_mpoly_struct ** Q, fmpz_mpoly_t R, const fmpz_mpoly_t A, fmpz_mpoly_struct * const * B, slong len, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_term_content(fmpz_mpoly_t M, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_content_vars(fmpz_mpoly_t g, const fmpz_mpoly_t A, slong * vars, slong vars_length, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_gcd(fmpz_mpoly_t G, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_gcd_cofactors(fmpz_mpoly_t G, fmpz_mpoly_t Abar, fmpz_mpoly_t Bbar, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_gcd_brown(fmpz_mpoly_t G, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_gcd_hensel(fmpz_mpoly_t G, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_gcd_subresultant(fmpz_mpoly_t G, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_gcd_zippel(fmpz_mpoly_t G, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_gcd_zippel2(fmpz_mpoly_t G, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_resultant(fmpz_mpoly_t R, const fmpz_mpoly_t A, const fmpz_mpoly_t B, slong var, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_discriminant(fmpz_mpoly_t D, const fmpz_mpoly_t A, slong var, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_primitive_part(fmpz_mpoly_t res, const fmpz_mpoly_t f, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_sqrt_heap(fmpz_mpoly_t Q, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx, int check) noexcept + int fmpz_mpoly_sqrt(fmpz_mpoly_t q, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + bint fmpz_mpoly_is_square(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_univar_init(fmpz_mpoly_univar_t A, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_univar_clear(fmpz_mpoly_univar_t A, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_univar_swap(fmpz_mpoly_univar_t A, fmpz_mpoly_univar_t B, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_to_univar(fmpz_mpoly_univar_t A, const fmpz_mpoly_t B, slong var, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_from_univar(fmpz_mpoly_t A, const fmpz_mpoly_univar_t B, slong var, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_univar_degree_fits_si(const fmpz_mpoly_univar_t A, const fmpz_mpoly_ctx_t ctx) noexcept + slong fmpz_mpoly_univar_length(const fmpz_mpoly_univar_t A, const fmpz_mpoly_ctx_t ctx) noexcept + slong fmpz_mpoly_univar_get_term_exp_si(fmpz_mpoly_univar_t A, slong i, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_univar_get_term_coeff(fmpz_mpoly_t c, const fmpz_mpoly_univar_t A, slong i, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_univar_swap_term_coeff(fmpz_mpoly_t c, fmpz_mpoly_univar_t A, slong i, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_inflate(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz * shift, const fmpz * stride, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_deflate(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz * shift, const fmpz * stride, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_deflation(fmpz * shift, fmpz * stride, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_pow_fps(fmpz_mpoly_t A, const fmpz_mpoly_t B, ulong k, const fmpz_mpoly_ctx_t ctx) noexcept + slong _fmpz_mpoly_divides_array(fmpz ** poly1, ulong ** exp1, slong * alloc, const fmpz * poly2, const ulong * exp2, slong len2, const fmpz * poly3, const ulong * exp3, slong len3, slong * mults, slong num, slong bits) noexcept + int fmpz_mpoly_divides_array(fmpz_mpoly_t poly1, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, const fmpz_mpoly_ctx_t ctx) noexcept + slong _fmpz_mpoly_divides_monagan_pearce(fmpz ** poly1, ulong ** exp1, slong * alloc, const fmpz * poly2, const ulong * exp2, slong len2, const fmpz * poly3, const ulong * exp3, slong len3, ulong bits, slong N, const mp_limb_t * cmpmask) noexcept + int fmpz_mpoly_divides_monagan_pearce(fmpz_mpoly_t poly1, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_divides_heap_threaded(fmpz_mpoly_t Q, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) noexcept + slong _fmpz_mpoly_div_monagan_pearce(fmpz ** polyq, ulong ** expq, slong * allocq, const fmpz * poly2, const ulong * exp2, slong len2, const fmpz * poly3, const ulong * exp3, slong len3, slong bits, slong N, const mp_limb_t * cmpmask) noexcept + void fmpz_mpoly_div_monagan_pearce(fmpz_mpoly_t polyq, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, const fmpz_mpoly_ctx_t ctx) noexcept + slong _fmpz_mpoly_divrem_monagan_pearce(slong * lenr, fmpz ** polyq, ulong ** expq, slong * allocq, fmpz ** polyr, ulong ** expr, slong * allocr, const fmpz * poly2, const ulong * exp2, slong len2, const fmpz * poly3, const ulong * exp3, slong len3, slong bits, slong N, const mp_limb_t * cmpmask) noexcept + void fmpz_mpoly_divrem_monagan_pearce(fmpz_mpoly_t q, fmpz_mpoly_t r, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, const fmpz_mpoly_ctx_t ctx) noexcept + slong _fmpz_mpoly_divrem_array(slong * lenr, fmpz ** polyq, ulong ** expq, slong * allocq, fmpz ** polyr, ulong ** expr, slong * allocr, const fmpz * poly2, const ulong * exp2, slong len2, const fmpz * poly3, const ulong * exp3, slong len3, slong * mults, slong num, slong bits) noexcept + int fmpz_mpoly_divrem_array(fmpz_mpoly_t q, fmpz_mpoly_t r, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_quasidivrem_heap(fmpz_t scale, fmpz_mpoly_t q, fmpz_mpoly_t r, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, const fmpz_mpoly_ctx_t ctx) noexcept + slong _fmpz_mpoly_divrem_ideal_monagan_pearce(fmpz_mpoly_struct ** polyq, fmpz ** polyr, ulong ** expr, slong * allocr, const fmpz * poly2, const ulong * exp2, slong len2, fmpz_mpoly_struct * const * poly3, ulong * const * exp3, slong len, slong N, slong bits, const fmpz_mpoly_ctx_t ctx, const mp_limb_t * cmpmask) noexcept + void fmpz_mpoly_divrem_ideal_monagan_pearce(fmpz_mpoly_struct ** q, fmpz_mpoly_t r, const fmpz_mpoly_t poly2, fmpz_mpoly_struct * const * poly3, slong len, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_vec_init(fmpz_mpoly_vec_t vec, slong len, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_vec_clear(fmpz_mpoly_vec_t vec, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_vec_print(const fmpz_mpoly_vec_t vec, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_vec_swap(fmpz_mpoly_vec_t x, fmpz_mpoly_vec_t y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_vec_fit_length(fmpz_mpoly_vec_t vec, slong len, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_vec_set(fmpz_mpoly_vec_t dest, const fmpz_mpoly_vec_t src, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_vec_append(fmpz_mpoly_vec_t vec, const fmpz_mpoly_t f, const fmpz_mpoly_ctx_t ctx) noexcept + slong fmpz_mpoly_vec_insert_unique(fmpz_mpoly_vec_t vec, const fmpz_mpoly_t f, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_vec_set_length(fmpz_mpoly_vec_t vec, slong len, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_vec_randtest_not_zero(fmpz_mpoly_vec_t vec, flint_rand_t state, slong len, slong poly_len, slong bits, ulong exp_bound, fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_vec_set_primitive_unique(fmpz_mpoly_vec_t res, const fmpz_mpoly_vec_t src, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_spoly(fmpz_mpoly_t res, const fmpz_mpoly_t f, const fmpz_mpoly_t g, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_reduction_primitive_part(fmpz_mpoly_t res, const fmpz_mpoly_t f, const fmpz_mpoly_vec_t vec, const fmpz_mpoly_ctx_t ctx) noexcept + bint fmpz_mpoly_vec_is_groebner(const fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F, const fmpz_mpoly_ctx_t ctx) noexcept + bint fmpz_mpoly_vec_is_autoreduced(const fmpz_mpoly_vec_t F, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_vec_autoreduction(fmpz_mpoly_vec_t H, const fmpz_mpoly_vec_t F, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_vec_autoreduction_groebner(fmpz_mpoly_vec_t H, const fmpz_mpoly_vec_t G, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_buchberger_naive(fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_buchberger_naive_with_limits(fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F, slong ideal_len_limit, slong poly_len_limit, slong poly_bits_limit, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_symmetric_gens(fmpz_mpoly_t res, ulong k, slong * vars, slong n, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_symmetric(fmpz_mpoly_t res, ulong k, const fmpz_mpoly_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fmpz_mpoly_factor.pxd b/src/sage/libs/flint/fmpz_mpoly_factor.pxd new file mode 100644 index 00000000000..a48f7052f42 --- /dev/null +++ b/src/sage/libs/flint/fmpz_mpoly_factor.pxd @@ -0,0 +1,27 @@ +# distutils: libraries = flint +# distutils: depends = flint/fmpz_mpoly_factor.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fmpz_mpoly_factor_init(fmpz_mpoly_factor_t f, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_factor_clear(fmpz_mpoly_factor_t f, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_factor_swap(fmpz_mpoly_factor_t f, fmpz_mpoly_factor_t g, const fmpz_mpoly_ctx_t ctx) noexcept + slong fmpz_mpoly_factor_length(const fmpz_mpoly_factor_t f, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_factor_get_constant_fmpz(fmpz_t c, const fmpz_mpoly_factor_t f, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_factor_get_constant_fmpq(fmpq_t c, const fmpz_mpoly_factor_t f, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_factor_get_base(fmpz_mpoly_t B, const fmpz_mpoly_factor_t f, slong i, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_factor_swap_base(fmpz_mpoly_t B, fmpz_mpoly_factor_t f, slong i, const fmpz_mpoly_ctx_t ctx) noexcept + slong fmpz_mpoly_factor_get_exp_si(fmpz_mpoly_factor_t f, slong i, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_factor_sort(fmpz_mpoly_factor_t f, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_factor_squarefree(fmpz_mpoly_factor_t f, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept + int fmpz_mpoly_factor(fmpz_mpoly_factor_t f, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fmpz_mpoly_q.pxd b/src/sage/libs/flint/fmpz_mpoly_q.pxd new file mode 100644 index 00000000000..349902f74fb --- /dev/null +++ b/src/sage/libs/flint/fmpz_mpoly_q.pxd @@ -0,0 +1,55 @@ +# distutils: libraries = flint +# distutils: depends = flint/fmpz_mpoly_q.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fmpz_mpoly_q_init(fmpz_mpoly_q_t res, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_clear(fmpz_mpoly_q_t res, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_swap(fmpz_mpoly_q_t x, fmpz_mpoly_q_t y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_set(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_set_fmpq(fmpz_mpoly_q_t res, const fmpq_t x, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_set_fmpz(fmpz_mpoly_q_t res, const fmpz_t x, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_set_si(fmpz_mpoly_q_t res, slong x, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_canonicalise(fmpz_mpoly_q_t x, const fmpz_mpoly_ctx_t ctx) noexcept + bint fmpz_mpoly_q_is_canonical(const fmpz_mpoly_q_t x, const fmpz_mpoly_ctx_t ctx) noexcept + bint fmpz_mpoly_q_is_zero(const fmpz_mpoly_q_t x, const fmpz_mpoly_ctx_t ctx) noexcept + bint fmpz_mpoly_q_is_one(const fmpz_mpoly_q_t x, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_used_vars(int * used, const fmpz_mpoly_q_t f, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_used_vars_num(int * used, const fmpz_mpoly_q_t f, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_used_vars_den(int * used, const fmpz_mpoly_q_t f, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_zero(fmpz_mpoly_q_t res, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_one(fmpz_mpoly_q_t res, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_gen(fmpz_mpoly_q_t res, slong i, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_print_pretty(const fmpz_mpoly_q_t f, const char ** x, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_randtest(fmpz_mpoly_q_t res, flint_rand_t state, slong length, mp_limb_t coeff_bits, slong exp_bound, const fmpz_mpoly_ctx_t ctx) noexcept + bint fmpz_mpoly_q_equal(const fmpz_mpoly_q_t x, const fmpz_mpoly_q_t y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_neg(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_add(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, const fmpz_mpoly_q_t y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_add_fmpq(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, const fmpq_t y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_add_fmpz(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, const fmpz_t y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_add_si(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, slong y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_sub(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, const fmpz_mpoly_q_t y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_sub_fmpq(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, const fmpq_t y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_sub_fmpz(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, const fmpz_t y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_sub_si(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, slong y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_mul(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, const fmpz_mpoly_q_t y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_mul_fmpq(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, const fmpq_t y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_mul_fmpz(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, const fmpz_t y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_mul_si(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, slong y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_div(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, const fmpz_mpoly_q_t y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_div_fmpq(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, const fmpq_t y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_div_fmpz(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, const fmpz_t y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_div_si(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, slong y, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_inv(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, const fmpz_mpoly_ctx_t ctx) noexcept + void _fmpz_mpoly_q_content(fmpz_t num, fmpz_t den, const fmpz_mpoly_t xnum, const fmpz_mpoly_t xden, const fmpz_mpoly_ctx_t ctx) noexcept + void fmpz_mpoly_q_content(fmpq_t res, const fmpz_mpoly_q_t x, const fmpz_mpoly_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fmpz_poly.pxd b/src/sage/libs/flint/fmpz_poly.pxd index c8bc6d3ca0a..59508fe6c19 100644 --- a/src/sage/libs/flint/fmpz_poly.pxd +++ b/src/sage/libs/flint/fmpz_poly.pxd @@ -1,324 +1,405 @@ # distutils: libraries = flint # distutils: depends = flint/fmpz_poly.h +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + from libc.stdio cimport FILE -from sage.libs.gmp.types cimport mpz_t +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * from sage.libs.flint.types cimport * -# flint/fmpz_poly.h cdef extern from "flint_wrap.h": - # Memory management - void fmpz_poly_init(fmpz_poly_t) - void fmpz_poly_init2(fmpz_poly_t, slong) - - void fmpz_poly_realloc(fmpz_poly_t, slong) - void _fmpz_poly_set_length(fmpz_poly_t, long) - - void fmpz_poly_fit_length(fmpz_poly_t, slong) - - void fmpz_poly_clear(fmpz_poly_t) - void _fmpz_poly_normalise(fmpz_poly_t) - - # Polynomial parameters - slong fmpz_poly_length(const fmpz_poly_t) - slong fmpz_poly_degree(const fmpz_poly_t) - - # Assignment and basic manipulation - void fmpz_poly_set(fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_set_ui(fmpz_poly_t, ulong) - void fmpz_poly_set_si(fmpz_poly_t, slong) - void fmpz_poly_set_fmpz(fmpz_poly_t, const fmpz_t) - int fmpz_poly_set_str(fmpz_poly_t, const char *) - - char *fmpz_poly_get_str(const fmpz_poly_t) - char *fmpz_poly_get_str_pretty(const fmpz_poly_t, const char *) - - void fmpz_poly_zero(fmpz_poly_t) - void fmpz_poly_one(fmpz_poly_t) - - void fmpz_poly_zero_coeffs(fmpz_poly_t, slong, slong) - - void fmpz_poly_reverse(fmpz_poly_t, const fmpz_poly_t, slong) - - void fmpz_poly_truncate(fmpz_poly_t, slong) - - # Getting and setting coefficients - void fmpz_poly_get_coeff_fmpz(fmpz_t, const fmpz_poly_t, slong) - slong fmpz_poly_get_coeff_si(const fmpz_poly_t, slong) - ulong fmpz_poly_get_coeff_ui(const fmpz_poly_t, slong) - - fmpz *fmpz_poly_get_coeff_ptr(const fmpz_poly_t, slong) - fmpz *fmpz_poly_lead(const fmpz_poly_t) - - void fmpz_poly_set_coeff_fmpz(fmpz_poly_t, slong, const fmpz_t) - void fmpz_poly_set_coeff_si(fmpz_poly_t, slong, slong) - void fmpz_poly_set_coeff_ui(fmpz_poly_t, slong, ulong) - - # Comparison - int fmpz_poly_equal(const fmpz_poly_t, const fmpz_poly_t) - int fmpz_poly_is_zero(const fmpz_poly_t) - int fmpz_poly_is_one(const fmpz_poly_t) - int fmpz_poly_is_unit(const fmpz_poly_t) - int fmpz_poly_equal_fmpz(const fmpz_poly_t, const fmpz_t) - - # Addition and subtraction - void fmpz_poly_add(fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_sub(fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_neg(fmpz_poly_t, const fmpz_poly_t) - - # Scalar multiplication and division - void fmpz_poly_scalar_mul_fmpz( - fmpz_poly_t, const fmpz_poly_t, const fmpz_t) - void fmpz_poly_scalar_mul_si(fmpz_poly_t, const fmpz_poly_t, slong) - void fmpz_poly_scalar_mul_ui(fmpz_poly_t, const fmpz_poly_t, ulong) - void fmpz_poly_scalar_mul_2exp(fmpz_poly_t, const fmpz_poly_t, ulong) - - void fmpz_poly_scalar_addmul_fmpz( - fmpz_poly_t, const fmpz_poly_t, const fmpz_t) - void fmpz_poly_scalar_submul_fmpz( - fmpz_poly_t, const fmpz_poly_t, const fmpz_t) - - void fmpz_poly_scalar_fdiv_fmpz( - fmpz_poly_t, const fmpz_poly_t, const fmpz_t) - void fmpz_poly_scalar_fdiv_si(fmpz_poly_t, const fmpz_poly_t, slong) - void fmpz_poly_scalar_fdiv_ui(fmpz_poly_t, const fmpz_poly_t, ulong) - void fmpz_poly_scalar_fdiv_2exp(fmpz_poly_t, const fmpz_poly_t, ulong) - - void fmpz_poly_scalar_tdiv_fmpz( - fmpz_poly_t, const fmpz_poly_t, const fmpz_t) - void fmpz_poly_scalar_tdiv_si(fmpz_poly_t, const fmpz_poly_t, slong) - void fmpz_poly_scalar_tdiv_ui(fmpz_poly_t, const fmpz_poly_t, ulong) - void fmpz_poly_scalar_tdiv_2exp(fmpz_poly_t, const fmpz_poly_t, ulong) - - void fmpz_poly_scalar_divexact_fmpz( - fmpz_poly_t, const fmpz_poly_t, const fmpz_t) - void fmpz_poly_scalar_divexact_si(fmpz_poly_t, const fmpz_poly_t, slong) - void fmpz_poly_scalar_divexact_ui(fmpz_poly_t, const fmpz_poly_t, ulong) - - void fmpz_poly_scalar_mod_fmpz( - fmpz_poly_t, const fmpz_poly_t, const fmpz_t) - void fmpz_poly_scalar_smod_fmpz( - fmpz_poly_t, const fmpz_poly_t, const fmpz_t) - - # Multiplication - void fmpz_poly_mul_classical( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_mullow_classical( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t, slong) - void fmpz_poly_mulhigh_classical( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t, slong) - void fmpz_poly_mulmid_classical( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - - void fmpz_poly_mul_karatsuba( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_mullow_karatsuba_n( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t, slong) - void fmpz_poly_mulhigh_karatsuba_n( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t, slong) - - void fmpz_poly_mul_KS(fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_mullow_KS( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t, slong) - - void fmpz_poly_mul_SS(fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_mullow_SS( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t, slong) - - void fmpz_poly_mul(fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_mullow( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t, slong) - void fmpz_poly_mulhigh( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t, slong) - - # Squaring - void fmpz_poly_sqr(fmpz_poly_t, const fmpz_poly_t) - - void fmpz_poly_sqr_classical(fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_sqrlow_classical(fmpz_poly_t, const fmpz_poly_t, slong) - - void fmpz_poly_sqr_karatsuba(fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_sqrlow_karatsuba_n(fmpz_poly_t, const fmpz_poly_t, slong) - - void fmpz_poly_sqr_KS(fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_sqrlow_KS(fmpz_poly_t, const fmpz_poly_t, slong) - - # Powering - void fmpz_poly_pow_multinomial(fmpz_poly_t, const fmpz_poly_t, ulong) - void fmpz_poly_pow_binomial(fmpz_poly_t, const fmpz_poly_t, ulong) - void fmpz_poly_pow_addchains(fmpz_poly_t, const fmpz_poly_t, ulong) - void fmpz_poly_pow_binexp(fmpz_poly_t, const fmpz_poly_t, ulong) - void fmpz_poly_pow_small(fmpz_poly_t, const fmpz_poly_t, ulong) - void fmpz_poly_pow(fmpz_poly_t, const fmpz_poly_t, ulong) - void fmpz_poly_pow_trunc(fmpz_poly_t, const fmpz_poly_t, ulong, slong) - - # Shifting - void fmpz_poly_shift_left(fmpz_poly_t, const fmpz_poly_t, slong) - void fmpz_poly_shift_right(fmpz_poly_t, const fmpz_poly_t, slong) - - # Bit sizes and norms - ulong fmpz_poly_max_limbs(const fmpz_poly_t) - slong fmpz_poly_max_bits(const fmpz_poly_t) - void fmpz_poly_height(fmpz_t, const fmpz_poly_t) - void fmpz_poly_2norm(fmpz_t, const fmpz_poly_t) - - # Greatest common divisor - void fmpz_poly_gcd_subresultant( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - int fmpz_poly_gcd_heuristic( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_gcd_modular( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_gcd(fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - - void fmpz_poly_xgcd_modular( - fmpz_t, fmpz_poly_t, fmpz_poly_t, - const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_xgcd( - fmpz_t, fmpz_poly_t, fmpz_poly_t, - const fmpz_poly_t, const fmpz_poly_t) - - void fmpz_poly_lcm(fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_resultant(fmpz_t, const fmpz_poly_t, const fmpz_poly_t) - - # Gaussian content - void fmpz_poly_content(fmpz_t, const fmpz_poly_t) - void fmpz_poly_primitive_part(fmpz_poly_t, const fmpz_poly_t) - - # Square-free - int fmpz_poly_is_squarefree(const fmpz_poly_t) - - # Euclidean division - void fmpz_poly_divrem_basecase( - fmpz_poly_t, fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_divrem_divconquer( - fmpz_poly_t, fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_divrem( - fmpz_poly_t, fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - - void fmpz_poly_div_basecase( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_div_divconquer( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_div(fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - - void fmpz_poly_rem_basecase( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_rem(fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_div_root(fmpz_poly_t, const fmpz_poly_t, const fmpz_t) - - # Division with precomputed inverse - void fmpz_poly_preinvert(fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_div_preinv( - fmpz_poly_t, - const fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_divrem_preinv( - fmpz_poly_t, fmpz_poly_t, - const fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - - # Power series division - void fmpz_poly_inv_series_newton(fmpz_poly_t, const fmpz_poly_t, slong) - void fmpz_poly_inv_series(fmpz_poly_t, const fmpz_poly_t, slong) - void fmpz_poly_div_series( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t, slong) - - # Pseudo division - void fmpz_poly_pseudo_divrem_basecase( - fmpz_poly_t, fmpz_poly_t, - ulong *, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_pseudo_divrem_divconquer( - fmpz_poly_t, fmpz_poly_t, - ulong *, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_pseudo_divrem( - fmpz_poly_t, fmpz_poly_t, - ulong *, const fmpz_poly_t, const fmpz_poly_t) - - void fmpz_poly_pseudo_div( - fmpz_poly_t, ulong *, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_pseudo_rem( - fmpz_poly_t, ulong *, const fmpz_poly_t, const fmpz_poly_t) - - void fmpz_poly_pseudo_divrem_cohen( - fmpz_poly_t, fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_pseudo_rem_cohen( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - - # Derivative - void fmpz_poly_derivative(fmpz_poly_t, const fmpz_poly_t) - - # Evaluation - void fmpz_poly_evaluate_divconquer_fmpz( - fmpz_t, const fmpz_poly_t, const fmpz_t) - void fmpz_poly_evaluate_horner_fmpz( - fmpz_t, const fmpz_poly_t, const fmpz_t) - void fmpz_poly_evaluate_fmpz(fmpz_t, const fmpz_poly_t, const fmpz_t) - - void fmpz_poly_evaluate_horner_fmpq( - fmpq_t, const fmpz_poly_t, const fmpq_t) - void fmpz_poly_evaluate_fmpq(fmpq_t, const fmpz_poly_t, const fmpq_t) - - mp_limb_t fmpz_poly_evaluate_mod(fmpz_poly_t, mp_limb_t, mp_limb_t) - - # Composition - void fmpz_poly_compose_horner( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_compose_divconquer( - fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - void fmpz_poly_compose(fmpz_poly_t, const fmpz_poly_t, const fmpz_poly_t) - - # Revert - void fmpz_poly_revert_series_lagrange(fmpz_poly_t Qinv, fmpz_poly_t Q, long n) - void fmpz_poly_revert_series_lagrange_fast(fmpz_poly_t Qinv, - fmpz_poly_t Q, long n) - void fmpz_poly_revert_series_newton(fmpz_poly_t Qinv, fmpz_poly_t Q, long n) - void fmpz_poly_revert_series(fmpz_poly_t Qinv, fmpz_poly_t Q, long n) - - # Square root - int fmpz_poly_sqrt_classical(fmpz_poly_t b, fmpz_poly_t a) - int fmpz_poly_sqrt(fmpz_poly_t b, fmpz_poly_t a) - - # Signature - void fmpz_poly_signature(long * r1, long * r2, fmpz_poly_t poly) - - # Taylor shift - void fmpz_poly_taylor_shift_horner( - fmpz_poly_t, const fmpz_poly_t, const fmpz_t) - void fmpz_poly_taylor_shift_divconquer( - fmpz_poly_t, const fmpz_poly_t, const fmpz_t) - void fmpz_poly_taylor_shift(fmpz_poly_t, const fmpz_poly_t, const fmpz_t) - - # Input and output - int fmpz_poly_fprint(FILE *, fmpz_poly_t) - int fmpz_poly_fprint_prett(FILE *, fmpz_poly_t, char *) - int fmpz_poly_print(const fmpz_poly_t) - int fmpz_poly_print_pretty(const fmpz_poly_t, const char *) - - int fmpz_poly_fread(FILE *, fmpz_poly_t) - int fmpz_poly_fread_pretty(FILE *, fmpz_poly_t, char **) - int fmpz_poly_read(fmpz_poly_t) - int fmpz_poly_read_pretty(fmpz_poly_t, char **) - - # CRT - void fmpz_poly_get_nmod_poly(nmod_poly_t, const fmpz_poly_t) - - void fmpz_poly_set_nmod_poly(fmpz_poly_t, const nmod_poly_t) - void fmpz_poly_set_nmod_poly_unsigned(fmpz_poly_t, const nmod_poly_t) - - void fmpz_poly_CRT_ui( - fmpz_poly_t, - const fmpz_poly_t, const fmpz_t, const nmod_poly_t, int) - - -# functions removed from flint but still needed in sage -cdef void fmpz_poly_scalar_mul_mpz(fmpz_poly_t, const fmpz_poly_t, const mpz_t) -cdef void fmpz_poly_scalar_divexact_mpz(fmpz_poly_t, const fmpz_poly_t, const mpz_t) -cdef void fmpz_poly_scalar_fdiv_mpz(fmpz_poly_t, const fmpz_poly_t, const mpz_t) -cdef void fmpz_poly_set_coeff_mpz(fmpz_poly_t, slong, const mpz_t) -cdef void fmpz_poly_get_coeff_mpz(mpz_t, const fmpz_poly_t, slong) -cdef void fmpz_poly_set_mpz(fmpz_poly_t, const mpz_t) - - -# Wrapper Cython class -from sage.structure.sage_object cimport SageObject -cdef class Fmpz_poly(SageObject): - cdef fmpz_poly_t poly + void fmpz_poly_init(fmpz_poly_t poly) noexcept + void fmpz_poly_init2(fmpz_poly_t poly, slong alloc) noexcept + void fmpz_poly_realloc(fmpz_poly_t poly, slong alloc) noexcept + void fmpz_poly_fit_length(fmpz_poly_t poly, slong len) noexcept + void fmpz_poly_clear(fmpz_poly_t poly) noexcept + void _fmpz_poly_normalise(fmpz_poly_t poly) noexcept + void _fmpz_poly_set_length(fmpz_poly_t poly, slong newlen) noexcept + void fmpz_poly_attach_truncate(fmpz_poly_t trunc, const fmpz_poly_t poly, slong n) noexcept + void fmpz_poly_attach_shift(fmpz_poly_t trunc, const fmpz_poly_t poly, slong n) noexcept + slong fmpz_poly_length(const fmpz_poly_t poly) noexcept + slong fmpz_poly_degree(const fmpz_poly_t poly) noexcept + void fmpz_poly_set(fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void fmpz_poly_set_si(fmpz_poly_t poly, slong c) noexcept + void fmpz_poly_set_ui(fmpz_poly_t poly, ulong c) noexcept + void fmpz_poly_set_fmpz(fmpz_poly_t poly, const fmpz_t c) noexcept + int _fmpz_poly_set_str(fmpz * poly, const char * str) noexcept + int fmpz_poly_set_str(fmpz_poly_t poly, const char * str) noexcept + char * _fmpz_poly_get_str(const fmpz * poly, slong len) noexcept + char * fmpz_poly_get_str(const fmpz_poly_t poly) noexcept + char * _fmpz_poly_get_str_pretty(const fmpz * poly, slong len, const char * x) noexcept + char * fmpz_poly_get_str_pretty(const fmpz_poly_t poly, const char * x) noexcept + void fmpz_poly_zero(fmpz_poly_t poly) noexcept + void fmpz_poly_one(fmpz_poly_t poly) noexcept + void fmpz_poly_zero_coeffs(fmpz_poly_t poly, slong i, slong j) noexcept + void fmpz_poly_swap(fmpz_poly_t poly1, fmpz_poly_t poly2) noexcept + void _fmpz_poly_reverse(fmpz * res, const fmpz * poly, slong len, slong n) noexcept + void fmpz_poly_reverse(fmpz_poly_t res, const fmpz_poly_t poly, slong n) noexcept + void fmpz_poly_truncate(fmpz_poly_t poly, slong newlen) noexcept + void fmpz_poly_set_trunc(fmpz_poly_t res, const fmpz_poly_t poly, slong n) noexcept + void fmpz_poly_randtest(fmpz_poly_t f, flint_rand_t state, slong len, flint_bitcnt_t bits) noexcept + void fmpz_poly_randtest_unsigned(fmpz_poly_t f, flint_rand_t state, slong len, flint_bitcnt_t bits) noexcept + void fmpz_poly_randtest_not_zero(fmpz_poly_t f, flint_rand_t state, slong len, flint_bitcnt_t bits) noexcept + void fmpz_poly_randtest_no_real_root(fmpz_poly_t p, flint_rand_t state, slong len, flint_bitcnt_t bits) noexcept + void fmpz_poly_randtest_irreducible1(fmpz_poly_t pol, flint_rand_t state, slong len, mp_bitcnt_t bits) noexcept + void fmpz_poly_randtest_irreducible2(fmpz_poly_t pol, flint_rand_t state, slong len, mp_bitcnt_t bits) noexcept + void fmpz_poly_randtest_irreducible(fmpz_poly_t pol, flint_rand_t state, slong len, mp_bitcnt_t bits) noexcept + void fmpz_poly_get_coeff_fmpz(fmpz_t x, const fmpz_poly_t poly, slong n) noexcept + slong fmpz_poly_get_coeff_si(const fmpz_poly_t poly, slong n) noexcept + ulong fmpz_poly_get_coeff_ui(const fmpz_poly_t poly, slong n) noexcept + fmpz * fmpz_poly_get_coeff_ptr(const fmpz_poly_t poly, slong n) noexcept + fmpz * fmpz_poly_lead(const fmpz_poly_t poly) noexcept + void fmpz_poly_set_coeff_fmpz(fmpz_poly_t poly, slong n, const fmpz_t x) noexcept + void fmpz_poly_set_coeff_si(fmpz_poly_t poly, slong n, slong x) noexcept + void fmpz_poly_set_coeff_ui(fmpz_poly_t poly, slong n, ulong x) noexcept + bint fmpz_poly_equal(const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + bint fmpz_poly_equal_trunc(const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) noexcept + bint fmpz_poly_is_zero(const fmpz_poly_t poly) noexcept + bint fmpz_poly_is_one(const fmpz_poly_t poly) noexcept + bint fmpz_poly_is_unit(const fmpz_poly_t poly) noexcept + bint fmpz_poly_is_gen(const fmpz_poly_t poly) noexcept + void _fmpz_poly_add(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2) noexcept + void fmpz_poly_add(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void fmpz_poly_add_series(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) noexcept + void _fmpz_poly_sub(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2) noexcept + void fmpz_poly_sub(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void fmpz_poly_sub_series(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) noexcept + void fmpz_poly_neg(fmpz_poly_t res, const fmpz_poly_t poly) noexcept + void fmpz_poly_scalar_abs(fmpz_poly_t res, const fmpz_poly_t poly) noexcept + void fmpz_poly_scalar_mul_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t x) noexcept + void fmpz_poly_scalar_mul_si(fmpz_poly_t poly1, const fmpz_poly_t poly2, slong x) noexcept + void fmpz_poly_scalar_mul_ui(fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong x) noexcept + void fmpz_poly_scalar_mul_2exp(fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong exp) noexcept + void fmpz_poly_scalar_addmul_si(fmpz_poly_t poly1, const fmpz_poly_t poly2, slong x) noexcept + void fmpz_poly_scalar_addmul_ui(fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong x) noexcept + void fmpz_poly_scalar_addmul_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t x) noexcept + void fmpz_poly_scalar_submul_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t x) noexcept + void fmpz_poly_scalar_fdiv_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t x) noexcept + void fmpz_poly_scalar_fdiv_si(fmpz_poly_t poly1, const fmpz_poly_t poly2, slong x) noexcept + void fmpz_poly_scalar_fdiv_ui(fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong x) noexcept + void fmpz_poly_scalar_fdiv_2exp(fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong x) noexcept + void fmpz_poly_scalar_tdiv_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t x) noexcept + void fmpz_poly_scalar_tdiv_si(fmpz_poly_t poly1, const fmpz_poly_t poly2, slong x) noexcept + void fmpz_poly_scalar_tdiv_ui(fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong x) noexcept + void fmpz_poly_scalar_tdiv_2exp(fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong x) noexcept + void fmpz_poly_scalar_divexact_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t x) noexcept + void fmpz_poly_scalar_divexact_si(fmpz_poly_t poly1, const fmpz_poly_t poly2, slong x) noexcept + void fmpz_poly_scalar_divexact_ui(fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong x) noexcept + void fmpz_poly_scalar_mod_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t p) noexcept + void fmpz_poly_scalar_smod_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t p) noexcept + slong _fmpz_poly_remove_content_2exp(fmpz * pol, slong len) noexcept + void _fmpz_poly_scale_2exp(fmpz * pol, slong len, slong k) noexcept + void _fmpz_poly_bit_pack(mp_ptr arr, const fmpz * poly, slong len, flint_bitcnt_t bit_size, int negate) noexcept + int _fmpz_poly_bit_unpack(fmpz * poly, slong len, mp_srcptr arr, flint_bitcnt_t bit_size, int negate) noexcept + void _fmpz_poly_bit_unpack_unsigned(fmpz * poly, slong len, mp_srcptr arr, flint_bitcnt_t bit_size) noexcept + void fmpz_poly_bit_pack(fmpz_t f, const fmpz_poly_t poly, flint_bitcnt_t bit_size) noexcept + void fmpz_poly_bit_unpack(fmpz_poly_t poly, const fmpz_t f, flint_bitcnt_t bit_size) noexcept + void fmpz_poly_bit_unpack_unsigned(fmpz_poly_t poly, const fmpz_t f, flint_bitcnt_t bit_size) noexcept + void _fmpz_poly_mul_classical(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2) noexcept + void fmpz_poly_mul_classical(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void _fmpz_poly_mullow_classical(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2, slong n) noexcept + void fmpz_poly_mullow_classical(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) noexcept + void _fmpz_poly_mulhigh_classical(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2, slong start) noexcept + void fmpz_poly_mulhigh_classical(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong start) noexcept + void _fmpz_poly_mulmid_classical(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2) noexcept + void fmpz_poly_mulmid_classical(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void _fmpz_poly_mul_karatsuba(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2) noexcept + void fmpz_poly_mul_karatsuba(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void _fmpz_poly_mullow_karatsuba_n(fmpz * res, const fmpz * poly1, const fmpz * poly2, slong n) noexcept + void fmpz_poly_mullow_karatsuba_n(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) noexcept + void _fmpz_poly_mulhigh_karatsuba_n(fmpz * res, const fmpz * poly1, const fmpz * poly2, slong len) noexcept + void fmpz_poly_mulhigh_karatsuba_n(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong len) noexcept + void _fmpz_poly_mul_KS(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2) noexcept + void fmpz_poly_mul_KS(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void _fmpz_poly_mullow_KS(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2, slong n) noexcept + void fmpz_poly_mullow_KS(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) noexcept + void _fmpz_poly_mul_SS(fmpz * output, const fmpz * input1, slong length1, const fmpz * input2, slong length2) noexcept + void fmpz_poly_mul_SS(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void _fmpz_poly_mullow_SS(fmpz * output, const fmpz * input1, slong length1, const fmpz * input2, slong length2, slong n) noexcept + void fmpz_poly_mullow_SS(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) noexcept + void _fmpz_poly_mul(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2) noexcept + void fmpz_poly_mul(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void _fmpz_poly_mullow(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2, slong n) noexcept + void fmpz_poly_mullow(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) noexcept + void fmpz_poly_mulhigh_n(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) noexcept + void _fmpz_poly_mulhigh(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2, slong start) noexcept + void fmpz_poly_mul_SS_precache_init(fmpz_poly_mul_precache_t pre, slong len1, slong bits1, const fmpz_poly_t poly2) noexcept + void fmpz_poly_mul_precache_clear(fmpz_poly_mul_precache_t pre) noexcept + void _fmpz_poly_mullow_SS_precache(fmpz * output, const fmpz * input1, slong len1, fmpz_poly_mul_precache_t pre, slong trunc) noexcept + void fmpz_poly_mullow_SS_precache(fmpz_poly_t res, const fmpz_poly_t poly1, fmpz_poly_mul_precache_t pre, slong n) noexcept + void fmpz_poly_mul_SS_precache(fmpz_poly_t res, const fmpz_poly_t poly1, fmpz_poly_mul_precache_t pre) noexcept + void _fmpz_poly_sqr_KS(fmpz * rop, const fmpz * op, slong len) noexcept + void fmpz_poly_sqr_KS(fmpz_poly_t rop, const fmpz_poly_t op) noexcept + void _fmpz_poly_sqr_karatsuba(fmpz * rop, const fmpz * op, slong len) noexcept + void fmpz_poly_sqr_karatsuba(fmpz_poly_t rop, const fmpz_poly_t op) noexcept + void _fmpz_poly_sqr_classical(fmpz * rop, const fmpz * op, slong len) noexcept + void fmpz_poly_sqr_classical(fmpz_poly_t rop, const fmpz_poly_t op) noexcept + void _fmpz_poly_sqr(fmpz * rop, const fmpz * op, slong len) noexcept + void fmpz_poly_sqr(fmpz_poly_t rop, const fmpz_poly_t op) noexcept + void _fmpz_poly_sqrlow_KS(fmpz * res, const fmpz * poly, slong len, slong n) noexcept + void fmpz_poly_sqrlow_KS(fmpz_poly_t res, const fmpz_poly_t poly, slong n) noexcept + void _fmpz_poly_sqrlow_karatsuba_n(fmpz * res, const fmpz * poly, slong n) noexcept + void fmpz_poly_sqrlow_karatsuba_n(fmpz_poly_t res, const fmpz_poly_t poly, slong n) noexcept + void _fmpz_poly_sqrlow_classical(fmpz * res, const fmpz * poly, slong len, slong n) noexcept + void fmpz_poly_sqrlow_classical(fmpz_poly_t res, const fmpz_poly_t poly, slong n) noexcept + void _fmpz_poly_sqrlow(fmpz * res, const fmpz * poly, slong len, slong n) noexcept + void fmpz_poly_sqrlow(fmpz_poly_t res, const fmpz_poly_t poly, slong n) noexcept + void _fmpz_poly_pow_multinomial(fmpz * res, const fmpz * poly, slong len, ulong e) noexcept + void fmpz_poly_pow_multinomial(fmpz_poly_t res, const fmpz_poly_t poly, ulong e) noexcept + void _fmpz_poly_pow_binomial(fmpz * res, const fmpz * poly, ulong e) noexcept + void fmpz_poly_pow_binomial(fmpz_poly_t res, const fmpz_poly_t poly, ulong e) noexcept + void _fmpz_poly_pow_addchains(fmpz * res, const fmpz * poly, slong len, const int * a, int n) noexcept + void fmpz_poly_pow_addchains(fmpz_poly_t res, const fmpz_poly_t poly, ulong e) noexcept + void _fmpz_poly_pow_binexp(fmpz * res, const fmpz * poly, slong len, ulong e) noexcept + void fmpz_poly_pow_binexp(fmpz_poly_t res, const fmpz_poly_t poly, ulong e) noexcept + void _fmpz_poly_pow_small(fmpz * res, const fmpz * poly, slong len, ulong e) noexcept + void _fmpz_poly_pow(fmpz * res, const fmpz * poly, slong len, ulong e) noexcept + void fmpz_poly_pow(fmpz_poly_t res, const fmpz_poly_t poly, ulong e) noexcept + void _fmpz_poly_pow_trunc(fmpz * res, const fmpz * poly, ulong e, slong n) noexcept + void fmpz_poly_pow_trunc(fmpz_poly_t res, const fmpz_poly_t poly, ulong e, slong n) noexcept + void _fmpz_poly_shift_left(fmpz * res, const fmpz * poly, slong len, slong n) noexcept + void fmpz_poly_shift_left(fmpz_poly_t res, const fmpz_poly_t poly, slong n) noexcept + void _fmpz_poly_shift_right(fmpz * res, const fmpz * poly, slong len, slong n) noexcept + void fmpz_poly_shift_right(fmpz_poly_t res, const fmpz_poly_t poly, slong n) noexcept + ulong fmpz_poly_max_limbs(const fmpz_poly_t poly) noexcept + slong fmpz_poly_max_bits(const fmpz_poly_t poly) noexcept + void fmpz_poly_height(fmpz_t height, const fmpz_poly_t poly) noexcept + void _fmpz_poly_2norm(fmpz_t res, const fmpz * poly, slong len) noexcept + void fmpz_poly_2norm(fmpz_t res, const fmpz_poly_t poly) noexcept + mp_limb_t _fmpz_poly_2norm_normalised_bits(const fmpz * poly, slong len) noexcept + void _fmpz_poly_gcd_subresultant(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2) noexcept + void fmpz_poly_gcd_subresultant(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + int _fmpz_poly_gcd_heuristic(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2) noexcept + int fmpz_poly_gcd_heuristic(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void _fmpz_poly_gcd_modular(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2) noexcept + void fmpz_poly_gcd_modular(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void _fmpz_poly_gcd(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2) noexcept + void fmpz_poly_gcd(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void _fmpz_poly_xgcd_modular(fmpz_t r, fmpz * s, fmpz * t, const fmpz * f, slong len1, const fmpz * g, slong len2) noexcept + void fmpz_poly_xgcd_modular(fmpz_t r, fmpz_poly_t s, fmpz_poly_t t, const fmpz_poly_t f, const fmpz_poly_t g) noexcept + void _fmpz_poly_xgcd(fmpz_t r, fmpz * s, fmpz * t, const fmpz * f, slong len1, const fmpz * g, slong len2) noexcept + void fmpz_poly_xgcd(fmpz_t r, fmpz_poly_t s, fmpz_poly_t t, const fmpz_poly_t f, const fmpz_poly_t g) noexcept + void _fmpz_poly_lcm(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2) noexcept + void fmpz_poly_lcm(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void _fmpz_poly_resultant_modular(fmpz_t res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2) noexcept + void fmpz_poly_resultant_modular(fmpz_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void fmpz_poly_resultant_modular_div(fmpz_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t div, slong nbits) noexcept + void _fmpz_poly_resultant_euclidean(fmpz_t res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2) noexcept + void fmpz_poly_resultant_euclidean(fmpz_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void _fmpz_poly_resultant(fmpz_t res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2) noexcept + void fmpz_poly_resultant(fmpz_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void _fmpz_poly_discriminant(fmpz_t res, const fmpz * poly, slong len) noexcept + void fmpz_poly_discriminant(fmpz_t res, const fmpz_poly_t poly) noexcept + void _fmpz_poly_content(fmpz_t res, const fmpz * poly, slong len) noexcept + void fmpz_poly_content(fmpz_t res, const fmpz_poly_t poly) noexcept + void _fmpz_poly_primitive_part(fmpz * res, const fmpz * poly, slong len) noexcept + void fmpz_poly_primitive_part(fmpz_poly_t res, const fmpz_poly_t poly) noexcept + bint _fmpz_poly_is_squarefree(const fmpz * poly, slong len) noexcept + bint fmpz_poly_is_squarefree(const fmpz_poly_t poly) noexcept + int _fmpz_poly_divrem_basecase(fmpz * Q, fmpz * R, const fmpz * A, slong lenA, const fmpz * B, slong lenB, int exact) noexcept + void fmpz_poly_divrem_basecase(fmpz_poly_t Q, fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B) noexcept + int _fmpz_poly_divrem_divconquer_recursive(fmpz * Q, fmpz * BQ, fmpz * W, const fmpz * A, const fmpz * B, slong lenB, int exact) noexcept + int _fmpz_poly_divrem_divconquer(fmpz * Q, fmpz * R, const fmpz * A, slong lenA, const fmpz * B, slong lenB, int exact) noexcept + void fmpz_poly_divrem_divconquer(fmpz_poly_t Q, fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B) noexcept + int _fmpz_poly_divrem(fmpz * Q, fmpz * R, const fmpz * A, slong lenA, const fmpz * B, slong lenB, int exact) noexcept + void fmpz_poly_divrem(fmpz_poly_t Q, fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B) noexcept + int _fmpz_poly_div_basecase(fmpz * Q, fmpz * R, const fmpz * A, slong lenA, const fmpz * B, slong lenB, int exact) noexcept + void fmpz_poly_div_basecase(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B) noexcept + int _fmpz_poly_divremlow_divconquer_recursive(fmpz * Q, fmpz * BQ, const fmpz * A, const fmpz * B, slong lenB, int exact) noexcept + int _fmpz_poly_div_divconquer_recursive(fmpz * Q, fmpz * temp, const fmpz * A, const fmpz * B, slong lenB, int exact) noexcept + int _fmpz_poly_div_divconquer(fmpz * Q, const fmpz * A, slong lenA, const fmpz * B, slong lenB, int exact) noexcept + void fmpz_poly_div_divconquer(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B) noexcept + int _fmpz_poly_div(fmpz * Q, const fmpz * A, slong lenA, const fmpz * B, slong lenB, int exact) noexcept + void fmpz_poly_div(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B) noexcept + void _fmpz_poly_rem_basecase(fmpz * R, const fmpz * A, slong lenA, const fmpz * B, slong lenB) noexcept + void fmpz_poly_rem_basecase(fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B) noexcept + void _fmpz_poly_rem(fmpz * R, const fmpz * A, slong lenA, const fmpz * B, slong lenB) noexcept + void fmpz_poly_rem(fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B) noexcept + void _fmpz_poly_div_root(fmpz * Q, const fmpz * A, slong len, const fmpz_t c) noexcept + void fmpz_poly_div_root(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_t c) noexcept + void _fmpz_poly_preinvert(fmpz * B_inv, const fmpz * B, slong n) noexcept + void fmpz_poly_preinvert(fmpz_poly_t B_inv, const fmpz_poly_t B) noexcept + void _fmpz_poly_div_preinv(fmpz * Q, const fmpz * A, slong len1, const fmpz * B, const fmpz * B_inv, slong len2) noexcept + void fmpz_poly_div_preinv(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B, const fmpz_poly_t B_inv) noexcept + void _fmpz_poly_divrem_preinv(fmpz * Q, fmpz * A, slong len1, const fmpz * B, const fmpz * B_inv, slong len2) noexcept + 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) noexcept + fmpz ** _fmpz_poly_powers_precompute(const fmpz * B, slong len) noexcept + void fmpz_poly_powers_precompute(fmpz_poly_powers_precomp_t pinv, fmpz_poly_t poly) noexcept + void _fmpz_poly_powers_clear(fmpz ** powers, slong len) noexcept + void fmpz_poly_powers_clear(fmpz_poly_powers_precomp_t pinv) noexcept + void _fmpz_poly_rem_powers_precomp(fmpz * A, slong m, const fmpz * B, slong n, fmpz ** const powers) noexcept + 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) noexcept + int _fmpz_poly_divides(fmpz * Q, const fmpz * A, slong lenA, const fmpz * B, slong lenB) noexcept + int fmpz_poly_divides(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B) noexcept + slong fmpz_poly_remove(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void fmpz_poly_divlow_smodp(fmpz * res, const fmpz_poly_t f, const fmpz_poly_t g, const fmpz_t p, slong n) noexcept + void fmpz_poly_divhigh_smodp(fmpz * res, const fmpz_poly_t f, const fmpz_poly_t g, const fmpz_t p, slong n) noexcept + void _fmpz_poly_inv_series_basecase(fmpz * Qinv, const fmpz * Q, slong Qlen, slong n) noexcept + void fmpz_poly_inv_series_basecase(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong n) noexcept + void _fmpz_poly_inv_series_newton(fmpz * Qinv, const fmpz * Q, slong Qlen, slong n) noexcept + void fmpz_poly_inv_series_newton(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong n) noexcept + void _fmpz_poly_inv_series(fmpz * Qinv, const fmpz * Q, slong Qlen, slong n) noexcept + void fmpz_poly_inv_series(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong n) noexcept + void _fmpz_poly_div_series_basecase(fmpz * Q, const fmpz * A, slong Alen, const fmpz * B, slong Blen, slong n) noexcept + void _fmpz_poly_div_series_divconquer(fmpz * Q, const fmpz * A, slong Alen, const fmpz * B, slong Blen, slong n) noexcept + void _fmpz_poly_div_series(fmpz * Q, const fmpz * A, slong Alen, const fmpz * B, slong Blen, slong n) noexcept + void fmpz_poly_div_series_basecase(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B, slong n) noexcept + void fmpz_poly_div_series_divconquer(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B, slong n) noexcept + void fmpz_poly_div_series(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B, slong n) noexcept + void _fmpz_poly_pseudo_divrem_basecase(fmpz * Q, fmpz * R, ulong * d, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_preinvn_t inv) noexcept + 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) noexcept + void _fmpz_poly_pseudo_divrem_divconquer(fmpz * Q, fmpz * R, ulong * d, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_preinvn_t inv) noexcept + 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) noexcept + void _fmpz_poly_pseudo_divrem_cohen(fmpz * Q, fmpz * R, const fmpz * A, slong lenA, const fmpz * B, slong lenB) noexcept + void fmpz_poly_pseudo_divrem_cohen(fmpz_poly_t Q, fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B) noexcept + void _fmpz_poly_pseudo_rem_cohen(fmpz * R, const fmpz * A, slong lenA, const fmpz * B, slong lenB) noexcept + void fmpz_poly_pseudo_rem_cohen(fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B) noexcept + void _fmpz_poly_pseudo_divrem(fmpz * Q, fmpz * R, ulong * d, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_preinvn_t inv) noexcept + 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) noexcept + void _fmpz_poly_pseudo_div(fmpz * Q, ulong * d, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_preinvn_t inv) noexcept + void fmpz_poly_pseudo_div(fmpz_poly_t Q, ulong * d, const fmpz_poly_t A, const fmpz_poly_t B) noexcept + void _fmpz_poly_pseudo_rem(fmpz * R, ulong * d, const fmpz * A, slong lenA, const fmpz * B, slong lenB, const fmpz_preinvn_t inv) noexcept + void fmpz_poly_pseudo_rem(fmpz_poly_t R, ulong * d, const fmpz_poly_t A, const fmpz_poly_t B) noexcept + void _fmpz_poly_derivative(fmpz * rpoly, const fmpz * poly, slong len) noexcept + void fmpz_poly_derivative(fmpz_poly_t res, const fmpz_poly_t poly) noexcept + void _fmpz_poly_nth_derivative(fmpz * rpoly, const fmpz * poly, ulong n, slong len) noexcept + void fmpz_poly_nth_derivative(fmpz_poly_t res, const fmpz_poly_t poly, ulong n) noexcept + void _fmpz_poly_evaluate_divconquer_fmpz(fmpz_t res, const fmpz * poly, slong len, const fmpz_t a) noexcept + void fmpz_poly_evaluate_divconquer_fmpz(fmpz_t res, const fmpz_poly_t poly, const fmpz_t a) noexcept + void _fmpz_poly_evaluate_horner_fmpz(fmpz_t res, const fmpz * f, slong len, const fmpz_t a) noexcept + void fmpz_poly_evaluate_horner_fmpz(fmpz_t res, const fmpz_poly_t f, const fmpz_t a) noexcept + void _fmpz_poly_evaluate_fmpz(fmpz_t res, const fmpz * f, slong len, const fmpz_t a) noexcept + void fmpz_poly_evaluate_fmpz(fmpz_t res, const fmpz_poly_t f, const fmpz_t a) noexcept + void _fmpz_poly_evaluate_divconquer_fmpq(fmpz_t rnum, fmpz_t rden, const fmpz * f, slong len, const fmpz_t anum, const fmpz_t aden) noexcept + void fmpz_poly_evaluate_divconquer_fmpq(fmpq_t res, const fmpz_poly_t f, const fmpq_t a) noexcept + void _fmpz_poly_evaluate_horner_fmpq(fmpz_t rnum, fmpz_t rden, const fmpz * f, slong len, const fmpz_t anum, const fmpz_t aden) noexcept + void fmpz_poly_evaluate_horner_fmpq(fmpq_t res, const fmpz_poly_t f, const fmpq_t a) noexcept + void _fmpz_poly_evaluate_fmpq(fmpz_t rnum, fmpz_t rden, const fmpz * f, slong len, const fmpz_t anum, const fmpz_t aden) noexcept + void fmpz_poly_evaluate_fmpq(fmpq_t res, const fmpz_poly_t f, const fmpq_t a) noexcept + mp_limb_t _fmpz_poly_evaluate_mod(const fmpz * poly, slong len, mp_limb_t a, mp_limb_t n, mp_limb_t ninv) noexcept + mp_limb_t fmpz_poly_evaluate_mod(const fmpz_poly_t poly, mp_limb_t a, mp_limb_t n) noexcept + void fmpz_poly_evaluate_fmpz_vec(fmpz * res, const fmpz_poly_t f, const fmpz * a, slong n) noexcept + double _fmpz_poly_evaluate_horner_d(const fmpz * poly, slong n, double d) noexcept + double fmpz_poly_evaluate_horner_d(const fmpz_poly_t poly, double d) noexcept + double _fmpz_poly_evaluate_horner_d_2exp(slong * exp, const fmpz * poly, slong n, double d) noexcept + double fmpz_poly_evaluate_horner_d_2exp(slong * exp, const fmpz_poly_t poly, double d) noexcept + double _fmpz_poly_evaluate_horner_d_2exp2(slong * exp, const fmpz * poly, slong n, double d, slong dexp) noexcept + void _fmpz_poly_monomial_to_newton(fmpz * poly, const fmpz * roots, slong n) noexcept + void _fmpz_poly_newton_to_monomial(fmpz * poly, const fmpz * roots, slong n) noexcept + void fmpz_poly_interpolate_fmpz_vec(fmpz_poly_t poly, const fmpz * xs, const fmpz * ys, slong n) noexcept + void _fmpz_poly_compose_horner(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2) noexcept + void fmpz_poly_compose_horner(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void _fmpz_poly_compose_divconquer(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2) noexcept + void fmpz_poly_compose_divconquer(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void _fmpz_poly_compose(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2) noexcept + void fmpz_poly_compose(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) noexcept + void fmpz_poly_inflate(fmpz_poly_t result, const fmpz_poly_t input, ulong inflation) noexcept + void fmpz_poly_deflate(fmpz_poly_t result, const fmpz_poly_t input, ulong deflation) noexcept + ulong fmpz_poly_deflation(const fmpz_poly_t input) noexcept + void _fmpz_poly_taylor_shift_horner(fmpz * poly, const fmpz_t c, slong n) noexcept + void fmpz_poly_taylor_shift_horner(fmpz_poly_t g, const fmpz_poly_t f, const fmpz_t c) noexcept + void _fmpz_poly_taylor_shift_divconquer(fmpz * poly, const fmpz_t c, slong n) noexcept + void fmpz_poly_taylor_shift_divconquer(fmpz_poly_t g, const fmpz_poly_t f, const fmpz_t c) noexcept + void _fmpz_poly_taylor_shift_multi_mod(fmpz * poly, const fmpz_t c, slong n) noexcept + void fmpz_poly_taylor_shift_multi_mod(fmpz_poly_t g, const fmpz_poly_t f, const fmpz_t c) noexcept + void _fmpz_poly_taylor_shift(fmpz * poly, const fmpz_t c, slong n) noexcept + void fmpz_poly_taylor_shift(fmpz_poly_t g, const fmpz_poly_t f, const fmpz_t c) noexcept + void _fmpz_poly_compose_series_horner(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2, slong n) noexcept + void fmpz_poly_compose_series_horner(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) noexcept + void _fmpz_poly_compose_series_brent_kung(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2, slong n) noexcept + void fmpz_poly_compose_series_brent_kung(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) noexcept + void _fmpz_poly_compose_series(fmpz * res, const fmpz * poly1, slong len1, const fmpz * poly2, slong len2, slong n) noexcept + void fmpz_poly_compose_series(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) noexcept + void _fmpz_poly_revert_series(fmpz * Qinv, const fmpz * Q, slong Qlen, slong n) noexcept + void fmpz_poly_revert_series(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong n) noexcept + int _fmpz_poly_sqrtrem_classical(fmpz * res, fmpz * r, const fmpz * poly, slong len) noexcept + int fmpz_poly_sqrtrem_classical(fmpz_poly_t b, fmpz_poly_t r, const fmpz_poly_t a) noexcept + int _fmpz_poly_sqrtrem_divconquer(fmpz * res, fmpz * r, const fmpz * poly, slong len, fmpz * temp) noexcept + int fmpz_poly_sqrtrem_divconquer(fmpz_poly_t b, fmpz_poly_t r, const fmpz_poly_t a) noexcept + int _fmpz_poly_sqrt_classical(fmpz * res, const fmpz * poly, slong len, int exact) noexcept + int fmpz_poly_sqrt_classical(fmpz_poly_t b, const fmpz_poly_t a) noexcept + int _fmpz_poly_sqrt_KS(fmpz * res, const fmpz * poly, slong len) noexcept + int fmpz_poly_sqrt_KS(fmpz_poly_t b, const fmpz_poly_t a) noexcept + int _fmpz_poly_sqrt_divconquer(fmpz * res, const fmpz * poly, slong len, int exact) noexcept + int fmpz_poly_sqrt_divconquer(fmpz_poly_t b, const fmpz_poly_t a) noexcept + int _fmpz_poly_sqrt(fmpz * res, const fmpz * poly, slong len) noexcept + int fmpz_poly_sqrt(fmpz_poly_t b, const fmpz_poly_t a) noexcept + int _fmpz_poly_sqrt_series(fmpz * res, const fmpz * poly, slong len, slong n) noexcept + int fmpz_poly_sqrt_series(fmpz_poly_t b, const fmpz_poly_t a, slong n) noexcept + void _fmpz_poly_power_sums_naive(fmpz * res, const fmpz * poly, slong len, slong n) noexcept + void fmpz_poly_power_sums_naive(fmpz_poly_t res, const fmpz_poly_t poly, slong n) noexcept + void fmpz_poly_power_sums(fmpz_poly_t res, const fmpz_poly_t poly, slong n) noexcept + void _fmpz_poly_power_sums_to_poly(fmpz * res, const fmpz * poly, slong len) noexcept + void fmpz_poly_power_sums_to_poly(fmpz_poly_t res, const fmpz_poly_t Q) noexcept + void _fmpz_poly_signature(slong * r1, slong * r2, const fmpz * poly, slong len) noexcept + void fmpz_poly_signature(slong * r1, slong * r2, const fmpz_poly_t poly) noexcept + void fmpz_poly_hensel_build_tree(slong * link, fmpz_poly_t * v, fmpz_poly_t * w, const nmod_poly_factor_t fac) noexcept + 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) noexcept + 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) noexcept + 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) noexcept + 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) noexcept + 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) noexcept + 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) noexcept + 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) noexcept + 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) noexcept + int _fmpz_poly_print(const fmpz * poly, slong len) noexcept + int fmpz_poly_print(const fmpz_poly_t poly) noexcept + int _fmpz_poly_print_pretty(const fmpz * poly, slong len, const char * x) noexcept + int fmpz_poly_print_pretty(const fmpz_poly_t poly, const char * x) noexcept + int _fmpz_poly_fprint(FILE * file, const fmpz * poly, slong len) noexcept + int fmpz_poly_fprint(FILE * file, const fmpz_poly_t poly) noexcept + int _fmpz_poly_fprint_pretty(FILE * file, const fmpz * poly, slong len, const char * x) noexcept + int fmpz_poly_fprint_pretty(FILE * file, const fmpz_poly_t poly, const char * x) noexcept + int fmpz_poly_read(fmpz_poly_t poly) noexcept + int fmpz_poly_read_pretty(fmpz_poly_t poly, char **x) noexcept + int fmpz_poly_fread(FILE * file, fmpz_poly_t poly) noexcept + int fmpz_poly_fread_pretty(FILE * file, fmpz_poly_t poly, char **x) noexcept + void fmpz_poly_get_nmod_poly(nmod_poly_t Amod, const fmpz_poly_t A) noexcept + void fmpz_poly_set_nmod_poly(fmpz_poly_t A, const nmod_poly_t Amod) noexcept + void fmpz_poly_set_nmod_poly_unsigned(fmpz_poly_t A, const nmod_poly_t Amod) noexcept + void _fmpz_poly_CRT_ui_precomp(fmpz * res, const fmpz * 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) noexcept + void _fmpz_poly_CRT_ui(fmpz * res, const fmpz * poly1, slong len1, const fmpz_t m1, mp_srcptr poly2, slong len2, mp_limb_t m2, mp_limb_t m2inv, int sign) noexcept + 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) noexcept + void _fmpz_poly_product_roots_fmpz_vec(fmpz * poly, const fmpz * xs, slong n) noexcept + void fmpz_poly_product_roots_fmpz_vec(fmpz_poly_t poly, const fmpz * xs, slong n) noexcept + void _fmpz_poly_product_roots_fmpq_vec(fmpz * poly, const fmpq * xs, slong n) noexcept + void fmpz_poly_product_roots_fmpq_vec(fmpz_poly_t poly, const fmpq * xs, slong n) noexcept + void _fmpz_poly_bound_roots(fmpz_t bound, const fmpz * poly, slong len) noexcept + void fmpz_poly_bound_roots(fmpz_t bound, const fmpz_poly_t poly) noexcept + void _fmpz_poly_num_real_roots_sturm(slong * n_neg, slong * n_pos, const fmpz * pol, slong len) noexcept + slong fmpz_poly_num_real_roots_sturm(const fmpz_poly_t pol) noexcept + slong _fmpz_poly_num_real_roots(const fmpz * pol, slong len) noexcept + slong fmpz_poly_num_real_roots(const fmpz_poly_t pol) noexcept + void _fmpz_poly_cyclotomic(fmpz * a, ulong n, mp_ptr factors, slong num_factors, ulong phi) noexcept + void fmpz_poly_cyclotomic(fmpz_poly_t poly, ulong n) noexcept + ulong _fmpz_poly_is_cyclotomic(const fmpz * poly, slong len) noexcept + ulong fmpz_poly_is_cyclotomic(const fmpz_poly_t poly) noexcept + void _fmpz_poly_cos_minpoly(fmpz * coeffs, ulong n) noexcept + void fmpz_poly_cos_minpoly(fmpz_poly_t poly, ulong n) noexcept + void _fmpz_poly_swinnerton_dyer(fmpz * coeffs, ulong n) noexcept + void fmpz_poly_swinnerton_dyer(fmpz_poly_t poly, ulong n) noexcept + void _fmpz_poly_chebyshev_t(fmpz * coeffs, ulong n) noexcept + void fmpz_poly_chebyshev_t(fmpz_poly_t poly, ulong n) noexcept + void _fmpz_poly_chebyshev_u(fmpz * coeffs, ulong n) noexcept + void fmpz_poly_chebyshev_u(fmpz_poly_t poly, ulong n) noexcept + void _fmpz_poly_legendre_pt(fmpz * coeffs, ulong n) noexcept + void fmpz_poly_legendre_pt(fmpz_poly_t poly, ulong n) noexcept + void _fmpz_poly_hermite_h(fmpz * coeffs, ulong n) noexcept + void fmpz_poly_hermite_h(fmpz_poly_t poly, ulong n) noexcept + void _fmpz_poly_hermite_he(fmpz * coeffs, ulong n) noexcept + void fmpz_poly_hermite_he(fmpz_poly_t poly, ulong n) noexcept + void _fmpz_poly_fibonacci(fmpz * coeffs, ulong n) noexcept + void fmpz_poly_fibonacci(fmpz_poly_t poly, ulong n) noexcept + void arith_eulerian_polynomial(fmpz_poly_t res, ulong n) noexcept + void _fmpz_poly_eta_qexp(fmpz * f, slong r, slong len) noexcept + void fmpz_poly_eta_qexp(fmpz_poly_t f, slong r, slong n) noexcept + void _fmpz_poly_theta_qexp(fmpz * f, slong r, slong len) noexcept + void fmpz_poly_theta_qexp(fmpz_poly_t f, slong r, slong n) noexcept + void fmpz_poly_CLD_bound(fmpz_t res, const fmpz_poly_t f, slong n) noexcept + +from .fmpz_poly_macros cimport * diff --git a/src/sage/libs/flint/fmpz_poly.pyx b/src/sage/libs/flint/fmpz_poly.pyx index cfcbea9090c..ca3997316e7 100644 --- a/src/sage/libs/flint/fmpz_poly.pyx +++ b/src/sage/libs/flint/fmpz_poly.pyx @@ -1,498 +1,18 @@ -# distutils: extra_compile_args = -D_XPG6 +r""" +Deprecated module + +TESTS:: + + sage: from sage.libs.flint.fmpz_poly import Fmpz_poly + sage: Fmpz_poly([1, 1]) + doctest:warning + ... + DeprecationWarning: + Importing Fmpz_poly from here is deprecated; please use "from sage.libs.flint.fmpz_poly_sage import Fmpz_poly" instead. + See https://github.com/sagemath/sage/issues/36449 for details. + 2 1 1 """ -FLINT fmpz_poly class wrapper -AUTHORS: +from sage.misc.lazy_import import LazyImport -- Robert Bradshaw (2007-09-15) Initial version. -- William Stein (2007-10-02) update for new flint; add arithmetic and creation - of coefficients of arbitrary size. -""" - -#***************************************************************************** -# Copyright (C) 2007 Robert Bradshaw -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 2 of the License, or -# (at your option) any later version. -# http://www.gnu.org/licenses/ -#***************************************************************************** - -from cpython.sequence cimport * - -from cysignals.memory cimport sig_free - -from sage.arith.long cimport pyobject_to_long -from sage.cpython.string cimport char_to_str, str_to_bytes -from sage.libs.flint.fmpz cimport * -from sage.structure.sage_object cimport SageObject -from sage.rings.integer cimport Integer - -cdef class Fmpz_poly(SageObject): - - def __cinit__(self): - fmpz_poly_init(self.poly) - - def __init__(self, v): - """ - Construct a new fmpz_poly from a sequence, constant coefficient, - or string (in the same format as it prints). - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: Fmpz_poly([1,2,3]) - 3 1 2 3 - sage: Fmpz_poly(5) - 1 5 - sage: Fmpz_poly(str(Fmpz_poly([3,5,7]))) - 3 3 5 7 - """ - cdef Py_ssize_t i - cdef long c - cdef Integer w - if isinstance(v, str): - if not fmpz_poly_set_str(self.poly, str_to_bytes(v)): - return - else: - raise ValueError("Unable to create Fmpz_poly from that string.") - if not PySequence_Check(v): - v = [v] - try: - fmpz_poly_set_coeff_si(self.poly, 0, 1) - fmpz_poly_set_coeff_si(self.poly, 0, 0) - for i from 0 <= i < len(v): - #fmpz_poly_set_coeff_si(self.poly, i, v[i]) - w = Integer(v[i]) - fmpz_poly_set_coeff_mpz(self.poly, i, w.value) - except OverflowError: - raise ValueError("No fmpz_poly_set_coeff_mpz() method.") - - def __dealloc__(self): - fmpz_poly_clear(self.poly) - - def __setitem__(self, i, value): - """ - Set the `i`-th item of self, which is the coefficient of the `x^i` term. - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: f = Fmpz_poly(range(10)) - sage: f[7] = 100; f - 10 0 1 2 3 4 5 6 100 8 9 - sage: f[2] = 10**100000 - sage: f[2] == 10**100000 - True - """ - if isinstance(value, Integer) : - fmpz_poly_set_coeff_mpz(self.poly, i, (value).value) - else : - fmpz_poly_set_coeff_si(self.poly, i, value) - - def __getitem__(self, i): - """ - Return the `i`-th item of self, which is the coefficient of the `x^i` term. - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: f = Fmpz_poly(range(100)) - sage: f[13] - 13 - sage: f[200] - 0 - """ - cdef Integer res = Integer.__new__(Integer) - fmpz_poly_get_coeff_mpz(res.value, self.poly, i) - return res - - def __repr__(self): - """ - Print self according to the native FLINT format. - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: f = Fmpz_poly([0,1]); f^7 - 8 0 0 0 0 0 0 0 1 - """ - cdef char* ss = fmpz_poly_get_str(self.poly) - cdef object s = char_to_str(ss) - sig_free(ss) - return s - - def degree(self): - """ - The degree of self. - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: f = Fmpz_poly([1,2,3]); f - 3 1 2 3 - sage: f.degree() - 2 - sage: Fmpz_poly(range(1000)).degree() - 999 - sage: Fmpz_poly([2,0]).degree() - 0 - """ - return fmpz_poly_degree(self.poly) - - def list(self): - """ - Return self as a list of coefficients, lowest terms first. - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: f = Fmpz_poly([2,1,0,-1]) - sage: f.list() - [2, 1, 0, -1] - """ - return [self[i] for i in range(self.degree() + 1)] - - def __add__(left, right): - """ - Add together two Flint polynomials. - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: Fmpz_poly([1,2,3]) + Fmpz_poly(range(6)) - 6 1 3 5 3 4 5 - """ - if not isinstance(left, Fmpz_poly) or not isinstance(right, Fmpz_poly): - raise TypeError - cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) - fmpz_poly_add(res.poly, (left).poly, (right).poly) - return res - - def __sub__(left, right): - """ - Subtract two Flint polynomials. - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: Fmpz_poly([10,2,3]) - Fmpz_poly([4,-2,1]) - 3 6 4 2 - """ - if not isinstance(left, Fmpz_poly) or not isinstance(right, Fmpz_poly): - raise TypeError - cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) - fmpz_poly_sub(res.poly, (left).poly, (right).poly) - return res - - def __neg__(self): - """ - Return the negative of self. - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: -Fmpz_poly([2,10,2,3,18,-5]) - 6 -2 -10 -2 -3 -18 5 - """ - cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) - fmpz_poly_neg(res.poly, self.poly) - return res - - def __mul__(left, right): - """ - Return the product of left and right. - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: f = Fmpz_poly([0,1]); g = Fmpz_poly([2,3,4]) - sage: f*g - 4 0 2 3 4 - sage: f = Fmpz_poly([1,0,-1]); g = Fmpz_poly([2,3,4]) - sage: f*g - 5 2 3 2 -3 -4 - - Scalar multiplication - sage: f * 3 - 3 3 0 -3 - sage: f * 5r - 3 5 0 -5 - """ - cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) - if not isinstance(left, Fmpz_poly) or not isinstance(right, Fmpz_poly): - if isinstance(left, int): - fmpz_poly_scalar_mul_si(res.poly, (right).poly, left) - elif isinstance(left, Integer): - fmpz_poly_scalar_mul_mpz(res.poly, (right).poly, (left).value) - elif isinstance(right, int): - fmpz_poly_scalar_mul_si(res.poly, (left).poly, right) - elif isinstance(right, Integer): - fmpz_poly_scalar_mul_mpz(res.poly, (left).poly, (right).value) - else: - raise TypeError - else: - fmpz_poly_mul(res.poly, (left).poly, (right).poly) - return res - - def __pow__(self, n, dummy): - """ - Return self raised to the power of n. - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: f = Fmpz_poly([1,1]) - sage: f**6 - 7 1 6 15 20 15 6 1 - sage: f = Fmpz_poly([2]) - sage: f^150 - 1 1427247692705959881058285969449495136382746624 - sage: 2^150 - 1427247692705959881058285969449495136382746624 - - sage: f**(3/2) - Traceback (most recent call last): - ... - TypeError: unable to convert rational 3/2 to an integer - """ - cdef long nn = pyobject_to_long(n) - if not isinstance(self, Fmpz_poly): - raise TypeError - cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) - fmpz_poly_pow(res.poly, (self).poly, nn) - return res - - def pow_truncate(self, exp, n): - """ - Return self raised to the power of exp mod x^n. - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: f = Fmpz_poly([1,2]) - sage: f.pow_truncate(10,3) - 3 1 20 180 - sage: f.pow_truncate(1000,3) - 3 1 2000 1998000 - """ - if exp < 0: - raise ValueError("Exponent must be at least 0") - if n < 0: - raise ValueError("Exponent must be at least 0") - cdef long exp_c = exp, nn = n - cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) - fmpz_poly_pow_trunc(res.poly, (self).poly, exp_c, nn) - return res - - def __floordiv__(left, right): - """ - Return left // right, truncated. - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: f = Fmpz_poly([3,4,5]) - sage: g = f^5; g - 11 243 1620 6345 16560 32190 47224 53650 46000 29375 12500 3125 - sage: g // f - 9 81 432 1404 2928 4486 4880 3900 2000 625 - sage: f^4 - 9 81 432 1404 2928 4486 4880 3900 2000 625 - """ - if not isinstance(left, Fmpz_poly) or not isinstance(right, Fmpz_poly): - raise TypeError - cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) - fmpz_poly_div(res.poly, (left).poly, (right).poly) - return res - - def div_rem(self, Fmpz_poly other): - """ - Return self / other, self, % other. - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: f = Fmpz_poly([1,3,4,5]) - sage: g = f^23 - sage: g.div_rem(f)[1] - 0 - sage: g.div_rem(f)[0] - f^22 - 0 - sage: f = Fmpz_poly([1..10]) - sage: g = Fmpz_poly([1,3,5]) - sage: q, r = f.div_rem(g) - sage: q*f+r - 17 1 2 3 4 4 4 10 11 17 18 22 26 30 23 26 18 20 - sage: g - 3 1 3 5 - sage: q*g+r - 10 1 2 3 4 5 6 7 8 9 10 - """ - cdef Fmpz_poly Q = Fmpz_poly.__new__(Fmpz_poly) - cdef Fmpz_poly R = Fmpz_poly.__new__(Fmpz_poly) - fmpz_poly_divrem(Q.poly, R.poly, self.poly, other.poly) - return Q, R - - def left_shift(self, unsigned long n) : - """ - Left shift self by n. - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: f = Fmpz_poly([1,2]) - sage: f.left_shift(1).list() == [0,1,2] - True - """ - cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) - - fmpz_poly_shift_left(res.poly, self.poly, n) - - return res - - def right_shift(self, unsigned long n) : - """ - Right shift self by n. - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: f = Fmpz_poly([1,2]) - sage: f.right_shift(1).list() == [2] - True - """ - cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) - - fmpz_poly_shift_right(res.poly, self.poly, n) - - return res - - def pseudo_div(self, Fmpz_poly other): - cdef ulong d - cdef Fmpz_poly Q = Fmpz_poly.__new__(Fmpz_poly) - fmpz_poly_pseudo_div(Q.poly, &d, self.poly, other.poly) - return Q, d - - def pseudo_div_rem(self, Fmpz_poly other): - cdef ulong d - cdef Fmpz_poly Q = Fmpz_poly.__new__(Fmpz_poly) - cdef Fmpz_poly R = Fmpz_poly.__new__(Fmpz_poly) - fmpz_poly_pseudo_divrem(Q.poly, R.poly, &d, self.poly, other.poly) - return Q, R, d - - def derivative(self) : - """ - Return the derivative of self. - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: f = Fmpz_poly([1,2,6]) - sage: f.derivative().list() == [2, 12] - True - """ - cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) - - fmpz_poly_derivative(res.poly, self.poly) - - return res - - def __copy__(self): - cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) - fmpz_poly_set(res.poly, self.poly) - return res - - def truncate(self, n): - """ - Return the truncation of self at degree n. - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: f = Fmpz_poly([1,1]) - sage: g = f**10; g - 11 1 10 45 120 210 252 210 120 45 10 1 - sage: g.truncate(5) - 5 1 10 45 120 210 - """ - cdef Fmpz_poly g = self.__copy__() - fmpz_poly_truncate(g.poly, n) - return g - - def _unsafe_mutate_truncate(self, n): - """ - Return the truncation of self at degree n. - - Don't do this unless you know there are no other references to - this polynomial!!!!! - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: f = Fmpz_poly([1,1]) - sage: g = f**10; g - 11 1 10 45 120 210 252 210 120 45 10 1 - sage: g._unsafe_mutate_truncate(5); g - 5 1 10 45 120 210 - """ - cdef long nn = n - fmpz_poly_truncate(self.poly, nn) # mutating! - - def _sage_(self, var='x'): - """ - Return self as an element of the sage ZZ[var]. - - EXAMPLES:: - - sage: from sage.libs.flint.fmpz_poly import Fmpz_poly - sage: f = Fmpz_poly([1,1]) - sage: f._sage_('t') - t + 1 - sage: Fmpz_poly([-1,0,0,1])._sage_() - x^3 - 1 - """ - from sage.rings.integer_ring import ZZ - return ZZ[var](self.list()) - - -# Functions removed from flint but still needed in Sage. Code adapted from -# earlier versions of flint. - -cdef void fmpz_poly_scalar_mul_mpz(fmpz_poly_t rop, const fmpz_poly_t op, const mpz_t c): - cdef fmpz_t f - fmpz_init_set_readonly(f, c) - fmpz_poly_scalar_mul_fmpz(rop, op, f) - fmpz_clear_readonly(f) - -cdef void fmpz_poly_scalar_divexact_mpz(fmpz_poly_t rop, const fmpz_poly_t op, const mpz_t c): - cdef fmpz_t f - fmpz_init_set_readonly(f, c) - fmpz_poly_scalar_divexact_fmpz(rop, op, f) - fmpz_clear_readonly(f) - -cdef void fmpz_poly_scalar_fdiv_mpz(fmpz_poly_t rop, const fmpz_poly_t op, const mpz_t c): - cdef fmpz_t f - fmpz_init_set_readonly(f, c) - fmpz_poly_scalar_fdiv_fmpz(rop, op, f) - fmpz_clear_readonly(f) - -cdef void fmpz_poly_set_coeff_mpz(fmpz_poly_t poly, slong n, const mpz_t x): - cdef fmpz_t t - fmpz_init_set_readonly(t, x) - fmpz_poly_set_coeff_fmpz(poly, n, t) - fmpz_clear_readonly(t) - -cdef void fmpz_poly_get_coeff_mpz(mpz_t x, const fmpz_poly_t poly, slong n): - cdef fmpz_t t - fmpz_init(t) - fmpz_poly_get_coeff_fmpz(t, poly, n) - fmpz_get_mpz(x, t) - fmpz_clear(t) - -cdef void fmpz_poly_set_mpz(fmpz_poly_t poly, const mpz_t x): - fmpz_poly_fit_length(poly, 1) - fmpz_set_mpz(poly.coeffs, x) - _fmpz_poly_set_length(poly, 1) - _fmpz_poly_normalise(poly) +Fmpz_poly = LazyImport('sage.libs.flint.fmpz_poly_sage', 'Fmpz_poly', deprecation=36449) diff --git a/src/sage/libs/flint/fmpz_poly_factor.pxd b/src/sage/libs/flint/fmpz_poly_factor.pxd new file mode 100644 index 00000000000..bca34daa554 --- /dev/null +++ b/src/sage/libs/flint/fmpz_poly_factor.pxd @@ -0,0 +1,31 @@ +# distutils: libraries = flint +# distutils: depends = flint/fmpz_poly_factor.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fmpz_poly_factor_init(fmpz_poly_factor_t fac) noexcept + void fmpz_poly_factor_init2(fmpz_poly_factor_t fac, slong alloc) noexcept + void fmpz_poly_factor_realloc(fmpz_poly_factor_t fac, slong alloc) noexcept + void fmpz_poly_factor_fit_length(fmpz_poly_factor_t fac, slong len) noexcept + void fmpz_poly_factor_clear(fmpz_poly_factor_t fac) noexcept + void fmpz_poly_factor_set(fmpz_poly_factor_t res, const fmpz_poly_factor_t fac) noexcept + void fmpz_poly_factor_insert(fmpz_poly_factor_t fac, const fmpz_poly_t p, slong e) noexcept + void fmpz_poly_factor_concat(fmpz_poly_factor_t res, const fmpz_poly_factor_t fac) noexcept + void fmpz_poly_factor_print(const fmpz_poly_factor_t fac) noexcept + void fmpz_poly_factor_squarefree(fmpz_poly_factor_t fac, const fmpz_poly_t F) noexcept + 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) noexcept + void _fmpz_poly_factor_zassenhaus(fmpz_poly_factor_t final_fac, slong exp, const fmpz_poly_t f, slong cutoff, int use_van_hoeij) noexcept + void fmpz_poly_factor_zassenhaus(fmpz_poly_factor_t final_fac, const fmpz_poly_t F) noexcept + void _fmpz_poly_factor_quadratic(fmpz_poly_factor_t fac, const fmpz_poly_t f, slong exp) noexcept + void _fmpz_poly_factor_cubic(fmpz_poly_factor_t fac, const fmpz_poly_t f, slong exp) noexcept + void fmpz_poly_factor(fmpz_poly_factor_t final_fac, const fmpz_poly_t F) noexcept diff --git a/src/sage/libs/flint/fmpz_poly_macros.pxd b/src/sage/libs/flint/fmpz_poly_macros.pxd new file mode 100644 index 00000000000..6690d8bd8bb --- /dev/null +++ b/src/sage/libs/flint/fmpz_poly_macros.pxd @@ -0,0 +1,7 @@ +# Macros from fmpz_poly.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + fmpz * fmpz_poly_get_coeff_ptr(fmpz_poly_t p, ulong n) diff --git a/src/sage/libs/flint/fmpz_poly_mat.pxd b/src/sage/libs/flint/fmpz_poly_mat.pxd index d045c745de3..83ed1d8bced 100644 --- a/src/sage/libs/flint/fmpz_poly_mat.pxd +++ b/src/sage/libs/flint/fmpz_poly_mat.pxd @@ -1,27 +1,69 @@ # distutils: libraries = flint # distutils: depends = flint/fmpz_poly_mat.h -from sage.libs.flint.types cimport fmpz_poly_mat_t, fmpz_poly_t, fmpz_t, slong, fmpz_mat_t +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ -# flint/fmpz_poly_mat.h -cdef extern from "flint_wrap.h": - - void fmpz_poly_mat_init(fmpz_poly_mat_t mat, slong rows, slong cols) - void fmpz_poly_mat_init_set(fmpz_poly_mat_t mat, const fmpz_poly_mat_t src) - void fmpz_poly_mat_clear(fmpz_poly_mat_t mat) - fmpz_poly_t fmpz_poly_mat_entry(fmpz_poly_mat_t mat, long i, long j) - slong fmpz_poly_mat_nrows(const fmpz_poly_mat_t mat) - slong fmpz_poly_mat_ncols(const fmpz_poly_mat_t mat) - - void fmpz_poly_mat_set(fmpz_poly_mat_t mat1, const fmpz_poly_mat_t mat2) - - void fmpz_poly_mat_swap(fmpz_poly_mat_t mat1, fmpz_poly_mat_t mat2) +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * - void fmpz_poly_mat_transpose(fmpz_poly_mat_t B, const fmpz_poly_mat_t A) - - void fmpz_poly_mat_evaluate_fmpz(fmpz_mat_t B, const fmpz_poly_mat_t A, - const fmpz_t x) - - void fmpz_poly_mat_trace(fmpz_poly_t trace, const fmpz_poly_mat_t mat) - - void fmpz_poly_mat_det(fmpz_poly_t det, const fmpz_poly_mat_t A) +cdef extern from "flint_wrap.h": + void fmpz_poly_mat_init(fmpz_poly_mat_t mat, slong rows, slong cols) noexcept + void fmpz_poly_mat_init_set(fmpz_poly_mat_t mat, const fmpz_poly_mat_t src) noexcept + void fmpz_poly_mat_clear(fmpz_poly_mat_t mat) noexcept + slong fmpz_poly_mat_nrows(const fmpz_poly_mat_t mat) noexcept + slong fmpz_poly_mat_ncols(const fmpz_poly_mat_t mat) noexcept + fmpz_poly_struct * fmpz_poly_mat_entry(const fmpz_poly_mat_t mat, slong i, slong j) noexcept + void fmpz_poly_mat_set(fmpz_poly_mat_t mat1, const fmpz_poly_mat_t mat2) noexcept + void fmpz_poly_mat_swap(fmpz_poly_mat_t mat1, fmpz_poly_mat_t mat2) noexcept + void fmpz_poly_mat_swap_entrywise(fmpz_poly_mat_t mat1, fmpz_poly_mat_t mat2) noexcept + void fmpz_poly_mat_print(const fmpz_poly_mat_t mat, const char * x) noexcept + void fmpz_poly_mat_randtest(fmpz_poly_mat_t mat, flint_rand_t state, slong len, flint_bitcnt_t bits) noexcept + void fmpz_poly_mat_randtest_unsigned(fmpz_poly_mat_t mat, flint_rand_t state, slong len, flint_bitcnt_t bits) noexcept + void fmpz_poly_mat_randtest_sparse(fmpz_poly_mat_t A, flint_rand_t state, slong len, flint_bitcnt_t bits, float density) noexcept + void fmpz_poly_mat_zero(fmpz_poly_mat_t mat) noexcept + void fmpz_poly_mat_one(fmpz_poly_mat_t mat) noexcept + bint fmpz_poly_mat_equal(const fmpz_poly_mat_t mat1, const fmpz_poly_mat_t mat2) noexcept + bint fmpz_poly_mat_is_zero(const fmpz_poly_mat_t mat) noexcept + bint fmpz_poly_mat_is_one(const fmpz_poly_mat_t mat) noexcept + bint fmpz_poly_mat_is_empty(const fmpz_poly_mat_t mat) noexcept + bint fmpz_poly_mat_is_square(const fmpz_poly_mat_t mat) noexcept + slong fmpz_poly_mat_max_bits(const fmpz_poly_mat_t A) noexcept + slong fmpz_poly_mat_max_length(const fmpz_poly_mat_t A) noexcept + void fmpz_poly_mat_transpose(fmpz_poly_mat_t B, const fmpz_poly_mat_t A) noexcept + void fmpz_poly_mat_evaluate_fmpz(fmpz_mat_t B, const fmpz_poly_mat_t A, const fmpz_t x) noexcept + void fmpz_poly_mat_scalar_mul_fmpz_poly(fmpz_poly_mat_t B, const fmpz_poly_mat_t A, const fmpz_poly_t c) noexcept + void fmpz_poly_mat_scalar_mul_fmpz(fmpz_poly_mat_t B, const fmpz_poly_mat_t A, const fmpz_t c) noexcept + void fmpz_poly_mat_add(fmpz_poly_mat_t C, const fmpz_poly_mat_t A, const fmpz_poly_mat_t B) noexcept + void fmpz_poly_mat_sub(fmpz_poly_mat_t C, const fmpz_poly_mat_t A, const fmpz_poly_mat_t B) noexcept + void fmpz_poly_mat_neg(fmpz_poly_mat_t B, const fmpz_poly_mat_t A) noexcept + void fmpz_poly_mat_mul(fmpz_poly_mat_t C, const fmpz_poly_mat_t A, const fmpz_poly_mat_t B) noexcept + void fmpz_poly_mat_mul_classical(fmpz_poly_mat_t C, const fmpz_poly_mat_t A, const fmpz_poly_mat_t B) noexcept + void fmpz_poly_mat_mul_KS(fmpz_poly_mat_t C, const fmpz_poly_mat_t A, const fmpz_poly_mat_t B) noexcept + void fmpz_poly_mat_mullow(fmpz_poly_mat_t C, const fmpz_poly_mat_t A, const fmpz_poly_mat_t B, slong len) noexcept + void fmpz_poly_mat_sqr(fmpz_poly_mat_t B, const fmpz_poly_mat_t A) noexcept + void fmpz_poly_mat_sqr_classical(fmpz_poly_mat_t B, const fmpz_poly_mat_t A) noexcept + void fmpz_poly_mat_sqr_KS(fmpz_poly_mat_t B, const fmpz_poly_mat_t A) noexcept + void fmpz_poly_mat_sqrlow(fmpz_poly_mat_t B, const fmpz_poly_mat_t A, slong len) noexcept + void fmpz_poly_mat_pow(fmpz_poly_mat_t B, const fmpz_poly_mat_t A, ulong exp) noexcept + void fmpz_poly_mat_pow_trunc(fmpz_poly_mat_t B, const fmpz_poly_mat_t A, ulong exp, slong len) noexcept + void fmpz_poly_mat_prod(fmpz_poly_mat_t res, fmpz_poly_mat_t * const factors, slong n) noexcept + slong fmpz_poly_mat_find_pivot_any(const fmpz_poly_mat_t mat, slong start_row, slong end_row, slong c) noexcept + slong fmpz_poly_mat_find_pivot_partial(const fmpz_poly_mat_t mat, slong start_row, slong end_row, slong c) noexcept + slong fmpz_poly_mat_fflu(fmpz_poly_mat_t B, fmpz_poly_t den, slong * perm, const fmpz_poly_mat_t A, int rank_check) noexcept + slong fmpz_poly_mat_rref(fmpz_poly_mat_t B, fmpz_poly_t den, const fmpz_poly_mat_t A) noexcept + void fmpz_poly_mat_trace(fmpz_poly_t trace, const fmpz_poly_mat_t mat) noexcept + void fmpz_poly_mat_det(fmpz_poly_t det, const fmpz_poly_mat_t A) noexcept + void fmpz_poly_mat_det_fflu(fmpz_poly_t det, const fmpz_poly_mat_t A) noexcept + void fmpz_poly_mat_det_interpolate(fmpz_poly_t det, const fmpz_poly_mat_t A) noexcept + slong fmpz_poly_mat_rank(const fmpz_poly_mat_t A) noexcept + int fmpz_poly_mat_inv(fmpz_poly_mat_t Ainv, fmpz_poly_t den, const fmpz_poly_mat_t A) noexcept + slong fmpz_poly_mat_nullspace(fmpz_poly_mat_t res, const fmpz_poly_mat_t mat) noexcept + int fmpz_poly_mat_solve(fmpz_poly_mat_t X, fmpz_poly_t den, const fmpz_poly_mat_t A, const fmpz_poly_mat_t B) noexcept + int fmpz_poly_mat_solve_fflu(fmpz_poly_mat_t X, fmpz_poly_t den, const fmpz_poly_mat_t A, const fmpz_poly_mat_t B) noexcept + void fmpz_poly_mat_solve_fflu_precomp(fmpz_poly_mat_t X, const slong * perm, const fmpz_poly_mat_t FFLU, const fmpz_poly_mat_t B) noexcept diff --git a/src/sage/libs/flint/fmpz_poly_q.pxd b/src/sage/libs/flint/fmpz_poly_q.pxd index 63c13355bf6..26de673bb6c 100644 --- a/src/sage/libs/flint/fmpz_poly_q.pxd +++ b/src/sage/libs/flint/fmpz_poly_q.pxd @@ -1,71 +1,53 @@ # distutils: libraries = flint -# distutils: depends = flint/qadic.h +# distutils: depends = flint/fmpz_poly_q.h +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * from sage.libs.flint.types cimport * -# flint/qadic.h cdef extern from "flint_wrap.h": - #* Accessing numerator and denominator ***************************************/ - # macros - fmpz_poly_struct* fmpz_poly_q_numref(fmpz_poly_q_t op) - fmpz_poly_struct* fmpz_poly_q_denref(fmpz_poly_q_t op) - - void fmpz_poly_q_canonicalise(fmpz_poly_q_t rop) - int fmpz_poly_q_is_canonical(const fmpz_poly_q_t op) - - #* Memory management *********************************************************/ - void fmpz_poly_q_init(fmpz_poly_q_t rop) - void fmpz_poly_q_clear(fmpz_poly_q_t rop) - - #* Randomisation *************************************************************/ - void fmpz_poly_q_randtest(fmpz_poly_q_t poly, flint_rand_t state, - long len1, mp_bitcnt_t bits1, - long len2, mp_bitcnt_t bits2) - void fmpz_poly_q_randtest_not_zero(fmpz_poly_q_t poly, flint_rand_t state, - long len1, mp_bitcnt_t bits1, - long len2, mp_bitcnt_t bits2) - - #* Assignment ****************************************************************/ - void fmpz_poly_q_set(fmpz_poly_q_t rop, const fmpz_poly_q_t op) - void fmpz_poly_q_set_si(fmpz_poly_q_t rop, long op) - void fmpz_poly_q_swap(fmpz_poly_q_t op1, fmpz_poly_q_t op2) - void fmpz_poly_q_zero(fmpz_poly_q_t rop) - void fmpz_poly_q_one(fmpz_poly_q_t rop) - void fmpz_poly_q_neg(fmpz_poly_q_t rop, const fmpz_poly_q_t op) - void fmpz_poly_q_inv(fmpz_poly_q_t rop, const fmpz_poly_q_t op) - - #* Comparison ****************************************************************/ - int fmpz_poly_q_is_zero(const fmpz_poly_q_t op) - int fmpz_poly_q_is_one(const fmpz_poly_q_t op) - int fmpz_poly_q_equal(const fmpz_poly_q_t op1, const fmpz_poly_q_t op2) - - #* Addition and subtraction **************************************************/ - void fmpz_poly_q_add_in_place(fmpz_poly_q_t rop, const fmpz_poly_q_t op) - void fmpz_poly_q_sub_in_place(fmpz_poly_q_t rop, const fmpz_poly_q_t op) - void fmpz_poly_q_add(fmpz_poly_q_t rop, const fmpz_poly_q_t op1, const fmpz_poly_q_t op2) - void fmpz_poly_q_sub(fmpz_poly_q_t rop, const fmpz_poly_q_t op1, const fmpz_poly_q_t op2) - void fmpz_poly_q_addmul(fmpz_poly_q_t rop, const fmpz_poly_q_t op1, const fmpz_poly_q_t op2) - void fmpz_poly_q_submul(fmpz_poly_q_t rop, const fmpz_poly_q_t op1, const fmpz_poly_q_t op2) - - #* Scalar multiplication and division ****************************************/ - void fmpz_poly_q_scalar_mul_si(fmpz_poly_q_t rop, const fmpz_poly_q_t op, long x) - void fmpz_poly_q_scalar_div_si(fmpz_poly_q_t rop, const fmpz_poly_q_t op, long x) - - #* Multiplication and division ***********************************************/ - void fmpz_poly_q_mul(fmpz_poly_q_t rop, - const fmpz_poly_q_t op1, const fmpz_poly_q_t op2) - void fmpz_poly_q_div(fmpz_poly_q_t rop, - const fmpz_poly_q_t op1, const fmpz_poly_q_t op2) - - #* Powering ******************************************************************/ - void fmpz_poly_q_pow(fmpz_poly_q_t rop, const fmpz_poly_q_t op, unsigned long exp) - - #* Derivative ****************************************************************/ - void fmpz_poly_q_derivative(fmpz_poly_q_t rop, const fmpz_poly_q_t op) - - #* Input and output **********************************************************/ - int fmpz_poly_q_set_str(fmpz_poly_q_t rop, const char *s) - char * fmpz_poly_q_get_str(const fmpz_poly_q_t op) - char * fmpz_poly_q_get_str_pretty(const fmpz_poly_q_t op, const char *x) - int fmpz_poly_q_print(const fmpz_poly_q_t op) - int fmpz_poly_q_print_pretty(const fmpz_poly_q_t op, const char *x) + void fmpz_poly_q_init(fmpz_poly_q_t rop) noexcept + void fmpz_poly_q_clear(fmpz_poly_q_t rop) noexcept + fmpz_poly_struct * fmpz_poly_q_numref(const fmpz_poly_q_t op) noexcept + fmpz_poly_struct * fmpz_poly_q_denref(const fmpz_poly_q_t op) noexcept + void fmpz_poly_q_canonicalise(fmpz_poly_q_t rop) noexcept + bint fmpz_poly_q_is_canonical(const fmpz_poly_q_t op) noexcept + void fmpz_poly_q_randtest(fmpz_poly_q_t poly, flint_rand_t state, slong len1, flint_bitcnt_t bits1, slong len2, flint_bitcnt_t bits2) noexcept + void fmpz_poly_q_randtest_not_zero(fmpz_poly_q_t poly, flint_rand_t state, slong len1, flint_bitcnt_t bits1, slong len2, flint_bitcnt_t bits2) noexcept + void fmpz_poly_q_set(fmpz_poly_q_t rop, const fmpz_poly_q_t op) noexcept + void fmpz_poly_q_set_si(fmpz_poly_q_t rop, slong op) noexcept + void fmpz_poly_q_swap(fmpz_poly_q_t op1, fmpz_poly_q_t op2) noexcept + void fmpz_poly_q_zero(fmpz_poly_q_t rop) noexcept + void fmpz_poly_q_one(fmpz_poly_q_t rop) noexcept + void fmpz_poly_q_neg(fmpz_poly_q_t rop, const fmpz_poly_q_t op) noexcept + void fmpz_poly_q_inv(fmpz_poly_q_t rop, const fmpz_poly_q_t op) noexcept + bint fmpz_poly_q_is_zero(const fmpz_poly_q_t op) noexcept + bint fmpz_poly_q_is_one(const fmpz_poly_q_t op) noexcept + bint fmpz_poly_q_equal(const fmpz_poly_q_t op1, const fmpz_poly_q_t op2) noexcept + void fmpz_poly_q_add(fmpz_poly_q_t rop, const fmpz_poly_q_t op1, const fmpz_poly_q_t op2) noexcept + void fmpz_poly_q_sub(fmpz_poly_q_t rop, const fmpz_poly_q_t op1, const fmpz_poly_q_t op2) noexcept + void fmpz_poly_q_addmul(fmpz_poly_q_t rop, const fmpz_poly_q_t op1, const fmpz_poly_q_t op2) noexcept + void fmpz_poly_q_submul(fmpz_poly_q_t rop, const fmpz_poly_q_t op1, const fmpz_poly_q_t op2) noexcept + void fmpz_poly_q_scalar_mul_si(fmpz_poly_q_t rop, const fmpz_poly_q_t op, slong x) noexcept + void fmpz_poly_q_scalar_mul_fmpz(fmpz_poly_q_t rop, const fmpz_poly_q_t op, const fmpz_t x) noexcept + void fmpz_poly_q_scalar_mul_fmpq(fmpz_poly_q_t rop, const fmpz_poly_q_t op, const fmpq_t x) noexcept + void fmpz_poly_q_scalar_div_si(fmpz_poly_q_t rop, const fmpz_poly_q_t op, slong x) noexcept + void fmpz_poly_q_scalar_div_fmpz(fmpz_poly_q_t rop, const fmpz_poly_q_t op, const fmpz_t x) noexcept + void fmpz_poly_q_scalar_div_fmpq(fmpz_poly_q_t rop, const fmpz_poly_q_t op, const fmpq_t x) noexcept + void fmpz_poly_q_mul(fmpz_poly_q_t rop, const fmpz_poly_q_t op1, const fmpz_poly_q_t op2) noexcept + void fmpz_poly_q_div(fmpz_poly_q_t rop, const fmpz_poly_q_t op1, const fmpz_poly_q_t op2) noexcept + void fmpz_poly_q_pow(fmpz_poly_q_t rop, const fmpz_poly_q_t op, ulong exp) noexcept + void fmpz_poly_q_derivative(fmpz_poly_q_t rop, const fmpz_poly_q_t op) noexcept + int fmpz_poly_q_evaluate_fmpq(fmpq_t rop, const fmpz_poly_q_t f, const fmpq_t a) noexcept + int fmpz_poly_q_set_str(fmpz_poly_q_t rop, const char * s) noexcept + char * fmpz_poly_q_get_str(const fmpz_poly_q_t op) noexcept + char * fmpz_poly_q_get_str_pretty(const fmpz_poly_q_t op, const char * x) noexcept + int fmpz_poly_q_print(const fmpz_poly_q_t op) noexcept + int fmpz_poly_q_print_pretty(const fmpz_poly_q_t op, const char * x) noexcept diff --git a/src/sage/libs/flint/fmpz_poly_sage.pxd b/src/sage/libs/flint/fmpz_poly_sage.pxd new file mode 100644 index 00000000000..add6ad1fbb6 --- /dev/null +++ b/src/sage/libs/flint/fmpz_poly_sage.pxd @@ -0,0 +1,19 @@ +# distutils: libraries = flint +# distutils: depends = flint/fmpz_poly.h + +from sage.libs.gmp.types cimport mpz_t +from .types cimport * + +# functions removed from flint but still needed in sage +cdef void fmpz_poly_scalar_mul_mpz(fmpz_poly_t, const fmpz_poly_t, const mpz_t) noexcept +cdef void fmpz_poly_scalar_divexact_mpz(fmpz_poly_t, const fmpz_poly_t, const mpz_t) noexcept +cdef void fmpz_poly_scalar_fdiv_mpz(fmpz_poly_t, const fmpz_poly_t, const mpz_t) noexcept +cdef void fmpz_poly_set_coeff_mpz(fmpz_poly_t, slong, const mpz_t) noexcept +cdef void fmpz_poly_get_coeff_mpz(mpz_t, const fmpz_poly_t, slong) noexcept +cdef void fmpz_poly_set_mpz(fmpz_poly_t, const mpz_t) noexcept + + +# Wrapper Cython class +from sage.structure.sage_object cimport SageObject +cdef class Fmpz_poly(SageObject): + cdef fmpz_poly_t poly diff --git a/src/sage/libs/flint/fmpz_poly_sage.pyx b/src/sage/libs/flint/fmpz_poly_sage.pyx new file mode 100644 index 00000000000..d86d025a3e0 --- /dev/null +++ b/src/sage/libs/flint/fmpz_poly_sage.pyx @@ -0,0 +1,499 @@ +# distutils: extra_compile_args = -D_XPG6 +""" +FLINT fmpz_poly class wrapper + +AUTHORS: + +- Robert Bradshaw (2007-09-15) Initial version. +- William Stein (2007-10-02) update for new flint; add arithmetic and creation + of coefficients of arbitrary size. +""" + +#***************************************************************************** +# Copyright (C) 2007 Robert Bradshaw +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# http://www.gnu.org/licenses/ +#***************************************************************************** + +from cpython.sequence cimport * + +from cysignals.memory cimport sig_free + +from sage.arith.long cimport pyobject_to_long +from sage.cpython.string cimport char_to_str, str_to_bytes +from sage.libs.flint.fmpz cimport * +from sage.libs.flint.fmpz_poly cimport * +from sage.structure.sage_object cimport SageObject +from sage.rings.integer cimport Integer + +cdef class Fmpz_poly(SageObject): + + def __cinit__(self): + fmpz_poly_init(self.poly) + + def __init__(self, v): + """ + Construct a new fmpz_poly from a sequence, constant coefficient, + or string (in the same format as it prints). + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: Fmpz_poly([1,2,3]) + 3 1 2 3 + sage: Fmpz_poly(5) + 1 5 + sage: Fmpz_poly(str(Fmpz_poly([3,5,7]))) + 3 3 5 7 + """ + cdef Py_ssize_t i + cdef long c + cdef Integer w + if isinstance(v, str): + if not fmpz_poly_set_str(self.poly, str_to_bytes(v)): + return + else: + raise ValueError("Unable to create Fmpz_poly from that string.") + if not PySequence_Check(v): + v = [v] + try: + fmpz_poly_set_coeff_si(self.poly, 0, 1) + fmpz_poly_set_coeff_si(self.poly, 0, 0) + for i from 0 <= i < len(v): + #fmpz_poly_set_coeff_si(self.poly, i, v[i]) + w = Integer(v[i]) + fmpz_poly_set_coeff_mpz(self.poly, i, w.value) + except OverflowError: + raise ValueError("No fmpz_poly_set_coeff_mpz() method.") + + def __dealloc__(self): + fmpz_poly_clear(self.poly) + + def __setitem__(self, i, value): + """ + Set the `i`-th item of self, which is the coefficient of the `x^i` term. + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: f = Fmpz_poly(range(10)) + sage: f[7] = 100; f + 10 0 1 2 3 4 5 6 100 8 9 + sage: f[2] = 10**100000 + sage: f[2] == 10**100000 + True + """ + if isinstance(value, Integer) : + fmpz_poly_set_coeff_mpz(self.poly, i, (value).value) + else : + fmpz_poly_set_coeff_si(self.poly, i, value) + + def __getitem__(self, i): + """ + Return the `i`-th item of self, which is the coefficient of the `x^i` term. + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: f = Fmpz_poly(range(100)) + sage: f[13] + 13 + sage: f[200] + 0 + """ + cdef Integer res = Integer.__new__(Integer) + fmpz_poly_get_coeff_mpz(res.value, self.poly, i) + return res + + def __repr__(self): + """ + Print self according to the native FLINT format. + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: f = Fmpz_poly([0,1]); f^7 + 8 0 0 0 0 0 0 0 1 + """ + cdef char* ss = fmpz_poly_get_str(self.poly) + cdef object s = char_to_str(ss) + sig_free(ss) + return s + + def degree(self): + """ + The degree of self. + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: f = Fmpz_poly([1,2,3]); f + 3 1 2 3 + sage: f.degree() + 2 + sage: Fmpz_poly(range(1000)).degree() + 999 + sage: Fmpz_poly([2,0]).degree() + 0 + """ + return fmpz_poly_degree(self.poly) + + def list(self): + """ + Return self as a list of coefficients, lowest terms first. + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: f = Fmpz_poly([2,1,0,-1]) + sage: f.list() + [2, 1, 0, -1] + """ + return [self[i] for i in range(self.degree() + 1)] + + def __add__(left, right): + """ + Add together two Flint polynomials. + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: Fmpz_poly([1,2,3]) + Fmpz_poly(range(6)) + 6 1 3 5 3 4 5 + """ + if not isinstance(left, Fmpz_poly) or not isinstance(right, Fmpz_poly): + raise TypeError + cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) + fmpz_poly_add(res.poly, (left).poly, (right).poly) + return res + + def __sub__(left, right): + """ + Subtract two Flint polynomials. + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: Fmpz_poly([10,2,3]) - Fmpz_poly([4,-2,1]) + 3 6 4 2 + """ + if not isinstance(left, Fmpz_poly) or not isinstance(right, Fmpz_poly): + raise TypeError + cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) + fmpz_poly_sub(res.poly, (left).poly, (right).poly) + return res + + def __neg__(self): + """ + Return the negative of self. + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: -Fmpz_poly([2,10,2,3,18,-5]) + 6 -2 -10 -2 -3 -18 5 + """ + cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) + fmpz_poly_neg(res.poly, self.poly) + return res + + def __mul__(left, right): + """ + Return the product of left and right. + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: f = Fmpz_poly([0,1]); g = Fmpz_poly([2,3,4]) + sage: f*g + 4 0 2 3 4 + sage: f = Fmpz_poly([1,0,-1]); g = Fmpz_poly([2,3,4]) + sage: f*g + 5 2 3 2 -3 -4 + + Scalar multiplication + sage: f * 3 + 3 3 0 -3 + sage: f * 5r + 3 5 0 -5 + """ + cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) + if not isinstance(left, Fmpz_poly) or not isinstance(right, Fmpz_poly): + if isinstance(left, int): + fmpz_poly_scalar_mul_si(res.poly, (right).poly, left) + elif isinstance(left, Integer): + fmpz_poly_scalar_mul_mpz(res.poly, (right).poly, (left).value) + elif isinstance(right, int): + fmpz_poly_scalar_mul_si(res.poly, (left).poly, right) + elif isinstance(right, Integer): + fmpz_poly_scalar_mul_mpz(res.poly, (left).poly, (right).value) + else: + raise TypeError + else: + fmpz_poly_mul(res.poly, (left).poly, (right).poly) + return res + + def __pow__(self, n, dummy): + """ + Return self raised to the power of n. + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: f = Fmpz_poly([1,1]) + sage: f**6 + 7 1 6 15 20 15 6 1 + sage: f = Fmpz_poly([2]) + sage: f^150 + 1 1427247692705959881058285969449495136382746624 + sage: 2^150 + 1427247692705959881058285969449495136382746624 + + sage: f**(3/2) + Traceback (most recent call last): + ... + TypeError: unable to convert rational 3/2 to an integer + """ + cdef long nn = pyobject_to_long(n) + if not isinstance(self, Fmpz_poly): + raise TypeError + cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) + fmpz_poly_pow(res.poly, (self).poly, nn) + return res + + def pow_truncate(self, exp, n): + """ + Return self raised to the power of exp mod x^n. + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: f = Fmpz_poly([1,2]) + sage: f.pow_truncate(10,3) + 3 1 20 180 + sage: f.pow_truncate(1000,3) + 3 1 2000 1998000 + """ + if exp < 0: + raise ValueError("Exponent must be at least 0") + if n < 0: + raise ValueError("Exponent must be at least 0") + cdef long exp_c = exp, nn = n + cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) + fmpz_poly_pow_trunc(res.poly, (self).poly, exp_c, nn) + return res + + def __floordiv__(left, right): + """ + Return left // right, truncated. + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: f = Fmpz_poly([3,4,5]) + sage: g = f^5; g + 11 243 1620 6345 16560 32190 47224 53650 46000 29375 12500 3125 + sage: g // f + 9 81 432 1404 2928 4486 4880 3900 2000 625 + sage: f^4 + 9 81 432 1404 2928 4486 4880 3900 2000 625 + """ + if not isinstance(left, Fmpz_poly) or not isinstance(right, Fmpz_poly): + raise TypeError + cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) + fmpz_poly_div(res.poly, (left).poly, (right).poly) + return res + + def div_rem(self, Fmpz_poly other): + """ + Return self / other, self, % other. + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: f = Fmpz_poly([1,3,4,5]) + sage: g = f^23 + sage: g.div_rem(f)[1] + 0 + sage: g.div_rem(f)[0] - f^22 + 0 + sage: f = Fmpz_poly([1..10]) + sage: g = Fmpz_poly([1,3,5]) + sage: q, r = f.div_rem(g) + sage: q*f+r + 17 1 2 3 4 4 4 10 11 17 18 22 26 30 23 26 18 20 + sage: g + 3 1 3 5 + sage: q*g+r + 10 1 2 3 4 5 6 7 8 9 10 + """ + cdef Fmpz_poly Q = Fmpz_poly.__new__(Fmpz_poly) + cdef Fmpz_poly R = Fmpz_poly.__new__(Fmpz_poly) + fmpz_poly_divrem(Q.poly, R.poly, self.poly, other.poly) + return Q, R + + def left_shift(self, unsigned long n) : + """ + Left shift self by n. + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: f = Fmpz_poly([1,2]) + sage: f.left_shift(1).list() == [0,1,2] + True + """ + cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) + + fmpz_poly_shift_left(res.poly, self.poly, n) + + return res + + def right_shift(self, unsigned long n) : + """ + Right shift self by n. + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: f = Fmpz_poly([1,2]) + sage: f.right_shift(1).list() == [2] + True + """ + cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) + + fmpz_poly_shift_right(res.poly, self.poly, n) + + return res + + def pseudo_div(self, Fmpz_poly other): + cdef ulong d + cdef Fmpz_poly Q = Fmpz_poly.__new__(Fmpz_poly) + fmpz_poly_pseudo_div(Q.poly, &d, self.poly, other.poly) + return Q, d + + def pseudo_div_rem(self, Fmpz_poly other): + cdef ulong d + cdef Fmpz_poly Q = Fmpz_poly.__new__(Fmpz_poly) + cdef Fmpz_poly R = Fmpz_poly.__new__(Fmpz_poly) + fmpz_poly_pseudo_divrem(Q.poly, R.poly, &d, self.poly, other.poly) + return Q, R, d + + def derivative(self) : + """ + Return the derivative of self. + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: f = Fmpz_poly([1,2,6]) + sage: f.derivative().list() == [2, 12] + True + """ + cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) + + fmpz_poly_derivative(res.poly, self.poly) + + return res + + def __copy__(self): + cdef Fmpz_poly res = Fmpz_poly.__new__(Fmpz_poly) + fmpz_poly_set(res.poly, self.poly) + return res + + def truncate(self, n): + """ + Return the truncation of self at degree n. + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: f = Fmpz_poly([1,1]) + sage: g = f**10; g + 11 1 10 45 120 210 252 210 120 45 10 1 + sage: g.truncate(5) + 5 1 10 45 120 210 + """ + cdef Fmpz_poly g = self.__copy__() + fmpz_poly_truncate(g.poly, n) + return g + + def _unsafe_mutate_truncate(self, n): + """ + Return the truncation of self at degree n. + + Don't do this unless you know there are no other references to + this polynomial!!!!! + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: f = Fmpz_poly([1,1]) + sage: g = f**10; g + 11 1 10 45 120 210 252 210 120 45 10 1 + sage: g._unsafe_mutate_truncate(5); g + 5 1 10 45 120 210 + """ + cdef long nn = n + fmpz_poly_truncate(self.poly, nn) # mutating! + + def _sage_(self, var='x'): + """ + Return self as an element of the sage ZZ[var]. + + EXAMPLES:: + + sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly + sage: f = Fmpz_poly([1,1]) + sage: f._sage_('t') + t + 1 + sage: Fmpz_poly([-1,0,0,1])._sage_() + x^3 - 1 + """ + from sage.rings.integer_ring import ZZ + return ZZ[var](self.list()) + + +# Functions removed from flint but still needed in Sage. Code adapted from +# earlier versions of flint. + +cdef void fmpz_poly_scalar_mul_mpz(fmpz_poly_t rop, const fmpz_poly_t op, const mpz_t c) noexcept: + cdef fmpz_t f + fmpz_init_set_readonly(f, c) + fmpz_poly_scalar_mul_fmpz(rop, op, f) + fmpz_clear_readonly(f) + +cdef void fmpz_poly_scalar_divexact_mpz(fmpz_poly_t rop, const fmpz_poly_t op, const mpz_t c) noexcept: + cdef fmpz_t f + fmpz_init_set_readonly(f, c) + fmpz_poly_scalar_divexact_fmpz(rop, op, f) + fmpz_clear_readonly(f) + +cdef void fmpz_poly_scalar_fdiv_mpz(fmpz_poly_t rop, const fmpz_poly_t op, const mpz_t c) noexcept: + cdef fmpz_t f + fmpz_init_set_readonly(f, c) + fmpz_poly_scalar_fdiv_fmpz(rop, op, f) + fmpz_clear_readonly(f) + +cdef void fmpz_poly_set_coeff_mpz(fmpz_poly_t poly, slong n, const mpz_t x) noexcept: + cdef fmpz_t t + fmpz_init_set_readonly(t, x) + fmpz_poly_set_coeff_fmpz(poly, n, t) + fmpz_clear_readonly(t) + +cdef void fmpz_poly_get_coeff_mpz(mpz_t x, const fmpz_poly_t poly, slong n) noexcept: + cdef fmpz_t t + fmpz_init(t) + fmpz_poly_get_coeff_fmpz(t, poly, n) + fmpz_get_mpz(x, t) + fmpz_clear(t) + +cdef void fmpz_poly_set_mpz(fmpz_poly_t poly, const mpz_t x) noexcept: + fmpz_poly_fit_length(poly, 1) + fmpz_set_mpz(poly.coeffs, x) + _fmpz_poly_set_length(poly, 1) + _fmpz_poly_normalise(poly) diff --git a/src/sage/libs/flint/fmpz_vec.pxd b/src/sage/libs/flint/fmpz_vec.pxd index 8d90aaf5ba5..0418fbc6242 100644 --- a/src/sage/libs/flint/fmpz_vec.pxd +++ b/src/sage/libs/flint/fmpz_vec.pxd @@ -1,12 +1,78 @@ # distutils: libraries = flint # distutils: depends = flint/fmpz_vec.h -from sage.libs.flint.types cimport fmpz, slong, ulong, fmpz_t +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * -# flint/fmpz_vec.h cdef extern from "flint_wrap.h": - fmpz * _fmpz_vec_init(slong) - void _fmpz_vec_clear(fmpz *, slong) - ulong _fmpz_vec_max_limbs(const fmpz *, slong) - void _fmpz_vec_scalar_mod_fmpz(fmpz *, fmpz *, long, fmpz_t) - void _fmpz_vec_scalar_smod_fmpz(fmpz *, fmpz *, long, fmpz_t) + fmpz * _fmpz_vec_init(slong len) noexcept + void _fmpz_vec_clear(fmpz * vec, slong len) noexcept + void _fmpz_vec_randtest(fmpz * f, flint_rand_t state, slong len, flint_bitcnt_t bits) noexcept + void _fmpz_vec_randtest_unsigned(fmpz * f, flint_rand_t state, slong len, flint_bitcnt_t bits) noexcept + slong _fmpz_vec_max_bits(const fmpz * vec, slong len) noexcept + slong _fmpz_vec_max_bits_ref(const fmpz * vec, slong len) noexcept + void _fmpz_vec_sum_max_bits(slong * sumabs, slong * maxabs, const fmpz * vec, slong len) noexcept + mp_size_t _fmpz_vec_max_limbs(const fmpz * vec, slong len) noexcept + void _fmpz_vec_height(fmpz_t height, const fmpz * vec, slong len) noexcept + slong _fmpz_vec_height_index(const fmpz * vec, slong len) noexcept + int _fmpz_vec_fread(FILE * file, fmpz ** vec, slong * len) noexcept + int _fmpz_vec_read(fmpz ** vec, slong * len) noexcept + int _fmpz_vec_fprint(FILE * file, const fmpz * vec, slong len) noexcept + int _fmpz_vec_print(const fmpz * vec, slong len) noexcept + void _fmpz_vec_get_nmod_vec(mp_ptr res, const fmpz * poly, slong len, nmod_t mod) noexcept + void _fmpz_vec_set_nmod_vec(fmpz * res, mp_srcptr poly, slong len, nmod_t mod) noexcept + void _fmpz_vec_get_fft(mp_limb_t ** coeffs_f, const fmpz * coeffs_m, slong l, slong length) noexcept + void _fmpz_vec_set_fft(fmpz * coeffs_m, slong length, const mp_ptr * coeffs_f, slong limbs, slong sign) noexcept + slong _fmpz_vec_get_d_vec_2exp(double * appv, const fmpz * vec, slong len) noexcept + void _fmpz_vec_set(fmpz * vec1, const fmpz * vec2, slong len2) noexcept + void _fmpz_vec_swap(fmpz * vec1, fmpz * vec2, slong len2) noexcept + void _fmpz_vec_zero(fmpz * vec, slong len) noexcept + void _fmpz_vec_neg(fmpz * vec1, const fmpz * vec2, slong len2) noexcept + void _fmpz_vec_scalar_abs(fmpz * vec1, const fmpz * vec2, slong len2) noexcept + bint _fmpz_vec_equal(const fmpz * vec1, const fmpz * vec2, slong len) noexcept + bint _fmpz_vec_is_zero(const fmpz * vec, slong len) noexcept + void _fmpz_vec_max(fmpz * vec1, const fmpz * vec2, const fmpz * vec3, slong len) noexcept + void _fmpz_vec_max_inplace(fmpz * vec1, const fmpz * vec2, slong len) noexcept + void _fmpz_vec_sort(fmpz * vec, slong len) noexcept + void _fmpz_vec_add(fmpz * res, const fmpz * vec1, const fmpz * vec2, slong len2) noexcept + void _fmpz_vec_sub(fmpz * res, const fmpz * vec1, const fmpz * vec2, slong len2) noexcept + void _fmpz_vec_scalar_mul_fmpz(fmpz * vec1, const fmpz * vec2, slong len2, const fmpz_t x) noexcept + void _fmpz_vec_scalar_mul_si(fmpz * vec1, const fmpz * vec2, slong len2, slong c) noexcept + void _fmpz_vec_scalar_mul_ui(fmpz * vec1, const fmpz * vec2, slong len2, ulong c) noexcept + void _fmpz_vec_scalar_mul_2exp(fmpz * vec1, const fmpz * vec2, slong len2, ulong exp) noexcept + void _fmpz_vec_scalar_divexact_fmpz(fmpz * vec1, const fmpz * vec2, slong len2, const fmpz_t x) noexcept + void _fmpz_vec_scalar_divexact_si(fmpz * vec1, const fmpz * vec2, slong len2, slong c) noexcept + void _fmpz_vec_scalar_divexact_ui(fmpz * vec1, const fmpz * vec2, slong len2, ulong c) noexcept + void _fmpz_vec_scalar_fdiv_q_fmpz(fmpz * vec1, const fmpz * vec2, slong len2, const fmpz_t c) noexcept + void _fmpz_vec_scalar_fdiv_q_si(fmpz * vec1, const fmpz * vec2, slong len2, slong c) noexcept + void _fmpz_vec_scalar_fdiv_q_ui(fmpz * vec1, const fmpz * vec2, slong len2, ulong c) noexcept + void _fmpz_vec_scalar_fdiv_q_2exp(fmpz * vec1, const fmpz * vec2, slong len2, ulong exp) noexcept + void _fmpz_vec_scalar_fdiv_r_2exp(fmpz * vec1, const fmpz * vec2, slong len2, ulong exp) noexcept + void _fmpz_vec_scalar_tdiv_q_fmpz(fmpz * vec1, const fmpz * vec2, slong len2, const fmpz_t c) noexcept + void _fmpz_vec_scalar_tdiv_q_si(fmpz * vec1, const fmpz * vec2, slong len2, slong c) noexcept + void _fmpz_vec_scalar_tdiv_q_ui(fmpz * vec1, const fmpz * vec2, slong len2, ulong c) noexcept + void _fmpz_vec_scalar_tdiv_q_2exp(fmpz * vec1, const fmpz * vec2, slong len2, ulong exp) noexcept + void _fmpz_vec_scalar_addmul_si(fmpz * vec1, const fmpz * vec2, slong len2, slong c) noexcept + void _fmpz_vec_scalar_addmul_ui(fmpz * vec1, const fmpz * vec2, slong len2, ulong c) noexcept + void _fmpz_vec_scalar_addmul_fmpz(fmpz * vec1, const fmpz * vec2, slong len2, const fmpz_t c) noexcept + void _fmpz_vec_scalar_addmul_si_2exp(fmpz * vec1, const fmpz * vec2, slong len2, slong c, ulong exp) noexcept + void _fmpz_vec_scalar_submul_fmpz(fmpz * vec1, const fmpz * vec2, slong len2, const fmpz_t x) noexcept + void _fmpz_vec_scalar_submul_si(fmpz * vec1, const fmpz * vec2, slong len2, slong c) noexcept + void _fmpz_vec_scalar_submul_si_2exp(fmpz * vec1, const fmpz * vec2, slong len2, slong c, ulong e) noexcept + void _fmpz_vec_sum(fmpz_t res, const fmpz * vec, slong len) noexcept + void _fmpz_vec_prod(fmpz_t res, const fmpz * vec, slong len) noexcept + void _fmpz_vec_scalar_mod_fmpz(fmpz * res, const fmpz * vec, slong len, const fmpz_t p) noexcept + void _fmpz_vec_scalar_smod_fmpz(fmpz * res, const fmpz * vec, slong len, const fmpz_t p) noexcept + void _fmpz_vec_content(fmpz_t res, const fmpz * vec, slong len) noexcept + void _fmpz_vec_content_chained(fmpz_t res, const fmpz * vec, slong len, const fmpz_t input) noexcept + void _fmpz_vec_lcm(fmpz_t res, const fmpz * vec, slong len) noexcept + void _fmpz_vec_dot(fmpz_t res, const fmpz * vec1, const fmpz * vec2, slong len2) noexcept + void _fmpz_vec_dot_ptr(fmpz_t res, const fmpz * vec1, fmpz ** const vec2, slong offset, slong len) noexcept diff --git a/src/sage/libs/flint/fmpzi.pxd b/src/sage/libs/flint/fmpzi.pxd new file mode 100644 index 00000000000..885615314a5 --- /dev/null +++ b/src/sage/libs/flint/fmpzi.pxd @@ -0,0 +1,50 @@ +# distutils: libraries = flint +# distutils: depends = flint/fmpzi.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fmpzi_init(fmpzi_t x) noexcept + void fmpzi_clear(fmpzi_t x) noexcept + void fmpzi_swap(fmpzi_t x, fmpzi_t y) noexcept + void fmpzi_zero(fmpzi_t x) noexcept + void fmpzi_one(fmpzi_t x) noexcept + void fmpzi_set(fmpzi_t res, const fmpzi_t x) noexcept + void fmpzi_set_si_si(fmpzi_t res, slong a, slong b) noexcept + void fmpzi_print(const fmpzi_t x) noexcept + void fmpzi_randtest(fmpzi_t res, flint_rand_t state, mp_bitcnt_t bits) noexcept + bint fmpzi_equal(const fmpzi_t x, const fmpzi_t y) noexcept + bint fmpzi_is_zero(const fmpzi_t x) noexcept + bint fmpzi_is_one(const fmpzi_t x) noexcept + bint fmpzi_is_unit(const fmpzi_t x) noexcept + slong fmpzi_canonical_unit_i_pow(const fmpzi_t x) noexcept + void fmpzi_canonicalise_unit(fmpzi_t res, const fmpzi_t x) noexcept + slong fmpzi_bits(const fmpzi_t x) noexcept + void fmpzi_norm(fmpz_t res, const fmpzi_t x) noexcept + void fmpzi_conj(fmpzi_t res, const fmpzi_t x) noexcept + void fmpzi_neg(fmpzi_t res, const fmpzi_t x) noexcept + void fmpzi_add(fmpzi_t res, const fmpzi_t x, const fmpzi_t y) noexcept + void fmpzi_sub(fmpzi_t res, const fmpzi_t x, const fmpzi_t y) noexcept + void fmpzi_sqr(fmpzi_t res, const fmpzi_t x) noexcept + void fmpzi_mul(fmpzi_t res, const fmpzi_t x, const fmpzi_t y) noexcept + void fmpzi_pow_ui(fmpzi_t res, const fmpzi_t x, ulong exp) noexcept + void fmpzi_divexact(fmpzi_t q, const fmpzi_t x, const fmpzi_t y) noexcept + void fmpzi_divrem(fmpzi_t q, fmpzi_t r, const fmpzi_t x, const fmpzi_t y) noexcept + void fmpzi_divrem_approx(fmpzi_t q, fmpzi_t r, const fmpzi_t x, const fmpzi_t y) noexcept + slong fmpzi_remove_one_plus_i(fmpzi_t res, const fmpzi_t x) noexcept + void fmpzi_gcd_euclidean(fmpzi_t res, const fmpzi_t x, const fmpzi_t y) noexcept + void fmpzi_gcd_euclidean_improved(fmpzi_t res, const fmpzi_t x, const fmpzi_t y) noexcept + void fmpzi_gcd_binary(fmpzi_t res, const fmpzi_t x, const fmpzi_t y) noexcept + void fmpzi_gcd_shortest(fmpzi_t res, const fmpzi_t x, const fmpzi_t y) noexcept + void fmpzi_gcd(fmpzi_t res, const fmpzi_t x, const fmpzi_t y) noexcept + bint fmpzi_is_prime(const fmpzi_t n) noexcept + bint fmpzi_is_probabprime(const fmpzi_t n) noexcept diff --git a/src/sage/libs/flint/fq.pxd b/src/sage/libs/flint/fq.pxd index 7c7565a38d8..01c8f5887a2 100644 --- a/src/sage/libs/flint/fq.pxd +++ b/src/sage/libs/flint/fq.pxd @@ -1,76 +1,95 @@ # distutils: libraries = flint # distutils: depends = flint/fq.h -from sage.libs.flint.types cimport fq_ctx_t, fq_t, fmpz_t, fmpz_mod_poly_t, slong, ulong +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ -# flint/fq.h -cdef extern from "flint_wrap.h": - void fq_ctx_init(fq_ctx_t ctx, const fmpz_t p, slong d, const char *var) - void fq_ctx_init_conway(fq_ctx_t ctx, const fmpz_t p, slong d, const char *var) - void fq_ctx_init_modulus(fq_ctx_t ctx, - fmpz_mod_poly_t modulus, - const char *var) - - void fq_ctx_clear(fq_ctx_t ctx) - - fmpz_t fq_ctx_prime(fq_ctx_t ctx) - slong fq_ctx_degree(const fq_ctx_t ctx) - void fq_ctx_order(fmpz_t f, const fq_ctx_t ctx) - - void fq_ctx_print(const fq_ctx_t ctx) - - # Memory managment - - void fq_init(fq_t rop, const fq_ctx_t ctx) - void fq_clear(fq_t rop, const fq_ctx_t ctx) - void fq_reduce(fq_t rop, const fq_ctx_t ctx) - - # Basic arithmetic - - void fq_add(fq_t rop, const fq_t op1, const fq_t op2, const fq_ctx_t ctx) - void fq_sub(fq_t rop, const fq_t op1, const fq_t op2, const fq_ctx_t ctx) - void fq_sub_one(fq_t rop, const fq_t op1, const fq_ctx_t ctx) - void fq_neg(fq_t rop, const fq_t op1, const fq_ctx_t ctx) - void fq_mul(fq_t rop, const fq_t op1, const fq_t op2, const fq_ctx_t ctx) - void fq_mul_fmpz(fq_t rop, const fq_t op, const fmpz_t x, const fq_ctx_t ctx) - void fq_mul_si(fq_t rop, const fq_t op, slong x, const fq_ctx_t ctx) - void fq_mul_ui(fq_t rop, const fq_t op, ulong x, const fq_ctx_t ctx) - void fq_div(fq_t rop, const fq_t op1, const fq_t op2, const fq_ctx_t ctx) - void fq_sqr(fq_t rop, const fq_t op, const fq_ctx_t ctx) - void fq_inv(fq_t rop, const fq_t op1, const fq_ctx_t ctx) - void fq_gcdinv(fq_t rop, fq_t inv, const fq_t op, const fq_ctx_t ctx) - void fq_pow(fq_t rop, const fq_t op1, const fmpz_t e, const fq_ctx_t ctx) - void fq_pow_ui(fq_t rop, const fq_t op, const ulong e, const fq_ctx_t ctx) - void fq_pth_root(fq_t rop, const fq_t op1, const fq_ctx_t ctx) - - # Comparison +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * - int fq_equal(const fq_t op1, const fq_t op2, const fq_ctx_t ctx) - int fq_is_zero(const fq_t op, const fq_ctx_t ctx) - int fq_is_one(const fq_t op, const fq_ctx_t ctx) - - # Assignments and conversions - - void fq_set(fq_t rop, const fq_t op, const fq_ctx_t ctx) - void fq_set_fmpz(fq_t rop, const fmpz_t x, const fq_ctx_t ctx) - void fq_set_ui(fq_t rop, const ulong x, const fq_ctx_t ctx) - void fq_set_si(fq_t rop, const slong x, const fq_ctx_t ctx) - void fq_set_coeff_fmpz(fq_t rop, const fmpz_t x, const ulong n, const fq_ctx_t ctx) - void fq_swap(fq_t op1, fq_t op2, const fq_ctx_t ctx) - void fq_zero(fq_t rop, const fq_ctx_t ctx) - void fq_one(fq_t rop, const fq_ctx_t ctx) - void fq_gen(fq_t rop, const fq_ctx_t ctx) - - # Output - - void fq_print(const fq_t op, const fq_ctx_t ctx) - int fq_print_pretty(const fq_t op, const fq_ctx_t ctx) - - char * fq_get_str(const fq_t op, const fq_ctx_t ctx) - char * fq_get_str_pretty(const fq_t op, const fq_ctx_t ctx) - - # Special functions - - void fq_trace(fmpz_t rop, const fq_t op, const fq_ctx_t ctx) - void fq_frobenius(fq_t rop, const fq_t op, slong e, const fq_ctx_t ctx) - void fq_norm(fmpz_t rop, const fq_t op, const fq_ctx_t ctx) +cdef extern from "flint_wrap.h": + void fq_ctx_init(fq_ctx_t ctx, const fmpz_t p, slong d, const char * var) noexcept + int _fq_ctx_init_conway(fq_ctx_t ctx, const fmpz_t p, slong d, const char * var) noexcept + void fq_ctx_init_conway(fq_ctx_t ctx, const fmpz_t p, slong d, const char * var) noexcept + void fq_ctx_init_modulus(fq_ctx_t ctx, const fmpz_mod_poly_t modulus, const fmpz_mod_ctx_t ctxp, const char * var) noexcept + void fq_ctx_clear(fq_ctx_t ctx) noexcept + const fmpz_mod_poly_struct* fq_ctx_modulus(const fq_ctx_t ctx) noexcept + slong fq_ctx_degree(const fq_ctx_t ctx) noexcept + const fmpz * fq_ctx_prime(const fq_ctx_t ctx) noexcept + void fq_ctx_order(fmpz_t f, const fq_ctx_t ctx) noexcept + int fq_ctx_fprint(FILE * file, const fq_ctx_t ctx) noexcept + void fq_ctx_print(const fq_ctx_t ctx) noexcept + void fq_ctx_randtest(fq_ctx_t ctx, flint_rand_t state) noexcept + void fq_ctx_randtest_reducible(fq_ctx_t ctx, flint_rand_t state) noexcept + void fq_init(fq_t rop, const fq_ctx_t ctx) noexcept + void fq_init2(fq_t rop, const fq_ctx_t ctx) noexcept + void fq_clear(fq_t rop, const fq_ctx_t ctx) noexcept + void _fq_sparse_reduce(fmpz * R, slong lenR, const fq_ctx_t ctx) noexcept + void _fq_dense_reduce(fmpz * R, slong lenR, const fq_ctx_t ctx) noexcept + void _fq_reduce(fmpz * r, slong lenR, const fq_ctx_t ctx) noexcept + void fq_reduce(fq_t rop, const fq_ctx_t ctx) noexcept + void fq_add(fq_t rop, const fq_t op1, const fq_t op2, const fq_ctx_t ctx) noexcept + void fq_sub(fq_t rop, const fq_t op1, const fq_t op2, const fq_ctx_t ctx) noexcept + void fq_sub_one(fq_t rop, const fq_t op1, const fq_ctx_t ctx) noexcept + void fq_neg(fq_t rop, const fq_t op, const fq_ctx_t ctx) noexcept + void fq_mul(fq_t rop, const fq_t op1, const fq_t op2, const fq_ctx_t ctx) noexcept + void fq_mul_fmpz(fq_t rop, const fq_t op, const fmpz_t x, const fq_ctx_t ctx) noexcept + void fq_mul_si(fq_t rop, const fq_t op, slong x, const fq_ctx_t ctx) noexcept + void fq_mul_ui(fq_t rop, const fq_t op, ulong x, const fq_ctx_t ctx) noexcept + void fq_sqr(fq_t rop, const fq_t op, const fq_ctx_t ctx) noexcept + void fq_div(fq_t rop, const fq_t op1, const fq_t op2, const fq_ctx_t ctx) noexcept + void _fq_inv(fmpz * rop, const fmpz * op, slong len, const fq_ctx_t ctx) noexcept + void fq_inv(fq_t rop, const fq_t op, const fq_ctx_t ctx) noexcept + void fq_gcdinv(fq_t f, fq_t inv, const fq_t op, const fq_ctx_t ctx) noexcept + void _fq_pow(fmpz * rop, const fmpz * op, slong len, const fmpz_t e, const fq_ctx_t ctx) noexcept + void fq_pow(fq_t rop, const fq_t op, const fmpz_t e, const fq_ctx_t ctx) noexcept + void fq_pow_ui(fq_t rop, const fq_t op, const ulong e, const fq_ctx_t ctx) noexcept + int fq_sqrt(fq_t rop, const fq_t op1, const fq_ctx_t ctx) noexcept + void fq_pth_root(fq_t rop, const fq_t op1, const fq_ctx_t ctx) noexcept + bint fq_is_square(const fq_t op, const fq_ctx_t ctx) noexcept + int fq_fprint_pretty(FILE * file, const fq_t op, const fq_ctx_t ctx) noexcept + int fq_print_pretty(const fq_t op, const fq_ctx_t ctx) noexcept + int fq_fprint(FILE * file, const fq_t op, const fq_ctx_t ctx) noexcept + void fq_print(const fq_t op, const fq_ctx_t ctx) noexcept + char * fq_get_str(const fq_t op, const fq_ctx_t ctx) noexcept + char * fq_get_str_pretty(const fq_t op, const fq_ctx_t ctx) noexcept + void fq_randtest(fq_t rop, flint_rand_t state, const fq_ctx_t ctx) noexcept + void fq_randtest_not_zero(fq_t rop, flint_rand_t state, const fq_ctx_t ctx) noexcept + void fq_randtest_dense(fq_t rop, flint_rand_t state, const fq_ctx_t ctx) noexcept + void fq_rand(fq_t rop, flint_rand_t state, const fq_ctx_t ctx) noexcept + void fq_rand_not_zero(fq_t rop, flint_rand_t state, const fq_ctx_t ctx) noexcept + void fq_set(fq_t rop, const fq_t op, const fq_ctx_t ctx) noexcept + void fq_set_si(fq_t rop, const slong x, const fq_ctx_t ctx) noexcept + void fq_set_ui(fq_t rop, const ulong x, const fq_ctx_t ctx) noexcept + void fq_set_fmpz(fq_t rop, const fmpz_t x, const fq_ctx_t ctx) noexcept + void fq_swap(fq_t op1, fq_t op2, const fq_ctx_t ctx) noexcept + void fq_zero(fq_t rop, const fq_ctx_t ctx) noexcept + void fq_one(fq_t rop, const fq_ctx_t ctx) noexcept + void fq_gen(fq_t rop, const fq_ctx_t ctx) noexcept + int fq_get_fmpz(fmpz_t rop, const fq_t op, const fq_ctx_t ctx) noexcept + void fq_get_fmpz_poly(fmpz_poly_t a, const fq_t b, const fq_ctx_t ctx) noexcept + void fq_get_fmpz_mod_poly(fmpz_mod_poly_t a, const fq_t b, const fq_ctx_t ctx) noexcept + void fq_set_fmpz_poly(fq_t a, const fmpz_poly_t b, const fq_ctx_t ctx) noexcept + void fq_set_fmpz_mod_poly(fq_t a, const fmpz_mod_poly_t b, const fq_ctx_t ctx) noexcept + void fq_get_fmpz_mod_mat(fmpz_mod_mat_t col, const fq_t a, const fq_ctx_t ctx) noexcept + void fq_set_fmpz_mod_mat(fq_t a, const fmpz_mod_mat_t col, const fq_ctx_t ctx) noexcept + bint fq_is_zero(const fq_t op, const fq_ctx_t ctx) noexcept + bint fq_is_one(const fq_t op, const fq_ctx_t ctx) noexcept + bint fq_equal(const fq_t op1, const fq_t op2, const fq_ctx_t ctx) noexcept + bint fq_is_invertible(const fq_t op, const fq_ctx_t ctx) noexcept + bint fq_is_invertible_f(fq_t f, const fq_t op, const fq_ctx_t ctx) noexcept + void _fq_trace(fmpz_t rop, const fmpz * op, slong len, const fq_ctx_t ctx) noexcept + void fq_trace(fmpz_t rop, const fq_t op, const fq_ctx_t ctx) noexcept + void _fq_norm(fmpz_t rop, const fmpz * op, slong len, const fq_ctx_t ctx) noexcept + void fq_norm(fmpz_t rop, const fq_t op, const fq_ctx_t ctx) noexcept + void _fq_frobenius(fmpz * rop, const fmpz * op, slong len, slong e, const fq_ctx_t ctx) noexcept + void fq_frobenius(fq_t rop, const fq_t op, slong e, const fq_ctx_t ctx) noexcept + int fq_multiplicative_order(fmpz * ord, const fq_t op, const fq_ctx_t ctx) noexcept + bint fq_is_primitive(const fq_t op, const fq_ctx_t ctx) noexcept + void fq_bit_pack(fmpz_t f, const fq_t op, flint_bitcnt_t bit_size, const fq_ctx_t ctx) noexcept + void fq_bit_unpack(fq_t rop, const fmpz_t f, flint_bitcnt_t bit_size, const fq_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_default.pxd b/src/sage/libs/flint/fq_default.pxd new file mode 100644 index 00000000000..3d622002a0e --- /dev/null +++ b/src/sage/libs/flint/fq_default.pxd @@ -0,0 +1,82 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_default.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_default_ctx_init(fq_default_ctx_t ctx, const fmpz_t p, slong d, const char * var) noexcept + void fq_default_ctx_init_type(fq_default_ctx_t ctx, const fmpz_t p, slong d, const char * var, int type) noexcept + void fq_default_ctx_init_modulus(fq_default_ctx_t ctx, const fmpz_mod_poly_t modulus, fmpz_mod_ctx_t mod_ctx, const char * var) noexcept + void fq_default_ctx_init_modulus_type(fq_default_ctx_t ctx, const fmpz_mod_poly_t modulus, fmpz_mod_ctx_t mod_ctx, const char * var, int type) noexcept + void fq_default_ctx_init_modulus_nmod(fq_default_ctx_t ctx, const nmod_poly_t modulus, const char * var) noexcept + void fq_default_ctx_init_modulus_nmod_type(fq_default_ctx_t ctx, const nmod_poly_t modulus, const char * var, int type) noexcept + void fq_default_ctx_clear(fq_default_ctx_t ctx) noexcept + int fq_default_ctx_type(const fq_default_ctx_t ctx) noexcept + slong fq_default_ctx_degree(const fq_default_ctx_t ctx) noexcept + void fq_default_ctx_prime(fmpz_t prime, const fq_default_ctx_t ctx) noexcept + void fq_default_ctx_order(fmpz_t f, const fq_default_ctx_t ctx) noexcept + void fq_default_ctx_modulus(fmpz_mod_poly_t p, const fq_default_ctx_t ctx) noexcept + int fq_default_ctx_fprint(FILE * file, const fq_default_ctx_t ctx) noexcept + void fq_default_ctx_print(const fq_default_ctx_t ctx) noexcept + void fq_default_ctx_randtest(fq_default_ctx_t ctx) noexcept + void fq_default_get_coeff_fmpz(fmpz_t c, fq_default_t op, slong n, const fq_default_ctx_t ctx) noexcept + void fq_default_init(fq_default_t rop, const fq_default_ctx_t ctx) noexcept + void fq_default_init2(fq_default_t rop, const fq_default_ctx_t ctx) noexcept + void fq_default_clear(fq_default_t rop, const fq_default_ctx_t ctx) noexcept + bint fq_default_is_invertible(const fq_default_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_add(fq_default_t rop, const fq_default_t op1, const fq_default_t op2, const fq_default_ctx_t ctx) noexcept + void fq_default_sub(fq_default_t rop, const fq_default_t op1, const fq_default_t op2, const fq_default_ctx_t ctx) noexcept + void fq_default_sub_one(fq_default_t rop, const fq_default_t op1, const fq_default_ctx_t ctx) noexcept + void fq_default_neg(fq_default_t rop, const fq_default_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_mul(fq_default_t rop, const fq_default_t op1, const fq_default_t op2, const fq_default_ctx_t ctx) noexcept + void fq_default_mul_fmpz(fq_default_t rop, const fq_default_t op, const fmpz_t x, const fq_default_ctx_t ctx) noexcept + void fq_default_mul_si(fq_default_t rop, const fq_default_t op, slong x, const fq_default_ctx_t ctx) noexcept + void fq_default_mul_ui(fq_default_t rop, const fq_default_t op, ulong x, const fq_default_ctx_t ctx) noexcept + void fq_default_sqr(fq_default_t rop, const fq_default_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_div(fq_default_t rop, fq_default_t op1, fq_default_t op2, const fq_default_ctx_t ctx) noexcept + void fq_default_inv(fq_default_t rop, const fq_default_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_pow(fq_default_t rop, const fq_default_t op, const fmpz_t e, const fq_default_ctx_t ctx) noexcept + void fq_default_pow_ui(fq_default_t rop, const fq_default_t op, const ulong e, const fq_default_ctx_t ctx) noexcept + int fq_default_sqrt(fq_default_t rop, const fq_default_t op1, const fq_default_ctx_t ctx) noexcept + void fq_default_pth_root(fq_default_t rop, const fq_default_t op1, const fq_default_ctx_t ctx) noexcept + bint fq_default_is_square(const fq_default_t op, const fq_default_ctx_t ctx) noexcept + int fq_default_fprint_pretty(FILE * file, const fq_default_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_print_pretty(const fq_default_t op, const fq_default_ctx_t ctx) noexcept + int fq_default_fprint(FILE * file, const fq_default_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_print(const fq_default_t op, const fq_default_ctx_t ctx) noexcept + char * fq_default_get_str(const fq_default_t op, const fq_default_ctx_t ctx) noexcept + char * fq_default_get_str_pretty(const fq_default_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_randtest(fq_default_t rop, flint_rand_t state, const fq_default_ctx_t ctx) noexcept + void fq_default_randtest_not_zero(fq_default_t rop, flint_rand_t state, const fq_default_ctx_t ctx) noexcept + void fq_default_rand(fq_default_t rop, flint_rand_t state, const fq_default_ctx_t ctx) noexcept + void fq_default_rand_not_zero(fq_default_t rop, flint_rand_t state, const fq_default_ctx_t ctx) noexcept + void fq_default_set(fq_default_t rop, const fq_default_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_set_si(fq_default_t rop, const slong x, const fq_default_ctx_t ctx) noexcept + void fq_default_set_ui(fq_default_t rop, const ulong x, const fq_default_ctx_t ctx) noexcept + void fq_default_set_fmpz(fq_default_t rop, const fmpz_t x, const fq_default_ctx_t ctx) noexcept + void fq_default_swap(fq_default_t op1, fq_default_t op2, const fq_default_ctx_t ctx) noexcept + void fq_default_zero(fq_default_t rop, const fq_default_ctx_t ctx) noexcept + void fq_default_one(fq_default_t rop, const fq_default_ctx_t ctx) noexcept + void fq_default_gen(fq_default_t rop, const fq_default_ctx_t ctx) noexcept + int fq_default_get_fmpz(fmpz_t rop, const fq_default_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_get_nmod_poly(nmod_poly_t poly, const fq_default_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_set_nmod_poly(fq_default_t op, const nmod_poly_t poly, const fq_default_ctx_t ctx) noexcept + void fq_default_get_fmpz_mod_poly(fmpz_mod_poly_t poly, const fq_default_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_set_fmpz_mod_poly(fq_default_t op, const fmpz_mod_poly_t poly, const fq_default_ctx_t ctx) noexcept + void fq_default_get_fmpz_poly(fmpz_poly_t a, const fq_default_t b, const fq_default_ctx_t ctx) noexcept + void fq_default_set_fmpz_poly(fq_default_t a, const fmpz_poly_t b, const fq_default_ctx_t ctx) noexcept + bint fq_default_is_zero(const fq_default_t op, const fq_default_ctx_t ctx) noexcept + bint fq_default_is_one(const fq_default_t op, const fq_default_ctx_t ctx) noexcept + bint fq_default_equal(const fq_default_t op1, const fq_default_t op2, const fq_default_ctx_t ctx) noexcept + void fq_default_trace(fmpz_t rop, const fq_default_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_norm(fmpz_t rop, const fq_default_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_frobenius(fq_default_t rop, const fq_default_t op, slong e, const fq_default_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_default_mat.pxd b/src/sage/libs/flint/fq_default_mat.pxd new file mode 100644 index 00000000000..20601d54cac --- /dev/null +++ b/src/sage/libs/flint/fq_default_mat.pxd @@ -0,0 +1,68 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_default_mat.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_default_mat_init(fq_default_mat_t mat, slong rows, slong cols, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_init_set(fq_default_mat_t mat, const fq_default_mat_t src, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_clear(fq_default_mat_t mat, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_set(fq_default_mat_t mat, const fq_default_mat_t src, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_entry(fq_default_t val, const fq_default_mat_t mat, slong i, slong j, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_entry_set(fq_default_mat_t mat, slong i, slong j, const fq_default_t x, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_entry_set_fmpz(fq_default_mat_t mat, slong i, slong j, const fmpz_t x, const fq_default_ctx_t ctx) noexcept + slong fq_default_mat_nrows(const fq_default_mat_t mat, const fq_default_ctx_t ctx) noexcept + slong fq_default_mat_ncols(const fq_default_mat_t mat, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_swap(fq_default_mat_t mat1, fq_default_mat_t mat2, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_zero(fq_default_mat_t mat, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_one(fq_default_mat_t mat, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_swap_rows(fq_default_mat_t mat, slong * perm, slong r, slong s, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_swap_cols(fq_default_mat_t mat, slong * perm, slong r, slong s, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_invert_rows(fq_default_mat_t mat, slong * perm, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_invert_cols(fq_default_mat_t mat, slong * perm, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_set_nmod_mat(fq_default_mat_t mat1, const nmod_mat_t mat2, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_set_fmpz_mod_mat(fq_default_mat_t mat1, const fmpz_mod_mat_t mat2, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_set_fmpz_mat(fq_default_mat_t mat1, const fmpz_mat_t mat2, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_concat_vertical(fq_default_mat_t res, const fq_default_mat_t mat1, const fq_default_mat_t mat2, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_concat_horizontal(fq_default_mat_t res, const fq_default_mat_t mat1, const fq_default_mat_t mat2, const fq_default_ctx_t ctx) noexcept + int fq_default_mat_print_pretty(const fq_default_mat_t mat, const fq_default_ctx_t ctx) noexcept + int fq_default_mat_fprint_pretty(FILE * file, const fq_default_mat_t mat, const fq_default_ctx_t ctx) noexcept + int fq_default_mat_print(const fq_default_mat_t mat, const fq_default_ctx_t ctx) noexcept + int fq_default_mat_fprint(FILE * file, const fq_default_mat_t mat, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_window_init(fq_default_mat_t window, const fq_default_mat_t mat, slong r1, slong c1, slong r2, slong c2, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_window_clear(fq_default_mat_t window, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_randtest(fq_default_mat_t mat, flint_rand_t state, const fq_default_ctx_t ctx) noexcept + int fq_default_mat_randpermdiag(fq_mat_t mat, flint_rand_t state, fq_struct * diag, slong n, const fq_ctx_t ctx) noexcept + void fq_default_mat_randrank(fq_default_mat_t mat, flint_rand_t state, slong rank, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_randops(fq_default_mat_t mat, slong count, flint_rand_t state, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_randtril(fq_default_mat_t mat, flint_rand_t state, int unit, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_randtriu(fq_default_mat_t mat, flint_rand_t state, int unit, const fq_default_ctx_t ctx) noexcept + bint fq_default_mat_equal(const fq_default_mat_t mat1, const fq_default_mat_t mat2, const fq_default_ctx_t ctx) noexcept + bint fq_default_mat_is_zero(const fq_default_mat_t mat, const fq_default_ctx_t ctx) noexcept + bint fq_default_mat_is_one(const fq_default_mat_t mat, const fq_default_ctx_t ctx) noexcept + bint fq_default_mat_is_empty(const fq_default_mat_t mat, const fq_default_ctx_t ctx) noexcept + bint fq_default_mat_is_square(const fq_default_mat_t mat, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_add(fq_default_mat_t C, const fq_default_mat_t A, const fq_default_mat_t B, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_sub(fq_default_mat_t C, const fq_default_mat_t A, const fq_default_mat_t B, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_neg(fq_default_mat_t A, const fq_default_mat_t B, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_mul(fq_default_mat_t C, const fq_default_mat_t A, const fq_default_mat_t B, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_submul(fq_default_mat_t D, const fq_default_mat_t C, const fq_default_mat_t A, const fq_default_mat_t B, const fq_default_ctx_t ctx) noexcept + int fq_default_mat_inv(fq_default_mat_t B, fq_default_mat_t A, const fq_default_ctx_t ctx) noexcept + slong fq_default_mat_lu(slong * P, fq_default_mat_t A, int rank_check, const fq_default_ctx_t ctx) noexcept + slong fq_default_mat_rref(fq_default_mat_t A, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_solve_tril(fq_default_mat_t X, const fq_default_mat_t L, const fq_default_mat_t B, int unit, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_solve_triu(fq_default_mat_t X, const fq_default_mat_t U, const fq_default_mat_t B, int unit, const fq_default_ctx_t ctx) noexcept + int fq_default_mat_solve(fq_default_mat_t X, const fq_default_mat_t A, const fq_default_mat_t B, const fq_default_ctx_t ctx) noexcept + int fq_default_mat_can_solve(fq_default_mat_t X, const fq_default_mat_t A, const fq_default_mat_t B, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_similarity(fq_default_mat_t M, slong r, fq_default_t d, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_charpoly(fq_default_poly_t p, const fq_default_mat_t M, const fq_default_ctx_t ctx) noexcept + void fq_default_mat_minpoly(fq_default_poly_t p, const fq_default_mat_t M, const fq_default_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_default_poly.pxd b/src/sage/libs/flint/fq_default_poly.pxd new file mode 100644 index 00000000000..e1c93ca322f --- /dev/null +++ b/src/sage/libs/flint/fq_default_poly.pxd @@ -0,0 +1,95 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_default_poly.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_default_poly_init(fq_default_poly_t poly, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_init2(fq_default_poly_t poly, slong alloc, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_realloc(fq_default_poly_t poly, slong alloc, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_fit_length(fq_default_poly_t poly, slong len, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_clear(fq_default_poly_t poly, const fq_default_ctx_t ctx) noexcept + void _fq_default_poly_set_length(fq_default_poly_t poly, slong len, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_truncate(fq_default_poly_t poly, slong newlen, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_set_trunc(fq_default_poly_t poly1, fq_default_poly_t poly2, slong newlen, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_reverse(fq_default_poly_t output, const fq_default_poly_t input, slong m, const fq_default_ctx_t ctx) noexcept + slong fq_default_poly_degree(const fq_default_poly_t poly, const fq_default_ctx_t ctx) noexcept + slong fq_default_poly_length(const fq_default_poly_t poly, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_randtest(fq_default_poly_t f, flint_rand_t state, slong len, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_randtest_not_zero(fq_default_poly_t f, flint_rand_t state, slong len, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_randtest_monic(fq_default_poly_t f, flint_rand_t state, slong len, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_randtest_irreducible(fq_default_poly_t f, flint_rand_t state, slong len, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_set(fq_default_poly_t poly1, const fq_default_poly_t poly2, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_set_fq_default(fq_default_poly_t poly, const fq_default_t c, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_swap(fq_default_poly_t op1, fq_default_poly_t op2, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_zero(fq_default_poly_t poly, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_one(fq_default_poly_t poly, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_gen(fq_default_poly_t poly, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_make_monic(fq_default_poly_t rop, const fq_default_poly_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_set_nmod_poly(fq_default_poly_t rop, const nmod_poly_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_set_fmpz_mod_poly(fq_default_poly_t rop, const fmpz_mod_poly_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_set_fmpz_poly(fq_default_poly_t rop, const fmpz_poly_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_get_coeff(fq_default_t x, const fq_default_poly_t poly, slong n, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_set_coeff(fq_default_poly_t poly, slong n, const fq_default_t x, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_set_coeff_fmpz(fq_default_poly_t poly, slong n, const fmpz_t x, const fq_default_ctx_t ctx) noexcept + bint fq_default_poly_equal(const fq_default_poly_t poly1, const fq_default_poly_t poly2, const fq_default_ctx_t ctx) noexcept + bint fq_default_poly_equal_trunc(const fq_default_poly_t poly1, const fq_default_poly_t poly2, slong n, const fq_default_ctx_t ctx) noexcept + bint fq_default_poly_is_zero(const fq_default_poly_t poly, const fq_default_ctx_t ctx) noexcept + bint fq_default_poly_is_one(const fq_default_poly_t op, const fq_default_ctx_t ctx) noexcept + bint fq_default_poly_is_gen(const fq_default_poly_t op, const fq_default_ctx_t ctx) noexcept + bint fq_default_poly_is_unit(const fq_default_poly_t op, const fq_default_ctx_t ctx) noexcept + bint fq_default_poly_equal_fq_default(const fq_default_poly_t poly, const fq_default_t c, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_add(fq_default_poly_t res, const fq_default_poly_t poly1, const fq_default_poly_t poly2, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_add_si(fq_default_poly_t res, const fq_default_poly_t poly1, slong c, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_add_series(fq_default_poly_t res, const fq_default_poly_t poly1, const fq_default_poly_t poly2, slong n, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_sub(fq_default_poly_t res, const fq_default_poly_t poly1, const fq_default_poly_t poly2, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_sub_series(fq_default_poly_t res, const fq_default_poly_t poly1, const fq_default_poly_t poly2, slong n, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_neg(fq_default_poly_t res, const fq_default_poly_t poly, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_scalar_mul_fq_default(fq_default_poly_t rop, const fq_default_poly_t op, const fq_default_t x, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_scalar_addmul_fq_default(fq_default_poly_t rop, const fq_default_poly_t op, const fq_default_t x, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_scalar_submul_fq_default(fq_default_poly_t rop, const fq_default_poly_t op, const fq_default_t x, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_scalar_div_fq_default(fq_default_poly_t rop, const fq_default_poly_t op, const fq_default_t x, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_mul(fq_default_poly_t rop, const fq_default_poly_t op1, const fq_default_poly_t op2, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_mullow(fq_default_poly_t rop, const fq_default_poly_t op1, const fq_default_poly_t op2, slong n, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_mulhigh(fq_default_poly_t res, const fq_default_poly_t poly1, const fq_default_poly_t poly2, slong start, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_mulmod(fq_default_poly_t res, const fq_default_poly_t poly1, const fq_default_poly_t poly2, const fq_default_poly_t f, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_sqr(fq_default_poly_t rop, const fq_default_poly_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_pow(fq_default_poly_t rop, const fq_default_poly_t op, ulong e, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_powmod_ui_binexp(fq_default_poly_t res, const fq_default_poly_t poly, ulong e, const fq_default_poly_t f, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_powmod_fmpz_binexp(fq_default_poly_t res, const fq_default_poly_t poly, const fmpz_t e, const fq_default_poly_t f, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_pow_trunc(fq_default_poly_t res, const fq_default_poly_t poly, ulong e, slong trunc, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_shift_left(fq_default_poly_t rop, const fq_default_poly_t op, slong n, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_shift_right(fq_default_poly_t rop, const fq_default_poly_t op, slong n, const fq_default_ctx_t ctx) noexcept + slong fq_default_poly_hamming_weight(const fq_default_poly_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_divrem(fq_default_poly_t Q, fq_default_poly_t R, const fq_default_poly_t A, const fq_default_poly_t B, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_rem(fq_default_poly_t R, const fq_default_poly_t A, const fq_default_poly_t B, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_inv_series(fq_default_poly_t Qinv, const fq_default_poly_t Q, slong n, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_div_series(fq_default_poly_t Q, const fq_default_poly_t A, const fq_default_poly_t B, slong n, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_gcd(fq_default_poly_t rop, const fq_default_poly_t op1, const fq_default_poly_t op2, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_xgcd(fq_default_poly_t G, fq_default_poly_t S, fq_default_poly_t T, const fq_default_poly_t A, const fq_default_poly_t B, const fq_default_ctx_t ctx) noexcept + int fq_default_poly_divides(fq_default_poly_t Q, const fq_default_poly_t A, const fq_default_poly_t B, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_derivative(fq_default_poly_t rop, const fq_default_poly_t op, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_invsqrt_series(fq_default_poly_t g, const fq_default_poly_t h, slong n, fq_default_ctx_t ctx) noexcept + void fq_default_poly_sqrt_series(fq_default_poly_t g, const fq_default_poly_t h, slong n, fq_default_ctx_t ctx) noexcept + int fq_default_poly_sqrt(fq_default_poly_t s, const fq_default_poly_t p, fq_default_ctx_t mod) noexcept + void fq_default_poly_evaluate_fq_default(fq_default_t rop, const fq_default_poly_t f, const fq_default_t a, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_compose(fq_default_poly_t rop, const fq_default_poly_t op1, const fq_default_poly_t op2, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_compose_mod(fq_default_poly_t res, const fq_default_poly_t f, const fq_default_poly_t g, const fq_default_poly_t h, const fq_default_ctx_t ctx) noexcept + int fq_default_poly_fprint_pretty(FILE * file, const fq_default_poly_t poly, const char * x, const fq_default_ctx_t ctx) noexcept + int fq_default_poly_print_pretty(const fq_default_poly_t poly, const char * x, const fq_default_ctx_t ctx) noexcept + int fq_default_poly_fprint(FILE * file, const fq_default_poly_t poly, const fq_default_ctx_t ctx) noexcept + int fq_default_poly_print(const fq_default_poly_t poly, const fq_default_ctx_t ctx) noexcept + char * fq_default_poly_get_str(const fq_default_poly_t poly, const fq_default_ctx_t ctx) noexcept + char * fq_default_poly_get_str_pretty(const fq_default_poly_t poly, const char * x, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_inflate(fq_default_poly_t result, const fq_default_poly_t input, ulong inflation, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_deflate(fq_default_poly_t result, const fq_default_poly_t input, ulong deflation, const fq_default_ctx_t ctx) noexcept + ulong fq_default_poly_deflation(const fq_default_poly_t input, const fq_default_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_default_poly_factor.pxd b/src/sage/libs/flint/fq_default_poly_factor.pxd new file mode 100644 index 00000000000..aff2870099e --- /dev/null +++ b/src/sage/libs/flint/fq_default_poly_factor.pxd @@ -0,0 +1,37 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_default_poly_factor.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_default_poly_factor_init(fq_default_poly_factor_t fac, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_factor_clear(fq_default_poly_factor_t fac, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_factor_realloc(fq_default_poly_factor_t fac, slong alloc, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_factor_fit_length(fq_default_poly_factor_t fac, slong len, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_factor_set(fq_default_poly_factor_t res, const fq_default_poly_factor_t fac, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_factor_print_pretty(const fq_default_poly_factor_t fac, const char * var, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_factor_print(const fq_default_poly_factor_t fac, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_factor_insert(fq_default_poly_factor_t fac, const fq_default_poly_t poly, slong exp, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_factor_concat(fq_default_poly_factor_t res, const fq_default_poly_factor_t fac, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_factor_pow(fq_default_poly_factor_t fac, slong exp, const fq_default_ctx_t ctx) noexcept + ulong fq_default_poly_remove(fq_default_poly_t f, const fq_default_poly_t p, const fq_default_ctx_t ctx) noexcept + slong fq_default_poly_factor_length(fq_default_poly_factor_t fac, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_factor_get_poly(fq_default_poly_t poly, const fq_default_poly_factor_t fac, slong i, const fq_default_ctx_t ctx) noexcept + slong fq_default_poly_factor_exp(fq_default_poly_factor_t fac, slong i, const fq_default_ctx_t ctx) noexcept + bint fq_default_poly_is_irreducible(const fq_default_poly_t f, const fq_default_ctx_t ctx) noexcept + bint fq_default_poly_is_squarefree(const fq_default_poly_t f, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_factor_equal_deg(fq_default_poly_factor_t factors, const fq_default_poly_t pol, slong d, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_factor_split_single(fq_default_poly_t linfactor, const fq_default_poly_t input, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_factor_distinct_deg(fq_default_poly_factor_t res, const fq_default_poly_t poly, slong * const * degs, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_factor_squarefree(fq_default_poly_factor_t res, const fq_default_poly_t f, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_factor(fq_default_poly_factor_t res, fq_default_t lead, const fq_default_poly_t f, const fq_default_ctx_t ctx) noexcept + void fq_default_poly_roots(fq_default_poly_factor_t r, const fq_default_poly_t f, int with_multiplicity, const fq_default_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_embed.pxd b/src/sage/libs/flint/fq_embed.pxd new file mode 100644 index 00000000000..4f14b164d02 --- /dev/null +++ b/src/sage/libs/flint/fq_embed.pxd @@ -0,0 +1,26 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_embed.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_embed_gens(fq_t gen_sub, fq_t gen_sup, fmpz_mod_poly_t minpoly, const fq_ctx_t sub_ctx, const fq_ctx_t sup_ctx) noexcept + void _fq_embed_gens_naive(fq_t gen_sub, fq_t gen_sup, fmpz_mod_poly_t minpoly, const fq_ctx_t sub_ctx, const fq_ctx_t sup_ctx) noexcept + void fq_embed_matrices(fmpz_mod_mat_t embed, fmpz_mod_mat_t project, const fq_t gen_sub, const fq_ctx_t sub_ctx, const fq_t gen_sup, const fq_ctx_t sup_ctx, const fmpz_mod_poly_t gen_minpoly) noexcept + void fq_embed_trace_matrix(fmpz_mod_mat_t res, const fmpz_mod_mat_t basis, const fq_ctx_t sub_ctx, const fq_ctx_t sup_ctx) noexcept + void fq_embed_composition_matrix(fmpz_mod_mat_t matrix, const fq_t gen, const fq_ctx_t ctx) noexcept + void fq_embed_composition_matrix_sub(fmpz_mod_mat_t matrix, const fq_t gen, const fq_ctx_t ctx, slong trunc) noexcept + void fq_embed_mul_matrix(fmpz_mod_mat_t matrix, const fq_t gen, const fq_ctx_t ctx) noexcept + void fq_embed_mono_to_dual_matrix(fmpz_mod_mat_t res, const fq_ctx_t ctx) noexcept + void fq_embed_dual_to_mono_matrix(fmpz_mod_mat_t res, const fq_ctx_t ctx) noexcept + void fq_modulus_pow_series_inv(fmpz_mod_poly_t res, const fq_ctx_t ctx, slong trunc) noexcept + void fq_modulus_derivative_inv(fq_t m_prime, fq_t m_prime_inv, const fq_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_mat.pxd b/src/sage/libs/flint/fq_mat.pxd new file mode 100644 index 00000000000..72fa6c63e15 --- /dev/null +++ b/src/sage/libs/flint/fq_mat.pxd @@ -0,0 +1,81 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_mat.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_mat_init(fq_mat_t mat, slong rows, slong cols, const fq_ctx_t ctx) noexcept + void fq_mat_init_set(fq_mat_t mat, const fq_mat_t src, const fq_ctx_t ctx) noexcept + void fq_mat_clear(fq_mat_t mat, const fq_ctx_t ctx) noexcept + void fq_mat_set(fq_mat_t mat, const fq_mat_t src, const fq_ctx_t ctx) noexcept + fq_struct * fq_mat_entry(const fq_mat_t mat, slong i, slong j) noexcept + void fq_mat_entry_set(fq_mat_t mat, slong i, slong j, const fq_t x, const fq_ctx_t ctx) noexcept + slong fq_mat_nrows(const fq_mat_t mat, const fq_ctx_t ctx) noexcept + slong fq_mat_ncols(const fq_mat_t mat, const fq_ctx_t ctx) noexcept + void fq_mat_swap(fq_mat_t mat1, fq_mat_t mat2, const fq_ctx_t ctx) noexcept + void fq_mat_swap_entrywise(fq_mat_t mat1, fq_mat_t mat2, const fq_ctx_t ctx) noexcept + void fq_mat_zero(fq_mat_t mat, const fq_ctx_t ctx) noexcept + void fq_mat_one(fq_mat_t mat, const fq_ctx_t ctx) noexcept + void fq_mat_swap_rows(fq_mat_t mat, slong * perm, slong r, slong s, const fq_ctx_t ctx) noexcept + void fq_mat_swap_cols(fq_mat_t mat, slong * perm, slong r, slong s, const fq_ctx_t ctx) noexcept + void fq_mat_invert_rows(fq_mat_t mat, slong * perm, const fq_ctx_t ctx) noexcept + void fq_mat_invert_cols(fq_mat_t mat, slong * perm, const fq_ctx_t ctx) noexcept + void fq_mat_set_nmod_mat(fq_mat_t mat1, const nmod_mat_t mat2, const fq_ctx_t ctx) noexcept + void fq_mat_set_fmpz_mod_mat(fq_mat_t mat1, const fmpz_mod_mat_t mat2, const fq_ctx_t ctx) noexcept + void fq_mat_concat_vertical(fq_mat_t res, const fq_mat_t mat1, const fq_mat_t mat2, const fq_ctx_t ctx) noexcept + void fq_mat_concat_horizontal(fq_mat_t res, const fq_mat_t mat1, const fq_mat_t mat2, const fq_ctx_t ctx) noexcept + int fq_mat_print_pretty(const fq_mat_t mat, const fq_ctx_t ctx) noexcept + int fq_mat_fprint_pretty(FILE * file, const fq_mat_t mat, const fq_ctx_t ctx) noexcept + int fq_mat_print(const fq_mat_t mat, const fq_ctx_t ctx) noexcept + int fq_mat_fprint(FILE * file, const fq_mat_t mat, const fq_ctx_t ctx) noexcept + void fq_mat_window_init(fq_mat_t window, const fq_mat_t mat, slong r1, slong c1, slong r2, slong c2, const fq_ctx_t ctx) noexcept + void fq_mat_window_clear(fq_mat_t window, const fq_ctx_t ctx) noexcept + void fq_mat_randtest(fq_mat_t mat, flint_rand_t state, const fq_ctx_t ctx) noexcept + int fq_mat_randpermdiag(fq_mat_t mat, flint_rand_t state, fq_struct * diag, slong n, const fq_ctx_t ctx) noexcept + void fq_mat_randrank(fq_mat_t mat, flint_rand_t state, slong rank, const fq_ctx_t ctx) noexcept + void fq_mat_randops(fq_mat_t mat, slong count, flint_rand_t state, const fq_ctx_t ctx) noexcept + void fq_mat_randtril(fq_mat_t mat, flint_rand_t state, int unit, const fq_ctx_t ctx) noexcept + void fq_mat_randtriu(fq_mat_t mat, flint_rand_t state, int unit, const fq_ctx_t ctx) noexcept + bint fq_mat_equal(const fq_mat_t mat1, const fq_mat_t mat2, const fq_ctx_t ctx) noexcept + bint fq_mat_is_zero(const fq_mat_t mat, const fq_ctx_t ctx) noexcept + bint fq_mat_is_one(const fq_mat_t mat, const fq_ctx_t ctx) noexcept + bint fq_mat_is_empty(const fq_mat_t mat, const fq_ctx_t ctx) noexcept + bint fq_mat_is_square(const fq_mat_t mat, const fq_ctx_t ctx) noexcept + void fq_mat_add(fq_mat_t C, const fq_mat_t A, const fq_mat_t B, const fq_ctx_t ctx) noexcept + void fq_mat_sub(fq_mat_t C, const fq_mat_t A, const fq_mat_t B, const fq_ctx_t ctx) noexcept + void fq_mat_neg(fq_mat_t A, const fq_mat_t B, const fq_ctx_t ctx) noexcept + void fq_mat_mul(fq_mat_t C, const fq_mat_t A, const fq_mat_t B, const fq_ctx_t ctx) noexcept + void fq_mat_mul_classical(fq_mat_t C, const fq_mat_t A, const fq_mat_t B, const fq_ctx_t ctx) noexcept + void fq_mat_mul_KS(fq_mat_t C, const fq_mat_t A, const fq_mat_t B, const fq_ctx_t ctx) noexcept + void fq_mat_submul(fq_mat_t D, const fq_mat_t C, const fq_mat_t A, const fq_mat_t B, const fq_ctx_t ctx) noexcept + void fq_mat_mul_vec(fq_struct * c, const fq_mat_t A, const fq_struct * b, slong blen, const fq_ctx_t ctx) noexcept + void fq_mat_mul_vec_ptr(fq_struct * const * c, const fq_mat_t A, const fq_struct * const * b, slong blen, const fq_ctx_t ctx) noexcept + void fq_mat_vec_mul(fq_struct * c, const fq_struct * a, slong alen, const fq_mat_t B, const fq_ctx_t ctx) noexcept + void fq_mat_vec_mul_ptr(fq_struct * const * c, const fq_struct * const * a, slong alen, const fq_mat_t B, const fq_ctx_t ctx) noexcept + int fq_mat_inv(fq_mat_t B, fq_mat_t A, const fq_ctx_t ctx) noexcept + slong fq_mat_lu(slong * P, fq_mat_t A, int rank_check, const fq_ctx_t ctx) noexcept + slong fq_mat_lu_classical(slong * P, fq_mat_t A, int rank_check, const fq_ctx_t ctx) noexcept + slong fq_mat_lu_recursive(slong * P, fq_mat_t A, int rank_check, const fq_ctx_t ctx) noexcept + slong fq_mat_rref(fq_mat_t A, const fq_ctx_t ctx) noexcept + slong fq_mat_reduce_row(fq_mat_t A, slong * P, slong * L, slong n, const fq_ctx_t ctx) noexcept + void fq_mat_solve_tril(fq_mat_t X, const fq_mat_t L, const fq_mat_t B, int unit, const fq_ctx_t ctx) noexcept + void fq_mat_solve_tril_classical(fq_mat_t X, const fq_mat_t L, const fq_mat_t B, int unit, const fq_ctx_t ctx) noexcept + void fq_mat_solve_tril_recursive(fq_mat_t X, const fq_mat_t L, const fq_mat_t B, int unit, const fq_ctx_t ctx) noexcept + void fq_mat_solve_triu(fq_mat_t X, const fq_mat_t U, const fq_mat_t B, int unit, const fq_ctx_t ctx) noexcept + void fq_mat_solve_triu_classical(fq_mat_t X, const fq_mat_t U, const fq_mat_t B, int unit, const fq_ctx_t ctx) noexcept + void fq_mat_solve_triu_recursive(fq_mat_t X, const fq_mat_t U, const fq_mat_t B, int unit, const fq_ctx_t ctx) noexcept + int fq_mat_solve(fq_mat_t X, const fq_mat_t A, const fq_mat_t B, const fq_ctx_t ctx) noexcept + int fq_mat_can_solve(fq_mat_t X, const fq_mat_t A, const fq_mat_t B, const fq_ctx_t ctx) noexcept + void fq_mat_similarity(fq_mat_t M, slong r, fq_t d, const fq_ctx_t ctx) noexcept + void fq_mat_charpoly_danilevsky(fq_poly_t p, const fq_mat_t M, const fq_ctx_t ctx) noexcept + void fq_mat_charpoly(fq_poly_t p, const fq_mat_t M, const fq_ctx_t ctx) noexcept + void fq_mat_minpoly(fq_poly_t p, const fq_mat_t M, const fq_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_nmod.pxd b/src/sage/libs/flint/fq_nmod.pxd index 159aa4e4077..83085408d29 100644 --- a/src/sage/libs/flint/fq_nmod.pxd +++ b/src/sage/libs/flint/fq_nmod.pxd @@ -1,75 +1,93 @@ # distutils: libraries = flint # distutils: depends = flint/fq_nmod.h -from sage.libs.flint.types cimport fq_nmod_ctx_t, fq_nmod_t, fmpz_t, nmod_poly_t, slong, ulong +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ -# flint/fq_nmod.h -cdef extern from "flint_wrap.h": - void fq_nmod_ctx_init(fq_nmod_ctx_t ctx, const fmpz_t p, slong d, const char *var) - void fq_nmod_ctx_init_conway(fq_nmod_ctx_t ctx, const fmpz_t p, slong d, const char *var) - void fq_nmod_ctx_init_modulus(fq_nmod_ctx_t ctx, - nmod_poly_t modulus, - const char *var) - - void fq_nmod_ctx_clear(fq_nmod_ctx_t ctx) - - fmpz_t fq_nmod_ctx_prime(fq_nmod_ctx_t ctx) - slong fq_nmod_ctx_degree(const fq_nmod_ctx_t ctx) - void fq_nmod_ctx_order(fmpz_t f, const fq_nmod_ctx_t ctx) - - void fq_nmod_ctx_print(const fq_nmod_ctx_t ctx) - - # Memory managment - - void fq_nmod_init(fq_nmod_t rop, const fq_nmod_ctx_t ctx) - void fq_nmod_clear(fq_nmod_t rop, const fq_nmod_ctx_t ctx) - void fq_nmod_reduce(fq_nmod_t rop, const fq_nmod_ctx_t ctx) - - # Basic arithmetic - - void fq_nmod_add(fq_nmod_t rop, const fq_nmod_t op1, const fq_nmod_t op2, const fq_nmod_ctx_t ctx) - void fq_nmod_sub(fq_nmod_t rop, const fq_nmod_t op1, const fq_nmod_t op2, const fq_nmod_ctx_t ctx) - void fq_nmod_sub_one(fq_nmod_t rop, const fq_nmod_t op1, const fq_nmod_ctx_t ctx) - void fq_nmod_neg(fq_nmod_t rop, const fq_nmod_t op1, const fq_nmod_ctx_t ctx) - void fq_nmod_mul(fq_nmod_t rop, const fq_nmod_t op1, const fq_nmod_t op2, const fq_nmod_ctx_t ctx) - void fq_nmod_mul_fmpz(fq_nmod_t rop, const fq_nmod_t op, const fmpz_t x, const fq_nmod_ctx_t ctx) - void fq_nmod_mul_si(fq_nmod_t rop, const fq_nmod_t op, slong x, const fq_nmod_ctx_t ctx) - void fq_nmod_mul_ui(fq_nmod_t rop, const fq_nmod_t op, ulong x, const fq_nmod_ctx_t ctx) - void fq_nmod_sqr(fq_nmod_t rop, const fq_nmod_t op, const fq_nmod_ctx_t ctx) - void fq_nmod_inv(fq_nmod_t rop, const fq_nmod_t op1, const fq_nmod_ctx_t ctx) - void fq_nmod_gcdinv(fq_nmod_t rop, fq_nmod_t inv, const fq_nmod_t op, const fq_nmod_ctx_t ctx) - void fq_nmod_pow(fq_nmod_t rop, const fq_nmod_t op1, const fmpz_t e, const fq_nmod_ctx_t ctx) - void fq_nmod_pow_ui(fq_nmod_t rop, const fq_nmod_t op, const ulong e, const fq_nmod_ctx_t ctx) - void fq_nmod_pth_root(fq_nmod_t rop, const fq_nmod_t op1, const fq_nmod_ctx_t ctx) - - # Comparison +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * - int fq_nmod_equal(const fq_nmod_t op1, const fq_nmod_t op2, const fq_nmod_ctx_t ctx) - int fq_nmod_is_zero(const fq_nmod_t op, const fq_nmod_ctx_t ctx) - int fq_nmod_is_one(const fq_nmod_t op, const fq_nmod_ctx_t ctx) - - # Assignments and conversions - - void fq_nmod_set(fq_nmod_t rop, const fq_nmod_t op, const fq_nmod_ctx_t ctx) - void fq_nmod_set_fmpz(fq_nmod_t rop, const fmpz_t x, const fq_nmod_ctx_t ctx) - void fq_nmod_set_ui(fq_nmod_t rop, const ulong x, const fq_nmod_ctx_t ctx) - void fq_nmod_set_si(fq_nmod_t rop, const slong x, const fq_nmod_ctx_t ctx) - void fq_nmod_set_coeff_fmpz(fq_nmod_t rop, const fmpz_t x, const ulong n, const fq_nmod_ctx_t ctx) - void fq_nmod_swap(fq_nmod_t op1, fq_nmod_t op2, const fq_nmod_ctx_t ctx) - void fq_nmod_zero(fq_nmod_t rop, const fq_nmod_ctx_t ctx) - void fq_nmod_one(fq_nmod_t rop, const fq_nmod_ctx_t ctx) - void fq_nmod_gen(fq_nmod_t rop, const fq_nmod_ctx_t ctx) - - # Output - - void fq_nmod_print(const fq_nmod_t op, const fq_nmod_ctx_t ctx) - int fq_nmod_print_pretty(const fq_nmod_t op, const fq_nmod_ctx_t ctx) - - char * fq_nmod_get_str(const fq_nmod_t op, const fq_nmod_ctx_t ctx) - char * fq_nmod_get_str_pretty(const fq_nmod_t op, const fq_nmod_ctx_t ctx) - - # Special functions - - void fq_nmod_trace(fmpz_t rop, const fq_nmod_t op, const fq_nmod_ctx_t ctx) - void fq_nmod_frobenius(fq_nmod_t rop, const fq_nmod_t op, slong e, const fq_nmod_ctx_t ctx) - void fq_nmod_norm(fmpz_t rop, const fq_nmod_t op, const fq_nmod_ctx_t ctx) +cdef extern from "flint_wrap.h": + void fq_nmod_ctx_init(fq_nmod_ctx_t ctx, const fmpz_t p, slong d, const char * var) noexcept + int _fq_nmod_ctx_init_conway(fq_nmod_ctx_t ctx, const fmpz_t p, slong d, const char * var) noexcept + void fq_nmod_ctx_init_conway(fq_nmod_ctx_t ctx, const fmpz_t p, slong d, const char * var) noexcept + void fq_nmod_ctx_init_modulus(fq_nmod_ctx_t ctx, const nmod_poly_t modulus, const char * var) noexcept + void fq_nmod_ctx_clear(fq_nmod_ctx_t ctx) noexcept + const nmod_poly_struct* fq_nmod_ctx_modulus(const fq_nmod_ctx_t ctx) noexcept + slong fq_nmod_ctx_degree(const fq_nmod_ctx_t ctx) noexcept + fmpz * fq_nmod_ctx_prime(const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_ctx_order(fmpz_t f, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_ctx_fprint(FILE * file, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_ctx_print(const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_ctx_randtest(fq_nmod_ctx_t ctx, flint_rand_t state) noexcept + void fq_nmod_ctx_randtest_reducible(fq_nmod_ctx_t ctx, flint_rand_t state) noexcept + void fq_nmod_init(fq_nmod_t rop, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_init2(fq_nmod_t rop, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_clear(fq_nmod_t rop, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_sparse_reduce(mp_limb_t * R, slong lenR, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_dense_reduce(mp_limb_t * R, slong lenR, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_reduce(mp_limb_t * r, slong lenR, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_reduce(fq_nmod_t rop, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_add(fq_nmod_t rop, const fq_nmod_t op1, const fq_nmod_t op2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_sub(fq_nmod_t rop, const fq_nmod_t op1, const fq_nmod_t op2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_sub_one(fq_nmod_t rop, const fq_nmod_t op1, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_neg(fq_nmod_t rop, const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mul(fq_nmod_t rop, const fq_nmod_t op1, const fq_nmod_t op2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mul_fmpz(fq_nmod_t rop, const fq_nmod_t op, const fmpz_t x, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mul_si(fq_nmod_t rop, const fq_nmod_t op, slong x, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mul_ui(fq_nmod_t rop, const fq_nmod_t op, ulong x, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_sqr(fq_nmod_t rop, const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_inv(mp_ptr * rop, mp_srcptr * op, slong len, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_inv(fq_nmod_t rop, const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_gcdinv(fq_nmod_t f, fq_nmod_t inv, const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_pow(mp_limb_t * rop, const mp_limb_t * op, slong len, const fmpz_t e, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_pow(fq_nmod_t rop, const fq_nmod_t op, const fmpz_t e, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_pow_ui(fq_nmod_t rop, const fq_nmod_t op, const ulong e, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_sqrt(fq_nmod_t rop, const fq_nmod_t op1, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_pth_root(fq_nmod_t rop, const fq_nmod_t op1, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_is_square(const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_fprint_pretty(FILE * file, const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_print_pretty(const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_fprint(FILE * file, const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_print(const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + char * fq_nmod_get_str(const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + char * fq_nmod_get_str_pretty(const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_randtest(fq_nmod_t rop, flint_rand_t state, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_randtest_not_zero(fq_nmod_t rop, flint_rand_t state, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_randtest_dense(fq_nmod_t rop, flint_rand_t state, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_rand(fq_nmod_t rop, flint_rand_t state, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_rand_not_zero(fq_nmod_t rop, flint_rand_t state, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_set(fq_nmod_t rop, const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_set_si(fq_nmod_t rop, const slong x, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_set_ui(fq_nmod_t rop, const ulong x, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_set_fmpz(fq_nmod_t rop, const fmpz_t x, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_swap(fq_nmod_t op1, fq_nmod_t op2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_zero(fq_nmod_t rop, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_one(fq_nmod_t rop, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_gen(fq_nmod_t rop, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_get_fmpz(fmpz_t rop, const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_get_nmod_poly(nmod_poly_t a, const fq_nmod_t b, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_set_nmod_poly(fq_nmod_t a, const nmod_poly_t b, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_get_nmod_mat(nmod_mat_t col, const fq_nmod_t a, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_set_nmod_mat(fq_nmod_t a, const nmod_mat_t col, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_is_zero(const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_is_one(const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_equal(const fq_nmod_t op1, const fq_nmod_t op2, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_is_invertible(const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_is_invertible_f(fq_nmod_t f, const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_cmp(const fq_nmod_t a, const fq_nmod_t b, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_trace(fmpz_t rop, const mp_limb_t * op, slong len, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_trace(fmpz_t rop, const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_norm(fmpz_t rop, const mp_limb_t * op, slong len, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_norm(fmpz_t rop, const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_frobenius(mp_limb_t * rop, const mp_limb_t * op, slong len, slong e, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_frobenius(fq_nmod_t rop, const fq_nmod_t op, slong e, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_multiplicative_order(fmpz * ord, const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_is_primitive(const fq_nmod_t op, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_bit_pack(fmpz_t f, const fq_nmod_t op, flint_bitcnt_t bit_size, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_bit_unpack(fq_nmod_t rop, const fmpz_t f, flint_bitcnt_t bit_size, const fq_nmod_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_nmod_embed.pxd b/src/sage/libs/flint/fq_nmod_embed.pxd new file mode 100644 index 00000000000..6a7dbe52068 --- /dev/null +++ b/src/sage/libs/flint/fq_nmod_embed.pxd @@ -0,0 +1,26 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_nmod_embed.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_nmod_embed_gens(fq_nmod_t gen_sub, fq_nmod_t gen_sup, nmod_poly_t minpoly, const fq_nmod_ctx_t sub_ctx, const fq_nmod_ctx_t sup_ctx) noexcept + void _fq_nmod_embed_gens_naive(fq_nmod_t gen_sub, fq_nmod_t gen_sup, nmod_poly_t minpoly, const fq_nmod_ctx_t sub_ctx, const fq_nmod_ctx_t sup_ctx) noexcept + void fq_nmod_embed_matrices(nmod_mat_t embed, nmod_mat_t project, const fq_nmod_t gen_sub, const fq_nmod_ctx_t sub_ctx, const fq_nmod_t gen_sup, const fq_nmod_ctx_t sup_ctx, const nmod_poly_t gen_minpoly) noexcept + void fq_nmod_embed_trace_matrix(nmod_mat_t res, const nmod_mat_t basis, const fq_nmod_ctx_t sub_ctx, const fq_nmod_ctx_t sup_ctx) noexcept + void fq_nmod_embed_composition_matrix(nmod_mat_t matrix, const fq_nmod_t gen, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_embed_composition_matrix_sub(nmod_mat_t matrix, const fq_nmod_t gen, const fq_nmod_ctx_t ctx, slong trunc) noexcept + void fq_nmod_embed_mul_matrix(nmod_mat_t matrix, const fq_nmod_t gen, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_embed_mono_to_dual_matrix(nmod_mat_t res, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_embed_dual_to_mono_matrix(nmod_mat_t res, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_modulus_pow_series_inv(nmod_poly_t res, const fq_nmod_ctx_t ctx, slong trunc) noexcept + void fq_nmod_modulus_derivative_inv(fq_nmod_t m_prime, fq_nmod_t m_prime_inv, const fq_nmod_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_nmod_mat.pxd b/src/sage/libs/flint/fq_nmod_mat.pxd new file mode 100644 index 00000000000..7c9f8a92548 --- /dev/null +++ b/src/sage/libs/flint/fq_nmod_mat.pxd @@ -0,0 +1,81 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_nmod_mat.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_nmod_mat_init(fq_nmod_mat_t mat, slong rows, slong cols, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_init_set(fq_nmod_mat_t mat, const fq_nmod_mat_t src, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_clear(fq_nmod_mat_t mat, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_set(fq_nmod_mat_t mat, const fq_nmod_mat_t src, const fq_nmod_ctx_t ctx) noexcept + fq_nmod_struct * fq_nmod_mat_entry(const fq_nmod_mat_t mat, slong i, slong j) noexcept + void fq_nmod_mat_entry_set(fq_nmod_mat_t mat, slong i, slong j, const fq_nmod_t x, const fq_nmod_ctx_t ctx) noexcept + slong fq_nmod_mat_nrows(const fq_nmod_mat_t mat, const fq_nmod_ctx_t ctx) noexcept + slong fq_nmod_mat_ncols(const fq_nmod_mat_t mat, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_swap(fq_nmod_mat_t mat1, fq_nmod_mat_t mat2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_swap_entrywise(fq_nmod_mat_t mat1, fq_nmod_mat_t mat2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_zero(fq_nmod_mat_t mat, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_one(fq_nmod_mat_t mat, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_swap_rows(fq_nmod_mat_t mat, slong * perm, slong r, slong s, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_swap_cols(fq_nmod_mat_t mat, slong * perm, slong r, slong s, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_invert_rows(fq_nmod_mat_t mat, slong * perm, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_invert_cols(fq_nmod_mat_t mat, slong * perm, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_set_nmod_mat(fq_nmod_mat_t mat1, const nmod_mat_t mat2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_set_fmpz_mod_mat(fq_nmod_mat_t mat1, const fmpz_mod_mat_t mat2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_concat_vertical(fq_nmod_mat_t res, const fq_nmod_mat_t mat1, const fq_nmod_mat_t mat2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_concat_horizontal(fq_nmod_mat_t res, const fq_nmod_mat_t mat1, const fq_nmod_mat_t mat2, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_mat_print_pretty(const fq_nmod_mat_t mat, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_mat_fprint_pretty(FILE * file, const fq_nmod_mat_t mat, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_mat_print(const fq_nmod_mat_t mat, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_mat_fprint(FILE * file, const fq_nmod_mat_t mat, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_window_init(fq_nmod_mat_t window, const fq_nmod_mat_t mat, slong r1, slong c1, slong r2, slong c2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_window_clear(fq_nmod_mat_t window, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_randtest(fq_nmod_mat_t mat, flint_rand_t state, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_mat_randpermdiag(fq_nmod_mat_t mat, flint_rand_t state, fq_nmod_struct * diag, slong n, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_randrank(fq_nmod_mat_t mat, flint_rand_t state, slong rank, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_randops(fq_nmod_mat_t mat, slong count, flint_rand_t state, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_randtril(fq_nmod_mat_t mat, flint_rand_t state, int unit, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_randtriu(fq_nmod_mat_t mat, flint_rand_t state, int unit, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_mat_equal(const fq_nmod_mat_t mat1, const fq_nmod_mat_t mat2, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_mat_is_zero(const fq_nmod_mat_t mat, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_mat_is_one(const fq_nmod_mat_t mat, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_mat_is_empty(const fq_nmod_mat_t mat, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_mat_is_square(const fq_nmod_mat_t mat, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_add(fq_nmod_mat_t C, const fq_nmod_mat_t A, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_sub(fq_nmod_mat_t C, const fq_nmod_mat_t A, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_neg(fq_nmod_mat_t A, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_mul(fq_nmod_mat_t C, const fq_nmod_mat_t A, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_mul_classical(fq_nmod_mat_t C, const fq_nmod_mat_t A, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_mul_KS(fq_nmod_mat_t C, const fq_nmod_mat_t A, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_submul(fq_nmod_mat_t D, const fq_nmod_mat_t C, const fq_nmod_mat_t A, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_mul_vec(fq_nmod_struct * c, const fq_nmod_mat_t A, const fq_nmod_struct * b, slong blen, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_mul_vec_ptr(fq_nmod_struct * const * c, const fq_nmod_mat_t A, const fq_nmod_struct * const * b, slong blen, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_vec_mul(fq_nmod_struct * c, const fq_nmod_struct * a, slong alen, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_vec_mul_ptr(fq_nmod_struct * const * c, const fq_nmod_struct * const * a, slong alen, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_mat_inv(fq_nmod_mat_t B, fq_nmod_mat_t A, const fq_nmod_ctx_t ctx) noexcept + slong fq_nmod_mat_lu(slong * P, fq_nmod_mat_t A, int rank_check, const fq_nmod_ctx_t ctx) noexcept + slong fq_nmod_mat_lu_classical(slong * P, fq_nmod_mat_t A, int rank_check, const fq_nmod_ctx_t ctx) noexcept + slong fq_nmod_mat_lu_recursive(slong * P, fq_nmod_mat_t A, int rank_check, const fq_nmod_ctx_t ctx) noexcept + slong fq_nmod_mat_rref(fq_nmod_mat_t A, const fq_nmod_ctx_t ctx) noexcept + slong fq_nmod_mat_reduce_row(fq_nmod_mat_t A, slong * P, slong * L, slong n, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_solve_tril(fq_nmod_mat_t X, const fq_nmod_mat_t L, const fq_nmod_mat_t B, int unit, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_solve_tril_classical(fq_nmod_mat_t X, const fq_nmod_mat_t L, const fq_nmod_mat_t B, int unit, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_solve_tril_recursive(fq_nmod_mat_t X, const fq_nmod_mat_t L, const fq_nmod_mat_t B, int unit, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_solve_triu(fq_nmod_mat_t X, const fq_nmod_mat_t U, const fq_nmod_mat_t B, int unit, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_solve_triu_classical(fq_nmod_mat_t X, const fq_nmod_mat_t U, const fq_nmod_mat_t B, int unit, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_solve_triu_recursive(fq_nmod_mat_t X, const fq_nmod_mat_t U, const fq_nmod_mat_t B, int unit, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_mat_solve(fq_nmod_mat_t X, const fq_nmod_mat_t A, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_mat_can_solve(fq_nmod_mat_t X, const fq_nmod_mat_t A, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_similarity(fq_nmod_mat_t M, slong r, fq_nmod_t d, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_charpoly_danilevsky(fq_nmod_poly_t p, const fq_nmod_mat_t M, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_charpoly(fq_nmod_poly_t p, const fq_nmod_mat_t M, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_mat_minpoly(fq_nmod_poly_t p, const fq_nmod_mat_t M, const fq_nmod_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_nmod_mpoly.pxd b/src/sage/libs/flint/fq_nmod_mpoly.pxd new file mode 100644 index 00000000000..eeddd4e9053 --- /dev/null +++ b/src/sage/libs/flint/fq_nmod_mpoly.pxd @@ -0,0 +1,128 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_nmod_mpoly.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_nmod_mpoly_ctx_init(fq_nmod_mpoly_ctx_t ctx, slong nvars, const ordering_t ord, const fq_nmod_ctx_t fqctx) noexcept + slong fq_nmod_mpoly_ctx_nvars(const fq_nmod_mpoly_ctx_t ctx) noexcept + ordering_t fq_nmod_mpoly_ctx_ord(const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_ctx_clear(fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_init(fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_init2(fq_nmod_mpoly_t A, slong alloc, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_init3(fq_nmod_mpoly_t A, slong alloc, flint_bitcnt_t bits, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_fit_length(fq_nmod_mpoly_t A, slong len, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_realloc(fq_nmod_mpoly_t A, slong alloc, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_clear(fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + char * fq_nmod_mpoly_get_str_pretty(const fq_nmod_mpoly_t A, const char ** x, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_fprint_pretty(FILE * file, const fq_nmod_mpoly_t A, const char ** x, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_print_pretty(const fq_nmod_mpoly_t A, const char ** x, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_set_str_pretty(fq_nmod_mpoly_t A, const char * str, const char ** x, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_gen(fq_nmod_mpoly_t A, slong var, const fq_nmod_mpoly_ctx_t ctx) noexcept + bint fq_nmod_mpoly_is_gen(const fq_nmod_mpoly_t A, slong var, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_set(fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_ctx_t ctx) noexcept + bint fq_nmod_mpoly_equal(const fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_swap(fq_nmod_mpoly_t A, fq_nmod_mpoly_t B, const fq_nmod_mpoly_ctx_t ctx) noexcept + bint fq_nmod_mpoly_is_fq_nmod(const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_get_fq_nmod(fq_nmod_t c, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_set_fq_nmod(fq_nmod_mpoly_t A, const fq_nmod_t c, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_set_ui(fq_nmod_mpoly_t A, ulong c, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_set_fq_nmod_gen(fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_zero(fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_one(fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + bint fq_nmod_mpoly_equal_fq_nmod(const fq_nmod_mpoly_t A, const fq_nmod_t c, const fq_nmod_mpoly_ctx_t ctx) noexcept + bint fq_nmod_mpoly_is_zero(const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + bint fq_nmod_mpoly_is_one(const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_degrees_fit_si(const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_degrees_fmpz(fmpz ** degs, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_degrees_si(slong * degs, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_degree_fmpz(fmpz_t deg, const fq_nmod_mpoly_t A, slong var, const fq_nmod_mpoly_ctx_t ctx) noexcept + slong fq_nmod_mpoly_degree_si(const fq_nmod_mpoly_t A, slong var, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_total_degree_fits_si(const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_total_degree_fmpz(fmpz_t tdeg, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + slong fq_nmod_mpoly_total_degree_si(const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_used_vars(int * used, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_get_coeff_fq_nmod_monomial(fq_nmod_t c, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_t M, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_set_coeff_fq_nmod_monomial(fq_nmod_mpoly_t A, const fq_nmod_t c, const fq_nmod_mpoly_t M, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_get_coeff_fq_nmod_fmpz(fq_nmod_t c, const fq_nmod_mpoly_t A, fmpz * const * exp, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_get_coeff_fq_nmod_ui(fq_nmod_t c, const fq_nmod_mpoly_t A, const ulong * exp, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_set_coeff_fq_nmod_fmpz(fq_nmod_mpoly_t A, const fq_nmod_t c, fmpz * const * exp, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_set_coeff_fq_nmod_ui(fq_nmod_mpoly_t A, const fq_nmod_t c, const ulong * exp, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_get_coeff_vars_ui(fq_nmod_mpoly_t C, const fq_nmod_mpoly_t A, const slong * vars, const ulong * exps, slong length, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_cmp(const fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_ctx_t ctx) noexcept + bint fq_nmod_mpoly_is_canonical(const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + slong fq_nmod_mpoly_length(const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_resize(fq_nmod_mpoly_t A, slong new_length, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_get_term_coeff_fq_nmod(fq_nmod_t c, const fq_nmod_mpoly_t A, slong i, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_set_term_coeff_ui(fq_nmod_mpoly_t A, slong i, ulong c, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_term_exp_fits_si(const fq_nmod_mpoly_t A, slong i, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_term_exp_fits_ui(const fq_nmod_mpoly_t A, slong i, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_get_term_exp_fmpz(fmpz ** exp, const fq_nmod_mpoly_t A, slong i, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_get_term_exp_ui(ulong * exp, const fq_nmod_mpoly_t A, slong i, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_get_term_exp_si(slong * exp, const fq_nmod_mpoly_t A, slong i, const fq_nmod_mpoly_ctx_t ctx) noexcept + ulong fq_nmod_mpoly_get_term_var_exp_ui(const fq_nmod_mpoly_t A, slong i, slong var, const fq_nmod_mpoly_ctx_t ctx) noexcept + slong fq_nmod_mpoly_get_term_var_exp_si(const fq_nmod_mpoly_t A, slong i, slong var, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_set_term_exp_fmpz(fq_nmod_mpoly_t A, slong i, fmpz * const * exp, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_set_term_exp_ui(fq_nmod_mpoly_t A, slong i, const ulong * exp, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_get_term(fq_nmod_mpoly_t M, const fq_nmod_mpoly_t A, slong i, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_get_term_monomial(fq_nmod_mpoly_t M, const fq_nmod_mpoly_t A, slong i, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_push_term_fq_nmod_fmpz(fq_nmod_mpoly_t A, const fq_nmod_t c, fmpz * const * exp, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_push_term_fq_nmod_ffmpz(fq_nmod_mpoly_t A, const fq_nmod_t c, const fmpz * exp, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_push_term_fq_nmod_ui(fq_nmod_mpoly_t A, const fq_nmod_t c, const ulong * exp, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_sort_terms(fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_combine_like_terms(fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_reverse(fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_randtest_bound(fq_nmod_mpoly_t A, flint_rand_t state, slong length, ulong exp_bound, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_randtest_bounds(fq_nmod_mpoly_t A, flint_rand_t state, slong length, ulong * exp_bounds, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_randtest_bits(fq_nmod_mpoly_t A, flint_rand_t state, slong length, mp_limb_t exp_bits, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_add_fq_nmod(fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_t C, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_sub_fq_nmod(fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_t C, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_add(fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_t C, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_sub(fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_t C, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_neg(fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_scalar_mul_fq_nmod(fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_t c, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_make_monic(fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_derivative(fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, slong var, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_evaluate_all_fq_nmod(fq_nmod_t ev, const fq_nmod_mpoly_t A, fq_nmod_struct * const * vals, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_evaluate_one_fq_nmod(fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, slong var, const fq_nmod_t val, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_compose_fq_nmod_poly(fq_nmod_poly_t A, const fq_nmod_mpoly_t B, fq_nmod_poly_struct * const * C, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_compose_fq_nmod_mpoly(fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, fq_nmod_mpoly_struct * const * C, const fq_nmod_mpoly_ctx_t ctxB, const fq_nmod_mpoly_ctx_t ctxAC) noexcept + void fq_nmod_mpoly_compose_fq_nmod_mpoly_gen(fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const slong * c, const fq_nmod_mpoly_ctx_t ctxB, const fq_nmod_mpoly_ctx_t ctxAC) noexcept + void fq_nmod_mpoly_mul(fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_t C, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_pow_fmpz(fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fmpz_t k, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_pow_ui(fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, ulong k, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_divides(fq_nmod_mpoly_t Q, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_div(fq_nmod_mpoly_t Q, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_divrem(fq_nmod_mpoly_t Q, fq_nmod_mpoly_t R, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_divrem_ideal(fq_nmod_mpoly_struct ** Q, fq_nmod_mpoly_t R, const fq_nmod_mpoly_t A, fq_nmod_mpoly_struct * const * B, slong len, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_term_content(fq_nmod_mpoly_t M, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_content_vars(fq_nmod_mpoly_t g, const fq_nmod_mpoly_t A, slong * vars, slong vars_length, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_gcd(fq_nmod_mpoly_t G, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_gcd_cofactors(fq_nmod_mpoly_t G, fq_nmod_mpoly_t Abar, fq_nmod_mpoly_t Bbar, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_gcd_brown(fq_nmod_mpoly_t G, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_gcd_hensel(fq_nmod_mpoly_t G, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_gcd_zippel(fq_nmod_mpoly_t G, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_resultant(fq_nmod_mpoly_t R, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, slong var, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_discriminant(fq_nmod_mpoly_t D, const fq_nmod_mpoly_t A, slong var, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_sqrt(fq_nmod_mpoly_t Q, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + bint fq_nmod_mpoly_is_square(const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_quadratic_root(fq_nmod_mpoly_t Q, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_univar_init(fq_nmod_mpoly_univar_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_univar_clear(fq_nmod_mpoly_univar_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_univar_swap(fq_nmod_mpoly_univar_t A, fq_nmod_mpoly_univar_t B, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_to_univar(fq_nmod_mpoly_univar_t A, const fq_nmod_mpoly_t B, slong var, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_from_univar(fq_nmod_mpoly_t A, const fq_nmod_mpoly_univar_t B, slong var, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_univar_degree_fits_si(const fq_nmod_mpoly_univar_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + slong fq_nmod_mpoly_univar_length(const fq_nmod_mpoly_univar_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + slong fq_nmod_mpoly_univar_get_term_exp_si(fq_nmod_mpoly_univar_t A, slong i, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_univar_get_term_coeff(fq_nmod_mpoly_t c, const fq_nmod_mpoly_univar_t A, slong i, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_univar_swap_term_coeff(fq_nmod_mpoly_t c, fq_nmod_mpoly_univar_t A, slong i, const fq_nmod_mpoly_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_nmod_mpoly_factor.pxd b/src/sage/libs/flint/fq_nmod_mpoly_factor.pxd new file mode 100644 index 00000000000..a5419d1c4be --- /dev/null +++ b/src/sage/libs/flint/fq_nmod_mpoly_factor.pxd @@ -0,0 +1,26 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_nmod_mpoly_factor.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_nmod_mpoly_factor_init(fq_nmod_mpoly_factor_t f, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_factor_clear(fq_nmod_mpoly_factor_t f, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_factor_swap(fq_nmod_mpoly_factor_t f, fq_nmod_mpoly_factor_t g, const fq_nmod_mpoly_ctx_t ctx) noexcept + slong fq_nmod_mpoly_factor_length(const fq_nmod_mpoly_factor_t f, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_factor_get_constant_fq_nmod(fq_nmod_t c, const fq_nmod_mpoly_factor_t f, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_factor_get_base(fq_nmod_mpoly_t p, const fq_nmod_mpoly_factor_t f, slong i, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_factor_swap_base(fq_nmod_mpoly_t p, const fq_nmod_mpoly_factor_t f, slong i, const fq_nmod_mpoly_ctx_t ctx) noexcept + slong fq_nmod_mpoly_factor_get_exp_si(fq_nmod_mpoly_factor_t f, slong i, const fq_nmod_mpoly_ctx_t ctx) noexcept + void fq_nmod_mpoly_factor_sort(fq_nmod_mpoly_factor_t f, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_factor_squarefree(fq_nmod_mpoly_factor_t f, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept + int fq_nmod_mpoly_factor(fq_nmod_mpoly_factor_t f, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_nmod_poly.pxd b/src/sage/libs/flint/fq_nmod_poly.pxd new file mode 100644 index 00000000000..13440cd550f --- /dev/null +++ b/src/sage/libs/flint/fq_nmod_poly.pxd @@ -0,0 +1,200 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_nmod_poly.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_nmod_poly_init(fq_nmod_poly_t poly, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_init2(fq_nmod_poly_t poly, slong alloc, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_realloc(fq_nmod_poly_t poly, slong alloc, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_fit_length(fq_nmod_poly_t poly, slong len, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_set_length(fq_nmod_poly_t poly, slong newlen, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_clear(fq_nmod_poly_t poly, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_normalise(fq_nmod_poly_t poly, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_normalise2(const fq_nmod_struct * poly, slong * length, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_truncate(fq_nmod_poly_t poly, slong newlen, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_set_trunc(fq_nmod_poly_t poly1, fq_nmod_poly_t poly2, slong newlen, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_reverse(fq_nmod_struct * output, const fq_nmod_struct * input, slong len, slong m, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_reverse(fq_nmod_poly_t output, const fq_nmod_poly_t input, slong m, const fq_nmod_ctx_t ctx) noexcept + slong fq_nmod_poly_degree(const fq_nmod_poly_t poly, const fq_nmod_ctx_t ctx) noexcept + slong fq_nmod_poly_length(const fq_nmod_poly_t poly, const fq_nmod_ctx_t ctx) noexcept + fq_nmod_struct * fq_nmod_poly_lead(const fq_nmod_poly_t poly, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_randtest(fq_nmod_poly_t f, flint_rand_t state, slong len, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_randtest_not_zero(fq_nmod_poly_t f, flint_rand_t state, slong len, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_randtest_monic(fq_nmod_poly_t f, flint_rand_t state, slong len, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_randtest_irreducible(fq_nmod_poly_t f, flint_rand_t state, slong len, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_set(fq_nmod_struct * rop, const fq_nmod_struct * op, slong len, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_set(fq_nmod_poly_t poly1, const fq_nmod_poly_t poly2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_set_fq_nmod(fq_nmod_poly_t poly, const fq_nmod_t c, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_set_fmpz_mod_poly(fq_nmod_poly_t rop, const fmpz_mod_poly_t op, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_set_nmod_poly(fq_nmod_poly_t rop, const nmod_poly_t op, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_swap(fq_nmod_poly_t op1, fq_nmod_poly_t op2, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_zero(fq_nmod_struct * rop, slong len, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_zero(fq_nmod_poly_t poly, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_one(fq_nmod_poly_t poly, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_gen(fq_nmod_poly_t poly, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_make_monic(fq_nmod_poly_t rop, const fq_nmod_poly_t op, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_make_monic(fq_nmod_struct * rop, const fq_nmod_struct * op, slong length, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_get_coeff(fq_nmod_t x, const fq_nmod_poly_t poly, slong n, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_set_coeff(fq_nmod_poly_t poly, slong n, const fq_nmod_t x, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_set_coeff_fmpz(fq_nmod_poly_t poly, slong n, const fmpz_t x, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_poly_equal(const fq_nmod_poly_t poly1, const fq_nmod_poly_t poly2, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_poly_equal_trunc(const fq_nmod_poly_t poly1, const fq_nmod_poly_t poly2, slong n, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_poly_is_zero(const fq_nmod_poly_t poly, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_poly_is_one(const fq_nmod_poly_t op, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_poly_is_gen(const fq_nmod_poly_t op, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_poly_is_unit(const fq_nmod_poly_t op, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_poly_equal_fq_nmod(const fq_nmod_poly_t poly, const fq_nmod_t c, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_add(fq_nmod_struct * res, const fq_nmod_struct * poly1, slong len1, const fq_nmod_struct * poly2, slong len2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_add(fq_nmod_poly_t res, const fq_nmod_poly_t poly1, const fq_nmod_poly_t poly2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_add_si(fq_nmod_poly_t res, const fq_nmod_poly_t poly1, slong c, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_add_series(fq_nmod_poly_t res, const fq_nmod_poly_t poly1, const fq_nmod_poly_t poly2, slong n, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_sub(fq_nmod_struct * res, const fq_nmod_struct * poly1, slong len1, const fq_nmod_struct * poly2, slong len2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_sub(fq_nmod_poly_t res, const fq_nmod_poly_t poly1, const fq_nmod_poly_t poly2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_sub_series(fq_nmod_poly_t res, const fq_nmod_poly_t poly1, const fq_nmod_poly_t poly2, slong n, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_neg(fq_nmod_struct * rop, const fq_nmod_struct * op, slong len, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_neg(fq_nmod_poly_t res, const fq_nmod_poly_t poly, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_scalar_mul_fq_nmod(fq_nmod_struct * rop, const fq_nmod_struct * op, slong len, const fq_nmod_t x, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_scalar_mul_fq_nmod(fq_nmod_poly_t rop, const fq_nmod_poly_t op, const fq_nmod_t x, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_scalar_addmul_fq_nmod(fq_nmod_struct * rop, const fq_nmod_struct * op, slong len, const fq_nmod_t x, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_scalar_addmul_fq_nmod(fq_nmod_poly_t rop, const fq_nmod_poly_t op, const fq_nmod_t x, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_scalar_submul_fq_nmod(fq_nmod_struct * rop, const fq_nmod_struct * op, slong len, const fq_nmod_t x, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_scalar_submul_fq_nmod(fq_nmod_poly_t rop, const fq_nmod_poly_t op, const fq_nmod_t x, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_scalar_div_fq(fq_nmod_struct * rop, const fq_nmod_struct * op, slong len, const fq_nmod_t x, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_scalar_div_fq(fq_nmod_poly_t rop, const fq_nmod_poly_t op, const fq_nmod_t x, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_mul_classical(fq_nmod_struct * rop, const fq_nmod_struct * op1, slong len1, const fq_nmod_struct * op2, slong len2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_mul_classical(fq_nmod_poly_t rop, const fq_nmod_poly_t op1, const fq_nmod_poly_t op2, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_mul_reorder(fq_nmod_struct * rop, const fq_nmod_struct * op1, slong len1, const fq_nmod_struct * op2, slong len2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_mul_reorder(fq_nmod_poly_t rop, const fq_nmod_poly_t op1, const fq_nmod_poly_t op2, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_mul_univariate(fq_nmod_struct * rop, const fq_nmod_struct * op1, slong len1, const fq_nmod_struct * op2, slong len2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_mul_univariate(fq_nmod_poly_t rop, const fq_nmod_poly_t op1, const fq_nmod_poly_t op2, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_mul_KS(fq_nmod_struct * rop, const fq_nmod_struct * op1, slong len1, const fq_nmod_struct * op2, slong len2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_mul_KS(fq_nmod_poly_t rop, const fq_nmod_poly_t op1, const fq_nmod_poly_t op2, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_mul(fq_nmod_struct * rop, const fq_nmod_struct * op1, slong len1, const fq_nmod_struct * op2, slong len2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_mul(fq_nmod_poly_t rop, const fq_nmod_poly_t op1, const fq_nmod_poly_t op2, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_mullow_classical(fq_nmod_struct * rop, const fq_nmod_struct * op1, slong len1, const fq_nmod_struct * op2, slong len2, slong n, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_mullow_classical(fq_nmod_poly_t rop, const fq_nmod_poly_t op1, const fq_nmod_poly_t op2, slong n, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_mullow_univariate(fq_nmod_struct * rop, const fq_nmod_struct * op1, slong len1, const fq_nmod_struct * op2, slong len2, slong n, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_mullow_univariate(fq_nmod_poly_t rop, const fq_nmod_poly_t op1, const fq_nmod_poly_t op2, slong n, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_mullow_KS(fq_nmod_struct * rop, const fq_nmod_struct * op1, slong len1, const fq_nmod_struct * op2, slong len2, slong n, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_mullow_KS(fq_nmod_poly_t rop, const fq_nmod_poly_t op1, const fq_nmod_poly_t op2, slong n, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_mullow(fq_nmod_struct * rop, const fq_nmod_struct * op1, slong len1, const fq_nmod_struct * op2, slong len2, slong n, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_mullow(fq_nmod_poly_t rop, const fq_nmod_poly_t op1, const fq_nmod_poly_t op2, slong n, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_mulhigh_classical(fq_nmod_struct * res, const fq_nmod_struct * poly1, slong len1, const fq_nmod_struct * poly2, slong len2, slong start, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_mulhigh_classical(fq_nmod_poly_t res, const fq_nmod_poly_t poly1, const fq_nmod_poly_t poly2, slong start, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_mulhigh(fq_nmod_struct * res, const fq_nmod_struct * poly1, slong len1, const fq_nmod_struct * poly2, slong len2, slong start, fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_mulhigh(fq_nmod_poly_t res, const fq_nmod_poly_t poly1, const fq_nmod_poly_t poly2, slong start, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_mulmod(fq_nmod_struct * res, const fq_nmod_struct * poly1, slong len1, const fq_nmod_struct * poly2, slong len2, const fq_nmod_struct * f, slong lenf, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_mulmod(fq_nmod_poly_t res, const fq_nmod_poly_t poly1, const fq_nmod_poly_t poly2, const fq_nmod_poly_t f, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_mulmod_preinv(fq_nmod_struct * res, const fq_nmod_struct * poly1, slong len1, const fq_nmod_struct * poly2, slong len2, const fq_nmod_struct * f, slong lenf, const fq_nmod_struct * finv, slong lenfinv, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_mulmod_preinv(fq_nmod_poly_t res, const fq_nmod_poly_t poly1, const fq_nmod_poly_t poly2, const fq_nmod_poly_t f, const fq_nmod_poly_t finv, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_sqr_classical(fq_nmod_struct * rop, const fq_nmod_struct * op, slong len, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_sqr_classical(fq_nmod_poly_t rop, const fq_nmod_poly_t op, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_sqr_KS(fq_nmod_struct * rop, const fq_nmod_struct * op, slong len, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_sqr_KS(fq_nmod_poly_t rop, const fq_nmod_poly_t op, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_sqr(fq_nmod_struct * rop, const fq_nmod_struct * op, slong len, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_sqr(fq_nmod_poly_t rop, const fq_nmod_poly_t op, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_pow(fq_nmod_struct * rop, const fq_nmod_struct * op, slong len, ulong e, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_pow(fq_nmod_poly_t rop, const fq_nmod_poly_t op, ulong e, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_powmod_ui_binexp(fq_nmod_struct * res, const fq_nmod_struct * poly, ulong e, const fq_nmod_struct * f, slong lenf, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_powmod_ui_binexp(fq_nmod_poly_t res, const fq_nmod_poly_t poly, ulong e, const fq_nmod_poly_t f, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_powmod_ui_binexp_preinv(fq_nmod_struct * res, const fq_nmod_struct * poly, ulong e, const fq_nmod_struct * f, slong lenf, const fq_nmod_struct * finv, slong lenfinv, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_powmod_ui_binexp_preinv(fq_nmod_poly_t res, const fq_nmod_poly_t poly, ulong e, const fq_nmod_poly_t f, const fq_nmod_poly_t finv, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_powmod_fmpz_binexp(fq_nmod_struct * res, const fq_nmod_struct * poly, const fmpz_t e, const fq_nmod_struct * f, slong lenf, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_powmod_fmpz_binexp(fq_nmod_poly_t res, const fq_nmod_poly_t poly, const fmpz_t e, const fq_nmod_poly_t f, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_powmod_fmpz_binexp_preinv(fq_nmod_struct * res, const fq_nmod_struct * poly, const fmpz_t e, const fq_nmod_struct * f, slong lenf, const fq_nmod_struct * finv, slong lenfinv, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_powmod_fmpz_binexp_preinv(fq_nmod_poly_t res, const fq_nmod_poly_t poly, const fmpz_t e, const fq_nmod_poly_t f, const fq_nmod_poly_t finv, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_powmod_fmpz_sliding_preinv(fq_nmod_struct * res, const fq_nmod_struct * poly, const fmpz_t e, ulong k, const fq_nmod_struct * f, slong lenf, const fq_nmod_struct * finv, slong lenfinv, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_powmod_fmpz_sliding_preinv(fq_nmod_poly_t res, const fq_nmod_poly_t poly, const fmpz_t e, ulong k, const fq_nmod_poly_t f, const fq_nmod_poly_t finv, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_powmod_x_fmpz_preinv(fq_nmod_struct * res, const fmpz_t e, const fq_nmod_struct * f, slong lenf, const fq_nmod_struct * finv, slong lenfinv, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_powmod_x_fmpz_preinv(fq_nmod_poly_t res, const fmpz_t e, const fq_nmod_poly_t f, const fq_nmod_poly_t finv, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_pow_trunc_binexp(fq_nmod_struct * res, const fq_nmod_struct * poly, ulong e, slong trunc, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_pow_trunc_binexp(fq_nmod_poly_t res, const fq_nmod_poly_t poly, ulong e, slong trunc, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_pow_trunc(fq_nmod_struct * res, const fq_nmod_struct * poly, ulong e, slong trunc, const fq_nmod_ctx_t mod) noexcept + void fq_nmod_poly_pow_trunc(fq_nmod_poly_t res, const fq_nmod_poly_t poly, ulong e, slong trunc, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_shift_left(fq_nmod_struct * rop, const fq_nmod_struct * op, slong len, slong n, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_shift_left(fq_nmod_poly_t rop, const fq_nmod_poly_t op, slong n, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_shift_right(fq_nmod_struct * rop, const fq_nmod_struct * op, slong len, slong n, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_shift_right(fq_nmod_poly_t rop, const fq_nmod_poly_t op, slong n, const fq_nmod_ctx_t ctx) noexcept + slong _fq_nmod_poly_hamming_weight(const fq_nmod_struct * op, slong len, const fq_nmod_ctx_t ctx) noexcept + slong fq_nmod_poly_hamming_weight(const fq_nmod_poly_t op, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_divrem(fq_nmod_struct * Q, fq_nmod_struct * R, const fq_nmod_struct * A, slong lenA, const fq_nmod_struct * B, slong lenB, const fq_nmod_t invB, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_divrem(fq_nmod_poly_t Q, fq_nmod_poly_t R, const fq_nmod_poly_t A, const fq_nmod_poly_t B, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_divrem_f(fq_nmod_t f, fq_nmod_poly_t Q, fq_nmod_poly_t R, const fq_nmod_poly_t A, const fq_nmod_poly_t B, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_rem(fq_nmod_struct * R, const fq_nmod_struct * A, slong lenA, const fq_nmod_struct * B, slong lenB, const fq_nmod_t invB, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_rem(fq_nmod_poly_t R, const fq_nmod_poly_t A, const fq_nmod_poly_t B, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_div(fq_nmod_struct * Q, const fq_nmod_struct * A, slong lenA, const fq_nmod_struct * B, slong lenB, const fq_nmod_t invB, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_div(fq_nmod_poly_t Q, const fq_nmod_poly_t A, const fq_nmod_poly_t B, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_div_newton_n_preinv(fq_nmod_struct * Q, const fq_nmod_struct * A, slong lenA, const fq_nmod_struct * B, slong lenB, const fq_nmod_struct * Binv, slong lenBinv, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_div_newton_n_preinv(fq_nmod_poly_t Q, const fq_nmod_poly_t A, const fq_nmod_poly_t B, const fq_nmod_poly_t Binv, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_divrem_newton_n_preinv(fq_nmod_struct * Q, fq_nmod_struct * R, const fq_nmod_struct * A, slong lenA, const fq_nmod_struct * B, slong lenB, const fq_nmod_struct * Binv, slong lenBinv, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_divrem_newton_n_preinv(fq_nmod_poly_t Q, fq_nmod_poly_t R, const fq_nmod_poly_t A, const fq_nmod_poly_t B, const fq_nmod_poly_t Binv, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_inv_series_newton(fq_nmod_struct * Qinv, const fq_nmod_struct * Q, slong n, const fq_nmod_t cinv, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_inv_series_newton(fq_nmod_poly_t Qinv, const fq_nmod_poly_t Q, slong n, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_inv_series(fq_nmod_struct * Qinv, const fq_nmod_struct * Q, slong n, const fq_nmod_t cinv, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_inv_series(fq_nmod_poly_t Qinv, const fq_nmod_poly_t Q, slong n, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_div_series(fq_nmod_struct * Q, const fq_nmod_struct * A, mp_limb_signed_t Alen, const fq_nmod_struct * B, mp_limb_signed_t Blen, mp_limb_signed_t n, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_div_series(fq_nmod_poly_t Q, const fq_nmod_poly_t A, const fq_nmod_poly_t B, slong n, fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_gcd(fq_nmod_poly_t rop, const fq_nmod_poly_t op1, const fq_nmod_poly_t op2, const fq_nmod_ctx_t ctx) noexcept + slong _fq_nmod_poly_gcd(fq_nmod_struct * G, const fq_nmod_struct * A, slong lenA, const fq_nmod_struct * B, slong lenB, const fq_nmod_ctx_t ctx) noexcept + slong _fq_nmod_poly_gcd_euclidean_f(fq_nmod_t f, fq_nmod_struct * G, const fq_nmod_struct * A, slong lenA, const fq_nmod_struct * B, slong lenB, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_gcd_euclidean_f(fq_nmod_t f, fq_nmod_poly_t G, const fq_nmod_poly_t A, const fq_nmod_poly_t B, const fq_nmod_ctx_t ctx) noexcept + slong _fq_nmod_poly_xgcd(fq_nmod_struct * G, fq_nmod_struct * S, fq_nmod_struct * T, const fq_nmod_struct * A, slong lenA, const fq_nmod_struct * B, slong lenB, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_xgcd(fq_nmod_poly_t G, fq_nmod_poly_t S, fq_nmod_poly_t T, const fq_nmod_poly_t A, const fq_nmod_poly_t B, const fq_nmod_ctx_t ctx) noexcept + slong _fq_nmod_poly_xgcd_euclidean_f(fq_nmod_t f, fq_nmod_struct * G, fq_nmod_struct * S, fq_nmod_struct * T, const fq_nmod_struct * A, slong lenA, const fq_nmod_struct * B, slong lenB, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_xgcd_euclidean_f(fq_nmod_t f, fq_nmod_poly_t G, fq_nmod_poly_t S, fq_nmod_poly_t T, const fq_nmod_poly_t A, const fq_nmod_poly_t B, const fq_nmod_ctx_t ctx) noexcept + int _fq_nmod_poly_divides(fq_nmod_struct * Q, const fq_nmod_struct * A, slong lenA, const fq_nmod_struct * B, slong lenB, const fq_nmod_t invB, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_poly_divides(fq_nmod_poly_t Q, const fq_nmod_poly_t A, const fq_nmod_poly_t B, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_derivative(fq_nmod_struct * rop, const fq_nmod_struct * op, slong len, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_derivative(fq_nmod_poly_t rop, const fq_nmod_poly_t op, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_invsqrt_series(fq_nmod_struct * g, const fq_nmod_struct * h, slong n, fq_nmod_ctx_t mod) noexcept + void fq_nmod_poly_invsqrt_series(fq_nmod_poly_t g, const fq_nmod_poly_t h, slong n, fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_sqrt_series(fq_nmod_struct * g, const fq_nmod_struct * h, slong n, fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_sqrt_series(fq_nmod_poly_t g, const fq_nmod_poly_t h, slong n, fq_nmod_ctx_t ctx) noexcept + int _fq_nmod_poly_sqrt(fq_nmod_struct * s, const fq_nmod_struct * p, slong n, fq_nmod_ctx_t mod) noexcept + int fq_nmod_poly_sqrt(fq_nmod_poly_t s, const fq_nmod_poly_t p, fq_nmod_ctx_t mod) noexcept + void _fq_nmod_poly_evaluate_fq_nmod(fq_nmod_t rop, const fq_nmod_struct * op, slong len, const fq_nmod_t a, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_evaluate_fq_nmod(fq_nmod_t rop, const fq_nmod_poly_t f, const fq_nmod_t a, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_compose(fq_nmod_struct * rop, const fq_nmod_struct * op1, slong len1, const fq_nmod_struct * op2, slong len2, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_compose(fq_nmod_poly_t rop, const fq_nmod_poly_t op1, const fq_nmod_poly_t op2, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_compose_mod_horner(fq_nmod_struct * res, const fq_nmod_struct * f, slong lenf, const fq_nmod_struct * g, const fq_nmod_struct * h, slong lenh, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_compose_mod_horner(fq_nmod_poly_t res, const fq_nmod_poly_t f, const fq_nmod_poly_t g, const fq_nmod_poly_t h, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_compose_mod_horner_preinv(fq_nmod_struct * res, const fq_nmod_struct * f, slong lenf, const fq_nmod_struct * g, const fq_nmod_struct * h, slong lenh, const fq_nmod_struct * hinv, slong lenhiv, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_compose_mod_horner_preinv(fq_nmod_poly_t res, const fq_nmod_poly_t f, const fq_nmod_poly_t g, const fq_nmod_poly_t h, const fq_nmod_poly_t hinv, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_compose_mod_brent_kung(fq_nmod_struct * res, const fq_nmod_struct * f, slong lenf, const fq_nmod_struct * g, const fq_nmod_struct * h, slong lenh, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_compose_mod_brent_kung(fq_nmod_poly_t res, const fq_nmod_poly_t f, const fq_nmod_poly_t g, const fq_nmod_poly_t h, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_compose_mod_brent_kung_preinv(fq_nmod_struct * res, const fq_nmod_struct * f, slong lenf, const fq_nmod_struct * g, const fq_nmod_struct * h, slong lenh, const fq_nmod_struct * hinv, slong lenhiv, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_compose_mod_brent_kung_preinv(fq_nmod_poly_t res, const fq_nmod_poly_t f, const fq_nmod_poly_t g, const fq_nmod_poly_t h, const fq_nmod_poly_t hinv, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_compose_mod(fq_nmod_struct * res, const fq_nmod_struct * f, slong lenf, const fq_nmod_struct * g, const fq_nmod_struct * h, slong lenh, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_compose_mod(fq_nmod_poly_t res, const fq_nmod_poly_t f, const fq_nmod_poly_t g, const fq_nmod_poly_t h, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_compose_mod_preinv(fq_nmod_struct * res, const fq_nmod_struct * f, slong lenf, const fq_nmod_struct * g, const fq_nmod_struct * h, slong lenh, const fq_nmod_struct * hinv, slong lenhiv, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_compose_mod_preinv(fq_nmod_poly_t res, const fq_nmod_poly_t f, const fq_nmod_poly_t g, const fq_nmod_poly_t h, const fq_nmod_poly_t hinv, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_reduce_matrix_mod_poly (fq_nmod_mat_t A, const fq_nmod_mat_t B, const fq_nmod_poly_t f, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_precompute_matrix (fq_nmod_mat_t A, const fq_nmod_struct * f, const fq_nmod_struct * g, slong leng, const fq_nmod_struct * ginv, slong lenginv, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_precompute_matrix (fq_nmod_mat_t A, const fq_nmod_poly_t f, const fq_nmod_poly_t g, const fq_nmod_poly_t ginv, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_poly_compose_mod_brent_kung_precomp_preinv(fq_nmod_struct * res, const fq_nmod_struct * f, slong lenf, const fq_nmod_mat_t A, const fq_nmod_struct * h, slong lenh, const fq_nmod_struct * hinv, slong lenhinv, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_compose_mod_brent_kung_precomp_preinv(fq_nmod_poly_t res, const fq_nmod_poly_t f, const fq_nmod_mat_t A, const fq_nmod_poly_t h, const fq_nmod_poly_t hinv, const fq_nmod_ctx_t ctx) noexcept + int _fq_nmod_poly_fprint_pretty(FILE * file, const fq_nmod_struct * poly, slong len, const char * x, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_poly_fprint_pretty(FILE * file, const fq_nmod_poly_t poly, const char * x, const fq_nmod_ctx_t ctx) noexcept + int _fq_nmod_poly_print_pretty(const fq_nmod_struct * poly, slong len, const char * x, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_poly_print_pretty(const fq_nmod_poly_t poly, const char * x, const fq_nmod_ctx_t ctx) noexcept + int _fq_nmod_poly_fprint(FILE * file, const fq_nmod_struct * poly, slong len, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_poly_fprint(FILE * file, const fq_nmod_poly_t poly, const fq_nmod_ctx_t ctx) noexcept + int _fq_nmod_poly_print(const fq_nmod_struct * poly, slong len, const fq_nmod_ctx_t ctx) noexcept + int fq_nmod_poly_print(const fq_nmod_poly_t poly, const fq_nmod_ctx_t ctx) noexcept + char * _fq_nmod_poly_get_str(const fq_nmod_struct * poly, slong len, const fq_nmod_ctx_t ctx) noexcept + char * fq_nmod_poly_get_str(const fq_nmod_poly_t poly, const fq_nmod_ctx_t ctx) noexcept + char * _fq_nmod_poly_get_str_pretty(const fq_nmod_struct * poly, slong len, const char * x, const fq_nmod_ctx_t ctx) noexcept + char * fq_nmod_poly_get_str_pretty(const fq_nmod_poly_t poly, const char * x, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_inflate(fq_nmod_poly_t result, const fq_nmod_poly_t input, ulong inflation, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_deflate(fq_nmod_poly_t result, const fq_nmod_poly_t input, ulong deflation, const fq_nmod_ctx_t ctx) noexcept + ulong fq_nmod_poly_deflation(const fq_nmod_poly_t input, const fq_nmod_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_nmod_poly_factor.pxd b/src/sage/libs/flint/fq_nmod_poly_factor.pxd new file mode 100644 index 00000000000..da8dd3686a0 --- /dev/null +++ b/src/sage/libs/flint/fq_nmod_poly_factor.pxd @@ -0,0 +1,45 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_nmod_poly_factor.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_nmod_poly_factor_init(fq_nmod_poly_factor_t fac, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_clear(fq_nmod_poly_factor_t fac, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_realloc(fq_nmod_poly_factor_t fac, slong alloc, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_fit_length(fq_nmod_poly_factor_t fac, slong len, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_set(fq_nmod_poly_factor_t res, const fq_nmod_poly_factor_t fac, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_print_pretty(const fq_nmod_poly_factor_t fac, const char * var, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_print(const fq_nmod_poly_factor_t fac, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_insert(fq_nmod_poly_factor_t fac, const fq_nmod_poly_t poly, slong exp, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_concat(fq_nmod_poly_factor_t res, const fq_nmod_poly_factor_t fac, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_pow(fq_nmod_poly_factor_t fac, slong exp, const fq_nmod_ctx_t ctx) noexcept + ulong fq_nmod_poly_remove(fq_nmod_poly_t f, const fq_nmod_poly_t p, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_poly_is_irreducible(const fq_nmod_poly_t f, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_poly_is_irreducible_ddf(const fq_nmod_poly_t f, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_poly_is_irreducible_ben_or(const fq_nmod_poly_t f, const fq_nmod_ctx_t ctx) noexcept + bint _fq_nmod_poly_is_squarefree(const fq_nmod_struct * f, slong len, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_poly_is_squarefree(const fq_nmod_poly_t f, const fq_nmod_ctx_t ctx) noexcept + bint fq_nmod_poly_factor_equal_deg_prob(fq_nmod_poly_t factor, flint_rand_t state, const fq_nmod_poly_t pol, slong d, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_equal_deg(fq_nmod_poly_factor_t factors, const fq_nmod_poly_t pol, slong d, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_split_single(fq_nmod_poly_t linfactor, const fq_nmod_poly_t input, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_distinct_deg(fq_nmod_poly_factor_t res, const fq_nmod_poly_t poly, slong * const * degs, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_squarefree(fq_nmod_poly_factor_t res, const fq_nmod_poly_t f, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor(fq_nmod_poly_factor_t res, fq_nmod_t lead, const fq_nmod_poly_t f, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_cantor_zassenhaus(fq_nmod_poly_factor_t res, const fq_nmod_poly_t f, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_kaltofen_shoup(fq_nmod_poly_factor_t res, const fq_nmod_poly_t poly, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_berlekamp(fq_nmod_poly_factor_t factors, const fq_nmod_poly_t f, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_with_berlekamp(fq_nmod_poly_factor_t res, fq_nmod_t leading_coeff, const fq_nmod_poly_t f, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_with_cantor_zassenhaus(fq_nmod_poly_factor_t res, fq_nmod_t leading_coeff, const fq_nmod_poly_t f, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_factor_with_kaltofen_shoup(fq_nmod_poly_factor_t res, fq_nmod_t leading_coeff, const fq_nmod_poly_t f, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_iterated_frobenius_preinv(fq_nmod_poly_t * rop, slong n, const fq_nmod_poly_t v, const fq_nmod_poly_t vinv, const fq_nmod_ctx_t ctx) noexcept + void fq_nmod_poly_roots(fq_nmod_poly_factor_t r, const fq_nmod_poly_t f, int with_multiplicity, const fq_nmod_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_nmod_vec.pxd b/src/sage/libs/flint/fq_nmod_vec.pxd new file mode 100644 index 00000000000..6c68e8e169f --- /dev/null +++ b/src/sage/libs/flint/fq_nmod_vec.pxd @@ -0,0 +1,31 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_nmod_vec.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + fq_nmod_struct * _fq_nmod_vec_init(slong len, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_vec_clear(fq_nmod_struct * vec, slong len, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_vec_randtest(fq_nmod_struct * f, flint_rand_t state, slong len, const fq_nmod_ctx_t ctx) noexcept + int _fq_nmod_vec_fprint(FILE * file, const fq_nmod_struct * vec, slong len, const fq_nmod_ctx_t ctx) noexcept + int _fq_nmod_vec_print(const fq_nmod_struct * vec, slong len, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_vec_set(fq_nmod_struct * vec1, const fq_nmod_struct * vec2, slong len2, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_vec_swap(fq_nmod_struct * vec1, fq_nmod_struct * vec2, slong len2, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_vec_zero(fq_nmod_struct * vec, slong len, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_vec_neg(fq_nmod_struct * vec1, const fq_nmod_struct * vec2, slong len2, const fq_nmod_ctx_t ctx) noexcept + bint _fq_nmod_vec_equal(const fq_nmod_struct * vec1, const fq_nmod_struct * vec2, slong len, const fq_nmod_ctx_t ctx) noexcept + bint _fq_nmod_vec_is_zero(const fq_nmod_struct * vec, slong len, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_vec_add(fq_nmod_struct * res, const fq_nmod_struct * vec1, const fq_nmod_struct * vec2, slong len2, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_vec_sub(fq_nmod_struct * res, const fq_nmod_struct * vec1, const fq_nmod_struct * vec2, slong len2, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_vec_scalar_addmul_fq_nmod(fq_nmod_struct * vec1, const fq_nmod_struct * vec2, slong len2, const fq_nmod_t c, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_vec_scalar_submul_fq_nmod(fq_nmod_struct * vec1, const fq_nmod_struct * vec2, slong len2, const fq_nmod_t c, const fq_nmod_ctx_t ctx) noexcept + void _fq_nmod_vec_dot(fq_nmod_t res, const fq_nmod_struct * vec1, const fq_nmod_struct * vec2, slong len2, const fq_nmod_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_poly.pxd b/src/sage/libs/flint/fq_poly.pxd new file mode 100644 index 00000000000..2010796af67 --- /dev/null +++ b/src/sage/libs/flint/fq_poly.pxd @@ -0,0 +1,202 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_poly.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_poly_init(fq_poly_t poly, const fq_ctx_t ctx) noexcept + void fq_poly_init2(fq_poly_t poly, slong alloc, const fq_ctx_t ctx) noexcept + void fq_poly_realloc(fq_poly_t poly, slong alloc, const fq_ctx_t ctx) noexcept + void fq_poly_fit_length(fq_poly_t poly, slong len, const fq_ctx_t ctx) noexcept + void _fq_poly_set_length(fq_poly_t poly, slong newlen, const fq_ctx_t ctx) noexcept + void fq_poly_clear(fq_poly_t poly, const fq_ctx_t ctx) noexcept + void _fq_poly_normalise(fq_poly_t poly, const fq_ctx_t ctx) noexcept + void _fq_poly_normalise2(const fq_struct * poly, slong * length, const fq_ctx_t ctx) noexcept + void fq_poly_truncate(fq_poly_t poly, slong newlen, const fq_ctx_t ctx) noexcept + void fq_poly_set_trunc(fq_poly_t poly1, fq_poly_t poly2, slong newlen, const fq_ctx_t ctx) noexcept + void _fq_poly_reverse(fq_struct * output, const fq_struct * input, slong len, slong m, const fq_ctx_t ctx) noexcept + void fq_poly_reverse(fq_poly_t output, const fq_poly_t input, slong m, const fq_ctx_t ctx) noexcept + slong fq_poly_degree(const fq_poly_t poly, const fq_ctx_t ctx) noexcept + slong fq_poly_length(const fq_poly_t poly, const fq_ctx_t ctx) noexcept + fq_struct * fq_poly_lead(const fq_poly_t poly, const fq_ctx_t ctx) noexcept + void fq_poly_randtest(fq_poly_t f, flint_rand_t state, slong len, const fq_ctx_t ctx) noexcept + void fq_poly_randtest_not_zero(fq_poly_t f, flint_rand_t state, slong len, const fq_ctx_t ctx) noexcept + void fq_poly_randtest_monic(fq_poly_t f, flint_rand_t state, slong len, const fq_ctx_t ctx) noexcept + void fq_poly_randtest_irreducible(fq_poly_t f, flint_rand_t state, slong len, const fq_ctx_t ctx) noexcept + void _fq_poly_set(fq_struct * rop, const fq_struct * op, slong len, const fq_ctx_t ctx) noexcept + void fq_poly_set(fq_poly_t poly1, const fq_poly_t poly2, const fq_ctx_t ctx) noexcept + void fq_poly_set_fq(fq_poly_t poly, const fq_t c, const fq_ctx_t ctx) noexcept + void fq_poly_set_fmpz_mod_poly(fq_poly_t rop, const fmpz_mod_poly_t op, const fq_ctx_t ctx) noexcept + void fq_poly_set_nmod_poly(fq_poly_t rop, const nmod_poly_t op, const fq_ctx_t ctx) noexcept + void fq_poly_swap(fq_poly_t op1, fq_poly_t op2, const fq_ctx_t ctx) noexcept + void _fq_poly_zero(fq_struct * rop, slong len, const fq_ctx_t ctx) noexcept + void fq_poly_zero(fq_poly_t poly, const fq_ctx_t ctx) noexcept + void fq_poly_one(fq_poly_t poly, const fq_ctx_t ctx) noexcept + void fq_poly_gen(fq_poly_t poly, const fq_ctx_t ctx) noexcept + void fq_poly_make_monic(fq_poly_t rop, const fq_poly_t op, const fq_ctx_t ctx) noexcept + void _fq_poly_make_monic(fq_struct * rop, const fq_struct * op, slong length, const fq_ctx_t ctx) noexcept + void fq_poly_get_coeff(fq_t x, const fq_poly_t poly, slong n, const fq_ctx_t ctx) noexcept + void fq_poly_set_coeff(fq_poly_t poly, slong n, const fq_t x, const fq_ctx_t ctx) noexcept + void fq_poly_set_coeff_fmpz(fq_poly_t poly, slong n, const fmpz_t x, const fq_ctx_t ctx) noexcept + bint fq_poly_equal(const fq_poly_t poly1, const fq_poly_t poly2, const fq_ctx_t ctx) noexcept + bint fq_poly_equal_trunc(const fq_poly_t poly1, const fq_poly_t poly2, slong n, const fq_ctx_t ctx) noexcept + bint fq_poly_is_zero(const fq_poly_t poly, const fq_ctx_t ctx) noexcept + bint fq_poly_is_one(const fq_poly_t op, const fq_ctx_t ctx) noexcept + bint fq_poly_is_gen(const fq_poly_t op, const fq_ctx_t ctx) noexcept + bint fq_poly_is_unit(const fq_poly_t op, const fq_ctx_t ctx) noexcept + bint fq_poly_equal_fq(const fq_poly_t poly, const fq_t c, const fq_ctx_t ctx) noexcept + void _fq_poly_add(fq_struct * res, const fq_struct * poly1, slong len1, const fq_struct * poly2, slong len2, const fq_ctx_t ctx) noexcept + void fq_poly_add(fq_poly_t res, const fq_poly_t poly1, const fq_poly_t poly2, const fq_ctx_t ctx) noexcept + void fq_poly_add_si(fq_poly_t res, const fq_poly_t poly1, slong c, const fq_ctx_t ctx) noexcept + void fq_poly_add_series(fq_poly_t res, const fq_poly_t poly1, const fq_poly_t poly2, slong n, const fq_ctx_t ctx) noexcept + void _fq_poly_sub(fq_struct * res, const fq_struct * poly1, slong len1, const fq_struct * poly2, slong len2, const fq_ctx_t ctx) noexcept + void fq_poly_sub(fq_poly_t res, const fq_poly_t poly1, const fq_poly_t poly2, const fq_ctx_t ctx) noexcept + void fq_poly_sub_series(fq_poly_t res, const fq_poly_t poly1, const fq_poly_t poly2, slong n, const fq_ctx_t ctx) noexcept + void _fq_poly_neg(fq_struct * rop, const fq_struct * op, slong len, const fq_ctx_t ctx) noexcept + void fq_poly_neg(fq_poly_t res, const fq_poly_t poly, const fq_ctx_t ctx) noexcept + void _fq_poly_scalar_mul_fq(fq_struct * rop, const fq_struct * op, slong len, const fq_t x, const fq_ctx_t ctx) noexcept + void fq_poly_scalar_mul_fq(fq_poly_t rop, const fq_poly_t op, const fq_t x, const fq_ctx_t ctx) noexcept + void _fq_poly_scalar_addmul_fq(fq_struct * rop, const fq_struct * op, slong len, const fq_t x, const fq_ctx_t ctx) noexcept + void fq_poly_scalar_addmul_fq(fq_poly_t rop, const fq_poly_t op, const fq_t x, const fq_ctx_t ctx) noexcept + void _fq_poly_scalar_submul_fq(fq_struct * rop, const fq_struct * op, slong len, const fq_t x, const fq_ctx_t ctx) noexcept + void fq_poly_scalar_submul_fq(fq_poly_t rop, const fq_poly_t op, const fq_t x, const fq_ctx_t ctx) noexcept + void _fq_poly_scalar_div_fq(fq_struct * rop, const fq_struct * op, slong len, const fq_t x, const fq_ctx_t ctx) noexcept + void fq_poly_scalar_div_fq(fq_poly_t rop, const fq_poly_t op, const fq_t x, const fq_ctx_t ctx) noexcept + void _fq_poly_mul_classical(fq_struct * rop, const fq_struct * op1, slong len1, const fq_struct * op2, slong len2, const fq_ctx_t ctx) noexcept + void fq_poly_mul_classical(fq_poly_t rop, const fq_poly_t op1, const fq_poly_t op2, const fq_ctx_t ctx) noexcept + void _fq_poly_mul_reorder(fq_struct * rop, const fq_struct * op1, slong len1, const fq_struct * op2, slong len2, const fq_ctx_t ctx) noexcept + void fq_poly_mul_reorder(fq_poly_t rop, const fq_poly_t op1, const fq_poly_t op2, const fq_ctx_t ctx) noexcept + void _fq_poly_mul_univariate(fq_struct * rop, const fq_struct * op1, slong len1, const fq_struct * op2, slong len2, const fq_ctx_t ctx) noexcept + void fq_poly_mul_univariate(fq_poly_t rop, const fq_poly_t op1, const fq_poly_t op2, const fq_ctx_t ctx) noexcept + void _fq_poly_mul_KS(fq_struct * rop, const fq_struct * op1, slong len1, const fq_struct * op2, slong len2, const fq_ctx_t ctx) noexcept + void fq_poly_mul_KS(fq_poly_t rop, const fq_poly_t op1, const fq_poly_t op2, const fq_ctx_t ctx) noexcept + void _fq_poly_mul(fq_struct * rop, const fq_struct * op1, slong len1, const fq_struct * op2, slong len2, const fq_ctx_t ctx) noexcept + void fq_poly_mul(fq_poly_t rop, const fq_poly_t op1, const fq_poly_t op2, const fq_ctx_t ctx) noexcept + void _fq_poly_mullow_classical(fq_struct * rop, const fq_struct * op1, slong len1, const fq_struct * op2, slong len2, slong n, const fq_ctx_t ctx) noexcept + void fq_poly_mullow_classical(fq_poly_t rop, const fq_poly_t op1, const fq_poly_t op2, slong n, const fq_ctx_t ctx) noexcept + void _fq_poly_mullow_univariate(fq_struct * rop, const fq_struct * op1, slong len1, const fq_struct * op2, slong len2, slong n, const fq_ctx_t ctx) noexcept + void fq_poly_mullow_univariate(fq_poly_t rop, const fq_poly_t op1, const fq_poly_t op2, slong n, const fq_ctx_t ctx) noexcept + void _fq_poly_mullow_KS(fq_struct * rop, const fq_struct * op1, slong len1, const fq_struct * op2, slong len2, slong n, const fq_ctx_t ctx) noexcept + void fq_poly_mullow_KS(fq_poly_t rop, const fq_poly_t op1, const fq_poly_t op2, slong n, const fq_ctx_t ctx) noexcept + void _fq_poly_mullow(fq_struct * rop, const fq_struct * op1, slong len1, const fq_struct * op2, slong len2, slong n, const fq_ctx_t ctx) noexcept + void fq_poly_mullow(fq_poly_t rop, const fq_poly_t op1, const fq_poly_t op2, slong n, const fq_ctx_t ctx) noexcept + void _fq_poly_mulhigh_classical(fq_struct * res, const fq_struct * poly1, slong len1, const fq_struct * poly2, slong len2, slong start, const fq_ctx_t ctx) noexcept + void fq_poly_mulhigh_classical(fq_poly_t res, const fq_poly_t poly1, const fq_poly_t poly2, slong start, const fq_ctx_t ctx) noexcept + void _fq_poly_mulhigh(fq_struct * res, const fq_struct * poly1, slong len1, const fq_struct * poly2, slong len2, slong start, fq_ctx_t ctx) noexcept + void fq_poly_mulhigh(fq_poly_t res, const fq_poly_t poly1, const fq_poly_t poly2, slong start, const fq_ctx_t ctx) noexcept + void _fq_poly_mulmod(fq_struct * res, const fq_struct * poly1, slong len1, const fq_struct * poly2, slong len2, const fq_struct * f, slong lenf, const fq_ctx_t ctx) noexcept + void fq_poly_mulmod(fq_poly_t res, const fq_poly_t poly1, const fq_poly_t poly2, const fq_poly_t f, const fq_ctx_t ctx) noexcept + void _fq_poly_mulmod_preinv(fq_struct * res, const fq_struct * poly1, slong len1, const fq_struct * poly2, slong len2, const fq_struct * f, slong lenf, const fq_struct * finv, slong lenfinv, const fq_ctx_t ctx) noexcept + void fq_poly_mulmod_preinv(fq_poly_t res, const fq_poly_t poly1, const fq_poly_t poly2, const fq_poly_t f, const fq_poly_t finv, const fq_ctx_t ctx) noexcept + void _fq_poly_sqr_classical(fq_struct * rop, const fq_struct * op, slong len, const fq_ctx_t ctx) noexcept + void fq_poly_sqr_classical(fq_poly_t rop, const fq_poly_t op, const fq_ctx_t ctx) noexcept + void _fq_poly_sqr_reorder(fq_struct * rop, const fq_struct * op, slong len, const fq_ctx_t ctx) noexcept + void fq_poly_sqr_reorder(fq_poly_t rop, const fq_poly_t op, const fq_ctx_t ctx) noexcept + void _fq_poly_sqr_KS(fq_struct * rop, const fq_struct * op, slong len, const fq_ctx_t ctx) noexcept + void fq_poly_sqr_KS(fq_poly_t rop, const fq_poly_t op, const fq_ctx_t ctx) noexcept + void _fq_poly_sqr(fq_struct * rop, const fq_struct * op, slong len, const fq_ctx_t ctx) noexcept + void fq_poly_sqr(fq_poly_t rop, const fq_poly_t op, const fq_ctx_t ctx) noexcept + void _fq_poly_pow(fq_struct * rop, const fq_struct * op, slong len, ulong e, const fq_ctx_t ctx) noexcept + void fq_poly_pow(fq_poly_t rop, const fq_poly_t op, ulong e, const fq_ctx_t ctx) noexcept + void _fq_poly_powmod_ui_binexp(fq_struct * res, const fq_struct * poly, ulong e, const fq_struct * f, slong lenf, const fq_ctx_t ctx) noexcept + void fq_poly_powmod_ui_binexp(fq_poly_t res, const fq_poly_t poly, ulong e, const fq_poly_t f, const fq_ctx_t ctx) noexcept + void _fq_poly_powmod_ui_binexp_preinv(fq_struct * res, const fq_struct * poly, ulong e, const fq_struct * f, slong lenf, const fq_struct * finv, slong lenfinv, const fq_ctx_t ctx) noexcept + void fq_poly_powmod_ui_binexp_preinv(fq_poly_t res, const fq_poly_t poly, ulong e, const fq_poly_t f, const fq_poly_t finv, const fq_ctx_t ctx) noexcept + void _fq_poly_powmod_fmpz_binexp(fq_struct * res, const fq_struct * poly, const fmpz_t e, const fq_struct * f, slong lenf, const fq_ctx_t ctx) noexcept + void fq_poly_powmod_fmpz_binexp(fq_poly_t res, const fq_poly_t poly, const fmpz_t e, const fq_poly_t f, const fq_ctx_t ctx) noexcept + void _fq_poly_powmod_fmpz_binexp_preinv(fq_struct * res, const fq_struct * poly, const fmpz_t e, const fq_struct * f, slong lenf, const fq_struct * finv, slong lenfinv, const fq_ctx_t ctx) noexcept + void fq_poly_powmod_fmpz_binexp_preinv(fq_poly_t res, const fq_poly_t poly, const fmpz_t e, const fq_poly_t f, const fq_poly_t finv, const fq_ctx_t ctx) noexcept + void _fq_poly_powmod_fmpz_sliding_preinv(fq_struct * res, const fq_struct * poly, const fmpz_t e, ulong k, const fq_struct * f, slong lenf, const fq_struct * finv, slong lenfinv, const fq_ctx_t ctx) noexcept + void fq_poly_powmod_fmpz_sliding_preinv(fq_poly_t res, const fq_poly_t poly, const fmpz_t e, ulong k, const fq_poly_t f, const fq_poly_t finv, const fq_ctx_t ctx) noexcept + void _fq_poly_powmod_x_fmpz_preinv(fq_struct * res, const fmpz_t e, const fq_struct * f, slong lenf, const fq_struct * finv, slong lenfinv, const fq_ctx_t ctx) noexcept + void fq_poly_powmod_x_fmpz_preinv(fq_poly_t res, const fmpz_t e, const fq_poly_t f, const fq_poly_t finv, const fq_ctx_t ctx) noexcept + void _fq_poly_pow_trunc_binexp(fq_struct * res, const fq_struct * poly, ulong e, slong trunc, const fq_ctx_t ctx) noexcept + void fq_poly_pow_trunc_binexp(fq_poly_t res, const fq_poly_t poly, ulong e, slong trunc, const fq_ctx_t ctx) noexcept + void _fq_poly_pow_trunc(fq_struct * res, const fq_struct * poly, ulong e, slong trunc, const fq_ctx_t mod) noexcept + void fq_poly_pow_trunc(fq_poly_t res, const fq_poly_t poly, ulong e, slong trunc, const fq_ctx_t ctx) noexcept + void _fq_poly_shift_left(fq_struct * rop, const fq_struct * op, slong len, slong n, const fq_ctx_t ctx) noexcept + void fq_poly_shift_left(fq_poly_t rop, const fq_poly_t op, slong n, const fq_ctx_t ctx) noexcept + void _fq_poly_shift_right(fq_struct * rop, const fq_struct * op, slong len, slong n, const fq_ctx_t ctx) noexcept + void fq_poly_shift_right(fq_poly_t rop, const fq_poly_t op, slong n, const fq_ctx_t ctx) noexcept + slong _fq_poly_hamming_weight(const fq_struct * op, slong len, const fq_ctx_t ctx) noexcept + slong fq_poly_hamming_weight(const fq_poly_t op, const fq_ctx_t ctx) noexcept + void _fq_poly_divrem(fq_struct * Q, fq_struct * R, const fq_struct * A, slong lenA, const fq_struct * B, slong lenB, const fq_t invB, const fq_ctx_t ctx) noexcept + void fq_poly_divrem(fq_poly_t Q, fq_poly_t R, const fq_poly_t A, const fq_poly_t B, const fq_ctx_t ctx) noexcept + void fq_poly_divrem_f(fq_t f, fq_poly_t Q, fq_poly_t R, const fq_poly_t A, const fq_poly_t B, const fq_ctx_t ctx) noexcept + void _fq_poly_rem(fq_struct * R, const fq_struct * A, slong lenA, const fq_struct * B, slong lenB, const fq_t invB, const fq_ctx_t ctx) noexcept + void fq_poly_rem(fq_poly_t R, const fq_poly_t A, const fq_poly_t B, const fq_ctx_t ctx) noexcept + void _fq_poly_div(fq_struct * Q, const fq_struct * A, slong lenA, const fq_struct * B, slong lenB, const fq_t invB, const fq_ctx_t ctx) noexcept + void fq_poly_div(fq_poly_t Q, const fq_poly_t A, const fq_poly_t B, const fq_ctx_t ctx) noexcept + void _fq_poly_div_newton_n_preinv(fq_struct * Q, const fq_struct * A, slong lenA, const fq_struct * B, slong lenB, const fq_struct * Binv, slong lenBinv, const fq_ctx_t ctx) noexcept + void fq_poly_div_newton_n_preinv(fq_poly_t Q, const fq_poly_t A, const fq_poly_t B, const fq_poly_t Binv, const fq_ctx_t ctx) noexcept + void _fq_poly_divrem_newton_n_preinv(fq_struct * Q, fq_struct * R, const fq_struct * A, slong lenA, const fq_struct * B, slong lenB, const fq_struct * Binv, slong lenBinv, const fq_ctx_t ctx) noexcept + void fq_poly_divrem_newton_n_preinv(fq_poly_t Q, fq_poly_t R, const fq_poly_t A, const fq_poly_t B, const fq_poly_t Binv, const fq_ctx_t ctx) noexcept + void _fq_poly_inv_series_newton(fq_struct * Qinv, const fq_struct * Q, slong n, const fq_t cinv, const fq_ctx_t ctx) noexcept + void fq_poly_inv_series_newton(fq_poly_t Qinv, const fq_poly_t Q, slong n, const fq_ctx_t ctx) noexcept + void _fq_poly_inv_series(fq_struct * Qinv, const fq_struct * Q, slong n, const fq_t cinv, const fq_ctx_t ctx) noexcept + void fq_poly_inv_series(fq_poly_t Qinv, const fq_poly_t Q, slong n, const fq_ctx_t ctx) noexcept + void _fq_poly_div_series(fq_struct * Q, const fq_struct * A, slong Alen, const fq_struct * B, slong Blen, slong n, const fq_ctx_t ctx) noexcept + void fq_poly_div_series(fq_poly_t Q, const fq_poly_t A, const fq_poly_t B, slong n, const fq_ctx_t ctx) noexcept + void fq_poly_gcd(fq_poly_t rop, const fq_poly_t op1, const fq_poly_t op2, const fq_ctx_t ctx) noexcept + slong _fq_poly_gcd(fq_struct * G, const fq_struct * A, slong lenA, const fq_struct * B, slong lenB, const fq_ctx_t ctx) noexcept + slong _fq_poly_gcd_euclidean_f(fq_t f, fq_struct * G, const fq_struct * A, slong lenA, const fq_struct * B, slong lenB, const fq_ctx_t ctx) noexcept + void fq_poly_gcd_euclidean_f(fq_t f, fq_poly_t G, const fq_poly_t A, const fq_poly_t B, const fq_ctx_t ctx) noexcept + slong _fq_poly_xgcd(fq_struct * G, fq_struct * S, fq_struct * T, const fq_struct * A, slong lenA, const fq_struct * B, slong lenB, const fq_ctx_t ctx) noexcept + void fq_poly_xgcd(fq_poly_t G, fq_poly_t S, fq_poly_t T, const fq_poly_t A, const fq_poly_t B, const fq_ctx_t ctx) noexcept + slong _fq_poly_xgcd_euclidean_f(fq_t f, fq_struct * G, fq_struct * S, fq_struct * T, const fq_struct * A, slong lenA, const fq_struct * B, slong lenB, const fq_ctx_t ctx) noexcept + void fq_poly_xgcd_euclidean_f(fq_t f, fq_poly_t G, fq_poly_t S, fq_poly_t T, const fq_poly_t A, const fq_poly_t B, const fq_ctx_t ctx) noexcept + int _fq_poly_divides(fq_struct * Q, const fq_struct * A, slong lenA, const fq_struct * B, slong lenB, const fq_t invB, const fq_ctx_t ctx) noexcept + int fq_poly_divides(fq_poly_t Q, const fq_poly_t A, const fq_poly_t B, const fq_ctx_t ctx) noexcept + void _fq_poly_derivative(fq_struct * rop, const fq_struct * op, slong len, const fq_ctx_t ctx) noexcept + void fq_poly_derivative(fq_poly_t rop, const fq_poly_t op, const fq_ctx_t ctx) noexcept + void _fq_poly_invsqrt_series(fq_struct * g, const fq_struct * h, slong n, fq_ctx_t mod) noexcept + void fq_poly_invsqrt_series(fq_poly_t g, const fq_poly_t h, slong n, fq_ctx_t ctx) noexcept + void _fq_poly_sqrt_series(fq_struct * g, const fq_struct * h, slong n, fq_ctx_t ctx) noexcept + void fq_poly_sqrt_series(fq_poly_t g, const fq_poly_t h, slong n, fq_ctx_t ctx) noexcept + int _fq_poly_sqrt(fq_struct * s, const fq_struct * p, slong n, fq_ctx_t mod) noexcept + int fq_poly_sqrt(fq_poly_t s, const fq_poly_t p, fq_ctx_t mod) noexcept + void _fq_poly_evaluate_fq(fq_t rop, const fq_struct * op, slong len, const fq_t a, const fq_ctx_t ctx) noexcept + void fq_poly_evaluate_fq(fq_t rop, const fq_poly_t f, const fq_t a, const fq_ctx_t ctx) noexcept + void _fq_poly_compose(fq_struct * rop, const fq_struct * op1, slong len1, const fq_struct * op2, slong len2, const fq_ctx_t ctx) noexcept + void fq_poly_compose(fq_poly_t rop, const fq_poly_t op1, const fq_poly_t op2, const fq_ctx_t ctx) noexcept + void _fq_poly_compose_mod_horner(fq_struct * res, const fq_struct * f, slong lenf, const fq_struct * g, const fq_struct * h, slong lenh, const fq_ctx_t ctx) noexcept + void fq_poly_compose_mod_horner(fq_poly_t res, const fq_poly_t f, const fq_poly_t g, const fq_poly_t h, const fq_ctx_t ctx) noexcept + void _fq_poly_compose_mod_horner_preinv(fq_struct * res, const fq_struct * f, slong lenf, const fq_struct * g, const fq_struct * h, slong lenh, const fq_struct * hinv, slong lenhiv, const fq_ctx_t ctx) noexcept + void fq_poly_compose_mod_horner_preinv(fq_poly_t res, const fq_poly_t f, const fq_poly_t g, const fq_poly_t h, const fq_poly_t hinv, const fq_ctx_t ctx) noexcept + void _fq_poly_compose_mod_brent_kung(fq_struct * res, const fq_struct * f, slong lenf, const fq_struct * g, const fq_struct * h, slong lenh, const fq_ctx_t ctx) noexcept + void fq_poly_compose_mod_brent_kung(fq_poly_t res, const fq_poly_t f, const fq_poly_t g, const fq_poly_t h, const fq_ctx_t ctx) noexcept + void _fq_poly_compose_mod_brent_kung_preinv(fq_struct * res, const fq_struct * f, slong lenf, const fq_struct * g, const fq_struct * h, slong lenh, const fq_struct * hinv, slong lenhiv, const fq_ctx_t ctx) noexcept + void fq_poly_compose_mod_brent_kung_preinv(fq_poly_t res, const fq_poly_t f, const fq_poly_t g, const fq_poly_t h, const fq_poly_t hinv, const fq_ctx_t ctx) noexcept + void _fq_poly_compose_mod(fq_struct * res, const fq_struct * f, slong lenf, const fq_struct * g, const fq_struct * h, slong lenh, const fq_ctx_t ctx) noexcept + void fq_poly_compose_mod(fq_poly_t res, const fq_poly_t f, const fq_poly_t g, const fq_poly_t h, const fq_ctx_t ctx) noexcept + void _fq_poly_compose_mod_preinv(fq_struct * res, const fq_struct * f, slong lenf, const fq_struct * g, const fq_struct * h, slong lenh, const fq_struct * hinv, slong lenhiv, const fq_ctx_t ctx) noexcept + void fq_poly_compose_mod_preinv(fq_poly_t res, const fq_poly_t f, const fq_poly_t g, const fq_poly_t h, const fq_poly_t hinv, const fq_ctx_t ctx) noexcept + void _fq_poly_reduce_matrix_mod_poly (fq_mat_t A, const fq_mat_t B, const fq_poly_t f, const fq_ctx_t ctx) noexcept + void _fq_poly_precompute_matrix (fq_mat_t A, const fq_struct * f, const fq_struct * g, slong leng, const fq_struct * ginv, slong lenginv, const fq_ctx_t ctx) noexcept + void fq_poly_precompute_matrix (fq_mat_t A, const fq_poly_t f, const fq_poly_t g, const fq_poly_t ginv, const fq_ctx_t ctx) noexcept + void _fq_poly_compose_mod_brent_kung_precomp_preinv(fq_struct * res, const fq_struct * f, slong lenf, const fq_mat_t A, const fq_struct * h, slong lenh, const fq_struct * hinv, slong lenhinv, const fq_ctx_t ctx) noexcept + void fq_poly_compose_mod_brent_kung_precomp_preinv(fq_poly_t res, const fq_poly_t f, const fq_mat_t A, const fq_poly_t h, const fq_poly_t hinv, const fq_ctx_t ctx) noexcept + int _fq_poly_fprint_pretty(FILE * file, const fq_struct * poly, slong len, const char * x, const fq_ctx_t ctx) noexcept + int fq_poly_fprint_pretty(FILE * file, const fq_poly_t poly, const char * x, const fq_ctx_t ctx) noexcept + int _fq_poly_print_pretty(const fq_struct * poly, slong len, const char * x, const fq_ctx_t ctx) noexcept + int fq_poly_print_pretty(const fq_poly_t poly, const char * x, const fq_ctx_t ctx) noexcept + int _fq_poly_fprint(FILE * file, const fq_struct * poly, slong len, const fq_ctx_t ctx) noexcept + int fq_poly_fprint(FILE * file, const fq_poly_t poly, const fq_ctx_t ctx) noexcept + int _fq_poly_print(const fq_struct * poly, slong len, const fq_ctx_t ctx) noexcept + int fq_poly_print(const fq_poly_t poly, const fq_ctx_t ctx) noexcept + char * _fq_poly_get_str(const fq_struct * poly, slong len, const fq_ctx_t ctx) noexcept + char * fq_poly_get_str(const fq_poly_t poly, const fq_ctx_t ctx) noexcept + char * _fq_poly_get_str_pretty(const fq_struct * poly, slong len, const char * x, const fq_ctx_t ctx) noexcept + char * fq_poly_get_str_pretty(const fq_poly_t poly, const char * x, const fq_ctx_t ctx) noexcept + void fq_poly_inflate(fq_poly_t result, const fq_poly_t input, ulong inflation, const fq_ctx_t ctx) noexcept + void fq_poly_deflate(fq_poly_t result, const fq_poly_t input, ulong deflation, const fq_ctx_t ctx) noexcept + ulong fq_poly_deflation(const fq_poly_t input, const fq_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_poly_factor.pxd b/src/sage/libs/flint/fq_poly_factor.pxd new file mode 100644 index 00000000000..d7e1a8b0e60 --- /dev/null +++ b/src/sage/libs/flint/fq_poly_factor.pxd @@ -0,0 +1,45 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_poly_factor.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_poly_factor_init(fq_poly_factor_t fac, const fq_ctx_t ctx) noexcept + void fq_poly_factor_clear(fq_poly_factor_t fac, const fq_ctx_t ctx) noexcept + void fq_poly_factor_realloc(fq_poly_factor_t fac, slong alloc, const fq_ctx_t ctx) noexcept + void fq_poly_factor_fit_length(fq_poly_factor_t fac, slong len, const fq_ctx_t ctx) noexcept + void fq_poly_factor_set(fq_poly_factor_t res, const fq_poly_factor_t fac, const fq_ctx_t ctx) noexcept + void fq_poly_factor_print_pretty(const fq_poly_factor_t fac, const char * var, const fq_ctx_t ctx) noexcept + void fq_poly_factor_print(const fq_poly_factor_t fac, const fq_ctx_t ctx) noexcept + void fq_poly_factor_insert(fq_poly_factor_t fac, const fq_poly_t poly, slong exp, const fq_ctx_t ctx) noexcept + void fq_poly_factor_concat(fq_poly_factor_t res, const fq_poly_factor_t fac, const fq_ctx_t ctx) noexcept + void fq_poly_factor_pow(fq_poly_factor_t fac, slong exp, const fq_ctx_t ctx) noexcept + ulong fq_poly_remove(fq_poly_t f, const fq_poly_t p, const fq_ctx_t ctx) noexcept + bint fq_poly_is_irreducible(const fq_poly_t f, const fq_ctx_t ctx) noexcept + bint fq_poly_is_irreducible_ddf(const fq_poly_t f, const fq_ctx_t ctx) noexcept + bint fq_poly_is_irreducible_ben_or(const fq_poly_t f, const fq_ctx_t ctx) noexcept + bint _fq_poly_is_squarefree(const fq_struct * f, slong len, const fq_ctx_t ctx) noexcept + bint fq_poly_is_squarefree(const fq_poly_t f, const fq_ctx_t ctx) noexcept + bint fq_poly_factor_equal_deg_prob(fq_poly_t factor, flint_rand_t state, const fq_poly_t pol, slong d, const fq_ctx_t ctx) noexcept + void fq_poly_factor_equal_deg(fq_poly_factor_t factors, const fq_poly_t pol, slong d, const fq_ctx_t ctx) noexcept + void fq_poly_factor_split_single(fq_poly_t linfactor, const fq_poly_t input, const fq_ctx_t ctx) noexcept + void fq_poly_factor_distinct_deg(fq_poly_factor_t res, const fq_poly_t poly, slong * const * degs, const fq_ctx_t ctx) noexcept + void fq_poly_factor_squarefree(fq_poly_factor_t res, const fq_poly_t f, const fq_ctx_t ctx) noexcept + void fq_poly_factor(fq_poly_factor_t res, fq_t lead, const fq_poly_t f, const fq_ctx_t ctx) noexcept + void fq_poly_factor_cantor_zassenhaus(fq_poly_factor_t res, const fq_poly_t f, const fq_ctx_t ctx) noexcept + void fq_poly_factor_kaltofen_shoup(fq_poly_factor_t res, const fq_poly_t poly, const fq_ctx_t ctx) noexcept + void fq_poly_factor_berlekamp(fq_poly_factor_t factors, const fq_poly_t f, const fq_ctx_t ctx) noexcept + void fq_poly_factor_with_berlekamp(fq_poly_factor_t res, fq_t leading_coeff, const fq_poly_t f, const fq_ctx_t ctx) noexcept + void fq_poly_factor_with_cantor_zassenhaus(fq_poly_factor_t res, fq_t leading_coeff, const fq_poly_t f, const fq_ctx_t ctx) noexcept + void fq_poly_factor_with_kaltofen_shoup(fq_poly_factor_t res, fq_t leading_coeff, const fq_poly_t f, const fq_ctx_t ctx) noexcept + void fq_poly_iterated_frobenius_preinv(fq_poly_t * rop, slong n, const fq_poly_t v, const fq_poly_t vinv, const fq_ctx_t ctx) noexcept + void fq_poly_roots(fq_poly_factor_t r, const fq_poly_t f, int with_multiplicity, const fq_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_vec.pxd b/src/sage/libs/flint/fq_vec.pxd new file mode 100644 index 00000000000..ec5d5bdf6a2 --- /dev/null +++ b/src/sage/libs/flint/fq_vec.pxd @@ -0,0 +1,31 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_vec.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + fq_struct * _fq_vec_init(slong len, const fq_ctx_t ctx) noexcept + void _fq_vec_clear(fq_struct * vec, slong len, const fq_ctx_t ctx) noexcept + void _fq_vec_randtest(fq_struct * f, flint_rand_t state, slong len, const fq_ctx_t ctx) noexcept + int _fq_vec_fprint(FILE * file, const fq_struct * vec, slong len, const fq_ctx_t ctx) noexcept + int _fq_vec_print(const fq_struct * vec, slong len, const fq_ctx_t ctx) noexcept + void _fq_vec_set(fq_struct * vec1, const fq_struct * vec2, slong len2, const fq_ctx_t ctx) noexcept + void _fq_vec_swap(fq_struct * vec1, fq_struct * vec2, slong len2, const fq_ctx_t ctx) noexcept + void _fq_vec_zero(fq_struct * vec, slong len, const fq_ctx_t ctx) noexcept + void _fq_vec_neg(fq_struct * vec1, const fq_struct * vec2, slong len2, const fq_ctx_t ctx) noexcept + bint _fq_vec_equal(const fq_struct * vec1, const fq_struct * vec2, slong len, const fq_ctx_t ctx) noexcept + bint _fq_vec_is_zero(const fq_struct * vec, slong len, const fq_ctx_t ctx) noexcept + void _fq_vec_add(fq_struct * res, const fq_struct * vec1, const fq_struct * vec2, slong len2, const fq_ctx_t ctx) noexcept + void _fq_vec_sub(fq_struct * res, const fq_struct * vec1, const fq_struct * vec2, slong len2, const fq_ctx_t ctx) noexcept + void _fq_vec_scalar_addmul_fq(fq_struct * vec1, const fq_struct * vec2, slong len2, const fq_t c, const fq_ctx_t ctx) noexcept + void _fq_vec_scalar_submul_fq(fq_struct * vec1, const fq_struct * vec2, slong len2, const fq_t c, const fq_ctx_t ctx) noexcept + void _fq_vec_dot(fq_t res, const fq_struct * vec1, const fq_struct * vec2, slong len2, const fq_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_zech.pxd b/src/sage/libs/flint/fq_zech.pxd new file mode 100644 index 00000000000..1fa779ae88b --- /dev/null +++ b/src/sage/libs/flint/fq_zech.pxd @@ -0,0 +1,97 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_zech.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_zech_ctx_init(fq_zech_ctx_t ctx, const fmpz_t p, slong d, const char * var) noexcept + int _fq_zech_ctx_init_conway(fq_zech_ctx_t ctx, const fmpz_t p, slong d, const char * var) noexcept + void fq_zech_ctx_init_conway(fq_zech_ctx_t ctx, const fmpz_t p, slong d, const char * var) noexcept + void fq_zech_ctx_init_random(fq_zech_ctx_t ctx, const fmpz_t p, slong d, const char * var) noexcept + void fq_zech_ctx_init_modulus(fq_zech_ctx_t ctx, const nmod_poly_t modulus, const char * var) noexcept + int fq_zech_ctx_init_modulus_check(fq_zech_ctx_t ctx, const nmod_poly_t modulus, const char * var) noexcept + void fq_zech_ctx_init_fq_nmod_ctx(fq_zech_ctx_t ctx, fq_nmod_ctx_t ctxn) noexcept + int fq_zech_ctx_init_fq_nmod_ctx_check(fq_zech_ctx_t ctx, fq_nmod_ctx_t ctxn) noexcept + void fq_zech_ctx_clear(fq_zech_ctx_t ctx) noexcept + const nmod_poly_struct* fq_zech_ctx_modulus(const fq_zech_ctx_t ctx) noexcept + slong fq_zech_ctx_degree(const fq_zech_ctx_t ctx) noexcept + fmpz * fq_zech_ctx_prime(const fq_zech_ctx_t ctx) noexcept + void fq_zech_ctx_order(fmpz_t f, const fq_zech_ctx_t ctx) noexcept + mp_limb_t fq_zech_ctx_order_ui(const fq_zech_ctx_t ctx) noexcept + int fq_zech_ctx_fprint(FILE * file, const fq_zech_ctx_t ctx) noexcept + void fq_zech_ctx_print(const fq_zech_ctx_t ctx) noexcept + void fq_zech_ctx_randtest(fq_zech_ctx_t ctx, flint_rand_t state) noexcept + void fq_zech_ctx_randtest_reducible(fq_zech_ctx_t ctx, flint_rand_t state) noexcept + void fq_zech_init(fq_zech_t rop, const fq_zech_ctx_t ctx) noexcept + void fq_zech_init2(fq_zech_t rop, const fq_zech_ctx_t ctx) noexcept + void fq_zech_clear(fq_zech_t rop, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_sparse_reduce(mp_ptr R, slong lenR, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_dense_reduce(mp_ptr R, slong lenR, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_reduce(mp_ptr r, slong lenR, const fq_zech_ctx_t ctx) noexcept + void fq_zech_reduce(fq_zech_t rop, const fq_zech_ctx_t ctx) noexcept + void fq_zech_add(fq_zech_t rop, const fq_zech_t op1, const fq_zech_t op2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_sub(fq_zech_t rop, const fq_zech_t op1, const fq_zech_t op2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_sub_one(fq_zech_t rop, const fq_zech_t op1, const fq_zech_ctx_t ctx) noexcept + void fq_zech_neg(fq_zech_t rop, const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mul(fq_zech_t rop, const fq_zech_t op1, const fq_zech_t op2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mul_fmpz(fq_zech_t rop, const fq_zech_t op, const fmpz_t x, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mul_si(fq_zech_t rop, const fq_zech_t op, slong x, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mul_ui(fq_zech_t rop, const fq_zech_t op, ulong x, const fq_zech_ctx_t ctx) noexcept + void fq_zech_sqr(fq_zech_t rop, const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + void fq_zech_div(fq_zech_t rop, const fq_zech_t op1, const fq_zech_t op2, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_inv(mp_ptr * rop, mp_srcptr * op, slong len, const fq_zech_ctx_t ctx) noexcept + void fq_zech_inv(fq_zech_t rop, const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + void fq_zech_gcdinv(fq_zech_t f, fq_zech_t inv, const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_pow(fmpz * rop, const fmpz * op, slong len, const fmpz_t e, const fmpz * a, const slong * j, slong lena, const fmpz_t p) noexcept + void fq_zech_pow(fq_zech_t rop, const fq_zech_t op, const fmpz_t e, const fq_zech_ctx_t ctx) noexcept + void fq_zech_pow_ui(fq_zech_t rop, const fq_zech_t op, const ulong e, const fq_zech_ctx_t ctx) noexcept + int fq_zech_sqrt(fq_zech_t rop, const fq_zech_t op1, const fq_zech_ctx_t ctx) noexcept + void fq_zech_pth_root(fq_zech_t rop, const fq_zech_t op1, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_is_square(const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + int fq_zech_fprint_pretty(FILE * file, const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + void fq_zech_print_pretty(const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + int fq_zech_fprint(FILE * file, const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + void fq_zech_print(const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + char * fq_zech_get_str(const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + char * fq_zech_get_str_pretty(const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + void fq_zech_randtest(fq_zech_t rop, flint_rand_t state, const fq_zech_ctx_t ctx) noexcept + void fq_zech_randtest_not_zero(fq_zech_t rop, flint_rand_t state, const fq_zech_ctx_t ctx) noexcept + void fq_zech_randtest_dense(fq_zech_t rop, flint_rand_t state, const fq_zech_ctx_t ctx) noexcept + void fq_zech_rand(fq_zech_t rop, flint_rand_t state, const fq_zech_ctx_t ctx) noexcept + void fq_zech_rand_not_zero(fq_zech_t rop, flint_rand_t state, const fq_zech_ctx_t ctx) noexcept + void fq_zech_set(fq_zech_t rop, const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + void fq_zech_set_si(fq_zech_t rop, const slong x, const fq_zech_ctx_t ctx) noexcept + void fq_zech_set_ui(fq_zech_t rop, const ulong x, const fq_zech_ctx_t ctx) noexcept + void fq_zech_set_fmpz(fq_zech_t rop, const fmpz_t x, const fq_zech_ctx_t ctx) noexcept + void fq_zech_swap(fq_zech_t op1, fq_zech_t op2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_zero(fq_zech_t rop, const fq_zech_ctx_t ctx) noexcept + void fq_zech_one(fq_zech_t rop, const fq_zech_ctx_t ctx) noexcept + void fq_zech_gen(fq_zech_t rop, const fq_zech_ctx_t ctx) noexcept + int fq_zech_get_fmpz(fmpz_t rop, const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + void fq_zech_get_fq_nmod(fq_nmod_t rop, const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + void fq_zech_set_fq_nmod(fq_zech_t rop, const fq_nmod_t op, const fq_zech_ctx_t ctx) noexcept + void fq_zech_get_nmod_poly(nmod_poly_t a, const fq_zech_t b, const fq_zech_ctx_t ctx) noexcept + void fq_zech_set_nmod_poly(fq_zech_t a, const nmod_poly_t b, const fq_zech_ctx_t ctx) noexcept + void fq_zech_get_nmod_mat(nmod_mat_t col, const fq_zech_t a, const fq_zech_ctx_t ctx) noexcept + void fq_zech_set_nmod_mat(fq_zech_t a, const nmod_mat_t col, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_is_zero(const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_is_one(const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_equal(const fq_zech_t op1, const fq_zech_t op2, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_is_invertible(const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_is_invertible_f(fq_zech_t f, const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + void fq_zech_trace(fmpz_t rop, const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + void fq_zech_norm(fmpz_t rop, const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + void fq_zech_frobenius(fq_zech_t rop, const fq_zech_t op, slong e, const fq_zech_ctx_t ctx) noexcept + int fq_zech_multiplicative_order(fmpz * ord, const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_is_primitive(const fq_zech_t op, const fq_zech_ctx_t ctx) noexcept + void fq_zech_bit_pack(fmpz_t f, const fq_zech_t op, flint_bitcnt_t bit_size, const fq_zech_ctx_t ctx) noexcept + void fq_zech_bit_unpack(fq_zech_t rop, const fmpz_t f, flint_bitcnt_t bit_size, const fq_zech_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_zech_embed.pxd b/src/sage/libs/flint/fq_zech_embed.pxd new file mode 100644 index 00000000000..59f66f7f5ae --- /dev/null +++ b/src/sage/libs/flint/fq_zech_embed.pxd @@ -0,0 +1,26 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_zech_embed.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_zech_embed_gens(fq_zech_t gen_sub, fq_zech_t gen_sup, nmod_poly_t minpoly, const fq_zech_ctx_t sub_ctx, const fq_zech_ctx_t sup_ctx) noexcept + void _fq_zech_embed_gens_naive(fq_zech_t gen_sub, fq_zech_t gen_sup, nmod_poly_t minpoly, const fq_zech_ctx_t sub_ctx, const fq_zech_ctx_t sup_ctx) noexcept + void fq_zech_embed_matrices(nmod_mat_t embed, nmod_mat_t project, const fq_zech_t gen_sub, const fq_zech_ctx_t sub_ctx, const fq_zech_t gen_sup, const fq_zech_ctx_t sup_ctx, const nmod_poly_t gen_minpoly) noexcept + void fq_zech_embed_trace_matrix(nmod_mat_t res, const nmod_mat_t basis, const fq_zech_ctx_t sub_ctx, const fq_zech_ctx_t sup_ctx) noexcept + void fq_zech_embed_composition_matrix(nmod_mat_t matrix, const fq_zech_t gen, const fq_zech_ctx_t ctx) noexcept + void fq_zech_embed_composition_matrix_sub(nmod_mat_t matrix, const fq_zech_t gen, const fq_zech_ctx_t ctx, slong trunc) noexcept + void fq_zech_embed_mul_matrix(nmod_mat_t matrix, const fq_zech_t gen, const fq_zech_ctx_t ctx) noexcept + void fq_zech_embed_mono_to_dual_matrix(nmod_mat_t res, const fq_zech_ctx_t ctx) noexcept + void fq_zech_embed_dual_to_mono_matrix(nmod_mat_t res, const fq_zech_ctx_t ctx) noexcept + void fq_zech_modulus_pow_series_inv(nmod_poly_t res, const fq_zech_ctx_t ctx, slong trunc) noexcept + void fq_zech_modulus_derivative_inv(fq_zech_t m_prime, fq_zech_t m_prime_inv, const fq_zech_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_zech_mat.pxd b/src/sage/libs/flint/fq_zech_mat.pxd new file mode 100644 index 00000000000..c4ee5d2fb59 --- /dev/null +++ b/src/sage/libs/flint/fq_zech_mat.pxd @@ -0,0 +1,76 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_zech_mat.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_zech_mat_init(fq_zech_mat_t mat, slong rows, slong cols, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_init_set(fq_zech_mat_t mat, const fq_zech_mat_t src, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_clear(fq_zech_mat_t mat, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_set(fq_zech_mat_t mat, const fq_zech_mat_t src, const fq_zech_ctx_t ctx) noexcept + fq_zech_struct * fq_zech_mat_entry(const fq_zech_mat_t mat, slong i, slong j) noexcept + void fq_zech_mat_entry_set(fq_zech_mat_t mat, slong i, slong j, const fq_zech_t x, const fq_zech_ctx_t ctx) noexcept + slong fq_zech_mat_nrows(const fq_zech_mat_t mat, const fq_zech_ctx_t ctx) noexcept + slong fq_zech_mat_ncols(const fq_zech_mat_t mat, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_swap(fq_zech_mat_t mat1, fq_zech_mat_t mat2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_swap_entrywise(fq_zech_mat_t mat1, fq_zech_mat_t mat2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_zero(fq_zech_mat_t mat, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_one(fq_zech_mat_t mat, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_set_nmod_mat(fq_zech_mat_t mat1, const nmod_mat_t mat2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_set_fmpz_mod_mat(fq_zech_mat_t mat1, const fmpz_mod_mat_t mat2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_concat_vertical(fq_zech_mat_t res, const fq_zech_mat_t mat1, const fq_zech_mat_t mat2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_concat_horizontal(fq_zech_mat_t res, const fq_zech_mat_t mat1, const fq_zech_mat_t mat2, const fq_zech_ctx_t ctx) noexcept + int fq_zech_mat_print_pretty(const fq_zech_mat_t mat, const fq_zech_ctx_t ctx) noexcept + int fq_zech_mat_fprint_pretty(FILE * file, const fq_zech_mat_t mat, const fq_zech_ctx_t ctx) noexcept + int fq_zech_mat_print(const fq_zech_mat_t mat, const fq_zech_ctx_t ctx) noexcept + int fq_zech_mat_fprint(FILE * file, const fq_zech_mat_t mat, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_window_init(fq_zech_mat_t window, const fq_zech_mat_t mat, slong r1, slong c1, slong r2, slong c2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_window_clear(fq_zech_mat_t window, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_randtest(fq_zech_mat_t mat, flint_rand_t state, const fq_zech_ctx_t ctx) noexcept + int fq_zech_mat_randpermdiag(fq_zech_mat_t mat, flint_rand_t state, fq_zech_struct * diag, slong n, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_randrank(fq_zech_mat_t mat, flint_rand_t state, slong rank, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_randops(fq_zech_mat_t mat, slong count, flint_rand_t state, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_randtril(fq_zech_mat_t mat, flint_rand_t state, int unit, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_randtriu(fq_zech_mat_t mat, flint_rand_t state, int unit, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_mat_equal(const fq_zech_mat_t mat1, const fq_zech_mat_t mat2, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_mat_is_zero(const fq_zech_mat_t mat, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_mat_is_one(const fq_zech_mat_t mat, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_mat_is_empty(const fq_zech_mat_t mat, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_mat_is_square(const fq_zech_mat_t mat, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_add(fq_zech_mat_t C, const fq_zech_mat_t A, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_sub(fq_zech_mat_t C, const fq_zech_mat_t A, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_neg(fq_zech_mat_t A, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_mul(fq_zech_mat_t C, const fq_zech_mat_t A, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_mul_classical(fq_zech_mat_t C, const fq_zech_mat_t A, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_mul_KS(fq_zech_mat_t C, const fq_zech_mat_t A, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_submul(fq_zech_mat_t D, const fq_zech_mat_t C, const fq_zech_mat_t A, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_mul_vec(fq_zech_struct * c, const fq_zech_mat_t A, const fq_zech_struct * b, slong blen, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_mul_vec_ptr(fq_zech_struct * const * c, const fq_zech_mat_t A, const fq_zech_struct * const * b, slong blen, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_vec_mul(fq_zech_struct * c, const fq_zech_struct * a, slong alen, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_vec_mul_ptr(fq_zech_struct * const * c, const fq_zech_struct * const * a, slong alen, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) noexcept + slong fq_zech_mat_lu(slong * P, fq_zech_mat_t A, int rank_check, const fq_zech_ctx_t ctx) noexcept + slong fq_zech_mat_lu_classical(slong * P, fq_zech_mat_t A, int rank_check, const fq_zech_ctx_t ctx) noexcept + slong fq_zech_mat_lu_recursive(slong * P, fq_zech_mat_t A, int rank_check, const fq_zech_ctx_t ctx) noexcept + slong fq_zech_mat_rref(fq_zech_mat_t A, const fq_zech_ctx_t ctx) noexcept + slong fq_zech_mat_reduce_row(fq_zech_mat_t A, slong * P, slong * L, slong n, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_solve_tril(fq_zech_mat_t X, const fq_zech_mat_t L, const fq_zech_mat_t B, int unit, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_solve_tril_classical(fq_zech_mat_t X, const fq_zech_mat_t L, const fq_zech_mat_t B, int unit, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_solve_tril_recursive(fq_zech_mat_t X, const fq_zech_mat_t L, const fq_zech_mat_t B, int unit, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_solve_triu(fq_zech_mat_t X, const fq_zech_mat_t U, const fq_zech_mat_t B, int unit, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_solve_triu_classical(fq_zech_mat_t X, const fq_zech_mat_t U, const fq_zech_mat_t B, int unit, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_solve_triu_recursive(fq_zech_mat_t X, const fq_zech_mat_t U, const fq_zech_mat_t B, int unit, const fq_zech_ctx_t ctx) noexcept + int fq_zech_mat_solve(fq_zech_mat_t X, const fq_zech_mat_t A, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) noexcept + int fq_zech_mat_can_solve(fq_zech_mat_t X, const fq_zech_mat_t A, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_similarity(fq_zech_mat_t M, slong r, fq_zech_t d, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_charpoly_danilevsky(fq_zech_poly_t p, const fq_zech_mat_t M, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_charpoly(fq_zech_poly_t p, const fq_zech_mat_t M, const fq_zech_ctx_t ctx) noexcept + void fq_zech_mat_minpoly(fq_zech_poly_t p, const fq_zech_mat_t M, const fq_zech_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_zech_poly.pxd b/src/sage/libs/flint/fq_zech_poly.pxd new file mode 100644 index 00000000000..21cefa1c67f --- /dev/null +++ b/src/sage/libs/flint/fq_zech_poly.pxd @@ -0,0 +1,196 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_zech_poly.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_zech_poly_init(fq_zech_poly_t poly, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_init2(fq_zech_poly_t poly, slong alloc, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_realloc(fq_zech_poly_t poly, slong alloc, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_fit_length(fq_zech_poly_t poly, slong len, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_set_length(fq_zech_poly_t poly, slong newlen, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_clear(fq_zech_poly_t poly, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_normalise(fq_zech_poly_t poly, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_normalise2(const fq_zech_struct * poly, slong * length, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_truncate(fq_zech_poly_t poly, slong newlen, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_set_trunc(fq_zech_poly_t poly1, fq_zech_poly_t poly2, slong newlen, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_reverse(fq_zech_struct * output, const fq_zech_struct * input, slong len, slong m, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_reverse(fq_zech_poly_t output, const fq_zech_poly_t input, slong m, const fq_zech_ctx_t ctx) noexcept + slong fq_zech_poly_degree(const fq_zech_poly_t poly, const fq_zech_ctx_t ctx) noexcept + slong fq_zech_poly_length(const fq_zech_poly_t poly, const fq_zech_ctx_t ctx) noexcept + fq_zech_struct * fq_zech_poly_lead(const fq_zech_poly_t poly, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_randtest(fq_zech_poly_t f, flint_rand_t state, slong len, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_randtest_not_zero(fq_zech_poly_t f, flint_rand_t state, slong len, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_randtest_monic(fq_zech_poly_t f, flint_rand_t state, slong len, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_randtest_irreducible(fq_zech_poly_t f, flint_rand_t state, slong len, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_set(fq_zech_struct * rop, const fq_zech_struct * op, slong len, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_set(fq_zech_poly_t poly1, const fq_zech_poly_t poly2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_set_fq_zech(fq_zech_poly_t poly, const fq_zech_t c, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_set_fmpz_mod_poly(fq_zech_poly_t rop, const fmpz_mod_poly_t op, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_set_nmod_poly(fq_zech_poly_t rop, const nmod_poly_t op, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_swap(fq_zech_poly_t op1, fq_zech_poly_t op2, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_zero(fq_zech_struct * rop, slong len, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_zero(fq_zech_poly_t poly, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_one(fq_zech_poly_t poly, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_gen(fq_zech_poly_t poly, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_make_monic(fq_zech_poly_t rop, const fq_zech_poly_t op, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_make_monic(fq_zech_struct * rop, const fq_zech_struct * op, slong length, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_get_coeff(fq_zech_t x, const fq_zech_poly_t poly, slong n, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_set_coeff(fq_zech_poly_t poly, slong n, const fq_zech_t x, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_set_coeff_fmpz(fq_zech_poly_t poly, slong n, const fmpz_t x, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_poly_equal(const fq_zech_poly_t poly1, const fq_zech_poly_t poly2, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_poly_equal_trunc(const fq_zech_poly_t poly1, const fq_zech_poly_t poly2, slong n, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_poly_is_zero(const fq_zech_poly_t poly, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_poly_is_one(const fq_zech_poly_t op, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_poly_is_gen(const fq_zech_poly_t op, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_poly_is_unit(const fq_zech_poly_t op, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_poly_equal_fq_zech(const fq_zech_poly_t poly, const fq_zech_t c, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_add(fq_zech_struct * res, const fq_zech_struct * poly1, slong len1, const fq_zech_struct * poly2, slong len2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_add(fq_zech_poly_t res, const fq_zech_poly_t poly1, const fq_zech_poly_t poly2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_add_si(fq_zech_poly_t res, const fq_zech_poly_t poly1, slong c, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_add_series(fq_zech_poly_t res, const fq_zech_poly_t poly1, const fq_zech_poly_t poly2, slong n, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_sub(fq_zech_struct * res, const fq_zech_struct * poly1, slong len1, const fq_zech_struct * poly2, slong len2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_sub(fq_zech_poly_t res, const fq_zech_poly_t poly1, const fq_zech_poly_t poly2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_sub_series(fq_zech_poly_t res, const fq_zech_poly_t poly1, const fq_zech_poly_t poly2, slong n, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_neg(fq_zech_struct * rop, const fq_zech_struct * op, slong len, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_neg(fq_zech_poly_t res, const fq_zech_poly_t poly, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_scalar_mul_fq_zech(fq_zech_struct * rop, const fq_zech_struct * op, slong len, const fq_zech_t x, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_scalar_mul_fq_zech(fq_zech_poly_t rop, const fq_zech_poly_t op, const fq_zech_t x, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_scalar_addmul_fq_zech(fq_zech_struct * rop, const fq_zech_struct * op, slong len, const fq_zech_t x, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_scalar_addmul_fq_zech(fq_zech_poly_t rop, const fq_zech_poly_t op, const fq_zech_t x, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_scalar_submul_fq_zech(fq_zech_struct * rop, const fq_zech_struct * op, slong len, const fq_zech_t x, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_scalar_submul_fq_zech(fq_zech_poly_t rop, const fq_zech_poly_t op, const fq_zech_t x, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_scalar_div_fq_zech(fq_zech_struct * rop, const fq_zech_struct * op, slong len, const fq_zech_t x, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_scalar_div_fq_zech(fq_zech_poly_t rop, const fq_zech_poly_t op, const fq_zech_t x, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_mul_classical(fq_zech_struct * rop, const fq_zech_struct * op1, slong len1, const fq_zech_struct * op2, slong len2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_mul_classical(fq_zech_poly_t rop, const fq_zech_poly_t op1, const fq_zech_poly_t op2, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_mul_reorder(fq_zech_struct * rop, const fq_zech_struct * op1, slong len1, const fq_zech_struct * op2, slong len2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_mul_reorder(fq_zech_poly_t rop, const fq_zech_poly_t op1, const fq_zech_poly_t op2, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_mul_KS(fq_zech_struct * rop, const fq_zech_struct * op1, slong len1, const fq_zech_struct * op2, slong len2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_mul_KS(fq_zech_poly_t rop, const fq_zech_poly_t op1, const fq_zech_poly_t op2, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_mul(fq_zech_struct * rop, const fq_zech_struct * op1, slong len1, const fq_zech_struct * op2, slong len2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_mul(fq_zech_poly_t rop, const fq_zech_poly_t op1, const fq_zech_poly_t op2, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_mullow_classical(fq_zech_struct * rop, const fq_zech_struct * op1, slong len1, const fq_zech_struct * op2, slong len2, slong n, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_mullow_classical(fq_zech_poly_t rop, const fq_zech_poly_t op1, const fq_zech_poly_t op2, slong n, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_mullow_KS(fq_zech_struct * rop, const fq_zech_struct * op1, slong len1, const fq_zech_struct * op2, slong len2, slong n, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_mullow_KS(fq_zech_poly_t rop, const fq_zech_poly_t op1, const fq_zech_poly_t op2, slong n, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_mullow(fq_zech_struct * rop, const fq_zech_struct * op1, slong len1, const fq_zech_struct * op2, slong len2, slong n, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_mullow(fq_zech_poly_t rop, const fq_zech_poly_t op1, const fq_zech_poly_t op2, slong n, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_mulhigh_classical(fq_zech_struct * res, const fq_zech_struct * poly1, slong len1, const fq_zech_struct * poly2, slong len2, slong start, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_mulhigh_classical(fq_zech_poly_t res, const fq_zech_poly_t poly1, const fq_zech_poly_t poly2, slong start, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_mulhigh(fq_zech_struct * res, const fq_zech_struct * poly1, slong len1, const fq_zech_struct * poly2, slong len2, slong start, fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_mulhigh(fq_zech_poly_t res, const fq_zech_poly_t poly1, const fq_zech_poly_t poly2, slong start, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_mulmod(fq_zech_struct * res, const fq_zech_struct * poly1, slong len1, const fq_zech_struct * poly2, slong len2, const fq_zech_struct * f, slong lenf, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_mulmod(fq_zech_poly_t res, const fq_zech_poly_t poly1, const fq_zech_poly_t poly2, const fq_zech_poly_t f, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_mulmod_preinv(fq_zech_struct * res, const fq_zech_struct * poly1, slong len1, const fq_zech_struct * poly2, slong len2, const fq_zech_struct * f, slong lenf, const fq_zech_struct * finv, slong lenfinv, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_mulmod_preinv(fq_zech_poly_t res, const fq_zech_poly_t poly1, const fq_zech_poly_t poly2, const fq_zech_poly_t f, const fq_zech_poly_t finv, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_sqr_classical(fq_zech_struct * rop, const fq_zech_struct * op, slong len, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_sqr_classical(fq_zech_poly_t rop, const fq_zech_poly_t op, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_sqr_KS(fq_zech_struct * rop, const fq_zech_struct * op, slong len, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_sqr_KS(fq_zech_poly_t rop, const fq_zech_poly_t op, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_sqr(fq_zech_struct * rop, const fq_zech_struct * op, slong len, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_sqr(fq_zech_poly_t rop, const fq_zech_poly_t op, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_pow(fq_zech_struct * rop, const fq_zech_struct * op, slong len, ulong e, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_pow(fq_zech_poly_t rop, const fq_zech_poly_t op, ulong e, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_powmod_ui_binexp(fq_zech_struct * res, const fq_zech_struct * poly, ulong e, const fq_zech_struct * f, slong lenf, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_powmod_ui_binexp(fq_zech_poly_t res, const fq_zech_poly_t poly, ulong e, const fq_zech_poly_t f, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_powmod_ui_binexp_preinv(fq_zech_struct * res, const fq_zech_struct * poly, ulong e, const fq_zech_struct * f, slong lenf, const fq_zech_struct * finv, slong lenfinv, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_powmod_ui_binexp_preinv(fq_zech_poly_t res, const fq_zech_poly_t poly, ulong e, const fq_zech_poly_t f, const fq_zech_poly_t finv, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_powmod_fmpz_binexp(fq_zech_struct * res, const fq_zech_struct * poly, const fmpz_t e, const fq_zech_struct * f, slong lenf, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_powmod_fmpz_binexp(fq_zech_poly_t res, const fq_zech_poly_t poly, const fmpz_t e, const fq_zech_poly_t f, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_powmod_fmpz_binexp_preinv(fq_zech_struct * res, const fq_zech_struct * poly, const fmpz_t e, const fq_zech_struct * f, slong lenf, const fq_zech_struct * finv, slong lenfinv, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_powmod_fmpz_binexp_preinv(fq_zech_poly_t res, const fq_zech_poly_t poly, const fmpz_t e, const fq_zech_poly_t f, const fq_zech_poly_t finv, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_powmod_fmpz_sliding_preinv(fq_zech_struct * res, const fq_zech_struct * poly, const fmpz_t e, ulong k, const fq_zech_struct * f, slong lenf, const fq_zech_struct * finv, slong lenfinv, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_powmod_fmpz_sliding_preinv(fq_zech_poly_t res, const fq_zech_poly_t poly, const fmpz_t e, ulong k, const fq_zech_poly_t f, const fq_zech_poly_t finv, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_powmod_x_fmpz_preinv(fq_zech_struct * res, const fmpz_t e, const fq_zech_struct * f, slong lenf, const fq_zech_struct * finv, slong lenfinv, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_powmod_x_fmpz_preinv(fq_zech_poly_t res, const fmpz_t e, const fq_zech_poly_t f, const fq_zech_poly_t finv, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_pow_trunc_binexp(fq_zech_struct * res, const fq_zech_struct * poly, ulong e, slong trunc, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_pow_trunc_binexp(fq_zech_poly_t res, const fq_zech_poly_t poly, ulong e, slong trunc, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_pow_trunc(fq_zech_struct * res, const fq_zech_struct * poly, ulong e, slong trunc, const fq_zech_ctx_t mod) noexcept + void fq_zech_poly_pow_trunc(fq_zech_poly_t res, const fq_zech_poly_t poly, ulong e, slong trunc, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_shift_left(fq_zech_struct * rop, const fq_zech_struct * op, slong len, slong n, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_shift_left(fq_zech_poly_t rop, const fq_zech_poly_t op, slong n, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_shift_right(fq_zech_struct * rop, const fq_zech_struct * op, slong len, slong n, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_shift_right(fq_zech_poly_t rop, const fq_zech_poly_t op, slong n, const fq_zech_ctx_t ctx) noexcept + slong _fq_zech_poly_hamming_weight(const fq_zech_struct * op, slong len, const fq_zech_ctx_t ctx) noexcept + slong fq_zech_poly_hamming_weight(const fq_zech_poly_t op, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_divrem(fq_zech_struct * Q, fq_zech_struct * R, const fq_zech_struct * A, slong lenA, const fq_zech_struct * B, slong lenB, const fq_zech_t invB, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_divrem(fq_zech_poly_t Q, fq_zech_poly_t R, const fq_zech_poly_t A, const fq_zech_poly_t B, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_divrem_f(fq_zech_t f, fq_zech_poly_t Q, fq_zech_poly_t R, const fq_zech_poly_t A, const fq_zech_poly_t B, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_rem(fq_zech_struct * R, const fq_zech_struct * A, slong lenA, const fq_zech_struct * B, slong lenB, const fq_zech_t invB, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_rem(fq_zech_poly_t R, const fq_zech_poly_t A, const fq_zech_poly_t B, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_div(fq_zech_struct * Q, const fq_zech_struct * A, slong lenA, const fq_zech_struct * B, slong lenB, const fq_zech_t invB, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_div(fq_zech_poly_t Q, const fq_zech_poly_t A, const fq_zech_poly_t B, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_div_newton_n_preinv(fq_zech_struct * Q, const fq_zech_struct * A, slong lenA, const fq_zech_struct * B, slong lenB, const fq_zech_struct * Binv, slong lenBinv, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_div_newton_n_preinv(fq_zech_poly_t Q, const fq_zech_poly_t A, const fq_zech_poly_t B, const fq_zech_poly_t Binv, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_divrem_newton_n_preinv(fq_zech_struct * Q, fq_zech_struct * R, const fq_zech_struct * A, slong lenA, const fq_zech_struct * B, slong lenB, const fq_zech_struct * Binv, slong lenBinv, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_divrem_newton_n_preinv(fq_zech_poly_t Q, fq_zech_poly_t R, const fq_zech_poly_t A, const fq_zech_poly_t B, const fq_zech_poly_t Binv, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_inv_series_newton(fq_zech_struct * Qinv, const fq_zech_struct * Q, slong n, const fq_zech_t cinv, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_inv_series_newton(fq_zech_poly_t Qinv, const fq_zech_poly_t Q, slong n, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_inv_series(fq_zech_struct * Qinv, const fq_zech_struct * Q, slong n, const fq_zech_t cinv, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_inv_series(fq_zech_poly_t Qinv, const fq_zech_poly_t Q, slong n, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_div_series(fq_zech_struct * Q, const fq_zech_struct * A, slong Alen, const fq_zech_struct * B, slong Blen, slong n, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_div_series(fq_zech_poly_t Q, const fq_zech_poly_t A, const fq_zech_poly_t B, slong n, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_gcd(fq_zech_poly_t rop, const fq_zech_poly_t op1, const fq_zech_poly_t op2, const fq_zech_ctx_t ctx) noexcept + slong _fq_zech_poly_gcd(fq_zech_struct * G, const fq_zech_struct * A, slong lenA, const fq_zech_struct * B, slong lenB, const fq_zech_ctx_t ctx) noexcept + slong _fq_zech_poly_gcd_euclidean_f(fq_zech_t f, fq_zech_struct * G, const fq_zech_struct * A, slong lenA, const fq_zech_struct * B, slong lenB, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_gcd_euclidean_f(fq_zech_t f, fq_zech_poly_t G, const fq_zech_poly_t A, const fq_zech_poly_t B, const fq_zech_ctx_t ctx) noexcept + slong _fq_zech_poly_xgcd(fq_zech_struct * G, fq_zech_struct * S, fq_zech_struct * T, const fq_zech_struct * A, slong lenA, const fq_zech_struct * B, slong lenB, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_xgcd(fq_zech_poly_t G, fq_zech_poly_t S, fq_zech_poly_t T, const fq_zech_poly_t A, const fq_zech_poly_t B, const fq_zech_ctx_t ctx) noexcept + slong _fq_zech_poly_xgcd_euclidean_f(fq_zech_t f, fq_zech_struct * G, fq_zech_struct * S, fq_zech_struct * T, const fq_zech_struct * A, slong lenA, const fq_zech_struct * B, slong lenB, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_xgcd_euclidean_f(fq_zech_t f, fq_zech_poly_t G, fq_zech_poly_t S, fq_zech_poly_t T, const fq_zech_poly_t A, const fq_zech_poly_t B, const fq_zech_ctx_t ctx) noexcept + int _fq_zech_poly_divides(fq_zech_struct * Q, const fq_zech_struct * A, slong lenA, const fq_zech_struct * B, slong lenB, const fq_zech_t invB, const fq_zech_ctx_t ctx) noexcept + int fq_zech_poly_divides(fq_zech_poly_t Q, const fq_zech_poly_t A, const fq_zech_poly_t B, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_derivative(fq_zech_struct * rop, const fq_zech_struct * op, slong len, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_derivative(fq_zech_poly_t rop, const fq_zech_poly_t op, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_invsqrt_series(fq_zech_struct * g, const fq_zech_struct * h, slong n, fq_zech_ctx_t mod) noexcept + void fq_zech_poly_invsqrt_series(fq_zech_poly_t g, const fq_zech_poly_t h, slong n, fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_sqrt_series(fq_zech_struct * g, const fq_zech_struct * h, slong n, fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_sqrt_series(fq_zech_poly_t g, const fq_zech_poly_t h, slong n, fq_zech_ctx_t ctx) noexcept + int _fq_zech_poly_sqrt(fq_zech_struct * s, const fq_zech_struct * p, slong n, fq_zech_ctx_t mod) noexcept + int fq_zech_poly_sqrt(fq_zech_poly_t s, const fq_zech_poly_t p, fq_zech_ctx_t mod) noexcept + void _fq_zech_poly_evaluate_fq_zech(fq_zech_t rop, const fq_zech_struct * op, slong len, const fq_zech_t a, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_evaluate_fq_zech(fq_zech_t rop, const fq_zech_poly_t f, const fq_zech_t a, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_compose(fq_zech_struct * rop, const fq_zech_struct * op1, slong len1, const fq_zech_struct * op2, slong len2, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_compose(fq_zech_poly_t rop, const fq_zech_poly_t op1, const fq_zech_poly_t op2, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_compose_mod_horner(fq_zech_struct * res, const fq_zech_struct * f, slong lenf, const fq_zech_struct * g, const fq_zech_struct * h, slong lenh, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_compose_mod_horner(fq_zech_poly_t res, const fq_zech_poly_t f, const fq_zech_poly_t g, const fq_zech_poly_t h, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_compose_mod_horner_preinv(fq_zech_struct * res, const fq_zech_struct * f, slong lenf, const fq_zech_struct * g, const fq_zech_struct * h, slong lenh, const fq_zech_struct * hinv, slong lenhiv, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_compose_mod_horner_preinv(fq_zech_poly_t res, const fq_zech_poly_t f, const fq_zech_poly_t g, const fq_zech_poly_t h, const fq_zech_poly_t hinv, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_compose_mod_brent_kung(fq_zech_struct * res, const fq_zech_struct * f, slong lenf, const fq_zech_struct * g, const fq_zech_struct * h, slong lenh, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_compose_mod_brent_kung(fq_zech_poly_t res, const fq_zech_poly_t f, const fq_zech_poly_t g, const fq_zech_poly_t h, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_compose_mod_brent_kung_preinv(fq_zech_struct * res, const fq_zech_struct * f, slong lenf, const fq_zech_struct * g, const fq_zech_struct * h, slong lenh, const fq_zech_struct * hinv, slong lenhiv, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_compose_mod_brent_kung_preinv(fq_zech_poly_t res, const fq_zech_poly_t f, const fq_zech_poly_t g, const fq_zech_poly_t h, const fq_zech_poly_t hinv, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_compose_mod(fq_zech_struct * res, const fq_zech_struct * f, slong lenf, const fq_zech_struct * g, const fq_zech_struct * h, slong lenh, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_compose_mod(fq_zech_poly_t res, const fq_zech_poly_t f, const fq_zech_poly_t g, const fq_zech_poly_t h, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_compose_mod_preinv(fq_zech_struct * res, const fq_zech_struct * f, slong lenf, const fq_zech_struct * g, const fq_zech_struct * h, slong lenh, const fq_zech_struct * hinv, slong lenhiv, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_compose_mod_preinv(fq_zech_poly_t res, const fq_zech_poly_t f, const fq_zech_poly_t g, const fq_zech_poly_t h, const fq_zech_poly_t hinv, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_reduce_matrix_mod_poly (fq_zech_mat_t A, const fq_zech_mat_t B, const fq_zech_poly_t f, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_precompute_matrix (fq_zech_mat_t A, const fq_zech_struct * f, const fq_zech_struct * g, slong leng, const fq_zech_struct * ginv, slong lenginv, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_precompute_matrix (fq_zech_mat_t A, const fq_zech_poly_t f, const fq_zech_poly_t g, const fq_zech_poly_t ginv, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_poly_compose_mod_brent_kung_precomp_preinv(fq_zech_struct * res, const fq_zech_struct * f, slong lenf, const fq_zech_mat_t A, const fq_zech_struct * h, slong lenh, const fq_zech_struct * hinv, slong lenhinv, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_compose_mod_brent_kung_precomp_preinv(fq_zech_poly_t res, const fq_zech_poly_t f, const fq_zech_mat_t A, const fq_zech_poly_t h, const fq_zech_poly_t hinv, const fq_zech_ctx_t ctx) noexcept + int _fq_zech_poly_fprint_pretty(FILE * file, const fq_zech_struct * poly, slong len, const char * x, const fq_zech_ctx_t ctx) noexcept + int fq_zech_poly_fprint_pretty(FILE * file, const fq_zech_poly_t poly, const char * x, const fq_zech_ctx_t ctx) noexcept + int _fq_zech_poly_print_pretty(const fq_zech_struct * poly, slong len, const char * x, const fq_zech_ctx_t ctx) noexcept + int fq_zech_poly_print_pretty(const fq_zech_poly_t poly, const char * x, const fq_zech_ctx_t ctx) noexcept + int _fq_zech_poly_fprint(FILE * file, const fq_zech_struct * poly, slong len, const fq_zech_ctx_t ctx) noexcept + int fq_zech_poly_fprint(FILE * file, const fq_zech_poly_t poly, const fq_zech_ctx_t ctx) noexcept + int _fq_zech_poly_print(const fq_zech_struct * poly, slong len, const fq_zech_ctx_t ctx) noexcept + int fq_zech_poly_print(const fq_zech_poly_t poly, const fq_zech_ctx_t ctx) noexcept + char * _fq_zech_poly_get_str(const fq_zech_struct * poly, slong len, const fq_zech_ctx_t ctx) noexcept + char * fq_zech_poly_get_str(const fq_zech_poly_t poly, const fq_zech_ctx_t ctx) noexcept + char * _fq_zech_poly_get_str_pretty(const fq_zech_struct * poly, slong len, const char * x, const fq_zech_ctx_t ctx) noexcept + char * fq_zech_poly_get_str_pretty(const fq_zech_poly_t poly, const char * x, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_inflate(fq_zech_poly_t result, const fq_zech_poly_t input, ulong inflation, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_deflate(fq_zech_poly_t result, const fq_zech_poly_t input, ulong deflation, const fq_zech_ctx_t ctx) noexcept + ulong fq_zech_poly_deflation(const fq_zech_poly_t input, const fq_zech_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_zech_poly_factor.pxd b/src/sage/libs/flint/fq_zech_poly_factor.pxd new file mode 100644 index 00000000000..111ec01ac9f --- /dev/null +++ b/src/sage/libs/flint/fq_zech_poly_factor.pxd @@ -0,0 +1,45 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_zech_poly_factor.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void fq_zech_poly_factor_init(fq_zech_poly_factor_t fac, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_clear(fq_zech_poly_factor_t fac, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_realloc(fq_zech_poly_factor_t fac, slong alloc, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_fit_length(fq_zech_poly_factor_t fac, slong len, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_set(fq_zech_poly_factor_t res, const fq_zech_poly_factor_t fac, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_print_pretty(const fq_zech_poly_factor_t fac, const char * var, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_print(const fq_zech_poly_factor_t fac, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_insert(fq_zech_poly_factor_t fac, const fq_zech_poly_t poly, slong exp, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_concat(fq_zech_poly_factor_t res, const fq_zech_poly_factor_t fac, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_pow(fq_zech_poly_factor_t fac, slong exp, const fq_zech_ctx_t ctx) noexcept + ulong fq_zech_poly_remove(fq_zech_poly_t f, const fq_zech_poly_t p, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_poly_is_irreducible(const fq_zech_poly_t f, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_poly_is_irreducible_ddf(const fq_zech_poly_t f, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_poly_is_irreducible_ben_or(const fq_zech_poly_t f, const fq_zech_ctx_t ctx) noexcept + bint _fq_zech_poly_is_squarefree(const fq_zech_struct * f, slong len, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_poly_is_squarefree(const fq_zech_poly_t f, const fq_zech_ctx_t ctx) noexcept + bint fq_zech_poly_factor_equal_deg_prob(fq_zech_poly_t factor, flint_rand_t state, const fq_zech_poly_t pol, slong d, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_equal_deg(fq_zech_poly_factor_t factors, const fq_zech_poly_t pol, slong d, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_split_single(fq_zech_poly_t linfactor, const fq_zech_poly_t input, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_distinct_deg(fq_zech_poly_factor_t res, const fq_zech_poly_t poly, slong * const * degs, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_squarefree(fq_zech_poly_factor_t res, const fq_zech_poly_t f, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor(fq_zech_poly_factor_t res, fq_zech_t lead, const fq_zech_poly_t f, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_cantor_zassenhaus(fq_zech_poly_factor_t res, const fq_zech_poly_t f, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_kaltofen_shoup(fq_zech_poly_factor_t res, const fq_zech_poly_t poly, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_berlekamp(fq_zech_poly_factor_t factors, const fq_zech_poly_t f, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_with_berlekamp(fq_zech_poly_factor_t res, fq_zech_t leading_coeff, const fq_zech_poly_t f, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_with_cantor_zassenhaus(fq_zech_poly_factor_t res, fq_zech_t leading_coeff, const fq_zech_poly_t f, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_factor_with_kaltofen_shoup(fq_zech_poly_factor_t res, fq_zech_t leading_coeff, const fq_zech_poly_t f, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_iterated_frobenius_preinv(fq_zech_poly_t * rop, slong n, const fq_zech_poly_t v, const fq_zech_poly_t vinv, const fq_zech_ctx_t ctx) noexcept + void fq_zech_poly_roots(fq_zech_poly_factor_t r, const fq_zech_poly_t f, int with_multiplicity, const fq_zech_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/fq_zech_vec.pxd b/src/sage/libs/flint/fq_zech_vec.pxd new file mode 100644 index 00000000000..02c71129d70 --- /dev/null +++ b/src/sage/libs/flint/fq_zech_vec.pxd @@ -0,0 +1,31 @@ +# distutils: libraries = flint +# distutils: depends = flint/fq_zech_vec.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + fq_zech_struct * _fq_zech_vec_init(slong len, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_vec_clear(fq_zech_struct * vec, slong len, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_vec_randtest(fq_zech_struct * f, flint_rand_t state, slong len, const fq_zech_ctx_t ctx) noexcept + int _fq_zech_vec_fprint(FILE * file, const fq_zech_struct * vec, slong len, const fq_zech_ctx_t ctx) noexcept + int _fq_zech_vec_print(const fq_zech_struct * vec, slong len, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_vec_set(fq_zech_struct * vec1, const fq_zech_struct * vec2, slong len2, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_vec_swap(fq_zech_struct * vec1, fq_zech_struct * vec2, slong len2, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_vec_zero(fq_zech_struct * vec, slong len, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_vec_neg(fq_zech_struct * vec1, const fq_zech_struct * vec2, slong len2, const fq_zech_ctx_t ctx) noexcept + bint _fq_zech_vec_equal(const fq_zech_struct * vec1, const fq_zech_struct * vec2, slong len, const fq_zech_ctx_t ctx) noexcept + bint _fq_zech_vec_is_zero(const fq_zech_struct * vec, slong len, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_vec_add(fq_zech_struct * res, const fq_zech_struct * vec1, const fq_zech_struct * vec2, slong len2, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_vec_sub(fq_zech_struct * res, const fq_zech_struct * vec1, const fq_zech_struct * vec2, slong len2, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_vec_scalar_addmul_fq_zech(fq_zech_struct * vec1, const fq_zech_struct * vec2, slong len2, const fq_zech_t c, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_vec_scalar_submul_fq_zech(fq_zech_struct * vec1, const fq_zech_struct * vec2, slong len2, const fq_zech_t c, const fq_zech_ctx_t ctx) noexcept + void _fq_zech_vec_dot(fq_zech_t res, const fq_zech_struct * vec1, const fq_zech_struct * vec2, slong len2, const fq_zech_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/gr.pxd b/src/sage/libs/flint/gr.pxd new file mode 100644 index 00000000000..2d15538d94d --- /dev/null +++ b/src/sage/libs/flint/gr.pxd @@ -0,0 +1,172 @@ +# distutils: libraries = flint +# distutils: depends = flint/gr.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + slong gr_ctx_sizeof_elem(gr_ctx_t ctx) noexcept + int gr_ctx_clear(gr_ctx_t ctx) noexcept + int gr_ctx_write(gr_stream_t out, gr_ctx_t ctx) noexcept + int gr_ctx_print(gr_ctx_t ctx) noexcept + int gr_ctx_println(gr_ctx_t ctx) noexcept + int gr_ctx_get_str(char ** s, gr_ctx_t ctx) noexcept + int gr_ctx_set_gen_name(gr_ctx_t ctx, const char * s) noexcept + int gr_ctx_set_gen_names(gr_ctx_t ctx, const char ** s) noexcept + void gr_init(gr_ptr res, gr_ctx_t ctx) noexcept + void gr_clear(gr_ptr res, gr_ctx_t ctx) noexcept + void gr_swap(gr_ptr x, gr_ptr y, gr_ctx_t ctx) noexcept + void gr_set_shallow(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + gr_ptr gr_heap_init(gr_ctx_t ctx) noexcept + void gr_heap_clear(gr_ptr x, gr_ctx_t ctx) noexcept + gr_ptr gr_heap_init_vec(slong len, gr_ctx_t ctx) noexcept + void gr_heap_clear_vec(gr_ptr x, slong len, gr_ctx_t ctx) noexcept + int gr_randtest(gr_ptr res, flint_rand_t state, gr_ctx_t ctx) noexcept + int gr_randtest_not_zero(gr_ptr res, flint_rand_t state, gr_ctx_t ctx) noexcept + int gr_randtest_small(gr_ptr res, flint_rand_t state, gr_ctx_t ctx) noexcept + int gr_write(gr_stream_t out, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_print(gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_println(gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_get_str(char ** s, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_set_str(gr_ptr res, const char * x, gr_ctx_t ctx) noexcept + int gr_write_n(gr_stream_t out, gr_srcptr x, slong n, gr_ctx_t ctx) noexcept + int gr_get_str_n(char ** s, gr_srcptr x, slong n, gr_ctx_t ctx) noexcept + int gr_set(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_set_other(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_ctx_t ctx) noexcept + int gr_set_ui(gr_ptr res, ulong x, gr_ctx_t ctx) noexcept + int gr_set_si(gr_ptr res, slong x, gr_ctx_t ctx) noexcept + int gr_set_fmpz(gr_ptr res, const fmpz_t x, gr_ctx_t ctx) noexcept + int gr_set_fmpq(gr_ptr res, const fmpq_t x, gr_ctx_t ctx) noexcept + int gr_set_d(gr_ptr res, double x, gr_ctx_t ctx) noexcept + int gr_get_si(slong * res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_get_ui(ulong * res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_get_fmpz(fmpz_t res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_get_fmpq(fmpq_t res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_get_d(double * res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_set_fmpz_2exp_fmpz(gr_ptr res, const fmpz_t x, const fmpz_t y, gr_ctx_t ctx) noexcept + int gr_get_fmpz_2exp_fmpz(fmpz_t res1, fmpz_t res2, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_get_fexpr(fexpr_t res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_get_fexpr_serialize(fexpr_t res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_set_fexpr(gr_ptr res, fexpr_vec_t inputs, gr_vec_t outputs, const fexpr_t x, gr_ctx_t ctx) noexcept + int gr_zero(gr_ptr res, gr_ctx_t ctx) noexcept + int gr_one(gr_ptr res, gr_ctx_t ctx) noexcept + int gr_neg_one(gr_ptr res, gr_ctx_t ctx) noexcept + int gr_gen(gr_ptr res, gr_ctx_t ctx) noexcept + int gr_gens(gr_vec_t res, gr_ctx_t ctx) noexcept + truth_t gr_is_zero(gr_srcptr x, gr_ctx_t ctx) noexcept + truth_t gr_is_one(gr_srcptr x, gr_ctx_t ctx) noexcept + truth_t gr_is_neg_one(gr_srcptr x, gr_ctx_t ctx) noexcept + truth_t gr_equal(gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + truth_t gr_is_integer(gr_srcptr x, gr_ctx_t ctx) noexcept + truth_t gr_is_rational(gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_neg(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_add(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_add_ui(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) noexcept + int gr_add_si(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) noexcept + int gr_add_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) noexcept + int gr_add_fmpq(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) noexcept + int gr_add_other(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_other_add(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_sub(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_sub_ui(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) noexcept + int gr_sub_si(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) noexcept + int gr_sub_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) noexcept + int gr_sub_fmpq(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) noexcept + int gr_sub_other(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_other_sub(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_mul(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_mul_ui(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) noexcept + int gr_mul_si(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) noexcept + int gr_mul_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) noexcept + int gr_mul_fmpq(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) noexcept + int gr_mul_other(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_other_mul(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_addmul(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_addmul_ui(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) noexcept + int gr_addmul_si(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) noexcept + int gr_addmul_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) noexcept + int gr_addmul_fmpq(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) noexcept + int gr_addmul_other(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_submul(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_submul_ui(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) noexcept + int gr_submul_si(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) noexcept + int gr_submul_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) noexcept + int gr_submul_fmpq(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) noexcept + int gr_submul_other(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_mul_two(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_sqr(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_mul_2exp_si(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) noexcept + int gr_mul_2exp_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) noexcept + truth_t gr_is_invertible(gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_inv(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_div(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_div_ui(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) noexcept + int gr_div_si(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) noexcept + int gr_div_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) noexcept + int gr_div_fmpq(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) noexcept + int gr_div_other(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_other_div(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_div_nonunique(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + truth_t gr_divides(gr_srcptr d, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_divexact(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_divexact_ui(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) noexcept + int gr_divexact_si(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) noexcept + int gr_divexact_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) noexcept + int gr_divexact_other(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_other_divexact(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_euclidean_div(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_euclidean_rem(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_euclidean_divrem(gr_ptr res1, gr_ptr res2, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_pow(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_pow_ui(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) noexcept + int gr_pow_si(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) noexcept + int gr_pow_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) noexcept + int gr_pow_fmpq(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) noexcept + int gr_pow_other(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_other_pow(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_srcptr y, gr_ctx_t ctx) noexcept + truth_t gr_is_square(gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_sqrt(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_rsqrt(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_gcd(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_lcm(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_factor(gr_ptr c, gr_vec_t factors, gr_vec_t exponents, gr_srcptr x, int flags, gr_ctx_t ctx) noexcept + int gr_numerator(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_denominator(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_floor(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_ceil(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_trunc(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_nint(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_abs(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_i(gr_ptr res, gr_ctx_t ctx) noexcept + int gr_conj(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_re(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_im(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_sgn(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_csgn(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_arg(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_pos_inf(gr_ptr res, gr_ctx_t ctx) noexcept + int gr_neg_inf(gr_ptr res, gr_ctx_t ctx) noexcept + int gr_uinf(gr_ptr res, gr_ctx_t ctx) noexcept + int gr_undefined(gr_ptr res, gr_ctx_t ctx) noexcept + int gr_unknown(gr_ptr res, gr_ctx_t ctx) noexcept + int gr_cmp(int * res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_cmp_other(int * res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_cmpabs(int * res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_cmpabs_other(int * res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_ctx_fq_prime(fmpz_t p, gr_ctx_t ctx) noexcept + int gr_ctx_fq_degree(slong * deg, gr_ctx_t ctx) noexcept + int gr_ctx_fq_order(fmpz_t q, gr_ctx_t ctx) noexcept + int gr_fq_frobenius(gr_ptr res, gr_srcptr x, slong e, gr_ctx_t ctx) noexcept + int gr_fq_multiplicative_order(fmpz_t res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_fq_norm(fmpz_t res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_fq_trace(fmpz_t res, gr_srcptr x, gr_ctx_t ctx) noexcept + truth_t gr_fq_is_primitive(gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_fq_pth_root(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/gr_generic.pxd b/src/sage/libs/flint/gr_generic.pxd new file mode 100644 index 00000000000..9bdf9a80232 --- /dev/null +++ b/src/sage/libs/flint/gr_generic.pxd @@ -0,0 +1,213 @@ +# distutils: libraries = flint +# distutils: depends = flint/gr_generic.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void gr_generic_init() noexcept + void gr_generic_clear() noexcept + void gr_generic_swap() noexcept + void gr_generic_randtest() noexcept + void gr_generic_write() noexcept + void gr_generic_zero() noexcept + void gr_generic_one() noexcept + void gr_generic_equal() noexcept + void gr_generic_set() noexcept + void gr_generic_set_si() noexcept + void gr_generic_set_ui() noexcept + void gr_generic_set_fmpz() noexcept + void gr_generic_neg() noexcept + void gr_generic_add() noexcept + void gr_generic_sub() noexcept + void gr_generic_mul() noexcept + int gr_generic_ctx_clear(gr_ctx_t ctx) noexcept + void gr_generic_set_shallow(gr_ptr res, gr_srcptr x, const gr_ctx_t ctx) noexcept + int gr_generic_write_n(gr_stream_t out, gr_srcptr x, slong n, gr_ctx_t ctx) noexcept + int gr_generic_randtest_not_zero(gr_ptr x, flint_rand_t state, gr_ctx_t ctx) noexcept + int gr_generic_randtest_small(gr_ptr x, flint_rand_t state, gr_ctx_t ctx) noexcept + truth_t gr_generic_is_zero(gr_srcptr x, gr_ctx_t ctx) noexcept + truth_t gr_generic_is_one(gr_srcptr x, gr_ctx_t ctx) noexcept + truth_t gr_generic_is_neg_one(gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_generic_neg_one(gr_ptr res, gr_ctx_t ctx) noexcept + int gr_generic_set_other(gr_ptr res, gr_srcptr x, gr_ctx_t xctx, gr_ctx_t ctx) noexcept + int gr_generic_set_fmpq(gr_ptr res, const fmpq_t y, gr_ctx_t ctx) noexcept + int gr_generic_add_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) noexcept + int gr_generic_add_ui(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) noexcept + int gr_generic_add_si(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) noexcept + int gr_generic_add_fmpq(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) noexcept + int gr_generic_add_other(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_generic_other_add(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_generic_sub_ui(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) noexcept + int gr_generic_sub_si(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) noexcept + int gr_generic_sub_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) noexcept + int gr_generic_sub_fmpq(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) noexcept + int gr_generic_sub_other(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_generic_other_sub(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_generic_mul_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) noexcept + int gr_generic_mul_ui(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) noexcept + int gr_generic_mul_si(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) noexcept + int gr_generic_mul_fmpq(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) noexcept + int gr_generic_mul_other(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_generic_other_mul(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_generic_addmul(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_generic_addmul_ui(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) noexcept + int gr_generic_addmul_si(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) noexcept + int gr_generic_addmul_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) noexcept + int gr_generic_addmul_fmpq(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) noexcept + int gr_generic_addmul_other(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_generic_submul(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_generic_submul_ui(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) noexcept + int gr_generic_submul_si(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) noexcept + int gr_generic_submul_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) noexcept + int gr_generic_submul_fmpq(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) noexcept + int gr_generic_submul_other(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_generic_mul_two(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_generic_sqr(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_generic_mul_2exp_si(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) noexcept + int gr_generic_mul_2exp_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) noexcept + int gr_generic_set_fmpz_2exp_fmpz(gr_ptr res, const fmpz_t x, const fmpz_t y, gr_ctx_t ctx) noexcept + int gr_generic_get_fmpz_2exp_fmpz(fmpz_t res1, fmpz_t res2, gr_ptr x, gr_ctx_t ctx) noexcept + int gr_generic_inv(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + truth_t gr_generic_is_invertible(gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_generic_div_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) noexcept + int gr_generic_div_ui(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) noexcept + int gr_generic_div_si(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) noexcept + int gr_generic_div_fmpq(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) noexcept + int gr_generic_div_other(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_generic_other_div(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_generic_divexact(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_generic_pow_fmpz_sliding(gr_ptr f, gr_srcptr g, const fmpz_t pow, gr_ctx_t ctx) noexcept + int gr_generic_pow_ui_sliding(gr_ptr f, gr_srcptr g, ulong pow, gr_ctx_t ctx) noexcept + int gr_generic_pow_fmpz_binexp(gr_ptr res, gr_srcptr x, const fmpz_t exp, gr_ctx_t ctx) noexcept + int gr_generic_pow_ui_binexp(gr_ptr res, gr_srcptr x, ulong e, gr_ctx_t ctx) noexcept + int gr_generic_pow_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t e, gr_ctx_t ctx) noexcept + int gr_generic_pow_si(gr_ptr res, gr_srcptr x, slong e, gr_ctx_t ctx) noexcept + int gr_generic_pow_ui(gr_ptr res, gr_srcptr x, ulong e, gr_ctx_t ctx) noexcept + int gr_generic_pow_fmpq(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) noexcept + int gr_generic_pow_other(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_generic_other_pow(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_srcptr y, gr_ctx_t ctx) noexcept + int _gr_fmpz_poly_evaluate_horner(gr_ptr res, const fmpz * f, slong len, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_fmpz_poly_evaluate_horner(gr_ptr res, const fmpz_poly_t f, gr_srcptr x, gr_ctx_t ctx) noexcept + int _gr_fmpz_poly_evaluate_rectangular(gr_ptr res, const fmpz * f, slong len, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_fmpz_poly_evaluate_rectangular(gr_ptr res, const fmpz_poly_t f, gr_srcptr x, gr_ctx_t ctx) noexcept + int _gr_fmpz_poly_evaluate(gr_ptr res, const fmpz * f, slong len, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_fmpz_poly_evaluate(gr_ptr res, const fmpz_poly_t f, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_fmpz_mpoly_evaluate(gr_ptr res, const fmpz_mpoly_t f, gr_srcptr x, const fmpz_mpoly_ctx_t mctx, gr_ctx_t ctx) noexcept + truth_t gr_generic_is_square(gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_generic_sqrt(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_generic_rsqrt(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_generic_numerator(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_generic_denominator(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_generic_cmp(int * res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_generic_cmpabs(int * res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_generic_cmp_other(int * res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_generic_cmpabs_other(int * res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) noexcept + int gr_generic_bernoulli_ui(gr_ptr res, ulong n, gr_ctx_t ctx) noexcept + int gr_generic_bernoulli_fmpz(gr_ptr res, const fmpz_t n, gr_ctx_t ctx) noexcept + int gr_generic_bernoulli_vec(gr_ptr res, slong len, gr_ctx_t ctx) noexcept + int gr_generic_eulernum_ui(gr_ptr res, ulong n, gr_ctx_t ctx) noexcept + int gr_generic_eulernum_fmpz(gr_ptr res, const fmpz_t n, gr_ctx_t ctx) noexcept + int gr_generic_eulernum_vec(gr_ptr res, slong len, gr_ctx_t ctx) noexcept + int gr_generic_stirling_s1u_uiui(gr_ptr res, ulong x, ulong y, gr_ctx_t ctx) noexcept + int gr_generic_stirling_s1_uiui(gr_ptr res, ulong x, ulong y, gr_ctx_t ctx) noexcept + int gr_generic_stirling_s2_uiui(gr_ptr res, ulong x, ulong y, gr_ctx_t ctx) noexcept + int gr_generic_stirling_s1u_ui_vec(gr_ptr res, ulong x, slong len, gr_ctx_t ctx) noexcept + int gr_generic_stirling_s1_ui_vec(gr_ptr res, ulong x, slong len, gr_ctx_t ctx) noexcept + int gr_generic_stirling_s2_ui_vec(gr_ptr res, ulong x, slong len, gr_ctx_t ctx) noexcept + void gr_generic_vec_init(gr_ptr vec, slong len, gr_ctx_t ctx) noexcept + void gr_generic_vec_clear(gr_ptr vec, slong len, gr_ctx_t ctx) noexcept + void gr_generic_vec_swap(gr_ptr vec1, gr_ptr vec2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_zero(gr_ptr vec, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_set(gr_ptr res, gr_srcptr src, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_neg(gr_ptr res, gr_srcptr src, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_normalise(slong * res, gr_srcptr vec, slong len, gr_ctx_t ctx) noexcept + slong gr_generic_vec_normalise_weak(gr_srcptr vec, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_mul_scalar_2exp_si(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) noexcept + int gr_generic_vec_scalar_addmul(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_generic_vec_scalar_submul(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_generic_vec_scalar_addmul_si(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) noexcept + int gr_generic_vec_scalar_submul_si(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) noexcept + truth_t gr_generic_vec_equal(gr_srcptr vec1, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + bint gr_generic_vec_is_zero(gr_srcptr vec, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_dot(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_dot_rev(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_dot_ui(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, const ulong * vec2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_dot_si(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, const slong * vec2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_dot_fmpz(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, const fmpz * vec2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_set_powers(gr_ptr res, gr_srcptr x, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_reciprocals(gr_ptr res, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_add(gr_ptr res, gr_srcptr src1, gr_srcptr src2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_sub(gr_ptr res, gr_srcptr src1, gr_srcptr src2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_mul(gr_ptr res, gr_srcptr src1, gr_srcptr src2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_div(gr_ptr res, gr_srcptr src1, gr_srcptr src2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_divexact(gr_ptr res, gr_srcptr src1, gr_srcptr src2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_pow(gr_ptr res, gr_srcptr src1, gr_srcptr src2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_add_scalar(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_generic_vec_sub_scalar(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_generic_vec_mul_scalar(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_generic_vec_div_scalar(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_generic_vec_divexact_scalar(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_generic_vec_pow_scalar(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_generic_vec_add_scalar_si(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) noexcept + int gr_generic_vec_sub_scalar_si(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) noexcept + int gr_generic_vec_mul_scalar_si(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) noexcept + int gr_generic_vec_div_scalar_si(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) noexcept + int gr_generic_vec_divexact_scalar_si(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) noexcept + int gr_generic_vec_pow_scalar_si(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) noexcept + int gr_generic_vec_add_scalar_ui(gr_ptr vec1, gr_srcptr vec2, slong len, ulong c, gr_ctx_t ctx) noexcept + int gr_generic_vec_sub_scalar_ui(gr_ptr vec1, gr_srcptr vec2, slong len, ulong c, gr_ctx_t ctx) noexcept + int gr_generic_vec_mul_scalar_ui(gr_ptr vec1, gr_srcptr vec2, slong len, ulong c, gr_ctx_t ctx) noexcept + int gr_generic_vec_div_scalar_ui(gr_ptr vec1, gr_srcptr vec2, slong len, ulong c, gr_ctx_t ctx) noexcept + int gr_generic_vec_divexact_scalar_ui(gr_ptr vec1, gr_srcptr vec2, slong len, ulong c, gr_ctx_t ctx) noexcept + int gr_generic_vec_pow_scalar_ui(gr_ptr vec1, gr_srcptr vec2, slong len, ulong c, gr_ctx_t ctx) noexcept + int gr_generic_vec_add_scalar_fmpz(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) noexcept + int gr_generic_vec_sub_scalar_fmpz(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) noexcept + int gr_generic_vec_mul_scalar_fmpz(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) noexcept + int gr_generic_vec_div_scalar_fmpz(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) noexcept + int gr_generic_vec_divexact_scalar_fmpz(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) noexcept + int gr_generic_vec_pow_scalar_fmpz(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) noexcept + int gr_generic_vec_add_scalar_fmpq(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpq_t c, gr_ctx_t ctx) noexcept + int gr_generic_vec_sub_scalar_fmpq(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpq_t c, gr_ctx_t ctx) noexcept + int gr_generic_vec_mul_scalar_fmpq(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpq_t c, gr_ctx_t ctx) noexcept + int gr_generic_vec_div_scalar_fmpq(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpq_t c, gr_ctx_t ctx) noexcept + int gr_generic_vec_divexact_scalar_fmpq(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpq_t c, gr_ctx_t ctx) noexcept + int gr_generic_vec_pow_scalar_fmpq(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpq_t c, gr_ctx_t ctx) noexcept + int gr_generic_scalar_add_vec(gr_ptr vec1, gr_srcptr c, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_scalar_sub_vec(gr_ptr vec1, gr_srcptr c, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_scalar_mul_vec(gr_ptr vec1, gr_srcptr c, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_scalar_div_vec(gr_ptr vec1, gr_srcptr c, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_scalar_divexact_vec(gr_ptr vec1, gr_srcptr c, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_scalar_pow_vec(gr_ptr vec1, gr_srcptr c, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_add_other(gr_ptr vec1, gr_srcptr vec2, gr_srcptr vec3, gr_ctx_t ctx3, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_sub_other(gr_ptr vec1, gr_srcptr vec2, gr_srcptr vec3, gr_ctx_t ctx3, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_mul_other(gr_ptr vec1, gr_srcptr vec2, gr_srcptr vec3, gr_ctx_t ctx3, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_div_other(gr_ptr vec1, gr_srcptr vec2, gr_srcptr vec3, gr_ctx_t ctx3, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_divexact_other(gr_ptr vec1, gr_srcptr vec2, gr_srcptr vec3, gr_ctx_t ctx3, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_pow_other(gr_ptr vec1, gr_srcptr vec2, gr_srcptr vec3, gr_ctx_t ctx3, slong len, gr_ctx_t ctx) noexcept + int gr_generic_other_add_vec(gr_ptr vec1, gr_srcptr vec2, gr_ctx_t ctx2, gr_srcptr vec3, slong len, gr_ctx_t ctx) noexcept + int gr_generic_other_sub_vec(gr_ptr vec1, gr_srcptr vec2, gr_ctx_t ctx2, gr_srcptr vec3, slong len, gr_ctx_t ctx) noexcept + int gr_generic_other_mul_vec(gr_ptr vec1, gr_srcptr vec2, gr_ctx_t ctx2, gr_srcptr vec3, slong len, gr_ctx_t ctx) noexcept + int gr_generic_other_div_vec(gr_ptr vec1, gr_srcptr vec2, gr_ctx_t ctx2, gr_srcptr vec3, slong len, gr_ctx_t ctx) noexcept + int gr_generic_other_divexact_vec(gr_ptr vec1, gr_srcptr vec2, gr_ctx_t ctx2, gr_srcptr vec3, slong len, gr_ctx_t ctx) noexcept + int gr_generic_other_pow_vec(gr_ptr vec1, gr_srcptr vec2, gr_ctx_t ctx2, gr_srcptr vec3, slong len, gr_ctx_t ctx) noexcept + int gr_generic_vec_add_scalar_other(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t cctx, gr_ctx_t ctx) noexcept + int gr_generic_vec_sub_scalar_other(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t cctx, gr_ctx_t ctx) noexcept + int gr_generic_vec_mul_scalar_other(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t cctx, gr_ctx_t ctx) noexcept + int gr_generic_vec_div_scalar_other(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t cctx, gr_ctx_t ctx) noexcept + int gr_generic_vec_divexact_scalar_other(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t cctx, gr_ctx_t ctx) noexcept + int gr_generic_vec_pow_scalar_other(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t cctx, gr_ctx_t ctx) noexcept + int gr_generic_scalar_other_add_vec(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_scalar_other_sub_vec(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_scalar_other_mul_vec(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_scalar_other_div_vec(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_scalar_other_divexact_vec(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int gr_generic_scalar_other_pow_vec(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/gr_mat.pxd b/src/sage/libs/flint/gr_mat.pxd new file mode 100644 index 00000000000..501be55b79e --- /dev/null +++ b/src/sage/libs/flint/gr_mat.pxd @@ -0,0 +1,159 @@ +# distutils: libraries = flint +# distutils: depends = flint/gr_mat.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + gr_ptr gr_mat_entry_ptr(gr_mat_t mat, slong i, slong j, gr_ctx_t ctx) noexcept + void gr_mat_init(gr_mat_t mat, slong rows, slong cols, gr_ctx_t ctx) noexcept + int gr_mat_init_set(gr_mat_t res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + void gr_mat_clear(gr_mat_t mat, gr_ctx_t ctx) noexcept + void gr_mat_swap(gr_mat_t mat1, gr_mat_t mat2, gr_ctx_t ctx) noexcept + int gr_mat_swap_entrywise(gr_mat_t mat1, const gr_mat_t mat2, gr_ctx_t ctx) noexcept + void gr_mat_window_init(gr_mat_t window, const gr_mat_t mat, slong r1, slong c1, slong r2, slong c2, gr_ctx_t ctx) noexcept + void gr_mat_window_clear(gr_mat_t window, gr_ctx_t ctx) noexcept + int gr_mat_write(gr_stream_t out, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_print(const gr_mat_t mat, gr_ctx_t ctx) noexcept + truth_t gr_mat_equal(const gr_mat_t mat1, const gr_mat_t mat2, gr_ctx_t ctx) noexcept + truth_t gr_mat_is_zero(const gr_mat_t mat, gr_ctx_t ctx) noexcept + truth_t gr_mat_is_one(const gr_mat_t mat, gr_ctx_t ctx) noexcept + truth_t gr_mat_is_neg_one(const gr_mat_t mat, gr_ctx_t ctx) noexcept + truth_t gr_mat_is_scalar(const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_zero(gr_mat_t res, gr_ctx_t ctx) noexcept + int gr_mat_one(gr_mat_t res, gr_ctx_t ctx) noexcept + int gr_mat_set(gr_mat_t res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_set_fmpz_mat(gr_mat_t res, const fmpz_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_set_fmpq_mat(gr_mat_t res, const fmpq_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_set_scalar(gr_mat_t res, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_mat_set_ui(gr_mat_t res, ulong c, gr_ctx_t ctx) noexcept + int gr_mat_set_si(gr_mat_t res, slong c, gr_ctx_t ctx) noexcept + int gr_mat_set_fmpz(gr_mat_t res, const fmpz_t c, gr_ctx_t ctx) noexcept + int gr_mat_set_fmpq(gr_mat_t res, const fmpq_t c, gr_ctx_t ctx) noexcept + int gr_mat_concat_horizontal(gr_mat_t res, const gr_mat_t mat1, const gr_mat_t mat2, gr_ctx_t ctx) noexcept + int gr_mat_concat_vertical(gr_mat_t res, const gr_mat_t mat1, const gr_mat_t mat2, gr_ctx_t ctx) noexcept + int gr_mat_transpose(gr_mat_t B, const gr_mat_t A, gr_ctx_t ctx) noexcept + int gr_mat_swap_rows(gr_mat_t mat, slong * perm, slong r, slong s, gr_ctx_t ctx) noexcept + int gr_mat_swap_cols(gr_mat_t mat, slong * perm, slong r, slong s, gr_ctx_t ctx) noexcept + int gr_mat_invert_rows(gr_mat_t mat, slong * perm, gr_ctx_t ctx) noexcept + int gr_mat_invert_cols(gr_mat_t mat, slong * perm, gr_ctx_t ctx) noexcept + truth_t gr_mat_is_empty(const gr_mat_t mat, gr_ctx_t ctx) noexcept + truth_t gr_mat_is_square(const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_neg(gr_mat_t res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_add(gr_mat_t res, const gr_mat_t mat1, const gr_mat_t mat2, gr_ctx_t ctx) noexcept + int gr_mat_sub(gr_mat_t res, const gr_mat_t mat1, const gr_mat_t mat2, gr_ctx_t ctx) noexcept + int gr_mat_mul_classical(gr_mat_t res, const gr_mat_t mat1, const gr_mat_t mat2, gr_ctx_t ctx) noexcept + int gr_mat_mul_strassen(gr_mat_t C, const gr_mat_t A, const gr_mat_t B, gr_ctx_t ctx) noexcept + int gr_mat_mul_generic(gr_mat_t C, const gr_mat_t A, const gr_mat_t B, gr_ctx_t ctx) noexcept + int gr_mat_mul(gr_mat_t res, const gr_mat_t mat1, const gr_mat_t mat2, gr_ctx_t ctx) noexcept + int gr_mat_sqr(gr_mat_t res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_add_scalar(gr_mat_t res, const gr_mat_t mat, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_mat_sub_scalar(gr_mat_t res, const gr_mat_t mat, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_mat_mul_scalar(gr_mat_t res, const gr_mat_t mat, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_mat_addmul_scalar(gr_mat_t res, const gr_mat_t mat, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_mat_submul_scalar(gr_mat_t res, const gr_mat_t mat, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_mat_div_scalar(gr_mat_t res, const gr_mat_t mat, gr_srcptr c, gr_ctx_t ctx) noexcept + int _gr_mat_gr_poly_evaluate(gr_mat_t res, gr_srcptr poly, slong len, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_gr_poly_evaluate(gr_mat_t res, const gr_poly_t poly, const gr_mat_t mat, gr_ctx_t ctx) noexcept + truth_t gr_mat_is_upper_triangular(const gr_mat_t mat, gr_ctx_t ctx) noexcept + truth_t gr_mat_is_lower_triangular(const gr_mat_t mat, gr_ctx_t ctx) noexcept + truth_t gr_mat_is_diagonal(const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_mul_diag(gr_mat_t res, const gr_mat_t A, const gr_vec_t D, gr_ctx_t ctx) noexcept + int gr_mat_diag_mul(gr_mat_t res, const gr_vec_t D, const gr_mat_t A, gr_ctx_t ctx) noexcept + int gr_mat_find_nonzero_pivot_large_abs(slong * pivot_row, gr_mat_t mat, slong start_row, slong end_row, slong column, gr_ctx_t ctx) noexcept + int gr_mat_find_nonzero_pivot_generic(slong * pivot_row, gr_mat_t mat, slong start_row, slong end_row, slong column, gr_ctx_t ctx) noexcept + int gr_mat_find_nonzero_pivot(slong * pivot_row, gr_mat_t mat, slong start_row, slong end_row, slong column, gr_ctx_t ctx) noexcept + int gr_mat_lu_classical(slong * rank, slong * P, gr_mat_t LU, const gr_mat_t A, int rank_check, gr_ctx_t ctx) noexcept + int gr_mat_lu_recursive(slong * rank, slong * P, gr_mat_t LU, const gr_mat_t A, int rank_check, gr_ctx_t ctx) noexcept + int gr_mat_lu(slong * rank, slong * P, gr_mat_t LU, const gr_mat_t A, int rank_check, gr_ctx_t ctx) noexcept + int gr_mat_fflu(slong * rank, slong * P, gr_mat_t LU, gr_ptr den, const gr_mat_t A, int rank_check, gr_ctx_t ctx) noexcept + int gr_mat_nonsingular_solve_tril_classical(gr_mat_t X, const gr_mat_t L, const gr_mat_t B, int unit, gr_ctx_t ctx) noexcept + int gr_mat_nonsingular_solve_tril_recursive(gr_mat_t X, const gr_mat_t L, const gr_mat_t B, int unit, gr_ctx_t ctx) noexcept + int gr_mat_nonsingular_solve_tril(gr_mat_t X, const gr_mat_t L, const gr_mat_t B, int unit, gr_ctx_t ctx) noexcept + int gr_mat_nonsingular_solve_triu_classical(gr_mat_t X, const gr_mat_t U, const gr_mat_t B, int unit, gr_ctx_t ctx) noexcept + int gr_mat_nonsingular_solve_triu_recursive(gr_mat_t X, const gr_mat_t U, const gr_mat_t B, int unit, gr_ctx_t ctx) noexcept + int gr_mat_nonsingular_solve_triu(gr_mat_t X, const gr_mat_t U, const gr_mat_t B, int unit, gr_ctx_t ctx) noexcept + int gr_mat_nonsingular_solve_fflu(gr_mat_t X, const gr_mat_t A, const gr_mat_t B, gr_ctx_t ctx) noexcept + int gr_mat_nonsingular_solve_lu(gr_mat_t X, const gr_mat_t A, const gr_mat_t B, gr_ctx_t ctx) noexcept + int gr_mat_nonsingular_solve(gr_mat_t X, const gr_mat_t A, const gr_mat_t B, gr_ctx_t ctx) noexcept + int gr_mat_nonsingular_solve_fflu_precomp(gr_mat_t X, const slong * perm, const gr_mat_t LU, const gr_mat_t B, gr_ctx_t ctx) noexcept + int gr_mat_nonsingular_solve_lu_precomp(gr_mat_t X, const slong * perm, const gr_mat_t LU, const gr_mat_t B, gr_ctx_t ctx) noexcept + int gr_mat_nonsingular_solve_den_fflu(gr_mat_t X, gr_ptr den, const gr_mat_t A, const gr_mat_t B, gr_ctx_t ctx) noexcept + int gr_mat_nonsingular_solve_den(gr_mat_t X, gr_ptr den, const gr_mat_t A, const gr_mat_t B, gr_ctx_t ctx) noexcept + int gr_mat_solve_field(gr_mat_t X, const gr_mat_t A, const gr_mat_t B, gr_ctx_t ctx) noexcept + int gr_mat_det_fflu(gr_ptr res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_det_berkowitz(gr_ptr res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_det_lu(gr_ptr res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_det_cofactor(gr_ptr res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_det_generic_field(gr_ptr res, const gr_mat_t A, gr_ctx_t ctx) noexcept + int gr_mat_det_generic_integral_domain(gr_ptr res, const gr_mat_t A, gr_ctx_t ctx) noexcept + int gr_mat_det_generic(gr_ptr res, const gr_mat_t A, gr_ctx_t ctx) noexcept + int gr_mat_det(gr_ptr res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_trace(gr_ptr res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_rank_fflu(slong * rank, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_rank_lu(slong * rank, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_rank(slong * rank, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_rref_lu(slong * rank, gr_mat_t R, const gr_mat_t A, gr_ctx_t ctx) noexcept + int gr_mat_rref_fflu(slong * rank, gr_mat_t R, const gr_mat_t A, gr_ctx_t ctx) noexcept + int gr_mat_rref(slong * rank, gr_mat_t R, const gr_mat_t A, gr_ctx_t ctx) noexcept + int gr_mat_rref_den_fflu(slong * rank, gr_mat_t R, gr_ptr den, const gr_mat_t A, gr_ctx_t ctx) noexcept + int gr_mat_rref_den(slong * rank, gr_mat_t R, gr_ptr den, const gr_mat_t A, gr_ctx_t ctx) noexcept + int gr_mat_nullspace(gr_mat_t X, const gr_mat_t A, gr_ctx_t ctx) noexcept + int gr_mat_inv(gr_mat_t res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_adjugate_charpoly(gr_mat_t adj, gr_ptr det, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_adjugate_cofactor(gr_mat_t adj, gr_ptr det, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_adjugate(gr_mat_t adj, gr_ptr det, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int _gr_mat_charpoly(gr_ptr res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_charpoly(gr_poly_t res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int _gr_mat_charpoly_berkowitz(gr_ptr res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_charpoly_berkowitz(gr_poly_t res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int _gr_mat_charpoly_danilevsky_inplace(gr_ptr res, gr_mat_t mat, gr_ctx_t ctx) noexcept + int _gr_mat_charpoly_danilevsky(gr_ptr res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_charpoly_danilevsky(gr_poly_t res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int _gr_mat_charpoly_gauss(gr_ptr res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_charpoly_gauss(gr_poly_t res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int _gr_mat_charpoly_householder(gr_ptr res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_charpoly_householder(gr_poly_t res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int _gr_mat_charpoly_faddeev(gr_ptr res, gr_mat_t adj, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_charpoly_faddeev(gr_poly_t res, gr_mat_t adj, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int _gr_mat_charpoly_faddeev_bsgs(gr_ptr res, gr_mat_t adj, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_charpoly_faddeev_bsgs(gr_poly_t res, gr_mat_t adj, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int _gr_mat_charpoly_from_hessenberg(gr_ptr res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_charpoly_from_hessenberg(gr_poly_t res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_minpoly_field(gr_poly_t res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_apply_row_similarity(gr_mat_t M, slong r, gr_ptr d, gr_ctx_t ctx) noexcept + int gr_mat_eigenvalues(gr_vec_t lmbda, gr_vec_t mult, const gr_mat_t mat, int flags, gr_ctx_t ctx) noexcept + int gr_mat_eigenvalues_other(gr_vec_t lmbda, gr_vec_t mult, const gr_mat_t mat, gr_ctx_t mat_ctx, int flags, gr_ctx_t ctx) noexcept + int gr_mat_diagonalization_precomp(gr_vec_t D, gr_mat_t L, gr_mat_t R, const gr_mat_t A, const gr_vec_t eigenvalues, const gr_vec_t mult, gr_ctx_t ctx) noexcept + int gr_mat_diagonalization_generic(gr_vec_t D, gr_mat_t L, gr_mat_t R, const gr_mat_t A, int flags, gr_ctx_t ctx) noexcept + int gr_mat_diagonalization(gr_vec_t D, gr_mat_t L, gr_mat_t R, const gr_mat_t A, int flags, gr_ctx_t ctx) noexcept + int gr_mat_set_jordan_blocks(gr_mat_t mat, const gr_vec_t lmbda, slong num_blocks, slong * block_lambda, slong * block_size, gr_ctx_t ctx) noexcept + int gr_mat_jordan_blocks(gr_vec_t lmbda, slong * num_blocks, slong * block_lambda, slong * block_size, const gr_mat_t A, gr_ctx_t ctx) noexcept + int gr_mat_jordan_transformation(gr_mat_t mat, const gr_vec_t lmbda, slong num_blocks, slong * block_lambda, slong * block_size, const gr_mat_t A, gr_ctx_t ctx) noexcept + int gr_mat_jordan_form(gr_mat_t J, gr_mat_t P, const gr_mat_t A, gr_ctx_t ctx) noexcept + int gr_mat_exp_jordan(gr_mat_t res, const gr_mat_t A, gr_ctx_t ctx) noexcept + int gr_mat_exp(gr_mat_t res, const gr_mat_t A, gr_ctx_t ctx) noexcept + int gr_mat_log_jordan(gr_mat_t res, const gr_mat_t A, gr_ctx_t ctx) noexcept + int gr_mat_log(gr_mat_t res, const gr_mat_t A, gr_ctx_t ctx) noexcept + truth_t gr_mat_is_hessenberg(const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_hessenberg_gauss(gr_mat_t res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_hessenberg_householder(gr_mat_t res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_hessenberg(gr_mat_t res, const gr_mat_t mat, gr_ctx_t ctx) noexcept + int gr_mat_randtest(gr_mat_t res, flint_rand_t state, gr_ctx_t ctx) noexcept + int gr_mat_randops(gr_mat_t mat, flint_rand_t state, slong count, gr_ctx_t ctx) noexcept + int gr_mat_randpermdiag(int * parity, gr_mat_t mat, flint_rand_t state, gr_ptr diag, slong n, gr_ctx_t ctx) noexcept + int gr_mat_randrank(gr_mat_t mat, flint_rand_t state, slong rank, gr_ctx_t ctx) noexcept + int gr_mat_ones(gr_mat_t res, gr_ctx_t ctx) noexcept + int gr_mat_pascal(gr_mat_t res, int triangular, gr_ctx_t ctx) noexcept + int gr_mat_stirling(gr_mat_t res, int kind, gr_ctx_t ctx) noexcept + int gr_mat_hilbert(gr_mat_t res, gr_ctx_t ctx) noexcept + int gr_mat_hadamard(gr_mat_t res, gr_ctx_t ctx) noexcept + int gr_mat_reduce_row(slong * column, gr_mat_t A, slong * P, slong * L, slong m, gr_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/gr_mpoly.pxd b/src/sage/libs/flint/gr_mpoly.pxd new file mode 100644 index 00000000000..c587f378017 --- /dev/null +++ b/src/sage/libs/flint/gr_mpoly.pxd @@ -0,0 +1,66 @@ +# distutils: libraries = flint +# distutils: depends = flint/gr_mpoly.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void gr_mpoly_init(gr_mpoly_t A, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + void gr_mpoly_init3(gr_mpoly_t A, slong alloc, flint_bitcnt_t bits, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + void gr_mpoly_init2(gr_mpoly_t A, slong alloc, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + void gr_mpoly_clear(gr_mpoly_t A, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + void gr_mpoly_swap(gr_mpoly_t A, gr_mpoly_t B, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_set(gr_mpoly_t A, const gr_mpoly_t B, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_zero(gr_mpoly_t A, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + truth_t gr_mpoly_is_zero(const gr_mpoly_t A, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_gen(gr_mpoly_t A, slong var, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + truth_t gr_mpoly_is_gen(const gr_mpoly_t A, slong var, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + truth_t gr_mpoly_equal(const gr_mpoly_t A, const gr_mpoly_t B, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_randtest_bits(gr_mpoly_t A, flint_rand_t state, slong length, flint_bitcnt_t exp_bits, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_write_pretty(gr_stream_t out, const gr_mpoly_t A, const char ** x, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_print_pretty(const gr_mpoly_t A, const char ** x, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_get_coeff_scalar_fmpz(gr_ptr c, const gr_mpoly_t A, const fmpz * exp, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_get_coeff_scalar_ui(gr_ptr c, const gr_mpoly_t A, const ulong * exp, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_set_coeff_scalar_fmpz(gr_mpoly_t A, gr_srcptr c, const fmpz * exp, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_set_coeff_ui_fmpz(gr_mpoly_t A, ulong c, const fmpz * exp, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_set_coeff_si_fmpz(gr_mpoly_t A, slong c, const fmpz * exp, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_set_coeff_fmpz_fmpz(gr_mpoly_t A, const fmpz_t c, const fmpz * exp, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_set_coeff_fmpq_fmpz(gr_mpoly_t A, const fmpq_t c, const fmpz * exp, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_set_coeff_scalar_ui(gr_mpoly_t poly, gr_srcptr c, const ulong * exp, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_set_coeff_ui_ui(gr_mpoly_t A, ulong c, const ulong * exp, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_set_coeff_si_ui(gr_mpoly_t A, slong c, const ulong * exp, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_set_coeff_fmpz_ui(gr_mpoly_t A, const fmpz_t c, const ulong * exp, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_set_coeff_fmpq_ui(gr_mpoly_t A, const fmpq_t c, const ulong * exp, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_neg(gr_mpoly_t A, const gr_mpoly_t B, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_add(gr_mpoly_t A, const gr_mpoly_t B, const gr_mpoly_t C, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_sub(gr_mpoly_t A, const gr_mpoly_t B, const gr_mpoly_t C, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_mul(gr_mpoly_t A, const gr_mpoly_t B, const gr_mpoly_t C, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_mul_johnson(gr_mpoly_t A, const gr_mpoly_t B, const gr_mpoly_t C, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_mul_monomial(gr_mpoly_t A, const gr_mpoly_t B, const gr_mpoly_t C, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_mul_scalar(gr_mpoly_t A, const gr_mpoly_t B, gr_srcptr c, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_mul_si(gr_mpoly_t A, const gr_mpoly_t B, slong c, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_mul_ui(gr_mpoly_t A, const gr_mpoly_t B, ulong c, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_mul_fmpz(gr_mpoly_t A, const gr_mpoly_t B, const fmpz_t c, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_mul_fmpq(gr_mpoly_t A, const gr_mpoly_t B, const fmpq_t c, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + void _gr_mpoly_fit_length(gr_ptr * coeffs, slong * coeffs_alloc, ulong ** exps, slong * exps_alloc, slong N, slong length, gr_ctx_t cctx) noexcept + void gr_mpoly_fit_length(gr_mpoly_t A, slong len, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + void gr_mpoly_fit_bits(gr_mpoly_t A, flint_bitcnt_t bits, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + void gr_mpoly_fit_length_fit_bits(gr_mpoly_t A, slong len, flint_bitcnt_t bits, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + void gr_mpoly_fit_length_reset_bits(gr_mpoly_t A, slong len, flint_bitcnt_t bits, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + void _gr_mpoly_set_length(gr_mpoly_t A, slong newlen, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + void _gr_mpoly_push_exp_ui(gr_mpoly_t A, const ulong * exp, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_push_term_scalar_ui(gr_mpoly_t A, gr_srcptr c, const ulong * exp, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + void _gr_mpoly_push_exp_fmpz(gr_mpoly_t A, const fmpz * exp, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_push_term_scalar_fmpz(gr_mpoly_t A, gr_srcptr c, const fmpz * exp, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + void gr_mpoly_sort_terms(gr_mpoly_t A, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + int gr_mpoly_combine_like_terms(gr_mpoly_t A, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + truth_t gr_mpoly_is_canonical(const gr_mpoly_t A, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept + void gr_mpoly_assert_canonical(const gr_mpoly_t A, const mpoly_ctx_t mctx, gr_ctx_t cctx) noexcept diff --git a/src/sage/libs/flint/gr_poly.pxd b/src/sage/libs/flint/gr_poly.pxd new file mode 100644 index 00000000000..c6e11462a1c --- /dev/null +++ b/src/sage/libs/flint/gr_poly.pxd @@ -0,0 +1,274 @@ +# distutils: libraries = flint +# distutils: depends = flint/gr_poly.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void gr_poly_init(gr_poly_t poly, gr_ctx_t ctx) noexcept + void gr_poly_init2(gr_poly_t poly, slong len, gr_ctx_t ctx) noexcept + void gr_poly_clear(gr_poly_t poly, gr_ctx_t ctx) noexcept + gr_ptr gr_poly_entry_ptr(gr_poly_t poly, slong i, gr_ctx_t ctx) noexcept + slong gr_poly_length(const gr_poly_t poly, gr_ctx_t ctx) noexcept + void gr_poly_swap(gr_poly_t poly1, gr_poly_t poly2, gr_ctx_t ctx) noexcept + void gr_poly_fit_length(gr_poly_t poly, slong len, gr_ctx_t ctx) noexcept + void _gr_poly_set_length(gr_poly_t poly, slong len, gr_ctx_t ctx) noexcept + void _gr_poly_normalise(gr_poly_t poly, gr_ctx_t ctx) noexcept + int gr_poly_set(gr_poly_t res, const gr_poly_t src, gr_ctx_t ctx) noexcept + int gr_poly_get_fmpz_poly(gr_poly_t res, const fmpz_poly_t src, gr_ctx_t ctx) noexcept + int gr_poly_set_fmpq_poly(gr_poly_t res, const fmpq_poly_t src, gr_ctx_t ctx) noexcept + int gr_poly_set_gr_poly_other(gr_poly_t res, const gr_poly_t x, gr_ctx_t x_ctx, gr_ctx_t ctx) noexcept + int _gr_poly_reverse(gr_ptr res, gr_srcptr poly, slong len, slong n, gr_ctx_t ctx) noexcept + int gr_poly_reverse(gr_poly_t res, const gr_poly_t poly, slong n, gr_ctx_t ctx) noexcept + int gr_poly_truncate(gr_poly_t res, const gr_poly_t poly, slong newlen, gr_ctx_t ctx) noexcept + int gr_poly_zero(gr_poly_t poly, gr_ctx_t ctx) noexcept + int gr_poly_one(gr_poly_t poly, gr_ctx_t ctx) noexcept + int gr_poly_neg_one(gr_poly_t poly, gr_ctx_t ctx) noexcept + int gr_poly_gen(gr_poly_t poly, gr_ctx_t ctx) noexcept + int gr_poly_write(gr_stream_t out, const gr_poly_t poly, const char * x, gr_ctx_t ctx) noexcept + int gr_poly_print(const gr_poly_t poly, gr_ctx_t ctx) noexcept + int gr_poly_randtest(gr_poly_t poly, flint_rand_t state, slong len, gr_ctx_t ctx) noexcept + truth_t _gr_poly_equal(gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx) noexcept + truth_t gr_poly_equal(const gr_poly_t poly1, const gr_poly_t poly2, gr_ctx_t ctx) noexcept + truth_t gr_poly_is_zero(const gr_poly_t poly, gr_ctx_t ctx) noexcept + truth_t gr_poly_is_one(const gr_poly_t poly, gr_ctx_t ctx) noexcept + truth_t gr_poly_is_gen(const gr_poly_t poly, gr_ctx_t ctx) noexcept + truth_t gr_poly_is_scalar(const gr_poly_t poly, gr_ctx_t ctx) noexcept + int gr_poly_set_scalar(gr_poly_t poly, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_poly_set_si(gr_poly_t poly, slong c, gr_ctx_t ctx) noexcept + int gr_poly_set_ui(gr_poly_t poly, ulong c, gr_ctx_t ctx) noexcept + int gr_poly_set_fmpz(gr_poly_t poly, const fmpz_t c, gr_ctx_t ctx) noexcept + int gr_poly_set_fmpq(gr_poly_t poly, const fmpq_t c, gr_ctx_t ctx) noexcept + int gr_poly_set_coeff_scalar(gr_poly_t poly, slong n, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_poly_set_coeff_si(gr_poly_t poly, slong n, slong c, gr_ctx_t ctx) noexcept + int gr_poly_set_coeff_ui(gr_poly_t poly, slong n, ulong c, gr_ctx_t ctx) noexcept + int gr_poly_set_coeff_fmpz(gr_poly_t poly, slong n, const fmpz_t c, gr_ctx_t ctx) noexcept + int gr_poly_set_coeff_fmpq(gr_poly_t poly, slong n, const fmpq_t c, gr_ctx_t ctx) noexcept + int gr_poly_get_coeff_scalar(gr_ptr res, const gr_poly_t poly, slong n, gr_ctx_t ctx) noexcept + int gr_poly_neg(gr_poly_t res, const gr_poly_t src, gr_ctx_t ctx) noexcept + int _gr_poly_add(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx) noexcept + int gr_poly_add(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, gr_ctx_t ctx) noexcept + int _gr_poly_sub(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx) noexcept + int gr_poly_sub(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, gr_ctx_t ctx) noexcept + int _gr_poly_mul(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx) noexcept + int gr_poly_mul(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, gr_ctx_t ctx) noexcept + int _gr_poly_mullow_generic(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_mullow(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, slong len, gr_ctx_t ctx) noexcept + int gr_poly_mullow(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, slong len, gr_ctx_t ctx) noexcept + int gr_poly_mul_scalar(gr_poly_t res, const gr_poly_t poly, gr_srcptr c, gr_ctx_t ctx) noexcept + int _gr_poly_pow_series_ui_binexp(gr_ptr res, gr_srcptr f, slong flen, ulong exp, slong len, gr_ctx_t ctx) noexcept + int gr_poly_pow_series_ui_binexp(gr_poly_t res, const gr_poly_t poly, ulong exp, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_pow_series_ui(gr_ptr res, gr_srcptr f, slong flen, ulong exp, slong len, gr_ctx_t ctx) noexcept + int gr_poly_pow_series_ui(gr_poly_t res, const gr_poly_t poly, ulong exp, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_pow_ui_binexp(gr_ptr res, gr_srcptr f, slong flen, ulong exp, gr_ctx_t ctx) noexcept + int gr_poly_pow_ui_binexp(gr_poly_t res, const gr_poly_t poly, ulong exp, gr_ctx_t ctx) noexcept + int _gr_poly_pow_ui(gr_ptr res, gr_srcptr f, slong flen, ulong exp, gr_ctx_t ctx) noexcept + int gr_poly_pow_ui(gr_poly_t res, const gr_poly_t poly, ulong exp, gr_ctx_t ctx) noexcept + int gr_poly_pow_fmpz(gr_poly_t res, const gr_poly_t poly, const fmpz_t exp, gr_ctx_t ctx) noexcept + int _gr_poly_pow_series_fmpq_recurrence(gr_ptr h, gr_srcptr f, slong flen, const fmpq_t exp, slong len, int precomp, gr_ctx_t ctx) noexcept + int gr_poly_pow_series_fmpq_recurrence(gr_poly_t res, const gr_poly_t poly, const fmpq_t exp, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_shift_left(gr_ptr res, gr_srcptr poly, slong len, slong n, gr_ctx_t ctx) noexcept + int gr_poly_shift_left(gr_poly_t res, const gr_poly_t poly, slong n, gr_ctx_t ctx) noexcept + int _gr_poly_shift_right(gr_ptr res, gr_srcptr poly, slong len, slong n, gr_ctx_t ctx) noexcept + int gr_poly_shift_right(gr_poly_t res, const gr_poly_t poly, slong n, gr_ctx_t ctx) noexcept + int _gr_poly_divrem_divconquer_preinv1(gr_ptr Q, gr_ptr R, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_srcptr invB, slong cutoff, gr_ctx_t ctx) noexcept + int _gr_poly_divrem_divconquer_noinv(gr_ptr Q, gr_ptr R, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, slong cutoff, gr_ctx_t ctx) noexcept + int _gr_poly_divrem_divconquer(gr_ptr Q, gr_ptr R, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, slong cutoff, gr_ctx_t ctx) noexcept + int gr_poly_divrem_divconquer(gr_poly_t Q, gr_poly_t R, const gr_poly_t A, const gr_poly_t B, slong cutoff, gr_ctx_t ctx) noexcept + int _gr_poly_divrem_basecase_preinv1(gr_ptr Q, gr_ptr R, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_srcptr invB, gr_ctx_t ctx) noexcept + int _gr_poly_divrem_basecase_noinv(gr_ptr Q, gr_ptr R, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) noexcept + int _gr_poly_divrem_basecase(gr_ptr Q, gr_ptr R, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) noexcept + int gr_poly_divrem_basecase(gr_poly_t Q, gr_poly_t R, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) noexcept + int _gr_poly_divrem_newton(gr_ptr Q, gr_ptr R, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) noexcept + int gr_poly_divrem_newton(gr_poly_t Q, gr_poly_t R, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) noexcept + int _gr_poly_divrem(gr_ptr Q, gr_ptr R, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) noexcept + int gr_poly_divrem(gr_poly_t Q, gr_poly_t R, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) noexcept + int _gr_poly_div_divconquer_preinv1(gr_ptr Q, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_srcptr invB, slong cutoff, gr_ctx_t ctx) noexcept + int _gr_poly_div_divconquer_noinv(gr_ptr Q, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, slong cutoff, gr_ctx_t ctx) noexcept + int _gr_poly_div_divconquer(gr_ptr Q, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, slong cutoff, gr_ctx_t ctx) noexcept + int gr_poly_div_divconquer(gr_poly_t Q, const gr_poly_t A, const gr_poly_t B, slong cutoff, gr_ctx_t ctx) noexcept + int _gr_poly_div_basecase_preinv1(gr_ptr Q, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_srcptr invB, gr_ctx_t ctx) noexcept + int _gr_poly_div_basecase_noinv(gr_ptr Q, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) noexcept + int _gr_poly_div_basecase(gr_ptr Q, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) noexcept + int gr_poly_div_basecase(gr_poly_t Q, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) noexcept + int _gr_poly_div_newton(gr_ptr Q, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) noexcept + int gr_poly_div_newton(gr_poly_t Q, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) noexcept + int _gr_poly_div(gr_ptr Q, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) noexcept + int gr_poly_div(gr_poly_t Q, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) noexcept + int _gr_poly_rem(gr_ptr R, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) noexcept + int gr_poly_rem(gr_poly_t R, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) noexcept + int _gr_poly_inv_series_newton(gr_ptr res, gr_srcptr A, slong Alen, slong len, slong cutoff, gr_ctx_t ctx) noexcept + int gr_poly_inv_series_newton(gr_poly_t res, const gr_poly_t A, slong len, slong cutoff, gr_ctx_t ctx) noexcept + int _gr_poly_inv_series_basecase_preinv1(gr_ptr res, gr_srcptr A, slong Alen, gr_srcptr Ainv, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_inv_series_basecase(gr_ptr res, gr_srcptr A, slong Alen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_inv_series_basecase(gr_poly_t res, const gr_poly_t A, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_inv_series(gr_ptr res, gr_srcptr A, slong Alen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_inv_series(gr_poly_t res, const gr_poly_t A, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_div_series_newton(gr_ptr res, gr_srcptr A, slong Alen, gr_srcptr B, slong Blen, slong len, slong cutoff, gr_ctx_t ctx) noexcept + int gr_poly_div_series_newton(gr_poly_t res, const gr_poly_t A, const gr_poly_t B, slong len, slong cutoff, gr_ctx_t ctx) noexcept + int _gr_poly_div_series_divconquer(gr_ptr res, gr_srcptr B, slong Blen, gr_srcptr A, slong Alen, slong len, slong cutoff, gr_ctx_t ctx) noexcept + int gr_poly_div_series_divconquer(gr_poly_t Q, const gr_poly_t A, const gr_poly_t B, slong len, slong cutoff, gr_ctx_t ctx) noexcept + int _gr_poly_div_series_invmul(gr_ptr res, gr_srcptr B, slong Blen, gr_srcptr A, slong Alen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_div_series_invmul(gr_poly_t res, const gr_poly_t A, const gr_poly_t B, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_div_series_basecase_preinv1(gr_ptr Q, gr_srcptr A, slong Alen, gr_srcptr B, slong Blen, gr_srcptr Binv, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_div_series_basecase_noinv(gr_ptr Q, gr_srcptr A, slong Alen, gr_srcptr B, slong Blen, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_div_series_basecase(gr_ptr res, gr_srcptr A, slong Alen, gr_srcptr B, slong Blen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_div_series_basecase(gr_poly_t res, const gr_poly_t A, const gr_poly_t B, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_div_series(gr_ptr res, gr_srcptr A, slong Alen, gr_srcptr B, slong Blen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_div_series(gr_poly_t res, const gr_poly_t A, const gr_poly_t B, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_divexact_basecase_bidirectional(gr_ptr Q, gr_srcptr A, slong Alen, gr_srcptr B, slong Blen, gr_ctx_t ctx) noexcept + int gr_poly_divexact_basecase_bidirectional(gr_poly_t Q, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) noexcept + int _gr_poly_divexact_bidirectional(gr_ptr Q, gr_srcptr A, slong Alen, gr_srcptr B, slong Blen, gr_ctx_t ctx) noexcept + int gr_poly_divexact_bidirectional(gr_poly_t Q, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) noexcept + int _gr_poly_divexact_basecase_noinv(gr_ptr Q, gr_srcptr A, slong Alen, gr_srcptr B, slong Blen, gr_ctx_t ctx) noexcept + int _gr_poly_divexact_basecase(gr_ptr Q, gr_srcptr A, slong Alen, gr_srcptr B, slong Blen, gr_ctx_t ctx) noexcept + int gr_poly_divexact_basecase(gr_poly_t Q, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) noexcept + int _gr_poly_divexact_series_basecase_noinv(gr_ptr Q, gr_srcptr A, slong Alen, gr_srcptr B, slong Blen, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_divexact_series_basecase(gr_ptr Q, gr_srcptr A, slong Alen, gr_srcptr B, slong Blen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_divexact_series_basecase(gr_poly_t Q, const gr_poly_t A, const gr_poly_t B, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_sqrt_series_newton(gr_ptr res, gr_srcptr f, slong flen, slong len, slong cutoff, gr_ctx_t ctx) noexcept + int gr_poly_sqrt_series_newton(gr_poly_t res, const gr_poly_t f, slong len, slong cutoff, gr_ctx_t ctx) noexcept + int _gr_poly_sqrt_series_basecase(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_sqrt_series_basecase(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_sqrt_series_miller(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_sqrt_series_miller(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_sqrt_series(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_sqrt_series(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_rsqrt_series_newton(gr_ptr res, gr_srcptr f, slong flen, slong len, slong cutoff, gr_ctx_t ctx) noexcept + int gr_poly_rsqrt_series_newton(gr_poly_t res, const gr_poly_t f, slong len, slong cutoff, gr_ctx_t ctx) noexcept + int _gr_poly_rsqrt_series_basecase(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_rsqrt_series_basecase(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_rsqrt_series_miller(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_rsqrt_series_miller(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_rsqrt_series(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_rsqrt_series(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_evaluate_rectangular(gr_ptr res, gr_srcptr poly, slong len, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_poly_evaluate_rectangular(gr_ptr res, const gr_poly_t poly, gr_srcptr x, gr_ctx_t ctx) noexcept + int _gr_poly_evaluate_modular(gr_ptr res, gr_srcptr poly, slong len, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_poly_evaluate_modular(gr_ptr res, const gr_poly_t poly, gr_srcptr x, gr_ctx_t ctx) noexcept + int _gr_poly_evaluate_horner(gr_ptr res, gr_srcptr poly, slong len, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_poly_evaluate_horner(gr_ptr res, const gr_poly_t poly, gr_srcptr x, gr_ctx_t ctx) noexcept + int _gr_poly_evaluate(gr_ptr res, gr_srcptr poly, slong len, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_poly_evaluate(gr_ptr res, const gr_poly_t poly, gr_srcptr x, gr_ctx_t ctx) noexcept + int _gr_poly_evaluate_other_horner(gr_ptr res, gr_srcptr f, slong len, const gr_srcptr x, gr_ctx_t x_ctx, gr_ctx_t ctx) noexcept + int gr_poly_evaluate_other_horner(gr_ptr res, const gr_poly_t f, gr_srcptr x, gr_ctx_t x_ctx, gr_ctx_t ctx) noexcept + int _gr_poly_evaluate_other_rectangular(gr_ptr res, gr_srcptr f, slong len, const gr_srcptr x, gr_ctx_t x_ctx, gr_ctx_t ctx) noexcept + int gr_poly_evaluate_other_rectangular(gr_ptr res, const gr_poly_t f, gr_srcptr x, gr_ctx_t x_ctx, gr_ctx_t ctx) noexcept + int _gr_poly_evaluate_other(gr_ptr res, gr_srcptr f, slong len, const gr_srcptr x, gr_ctx_t x_ctx, gr_ctx_t ctx) noexcept + int gr_poly_evaluate_other(gr_ptr res, const gr_poly_t f, gr_srcptr x, gr_ctx_t x_ctx, gr_ctx_t ctx) noexcept + gr_ptr * _gr_poly_tree_alloc(slong len, gr_ctx_t ctx) noexcept + void _gr_poly_tree_free(gr_ptr * tree, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_tree_build(gr_ptr * tree, gr_srcptr roots, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_evaluate_vec_fast_precomp(gr_ptr vs, gr_srcptr poly, slong plen, gr_ptr * tree, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_evaluate_vec_fast(gr_ptr ys, gr_srcptr poly, slong plen, gr_srcptr xs, slong n, gr_ctx_t ctx) noexcept + int gr_poly_evaluate_vec_fast(gr_vec_t ys, const gr_poly_t poly, const gr_vec_t xs, gr_ctx_t ctx) noexcept + int _gr_poly_evaluate_vec_iter(gr_ptr ys, gr_srcptr poly, slong plen, gr_srcptr xs, slong n, gr_ctx_t ctx) noexcept + int gr_poly_evaluate_vec_iter(gr_vec_t ys, const gr_poly_t poly, const gr_vec_t xs, gr_ctx_t ctx) noexcept + int _gr_poly_taylor_shift_horner(gr_ptr res, gr_srcptr poly, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_poly_taylor_shift_horner(gr_poly_t res, const gr_poly_t poly, gr_srcptr c, gr_ctx_t ctx) noexcept + int _gr_poly_taylor_shift_divconquer(gr_ptr res, gr_srcptr poly, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_poly_taylor_shift_divconquer(gr_poly_t res, const gr_poly_t poly, gr_srcptr c, gr_ctx_t ctx) noexcept + int _gr_poly_taylor_shift_convolution(gr_ptr res, gr_srcptr poly, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_poly_taylor_shift_convolution(gr_poly_t res, const gr_poly_t poly, gr_srcptr c, gr_ctx_t ctx) noexcept + int _gr_poly_taylor_shift(gr_ptr res, gr_srcptr poly, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int gr_poly_taylor_shift(gr_poly_t res, const gr_poly_t poly, gr_srcptr c, gr_ctx_t ctx) noexcept + int _gr_poly_compose_horner(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx) noexcept + int gr_poly_compose_horner(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, gr_ctx_t ctx) noexcept + int _gr_poly_compose_divconquer(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx) noexcept + int gr_poly_compose_divconquer(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, gr_ctx_t ctx) noexcept + int _gr_poly_compose(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx) noexcept + int gr_poly_compose(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, gr_ctx_t ctx) noexcept + int _gr_poly_compose_series_horner(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, slong n, gr_ctx_t ctx) noexcept + int gr_poly_compose_series_horner(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, slong n, gr_ctx_t ctx) noexcept + int _gr_poly_compose_series_brent_kung(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, slong n, gr_ctx_t ctx) noexcept + int gr_poly_compose_series_brent_kung(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, slong n, gr_ctx_t ctx) noexcept + int _gr_poly_compose_series_divconquer(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, slong n, gr_ctx_t ctx) noexcept + int gr_poly_compose_series_divconquer(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, slong n, gr_ctx_t ctx) noexcept + int _gr_poly_compose_series(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, slong n, gr_ctx_t ctx) noexcept + int gr_poly_compose_series(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, slong n, gr_ctx_t ctx) noexcept + int _gr_poly_revert_series_lagrange(gr_ptr res, gr_srcptr f, slong flen, slong n, gr_ctx_t ctx) noexcept + int gr_poly_revert_series_lagrange(gr_poly_t res, const gr_poly_t f, slong n, gr_ctx_t ctx) noexcept + int _gr_poly_revert_series_lagrange_fast(gr_ptr res, gr_srcptr f, slong flen, slong n, gr_ctx_t ctx) noexcept + int gr_poly_revert_series_lagrange_fast(gr_poly_t res, const gr_poly_t f, slong n, gr_ctx_t ctx) noexcept + int _gr_poly_revert_series_newton(gr_ptr res, gr_srcptr f, slong flen, slong n, gr_ctx_t ctx) noexcept + int gr_poly_revert_series_newton(gr_poly_t res, const gr_poly_t f, slong n, gr_ctx_t ctx) noexcept + int _gr_poly_revert_series(gr_ptr res, gr_srcptr f, slong flen, slong n, gr_ctx_t ctx) noexcept + int gr_poly_revert_series(gr_poly_t res, const gr_poly_t f, slong n, gr_ctx_t ctx) noexcept + int _gr_poly_derivative(gr_ptr res, gr_srcptr poly, slong len, gr_ctx_t ctx) noexcept + int gr_poly_derivative(gr_poly_t res, const gr_poly_t poly, gr_ctx_t ctx) noexcept + int _gr_poly_nth_derivative(gr_ptr res, gr_srcptr poly, ulong n, slong len, gr_ctx_t ctx) noexcept + int gr_poly_nth_derivative(gr_poly_t res, const gr_poly_t poly, ulong n, gr_ctx_t ctx) noexcept + int _gr_poly_integral(gr_ptr res, gr_srcptr poly, slong len, gr_ctx_t ctx) noexcept + int gr_poly_integral(gr_poly_t res, const gr_poly_t poly, gr_ctx_t ctx) noexcept + int _gr_poly_make_monic(gr_ptr res, gr_srcptr poly, slong len, gr_ctx_t ctx) noexcept + int gr_poly_make_monic(gr_poly_t res, const gr_poly_t src, gr_ctx_t ctx) noexcept + truth_t _gr_poly_is_monic(gr_srcptr poly, slong len, gr_ctx_t ctx) noexcept + truth_t gr_poly_is_monic(const gr_poly_t res, gr_ctx_t ctx) noexcept + int _gr_poly_hgcd(gr_ptr r, slong * sgn, gr_ptr * M, slong * lenM, gr_ptr A, slong * lenA, gr_ptr B, slong * lenB, gr_srcptr a, slong lena, gr_srcptr b, slong lenb, slong cutoff, gr_ctx_t ctx) noexcept + int _gr_poly_gcd_hgcd(gr_ptr G, slong * _lenG, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, slong inner_cutoff, slong cutoff, gr_ctx_t ctx) noexcept + int gr_poly_gcd_hgcd(gr_poly_t G, const gr_poly_t A, const gr_poly_t B, slong inner_cutoff, slong cutoff, gr_ctx_t ctx) noexcept + int _gr_poly_gcd_euclidean(gr_ptr G, slong * lenG, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) noexcept + int gr_poly_gcd_euclidean(gr_poly_t G, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) noexcept + int _gr_poly_gcd(gr_ptr G, slong * lenG, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) noexcept + int gr_poly_gcd(gr_poly_t G, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) noexcept + int _gr_poly_xgcd_euclidean(slong * lenG, gr_ptr G, gr_ptr S, gr_ptr T, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) noexcept + int gr_poly_xgcd_euclidean(gr_poly_t G, gr_poly_t S, gr_poly_t T, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) noexcept + int _gr_poly_xgcd_hgcd(slong * Glen, gr_ptr G, gr_ptr S, gr_ptr T, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, slong hgcd_cutoff, slong cutoff, gr_ctx_t ctx) noexcept + int gr_poly_xgcd_hgcd(gr_poly_t G, gr_poly_t S, gr_poly_t T, const gr_poly_t A, const gr_poly_t B, slong hgcd_cutoff, slong cutoff, gr_ctx_t ctx) noexcept + int _gr_poly_resultant_euclidean(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx) noexcept + int gr_poly_resultant_euclidean(gr_ptr res, const gr_poly_t f, const gr_poly_t g, gr_ctx_t ctx) noexcept + int _gr_poly_resultant_hgcd(gr_ptr res, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, slong inner_cutoff, slong cutoff, gr_ctx_t ctx) noexcept + int gr_poly_resultant_hgcd(gr_ptr res, const gr_poly_t f, const gr_poly_t g, slong inner_cutoff, slong cutoff, gr_ctx_t ctx) noexcept + int _gr_poly_resultant_sylvester(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx) noexcept + int gr_poly_resultant_sylvester(gr_ptr res, const gr_poly_t f, const gr_poly_t g, gr_ctx_t ctx) noexcept + int _gr_poly_resultant_small(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx) noexcept + int gr_poly_resultant_small(gr_ptr res, const gr_poly_t f, const gr_poly_t g, gr_ctx_t ctx) noexcept + int _gr_poly_resultant(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx) noexcept + int gr_poly_resultant(gr_ptr res, const gr_poly_t f, const gr_poly_t g, gr_ctx_t ctx) noexcept + int gr_poly_factor_squarefree(gr_ptr c, gr_vec_t fac, gr_vec_t exp, const gr_poly_t poly, gr_ctx_t ctx) noexcept + int gr_poly_squarefree_part(gr_poly_t res, const gr_poly_t poly, gr_ctx_t ctx) noexcept + int gr_poly_roots(gr_vec_t roots, gr_vec_t mult, const gr_poly_t poly, int flags, gr_ctx_t ctx) noexcept + int gr_poly_roots_other(gr_vec_t roots, gr_vec_t mult, const gr_poly_t poly, gr_ctx_t poly_ctx, int flags, gr_ctx_t ctx) noexcept + int _gr_poly_asin_series(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_asin_series(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_asinh_series(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_asinh_series(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_acos_series(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_acos_series(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_acosh_series(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_acosh_series(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_atan_series(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_atan_series(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_atanh_series(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_atanh_series(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_log_series(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_log_series(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_log1p_series(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_log1p_series(gr_poly_t res, const gr_poly_t f, slong len, gr_ctx_t ctx) noexcept + int _gr_poly_exp_series_basecase(gr_ptr f, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) noexcept + int gr_poly_exp_series_basecase(gr_poly_t f, const gr_poly_t h, slong n, gr_ctx_t ctx) noexcept + int _gr_poly_exp_series_basecase_mul(gr_ptr f, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) noexcept + int gr_poly_exp_series_basecase_mul(gr_poly_t f, const gr_poly_t h, slong n, gr_ctx_t ctx) noexcept + int _gr_poly_exp_series_newton(gr_ptr f, gr_ptr g, gr_srcptr h, slong hlen, slong n, slong cutoff, gr_ctx_t ctx) noexcept + int gr_poly_exp_series_newton(gr_poly_t f, const gr_poly_t h, slong n, slong cutoff, gr_ctx_t ctx) noexcept + int _gr_poly_exp_series_generic(gr_ptr f, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) noexcept + int _gr_poly_exp_series(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) noexcept + int gr_poly_exp_series(gr_poly_t f, const gr_poly_t h, slong n, gr_ctx_t ctx) noexcept + int _gr_poly_sin_cos_series_basecase(gr_ptr s, gr_ptr c, gr_srcptr h, slong hlen, slong n, int times_pi, gr_ctx_t ctx) noexcept + int gr_poly_sin_cos_series_basecase(gr_poly_t s, gr_poly_t c, const gr_poly_t h, slong n, int times_pi, gr_ctx_t ctx) noexcept + int _gr_poly_sin_cos_series_tangent(gr_ptr s, gr_ptr c, gr_srcptr h, slong hlen, slong n, int times_pi, gr_ctx_t ctx) noexcept + int gr_poly_sin_cos_series_tangent(gr_poly_t s, gr_poly_t c, const gr_poly_t h, slong n, int times_pi, gr_ctx_t ctx) noexcept + int _gr_poly_tan_series_basecase(gr_ptr f, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) noexcept + int gr_poly_tan_series_basecase(gr_poly_t f, const gr_poly_t h, slong n, gr_ctx_t ctx) noexcept + int _gr_poly_tan_series_newton(gr_ptr f, gr_srcptr h, slong hlen, slong n, slong cutoff, gr_ctx_t ctx) noexcept + int gr_poly_tan_series_newton(gr_poly_t f, const gr_poly_t h, slong n, slong cutoff, gr_ctx_t ctx) noexcept + int _gr_poly_tan_series(gr_ptr f, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) noexcept + int gr_poly_tan_series(gr_poly_t f, const gr_poly_t h, slong n, gr_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/gr_special.pxd b/src/sage/libs/flint/gr_special.pxd new file mode 100644 index 00000000000..adf199366fe --- /dev/null +++ b/src/sage/libs/flint/gr_special.pxd @@ -0,0 +1,235 @@ +# distutils: libraries = flint +# distutils: depends = flint/gr_special.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + int gr_pi(gr_ptr res, gr_ctx_t ctx) noexcept + int gr_euler(gr_ptr res, gr_ctx_t ctx) noexcept + int gr_catalan(gr_ptr res, gr_ctx_t ctx) noexcept + int gr_khinchin(gr_ptr res, gr_ctx_t ctx) noexcept + int gr_glaisher(gr_ptr res, gr_ctx_t ctx) noexcept + int gr_exp(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_expm1(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_exp2(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_exp10(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_exp_pi_i(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_log(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_log1p(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_log2(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_log10(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_log_pi_i(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_sin(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_cos(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_sin_cos(gr_ptr res1, gr_ptr res2, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_tan(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_cot(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_sec(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_csc(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_sin_pi(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_cos_pi(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_sin_cos_pi(gr_ptr res1, gr_ptr res2, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_tan_pi(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_cot_pi(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_sec_pi(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_csc_pi(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_sinc(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_sinc_pi(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_sinh(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_cosh(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_sinh_cosh(gr_ptr res1, gr_ptr res2, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_tanh(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_coth(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_sech(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_csch(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_asin(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_acos(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_atan(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_atan2(gr_ptr res, gr_srcptr y, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_acot(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_asec(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_acsc(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_asin_pi(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_acos_pi(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_atan_pi(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_acot_pi(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_asec_pi(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_acsc_pi(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_asinh(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_acosh(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_atanh(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_acoth(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_asech(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_acsch(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_lambertw(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_lambertw_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t k, gr_ctx_t ctx) noexcept + int gr_fac(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_fac_ui(gr_ptr res, ulong x, gr_ctx_t ctx) noexcept + int gr_fac_fmpz(gr_ptr res, const fmpz_t x, gr_ctx_t ctx) noexcept + int gr_fac_vec(gr_ptr res, slong len, gr_ctx_t ctx) noexcept + int gr_rfac(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_rfac_ui(gr_ptr res, ulong x, gr_ctx_t ctx) noexcept + int gr_rfac_fmpz(gr_ptr res, const fmpz_t x, gr_ctx_t ctx) noexcept + int gr_rfac_vec(gr_ptr res, slong len, gr_ctx_t ctx) noexcept + int gr_bin(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_bin_ui(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) noexcept + int gr_bin_uiui(gr_ptr res, ulong x, ulong y, gr_ctx_t ctx) noexcept + int gr_bin_vec(gr_ptr res, gr_srcptr x, slong len, gr_ctx_t ctx) noexcept + int gr_bin_ui_vec(gr_ptr res, ulong x, slong len, gr_ctx_t ctx) noexcept + int gr_rising(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_rising_ui(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) noexcept + int gr_falling(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_falling_ui(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) noexcept + int gr_gamma(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_gamma_fmpz(gr_ptr res, const fmpz_t x, gr_ctx_t ctx) noexcept + int gr_gamma_fmpq(gr_ptr res, const fmpq_t x, gr_ctx_t ctx) noexcept + int gr_rgamma(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_lgamma(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_digamma(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_barnes_g(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_log_barnes_g(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_beta(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_doublefac(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_doublefac_ui(gr_ptr res, ulong x, gr_ctx_t ctx) noexcept + int gr_harmonic(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_harmonic_ui(gr_ptr res, ulong x, gr_ctx_t ctx) noexcept + int gr_bernoulli_ui(gr_ptr res, ulong n, gr_ctx_t ctx) noexcept + int gr_bernoulli_fmpz(gr_ptr res, const fmpz_t n, gr_ctx_t ctx) noexcept + int gr_bernoulli_vec(gr_ptr res, slong len, gr_ctx_t ctx) noexcept + int gr_eulernum_ui(gr_ptr res, ulong x, gr_ctx_t ctx) noexcept + int gr_eulernum_fmpz(gr_ptr res, const fmpz_t x, gr_ctx_t ctx) noexcept + int gr_eulernum_vec(gr_ptr res, slong len, gr_ctx_t ctx) noexcept + int gr_fib_ui(gr_ptr res, ulong n, gr_ctx_t ctx) noexcept + int gr_fib_fmpz(gr_ptr res, const fmpz_t n, gr_ctx_t ctx) noexcept + int gr_fib_vec(gr_ptr res, slong len, gr_ctx_t ctx) noexcept + int gr_stirling_s1u_uiui(gr_ptr res, ulong x, ulong y, gr_ctx_t ctx) noexcept + int gr_stirling_s1_uiui(gr_ptr res, ulong x, ulong y, gr_ctx_t ctx) noexcept + int gr_stirling_s2_uiui(gr_ptr res, ulong x, ulong y, gr_ctx_t ctx) noexcept + int gr_stirling_s1u_ui_vec(gr_ptr res, ulong x, slong len, gr_ctx_t ctx) noexcept + int gr_stirling_s1_ui_vec(gr_ptr res, ulong x, slong len, gr_ctx_t ctx) noexcept + int gr_stirling_s2_ui_vec(gr_ptr res, ulong x, slong len, gr_ctx_t ctx) noexcept + int gr_bellnum_ui(gr_ptr res, ulong x, gr_ctx_t ctx) noexcept + int gr_bellnum_fmpz(gr_ptr res, const fmpz_t x, gr_ctx_t ctx) noexcept + int gr_bellnum_vec(gr_ptr res, slong len, gr_ctx_t ctx) noexcept + int gr_partitions_ui(gr_ptr res, ulong x, gr_ctx_t ctx) noexcept + int gr_partitions_fmpz(gr_ptr res, const fmpz_t x, gr_ctx_t ctx) noexcept + int gr_partitions_vec(gr_ptr res, slong len, gr_ctx_t ctx) noexcept + int gr_erf(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_erfc(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_erfcx(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_erfi(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_erfinv(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_erfcinv(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_fresnel_s(gr_ptr res, gr_srcptr x, int normalized, gr_ctx_t ctx) noexcept + int gr_fresnel_c(gr_ptr res, gr_srcptr x, int normalized, gr_ctx_t ctx) noexcept + int gr_fresnel(gr_ptr res1, gr_ptr res2, gr_srcptr x, int normalized, gr_ctx_t ctx) noexcept + int gr_gamma_upper(gr_ptr res, gr_srcptr x, gr_srcptr y, int regularized, gr_ctx_t ctx) noexcept + int gr_gamma_lower(gr_ptr res, gr_srcptr x, gr_srcptr y, int regularized, gr_ctx_t ctx) noexcept + int gr_beta_lower(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, int regularized, gr_ctx_t ctx) noexcept + int gr_exp_integral(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_exp_integral_ei(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_sin_integral(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_cos_integral(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_sinh_integral(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_cosh_integral(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_log_integral(gr_ptr res, gr_srcptr x, int offset, gr_ctx_t ctx) noexcept + int gr_dilog(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_chebyshev_t_fmpz(gr_ptr res, const fmpz_t n, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_chebyshev_t(gr_ptr res, gr_srcptr n, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_chebyshev_u_fmpz(gr_ptr res, const fmpz_t n, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_chebyshev_u(gr_ptr res, gr_srcptr n, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_jacobi_p(gr_ptr res, gr_srcptr n, gr_srcptr a, gr_srcptr b, gr_srcptr z, gr_ctx_t ctx) noexcept + int gr_gegenbauer_c(gr_ptr res, gr_srcptr n, gr_srcptr m, gr_srcptr z, gr_ctx_t ctx) noexcept + int gr_laguerre_l(gr_ptr res, gr_srcptr n, gr_srcptr m, gr_srcptr z, gr_ctx_t ctx) noexcept + int gr_hermite_h(gr_ptr res, gr_srcptr n, gr_srcptr z, gr_ctx_t ctx) noexcept + int gr_legendre_p(gr_ptr res, gr_srcptr n, gr_srcptr m, gr_srcptr z, int type, gr_ctx_t ctx) noexcept + int gr_legendre_q(gr_ptr res, gr_srcptr n, gr_srcptr m, gr_srcptr z, int type, gr_ctx_t ctx) noexcept + int gr_spherical_y_si(gr_ptr res, slong n, slong m, gr_srcptr theta, gr_srcptr phi, gr_ctx_t ctx) noexcept + int gr_legendre_p_root_ui(gr_ptr root, gr_ptr weight, ulong n, ulong k, gr_ctx_t ctx) noexcept + int gr_bessel_j(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_bessel_y(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_bessel_i(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_bessel_k(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_bessel_j_y(gr_ptr res1, gr_ptr res2, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_bessel_i_scaled(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_bessel_k_scaled(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_airy(gr_ptr res1, gr_ptr res2, gr_ptr res3, gr_ptr res4, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_airy_ai(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_airy_bi(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_airy_ai_prime(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_airy_bi_prime(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_airy_ai_zero(gr_ptr res, const fmpz_t n, gr_ctx_t ctx) noexcept + int gr_airy_bi_zero(gr_ptr res, const fmpz_t n, gr_ctx_t ctx) noexcept + int gr_airy_ai_prime_zero(gr_ptr res, const fmpz_t n, gr_ctx_t ctx) noexcept + int gr_airy_bi_prime_zero(gr_ptr res, const fmpz_t n, gr_ctx_t ctx) noexcept + int gr_coulomb(gr_ptr res1, gr_ptr res2, gr_ptr res3, gr_ptr res4, gr_srcptr x, gr_srcptr y, gr_srcptr z, gr_ctx_t ctx) noexcept + int gr_coulomb_f(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, gr_ctx_t ctx) noexcept + int gr_coulomb_g(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, gr_ctx_t ctx) noexcept + int gr_coulomb_hpos(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, gr_ctx_t ctx) noexcept + int gr_coulomb_hneg(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, gr_ctx_t ctx) noexcept + int gr_hypgeom_0f1(gr_ptr res, gr_srcptr a, gr_srcptr z, int flags, gr_ctx_t ctx) noexcept + int gr_hypgeom_1f1(gr_ptr res, gr_srcptr a, gr_srcptr b, gr_srcptr z, int flags, gr_ctx_t ctx) noexcept + int gr_hypgeom_u(gr_ptr res, gr_srcptr a, gr_srcptr b, gr_srcptr z, int flags, gr_ctx_t ctx) noexcept + int gr_hypgeom_2f1(gr_ptr res, gr_srcptr a, gr_srcptr b, gr_srcptr c, gr_srcptr z, int flags, gr_ctx_t ctx) noexcept + int gr_hypgeom_pfq(gr_ptr res, const gr_vec_t a, const gr_vec_t b, gr_srcptr z, int flags, gr_ctx_t ctx) noexcept + int gr_zeta(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_zeta_ui(gr_ptr res, ulong x, gr_ctx_t ctx) noexcept + int gr_hurwitz_zeta(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_polygamma(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_polylog(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_lerch_phi(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, gr_ctx_t ctx) noexcept + int gr_stieltjes(gr_ptr res, const fmpz_t x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_dirichlet_eta(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_riemann_xi(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_zeta_zero(gr_ptr res, const fmpz_t n, gr_ctx_t ctx) noexcept + int gr_zeta_zero_vec(gr_ptr res, const fmpz_t n, slong len, gr_ctx_t ctx) noexcept + int gr_zeta_nzeros(gr_ptr res, gr_srcptr t, gr_ctx_t ctx) noexcept + int gr_dirichlet_chi_fmpz(gr_ptr res, const dirichlet_group_t G, const dirichlet_char_t chi, const fmpz_t n, gr_ctx_t ctx) noexcept + int gr_dirichlet_chi_vec(gr_ptr res, const dirichlet_group_t G, const dirichlet_char_t chi, slong len, gr_ctx_t ctx) noexcept + int gr_dirichlet_l(gr_ptr res, const dirichlet_group_t G, const dirichlet_char_t chi, gr_srcptr s, gr_ctx_t ctx) noexcept + int gr_dirichlet_l_all(gr_vec_t res, const dirichlet_group_t G, gr_srcptr s, gr_ctx_t ctx) noexcept + int gr_dirichlet_hardy_theta(gr_ptr res, const dirichlet_group_t G, const dirichlet_char_t chi, gr_srcptr t, gr_ctx_t ctx) noexcept + int gr_dirichlet_hardy_z(gr_ptr res, const dirichlet_group_t G, const dirichlet_char_t chi, gr_srcptr t, gr_ctx_t ctx) noexcept + int gr_agm1(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_agm(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) noexcept + int gr_elliptic_k(gr_ptr res, gr_srcptr m, gr_ctx_t ctx) noexcept + int gr_elliptic_e(gr_ptr res, gr_srcptr m, gr_ctx_t ctx) noexcept + int gr_elliptic_pi(gr_ptr res, gr_srcptr n, gr_srcptr m, gr_ctx_t ctx) noexcept + int gr_elliptic_f(gr_ptr res, gr_srcptr phi, gr_srcptr m, int pi, gr_ctx_t ctx) noexcept + int gr_elliptic_e_inc(gr_ptr res, gr_srcptr phi, gr_srcptr m, int pi, gr_ctx_t ctx) noexcept + int gr_elliptic_pi_inc(gr_ptr res, gr_srcptr n, gr_srcptr phi, gr_srcptr m, int pi, gr_ctx_t ctx) noexcept + int gr_carlson_rc(gr_ptr res, gr_srcptr x, gr_srcptr y, int flags, gr_ctx_t ctx) noexcept + int gr_carlson_rf(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, int flags, gr_ctx_t ctx) noexcept + int gr_carlson_rd(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, int flags, gr_ctx_t ctx) noexcept + int gr_carlson_rg(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, int flags, gr_ctx_t ctx) noexcept + int gr_carlson_rj(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, gr_srcptr w, int flags, gr_ctx_t ctx) noexcept + int gr_jacobi_theta(gr_ptr res1, gr_ptr res2, gr_ptr res3, gr_ptr res4, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) noexcept + int gr_jacobi_theta_1(gr_ptr res, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) noexcept + int gr_jacobi_theta_2(gr_ptr res, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) noexcept + int gr_jacobi_theta_3(gr_ptr res, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) noexcept + int gr_jacobi_theta_4(gr_ptr res, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) noexcept + int gr_dedekind_eta(gr_ptr res, gr_srcptr tau, gr_ctx_t ctx) noexcept + int gr_dedekind_eta_q(gr_ptr res, gr_srcptr tau, gr_ctx_t ctx) noexcept + int gr_modular_j(gr_ptr res, gr_srcptr tau, gr_ctx_t ctx) noexcept + int gr_modular_lambda(gr_ptr res, gr_srcptr tau, gr_ctx_t ctx) noexcept + int gr_modular_delta(gr_ptr res, gr_srcptr tau, gr_ctx_t ctx) noexcept + int gr_hilbert_class_poly(gr_ptr res, slong D, gr_srcptr x, gr_ctx_t ctx) noexcept + int gr_eisenstein_e(gr_ptr res, ulong n, gr_srcptr tau, gr_ctx_t ctx) noexcept + int gr_eisenstein_g(gr_ptr res, ulong n, gr_srcptr tau, gr_ctx_t ctx) noexcept + int gr_eisenstein_g_vec(gr_ptr res, gr_srcptr tau, slong len, gr_ctx_t ctx) noexcept + int gr_elliptic_invariants(gr_ptr res1, gr_ptr res2, gr_srcptr tau, gr_ctx_t ctx) noexcept + int gr_elliptic_roots(gr_ptr res1, gr_ptr res2, gr_ptr res3, gr_srcptr tau, gr_ctx_t ctx) noexcept + int gr_weierstrass_p(gr_ptr res, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) noexcept + int gr_weierstrass_p_prime(gr_ptr res, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) noexcept + int gr_weierstrass_p_inv(gr_ptr res, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) noexcept + int gr_weierstrass_zeta(gr_ptr res, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) noexcept + int gr_weierstrass_sigma(gr_ptr res, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/gr_vec.pxd b/src/sage/libs/flint/gr_vec.pxd new file mode 100644 index 00000000000..bc7c81f7960 --- /dev/null +++ b/src/sage/libs/flint/gr_vec.pxd @@ -0,0 +1,118 @@ +# distutils: libraries = flint +# distutils: depends = flint/gr_vec.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void gr_vec_init(gr_vec_t vec, slong len, gr_ctx_t ctx) noexcept + void gr_vec_clear(gr_vec_t vec, gr_ctx_t ctx) noexcept + gr_ptr gr_vec_entry_ptr(gr_vec_t vec, slong i, gr_ctx_t ctx) noexcept + slong gr_vec_length(const gr_vec_t vec, gr_ctx_t ctx) noexcept + void gr_vec_fit_length(gr_vec_t vec, slong len, gr_ctx_t ctx) noexcept + void gr_vec_set_length(gr_vec_t vec, slong len, gr_ctx_t ctx) noexcept + int gr_vec_set(gr_vec_t res, const gr_vec_t src, gr_ctx_t ctx) noexcept + int gr_vec_append(gr_vec_t vec, gr_srcptr x, gr_ctx_t ctx) noexcept + int _gr_vec_write(gr_stream_t out, gr_srcptr vec, slong len, gr_ctx_t ctx) noexcept + int gr_vec_write(gr_stream_t out, const gr_vec_t vec, gr_ctx_t ctx) noexcept + int gr_vec_print(const gr_vec_t vec, gr_ctx_t ctx) noexcept + void _gr_vec_init(gr_ptr vec, slong len, gr_ctx_t ctx) noexcept + void _gr_vec_clear(gr_ptr vec, slong len, gr_ctx_t ctx) noexcept + void _gr_vec_swap(gr_ptr vec1, gr_ptr vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_randtest(gr_ptr res, flint_rand_t state, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_set(gr_ptr res, gr_srcptr src, slong len, gr_ctx_t ctx) noexcept + truth_t _gr_vec_equal(gr_srcptr vec1, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_zero(gr_ptr vec, slong len, gr_ctx_t ctx) noexcept + truth_t _gr_vec_is_zero(gr_srcptr vec, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_normalise(slong * res, gr_srcptr vec, slong len, gr_ctx_t ctx) noexcept + slong _gr_vec_normalise_weak(gr_srcptr vec, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_neg(gr_ptr res, gr_srcptr src, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_add(gr_ptr res, gr_srcptr src1, gr_srcptr src2, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_sub(gr_ptr res, gr_srcptr src1, gr_srcptr src2, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_mul(gr_ptr res, gr_srcptr src1, gr_srcptr src2, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_div(gr_ptr res, gr_srcptr src1, gr_srcptr src2, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_divexact(gr_ptr res, gr_srcptr src1, gr_srcptr src2, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_pow(gr_ptr res, gr_srcptr src1, gr_srcptr src2, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_add_scalar(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int _gr_vec_sub_scalar(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int _gr_vec_mul_scalar(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int _gr_vec_div_scalar(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int _gr_vec_divexact_scalar(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int _gr_vec_pow_scalar(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int _gr_scalar_add_vec(gr_ptr vec1, gr_srcptr c, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_scalar_sub_vec(gr_ptr vec1, gr_srcptr c, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_scalar_mul_vec(gr_ptr vec1, gr_srcptr c, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_scalar_div_vec(gr_ptr vec1, gr_srcptr c, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_scalar_divexact_vec(gr_ptr vec1, gr_srcptr c, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_scalar_pow_vec(gr_ptr vec1, gr_srcptr c, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_add_other(gr_ptr vec1, gr_srcptr vec2, gr_srcptr vec3, gr_ctx_t ctx3, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_sub_other(gr_ptr vec1, gr_srcptr vec2, gr_srcptr vec3, gr_ctx_t ctx3, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_mul_other(gr_ptr vec1, gr_srcptr vec2, gr_srcptr vec3, gr_ctx_t ctx3, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_div_other(gr_ptr vec1, gr_srcptr vec2, gr_srcptr vec3, gr_ctx_t ctx3, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_divexact_other(gr_ptr vec1, gr_srcptr vec2, gr_srcptr vec3, gr_ctx_t ctx3, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_pow_other(gr_ptr vec1, gr_srcptr vec2, gr_srcptr vec3, gr_ctx_t ctx3, slong len, gr_ctx_t ctx) noexcept + int _gr_other_add_vec(gr_ptr vec1, gr_srcptr vec2, gr_ctx_t ctx2, gr_srcptr vec3, slong len, gr_ctx_t ctx) noexcept + int _gr_other_sub_vec(gr_ptr vec1, gr_srcptr vec2, gr_ctx_t ctx2, gr_srcptr vec3, slong len, gr_ctx_t ctx) noexcept + int _gr_other_mul_vec(gr_ptr vec1, gr_srcptr vec2, gr_ctx_t ctx2, gr_srcptr vec3, slong len, gr_ctx_t ctx) noexcept + int _gr_other_div_vec(gr_ptr vec1, gr_srcptr vec2, gr_ctx_t ctx2, gr_srcptr vec3, slong len, gr_ctx_t ctx) noexcept + int _gr_other_divexact_vec(gr_ptr vec1, gr_srcptr vec2, gr_ctx_t ctx2, gr_srcptr vec3, slong len, gr_ctx_t ctx) noexcept + int _gr_other_pow_vec(gr_ptr vec1, gr_srcptr vec2, gr_ctx_t ctx2, gr_srcptr vec3, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_add_scalar_other(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t cctx, gr_ctx_t ctx) noexcept + int _gr_vec_sub_scalar_other(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t cctx, gr_ctx_t ctx) noexcept + int _gr_vec_mul_scalar_other(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t cctx, gr_ctx_t ctx) noexcept + int _gr_vec_div_scalar_other(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t cctx, gr_ctx_t ctx) noexcept + int _gr_vec_divexact_scalar_other(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t cctx, gr_ctx_t ctx) noexcept + int _gr_vec_pow_scalar_other(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t cctx, gr_ctx_t ctx) noexcept + int _gr_scalar_other_add_vec(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_scalar_other_sub_vec(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_scalar_other_mul_vec(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_scalar_other_div_vec(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_scalar_other_divexact_vec(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_scalar_other_pow_vec(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_add_scalar_si(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) noexcept + int _gr_vec_sub_scalar_si(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) noexcept + int _gr_vec_mul_scalar_si(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) noexcept + int _gr_vec_div_scalar_si(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) noexcept + int _gr_vec_divexact_scalar_si(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) noexcept + int _gr_vec_pow_scalar_si(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) noexcept + int _gr_vec_add_scalar_ui(gr_ptr vec1, gr_srcptr vec2, slong len, ulong c, gr_ctx_t ctx) noexcept + int _gr_vec_sub_scalar_ui(gr_ptr vec1, gr_srcptr vec2, slong len, ulong c, gr_ctx_t ctx) noexcept + int _gr_vec_mul_scalar_ui(gr_ptr vec1, gr_srcptr vec2, slong len, ulong c, gr_ctx_t ctx) noexcept + int _gr_vec_div_scalar_ui(gr_ptr vec1, gr_srcptr vec2, slong len, ulong c, gr_ctx_t ctx) noexcept + int _gr_vec_divexact_scalar_ui(gr_ptr vec1, gr_srcptr vec2, slong len, ulong c, gr_ctx_t ctx) noexcept + int _gr_vec_pow_scalar_ui(gr_ptr vec1, gr_srcptr vec2, slong len, ulong c, gr_ctx_t ctx) noexcept + int _gr_vec_add_scalar_fmpz(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) noexcept + int _gr_vec_sub_scalar_fmpz(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) noexcept + int _gr_vec_mul_scalar_fmpz(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) noexcept + int _gr_vec_div_scalar_fmpz(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) noexcept + int _gr_vec_divexact_scalar_fmpz(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) noexcept + int _gr_vec_pow_scalar_fmpz(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) noexcept + int _gr_vec_add_scalar_fmpq(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpq_t c, gr_ctx_t ctx) noexcept + int _gr_vec_sub_scalar_fmpq(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpq_t c, gr_ctx_t ctx) noexcept + int _gr_vec_mul_scalar_fmpq(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpq_t c, gr_ctx_t ctx) noexcept + int _gr_vec_div_scalar_fmpq(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpq_t c, gr_ctx_t ctx) noexcept + int _gr_vec_divexact_scalar_fmpq(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpq_t c, gr_ctx_t ctx) noexcept + int _gr_vec_pow_scalar_fmpq(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpq_t c, gr_ctx_t ctx) noexcept + int _gr_vec_addmul_scalar(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int _gr_vec_submul_scalar(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) noexcept + int _gr_vec_addmul_scalar_si(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) noexcept + int _gr_vec_submul_scalar_si(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) noexcept + int _gr_vec_mul_scalar_2exp_si(gr_ptr res, gr_srcptr vec, slong len, slong c, gr_ctx_t ctx) noexcept + int _gr_vec_sum(gr_ptr res, gr_srcptr vec, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_product(gr_ptr res, gr_srcptr vec, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_dot(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_dot_si(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, const slong * vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_dot_ui(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, const ulong * vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_dot_fmpz(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, const fmpz * vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_dot_rev(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, gr_srcptr vec2, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_step(gr_ptr vec, gr_srcptr start, gr_srcptr step, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_reciprocals(gr_ptr res, slong len, gr_ctx_t ctx) noexcept + int _gr_vec_set_powers(gr_ptr res, gr_srcptr x, slong len, gr_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/hypgeom.pxd b/src/sage/libs/flint/hypgeom.pxd new file mode 100644 index 00000000000..9eaa171d3b4 --- /dev/null +++ b/src/sage/libs/flint/hypgeom.pxd @@ -0,0 +1,22 @@ +# distutils: libraries = flint +# distutils: depends = flint/hypgeom.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void hypgeom_init(hypgeom_t hyp) noexcept + void hypgeom_clear(hypgeom_t hyp) noexcept + slong hypgeom_estimate_terms(const mag_t z, int r, slong d) noexcept + slong hypgeom_bound(mag_t error, int r, slong C, slong D, slong K, const mag_t TK, const mag_t z, slong prec) noexcept + void hypgeom_precompute(hypgeom_t hyp) noexcept + void arb_hypgeom_sum(arb_t P, arb_t Q, const hypgeom_t hyp, slong n, slong prec) noexcept + void arb_hypgeom_infsum(arb_t P, arb_t Q, hypgeom_t hyp, slong tol, slong prec) noexcept diff --git a/src/sage/libs/flint/long_extras.pxd b/src/sage/libs/flint/long_extras.pxd new file mode 100644 index 00000000000..e578cac1e83 --- /dev/null +++ b/src/sage/libs/flint/long_extras.pxd @@ -0,0 +1,21 @@ +# distutils: libraries = flint +# distutils: depends = flint/long_extras.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + size_t z_sizeinbase(slong n, int b) noexcept + int z_mul_checked(slong * a, slong b, slong c) noexcept + mp_limb_signed_t z_randtest(flint_rand_t state) noexcept + mp_limb_signed_t z_randtest_not_zero(flint_rand_t state) noexcept + mp_limb_signed_t z_randint(flint_rand_t state, mp_limb_t limit) noexcept + int z_kronecker(slong a, slong n) noexcept diff --git a/src/sage/libs/flint/mag.pxd b/src/sage/libs/flint/mag.pxd new file mode 100644 index 00000000000..738fd8a9a30 --- /dev/null +++ b/src/sage/libs/flint/mag.pxd @@ -0,0 +1,129 @@ +# distutils: libraries = flint +# distutils: depends = flint/mag.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void mag_init(mag_t x) noexcept + void mag_clear(mag_t x) noexcept + void mag_swap(mag_t x, mag_t y) noexcept + mag_ptr _mag_vec_init(slong n) noexcept + void _mag_vec_clear(mag_ptr v, slong n) noexcept + slong mag_allocated_bytes(const mag_t x) noexcept + void mag_zero(mag_t res) noexcept + void mag_one(mag_t res) noexcept + void mag_inf(mag_t res) noexcept + bint mag_is_special(const mag_t x) noexcept + bint mag_is_zero(const mag_t x) noexcept + bint mag_is_inf(const mag_t x) noexcept + bint mag_is_finite(const mag_t x) noexcept + void mag_init_set(mag_t res, const mag_t x) noexcept + void mag_set(mag_t res, const mag_t x) noexcept + void mag_set_d(mag_t res, double x) noexcept + void mag_set_ui(mag_t res, ulong x) noexcept + void mag_set_fmpz(mag_t res, const fmpz_t x) noexcept + void mag_set_d_lower(mag_t res, double x) noexcept + void mag_set_ui_lower(mag_t res, ulong x) noexcept + void mag_set_fmpz_lower(mag_t res, const fmpz_t x) noexcept + void mag_set_d_2exp_fmpz(mag_t res, double x, const fmpz_t y) noexcept + void mag_set_fmpz_2exp_fmpz(mag_t res, const fmpz_t x, const fmpz_t y) noexcept + void mag_set_ui_2exp_si(mag_t res, ulong x, slong y) noexcept + void mag_set_d_2exp_fmpz_lower(mag_t res, double x, const fmpz_t y) noexcept + void mag_set_fmpz_2exp_fmpz_lower(mag_t res, const fmpz_t x, const fmpz_t y) noexcept + double mag_get_d(const mag_t x) noexcept + double mag_get_d_log2_approx(const mag_t x) noexcept + void mag_get_fmpq(fmpq_t res, const mag_t x) noexcept + void mag_get_fmpz(fmpz_t res, const mag_t x) noexcept + void mag_get_fmpz_lower(fmpz_t res, const mag_t x) noexcept + bint mag_equal(const mag_t x, const mag_t y) noexcept + int mag_cmp(const mag_t x, const mag_t y) noexcept + int mag_cmp_2exp_si(const mag_t x, slong y) noexcept + void mag_min(mag_t res, const mag_t x, const mag_t y) noexcept + void mag_max(mag_t res, const mag_t x, const mag_t y) noexcept + void mag_print(const mag_t x) noexcept + void mag_fprint(FILE * file, const mag_t x) noexcept + char * mag_dump_str(const mag_t x) noexcept + int mag_load_str(mag_t x, const char * str) noexcept + int mag_dump_file(FILE * stream, const mag_t x) noexcept + int mag_load_file(mag_t x, FILE * stream) noexcept + void mag_randtest(mag_t res, flint_rand_t state, slong expbits) noexcept + void mag_randtest_special(mag_t res, flint_rand_t state, slong expbits) noexcept + void mag_add(mag_t res, const mag_t x, const mag_t y) noexcept + void mag_add_ui(mag_t res, const mag_t x, ulong y) noexcept + void mag_add_lower(mag_t res, const mag_t x, const mag_t y) noexcept + void mag_add_ui_lower(mag_t res, const mag_t x, ulong y) noexcept + void mag_add_2exp_fmpz(mag_t res, const mag_t x, const fmpz_t e) noexcept + void mag_add_ui_2exp_si(mag_t res, const mag_t x, ulong y, slong e) noexcept + void mag_sub(mag_t res, const mag_t x, const mag_t y) noexcept + void mag_sub_lower(mag_t res, const mag_t x, const mag_t y) noexcept + void mag_mul_2exp_si(mag_t res, const mag_t x, slong y) noexcept + void mag_mul_2exp_fmpz(mag_t res, const mag_t x, const fmpz_t y) noexcept + void mag_mul(mag_t res, const mag_t x, const mag_t y) noexcept + void mag_mul_ui(mag_t res, const mag_t x, ulong y) noexcept + void mag_mul_fmpz(mag_t res, const mag_t x, const fmpz_t y) noexcept + void mag_mul_lower(mag_t res, const mag_t x, const mag_t y) noexcept + void mag_mul_ui_lower(mag_t res, const mag_t x, ulong y) noexcept + void mag_mul_fmpz_lower(mag_t res, const mag_t x, const fmpz_t y) noexcept + void mag_addmul(mag_t z, const mag_t x, const mag_t y) noexcept + void mag_div(mag_t res, const mag_t x, const mag_t y) noexcept + void mag_div_ui(mag_t res, const mag_t x, ulong y) noexcept + void mag_div_fmpz(mag_t res, const mag_t x, const fmpz_t y) noexcept + void mag_div_lower(mag_t res, const mag_t x, const mag_t y) noexcept + void mag_inv(mag_t res, const mag_t x) noexcept + void mag_inv_lower(mag_t res, const mag_t x) noexcept + void mag_fast_init_set(mag_t x, const mag_t y) noexcept + void mag_fast_zero(mag_t res) noexcept + bint mag_fast_is_zero(const mag_t x) noexcept + void mag_fast_mul(mag_t res, const mag_t x, const mag_t y) noexcept + void mag_fast_addmul(mag_t z, const mag_t x, const mag_t y) noexcept + void mag_fast_add_2exp_si(mag_t res, const mag_t x, slong e) noexcept + void mag_fast_mul_2exp_si(mag_t res, const mag_t x, slong e) noexcept + void mag_pow_ui(mag_t res, const mag_t x, ulong e) noexcept + void mag_pow_fmpz(mag_t res, const mag_t x, const fmpz_t e) noexcept + void mag_pow_ui_lower(mag_t res, const mag_t x, ulong e) noexcept + void mag_pow_fmpz_lower(mag_t res, const mag_t x, const fmpz_t e) noexcept + void mag_sqrt(mag_t res, const mag_t x) noexcept + void mag_sqrt_lower(mag_t res, const mag_t x) noexcept + void mag_rsqrt(mag_t res, const mag_t x) noexcept + void mag_rsqrt_lower(mag_t res, const mag_t x) noexcept + void mag_hypot(mag_t res, const mag_t x, const mag_t y) noexcept + void mag_root(mag_t res, const mag_t x, ulong n) noexcept + void mag_log(mag_t res, const mag_t x) noexcept + void mag_log_lower(mag_t res, const mag_t x) noexcept + void mag_neg_log(mag_t res, const mag_t x) noexcept + void mag_neg_log_lower(mag_t res, const mag_t x) noexcept + void mag_log_ui(mag_t res, ulong n) noexcept + void mag_log1p(mag_t res, const mag_t x) noexcept + void mag_exp(mag_t res, const mag_t x) noexcept + void mag_exp_lower(mag_t res, const mag_t x) noexcept + void mag_expinv(mag_t res, const mag_t x) noexcept + void mag_expinv_lower(mag_t res, const mag_t x) noexcept + void mag_expm1(mag_t res, const mag_t x) noexcept + void mag_exp_tail(mag_t res, const mag_t x, ulong N) noexcept + void mag_binpow_uiui(mag_t res, ulong m, ulong n) noexcept + void mag_geom_series(mag_t res, const mag_t x, ulong N) noexcept + void mag_const_pi(mag_t res) noexcept + void mag_const_pi_lower(mag_t res) noexcept + void mag_atan(mag_t res, const mag_t x) noexcept + void mag_atan_lower(mag_t res, const mag_t x) noexcept + void mag_cosh(mag_t res, const mag_t x) noexcept + void mag_cosh_lower(mag_t res, const mag_t x) noexcept + void mag_sinh(mag_t res, const mag_t x) noexcept + void mag_sinh_lower(mag_t res, const mag_t x) noexcept + void mag_fac_ui(mag_t res, ulong n) noexcept + void mag_rfac_ui(mag_t res, ulong n) noexcept + void mag_bin_uiui(mag_t res, ulong n, ulong k) noexcept + void mag_bernoulli_div_fac_ui(mag_t res, ulong n) noexcept + void mag_polylog_tail(mag_t res, const mag_t z, slong s, ulong d, ulong N) noexcept + void mag_hurwitz_zeta_uiui(mag_t res, ulong s, ulong a) noexcept + +from .mag_macros cimport * diff --git a/src/sage/libs/flint/mag_macros.pxd b/src/sage/libs/flint/mag_macros.pxd new file mode 100644 index 00000000000..836fc681fd1 --- /dev/null +++ b/src/sage/libs/flint/mag_macros.pxd @@ -0,0 +1,7 @@ +# Macros from mag.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + long MAG_BITS diff --git a/src/sage/libs/flint/mpf_mat.pxd b/src/sage/libs/flint/mpf_mat.pxd new file mode 100644 index 00000000000..b4524a336cf --- /dev/null +++ b/src/sage/libs/flint/mpf_mat.pxd @@ -0,0 +1,34 @@ +# distutils: libraries = flint +# distutils: depends = flint/mpf_mat.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void mpf_mat_init(mpf_mat_t mat, slong rows, slong cols, flint_bitcnt_t prec) noexcept + void mpf_mat_clear(mpf_mat_t mat) noexcept + void mpf_mat_set(mpf_mat_t mat1, const mpf_mat_t mat2) noexcept + void mpf_mat_swap(mpf_mat_t mat1, mpf_mat_t mat2) noexcept + void mpf_mat_swap_entrywise(mpf_mat_t mat1, mpf_mat_t mat2) noexcept + mpf * mpf_mat_entry(const mpf_mat_t mat, slong i, slong j) noexcept + void mpf_mat_zero(mpf_mat_t mat) noexcept + void mpf_mat_one(mpf_mat_t mat) noexcept + void mpf_mat_set_fmpz_mat(mpf_mat_t B, const fmpz_mat_t A) noexcept + void mpf_mat_randtest(mpf_mat_t mat, flint_rand_t state, flint_bitcnt_t bits) noexcept + void mpf_mat_print(const mpf_mat_t mat) noexcept + bint mpf_mat_equal(const mpf_mat_t mat1, const mpf_mat_t mat2) noexcept + bint mpf_mat_approx_equal(const mpf_mat_t mat1, const mpf_mat_t mat2, flint_bitcnt_t bits) noexcept + bint mpf_mat_is_zero(const mpf_mat_t mat) noexcept + bint mpf_mat_is_empty(const mpf_mat_t mat) noexcept + bint mpf_mat_is_square(const mpf_mat_t mat) noexcept + void mpf_mat_mul(mpf_mat_t C, const mpf_mat_t A, const mpf_mat_t B) noexcept + void mpf_mat_gso(mpf_mat_t B, const mpf_mat_t A) noexcept + void mpf_mat_qr(mpf_mat_t Q, mpf_mat_t R, const mpf_mat_t A) noexcept diff --git a/src/sage/libs/flint/mpf_vec.pxd b/src/sage/libs/flint/mpf_vec.pxd new file mode 100644 index 00000000000..4fc582675f5 --- /dev/null +++ b/src/sage/libs/flint/mpf_vec.pxd @@ -0,0 +1,32 @@ +# distutils: libraries = flint +# distutils: depends = flint/mpf_vec.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + mpf * _mpf_vec_init(slong len, mp_limb_t prec) noexcept + void _mpf_vec_clear(mpf * vec, slong len) noexcept + void _mpf_vec_randtest(mpf * f, flint_rand_t state, slong len, flint_bitcnt_t bits) noexcept + void _mpf_vec_zero(mpf * vec, slong len) noexcept + void _mpf_vec_set(mpf * vec1, const mpf * vec2, slong len2) noexcept + void _mpf_vec_set_fmpz_vec(mpf * appv, const fmpz * vec, slong len) noexcept + bint _mpf_vec_equal(const mpf * vec1, const mpf * vec2, slong len) noexcept + bint _mpf_vec_is_zero(const mpf * vec, slong len) noexcept + bint _mpf_vec_approx_equal(const mpf * vec1, const mpf * vec2, slong len, flint_bitcnt_t bits) noexcept + void _mpf_vec_add(mpf * res, const mpf * vec1, const mpf * vec2, slong len2) noexcept + void _mpf_vec_sub(mpf * res, const mpf * vec1, const mpf * vec2, slong len2) noexcept + void _mpf_vec_scalar_mul_mpf(mpf * res, const mpf * vec, slong len, mpf_t c) noexcept + void _mpf_vec_scalar_mul_2exp(mpf * res, const mpf * vec, slong len, flint_bitcnt_t exp) noexcept + void _mpf_vec_dot(mpf_t res, const mpf * vec1, const mpf * vec2, slong len2) noexcept + void _mpf_vec_norm(mpf_t res, const mpf * vec, slong len) noexcept + int _mpf_vec_dot2(mpf_t res, const mpf * vec1, const mpf * vec2, slong len2, flint_bitcnt_t prec) noexcept + void _mpf_vec_norm2(mpf_t res, const mpf * vec, slong len, flint_bitcnt_t prec) noexcept diff --git a/src/sage/libs/flint/mpfr_mat.pxd b/src/sage/libs/flint/mpfr_mat.pxd new file mode 100644 index 00000000000..ffb91d684d7 --- /dev/null +++ b/src/sage/libs/flint/mpfr_mat.pxd @@ -0,0 +1,25 @@ +# distutils: libraries = flint +# distutils: depends = flint/mpfr_mat.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void mpfr_mat_init(mpfr_mat_t mat, slong rows, slong cols, mpfr_prec_t prec) noexcept + void mpfr_mat_clear(mpfr_mat_t mat) noexcept + __mpfr_struct * mpfr_mat_entry(const mpfr_mat_t mat, slong i, slong j) noexcept + void mpfr_mat_swap(mpfr_mat_t mat1, mpfr_mat_t mat2) noexcept + void mpfr_mat_swap_entrywise(mpfr_mat_t mat1, mpfr_mat_t mat2) noexcept + void mpfr_mat_set(mpfr_mat_t mat1, const mpfr_mat_t mat2) noexcept + void mpfr_mat_zero(mpfr_mat_t mat) noexcept + bint mpfr_mat_equal(const mpfr_mat_t mat1, const mpfr_mat_t mat2) noexcept + void mpfr_mat_randtest(mpfr_mat_t mat, flint_rand_t state) noexcept + void mpfr_mat_mul_classical(mpfr_mat_t C, const mpfr_mat_t A, const mpfr_mat_t B, mpfr_rnd_t rnd) noexcept diff --git a/src/sage/libs/flint/mpfr_vec.pxd b/src/sage/libs/flint/mpfr_vec.pxd new file mode 100644 index 00000000000..5c3fec6f735 --- /dev/null +++ b/src/sage/libs/flint/mpfr_vec.pxd @@ -0,0 +1,23 @@ +# distutils: libraries = flint +# distutils: depends = flint/mpfr_vec.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + mpfr_ptr _mpfr_vec_init(slong len, flint_bitcnt_t prec) noexcept + void _mpfr_vec_clear(mpfr_ptr vec, slong len) noexcept + void _mpfr_vec_zero(mpfr_ptr vec, slong len) noexcept + void _mpfr_vec_set(mpfr_ptr vec1, mpfr_srcptr vec2, slong len) noexcept + void _mpfr_vec_add(mpfr_ptr res, mpfr_srcptr vec1, mpfr_srcptr vec2, slong len) noexcept + void _mpfr_vec_scalar_mul_mpfr(mpfr_ptr res, mpfr_srcptr vec, slong len, mpfr_t c) noexcept + void _mpfr_vec_scalar_mul_2exp(mpfr_ptr res, mpfr_srcptr vec, slong len, flint_bitcnt_t exp) noexcept + void _mpfr_vec_scalar_product(mpfr_t res, mpfr_srcptr vec1, mpfr_srcptr vec2, slong len) noexcept diff --git a/src/sage/libs/flint/mpn_extras.pxd b/src/sage/libs/flint/mpn_extras.pxd new file mode 100644 index 00000000000..cd029b2d9ad --- /dev/null +++ b/src/sage/libs/flint/mpn_extras.pxd @@ -0,0 +1,39 @@ +# distutils: libraries = flint +# distutils: depends = flint/mpn_extras.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void flint_mpn_debug(mp_srcptr x, mp_size_t xsize) noexcept + int flint_mpn_zero_p(mp_srcptr x, mp_size_t xsize) noexcept + mp_limb_t flint_mpn_mul(mp_ptr z, mp_srcptr x, mp_size_t xn, mp_srcptr y, mp_size_t yn) noexcept + void flint_mpn_mul_n(mp_ptr z, mp_srcptr x, mp_srcptr y, mp_size_t n) noexcept + void flint_mpn_sqr(mp_ptr z, mp_srcptr x, mp_size_t n) noexcept + mp_size_t flint_mpn_fmms1(mp_ptr y, mp_limb_t a1, mp_srcptr x1, mp_limb_t a2, mp_srcptr x2, mp_size_t n) noexcept + int flint_mpn_divisible_1_odd(mp_srcptr x, mp_size_t xsize, mp_limb_t d) noexcept + mp_size_t flint_mpn_divexact_1(mp_ptr x, mp_size_t xsize, mp_limb_t d) noexcept + mp_size_t flint_mpn_remove_2exp(mp_ptr x, mp_size_t xsize, flint_bitcnt_t * bits) noexcept + mp_size_t flint_mpn_remove_power_ascending(mp_ptr x, mp_size_t xsize, mp_ptr p, mp_size_t psize, ulong * exp) noexcept + int flint_mpn_factor_trial(mp_srcptr x, mp_size_t xsize, slong start, slong stop) noexcept + int flint_mpn_factor_trial_tree(slong * factors, mp_srcptr x, mp_size_t xsize, slong num_primes) noexcept + int flint_mpn_divides(mp_ptr q, mp_srcptr array1, mp_size_t limbs1, mp_srcptr arrayg, mp_size_t limbsg, mp_ptr temp) noexcept + mp_limb_t flint_mpn_preinv1(mp_limb_t d, mp_limb_t d2) noexcept + mp_limb_t flint_mpn_divrem_preinv1(mp_ptr q, mp_ptr a, mp_size_t m, mp_srcptr b, mp_size_t n, mp_limb_t dinv) noexcept + void flint_mpn_mulmod_preinv1(mp_ptr r, mp_srcptr a, mp_srcptr b, mp_size_t n, mp_srcptr d, mp_limb_t dinv, ulong norm) noexcept + void flint_mpn_preinvn(mp_ptr dinv, mp_srcptr d, mp_size_t n) noexcept + void flint_mpn_mod_preinvn(mp_ptr r, mp_srcptr a, mp_size_t m, mp_srcptr d, mp_size_t n, mp_srcptr dinv) noexcept + mp_limb_t flint_mpn_divrem_preinvn(mp_ptr q, mp_ptr r, mp_srcptr a, mp_size_t m, mp_srcptr d, mp_size_t n, mp_srcptr dinv) noexcept + void flint_mpn_mulmod_preinvn(mp_ptr r, mp_srcptr a, mp_srcptr b, mp_size_t n, mp_srcptr d, mp_srcptr dinv, ulong norm) noexcept + mp_size_t flint_mpn_gcd_full2(mp_ptr arrayg, mp_srcptr array1, mp_size_t limbs1, mp_srcptr array2, mp_size_t limbs2, mp_ptr temp) noexcept + mp_size_t flint_mpn_gcd_full(mp_ptr arrayg, mp_srcptr array1, mp_size_t limbs1, mp_srcptr array2, mp_size_t limbs2) noexcept + void flint_mpn_rrandom(mp_limb_t * rp, gmp_randstate_t state, mp_size_t n) noexcept + void flint_mpn_urandomb(mp_limb_t * rp, gmp_randstate_t state, flint_bitcnt_t n) noexcept diff --git a/src/sage/libs/flint/mpoly.pxd b/src/sage/libs/flint/mpoly.pxd new file mode 100644 index 00000000000..2b9f5393227 --- /dev/null +++ b/src/sage/libs/flint/mpoly.pxd @@ -0,0 +1,70 @@ +# distutils: libraries = flint +# distutils: depends = flint/mpoly.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void mpoly_ctx_init(mpoly_ctx_t ctx, slong nvars, const ordering_t ord) noexcept + void mpoly_ctx_clear(mpoly_ctx_t mctx) noexcept + ordering_t mpoly_ordering_randtest(flint_rand_t state) noexcept + void mpoly_ctx_init_rand(mpoly_ctx_t mctx, flint_rand_t state, slong max_nvars) noexcept + int mpoly_ordering_isdeg(const mpoly_ctx_t ctx) noexcept + int mpoly_ordering_isrev(const mpoly_ctx_t cth) noexcept + void mpoly_ordering_print(ordering_t ord) noexcept + void mpoly_monomial_add(ulong * exp_ptr, const ulong * exp2, const ulong * exp3, slong N) noexcept + void mpoly_monomial_add_mp(ulong * exp_ptr, const ulong * exp2, const ulong * exp3, slong N) noexcept + void mpoly_monomial_sub(ulong * exp_ptr, const ulong * exp2, const ulong * exp3, slong N) noexcept + void mpoly_monomial_sub_mp(ulong * exp_ptr, const ulong * exp2, const ulong * exp3, slong N) noexcept + int mpoly_monomial_overflows(ulong * exp2, slong N, ulong mask) noexcept + int mpoly_monomial_overflows_mp(ulong * exp_ptr, slong N, flint_bitcnt_t bits) noexcept + int mpoly_monomial_overflows1(ulong exp, ulong mask) noexcept + void mpoly_monomial_set(ulong * exp2, const ulong * exp3, slong N) noexcept + void mpoly_monomial_swap(ulong * exp2, ulong * exp3, slong N) noexcept + void mpoly_monomial_mul_ui(ulong * exp2, const ulong * exp3, slong N, ulong c) noexcept + bint mpoly_monomial_is_zero(const ulong * exp, slong N) noexcept + bint mpoly_monomial_equal(const ulong * exp2, const ulong * exp3, slong N) noexcept + void mpoly_get_cmpmask(ulong * cmpmask, slong N, ulong bits, const mpoly_ctx_t mctx) noexcept + bint mpoly_monomial_lt(const ulong * exp2, const ulong * exp3, slong N, const ulong * cmpmask) noexcept + bint mpoly_monomial_gt(const ulong * exp2, const ulong * exp3, slong N, const ulong * cmpmask) noexcept + int mpoly_monomial_cmp(const ulong * exp2, const ulong * exp3, slong N, const ulong * cmpmask) noexcept + int mpoly_monomial_divides(ulong * exp_ptr, const ulong * exp2, const ulong * exp3, slong N, ulong mask) noexcept + int mpoly_monomial_divides_mp(ulong * exp_ptr, const ulong * exp2, const ulong * exp3, slong N, flint_bitcnt_t bits) noexcept + int mpoly_monomial_divides1(ulong * exp_ptr, const ulong exp2, const ulong exp3, ulong mask) noexcept + int mpoly_monomial_divides_tight(slong e1, slong e2, slong * prods, slong num) noexcept + flint_bitcnt_t mpoly_exp_bits_required_ui(const ulong * user_exp, const mpoly_ctx_t mctx) noexcept + flint_bitcnt_t mpoly_exp_bits_required_ffmpz(const fmpz * user_exp, const mpoly_ctx_t mctx) noexcept + flint_bitcnt_t mpoly_exp_bits_required_pfmpz(fmpz * const * user_exp, const mpoly_ctx_t mctx) noexcept + void mpoly_max_fields_ui_sp(ulong * max_fields, const ulong * poly_exps, slong len, ulong bits, const mpoly_ctx_t mctx) noexcept + void mpoly_max_fields_fmpz(fmpz * max_fields, const ulong * poly_exps, slong len, ulong bits, const mpoly_ctx_t mctx) noexcept + void mpoly_max_degrees_tight(slong * max_exp, ulong * exps, slong len, slong * prods, slong num) noexcept + int mpoly_monomial_exists(slong * index, const ulong * poly_exps, const ulong * exp, slong len, slong N, const ulong * cmpmask) noexcept + void mpoly_search_monomials(slong ** e_ind, ulong * e, slong * e_score, slong * t1, slong * t2, slong * t3, slong lower, slong upper, const ulong * a, slong a_len, const ulong * b, slong b_len, slong N, const ulong * cmpmask) noexcept + int mpoly_term_exp_fits_ui(ulong * exps, ulong bits, slong n, const mpoly_ctx_t mctx) noexcept + int mpoly_term_exp_fits_si(ulong * exps, ulong bits, slong n, const mpoly_ctx_t mctx) noexcept + void mpoly_get_monomial_ui(ulong * exps, const ulong * poly_exps, ulong bits, const mpoly_ctx_t mctx) noexcept + void mpoly_get_monomial_ffmpz(fmpz * exps, const ulong * poly_exps, flint_bitcnt_t bits, const mpoly_ctx_t mctx) noexcept + void mpoly_get_monomial_pfmpz(fmpz ** exps, const ulong * poly_exps, flint_bitcnt_t bits, const mpoly_ctx_t mctx) noexcept + void mpoly_set_monomial_ui(ulong * exp1, const ulong * exp2, ulong bits, const mpoly_ctx_t mctx) noexcept + void mpoly_set_monomial_ffmpz(ulong * exp1, const fmpz * exp2, flint_bitcnt_t bits, const mpoly_ctx_t mctx) noexcept + void mpoly_set_monomial_pfmpz(ulong * exp1, fmpz * const * exp2, flint_bitcnt_t bits, const mpoly_ctx_t mctx) noexcept + void mpoly_pack_vec_ui(ulong * exp1, const ulong * exp2, ulong bits, slong nfields, slong len) noexcept + void mpoly_pack_vec_fmpz(ulong * exp1, const fmpz * exp2, flint_bitcnt_t bits, slong nfields, slong len) noexcept + void mpoly_unpack_vec_ui(ulong * exp1, const ulong * exp2, ulong bits, slong nfields, slong len) noexcept + void mpoly_unpack_vec_fmpz(fmpz * exp1, const ulong * exp2, flint_bitcnt_t bits, slong nfields, slong len) noexcept + int mpoly_repack_monomials(ulong * exps1, ulong bits1, const ulong * exps2, ulong bits2, slong len, const mpoly_ctx_t mctx) noexcept + void mpoly_pack_monomials_tight(ulong * exp1, const ulong * exp2, slong len, const slong * mults, slong num, slong bits) noexcept + void mpoly_unpack_monomials_tight(ulong * e1, ulong * e2, slong len, slong * mults, slong num, slong bits) noexcept + void mpoly_main_variable_terms1(slong * i1, slong * n1, const ulong * exp1, slong l1, slong len1, slong k, slong num, slong bits) noexcept + int _mpoly_heap_insert(mpoly_heap_s * heap, ulong * exp, void * x, slong * next_loc, slong * heap_len, slong N, const ulong * cmpmask) noexcept + void _mpoly_heap_insert1(mpoly_heap1_s * heap, ulong exp, void * x, slong * next_loc, slong * heap_len, ulong maskhi) noexcept + void * _mpoly_heap_pop(mpoly_heap_s * heap, slong * heap_len, slong N, const ulong * cmpmask) noexcept + void * _mpoly_heap_pop1(mpoly_heap1_s * heap, slong * heap_len, ulong maskhi) noexcept diff --git a/src/sage/libs/flint/nf.pxd b/src/sage/libs/flint/nf.pxd new file mode 100644 index 00000000000..73fb2aeb7c2 --- /dev/null +++ b/src/sage/libs/flint/nf.pxd @@ -0,0 +1,17 @@ +# distutils: libraries = flint +# distutils: depends = flint/nf.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void nf_init(nf_t nf, const fmpq_poly_t pol) noexcept + void nf_clear(nf_t nf) noexcept diff --git a/src/sage/libs/flint/nf_elem.pxd b/src/sage/libs/flint/nf_elem.pxd new file mode 100644 index 00000000000..7ec811389d9 --- /dev/null +++ b/src/sage/libs/flint/nf_elem.pxd @@ -0,0 +1,72 @@ +# distutils: libraries = flint +# distutils: depends = flint/nf_elem.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void nf_elem_init(nf_elem_t a, const nf_t nf) noexcept + void nf_elem_clear(nf_elem_t a, const nf_t nf) noexcept + void nf_elem_randtest(nf_elem_t a, flint_rand_t state, mp_bitcnt_t bits, const nf_t nf) noexcept + void nf_elem_canonicalise(nf_elem_t a, const nf_t nf) noexcept + void _nf_elem_reduce(nf_elem_t a, const nf_t nf) noexcept + void nf_elem_reduce(nf_elem_t a, const nf_t nf) noexcept + int _nf_elem_invertible_check(nf_elem_t a, const nf_t nf) noexcept + void nf_elem_set_fmpz_mat_row(nf_elem_t b, const fmpz_mat_t M, const slong i, fmpz_t den, const nf_t nf) noexcept + void nf_elem_get_fmpz_mat_row(fmpz_mat_t M, const slong i, fmpz_t den, const nf_elem_t b, const nf_t nf) noexcept + void nf_elem_set_fmpq_poly(nf_elem_t a, const fmpq_poly_t pol, const nf_t nf) noexcept + void nf_elem_get_fmpq_poly(fmpq_poly_t pol, const nf_elem_t a, const nf_t nf) noexcept + void nf_elem_get_nmod_poly_den(nmod_poly_t pol, const nf_elem_t a, const nf_t nf, int den) noexcept + void nf_elem_get_nmod_poly(nmod_poly_t pol, const nf_elem_t a, const nf_t nf) noexcept + void nf_elem_get_fmpz_mod_poly_den(fmpz_mod_poly_t pol, const nf_elem_t a, const nf_t nf, int den, const fmpz_mod_ctx_t ctx) noexcept + void nf_elem_get_fmpz_mod_poly(fmpz_mod_poly_t pol, const nf_elem_t a, const nf_t nf, const fmpz_mod_ctx_t ctx) noexcept + void nf_elem_set_den(nf_elem_t b, fmpz_t d, const nf_t nf) noexcept + void nf_elem_get_den(fmpz_t d, const nf_elem_t b, const nf_t nf) noexcept + void _nf_elem_set_coeff_num_fmpz(nf_elem_t a, slong i, const fmpz_t d, const nf_t nf) noexcept + bint _nf_elem_equal(const nf_elem_t a, const nf_elem_t b, const nf_t nf) noexcept + bint nf_elem_equal(const nf_elem_t a, const nf_elem_t b, const nf_t nf) noexcept + bint nf_elem_is_zero(const nf_elem_t a, const nf_t nf) noexcept + bint nf_elem_is_one(const nf_elem_t a, const nf_t nf) noexcept + void nf_elem_print_pretty(const nf_elem_t a, const nf_t nf, const char * var) noexcept + void nf_elem_zero(nf_elem_t a, const nf_t nf) noexcept + void nf_elem_one(nf_elem_t a, const nf_t nf) noexcept + void nf_elem_set(nf_elem_t a, const nf_elem_t b, const nf_t nf) noexcept + void nf_elem_neg(nf_elem_t a, const nf_elem_t b, const nf_t nf) noexcept + void nf_elem_swap(nf_elem_t a, nf_elem_t b, const nf_t nf) noexcept + void nf_elem_mul_gen(nf_elem_t a, const nf_elem_t b, const nf_t nf) noexcept + void _nf_elem_add(nf_elem_t r, const nf_elem_t a, const nf_elem_t b, const nf_t nf) noexcept + void nf_elem_add(nf_elem_t r, const nf_elem_t a, const nf_elem_t b, const nf_t nf) noexcept + void _nf_elem_sub(nf_elem_t r, const nf_elem_t a, const nf_elem_t b, const nf_t nf) noexcept + void nf_elem_sub(nf_elem_t r, const nf_elem_t a, const nf_elem_t b, const nf_t nf) noexcept + void _nf_elem_mul(nf_elem_t a, const nf_elem_t b, const nf_elem_t c, const nf_t nf) noexcept + void _nf_elem_mul_red(nf_elem_t a, const nf_elem_t b, const nf_elem_t c, const nf_t nf, int red) noexcept + void nf_elem_mul(nf_elem_t a, const nf_elem_t b, const nf_elem_t c, const nf_t nf) noexcept + void nf_elem_mul_red(nf_elem_t a, const nf_elem_t b, const nf_elem_t c, const nf_t nf, int red) noexcept + void _nf_elem_inv(nf_elem_t r, const nf_elem_t a, const nf_t nf) noexcept + void nf_elem_inv(nf_elem_t r, const nf_elem_t a, const nf_t nf) noexcept + void _nf_elem_div(nf_elem_t a, const nf_elem_t b, const nf_elem_t c, const nf_t nf) noexcept + void nf_elem_div(nf_elem_t a, const nf_elem_t b, const nf_elem_t c, const nf_t nf) noexcept + void _nf_elem_pow(nf_elem_t res, const nf_elem_t a, ulong e, const nf_t nf) noexcept + void nf_elem_pow(nf_elem_t res, const nf_elem_t a, ulong e, const nf_t nf) noexcept + void _nf_elem_norm(fmpz_t rnum, fmpz_t rden, const nf_elem_t a, const nf_t nf) noexcept + void nf_elem_norm(fmpq_t res, const nf_elem_t a, const nf_t nf) noexcept + void nf_elem_norm_div(fmpq_t res, const nf_elem_t a, const nf_t nf, const fmpz_t div, slong nbits) noexcept + void _nf_elem_norm_div(fmpz_t rnum, fmpz_t rden, const nf_elem_t a, const nf_t nf, const fmpz_t divisor, slong nbits) noexcept + void _nf_elem_trace(fmpz_t rnum, fmpz_t rden, const nf_elem_t a, const nf_t nf) noexcept + void nf_elem_trace(fmpq_t res, const nf_elem_t a, const nf_t nf) noexcept + void nf_elem_rep_mat(fmpq_mat_t res, const nf_elem_t a, const nf_t nf) noexcept + void nf_elem_rep_mat_fmpz_mat_den(fmpz_mat_t res, fmpz_t den, const nf_elem_t a, const nf_t nf) noexcept + void nf_elem_mod_fmpz_den(nf_elem_t z, const nf_elem_t a, const fmpz_t mod, const nf_t nf, int den) noexcept + void nf_elem_smod_fmpz_den(nf_elem_t z, const nf_elem_t a, const fmpz_t mod, const nf_t nf, int den) noexcept + void nf_elem_mod_fmpz(nf_elem_t res, const nf_elem_t a, const fmpz_t mod, const nf_t nf) noexcept + void nf_elem_smod_fmpz(nf_elem_t res, const nf_elem_t a, const fmpz_t mod, const nf_t nf) noexcept + void nf_elem_coprime_den(nf_elem_t res, const nf_elem_t a, const fmpz_t mod, const nf_t nf) noexcept + void nf_elem_coprime_den_signed(nf_elem_t res, const nf_elem_t a, const fmpz_t mod, const nf_t nf) noexcept diff --git a/src/sage/libs/flint/nmod.pxd b/src/sage/libs/flint/nmod.pxd new file mode 100644 index 00000000000..1330498f255 --- /dev/null +++ b/src/sage/libs/flint/nmod.pxd @@ -0,0 +1,33 @@ +# distutils: libraries = flint +# distutils: depends = flint/nmod.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void nmod_init(nmod_t * mod, mp_limb_t n) noexcept + mp_limb_t _nmod_add(mp_limb_t a, mp_limb_t b, nmod_t mod) noexcept + mp_limb_t nmod_add(mp_limb_t a, mp_limb_t b, nmod_t mod) noexcept + mp_limb_t _nmod_sub(mp_limb_t a, mp_limb_t b, nmod_t mod) noexcept + mp_limb_t nmod_sub(mp_limb_t a, mp_limb_t b, nmod_t mod) noexcept + mp_limb_t nmod_neg(mp_limb_t a, nmod_t mod) noexcept + mp_limb_t nmod_mul(mp_limb_t a, mp_limb_t b, nmod_t mod) noexcept + mp_limb_t _nmod_mul_fullword(mp_limb_t a, mp_limb_t b, nmod_t mod) noexcept + mp_limb_t nmod_inv(mp_limb_t a, nmod_t mod) noexcept + mp_limb_t nmod_div(mp_limb_t a, mp_limb_t b, nmod_t mod) noexcept + int nmod_divides(mp_limb_t * a, mp_limb_t b, mp_limb_t c, nmod_t mod) noexcept + mp_limb_t nmod_pow_ui(mp_limb_t a, ulong e, nmod_t mod) noexcept + mp_limb_t nmod_pow_fmpz(mp_limb_t a, const fmpz_t e, nmod_t mod) noexcept + void nmod_discrete_log_pohlig_hellman_init(nmod_discrete_log_pohlig_hellman_t L) noexcept + void nmod_discrete_log_pohlig_hellman_clear(nmod_discrete_log_pohlig_hellman_t L) noexcept + double nmod_discrete_log_pohlig_hellman_precompute_prime(nmod_discrete_log_pohlig_hellman_t L, mp_limb_t p) noexcept + mp_limb_t nmod_discrete_log_pohlig_hellman_primitive_root(const nmod_discrete_log_pohlig_hellman_t L) noexcept + ulong nmod_discrete_log_pohlig_hellman_run(const nmod_discrete_log_pohlig_hellman_t L, mp_limb_t y) noexcept diff --git a/src/sage/libs/flint/nmod_mat.pxd b/src/sage/libs/flint/nmod_mat.pxd new file mode 100644 index 00000000000..bf33d0837b6 --- /dev/null +++ b/src/sage/libs/flint/nmod_mat.pxd @@ -0,0 +1,102 @@ +# distutils: libraries = flint +# distutils: depends = flint/nmod_mat.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void nmod_mat_init(nmod_mat_t mat, slong rows, slong cols, mp_limb_t n) noexcept + void nmod_mat_init_set(nmod_mat_t mat, const nmod_mat_t src) noexcept + void nmod_mat_clear(nmod_mat_t mat) noexcept + void nmod_mat_set(nmod_mat_t mat, const nmod_mat_t src) noexcept + void nmod_mat_swap(nmod_mat_t mat1, nmod_mat_t mat2) noexcept + void nmod_mat_swap_entrywise(nmod_mat_t mat1, nmod_mat_t mat2) noexcept + mp_limb_t nmod_mat_get_entry(const nmod_mat_t mat, slong i, slong j) noexcept + mp_limb_t * nmod_mat_entry_ptr(const nmod_mat_t mat, slong i, slong j) noexcept + void nmod_mat_set_entry(nmod_mat_t mat, slong i, slong j, mp_limb_t x) noexcept + slong nmod_mat_nrows(const nmod_mat_t mat) noexcept + slong nmod_mat_ncols(const nmod_mat_t mat) noexcept + void nmod_mat_zero(nmod_mat_t mat) noexcept + bint nmod_mat_is_zero(const nmod_mat_t mat) noexcept + void nmod_mat_window_init(nmod_mat_t window, const nmod_mat_t mat, slong r1, slong c1, slong r2, slong c2) noexcept + void nmod_mat_window_clear(nmod_mat_t window) noexcept + void nmod_mat_concat_vertical(nmod_mat_t res, const nmod_mat_t mat1, const nmod_mat_t mat2) noexcept + void nmod_mat_concat_horizontal(nmod_mat_t res, const nmod_mat_t mat1, const nmod_mat_t mat2) noexcept + void nmod_mat_print_pretty(const nmod_mat_t mat) noexcept + int nmod_mat_fprint_pretty(FILE * file, const nmod_mat_t mat) noexcept + int nmod_mat_print(const nmod_mat_t mat) noexcept + int nmod_mat_fprint(FILE * f, const nmod_mat_t mat) noexcept + void nmod_mat_randtest(nmod_mat_t mat, flint_rand_t state) noexcept + void nmod_mat_randfull(nmod_mat_t mat, flint_rand_t state) noexcept + int nmod_mat_randpermdiag(nmod_mat_t mat, flint_rand_t state, mp_srcptr diag, slong n) noexcept + void nmod_mat_randrank(nmod_mat_t mat, flint_rand_t state, slong rank) noexcept + void nmod_mat_randops(nmod_mat_t mat, slong count, flint_rand_t state) noexcept + void nmod_mat_randtril(nmod_mat_t mat, flint_rand_t state, int unit) noexcept + void nmod_mat_randtriu(nmod_mat_t mat, flint_rand_t state, int unit) noexcept + bint nmod_mat_equal(const nmod_mat_t mat1, const nmod_mat_t mat2) noexcept + bint nmod_mat_is_zero_row(const nmod_mat_t mat, slong i) noexcept + void nmod_mat_transpose(nmod_mat_t B, const nmod_mat_t A) noexcept + void nmod_mat_swap_rows(nmod_mat_t mat, slong * perm, slong r, slong s) noexcept + void nmod_mat_swap_cols(nmod_mat_t mat, slong * perm, slong r, slong s) noexcept + void nmod_mat_invert_rows(nmod_mat_t mat, slong * perm) noexcept + void nmod_mat_invert_cols(nmod_mat_t mat, slong * perm) noexcept + void nmod_mat_permute_rows(nmod_mat_t mat, const slong * perm_act, slong * perm_store) noexcept + void nmod_mat_add(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) noexcept + void nmod_mat_sub(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) noexcept + void nmod_mat_neg(nmod_mat_t A, const nmod_mat_t B) noexcept + void nmod_mat_scalar_mul(nmod_mat_t B, const nmod_mat_t A, mp_limb_t c) noexcept + void nmod_mat_scalar_addmul_ui(nmod_mat_t dest, const nmod_mat_t X, const nmod_mat_t Y, const mp_limb_t b) noexcept + void nmod_mat_scalar_mul_fmpz(nmod_mat_t res, const nmod_mat_t M, const fmpz_t c) noexcept + void nmod_mat_mul(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) noexcept + void _nmod_mat_mul_classical_op(nmod_mat_t D, const nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B, int op) noexcept + void nmod_mat_mul_classical(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) noexcept + void _nmod_mat_mul_classical_threaded_pool_op(nmod_mat_t D, const nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B, int op, thread_pool_handle * threads, slong num_threads) noexcept + void _nmod_mat_mul_classical_threaded_op(nmod_mat_t D, const nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B, int op) noexcept + void nmod_mat_mul_classical_threaded(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) noexcept + void nmod_mat_mul_strassen(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) noexcept + int nmod_mat_mul_blas(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) noexcept + void nmod_mat_addmul(nmod_mat_t D, const nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) noexcept + void nmod_mat_submul(nmod_mat_t D, const nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) noexcept + void nmod_mat_mul_nmod_vec(mp_limb_t * c, const nmod_mat_t A, const mp_limb_t * b, slong blen) noexcept + void nmod_mat_mul_nmod_vec_ptr(mp_limb_t * const * c, const nmod_mat_t A, const mp_limb_t * const * b, slong blen) noexcept + void nmod_mat_nmod_vec_mul(mp_limb_t * c, const mp_limb_t * a, slong alen, const nmod_mat_t B) noexcept + void nmod_mat_nmod_vec_mul_ptr(mp_limb_t * const * c, const mp_limb_t * const * a, slong alen, const nmod_mat_t B) noexcept + void _nmod_mat_pow(nmod_mat_t dest, const nmod_mat_t mat, ulong pow) noexcept + void nmod_mat_pow(nmod_mat_t dest, const nmod_mat_t mat, ulong pow) noexcept + mp_limb_t nmod_mat_trace(const nmod_mat_t mat) noexcept + mp_limb_t nmod_mat_det_howell(const nmod_mat_t A) noexcept + mp_limb_t nmod_mat_det(const nmod_mat_t A) noexcept + slong nmod_mat_rank(const nmod_mat_t A) noexcept + int nmod_mat_inv(nmod_mat_t B, const nmod_mat_t A) noexcept + void nmod_mat_solve_tril(nmod_mat_t X, const nmod_mat_t L, const nmod_mat_t B, int unit) noexcept + void nmod_mat_solve_tril_classical(nmod_mat_t X, const nmod_mat_t L, const nmod_mat_t B, int unit) noexcept + void nmod_mat_solve_tril_recursive(nmod_mat_t X, const nmod_mat_t L, const nmod_mat_t B, int unit) noexcept + void nmod_mat_solve_triu(nmod_mat_t X, const nmod_mat_t U, const nmod_mat_t B, int unit) noexcept + void nmod_mat_solve_triu_classical(nmod_mat_t X, const nmod_mat_t U, const nmod_mat_t B, int unit) noexcept + void nmod_mat_solve_triu_recursive(nmod_mat_t X, const nmod_mat_t U, const nmod_mat_t B, int unit) noexcept + int nmod_mat_solve(nmod_mat_t X, const nmod_mat_t A, const nmod_mat_t B) noexcept + int nmod_mat_can_solve_inner(slong * rank, slong * perm, slong * pivots, nmod_mat_t X, const nmod_mat_t A, const nmod_mat_t B) noexcept + int nmod_mat_can_solve(nmod_mat_t X, const nmod_mat_t A, const nmod_mat_t B) noexcept + int nmod_mat_solve_vec(mp_ptr x, const nmod_mat_t A, mp_srcptr b) noexcept + slong nmod_mat_lu(slong * P, nmod_mat_t A, int rank_check) noexcept + slong nmod_mat_lu_classical(slong * P, nmod_mat_t A, int rank_check) noexcept + slong nmod_mat_lu_classical_delayed(slong * P, nmod_mat_t A, int rank_check) noexcept + slong nmod_mat_lu_recursive(slong * P, nmod_mat_t A, int rank_check) noexcept + slong nmod_mat_rref(nmod_mat_t A) noexcept + slong nmod_mat_reduce_row(nmod_mat_t A, slong * P, slong * L, slong n) noexcept + slong nmod_mat_nullspace(nmod_mat_t X, const nmod_mat_t A) noexcept + void nmod_mat_similarity(nmod_mat_t M, slong r, ulong d) noexcept + void nmod_mat_charpoly_berkowitz(nmod_poly_t p, const nmod_mat_t M) noexcept + void nmod_mat_charpoly_danilevsky(nmod_poly_t p, const nmod_mat_t M) noexcept + void nmod_mat_charpoly(nmod_poly_t p, const nmod_mat_t M) noexcept + void nmod_mat_minpoly(nmod_poly_t p, const nmod_mat_t M) noexcept + void nmod_mat_strong_echelon_form(nmod_mat_t A) noexcept + slong nmod_mat_howell_form(nmod_mat_t A) noexcept diff --git a/src/sage/libs/flint/nmod_mpoly.pxd b/src/sage/libs/flint/nmod_mpoly.pxd new file mode 100644 index 00000000000..0730f6db650 --- /dev/null +++ b/src/sage/libs/flint/nmod_mpoly.pxd @@ -0,0 +1,142 @@ +# distutils: libraries = flint +# distutils: depends = flint/nmod_mpoly.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void nmod_mpoly_ctx_init(nmod_mpoly_ctx_t ctx, slong nvars, const ordering_t ord, mp_limb_t n) noexcept + slong nmod_mpoly_ctx_nvars(const nmod_mpoly_ctx_t ctx) noexcept + ordering_t nmod_mpoly_ctx_ord(const nmod_mpoly_ctx_t ctx) noexcept + mp_limb_t nmod_mpoly_ctx_modulus(const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_ctx_clear(nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_init(nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_init2(nmod_mpoly_t A, slong alloc, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_init3(nmod_mpoly_t A, slong alloc, flint_bitcnt_t bits, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_fit_length(nmod_mpoly_t A, slong len, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_realloc(nmod_mpoly_t A, slong alloc, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_clear(nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + char * nmod_mpoly_get_str_pretty(const nmod_mpoly_t A, const char ** x, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_fprint_pretty(FILE * file, const nmod_mpoly_t A, const char ** x, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_print_pretty(const nmod_mpoly_t A, const char ** x, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_set_str_pretty(nmod_mpoly_t A, const char * str, const char ** x, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_gen(nmod_mpoly_t A, slong var, const nmod_mpoly_ctx_t ctx) noexcept + bint nmod_mpoly_is_gen(const nmod_mpoly_t A, slong var, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_set(nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + bint nmod_mpoly_equal(const nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_swap(nmod_mpoly_t A, nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + bint nmod_mpoly_is_ui(const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + ulong nmod_mpoly_get_ui(const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_set_ui(nmod_mpoly_t A, ulong c, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_zero(nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_one(nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + bint nmod_mpoly_equal_ui(const nmod_mpoly_t A, ulong c, const nmod_mpoly_ctx_t ctx) noexcept + bint nmod_mpoly_is_zero(const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + bint nmod_mpoly_is_one(const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_degrees_fit_si(const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_degrees_fmpz(fmpz ** degs, const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_degrees_si(slong * degs, const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_degree_fmpz(fmpz_t deg, const nmod_mpoly_t A, slong var, const nmod_mpoly_ctx_t ctx) noexcept + slong nmod_mpoly_degree_si(const nmod_mpoly_t A, slong var, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_total_degree_fits_si(const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_total_degree_fmpz(fmpz_t tdeg, const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + slong nmod_mpoly_total_degree_si(const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_used_vars(int * used, const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + ulong nmod_mpoly_get_coeff_ui_monomial(const nmod_mpoly_t A, const nmod_mpoly_t M, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_set_coeff_ui_monomial(nmod_mpoly_t A, ulong c, const nmod_mpoly_t M, const nmod_mpoly_ctx_t ctx) noexcept + ulong nmod_mpoly_get_coeff_ui_fmpz(const nmod_mpoly_t A, fmpz * const * exp, const nmod_mpoly_ctx_t ctx) noexcept + ulong nmod_mpoly_get_coeff_ui_ui(const nmod_mpoly_t A, const ulong * exp, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_set_coeff_ui_fmpz(nmod_mpoly_t A, ulong c, fmpz * const * exp, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_set_coeff_ui_ui(nmod_mpoly_t A, ulong c, const ulong * exp, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_get_coeff_vars_ui(nmod_mpoly_t C, const nmod_mpoly_t A, const slong * vars, const ulong * exps, slong length, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_cmp(const nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + mp_limb_t * nmod_mpoly_term_coeff_ref(nmod_mpoly_t A, slong i, const nmod_mpoly_ctx_t ctx) noexcept + bint nmod_mpoly_is_canonical(const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + slong nmod_mpoly_length(const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_resize(nmod_mpoly_t A, slong new_length, const nmod_mpoly_ctx_t ctx) noexcept + ulong nmod_mpoly_get_term_coeff_ui(const nmod_mpoly_t A, slong i, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_set_term_coeff_ui(nmod_mpoly_t A, slong i, ulong c, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_term_exp_fits_si(const nmod_mpoly_t A, slong i, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_term_exp_fits_ui(const nmod_mpoly_t A, slong i, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_get_term_exp_fmpz(fmpz ** exp, const nmod_mpoly_t A, slong i, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_get_term_exp_ui(ulong * exp, const nmod_mpoly_t A, slong i, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_get_term_exp_si(slong * exp, const nmod_mpoly_t A, slong i, const nmod_mpoly_ctx_t ctx) noexcept + ulong nmod_mpoly_get_term_var_exp_ui(const nmod_mpoly_t A, slong i, slong var, const nmod_mpoly_ctx_t ctx) noexcept + slong nmod_mpoly_get_term_var_exp_si(const nmod_mpoly_t A, slong i, slong var, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_set_term_exp_fmpz(nmod_mpoly_t A, slong i, fmpz * const * exp, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_set_term_exp_ui(nmod_mpoly_t A, slong i, const ulong * exp, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_get_term(nmod_mpoly_t M, const nmod_mpoly_t A, slong i, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_get_term_monomial(nmod_mpoly_t M, const nmod_mpoly_t A, slong i, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_push_term_ui_fmpz(nmod_mpoly_t A, ulong c, fmpz * const * exp, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_push_term_ui_ffmpz(nmod_mpoly_t A, ulong c, const fmpz * exp, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_push_term_ui_ui(nmod_mpoly_t A, ulong c, const ulong * exp, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_sort_terms(nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_combine_like_terms(nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_reverse(nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_randtest_bound(nmod_mpoly_t A, flint_rand_t state, slong length, ulong exp_bound, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_randtest_bounds(nmod_mpoly_t A, flint_rand_t state, slong length, ulong * exp_bounds, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_randtest_bits(nmod_mpoly_t A, flint_rand_t state, slong length, mp_limb_t exp_bits, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_add_ui(nmod_mpoly_t A, const nmod_mpoly_t B, ulong c, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_sub_ui(nmod_mpoly_t A, const nmod_mpoly_t B, ulong c, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_add(nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_t C, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_sub(nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_t C, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_neg(nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_scalar_mul_ui(nmod_mpoly_t A, const nmod_mpoly_t B, ulong c, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_make_monic(nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_derivative(nmod_mpoly_t A, const nmod_mpoly_t B, slong var, const nmod_mpoly_ctx_t ctx) noexcept + ulong nmod_mpoly_evaluate_all_ui(const nmod_mpoly_t A, const ulong * vals, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_evaluate_one_ui(nmod_mpoly_t A, const nmod_mpoly_t B, slong var, ulong val, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_compose_nmod_poly(nmod_poly_t A, const nmod_mpoly_t B, nmod_poly_struct * const * C, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_compose_nmod_mpoly_geobucket(nmod_mpoly_t A, const nmod_mpoly_t B, nmod_mpoly_struct * const * C, const nmod_mpoly_ctx_t ctxB, const nmod_mpoly_ctx_t ctxAC) noexcept + int nmod_mpoly_compose_nmod_mpoly_horner(nmod_mpoly_t A, const nmod_mpoly_t B, nmod_mpoly_struct * const * C, const nmod_mpoly_ctx_t ctxB, const nmod_mpoly_ctx_t ctxAC) noexcept + int nmod_mpoly_compose_nmod_mpoly(nmod_mpoly_t A, const nmod_mpoly_t B, nmod_mpoly_struct * const * C, const nmod_mpoly_ctx_t ctxB, const nmod_mpoly_ctx_t ctxAC) noexcept + void nmod_mpoly_compose_nmod_mpoly_gen(nmod_mpoly_t A, const nmod_mpoly_t B, const slong * c, const nmod_mpoly_ctx_t ctxB, const nmod_mpoly_ctx_t ctxAC) noexcept + void nmod_mpoly_mul(nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_t C, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_mul_johnson(nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_t C, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_mul_heap_threaded(nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_t C, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_mul_array(nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_t C, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_mul_array_threaded(nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_t C, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_mul_dense(nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_t C, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_pow_fmpz(nmod_mpoly_t A, const nmod_mpoly_t B, const fmpz_t k, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_pow_ui(nmod_mpoly_t A, const nmod_mpoly_t B, ulong k, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_divides(nmod_mpoly_t Q, const nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_div(nmod_mpoly_t Q, const nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_divrem(nmod_mpoly_t Q, nmod_mpoly_t R, const nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_divrem_ideal(nmod_mpoly_struct ** Q, nmod_mpoly_t R, const nmod_mpoly_t A, nmod_mpoly_struct * const * B, slong len, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_divides_dense(nmod_mpoly_t Q, const nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_divides_monagan_pearce(nmod_mpoly_t Q, const nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_divides_heap_threaded(nmod_mpoly_t Q, const nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_term_content(nmod_mpoly_t M, const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_content_vars(nmod_mpoly_t g, const nmod_mpoly_t A, slong * vars, slong vars_length, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_gcd(nmod_mpoly_t G, const nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_gcd_cofactors(nmod_mpoly_t G, nmod_mpoly_t Abar, nmod_mpoly_t Bbar, const nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_gcd_brown(nmod_mpoly_t G, const nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_gcd_hensel(nmod_mpoly_t G, const nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_gcd_zippel(nmod_mpoly_t G, const nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_resultant(nmod_mpoly_t R, const nmod_mpoly_t A, const nmod_mpoly_t B, slong var, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_discriminant(nmod_mpoly_t D, const nmod_mpoly_t A, slong var, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_sqrt(nmod_mpoly_t Q, const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + bint nmod_mpoly_is_square(const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_quadratic_root(nmod_mpoly_t Q, const nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_univar_init(nmod_mpoly_univar_t A, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_univar_clear(nmod_mpoly_univar_t A, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_univar_swap(nmod_mpoly_univar_t A, nmod_mpoly_univar_t B, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_to_univar(nmod_mpoly_univar_t A, const nmod_mpoly_t B, slong var, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_from_univar(nmod_mpoly_t A, const nmod_mpoly_univar_t B, slong var, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_univar_degree_fits_si(const nmod_mpoly_univar_t A, const nmod_mpoly_ctx_t ctx) noexcept + slong nmod_mpoly_univar_length(const nmod_mpoly_univar_t A, const nmod_mpoly_ctx_t ctx) noexcept + slong nmod_mpoly_univar_get_term_exp_si(nmod_mpoly_univar_t A, slong i, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_univar_get_term_coeff(nmod_mpoly_t c, const nmod_mpoly_univar_t A, slong i, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_univar_swap_term_coeff(nmod_mpoly_t c, nmod_mpoly_univar_t A, slong i, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_pow_rmul(nmod_mpoly_t A, const nmod_mpoly_t B, ulong k, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_div_monagan_pearce(nmod_mpoly_t polyq, const nmod_mpoly_t poly2, const nmod_mpoly_t poly3, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_divrem_monagan_pearce(nmod_mpoly_t q, nmod_mpoly_t r, const nmod_mpoly_t poly2, const nmod_mpoly_t poly3, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_divrem_ideal_monagan_pearce(nmod_mpoly_struct ** q, nmod_mpoly_t r, const nmod_mpoly_t poly2, nmod_mpoly_struct * const * poly3, slong len, const nmod_mpoly_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/nmod_mpoly_factor.pxd b/src/sage/libs/flint/nmod_mpoly_factor.pxd new file mode 100644 index 00000000000..23c6b47384f --- /dev/null +++ b/src/sage/libs/flint/nmod_mpoly_factor.pxd @@ -0,0 +1,26 @@ +# distutils: libraries = flint +# distutils: depends = flint/nmod_mpoly_factor.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void nmod_mpoly_factor_init(nmod_mpoly_factor_t f, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_factor_clear(nmod_mpoly_factor_t f, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_factor_swap(nmod_mpoly_factor_t f, nmod_mpoly_factor_t g, const nmod_mpoly_ctx_t ctx) noexcept + slong nmod_mpoly_factor_length(const nmod_mpoly_factor_t f, const nmod_mpoly_ctx_t ctx) noexcept + ulong nmod_mpoly_factor_get_constant_ui(const nmod_mpoly_factor_t f, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_factor_get_base(nmod_mpoly_t p, const nmod_mpoly_factor_t f, slong i, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_factor_swap_base(nmod_mpoly_t p, nmod_mpoly_factor_t f, slong i, const nmod_mpoly_ctx_t ctx) noexcept + slong nmod_mpoly_factor_get_exp_si(nmod_mpoly_factor_t f, slong i, const nmod_mpoly_ctx_t ctx) noexcept + void nmod_mpoly_factor_sort(nmod_mpoly_factor_t f, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_factor_squarefree(nmod_mpoly_factor_t f, const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept + int nmod_mpoly_factor(nmod_mpoly_factor_t f, const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/nmod_poly.pxd b/src/sage/libs/flint/nmod_poly.pxd index d11ef304ca2..eb5cd984fd6 100644 --- a/src/sage/libs/flint/nmod_poly.pxd +++ b/src/sage/libs/flint/nmod_poly.pxd @@ -1,148 +1,337 @@ # distutils: libraries = flint # distutils: depends = flint/nmod_poly.h +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * from sage.libs.flint.types cimport * -# flint/nmod_poly.h cdef extern from "flint_wrap.h": - # Memory management - cdef void nmod_poly_init(nmod_poly_t poly, mp_limb_t n) - cdef void nmod_poly_init_preinv(nmod_poly_t poly, mp_limb_t n, mp_limb_t ninv) - cdef void nmod_poly_init2(nmod_poly_t poly, mp_limb_t n, long alloc) - cdef void nmod_poly_init2_preinv(nmod_poly_t poly, mp_limb_t n, mp_limb_t ninv, long alloc) - - cdef void nmod_poly_clear(nmod_poly_t poly) - - cdef void nmod_poly_realloc(nmod_poly_t poly, long alloc) - - cdef void nmod_poly_fit_length(nmod_poly_t poly, long alloc) - cdef void _nmod_poly_normalise(nmod_poly_t poly) - - # Getting and setting coefficients - cdef unsigned long nmod_poly_get_coeff_ui(nmod_poly_t poly, unsigned long j) - cdef void nmod_poly_set_coeff_ui(nmod_poly_t poly, unsigned long j, unsigned long c) - - # Input and output - cdef char * nmod_poly_get_str(nmod_poly_t poly) - cdef int nmod_poly_set_str(char * s, nmod_poly_t poly) - cdef int nmod_poly_print(nmod_poly_t a) - cdef int nmod_poly_fread(FILE * f, nmod_poly_t poly) - cdef int nmod_poly_fprint(FILE * f, nmod_poly_t poly) - cdef int nmod_poly_read(nmod_poly_t poly) - - # Polynomial parameters - cdef long nmod_poly_length(nmod_poly_t poly) - cdef long nmod_poly_degree(nmod_poly_t poly) - cdef mp_limb_t nmod_poly_modulus(nmod_poly_t poly) - cdef mp_bitcnt_t nmod_poly_max_bits(nmod_poly_t poly) - - # Assignment and basic manipulation - cdef void nmod_poly_set(nmod_poly_t a, nmod_poly_t b) - cdef void nmod_poly_swap(nmod_poly_t poly1, nmod_poly_t poly2) - cdef void nmod_poly_zero(nmod_poly_t res) - cdef void nmod_poly_one(nmod_poly_t res) - cdef void nmod_poly_truncate(nmod_poly_t poly, long len) - cdef void nmod_poly_reverse(nmod_poly_t output, nmod_poly_t input, long m) - cdef void nmod_poly_revert_series(nmod_poly_t output, nmod_poly_t intput, long m) - - cdef int nmod_poly_equal(nmod_poly_t a, nmod_poly_t b) - - # Powering - cdef void nmod_poly_pow(nmod_poly_t res, nmod_poly_t poly, unsigned long e) - cdef void nmod_poly_pow_trunc(nmod_poly_t res, nmod_poly_t poly, unsigned long e, long trunc) - cdef void nmod_poly_powmod_ui_binexp(nmod_poly_t res, const nmod_poly_t poly, ulong e, const nmod_poly_t f) - - # Inflation and deflation - cdef unsigned long nmod_poly_deflation(nmod_poly_t input) - cdef void nmod_poly_deflate(nmod_poly_t result, nmod_poly_t input, unsigned long deflation) - cdef void nmod_poly_inflate(nmod_poly_t result, nmod_poly_t input, unsigned long inflation) - - # Comparison - cdef int nmod_poly_is_zero(nmod_poly_t poly) - cdef int nmod_poly_is_one(nmod_poly_t poly) - - # Addition and subtraction - cdef void nmod_poly_add(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2) - cdef void nmod_poly_sub(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2) - cdef void nmod_poly_neg(nmod_poly_t res, nmod_poly_t poly1) - - # Shifting - cdef void nmod_poly_shift_left(nmod_poly_t res, nmod_poly_t poly, long k) - cdef void nmod_poly_shift_right(nmod_poly_t res, nmod_poly_t poly, long k) - - # Multiplication - cdef void nmod_poly_mul(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2) - cdef void nmod_poly_mullow(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2, long trunc) - cdef void nmod_poly_mulhigh(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2, long n) - cdef void nmod_poly_mulmod(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2, nmod_poly_t f) - - # Square roots - cdef void nmod_poly_invsqrt_series(nmod_poly_t g, nmod_poly_t h, long n) - cdef void nmod_poly_sqrt_series(nmod_poly_t g, nmod_poly_t h, long n) - int nmod_poly_sqrt(nmod_poly_t b, nmod_poly_t a) - - # Scalar multiplication and division - cdef void nmod_poly_scalar_mul_nmod(nmod_poly_t res, nmod_poly_t poly1, mp_limb_t c) - cdef void nmod_poly_make_monic(nmod_poly_t output, nmod_poly_t input) - - # Division - cdef void nmod_poly_divrem(nmod_poly_t Q, nmod_poly_t R, nmod_poly_t A, nmod_poly_t B) - cdef void nmod_poly_div(nmod_poly_t Q, nmod_poly_t A, nmod_poly_t B) - cdef void nmod_poly_inv_series(nmod_poly_t Qinv, nmod_poly_t Q, long n) - cdef void nmod_poly_div_series(nmod_poly_t Q, nmod_poly_t A, nmod_poly_t B, long n) - - # GCD - cdef void nmod_poly_gcd(nmod_poly_t G, nmod_poly_t A, nmod_poly_t B) - cdef void nmod_poly_xgcd(nmod_poly_t G, nmod_poly_t S, nmod_poly_t T, nmod_poly_t A, nmod_poly_t B) - mp_limb_t nmod_poly_resultant(nmod_poly_t f, nmod_poly_t g) - - - # Evaluation - cdef mp_limb_t nmod_poly_evaluate_nmod(nmod_poly_t poly, mp_limb_t c) - cdef void nmod_poly_evaluate_nmod_vec(mp_ptr ys, nmod_poly_t poly, mp_srcptr xs, long n) - - # Interpolation - cdef void nmod_poly_interpolate_nmod_vec(nmod_poly_t poly, mp_srcptr xs, mp_srcptr ys, long n) - - # Composition - cdef void nmod_poly_compose(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2) - - # Power series composition and reversion - cdef void nmod_poly_compose_series(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2, long n) - cdef void nmod_poly_reverse_series(nmod_poly_t Qinv, nmod_poly_t Q, long n) - - # Factoring - cdef void nmod_poly_factor_clear(nmod_poly_factor_t fac) - cdef void nmod_poly_factor_init(nmod_poly_factor_t fac) - cdef void nmod_poly_factor_insert(nmod_poly_factor_t fac, nmod_poly_t poly, unsigned long exp) - cdef void nmod_poly_factor_print(nmod_poly_factor_t fac) - cdef void nmod_poly_factor_concat(nmod_poly_factor_t res, nmod_poly_factor_t fac) - cdef void nmod_poly_factor_pow(nmod_poly_factor_t fac, unsigned long exp) - cdef unsigned long nmod_poly_remove(nmod_poly_t f, nmod_poly_t p) - cdef int nmod_poly_is_irreducible(nmod_poly_t f) - cdef int nmod_poly_is_squarefree(nmod_poly_t f) - cdef void nmod_poly_factor_cantor_zassenhaus(nmod_poly_factor_t res, nmod_poly_t f) - cdef void nmod_poly_factor_berlekamp(nmod_poly_factor_t factors, nmod_poly_t f) - cdef void nmod_poly_factor_squarefree(nmod_poly_factor_t res, nmod_poly_t f) - cdef mp_limb_t nmod_poly_factor_with_berlekamp(nmod_poly_factor_t result, nmod_poly_t input) - cdef mp_limb_t nmod_poly_factor_with_cantor_zassenhaus(nmod_poly_factor_t result, nmod_poly_t input) - cdef mp_limb_t nmod_poly_factor(nmod_poly_factor_t result, nmod_poly_t input) - - # Derivative - cdef void nmod_poly_derivative(nmod_poly_t x_prime, nmod_poly_t x) - cdef void nmod_poly_integral(nmod_poly_t x_int, nmod_poly_t x) - - # Transcendental functions - cdef void nmod_poly_atan_series(nmod_poly_t g, nmod_poly_t h, long n) - cdef void nmod_poly_tan_series(nmod_poly_t g, nmod_poly_t h, long n) - cdef void nmod_poly_asin_series(nmod_poly_t g, nmod_poly_t h, long n) - cdef void nmod_poly_sin_series(nmod_poly_t g, nmod_poly_t h, long n) - cdef void nmod_poly_cos_series(nmod_poly_t g, nmod_poly_t h, long n) - cdef void nmod_poly_asinh_series(nmod_poly_t g, nmod_poly_t h, long n) - cdef void nmod_poly_atanh_series(nmod_poly_t g, nmod_poly_t h, long n) - cdef void nmod_poly_sinh_series(nmod_poly_t g, nmod_poly_t h, long n) - cdef void nmod_poly_cosh_series(nmod_poly_t g, nmod_poly_t h, long n) - cdef void nmod_poly_tanh_series(nmod_poly_t g, nmod_poly_t h, long n) - cdef void nmod_poly_log_series(nmod_poly_t res, nmod_poly_t f, long n) - cdef void nmod_poly_exp_series(nmod_poly_t f, nmod_poly_t h, long) + int signed_mpn_sub_n(mp_ptr res, mp_srcptr op1, mp_srcptr op2, slong n) noexcept + void nmod_poly_init(nmod_poly_t poly, mp_limb_t n) noexcept + void nmod_poly_init_preinv(nmod_poly_t poly, mp_limb_t n, mp_limb_t ninv) noexcept + void nmod_poly_init_mod(nmod_poly_t poly, const nmod_t mod) noexcept + void nmod_poly_init2(nmod_poly_t poly, mp_limb_t n, slong alloc) noexcept + void nmod_poly_init2_preinv(nmod_poly_t poly, mp_limb_t n, mp_limb_t ninv, slong alloc) noexcept + void nmod_poly_realloc(nmod_poly_t poly, slong alloc) noexcept + void nmod_poly_clear(nmod_poly_t poly) noexcept + void nmod_poly_fit_length(nmod_poly_t poly, slong alloc) noexcept + void _nmod_poly_normalise(nmod_poly_t poly) noexcept + slong nmod_poly_length(const nmod_poly_t poly) noexcept + slong nmod_poly_degree(const nmod_poly_t poly) noexcept + mp_limb_t nmod_poly_modulus(const nmod_poly_t poly) noexcept + flint_bitcnt_t nmod_poly_max_bits(const nmod_poly_t poly) noexcept + bint nmod_poly_is_unit(const nmod_poly_t poly) noexcept + bint nmod_poly_is_monic(const nmod_poly_t poly) noexcept + void nmod_poly_set(nmod_poly_t a, const nmod_poly_t b) noexcept + void nmod_poly_swap(nmod_poly_t poly1, nmod_poly_t poly2) noexcept + void nmod_poly_zero(nmod_poly_t res) noexcept + void nmod_poly_truncate(nmod_poly_t poly, slong len) noexcept + void nmod_poly_set_trunc(nmod_poly_t res, const nmod_poly_t poly, slong len) noexcept + void _nmod_poly_reverse(mp_ptr output, mp_srcptr input, slong len, slong m) noexcept + void nmod_poly_reverse(nmod_poly_t output, const nmod_poly_t input, slong m) noexcept + void nmod_poly_randtest(nmod_poly_t poly, flint_rand_t state, slong len) noexcept + void nmod_poly_randtest_irreducible(nmod_poly_t poly, flint_rand_t state, slong len) noexcept + void nmod_poly_randtest_monic(nmod_poly_t poly, flint_rand_t state, slong len) noexcept + void nmod_poly_randtest_monic_irreducible(nmod_poly_t poly, flint_rand_t state, slong len) noexcept + void nmod_poly_randtest_monic_primitive(nmod_poly_t poly, flint_rand_t state, slong len) noexcept + void nmod_poly_randtest_trinomial(nmod_poly_t poly, flint_rand_t state, slong len) noexcept + int nmod_poly_randtest_trinomial_irreducible(nmod_poly_t poly, flint_rand_t state, slong len, slong max_attempts) noexcept + void nmod_poly_randtest_pentomial(nmod_poly_t poly, flint_rand_t state, slong len) noexcept + int nmod_poly_randtest_pentomial_irreducible(nmod_poly_t poly, flint_rand_t state, slong len, slong max_attempts) noexcept + void nmod_poly_randtest_sparse_irreducible(nmod_poly_t poly, flint_rand_t state, slong len) noexcept + ulong nmod_poly_get_coeff_ui(const nmod_poly_t poly, slong j) noexcept + void nmod_poly_set_coeff_ui(nmod_poly_t poly, slong j, ulong c) noexcept + char * nmod_poly_get_str(const nmod_poly_t poly) noexcept + char * nmod_poly_get_str_pretty(const nmod_poly_t poly, const char * x) noexcept + int nmod_poly_set_str(nmod_poly_t poly, const char * s) noexcept + int nmod_poly_print(const nmod_poly_t a) noexcept + int nmod_poly_print_pretty(const nmod_poly_t a, const char * x) noexcept + int nmod_poly_fread(FILE * f, nmod_poly_t poly) noexcept + int nmod_poly_fprint(FILE * f, const nmod_poly_t poly) noexcept + int nmod_poly_fprint_pretty(FILE * f, const nmod_poly_t poly, const char * x) noexcept + int nmod_poly_read(nmod_poly_t poly) noexcept + bint nmod_poly_equal(const nmod_poly_t a, const nmod_poly_t b) noexcept + bint nmod_poly_equal_nmod(const nmod_poly_t poly, ulong cst) noexcept + bint nmod_poly_equal_ui(const nmod_poly_t poly, ulong cst) noexcept + bint nmod_poly_equal_trunc(const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) noexcept + bint nmod_poly_is_zero(const nmod_poly_t poly) noexcept + bint nmod_poly_is_one(const nmod_poly_t poly) noexcept + bint nmod_poly_is_gen(const nmod_poly_t poly) noexcept + void _nmod_poly_shift_left(mp_ptr res, mp_srcptr poly, slong len, slong k) noexcept + void nmod_poly_shift_left(nmod_poly_t res, const nmod_poly_t poly, slong k) noexcept + void _nmod_poly_shift_right(mp_ptr res, mp_srcptr poly, slong len, slong k) noexcept + void nmod_poly_shift_right(nmod_poly_t res, const nmod_poly_t poly, slong k) noexcept + void _nmod_poly_add(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) noexcept + void nmod_poly_add(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) noexcept + void nmod_poly_add_series(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) noexcept + void _nmod_poly_sub(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) noexcept + void nmod_poly_sub(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) noexcept + void nmod_poly_sub_series(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) noexcept + void nmod_poly_neg(nmod_poly_t res, const nmod_poly_t poly) noexcept + void nmod_poly_scalar_mul_nmod(nmod_poly_t res, const nmod_poly_t poly, ulong c) noexcept + void nmod_poly_scalar_addmul_nmod(nmod_poly_t res, const nmod_poly_t poly, ulong c) noexcept + void _nmod_poly_make_monic(mp_ptr output, mp_srcptr input, slong len, nmod_t mod) noexcept + void nmod_poly_make_monic(nmod_poly_t output, const nmod_poly_t input) noexcept + void _nmod_poly_bit_pack(mp_ptr res, mp_srcptr poly, slong len, flint_bitcnt_t bits) noexcept + void _nmod_poly_bit_unpack(mp_ptr res, slong len, mp_srcptr mpn, ulong bits, nmod_t mod) noexcept + void nmod_poly_bit_pack(fmpz_t f, const nmod_poly_t poly, flint_bitcnt_t bit_size) noexcept + void nmod_poly_bit_unpack(nmod_poly_t poly, const fmpz_t f, flint_bitcnt_t bit_size) noexcept + void _nmod_poly_KS2_pack1(mp_ptr res, mp_srcptr op, slong n, slong s, ulong b, ulong k, slong r) noexcept + void _nmod_poly_KS2_pack(mp_ptr res, mp_srcptr op, slong n, slong s, ulong b, ulong k, slong r) noexcept + void _nmod_poly_KS2_unpack1(mp_ptr res, mp_srcptr op, slong n, ulong b, ulong k) noexcept + void _nmod_poly_KS2_unpack2(mp_ptr res, mp_srcptr op, slong n, ulong b, ulong k) noexcept + void _nmod_poly_KS2_unpack3(mp_ptr res, mp_srcptr op, slong n, ulong b, ulong k) noexcept + void _nmod_poly_KS2_unpack(mp_ptr res, mp_srcptr op, slong n, ulong b, ulong k) noexcept + void _nmod_poly_KS2_reduce(mp_ptr res, slong s, mp_srcptr op, slong n, ulong w, nmod_t mod) noexcept + void _nmod_poly_KS2_recover_reduce1(mp_ptr res, slong s, mp_srcptr op1, mp_srcptr op2, slong n, ulong b, nmod_t mod) noexcept + void _nmod_poly_KS2_recover_reduce2(mp_ptr res, slong s, mp_srcptr op1, mp_srcptr op2, slong n, ulong b, nmod_t mod) noexcept + void _nmod_poly_KS2_recover_reduce2b(mp_ptr res, slong s, mp_srcptr op1, mp_srcptr op2, slong n, ulong b, nmod_t mod) noexcept + void _nmod_poly_KS2_recover_reduce3(mp_ptr res, slong s, mp_srcptr op1, mp_srcptr op2, slong n, ulong b, nmod_t mod) noexcept + void _nmod_poly_KS2_recover_reduce(mp_ptr res, slong s, mp_srcptr op1, mp_srcptr op2, slong n, ulong b, nmod_t mod) noexcept + void _nmod_poly_mul_classical(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) noexcept + void nmod_poly_mul_classical(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) noexcept + void _nmod_poly_mullow_classical(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong trunc, nmod_t mod) noexcept + void nmod_poly_mullow_classical(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong trunc) noexcept + void _nmod_poly_mulhigh_classical(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong start, nmod_t mod) noexcept + void nmod_poly_mulhigh_classical(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong start) noexcept + void _nmod_poly_mul_KS(mp_ptr out, mp_srcptr in1, slong len1, mp_srcptr in2, slong len2, flint_bitcnt_t bits, nmod_t mod) noexcept + void nmod_poly_mul_KS(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, flint_bitcnt_t bits) noexcept + void _nmod_poly_mul_KS2(mp_ptr res, mp_srcptr op1, slong n1, mp_srcptr op2, slong n2, nmod_t mod) noexcept + void nmod_poly_mul_KS2(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) noexcept + void _nmod_poly_mul_KS4(mp_ptr res, mp_srcptr op1, slong n1, mp_srcptr op2, slong n2, nmod_t mod) noexcept + void nmod_poly_mul_KS4(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) noexcept + void _nmod_poly_mullow_KS(mp_ptr out, mp_srcptr in1, slong len1, mp_srcptr in2, slong len2, flint_bitcnt_t bits, slong n, nmod_t mod) noexcept + void nmod_poly_mullow_KS(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, flint_bitcnt_t bits, slong n) noexcept + void _nmod_poly_mul(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) noexcept + void nmod_poly_mul(nmod_poly_t res, const nmod_poly_t poly, const nmod_poly_t poly2) noexcept + void _nmod_poly_mullow(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong n, nmod_t mod) noexcept + void nmod_poly_mullow(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong trunc) noexcept + void _nmod_poly_mulhigh(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong n, nmod_t mod) noexcept + void nmod_poly_mulhigh(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) noexcept + void _nmod_poly_mulmod(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, mp_srcptr f, slong lenf, nmod_t mod) noexcept + void nmod_poly_mulmod(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, const nmod_poly_t f) noexcept + void _nmod_poly_mulmod_preinv(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, mp_srcptr f, slong lenf, mp_srcptr finv, slong lenfinv, nmod_t mod) noexcept + void nmod_poly_mulmod_preinv(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, const nmod_poly_t f, const nmod_poly_t finv) noexcept + void _nmod_poly_pow_binexp(mp_ptr res, mp_srcptr poly, slong len, ulong e, nmod_t mod) noexcept + void nmod_poly_pow_binexp(nmod_poly_t res, const nmod_poly_t poly, ulong e) noexcept + void _nmod_poly_pow(mp_ptr res, mp_srcptr poly, slong len, ulong e, nmod_t mod) noexcept + void nmod_poly_pow(nmod_poly_t res, const nmod_poly_t poly, ulong e) noexcept + void _nmod_poly_pow_trunc_binexp(mp_ptr res, mp_srcptr poly, ulong e, slong trunc, nmod_t mod) noexcept + void nmod_poly_pow_trunc_binexp(nmod_poly_t res, const nmod_poly_t poly, ulong e, slong trunc) noexcept + void _nmod_poly_pow_trunc(mp_ptr res, mp_srcptr poly, ulong e, slong trunc, nmod_t mod) noexcept + void nmod_poly_pow_trunc(nmod_poly_t res, const nmod_poly_t poly, ulong e, slong trunc) noexcept + void _nmod_poly_powmod_ui_binexp(mp_ptr res, mp_srcptr poly, ulong e, mp_srcptr f, slong lenf, nmod_t mod) noexcept + void nmod_poly_powmod_ui_binexp(nmod_poly_t res, const nmod_poly_t poly, ulong e, const nmod_poly_t f) noexcept + void _nmod_poly_powmod_fmpz_binexp(mp_ptr res, mp_srcptr poly, fmpz_t e, mp_srcptr f, slong lenf, nmod_t mod) noexcept + void nmod_poly_powmod_fmpz_binexp(nmod_poly_t res, const nmod_poly_t poly, fmpz_t e, const nmod_poly_t f) noexcept + void _nmod_poly_powmod_ui_binexp_preinv (mp_ptr res, mp_srcptr poly, ulong e, mp_srcptr f, slong lenf, mp_srcptr finv, slong lenfinv, nmod_t mod) noexcept + void nmod_poly_powmod_ui_binexp_preinv(nmod_poly_t res, const nmod_poly_t poly, ulong e, const nmod_poly_t f, const nmod_poly_t finv) noexcept + void _nmod_poly_powmod_fmpz_binexp_preinv (mp_ptr res, mp_srcptr poly, fmpz_t e, mp_srcptr f, slong lenf, mp_srcptr finv, slong lenfinv, nmod_t mod) noexcept + void nmod_poly_powmod_fmpz_binexp_preinv(nmod_poly_t res, const nmod_poly_t poly, fmpz_t e, const nmod_poly_t f, const nmod_poly_t finv) noexcept + void _nmod_poly_powmod_x_ui_preinv (mp_ptr res, ulong e, mp_srcptr f, slong lenf, mp_srcptr finv, slong lenfinv, nmod_t mod) noexcept + void nmod_poly_powmod_x_ui_preinv(nmod_poly_t res, ulong e, const nmod_poly_t f, const nmod_poly_t finv) noexcept + void _nmod_poly_powmod_x_fmpz_preinv (mp_ptr res, fmpz_t e, mp_srcptr f, slong lenf, mp_srcptr finv, slong lenfinv, nmod_t mod) noexcept + void nmod_poly_powmod_x_fmpz_preinv(nmod_poly_t res, fmpz_t e, const nmod_poly_t f, const nmod_poly_t finv) noexcept + void _nmod_poly_powers_mod_preinv_naive(mp_ptr * res, mp_srcptr f, slong flen, slong n, mp_srcptr g, slong glen, mp_srcptr ginv, slong ginvlen, const nmod_t mod) noexcept + void nmod_poly_powers_mod_naive(nmod_poly_struct * res, const nmod_poly_t f, slong n, const nmod_poly_t g) noexcept + void _nmod_poly_powers_mod_preinv_threaded_pool(mp_ptr * res, mp_srcptr f, slong flen, slong n, mp_srcptr g, slong glen, mp_srcptr ginv, slong ginvlen, const nmod_t mod, thread_pool_handle * threads, slong num_threads) noexcept + void _nmod_poly_powers_mod_preinv_threaded(mp_ptr * res, mp_srcptr f, slong flen, slong n, mp_srcptr g, slong glen, mp_srcptr ginv, slong ginvlen, const nmod_t mod) noexcept + void nmod_poly_powers_mod_bsgs(nmod_poly_struct * res, const nmod_poly_t f, slong n, const nmod_poly_t g) noexcept + void _nmod_poly_divrem_basecase(mp_ptr Q, mp_ptr R, mp_srcptr A, slong A_len, mp_srcptr B, slong B_len, nmod_t mod) noexcept + void nmod_poly_divrem_basecase(nmod_poly_t Q, nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B) noexcept + void _nmod_poly_divrem(mp_ptr Q, mp_ptr R, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) noexcept + void nmod_poly_divrem(nmod_poly_t Q, nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B) noexcept + void _nmod_poly_div(mp_ptr Q, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) noexcept + void nmod_poly_div(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) noexcept + void _nmod_poly_rem_q1(mp_ptr R, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) noexcept + void _nmod_poly_rem(mp_ptr R, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) noexcept + void nmod_poly_rem(nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B) noexcept + void _nmod_poly_inv_series_basecase(mp_ptr Qinv, mp_srcptr Q, slong Qlen, slong n, nmod_t mod) noexcept + void nmod_poly_inv_series_basecase(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) noexcept + void _nmod_poly_inv_series_newton(mp_ptr Qinv, mp_srcptr Q, slong Qlen, slong n, nmod_t mod) noexcept + void nmod_poly_inv_series_newton(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) noexcept + void _nmod_poly_inv_series(mp_ptr Qinv, mp_srcptr Q, slong Qlen, slong n, nmod_t mod) noexcept + void nmod_poly_inv_series(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) noexcept + void _nmod_poly_div_series_basecase(mp_ptr Q, mp_srcptr A, slong Alen, mp_srcptr B, slong Blen, slong n, nmod_t mod) noexcept + void nmod_poly_div_series_basecase(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B, slong n) noexcept + void _nmod_poly_div_series(mp_ptr Q, mp_srcptr A, slong Alen, mp_srcptr B, slong Blen, slong n, nmod_t mod) noexcept + void nmod_poly_div_series(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B, slong n) noexcept + void _nmod_poly_div_newton_n_preinv (mp_ptr Q, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, mp_srcptr Binv, slong lenBinv, nmod_t mod) noexcept + void nmod_poly_div_newton_n_preinv (nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B, const nmod_poly_t Binv) noexcept + void _nmod_poly_divrem_newton_n_preinv (mp_ptr Q, mp_ptr R, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, mp_srcptr Binv, slong lenBinv, nmod_t mod) noexcept + void nmod_poly_divrem_newton_n_preinv(nmod_poly_t Q, nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B, const nmod_poly_t Binv) noexcept + mp_limb_t _nmod_poly_div_root(mp_ptr Q, mp_srcptr A, slong len, mp_limb_t c, nmod_t mod) noexcept + mp_limb_t nmod_poly_div_root(nmod_poly_t Q, const nmod_poly_t A, mp_limb_t c) noexcept + int _nmod_poly_divides_classical(mp_ptr Q, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) noexcept + int nmod_poly_divides_classical(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) noexcept + int _nmod_poly_divides(mp_ptr Q, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) noexcept + int nmod_poly_divides(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) noexcept + ulong nmod_poly_remove(nmod_poly_t f, const nmod_poly_t p) noexcept + void _nmod_poly_derivative(mp_ptr x_prime, mp_srcptr x, slong len, nmod_t mod) noexcept + void nmod_poly_derivative(nmod_poly_t x_prime, const nmod_poly_t x) noexcept + void _nmod_poly_integral(mp_ptr x_int, mp_srcptr x, slong len, nmod_t mod) noexcept + void nmod_poly_integral(nmod_poly_t x_int, const nmod_poly_t x) noexcept + mp_limb_t _nmod_poly_evaluate_nmod(mp_srcptr poly, slong len, mp_limb_t c, nmod_t mod) noexcept + mp_limb_t nmod_poly_evaluate_nmod(const nmod_poly_t poly, mp_limb_t c) noexcept + void nmod_poly_evaluate_mat_horner(nmod_mat_t dest, const nmod_poly_t poly, const nmod_mat_t c) noexcept + void nmod_poly_evaluate_mat_paterson_stockmeyer(nmod_mat_t dest, const nmod_poly_t poly, const nmod_mat_t c) noexcept + void nmod_poly_evaluate_mat(nmod_mat_t dest, const nmod_poly_t poly, const nmod_mat_t c) noexcept + void _nmod_poly_evaluate_nmod_vec_iter(mp_ptr ys, mp_srcptr poly, slong len, mp_srcptr xs, slong n, nmod_t mod) noexcept + void nmod_poly_evaluate_nmod_vec_iter(mp_ptr ys, const nmod_poly_t poly, mp_srcptr xs, slong n) noexcept + void _nmod_poly_evaluate_nmod_vec_fast_precomp(mp_ptr vs, mp_srcptr poly, slong plen, const mp_ptr * tree, slong len, nmod_t mod) noexcept + void _nmod_poly_evaluate_nmod_vec_fast(mp_ptr ys, mp_srcptr poly, slong len, mp_srcptr xs, slong n, nmod_t mod) noexcept + void nmod_poly_evaluate_nmod_vec_fast(mp_ptr ys, const nmod_poly_t poly, mp_srcptr xs, slong n) noexcept + void _nmod_poly_evaluate_nmod_vec(mp_ptr ys, mp_srcptr poly, slong len, mp_srcptr xs, slong n, nmod_t mod) noexcept + void nmod_poly_evaluate_nmod_vec(mp_ptr ys, const nmod_poly_t poly, mp_srcptr xs, slong n) noexcept + void _nmod_poly_interpolate_nmod_vec(mp_ptr poly, mp_srcptr xs, mp_srcptr ys, slong n, nmod_t mod) noexcept + void nmod_poly_interpolate_nmod_vec(nmod_poly_t poly, mp_srcptr xs, mp_srcptr ys, slong n) noexcept + void _nmod_poly_interpolation_weights(mp_ptr w, const mp_ptr * tree, slong len, nmod_t mod) noexcept + void _nmod_poly_interpolate_nmod_vec_fast_precomp(mp_ptr poly, mp_srcptr ys, const mp_ptr * tree, mp_srcptr weights, slong len, nmod_t mod) noexcept + void _nmod_poly_interpolate_nmod_vec_fast(mp_ptr poly, mp_srcptr xs, mp_srcptr ys, slong n, nmod_t mod) noexcept + void nmod_poly_interpolate_nmod_vec_fast(nmod_poly_t poly, mp_srcptr xs, mp_srcptr ys, slong n) noexcept + void _nmod_poly_interpolate_nmod_vec_newton(mp_ptr poly, mp_srcptr xs, mp_srcptr ys, slong n, nmod_t mod) noexcept + void nmod_poly_interpolate_nmod_vec_newton(nmod_poly_t poly, mp_srcptr xs, mp_srcptr ys, slong n) noexcept + void _nmod_poly_interpolate_nmod_vec_barycentric(mp_ptr poly, mp_srcptr xs, mp_srcptr ys, slong n, nmod_t mod) noexcept + void nmod_poly_interpolate_nmod_vec_barycentric(nmod_poly_t poly, mp_srcptr xs, mp_srcptr ys, slong n) noexcept + void _nmod_poly_compose_horner(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) noexcept + void nmod_poly_compose_horner(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) noexcept + void _nmod_poly_compose_divconquer(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) noexcept + void nmod_poly_compose_divconquer(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) noexcept + void _nmod_poly_compose(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) noexcept + void nmod_poly_compose(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) noexcept + void _nmod_poly_taylor_shift_horner(mp_ptr poly, mp_limb_t c, slong len, nmod_t mod) noexcept + void nmod_poly_taylor_shift_horner(nmod_poly_t g, const nmod_poly_t f, mp_limb_t c) noexcept + void _nmod_poly_taylor_shift_convolution(mp_ptr poly, mp_limb_t c, slong len, nmod_t mod) noexcept + void nmod_poly_taylor_shift_convolution(nmod_poly_t g, const nmod_poly_t f, mp_limb_t c) noexcept + void _nmod_poly_taylor_shift(mp_ptr poly, mp_limb_t c, slong len, nmod_t mod) noexcept + void nmod_poly_taylor_shift(nmod_poly_t g, const nmod_poly_t f, mp_limb_t c) noexcept + void _nmod_poly_compose_mod_horner(mp_ptr res, mp_srcptr f, slong lenf, mp_srcptr g, mp_srcptr h, slong lenh, nmod_t mod) noexcept + void nmod_poly_compose_mod_horner(nmod_poly_t res, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t h) noexcept + void _nmod_poly_compose_mod_brent_kung(mp_ptr res, mp_srcptr f, slong lenf, mp_srcptr g, mp_srcptr h, slong lenh, nmod_t mod) noexcept + void nmod_poly_compose_mod_brent_kung(nmod_poly_t res, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t h) noexcept + void _nmod_poly_compose_mod_brent_kung_preinv(mp_ptr res, mp_srcptr f, slong lenf, mp_srcptr g, mp_srcptr h, slong lenh, mp_srcptr hinv, slong lenhinv, nmod_t mod) noexcept + void nmod_poly_compose_mod_brent_kung_preinv(nmod_poly_t res, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t h, const nmod_poly_t hinv) noexcept + void _nmod_poly_reduce_matrix_mod_poly (nmod_mat_t A, const nmod_mat_t B, const nmod_poly_t f) noexcept + void _nmod_poly_precompute_matrix_worker (void * arg_ptr) noexcept + void _nmod_poly_precompute_matrix (nmod_mat_t A, mp_srcptr f, mp_srcptr g, slong leng, mp_srcptr ginv, slong lenginv, nmod_t mod) noexcept + void nmod_poly_precompute_matrix (nmod_mat_t A, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t ginv) noexcept + void _nmod_poly_compose_mod_brent_kung_precomp_preinv_worker(void * arg_ptr) noexcept + void _nmod_poly_compose_mod_brent_kung_precomp_preinv(mp_ptr res, mp_srcptr f, slong lenf, const nmod_mat_t A, mp_srcptr h, slong lenh, mp_srcptr hinv, slong lenhinv, nmod_t mod) noexcept + void nmod_poly_compose_mod_brent_kung_precomp_preinv(nmod_poly_t res, const nmod_poly_t f, const nmod_mat_t A, const nmod_poly_t h, const nmod_poly_t hinv) noexcept + void _nmod_poly_compose_mod_brent_kung_vec_preinv(nmod_poly_struct * res, const nmod_poly_struct * polys, slong len1, slong l, mp_srcptr g, slong leng, mp_srcptr h, slong lenh, mp_srcptr hinv, slong lenhinv, nmod_t mod) noexcept + void nmod_poly_compose_mod_brent_kung_vec_preinv(nmod_poly_struct * res, const nmod_poly_struct * polys, slong len1, slong n, const nmod_poly_t g, const nmod_poly_t h, const nmod_poly_t hinv) noexcept + void _nmod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(nmod_poly_struct * res, const nmod_poly_struct * polys, slong lenpolys, slong l, mp_srcptr g, slong glen, mp_srcptr poly, slong len, mp_srcptr polyinv, slong leninv, nmod_t mod, thread_pool_handle * threads, slong num_threads) noexcept + void nmod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(nmod_poly_struct * res, const nmod_poly_struct * polys, slong len1, slong n, const nmod_poly_t g, const nmod_poly_t poly, const nmod_poly_t polyinv, thread_pool_handle * threads, slong num_threads) noexcept + void nmod_poly_compose_mod_brent_kung_vec_preinv_threaded(nmod_poly_struct * res, const nmod_poly_struct * polys, slong len1, slong n, const nmod_poly_t g, const nmod_poly_t poly, const nmod_poly_t polyinv) noexcept + void _nmod_poly_compose_mod(mp_ptr res, mp_srcptr f, slong lenf, mp_srcptr g, mp_srcptr h, slong lenh, nmod_t mod) noexcept + void nmod_poly_compose_mod(nmod_poly_t res, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t h) noexcept + slong _nmod_poly_gcd_euclidean(mp_ptr G, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) noexcept + void nmod_poly_gcd_euclidean(nmod_poly_t G, const nmod_poly_t A, const nmod_poly_t B) noexcept + slong _nmod_poly_hgcd(mp_ptr * M, slong * lenM, mp_ptr A, slong * lenA, mp_ptr B, slong * lenB, mp_srcptr a, slong lena, mp_srcptr b, slong lenb, nmod_t mod) noexcept + slong _nmod_poly_gcd_hgcd(mp_ptr G, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) noexcept + void nmod_poly_gcd_hgcd(nmod_poly_t G, const nmod_poly_t A, const nmod_poly_t B) noexcept + slong _nmod_poly_gcd(mp_ptr G, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) noexcept + void nmod_poly_gcd(nmod_poly_t G, const nmod_poly_t A, const nmod_poly_t B) noexcept + slong _nmod_poly_xgcd_euclidean(mp_ptr G, mp_ptr S, mp_ptr T, mp_srcptr A, slong A_len, mp_srcptr B, slong B_len, nmod_t mod) noexcept + void nmod_poly_xgcd_euclidean(nmod_poly_t G, nmod_poly_t S, nmod_poly_t T, const nmod_poly_t A, const nmod_poly_t B) noexcept + slong _nmod_poly_xgcd_hgcd(mp_ptr G, mp_ptr S, mp_ptr T, mp_srcptr A, slong A_len, mp_srcptr B, slong B_len, nmod_t mod) noexcept + void nmod_poly_xgcd_hgcd(nmod_poly_t G, nmod_poly_t S, nmod_poly_t T, const nmod_poly_t A, const nmod_poly_t B) noexcept + slong _nmod_poly_xgcd(mp_ptr G, mp_ptr S, mp_ptr T, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) noexcept + void nmod_poly_xgcd(nmod_poly_t G, nmod_poly_t S, nmod_poly_t T, const nmod_poly_t A, const nmod_poly_t B) noexcept + mp_limb_t _nmod_poly_resultant_euclidean(mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) noexcept + mp_limb_t nmod_poly_resultant_euclidean(const nmod_poly_t f, const nmod_poly_t g) noexcept + mp_limb_t _nmod_poly_resultant_hgcd(mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) noexcept + mp_limb_t nmod_poly_resultant_hgcd(const nmod_poly_t f, const nmod_poly_t g) noexcept + mp_limb_t _nmod_poly_resultant(mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) noexcept + mp_limb_t nmod_poly_resultant(const nmod_poly_t f, const nmod_poly_t g) noexcept + slong _nmod_poly_gcdinv(mp_limb_t * G, mp_limb_t * S, const mp_limb_t * A, slong lenA, const mp_limb_t * B, slong lenB, const nmod_t mod) noexcept + void nmod_poly_gcdinv(nmod_poly_t G, nmod_poly_t S, const nmod_poly_t A, const nmod_poly_t B) noexcept + int _nmod_poly_invmod(mp_limb_t * A, const mp_limb_t * B, slong lenB, const mp_limb_t * P, slong lenP, const nmod_t mod) noexcept + int nmod_poly_invmod(nmod_poly_t A, const nmod_poly_t B, const nmod_poly_t P) noexcept + mp_limb_t _nmod_poly_discriminant(mp_srcptr poly, slong len, nmod_t mod) noexcept + mp_limb_t nmod_poly_discriminant(const nmod_poly_t f) noexcept + void _nmod_poly_compose_series(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong n, nmod_t mod) noexcept + void nmod_poly_compose_series(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) noexcept + void _nmod_poly_revert_series(mp_ptr Qinv, mp_srcptr Q, slong Qlen, slong n, nmod_t mod) noexcept + void nmod_poly_revert_series(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) noexcept + void _nmod_poly_invsqrt_series(mp_ptr g, mp_srcptr h, slong hlen, slong n, nmod_t mod) noexcept + void nmod_poly_invsqrt_series(nmod_poly_t g, const nmod_poly_t h, slong n) noexcept + void _nmod_poly_sqrt_series(mp_ptr g, mp_srcptr h, slong hlen, slong n, nmod_t mod) noexcept + void nmod_poly_sqrt_series(nmod_poly_t g, const nmod_poly_t h, slong n) noexcept + int _nmod_poly_sqrt(mp_ptr s, mp_srcptr p, slong n, nmod_t mod) noexcept + int nmod_poly_sqrt(nmod_poly_t s, const nmod_poly_t p) noexcept + void _nmod_poly_power_sums_naive(mp_ptr res, mp_srcptr poly, slong len, slong n, nmod_t mod) noexcept + void nmod_poly_power_sums_naive(nmod_poly_t res, const nmod_poly_t poly, slong n) noexcept + void _nmod_poly_power_sums_schoenhage(mp_ptr res, mp_srcptr poly, slong len, slong n, nmod_t mod) noexcept + void nmod_poly_power_sums_schoenhage(nmod_poly_t res, const nmod_poly_t poly, slong n) noexcept + void _nmod_poly_power_sums(mp_ptr res, mp_srcptr poly, slong len, slong n, nmod_t mod) noexcept + void nmod_poly_power_sums(nmod_poly_t res, const nmod_poly_t poly, slong n) noexcept + void _nmod_poly_power_sums_to_poly_naive(mp_ptr res, mp_srcptr poly, slong len, nmod_t mod) noexcept + void nmod_poly_power_sums_to_poly_naive(nmod_poly_t res, const nmod_poly_t Q) noexcept + void _nmod_poly_power_sums_to_poly_schoenhage(mp_ptr res, mp_srcptr poly, slong len, nmod_t mod) noexcept + void nmod_poly_power_sums_to_poly_schoenhage(nmod_poly_t res, const nmod_poly_t Q) noexcept + void _nmod_poly_power_sums_to_poly(mp_ptr res, mp_srcptr poly, slong len, nmod_t mod) noexcept + void nmod_poly_power_sums_to_poly(nmod_poly_t res, const nmod_poly_t Q) noexcept + void _nmod_poly_log_series(mp_ptr g, mp_srcptr h, slong hlen, slong n, nmod_t mod) noexcept + void nmod_poly_log_series(nmod_poly_t g, const nmod_poly_t h, slong n) noexcept + void _nmod_poly_exp_series(mp_ptr f, mp_srcptr h, slong hlen, slong n, nmod_t mod) noexcept + void _nmod_poly_exp_expinv_series(mp_ptr f, mp_ptr g, mp_srcptr h, slong hlen, slong n, nmod_t mod) noexcept + void nmod_poly_exp_series(nmod_poly_t g, const nmod_poly_t h, slong n) noexcept + void _nmod_poly_atan_series(mp_ptr g, mp_srcptr h, slong hlen, slong n, nmod_t mod) noexcept + void nmod_poly_atan_series(nmod_poly_t g, const nmod_poly_t h, slong n) noexcept + void _nmod_poly_atanh_series(mp_ptr g, mp_srcptr h, slong hlen, slong n, nmod_t mod) noexcept + void nmod_poly_atanh_series(nmod_poly_t g, const nmod_poly_t h, slong n) noexcept + void _nmod_poly_asin_series(mp_ptr g, mp_srcptr h, slong hlen, slong n, nmod_t mod) noexcept + void nmod_poly_asin_series(nmod_poly_t g, const nmod_poly_t h, slong n) noexcept + void _nmod_poly_asinh_series(mp_ptr g, mp_srcptr h, slong hlen, slong n, nmod_t mod) noexcept + void nmod_poly_asinh_series(nmod_poly_t g, const nmod_poly_t h, slong n) noexcept + void _nmod_poly_sin_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) noexcept + void nmod_poly_sin_series(nmod_poly_t g, const nmod_poly_t h, slong n) noexcept + void _nmod_poly_cos_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) noexcept + void nmod_poly_cos_series(nmod_poly_t g, const nmod_poly_t h, slong n) noexcept + void _nmod_poly_tan_series(mp_ptr g, mp_srcptr h, slong hlen, slong n, nmod_t mod) noexcept + void nmod_poly_tan_series(nmod_poly_t g, const nmod_poly_t h, slong n) noexcept + void _nmod_poly_sinh_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) noexcept + void nmod_poly_sinh_series(nmod_poly_t g, const nmod_poly_t h, slong n) noexcept + void _nmod_poly_cosh_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) noexcept + void nmod_poly_cosh_series(nmod_poly_t g, const nmod_poly_t h, slong n) noexcept + void _nmod_poly_tanh_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) noexcept + void nmod_poly_tanh_series(nmod_poly_t g, const nmod_poly_t h, slong n) noexcept + void _nmod_poly_product_roots_nmod_vec(mp_ptr poly, mp_srcptr xs, slong n, nmod_t mod) noexcept + void nmod_poly_product_roots_nmod_vec(nmod_poly_t poly, mp_srcptr xs, slong n) noexcept + int nmod_poly_find_distinct_nonzero_roots(mp_limb_t * roots, const nmod_poly_t A) noexcept + mp_ptr * _nmod_poly_tree_alloc(slong len) noexcept + void _nmod_poly_tree_free(mp_ptr * tree, slong len) noexcept + void _nmod_poly_tree_build(mp_ptr * tree, mp_srcptr roots, slong len, nmod_t mod) noexcept + void nmod_poly_inflate(nmod_poly_t result, const nmod_poly_t input, ulong inflation) noexcept + void nmod_poly_deflate(nmod_poly_t result, const nmod_poly_t input, ulong deflation) noexcept + ulong nmod_poly_deflation(const nmod_poly_t input) noexcept + void nmod_poly_multi_crt_init(nmod_poly_multi_crt_t CRT) noexcept + int nmod_poly_multi_crt_precompute(nmod_poly_multi_crt_t CRT, const nmod_poly_struct * moduli, slong len) noexcept + int nmod_poly_multi_crt_precompute_p(nmod_poly_multi_crt_t CRT, const nmod_poly_struct * const * moduli, slong len) noexcept + void nmod_poly_multi_crt_precomp(nmod_poly_t output, const nmod_poly_multi_crt_t CRT, const nmod_poly_struct * values) noexcept + void nmod_poly_multi_crt_precomp_p(nmod_poly_t output, const nmod_poly_multi_crt_t CRT, const nmod_poly_struct * const * values) noexcept + int nmod_poly_multi_crt(nmod_poly_t output, const nmod_poly_struct * moduli, const nmod_poly_struct * values, slong len) noexcept + void nmod_poly_multi_crt_clear(nmod_poly_multi_crt_t CRT) noexcept + slong _nmod_poly_multi_crt_local_size(const nmod_poly_multi_crt_t CRT) noexcept + void _nmod_poly_multi_crt_run(nmod_poly_struct * outputs, const nmod_poly_multi_crt_t CRT, const nmod_poly_struct * inputs) noexcept + void _nmod_poly_multi_crt_run_p(nmod_poly_struct * outputs, const nmod_poly_multi_crt_t CRT, const nmod_poly_struct * const * inputs) noexcept + void nmod_berlekamp_massey_init(nmod_berlekamp_massey_t B, mp_limb_t p) noexcept + void nmod_berlekamp_massey_clear(nmod_berlekamp_massey_t B) noexcept + void nmod_berlekamp_massey_start_over(nmod_berlekamp_massey_t B) noexcept + void nmod_berlekamp_massey_set_prime(nmod_berlekamp_massey_t B, mp_limb_t p) noexcept + void nmod_berlekamp_massey_add_points(nmod_berlekamp_massey_t B, const mp_limb_t * a, slong count) noexcept + void nmod_berlekamp_massey_add_zeros(nmod_berlekamp_massey_t B, slong count) noexcept + void nmod_berlekamp_massey_add_point(nmod_berlekamp_massey_t B, mp_limb_t a) noexcept + int nmod_berlekamp_massey_reduce(nmod_berlekamp_massey_t B) noexcept + slong nmod_berlekamp_massey_point_count(const nmod_berlekamp_massey_t B) noexcept + const mp_limb_t * nmod_berlekamp_massey_points(const nmod_berlekamp_massey_t B) noexcept + const nmod_poly_struct * nmod_berlekamp_massey_V_poly(const nmod_berlekamp_massey_t B) noexcept + const nmod_poly_struct * nmod_berlekamp_massey_R_poly(const nmod_berlekamp_massey_t B) noexcept diff --git a/src/sage/libs/flint/nmod_poly_factor.pxd b/src/sage/libs/flint/nmod_poly_factor.pxd new file mode 100644 index 00000000000..f885c202785 --- /dev/null +++ b/src/sage/libs/flint/nmod_poly_factor.pxd @@ -0,0 +1,42 @@ +# distutils: libraries = flint +# distutils: depends = flint/nmod_poly_factor.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void nmod_poly_factor_init(nmod_poly_factor_t fac) noexcept + void nmod_poly_factor_clear(nmod_poly_factor_t fac) noexcept + void nmod_poly_factor_realloc(nmod_poly_factor_t fac, slong alloc) noexcept + void nmod_poly_factor_fit_length(nmod_poly_factor_t fac, slong len) noexcept + void nmod_poly_factor_set(nmod_poly_factor_t res, const nmod_poly_factor_t fac) noexcept + void nmod_poly_factor_print(const nmod_poly_factor_t fac) noexcept + void nmod_poly_factor_insert(nmod_poly_factor_t fac, const nmod_poly_t poly, slong exp) noexcept + void nmod_poly_factor_concat(nmod_poly_factor_t res, const nmod_poly_factor_t fac) noexcept + void nmod_poly_factor_pow(nmod_poly_factor_t fac, slong exp) noexcept + bint nmod_poly_is_irreducible(const nmod_poly_t f) noexcept + bint nmod_poly_is_irreducible_ddf(const nmod_poly_t f) noexcept + bint nmod_poly_is_irreducible_rabin(const nmod_poly_t f) noexcept + bint _nmod_poly_is_squarefree(mp_srcptr f, slong len, nmod_t mod) noexcept + bint nmod_poly_is_squarefree(const nmod_poly_t f) noexcept + void nmod_poly_factor_squarefree(nmod_poly_factor_t res, const nmod_poly_t f) noexcept + bint nmod_poly_factor_equal_deg_prob(nmod_poly_t factor, flint_rand_t state, const nmod_poly_t pol, slong d) noexcept + void nmod_poly_factor_equal_deg(nmod_poly_factor_t factors, const nmod_poly_t pol, slong d) noexcept + void nmod_poly_factor_distinct_deg(nmod_poly_factor_t res, const nmod_poly_t poly, slong * const * degs) noexcept + void nmod_poly_factor_distinct_deg_threaded(nmod_poly_factor_t res, const nmod_poly_t poly, slong * const * degs) noexcept + void nmod_poly_factor_cantor_zassenhaus(nmod_poly_factor_t res, const nmod_poly_t f) noexcept + void nmod_poly_factor_berlekamp(nmod_poly_factor_t res, const nmod_poly_t f) noexcept + void nmod_poly_factor_kaltofen_shoup(nmod_poly_factor_t res, const nmod_poly_t poly) noexcept + mp_limb_t nmod_poly_factor_with_berlekamp(nmod_poly_factor_t res, const nmod_poly_t f) noexcept + mp_limb_t nmod_poly_factor_with_cantor_zassenhaus(nmod_poly_factor_t res, const nmod_poly_t f) noexcept + mp_limb_t nmod_poly_factor_with_kaltofen_shoup(nmod_poly_factor_t res, const nmod_poly_t f) noexcept + mp_limb_t nmod_poly_factor(nmod_poly_factor_t res, const nmod_poly_t f) noexcept + void _nmod_poly_interval_poly_worker(void * arg_ptr) noexcept diff --git a/src/sage/libs/flint/nmod_poly_linkage.pxi b/src/sage/libs/flint/nmod_poly_linkage.pxi index 32087acf9dc..303cb6472fe 100644 --- a/src/sage/libs/flint/nmod_poly_linkage.pxi +++ b/src/sage/libs/flint/nmod_poly_linkage.pxi @@ -20,7 +20,9 @@ AUTHOR: from cysignals.signals cimport sig_on, sig_off from cysignals.memory cimport sig_malloc, sig_free +from sage.libs.flint.types cimport * from sage.libs.flint.nmod_poly cimport * +from sage.libs.flint.nmod_poly_factor cimport * from sage.libs.flint.ulong_extras cimport * from sage.structure.factorization import Factorization diff --git a/src/sage/libs/flint/nmod_poly_mat.pxd b/src/sage/libs/flint/nmod_poly_mat.pxd new file mode 100644 index 00000000000..7156ddd97ea --- /dev/null +++ b/src/sage/libs/flint/nmod_poly_mat.pxd @@ -0,0 +1,74 @@ +# distutils: libraries = flint +# distutils: depends = flint/nmod_poly_mat.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void nmod_poly_mat_init(nmod_poly_mat_t mat, slong rows, slong cols, mp_limb_t n) noexcept + void nmod_poly_mat_init_set(nmod_poly_mat_t mat, const nmod_poly_mat_t src) noexcept + void nmod_poly_mat_clear(nmod_poly_mat_t mat) noexcept + void nmod_poly_mat_set_trunc(nmod_poly_mat_t res, const nmod_poly_mat_t pmat, long len) noexcept + void nmod_poly_mat_truncate(nmod_poly_mat_t pmat, long len) noexcept + void nmod_poly_mat_shift_left(nmod_poly_mat_t res, const nmod_poly_mat_t pmat, slong k) noexcept + void nmod_poly_mat_shift_right(nmod_poly_mat_t res, const nmod_poly_mat_t pmat, slong k) noexcept + slong nmod_poly_mat_nrows(const nmod_poly_mat_t mat) noexcept + slong nmod_poly_mat_ncols(const nmod_poly_mat_t mat) noexcept + mp_limb_t nmod_poly_mat_modulus(const nmod_poly_mat_t mat) noexcept + nmod_poly_struct * nmod_poly_mat_entry(const nmod_poly_mat_t mat, slong i, slong j) noexcept + void nmod_poly_mat_set(nmod_poly_mat_t mat1, const nmod_poly_mat_t mat2) noexcept + void nmod_poly_mat_set_nmod_mat(nmod_poly_mat_t pmat, const nmod_mat_t cmat) noexcept + void nmod_poly_mat_swap(nmod_poly_mat_t mat1, nmod_poly_mat_t mat2) noexcept + void nmod_poly_mat_swap_entrywise(nmod_poly_mat_t mat1, nmod_poly_mat_t mat2) noexcept + void nmod_poly_mat_print(const nmod_poly_mat_t mat, const char * x) noexcept + void nmod_poly_mat_randtest(nmod_poly_mat_t mat, flint_rand_t state, slong len) noexcept + void nmod_poly_mat_randtest_sparse(nmod_poly_mat_t A, flint_rand_t state, slong len, float density) noexcept + void nmod_poly_mat_zero(nmod_poly_mat_t mat) noexcept + void nmod_poly_mat_one(nmod_poly_mat_t mat) noexcept + bint nmod_poly_mat_equal(const nmod_poly_mat_t mat1, const nmod_poly_mat_t mat2) noexcept + bint nmod_poly_mat_equal_nmod_mat(const nmod_poly_mat_t pmat, const nmod_mat_t cmat) noexcept + bint nmod_poly_mat_is_zero(const nmod_poly_mat_t mat) noexcept + bint nmod_poly_mat_is_one(const nmod_poly_mat_t mat) noexcept + bint nmod_poly_mat_is_empty(const nmod_poly_mat_t mat) noexcept + bint nmod_poly_mat_is_square(const nmod_poly_mat_t mat) noexcept + void nmod_poly_mat_get_coeff_mat(nmod_mat_t coeff, const nmod_poly_mat_t pmat, slong deg) noexcept + void nmod_poly_mat_set_coeff_mat(nmod_poly_mat_t pmat, const nmod_mat_t coeff, slong deg) noexcept + slong nmod_poly_mat_max_length(const nmod_poly_mat_t A) noexcept + slong nmod_poly_mat_degree(const nmod_poly_mat_t pmat) noexcept + void nmod_poly_mat_evaluate_nmod(nmod_mat_t B, const nmod_poly_mat_t A, mp_limb_t x) noexcept + void nmod_poly_mat_scalar_mul_nmod_poly(nmod_poly_mat_t B, const nmod_poly_mat_t A, const nmod_poly_t c) noexcept + void nmod_poly_mat_scalar_mul_nmod(nmod_poly_mat_t B, const nmod_poly_mat_t A, mp_limb_t c) noexcept + void nmod_poly_mat_add(nmod_poly_mat_t C, const nmod_poly_mat_t A, const nmod_poly_mat_t B) noexcept + void nmod_poly_mat_sub(nmod_poly_mat_t C, const nmod_poly_mat_t A, const nmod_poly_mat_t B) noexcept + void nmod_poly_mat_neg(nmod_poly_mat_t B, const nmod_poly_mat_t A) noexcept + void nmod_poly_mat_mul(nmod_poly_mat_t C, const nmod_poly_mat_t A, const nmod_poly_mat_t B) noexcept + void nmod_poly_mat_mul_classical(nmod_poly_mat_t C, const nmod_poly_mat_t A, const nmod_poly_mat_t B) noexcept + void nmod_poly_mat_mul_KS(nmod_poly_mat_t C, const nmod_poly_mat_t A, const nmod_poly_mat_t B) noexcept + void nmod_poly_mat_mul_interpolate(nmod_poly_mat_t C, const nmod_poly_mat_t A, const nmod_poly_mat_t B) noexcept + void nmod_poly_mat_sqr(nmod_poly_mat_t B, const nmod_poly_mat_t A) noexcept + void nmod_poly_mat_sqr_classical(nmod_poly_mat_t B, const nmod_poly_mat_t A) noexcept + void nmod_poly_mat_sqr_KS(nmod_poly_mat_t B, const nmod_poly_mat_t A) noexcept + void nmod_poly_mat_sqr_interpolate(nmod_poly_mat_t B, const nmod_poly_mat_t A) noexcept + void nmod_poly_mat_pow(nmod_poly_mat_t B, const nmod_poly_mat_t A, ulong exp) noexcept + slong nmod_poly_mat_find_pivot_any(const nmod_poly_mat_t mat, slong start_row, slong end_row, slong c) noexcept + slong nmod_poly_mat_find_pivot_partial(const nmod_poly_mat_t mat, slong start_row, slong end_row, slong c) noexcept + slong nmod_poly_mat_fflu(nmod_poly_mat_t B, nmod_poly_t den, slong * perm, const nmod_poly_mat_t A, int rank_check) noexcept + slong nmod_poly_mat_rref(nmod_poly_mat_t B, nmod_poly_t den, const nmod_poly_mat_t A) noexcept + void nmod_poly_mat_trace(nmod_poly_t trace, const nmod_poly_mat_t mat) noexcept + void nmod_poly_mat_det(nmod_poly_t det, const nmod_poly_mat_t A) noexcept + void nmod_poly_mat_det_fflu(nmod_poly_t det, const nmod_poly_mat_t A) noexcept + void nmod_poly_mat_det_interpolate(nmod_poly_t det, const nmod_poly_mat_t A) noexcept + slong nmod_poly_mat_rank(const nmod_poly_mat_t A) noexcept + int nmod_poly_mat_inv(nmod_poly_mat_t Ainv, nmod_poly_t den, const nmod_poly_mat_t A) noexcept + slong nmod_poly_mat_nullspace(nmod_poly_mat_t res, const nmod_poly_mat_t mat) noexcept + int nmod_poly_mat_solve(nmod_poly_mat_t X, nmod_poly_t den, const nmod_poly_mat_t A, const nmod_poly_mat_t B) noexcept + int nmod_poly_mat_solve_fflu(nmod_poly_mat_t X, nmod_poly_t den, const nmod_poly_mat_t A, const nmod_poly_mat_t B) noexcept + void nmod_poly_mat_solve_fflu_precomp(nmod_poly_mat_t X, const slong * perm, const nmod_poly_mat_t FFLU, const nmod_poly_mat_t B) noexcept diff --git a/src/sage/libs/flint/nmod_vec.pxd b/src/sage/libs/flint/nmod_vec.pxd index b839447bb56..326ea21b98a 100644 --- a/src/sage/libs/flint/nmod_vec.pxd +++ b/src/sage/libs/flint/nmod_vec.pxd @@ -1,44 +1,38 @@ # distutils: libraries = flint # distutils: depends = flint/nmod_vec.h -# This file was (manually) generated from FLINT's nmod_vec.h. -#***************************************************************************** -# Copyright (C) 2010 William Hart -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 2 of the License, or -# (at your option) any later version. -# http://www.gnu.org/licenses/ -#***************************************************************************** +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * from sage.libs.flint.types cimport * -# flint/nmod_vec.h cdef extern from "flint_wrap.h": - mp_limb_t _nmod_add(mp_limb_t a, mp_limb_t b, nmod_t mod) - mp_limb_t _nmod_sub(mp_limb_t a, mp_limb_t b, nmod_t mod) - mp_limb_t nmod_add(mp_limb_t a, mp_limb_t b, nmod_t mod) - mp_limb_t nmod_sub(mp_limb_t a, mp_limb_t b, nmod_t mod) - mp_limb_t nmod_neg(mp_limb_t a, nmod_t mod) - mp_limb_t nmod_mul(mp_limb_t a, mp_limb_t b, nmod_t mod) - mp_limb_t nmod_div(mp_limb_t a, mp_limb_t b, nmod_t mod) - void nmod_init(nmod_t * mod, mp_limb_t n) - mp_ptr _nmod_vec_init(long len) - void _nmod_vec_clear(mp_ptr vec) - void _nmod_vec_randtest(mp_ptr vec, flint_rand_t state, long len, nmod_t mod) - void _nmod_vec_zero(mp_ptr vec, long len) - mp_bitcnt_t _nmod_vec_max_bits(mp_srcptr vec, long len) - void _nmod_vec_set(mp_ptr res, mp_srcptr vec, long len) - void _nmod_vec_swap(mp_ptr a, mp_ptr b, long length) - int _nmod_vec_equal(mp_ptr vec, mp_srcptr vec2, long len) - int _nmod_vec_is_zero(mp_srcptr vec, long len) - void _nmod_vec_reduce(mp_ptr res, mp_srcptr vec, long len, nmod_t mod) - void _nmod_vec_add(mp_ptr res, mp_srcptr vec1, mp_srcptr vec2, long len, nmod_t mod) - void _nmod_vec_sub(mp_ptr res, mp_srcptr vec1, mp_srcptr vec2, long len, nmod_t mod) - void _nmod_vec_neg(mp_ptr res, mp_srcptr vec, long len, nmod_t mod) - void _nmod_vec_scalar_mul_nmod(mp_ptr res, mp_srcptr vec, long len, mp_limb_t c, nmod_t mod) - void _nmod_vec_scalar_addmul_nmod(mp_ptr res, mp_srcptr vec, long len, mp_limb_t c, nmod_t mod) - int _nmod_vec_dot_bound_limbs(long len, nmod_t mod) - mp_limb_t _nmod_vec_dot(mp_srcptr vec1, mp_srcptr vec2, long len, nmod_t mod, int nlimbs) - mp_limb_t _nmod_vec_dot_ptr(mp_srcptr vec1, mp_ptr * vec2, long offset, long len, nmod_t mod, int nlimbs) + mp_ptr _nmod_vec_init(slong len) noexcept + void _nmod_vec_clear(mp_ptr vec) noexcept + void _nmod_vec_randtest(mp_ptr vec, flint_rand_t state, slong len, nmod_t mod) noexcept + void _nmod_vec_set(mp_ptr res, mp_srcptr vec, slong len) noexcept + void _nmod_vec_zero(mp_ptr vec, slong len) noexcept + void _nmod_vec_swap(mp_ptr a, mp_ptr b, slong length) noexcept + void _nmod_vec_reduce(mp_ptr res, mp_srcptr vec, slong len, nmod_t mod) noexcept + flint_bitcnt_t _nmod_vec_max_bits(mp_srcptr vec, slong len) noexcept + bint _nmod_vec_equal(mp_srcptr vec, mp_srcptr vec2, slong len) noexcept + void _nmod_vec_print_pretty(mp_srcptr vec, slong len, nmod_t mod) noexcept + int _nmod_vec_fprint_pretty(FILE * file, mp_srcptr vec, slong len, nmod_t mod) noexcept + int _nmod_vec_print(mp_srcptr vec, slong len, nmod_t mod) noexcept + int _nmod_vec_fprint(FILE * f, mp_srcptr vec, slong len, nmod_t mod) noexcept + void _nmod_vec_add(mp_ptr res, mp_srcptr vec1, mp_srcptr vec2, slong len, nmod_t mod) noexcept + void _nmod_vec_sub(mp_ptr res, mp_srcptr vec1, mp_srcptr vec2, slong len, nmod_t mod) noexcept + void _nmod_vec_neg(mp_ptr res, mp_srcptr vec, slong len, nmod_t mod) noexcept + void _nmod_vec_scalar_mul_nmod(mp_ptr res, mp_srcptr vec, slong len, mp_limb_t c, nmod_t mod) noexcept + void _nmod_vec_scalar_mul_nmod_shoup(mp_ptr res, mp_srcptr vec, slong len, mp_limb_t c, nmod_t mod) noexcept + void _nmod_vec_scalar_addmul_nmod(mp_ptr res, mp_srcptr vec, slong len, mp_limb_t c, nmod_t mod) noexcept + int _nmod_vec_dot_bound_limbs(slong len, nmod_t mod) noexcept + mp_limb_t _nmod_vec_dot(mp_srcptr vec1, mp_srcptr vec2, slong len, nmod_t mod, int nlimbs) noexcept + mp_limb_t _nmod_vec_dot_rev(mp_srcptr vec1, mp_srcptr vec2, slong len, nmod_t mod, int nlimbs) noexcept + mp_limb_t _nmod_vec_dot_ptr(mp_srcptr vec1, const mp_ptr * vec2, slong offset, slong len, nmod_t mod, int nlimbs) noexcept diff --git a/src/sage/libs/flint/padic.pxd b/src/sage/libs/flint/padic.pxd index e155ddabfd8..ef190a51a9e 100644 --- a/src/sage/libs/flint/padic.pxd +++ b/src/sage/libs/flint/padic.pxd @@ -1,117 +1,91 @@ # distutils: libraries = flint -# distutils: depends = flint/qadic.h +# distutils: depends = flint/padic.h +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * from sage.libs.flint.types cimport * -# flint/qadic.h cdef extern from "flint_wrap.h": - # macros - long padic_val(padic_t x) - long padic_prec(padic_t x) - - fmpz * padic_unit(const padic_t x) - slong padic_get_val(const padic_t x) - slong padic_get_prec(const padic_t x) - - #* Context *******************************************************************/ - void padic_ctx_init(padic_ctx_t ctx, const fmpz_t p, slong min, slong max, - padic_print_mode mode) - void padic_ctx_clear(padic_ctx_t ctx) - - int _padic_ctx_pow_ui(fmpz_t rop, ulong e, const padic_ctx_t ctx) - - void padic_ctx_pow_ui(fmpz_t rop, ulong e, const padic_ctx_t ctx) - - #* Memory management *********************************************************/ - void padic_init(padic_t rop) - void padic_init2(padic_t rop, slong N) - void padic_clear(padic_t rop) - void _padic_canonicalise(padic_t rop, const padic_ctx_t ctx) - void _padic_reduce(padic_t rop, const padic_ctx_t ctx) - void padic_reduce(padic_t rop, const padic_ctx_t ctx) - - #* Randomisation *************************************************************/ - void padic_randtest(padic_t rop, flint_rand_t state, const padic_ctx_t ctx) - void padic_randtest_not_zero(padic_t rop, flint_rand_t state, - const padic_ctx_t ctx) - void padic_randtest_int(padic_t rop, flint_rand_t state, - const padic_ctx_t ctx) - - #* Assignments and conversions ***********************************************/ - void padic_set(padic_t rop, const padic_t op, const padic_ctx_t ctx) - void padic_set_si(padic_t rop, slong op, const padic_ctx_t ctx) - void padic_set_ui(padic_t rop, ulong op, const padic_ctx_t ctx) - void padic_set_fmpz(padic_t rop, const fmpz_t op, const padic_ctx_t ctx) - void padic_set_fmpq(padic_t rop, const fmpq_t op, const padic_ctx_t ctx) - void padic_set_mpz(padic_t rop, const mpz_t op, const padic_ctx_t ctx) - void padic_set_mpq(padic_t rop, const mpq_t op, const padic_ctx_t ctx) - void padic_get_fmpz(fmpz_t rop, const padic_t op, const padic_ctx_t ctx) - void padic_get_fmpq(fmpq_t rop, const padic_t op, const padic_ctx_t ctx) - void padic_get_mpz(mpz_t rop, const padic_t op, const padic_ctx_t ctx) - void padic_get_mpq(mpq_t rop, const padic_t op, const padic_ctx_t ctx) - void padic_swap(padic_t op1, padic_t op2) - void padic_zero(padic_t rop) - void padic_one(padic_t rop) - - #* Comparison ****************************************************************/ - int padic_is_zero(const padic_t op) - int padic_is_one(const padic_t op) - int padic_equal(const padic_t op1, const padic_t op2) - - #* Arithmetic operations *****************************************************/ - slong * _padic_lifts_exps(slong *n, slong N) - void _padic_lifts_pows(fmpz *pow, const slong *a, slong n, const fmpz_t p) - void padic_add(padic_t rop, const padic_t op1, const padic_t op2, - const padic_ctx_t ctx) - void padic_sub(padic_t rop, const padic_t op1, const padic_t op2, - const padic_ctx_t ctx) - void padic_neg(padic_t rop, const padic_t op, const padic_ctx_t ctx) - void padic_mul(padic_t rop, const padic_t op1, const padic_t op2, - const padic_ctx_t ctx) - void padic_shift(padic_t rop, const padic_t op, slong v, const padic_ctx_t ctx) - void padic_div(padic_t rop, const padic_t op1, const padic_t op2, - const padic_ctx_t ctx) - void _padic_inv_precompute(padic_inv_t S, const fmpz_t p, slong N) - void _padic_inv_clear(padic_inv_t S) - void _padic_inv_precomp(fmpz_t rop, const fmpz_t op, const padic_inv_t S) - void _padic_inv(fmpz_t rop, const fmpz_t op, const fmpz_t p, slong N) - void padic_inv(padic_t rop, const padic_t op, const padic_ctx_t ctx) - int padic_sqrt(padic_t rop, const padic_t op, const padic_ctx_t ctx) - void padic_pow_si(padic_t rop, const padic_t op, slong e, - const padic_ctx_t ctx) - - #* Exponential ***************************************************************/ - slong _padic_exp_bound(slong v, slong N, const fmpz_t p) - void _padic_exp(fmpz_t rop, const fmpz_t u, slong v, const fmpz_t p, slong N) - void _padic_exp_rectangular(fmpz_t rop, const fmpz_t u, slong v, const fmpz_t p, slong N) - void _padic_exp_balanced(fmpz_t rop, const fmpz_t u, slong v, const fmpz_t p, slong N) - int padic_exp(padic_t rop, const padic_t op, const padic_ctx_t ctx) - int padic_exp_rectangular(padic_t rop, const padic_t op, const padic_ctx_t ctx) - int padic_exp_balanced(padic_t rop, const padic_t op, const padic_ctx_t ctx) - - #* Logarithm *****************************************************************/ - slong _padic_log_bound(slong v, slong N, const fmpz_t p) - void _padic_log(fmpz_t z, const fmpz_t y, slong v, const fmpz_t p, slong N) - void _padic_log_rectangular(fmpz_t z, const fmpz_t y, slong v, const fmpz_t p, slong N) - void _padic_log_satoh(fmpz_t z, const fmpz_t y, slong v, const fmpz_t p, slong N) - void _padic_log_balanced(fmpz_t z, const fmpz_t y, slong v, const fmpz_t p, slong N) - int padic_log(padic_t rop, const padic_t op, const padic_ctx_t ctx) - int padic_log_rectangular(padic_t rop, const padic_t op, const padic_ctx_t ctx) - int padic_log_satoh(padic_t rop, const padic_t op, const padic_ctx_t ctx) - int padic_log_balanced(padic_t rop, const padic_t op, const padic_ctx_t ctx) - - #* Special functions *********************************************************/ - void _padic_teichmuller(fmpz_t rop, const fmpz_t op, const fmpz_t p, slong N) - void padic_teichmuller(padic_t rop, const padic_t op, const padic_ctx_t ctx) - ulong padic_val_fac_ui_2(ulong N) - ulong padic_val_fac_ui(ulong N, const fmpz_t p) - void padic_val_fac(fmpz_t rop, const fmpz_t op, const fmpz_t p) - - #* Input and output **********************************************************/ - char * padic_get_str(char * str, const padic_t op, const padic_ctx_t ctx) - int _padic_fprint(FILE * file, const fmpz_t u, slong v, const padic_ctx_t ctx) - int padic_fprint(FILE * file, const padic_t op, const padic_ctx_t ctx) - - int _padic_print(const fmpz_t u, slong v, const padic_ctx_t ctx) - int padic_print(const padic_t op, const padic_ctx_t ctx) - void padic_debug(const padic_t op) + fmpz * padic_unit(const padic_t op) noexcept + slong padic_val(const padic_t op) noexcept + slong padic_get_val(const padic_t op) noexcept + slong padic_prec(const padic_t op) noexcept + slong padic_get_prec(const padic_t op) noexcept + void padic_ctx_init(padic_ctx_t ctx, const fmpz_t p, slong min, slong max, padic_print_mode mode) noexcept + void padic_ctx_clear(padic_ctx_t ctx) noexcept + int _padic_ctx_pow_ui(fmpz_t rop, ulong e, const padic_ctx_t ctx) noexcept + void padic_init(padic_t rop) noexcept + void padic_init2(padic_t rop, slong N) noexcept + void padic_clear(padic_t rop) noexcept + void _padic_canonicalise(padic_t rop, const padic_ctx_t ctx) noexcept + void _padic_reduce(padic_t rop, const padic_ctx_t ctx) noexcept + void padic_reduce(padic_t rop, const padic_ctx_t ctx) noexcept + void padic_randtest(padic_t rop, flint_rand_t state, const padic_ctx_t ctx) noexcept + void padic_randtest_not_zero(padic_t rop, flint_rand_t state, const padic_ctx_t ctx) noexcept + void padic_randtest_int(padic_t rop, flint_rand_t state, const padic_ctx_t ctx) noexcept + void padic_set(padic_t rop, const padic_t op, const padic_ctx_t ctx) noexcept + void padic_set_si(padic_t rop, slong op, const padic_ctx_t ctx) noexcept + void padic_set_ui(padic_t rop, ulong op, const padic_ctx_t ctx) noexcept + void padic_set_fmpz(padic_t rop, const fmpz_t op, const padic_ctx_t ctx) noexcept + void padic_set_fmpq(padic_t rop, const fmpq_t op, const padic_ctx_t ctx) noexcept + void padic_set_mpz(padic_t rop, const mpz_t op, const padic_ctx_t ctx) noexcept + void padic_set_mpq(padic_t rop, const mpq_t op, const padic_ctx_t ctx) noexcept + void padic_get_fmpz(fmpz_t rop, const padic_t op, const padic_ctx_t ctx) noexcept + void padic_get_fmpq(fmpq_t rop, const padic_t op, const padic_ctx_t ctx) noexcept + void padic_get_mpz(mpz_t rop, const padic_t op, const padic_ctx_t ctx) noexcept + void padic_get_mpq(mpq_t rop, const padic_t op, const padic_ctx_t ctx) noexcept + void padic_swap(padic_t op1, padic_t op2) noexcept + void padic_zero(padic_t rop) noexcept + void padic_one(padic_t rop) noexcept + bint padic_is_zero(const padic_t op) noexcept + bint padic_is_one(const padic_t op) noexcept + bint padic_equal(const padic_t op1, const padic_t op2) noexcept + slong * _padic_lifts_exps(slong * n, slong N) noexcept + void _padic_lifts_pows(fmpz * pow, const slong * a, slong n, const fmpz_t p) noexcept + void padic_add(padic_t rop, const padic_t op1, const padic_t op2, const padic_ctx_t ctx) noexcept + void padic_sub(padic_t rop, const padic_t op1, const padic_t op2, const padic_ctx_t ctx) noexcept + void padic_neg(padic_t rop, const padic_t op, const padic_ctx_t ctx) noexcept + void padic_mul(padic_t rop, const padic_t op1, const padic_t op2, const padic_ctx_t ctx) noexcept + void padic_shift(padic_t rop, const padic_t op, slong v, const padic_ctx_t ctx) noexcept + void padic_div(padic_t rop, const padic_t op1, const padic_t op2, const padic_ctx_t ctx) noexcept + void _padic_inv_precompute(padic_inv_t S, const fmpz_t p, slong N) noexcept + void _padic_inv_clear(padic_inv_t S) noexcept + void _padic_inv_precomp(fmpz_t rop, const fmpz_t op, const padic_inv_t S) noexcept + void _padic_inv(fmpz_t rop, const fmpz_t op, const fmpz_t p, slong N) noexcept + void padic_inv(padic_t rop, const padic_t op, const padic_ctx_t ctx) noexcept + int padic_sqrt(padic_t rop, const padic_t op, const padic_ctx_t ctx) noexcept + void padic_pow_si(padic_t rop, const padic_t op, slong e, const padic_ctx_t ctx) noexcept + slong _padic_exp_bound(slong v, slong N, const fmpz_t p) noexcept + void _padic_exp_rectangular(fmpz_t rop, const fmpz_t u, slong v, const fmpz_t p, slong N) noexcept + void _padic_exp_balanced(fmpz_t rop, const fmpz_t u, slong v, const fmpz_t p, slong N) noexcept + void _padic_exp(fmpz_t rop, const fmpz_t u, slong v, const fmpz_t p, slong N) noexcept + int padic_exp(padic_t y, const padic_t x, const padic_ctx_t ctx) noexcept + int padic_exp_rectangular(padic_t y, const padic_t x, const padic_ctx_t ctx) noexcept + int padic_exp_balanced(padic_t y, const padic_t x, const padic_ctx_t ctx) noexcept + slong _padic_log_bound(slong v, slong N, const fmpz_t p) noexcept + void _padic_log(fmpz_t z, const fmpz_t y, slong v, const fmpz_t p, slong N) noexcept + void _padic_log_rectangular(fmpz_t z, const fmpz_t y, slong v, const fmpz_t p, slong N) noexcept + void _padic_log_satoh(fmpz_t z, const fmpz_t y, slong v, const fmpz_t p, slong N) noexcept + void _padic_log_balanced(fmpz_t z, const fmpz_t y, slong v, const fmpz_t p, slong N) noexcept + int padic_log(padic_t rop, const padic_t op, const padic_ctx_t ctx) noexcept + int padic_log_rectangular(padic_t rop, const padic_t op, const padic_ctx_t ctx) noexcept + int padic_log_satoh(padic_t rop, const padic_t op, const padic_ctx_t ctx) noexcept + int padic_log_balanced(padic_t rop, const padic_t op, const padic_ctx_t ctx) noexcept + void _padic_teichmuller(fmpz_t rop, const fmpz_t op, const fmpz_t p, slong N) noexcept + void padic_teichmuller(padic_t rop, const padic_t op, const padic_ctx_t ctx) noexcept + ulong padic_val_fac_ui_2(ulong n) noexcept + ulong padic_val_fac_ui(ulong n, const fmpz_t p) noexcept + void padic_val_fac(fmpz_t rop, const fmpz_t op, const fmpz_t p) noexcept + char * padic_get_str(char * str, const padic_t op, const padic_ctx_t ctx) noexcept + int _padic_fprint(FILE * file, const fmpz_t u, slong v, const padic_ctx_t ctx) noexcept + int padic_fprint(FILE * file, const padic_t op, const padic_ctx_t ctx) noexcept + int _padic_print(const fmpz_t u, slong v, const padic_ctx_t ctx) noexcept + int padic_print(const padic_t op, const padic_ctx_t ctx) noexcept + void padic_debug(const padic_t op) noexcept diff --git a/src/sage/libs/flint/padic_mat.pxd b/src/sage/libs/flint/padic_mat.pxd new file mode 100644 index 00000000000..4a64baa9b1f --- /dev/null +++ b/src/sage/libs/flint/padic_mat.pxd @@ -0,0 +1,62 @@ +# distutils: libraries = flint +# distutils: depends = flint/padic_mat.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + fmpz_mat_struct * padic_mat(const padic_mat_t A) noexcept + fmpz * padic_mat_entry(const padic_mat_t A, slong i, slong j) noexcept + slong padic_mat_val(const padic_mat_t A) noexcept + slong padic_mat_prec(const padic_mat_t A) noexcept + slong padic_mat_get_val(const padic_mat_t A) noexcept + slong padic_mat_get_prec(const padic_mat_t A) noexcept + slong padic_mat_nrows(const padic_mat_t A) noexcept + slong padic_mat_ncols(const padic_mat_t A) noexcept + void padic_mat_init(padic_mat_t A, slong r, slong c) noexcept + void padic_mat_init2(padic_mat_t A, slong r, slong c, slong prec) noexcept + void padic_mat_clear(padic_mat_t A) noexcept + void _padic_mat_canonicalise(padic_mat_t A, const padic_ctx_t ctx) noexcept + void _padic_mat_reduce(padic_mat_t A, const padic_ctx_t ctx) noexcept + void padic_mat_reduce(padic_mat_t A, const padic_ctx_t ctx) noexcept + bint padic_mat_is_empty(const padic_mat_t A) noexcept + bint padic_mat_is_square(const padic_mat_t A) noexcept + bint padic_mat_is_canonical(const padic_mat_t A, const padic_ctx_t p) noexcept + void padic_mat_set(padic_mat_t B, const padic_mat_t A, const padic_ctx_t p) noexcept + void padic_mat_swap(padic_mat_t A, padic_mat_t B) noexcept + void padic_mat_swap_entrywise(padic_mat_t mat1, padic_mat_t mat2) noexcept + void padic_mat_zero(padic_mat_t A) noexcept + void padic_mat_one(padic_mat_t A) noexcept + void padic_mat_set_fmpq_mat(padic_mat_t B, const fmpq_mat_t A, const padic_ctx_t ctx) noexcept + void padic_mat_get_fmpq_mat(fmpq_mat_t B, const padic_mat_t A, const padic_ctx_t ctx) noexcept + void padic_mat_get_entry_padic(padic_t rop, const padic_mat_t op, slong i, slong j, const padic_ctx_t ctx) noexcept + void padic_mat_set_entry_padic(padic_mat_t rop, slong i, slong j, const padic_t op, const padic_ctx_t ctx) noexcept + bint padic_mat_equal(const padic_mat_t A, const padic_mat_t B) noexcept + bint padic_mat_is_zero(const padic_mat_t A) noexcept + int padic_mat_fprint(FILE * file, const padic_mat_t A, const padic_ctx_t ctx) noexcept + int padic_mat_fprint_pretty(FILE * file, const padic_mat_t A, const padic_ctx_t ctx) noexcept + int padic_mat_print(const padic_mat_t A, const padic_ctx_t ctx) noexcept + int padic_mat_print_pretty(const padic_mat_t A, const padic_ctx_t ctx) noexcept + void padic_mat_randtest(padic_mat_t A, flint_rand_t state, const padic_ctx_t ctx) noexcept + void padic_mat_transpose(padic_mat_t B, const padic_mat_t A) noexcept + void _padic_mat_add(padic_mat_t C, const padic_mat_t A, const padic_mat_t B, const padic_ctx_t ctx) noexcept + void padic_mat_add(padic_mat_t C, const padic_mat_t A, const padic_mat_t B, const padic_ctx_t ctx) noexcept + void _padic_mat_sub(padic_mat_t C, const padic_mat_t A, const padic_mat_t B, const padic_ctx_t ctx) noexcept + void padic_mat_sub(padic_mat_t C, const padic_mat_t A, const padic_mat_t B, const padic_ctx_t ctx) noexcept + void _padic_mat_neg(padic_mat_t B, const padic_mat_t A) noexcept + void padic_mat_neg(padic_mat_t B, const padic_mat_t A, const padic_ctx_t ctx) noexcept + void _padic_mat_scalar_mul_padic(padic_mat_t B, const padic_mat_t A, const padic_t c, const padic_ctx_t ctx) noexcept + void padic_mat_scalar_mul_padic(padic_mat_t B, const padic_mat_t A, const padic_t c, const padic_ctx_t ctx) noexcept + void _padic_mat_scalar_mul_fmpz(padic_mat_t B, const padic_mat_t A, const fmpz_t c, const padic_ctx_t ctx) noexcept + void padic_mat_scalar_mul_fmpz(padic_mat_t B, const padic_mat_t A, const fmpz_t c, const padic_ctx_t ctx) noexcept + void padic_mat_scalar_div_fmpz(padic_mat_t B, const padic_mat_t A, const fmpz_t c, const padic_ctx_t ctx) noexcept + void _padic_mat_mul(padic_mat_t C, const padic_mat_t A, const padic_mat_t B, const padic_ctx_t ctx) noexcept + void padic_mat_mul(padic_mat_t C, const padic_mat_t A, const padic_mat_t B, const padic_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/padic_poly.pxd b/src/sage/libs/flint/padic_poly.pxd index 6cd172fd14f..caca76b79db 100644 --- a/src/sage/libs/flint/padic_poly.pxd +++ b/src/sage/libs/flint/padic_poly.pxd @@ -1,182 +1,86 @@ # distutils: libraries = flint # distutils: depends = flint/padic_poly.h +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * from sage.libs.flint.types cimport * -# flint/padic_poly.h cdef extern from "flint_wrap.h": - #* Helper functions ********************************************************/ - long _fmpz_vec_ord_p(const fmpz *vec, long len, const fmpz_t p) - - #* Memory management *******************************************************/ - void padic_poly_init(padic_poly_t poly) - void padic_poly_init2(padic_poly_t poly, long alloc, long prec) - void padic_poly_clear(padic_poly_t poly) - void padic_poly_realloc(padic_poly_t f, long alloc, const fmpz_t p) - void padic_poly_fit_length(padic_poly_t f, long len) - void _padic_poly_set_length(padic_poly_t poly, long len) - void _padic_poly_normalise(padic_poly_t f) - void _padic_poly_canonicalise(fmpz *poly, long *v, long len, const fmpz_t p) - void padic_poly_canonicalise(padic_poly_t poly, const fmpz_t p) - void padic_poly_reduce(padic_poly_t f, const padic_ctx_t ctx) - void padic_poly_truncate(padic_poly_t poly, long n, const fmpz_t p) - - #* Polynomial parameters ***************************************************/ - long padic_poly_degree(const padic_poly_t poly) - long padic_poly_length(const padic_poly_t poly) - long padic_poly_val(const padic_poly_t poly) - # macros - long padic_poly_val(padic_poly_t poly) - long padic_poly_prec(padic_poly_t poly) - - #* Randomisation ***********************************************************/ - void padic_poly_randtest(padic_poly_t f, flint_rand_t state, - long len, const padic_ctx_t ctx) - void padic_poly_randtest_not_zero(padic_poly_t f, flint_rand_t state, - long len, const padic_ctx_t ctx) - void padic_poly_randtest_val(padic_poly_t f, flint_rand_t state, - long val, long len, const padic_ctx_t ctx) - - #* Assignment and basic manipulation ***************************************/ - void padic_poly_set(padic_poly_t f, const padic_poly_t g, - const padic_ctx_t ctx) - void padic_poly_set_padic(padic_poly_t poly, const padic_t x, - const padic_ctx_t ctx) - void padic_poly_set_si(padic_poly_t poly, long x, const padic_ctx_t ctx) - void padic_poly_set_ui(padic_poly_t poly, unsigned long x, const padic_ctx_t ctx) - void padic_poly_set_fmpz(padic_poly_t poly, const fmpz_t x, - const padic_ctx_t ctx) - void padic_poly_set_fmpq(padic_poly_t poly, const fmpq_t x, - const padic_ctx_t ctx) - void padic_poly_set_fmpz_poly(padic_poly_t rop, const fmpz_poly_t op, - const padic_ctx_t ctx) - void padic_poly_set_fmpq_poly(padic_poly_t rop, - const fmpq_poly_t op, const padic_ctx_t ctx) - int padic_poly_get_fmpz_poly(fmpz_poly_t rop, const padic_poly_t op, - const padic_ctx_t ctx) - void padic_poly_get_fmpq_poly(fmpq_poly_t rop, - const padic_poly_t op, const padic_ctx_t ctx) - void padic_poly_zero(padic_poly_t poly) - void padic_poly_one(padic_poly_t poly) - void padic_poly_swap(padic_poly_t poly1, padic_poly_t poly2) - - #* Getting and setting coefficients ****************************************/ - void padic_poly_get_coeff_padic(padic_t c, const padic_poly_t poly, long n, - const padic_ctx_t ctx) - void padic_poly_set_coeff_padic(padic_poly_t f, long n, const padic_t c, - const padic_ctx_t ctx) - - #* Comparison **************************************************************/ - int padic_poly_equal(const padic_poly_t f, const padic_poly_t g) - int padic_poly_is_zero(const padic_poly_t poly) - int padic_poly_is_one(const padic_poly_t poly) - - #* Addition and subtraction ************************************************/ - void _padic_poly_add(fmpz *rop, long *rval, long N, - const fmpz *op1, long val1, long len1, long N1, - const fmpz *op2, long val2, long len2, long N2, - const padic_ctx_t ctx) - void padic_poly_add(padic_poly_t f, - const padic_poly_t g, const padic_poly_t h, - const padic_ctx_t ctx) - void _padic_poly_sub(fmpz *rop, long *rval, long N, - const fmpz *op1, long val1, long len1, long N1, - const fmpz *op2, long val2, long len2, long N2, - const padic_ctx_t ctx) - void padic_poly_sub(padic_poly_t f, - const padic_poly_t g, const padic_poly_t h, - const padic_ctx_t ctx) - void padic_poly_neg(padic_poly_t f, const padic_poly_t g, - const padic_ctx_t ctx) - -#* Scalar multiplication and division **************************************/ - void _padic_poly_scalar_mul_padic(fmpz *rop, long *rval, long N, - const fmpz *op, long val, long len, - const padic_t c, const padic_ctx_t ctx) - void padic_poly_scalar_mul_padic(padic_poly_t rop, const padic_poly_t op, - const padic_t c, const padic_ctx_t ctx) - -#* Multiplication **********************************************************/ - void _padic_poly_mul(fmpz *rop, long *rval, long N, - const fmpz *op1, long val1, long len1, - const fmpz *op2, long val2, long len2, - const padic_ctx_t ctx) - void padic_poly_mul(padic_poly_t f, - const padic_poly_t g, const padic_poly_t h, - const padic_ctx_t ctx) - -#* Powering ****************************************************************/ - void _padic_poly_pow(fmpz *rop, long *rval, long N, - const fmpz *op, long val, long len, unsigned long e, - const padic_ctx_t ctx) - void padic_poly_pow(padic_poly_t rop, const padic_poly_t op, unsigned long e, - const padic_ctx_t ctx) - -#* Series inversion ********************************************************/ - void padic_poly_inv_series(padic_poly_t Qinv, const padic_poly_t Q, long n, - const padic_ctx_t ctx) - -#* Derivative **************************************************************/ - void _padic_poly_derivative(fmpz *rop, long *rval, long N, - const fmpz *op, long val, long len, - const padic_ctx_t ctx) - void padic_poly_derivative(padic_poly_t rop, - const padic_poly_t op, const padic_ctx_t ctx) - -#* Shifting ****************************************************************/ - void padic_poly_shift_left(padic_poly_t rop, const padic_poly_t op, long n, - const padic_ctx_t ctx) - void padic_poly_shift_right(padic_poly_t rop, const padic_poly_t op, long n, - const padic_ctx_t ctx) - -#* Evaluation **************************************************************/ - void _padic_poly_evaluate_padic(fmpz_t u, long *v, long N, - const fmpz *poly, long val, long len, - const fmpz_t a, long b, const padic_ctx_t ctx) - void padic_poly_evaluate_padic(padic_t y, const padic_poly_t poly, - const padic_t x, const padic_ctx_t ctx) - -#* Composition *************************************************************/ - void _padic_poly_compose(fmpz *rop, long *rval, long N, - const fmpz *op1, long val1, long len1, - const fmpz *op2, long val2, long len2, - const padic_ctx_t ctx) - void padic_poly_compose(padic_poly_t rop, - const padic_poly_t op1, const padic_poly_t op2, - const padic_ctx_t ctx) - void _padic_poly_compose_pow(fmpz *rop, long *rval, long N, - const fmpz *op, long val, long len, long k, - const padic_ctx_t ctx) - void padic_poly_compose_pow(padic_poly_t rop, const padic_poly_t op, long k, - const padic_ctx_t ctx) - - #* Input and output ********************************************************/ - int padic_poly_debug(const padic_poly_t poly) - int _padic_poly_fprint(FILE *file, const fmpz *poly, long val, long len, - const padic_ctx_t ctx) - int padic_poly_fprint(FILE *file, const padic_poly_t poly, - const padic_ctx_t ctx) - int _padic_poly_print(const fmpz *poly, long val, long len, - const padic_ctx_t ctx) - int padic_poly_print(const padic_poly_t poly, const padic_ctx_t ctx) - int _padic_poly_fprint_pretty(FILE *file, - const fmpz *poly, long val, long len, - const char *var, - const padic_ctx_t ctx) - int padic_poly_fprint_pretty(FILE *file, - const padic_poly_t poly, const char *var, - const padic_ctx_t ctx) - int _padic_poly_print_pretty(FILE *file, - const fmpz *poly, long val, long len, - const char *var, - const padic_ctx_t ctx) - int padic_poly_print_pretty(const padic_poly_t poly, const char *var, - const padic_ctx_t ctx) - - #* Testing *****************************************************************/ - int _padic_poly_is_canonical(const fmpz *op, long val, long len, - const padic_ctx_t ctx) - int padic_poly_is_canonical(const padic_poly_t op, const padic_ctx_t ctx) - int _padic_poly_is_reduced(const fmpz *op, long val, long len, long N, - const padic_ctx_t ctx) - int padic_poly_is_reduced(const padic_poly_t op, const padic_ctx_t ctx) + void padic_poly_init(padic_poly_t poly) noexcept + void padic_poly_init2(padic_poly_t poly, slong alloc, slong prec) noexcept + void padic_poly_realloc(padic_poly_t poly, slong alloc, const fmpz_t p) noexcept + void padic_poly_fit_length(padic_poly_t poly, slong len) noexcept + void _padic_poly_set_length(padic_poly_t poly, slong len) noexcept + void padic_poly_clear(padic_poly_t poly) noexcept + void _padic_poly_normalise(padic_poly_t poly) noexcept + void _padic_poly_canonicalise(fmpz * poly, slong * v, slong len, const fmpz_t p) noexcept + void padic_poly_canonicalise(padic_poly_t poly, const fmpz_t p) noexcept + void padic_poly_reduce(padic_poly_t poly, const padic_ctx_t ctx) noexcept + void padic_poly_truncate(padic_poly_t poly, slong n, const fmpz_t p) noexcept + slong padic_poly_degree(const padic_poly_t poly) noexcept + slong padic_poly_length(const padic_poly_t poly) noexcept + slong padic_poly_val(const padic_poly_t poly) noexcept + slong padic_poly_prec(padic_poly_t poly) noexcept + void padic_poly_randtest(padic_poly_t f, flint_rand_t state, slong len, const padic_ctx_t ctx) noexcept + void padic_poly_randtest_not_zero(padic_poly_t f, flint_rand_t state, slong len, const padic_ctx_t ctx) noexcept + void padic_poly_randtest_val(padic_poly_t f, flint_rand_t state, slong val, slong len, const padic_ctx_t ctx) noexcept + void padic_poly_set_padic(padic_poly_t poly, const padic_t x, const padic_ctx_t ctx) noexcept + void padic_poly_set(padic_poly_t poly1, const padic_poly_t poly2, const padic_ctx_t ctx) noexcept + void padic_poly_set_si(padic_poly_t poly, slong x, const padic_ctx_t ctx) noexcept + void padic_poly_set_ui(padic_poly_t poly, ulong x, const padic_ctx_t ctx) noexcept + void padic_poly_set_fmpz(padic_poly_t poly, const fmpz_t x, const padic_ctx_t ctx) noexcept + void padic_poly_set_fmpq(padic_poly_t poly, const fmpq_t x, const padic_ctx_t ctx) noexcept + void padic_poly_set_fmpz_poly(padic_poly_t rop, const fmpz_poly_t op, const padic_ctx_t ctx) noexcept + void padic_poly_set_fmpq_poly(padic_poly_t rop, const fmpq_poly_t op, const padic_ctx_t ctx) noexcept + int padic_poly_get_fmpz_poly(fmpz_poly_t rop, const padic_poly_t op, const padic_ctx_t ctx) noexcept + void padic_poly_get_fmpq_poly(fmpq_poly_t rop, const padic_poly_t op, const padic_ctx_t ctx) noexcept + void padic_poly_zero(padic_poly_t poly) noexcept + void padic_poly_one(padic_poly_t poly) noexcept + void padic_poly_swap(padic_poly_t poly1, padic_poly_t poly2) noexcept + void padic_poly_get_coeff_padic(padic_t c, const padic_poly_t poly, slong n, const padic_ctx_t ctx) noexcept + void padic_poly_set_coeff_padic(padic_poly_t f, slong n, const padic_t c, const padic_ctx_t ctx) noexcept + bint padic_poly_equal(const padic_poly_t poly1, const padic_poly_t poly2) noexcept + bint padic_poly_is_zero(const padic_poly_t poly) noexcept + bint padic_poly_is_one(const padic_poly_t poly) noexcept + void _padic_poly_add(fmpz * rop, slong * rval, slong N, const fmpz * op1, slong val1, slong len1, slong N1, const fmpz * op2, slong val2, slong len2, slong N2, const padic_ctx_t ctx) noexcept + void padic_poly_add(padic_poly_t f, const padic_poly_t g, const padic_poly_t h, const padic_ctx_t ctx) noexcept + void _padic_poly_sub(fmpz * rop, slong * rval, slong N, const fmpz * op1, slong val1, slong len1, slong N1, const fmpz * op2, slong val2, slong len2, slong N2, const padic_ctx_t ctx) noexcept + void padic_poly_sub(padic_poly_t f, const padic_poly_t g, const padic_poly_t h, const padic_ctx_t ctx) noexcept + void padic_poly_neg(padic_poly_t f, const padic_poly_t g, const padic_ctx_t ctx) noexcept + void _padic_poly_scalar_mul_padic(fmpz * rop, slong * rval, slong N, const fmpz * op, slong val, slong len, const padic_t c, const padic_ctx_t ctx) noexcept + void padic_poly_scalar_mul_padic(padic_poly_t rop, const padic_poly_t op, const padic_t c, const padic_ctx_t ctx) noexcept + void _padic_poly_mul(fmpz * rop, slong * rval, slong N, const fmpz * op1, slong val1, slong len1, const fmpz * op2, slong val2, slong len2, const padic_ctx_t ctx) noexcept + void padic_poly_mul(padic_poly_t res, const padic_poly_t poly1, const padic_poly_t poly2, const padic_ctx_t ctx) noexcept + void _padic_poly_pow(fmpz * rop, slong * rval, slong N, const fmpz * op, slong val, slong len, ulong e, const padic_ctx_t ctx) noexcept + void padic_poly_pow(padic_poly_t rop, const padic_poly_t op, ulong e, const padic_ctx_t ctx) noexcept + void padic_poly_inv_series(padic_poly_t g, const padic_poly_t f, slong n, const padic_ctx_t ctx) noexcept + void _padic_poly_derivative(fmpz * rop, slong * rval, slong N, const fmpz * op, slong val, slong len, const padic_ctx_t ctx) noexcept + void padic_poly_derivative(padic_poly_t rop, const padic_poly_t op, const padic_ctx_t ctx) noexcept + void padic_poly_shift_left(padic_poly_t rop, const padic_poly_t op, slong n, const padic_ctx_t ctx) noexcept + void padic_poly_shift_right(padic_poly_t rop, const padic_poly_t op, slong n, const padic_ctx_t ctx) noexcept + void _padic_poly_evaluate_padic(fmpz_t u, slong * v, slong N, const fmpz * poly, slong val, slong len, const fmpz_t a, slong b, const padic_ctx_t ctx) noexcept + void padic_poly_evaluate_padic(padic_t y, const padic_poly_t poly, const padic_t a, const padic_ctx_t ctx) noexcept + void _padic_poly_compose(fmpz * rop, slong * rval, slong N, const fmpz * op1, slong val1, slong len1, const fmpz * op2, slong val2, slong len2, const padic_ctx_t ctx) noexcept + void padic_poly_compose(padic_poly_t rop, const padic_poly_t op1, const padic_poly_t op2, const padic_ctx_t ctx) noexcept + void _padic_poly_compose_pow(fmpz * rop, slong * rval, slong N, const fmpz * op, slong val, slong len, slong k, const padic_ctx_t ctx) noexcept + void padic_poly_compose_pow(padic_poly_t rop, const padic_poly_t op, slong k, const padic_ctx_t ctx) noexcept + int padic_poly_debug(const padic_poly_t poly) noexcept + int _padic_poly_fprint(FILE * file, const fmpz * poly, slong val, slong len, const padic_ctx_t ctx) noexcept + int padic_poly_fprint(FILE * file, const padic_poly_t poly, const padic_ctx_t ctx) noexcept + int _padic_poly_print(const fmpz * poly, slong val, slong len, const padic_ctx_t ctx) noexcept + int padic_poly_print(const padic_poly_t poly, const padic_ctx_t ctx) noexcept + int _padic_poly_fprint_pretty(FILE * file, const fmpz * poly, slong val, slong len, const char * var, const padic_ctx_t ctx) noexcept + int padic_poly_fprint_pretty(FILE * file, const padic_poly_t poly, const char * var, const padic_ctx_t ctx) noexcept + int _padic_poly_print_pretty(const fmpz * poly, slong val, slong len, const char * var, const padic_ctx_t ctx) noexcept + int padic_poly_print_pretty(const padic_poly_t poly, const char * var, const padic_ctx_t ctx) noexcept + bint _padic_poly_is_canonical(const fmpz * op, slong val, slong len, const padic_ctx_t ctx) noexcept + bint padic_poly_is_canonical(const padic_poly_t op, const padic_ctx_t ctx) noexcept + bint _padic_poly_is_reduced(const fmpz * op, slong val, slong len, slong N, const padic_ctx_t ctx) noexcept + bint padic_poly_is_reduced(const padic_poly_t op, const padic_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/partitions.pxd b/src/sage/libs/flint/partitions.pxd new file mode 100644 index 00000000000..9b76ea11b68 --- /dev/null +++ b/src/sage/libs/flint/partitions.pxd @@ -0,0 +1,21 @@ +# distutils: libraries = flint +# distutils: depends = flint/partitions.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void partitions_rademacher_bound(arf_t b, const fmpz_t n, ulong N) noexcept + void partitions_hrr_sum_arb(arb_t x, const fmpz_t n, slong N0, slong N, int use_doubles) noexcept + void partitions_fmpz_fmpz(fmpz_t p, const fmpz_t n, int use_doubles) noexcept + void partitions_fmpz_ui(fmpz_t p, ulong n) noexcept + void partitions_fmpz_ui_using_doubles(fmpz_t p, ulong n) noexcept + void partitions_leading_fmpz(arb_t res, const fmpz_t n, slong prec) noexcept diff --git a/src/sage/libs/flint/perm.pxd b/src/sage/libs/flint/perm.pxd new file mode 100644 index 00000000000..3e2f935d591 --- /dev/null +++ b/src/sage/libs/flint/perm.pxd @@ -0,0 +1,24 @@ +# distutils: libraries = flint +# distutils: depends = flint/perm.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + slong * _perm_init(slong n) noexcept + void _perm_clear(slong * vec) noexcept + void _perm_set(slong * res, const slong * vec, slong n) noexcept + void _perm_one(slong * vec, slong n) noexcept + void _perm_inv(slong * res, const slong * vec, slong n) noexcept + void _perm_compose(slong * res, const slong * vec1, const slong * vec2, slong n) noexcept + int _perm_parity(const slong * vec, slong n) noexcept + int _perm_randtest(slong * vec, slong n, flint_rand_t state) noexcept + int _perm_print(const slong * vec, slong n) noexcept diff --git a/src/sage/libs/flint/profiler.pxd b/src/sage/libs/flint/profiler.pxd new file mode 100644 index 00000000000..87c2c4684fd --- /dev/null +++ b/src/sage/libs/flint/profiler.pxd @@ -0,0 +1,22 @@ +# distutils: libraries = flint +# distutils: depends = flint/profiler.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void timeit_start(timeit_t t) noexcept + void timeit_stop(timeit_t t) noexcept + void start_clock(int n) noexcept + void stop_clock(int n) noexcept + double get_clock(int n) noexcept + void prof_repeat(double * min, double * max, profile_target_t target, void * arg) noexcept + void get_memory_usage(meminfo_t meminfo) noexcept diff --git a/src/sage/libs/flint/qadic.pxd b/src/sage/libs/flint/qadic.pxd index ec64e9eef74..86db643ec2a 100644 --- a/src/sage/libs/flint/qadic.pxd +++ b/src/sage/libs/flint/qadic.pxd @@ -1,119 +1,75 @@ # distutils: libraries = flint # distutils: depends = flint/qadic.h +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * from sage.libs.flint.types cimport * -# flint/qadic.h cdef extern from "flint_wrap.h": - long qadic_val(const qadic_t op) - long qadic_prec(const qadic_t op) - - void qadic_ctx_init_conway(qadic_ctx_t ctx, - const fmpz_t p, long d, long min, long max, - const char *var, padic_print_mode mode) - void qadic_ctx_clear(qadic_ctx_t ctx) - long qadic_ctx_degree(const qadic_ctx_t ctx) - void qadic_ctx_print(const qadic_ctx_t ctx) - - #* Memory management *********************************************************/ - void qadic_init(qadic_t x) - void qadic_init2(qadic_t rop, long prec) - void qadic_clear(qadic_t x) - void _fmpz_poly_reduce(fmpz *R, long lenR, const fmpz *a, const long *j, long len) - void _fmpz_mod_poly_reduce(fmpz *R, long lenR, - const fmpz *a, const long *j, long len, const fmpz_t p) - void qadic_reduce(qadic_t x, const qadic_ctx_t ctx) - - #* Randomisation *************************************************************/ - void qadic_randtest(qadic_t x, flint_rand_t state, const qadic_ctx_t ctx) - void qadic_randtest_not_zero(qadic_t x, flint_rand_t state, const qadic_ctx_t ctx) - void qadic_randtest_val(qadic_t x, flint_rand_t state, long val, - const qadic_ctx_t ctx) - void qadic_randtest_int(qadic_t x, flint_rand_t state, const qadic_ctx_t ctx) - - #* Assignments and conversions ***********************************************/ - void qadic_zero(qadic_t op) - void qadic_one(qadic_t op) - void qadic_gen(qadic_t x, const qadic_ctx_t ctx) - void qadic_set_ui(qadic_t rop, unsigned long op, const qadic_ctx_t ctx) - int qadic_get_padic(padic_t rop, const qadic_t op, const qadic_ctx_t ctx) - void qadic_set(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) - void qadic_set_fmpz_poly(qadic_t rop, const fmpz_poly_t op, - const qadic_ctx_t ctx) - - #* Comparison ****************************************************************/ - int qadic_is_zero(const qadic_t op) - int qadic_is_one(const qadic_t op) - int qadic_equal(const qadic_t op1, const qadic_t op2) - - #* Basic arithmetic **********************************************************/ - void qadic_add(qadic_t x, const qadic_t y, const qadic_t z, const qadic_ctx_t ctx) - void qadic_sub(qadic_t x, const qadic_t y, const qadic_t z, const qadic_ctx_t ctx) - void qadic_neg(qadic_t x, const qadic_t y, const qadic_ctx_t ctx) - void qadic_mul(qadic_t x, const qadic_t y, const qadic_t z, - const qadic_ctx_t ctx) - void _qadic_inv(fmpz *rop, const fmpz *op, long len, - const fmpz *a, const long *j, long lena, - const fmpz_t p, long N) - void qadic_inv(qadic_t x, const qadic_t y, const qadic_ctx_t ctx) - void _qadic_pow(fmpz *rop, const fmpz *op, long len, const fmpz_t e, - const fmpz *a, const long *j, long lena, - const fmpz_t p) - void qadic_pow(qadic_t x, const qadic_t y, const fmpz_t e, const qadic_ctx_t ctx) - - #* Special functions *********************************************************/ - void _qadic_exp_rectangular(fmpz *rop, const fmpz *op, long v, long len, - const fmpz *a, const long *j, long lena, - const fmpz_t p, long N, const fmpz_t pN) - int qadic_exp_rectangular(qadic_t rop, const qadic_t op, - const qadic_ctx_t ctx) - void _qadic_exp_balanced(fmpz *rop, const fmpz *op, long v, long len, - const fmpz *a, const long *j, long lena, - const fmpz_t p, long N, const fmpz_t pN) - int qadic_exp_balanced(qadic_t rop, const qadic_t op, - const qadic_ctx_t ctx) - void _qadic_exp(fmpz *rop, const fmpz *op, long v, long len, - const fmpz *a, const long *j, long lena, - const fmpz_t p, long N, const fmpz_t pN) - int qadic_exp(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) - void _qadic_log_rectangular(fmpz *z, const fmpz *y, long v, long len, - const fmpz *a, const long *j, long lena, - const fmpz_t p, long N, const fmpz_t pN) - int qadic_log_rectangular(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) - void _qadic_log_balanced(fmpz *z, const fmpz *y, long len, - const fmpz *a, const long *j, long lena, - const fmpz_t p, long N, const fmpz_t pN) - int qadic_log_balanced(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) - void _qadic_log(fmpz *z, const fmpz *y, long v, long len, - const fmpz *a, const long *j, long lena, - const fmpz_t p, long N, const fmpz_t pN) - int qadic_log(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) - void _qadic_frobenius(fmpz *rop, const fmpz *op, long len, long e, - const fmpz *a, const long *j, long lena, - const fmpz_t p, long N) - void qadic_frobenius(qadic_t rop, const qadic_t op, long e, const qadic_ctx_t ctx) - void _qadic_teichmuller(fmpz *rop, const fmpz *op, long len, - const fmpz *a, const long *j, long lena, - const fmpz_t p, long N) - void qadic_teichmuller(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) - void _qadic_trace(fmpz_t rop, const fmpz *op, long len, - const fmpz *a, const long *j, long lena, const fmpz_t pN) - void qadic_trace(padic_t rop, const qadic_t op, const qadic_ctx_t ctx) - void _qadic_norm_resultant(fmpz_t rop, const fmpz *op, long len, - const fmpz *a, const long *j, long lena, - const fmpz_t p, long N) - void _qadic_norm_analytic(fmpz_t rop, const fmpz *y, long v, long len, - const fmpz *a, const long *j, long lena, - const fmpz_t p, long N) - void _qadic_norm(fmpz_t rop, const fmpz *op, long len, - const fmpz *a, const long *j, long lena, - const fmpz_t p, long N) - void qadic_norm(padic_t rop, const qadic_t op, const qadic_ctx_t ctx) - void qadic_norm_analytic(padic_t rop, const qadic_t op, const qadic_ctx_t ctx) - void qadic_norm_resultant(padic_t rop, const qadic_t op, const qadic_ctx_t ctx) - int qadic_sqrt(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) - - #* Output ********************************************************************/ - int qadic_fprint_pretty(FILE *file, const qadic_t op, const qadic_ctx_t ctx) - int qadic_print_pretty(const qadic_t op, const qadic_ctx_t ctx) - int qadic_debug(const qadic_t op) + void qadic_ctx_init(qadic_ctx_t ctx, const fmpz_t p, slong d, slong min, slong max, const char * var, padic_print_mode mode) noexcept + void qadic_ctx_init_conway(qadic_ctx_t ctx, const fmpz_t p, slong d, slong min, slong max, const char * var, padic_print_mode mode) noexcept + void qadic_ctx_clear(qadic_ctx_t ctx) noexcept + slong qadic_ctx_degree(const qadic_ctx_t ctx) noexcept + void qadic_ctx_print(const qadic_ctx_t ctx) noexcept + void qadic_init(qadic_t rop) noexcept + void qadic_init2(qadic_t rop, slong prec) noexcept + void qadic_clear(qadic_t rop) noexcept + void _fmpz_poly_reduce(fmpz * R, slong lenR, const fmpz * a, const slong * j, slong len) noexcept + void _fmpz_mod_poly_reduce(fmpz * R, slong lenR, const fmpz * a, const slong * j, slong len, const fmpz_t p) noexcept + void qadic_reduce(qadic_t rop, const qadic_ctx_t ctx) noexcept + slong qadic_val(const qadic_t op) noexcept + slong qadic_prec(const qadic_t op) noexcept + void qadic_randtest(qadic_t rop, flint_rand_t state, const qadic_ctx_t ctx) noexcept + void qadic_randtest_not_zero(qadic_t rop, flint_rand_t state, const qadic_ctx_t ctx) noexcept + void qadic_randtest_val(qadic_t rop, flint_rand_t state, slong v, const qadic_ctx_t ctx) noexcept + void qadic_randtest_int(qadic_t rop, flint_rand_t state, const qadic_ctx_t ctx) noexcept + void qadic_set(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) noexcept + void qadic_zero(qadic_t rop) noexcept + void qadic_one(qadic_t rop) noexcept + void qadic_gen(qadic_t rop, const qadic_ctx_t ctx) noexcept + void qadic_set_ui(qadic_t rop, ulong op, const qadic_ctx_t ctx) noexcept + int qadic_get_padic(padic_t rop, const qadic_t op, const qadic_ctx_t ctx) noexcept + bint qadic_is_zero(const qadic_t op) noexcept + bint qadic_is_one(const qadic_t op) noexcept + bint qadic_equal(const qadic_t op1, const qadic_t op2) noexcept + void qadic_add(qadic_t rop, const qadic_t op1, const qadic_t op2, const qadic_ctx_t ctx) noexcept + void qadic_sub(qadic_t rop, const qadic_t op1, const qadic_t op2, const qadic_ctx_t ctx) noexcept + void qadic_neg(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) noexcept + void qadic_mul(qadic_t rop, const qadic_t op1, const qadic_t op2, const qadic_ctx_t ctx) noexcept + void _qadic_inv(fmpz * rop, const fmpz * op, slong len, const fmpz * a, const slong * j, slong lena, const fmpz_t p, slong N) noexcept + void qadic_inv(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) noexcept + void _qadic_pow(fmpz * rop, const fmpz * op, slong len, const fmpz_t e, const fmpz * a, const slong * j, slong lena, const fmpz_t p) noexcept + void qadic_pow(qadic_t rop, const qadic_t op, const fmpz_t e, const qadic_ctx_t ctx) noexcept + int qadic_sqrt(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) noexcept + void _qadic_exp_rectangular(fmpz * rop, const fmpz * op, slong v, slong len, const fmpz * a, const slong * j, slong lena, const fmpz_t p, slong N, const fmpz_t pN) noexcept + int qadic_exp_rectangular(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) noexcept + void _qadic_exp_balanced(fmpz * rop, const fmpz * x, slong v, slong len, const fmpz * a, const slong * j, slong lena, const fmpz_t p, slong N, const fmpz_t pN) noexcept + int qadic_exp_balanced(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) noexcept + void _qadic_exp(fmpz * rop, const fmpz * op, slong v, slong len, const fmpz * a, const slong * j, slong lena, const fmpz_t p, slong N, const fmpz_t pN) noexcept + int qadic_exp(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) noexcept + void _qadic_log_rectangular(fmpz * z, const fmpz * y, slong v, slong len, const fmpz * a, const slong * j, slong lena, const fmpz_t p, slong N, const fmpz_t pN) noexcept + int qadic_log_rectangular(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) noexcept + void _qadic_log_balanced(fmpz * z, const fmpz * y, slong len, const fmpz * a, const slong * j, slong lena, const fmpz_t p, slong N, const fmpz_t pN) noexcept + int qadic_log_balanced(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) noexcept + void _qadic_log(fmpz * z, const fmpz * y, slong v, slong len, const fmpz * a, const slong * j, slong lena, const fmpz_t p, slong N, const fmpz_t pN) noexcept + int qadic_log(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) noexcept + void _qadic_frobenius_a(fmpz * rop, slong e, const fmpz * a, const slong * j, slong lena, const fmpz_t p, slong N) noexcept + void _qadic_frobenius(fmpz * rop, const fmpz * op, slong len, slong e, const fmpz * a, const slong * j, slong lena, const fmpz_t p, slong N) noexcept + void qadic_frobenius(qadic_t rop, const qadic_t op, slong e, const qadic_ctx_t ctx) noexcept + void _qadic_teichmuller(fmpz * rop, const fmpz * op, slong len, const fmpz * a, const slong * j, slong lena, const fmpz_t p, slong N) noexcept + void qadic_teichmuller(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) noexcept + void _qadic_trace(fmpz_t rop, const fmpz * op, slong len, const fmpz * a, const slong * j, slong lena, const fmpz_t pN) noexcept + void qadic_trace(padic_t rop, const qadic_t op, const qadic_ctx_t ctx) noexcept + void _qadic_norm(fmpz_t rop, const fmpz * op, slong len, const fmpz * a, const slong * j, slong lena, const fmpz_t p, slong N) noexcept + void qadic_norm(padic_t rop, const qadic_t op, const qadic_ctx_t ctx) noexcept + void qadic_norm_analytic(padic_t rop, const qadic_t op, const qadic_ctx_t ctx) noexcept + void qadic_norm_resultant(padic_t rop, const qadic_t op, const qadic_ctx_t ctx) noexcept + int qadic_fprint_pretty(FILE * file, const qadic_t op, const qadic_ctx_t ctx) noexcept + int qadic_print_pretty(const qadic_t op, const qadic_ctx_t ctx) noexcept diff --git a/src/sage/libs/flint/qfb.pxd b/src/sage/libs/flint/qfb.pxd new file mode 100644 index 00000000000..d881ababd29 --- /dev/null +++ b/src/sage/libs/flint/qfb.pxd @@ -0,0 +1,42 @@ +# distutils: libraries = flint +# distutils: depends = flint/qfb.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void qfb_init(qfb_t q) noexcept + void qfb_clear(qfb_t q) noexcept + void qfb_array_clear(qfb ** forms, slong num) noexcept + qfb_hash_t * qfb_hash_init(slong depth) noexcept + void qfb_hash_clear(qfb_hash_t * qhash, slong depth) noexcept + void qfb_hash_insert(qfb_hash_t * qhash, qfb_t q, qfb_t q2, slong it, slong depth) noexcept + slong qfb_hash_find(qfb_hash_t * qhash, qfb_t q, slong depth) noexcept + void qfb_set(qfb_t f, qfb_t g) noexcept + bint qfb_equal(qfb_t f, qfb_t g) noexcept + void qfb_print(qfb_t q) noexcept + void qfb_discriminant(fmpz_t D, qfb_t f) noexcept + void qfb_reduce(qfb_t r, qfb_t f, fmpz_t D) noexcept + bint qfb_is_reduced(qfb_t r) noexcept + slong qfb_reduced_forms(qfb ** forms, slong d) noexcept + slong qfb_reduced_forms_large(qfb ** forms, slong d) noexcept + void qfb_nucomp(qfb_t r, const qfb_t f, const qfb_t g, fmpz_t D, fmpz_t L) noexcept + void qfb_nudupl(qfb_t r, const qfb_t f, fmpz_t D, fmpz_t L) noexcept + void qfb_pow_ui(qfb_t r, qfb_t f, fmpz_t D, ulong exp) noexcept + void qfb_pow(qfb_t r, qfb_t f, fmpz_t D, fmpz_t exp) noexcept + void qfb_inverse(qfb_t r, qfb_t f) noexcept + bint qfb_is_principal_form(qfb_t f, fmpz_t D) noexcept + void qfb_principal_form(qfb_t f, fmpz_t D) noexcept + bint qfb_is_primitive(qfb_t f) noexcept + void qfb_prime_form(qfb_t r, fmpz_t D, fmpz_t p) noexcept + int qfb_exponent_element(fmpz_t exponent, qfb_t f, fmpz_t n, ulong B1, ulong B2_sqrt) noexcept + int qfb_exponent(fmpz_t exponent, fmpz_t n, ulong B1, ulong B2_sqrt, slong c) noexcept + int qfb_exponent_grh(fmpz_t exponent, fmpz_t n, ulong B1, ulong B2_sqrt) noexcept diff --git a/src/sage/libs/flint/qqbar.pxd b/src/sage/libs/flint/qqbar.pxd new file mode 100644 index 00000000000..aafe994212f --- /dev/null +++ b/src/sage/libs/flint/qqbar.pxd @@ -0,0 +1,170 @@ +# distutils: libraries = flint +# distutils: depends = flint/qqbar.h + +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void qqbar_init(qqbar_t res) noexcept + void qqbar_clear(qqbar_t res) noexcept + qqbar_ptr _qqbar_vec_init(slong len) noexcept + void _qqbar_vec_clear(qqbar_ptr vec, slong len) noexcept + void qqbar_swap(qqbar_t x, qqbar_t y) noexcept + void qqbar_set(qqbar_t res, const qqbar_t x) noexcept + void qqbar_set_si(qqbar_t res, slong x) noexcept + void qqbar_set_ui(qqbar_t res, ulong x) noexcept + void qqbar_set_fmpz(qqbar_t res, const fmpz_t x) noexcept + void qqbar_set_fmpq(qqbar_t res, const fmpq_t x) noexcept + void qqbar_set_re_im(qqbar_t res, const qqbar_t x, const qqbar_t y) noexcept + int qqbar_set_d(qqbar_t res, double x) noexcept + int qqbar_set_re_im_d(qqbar_t res, double x, double y) noexcept + slong qqbar_degree(const qqbar_t x) noexcept + bint qqbar_is_rational(const qqbar_t x) noexcept + bint qqbar_is_integer(const qqbar_t x) noexcept + bint qqbar_is_algebraic_integer(const qqbar_t x) noexcept + bint qqbar_is_zero(const qqbar_t x) noexcept + bint qqbar_is_one(const qqbar_t x) noexcept + bint qqbar_is_neg_one(const qqbar_t x) noexcept + bint qqbar_is_i(const qqbar_t x) noexcept + bint qqbar_is_neg_i(const qqbar_t x) noexcept + bint qqbar_is_real(const qqbar_t x) noexcept + void qqbar_height(fmpz_t res, const qqbar_t x) noexcept + slong qqbar_height_bits(const qqbar_t x) noexcept + int qqbar_within_limits(const qqbar_t x, slong deg_limit, slong bits_limit) noexcept + int qqbar_binop_within_limits(const qqbar_t x, const qqbar_t y, slong deg_limit, slong bits_limit) noexcept + void _qqbar_get_fmpq(fmpz_t num, fmpz_t den, const qqbar_t x) noexcept + void qqbar_get_fmpq(fmpq_t res, const qqbar_t x) noexcept + void qqbar_get_fmpz(fmpz_t res, const qqbar_t x) noexcept + void qqbar_zero(qqbar_t res) noexcept + void qqbar_one(qqbar_t res) noexcept + void qqbar_i(qqbar_t res) noexcept + void qqbar_phi(qqbar_t res) noexcept + void qqbar_print(const qqbar_t x) noexcept + void qqbar_printn(const qqbar_t x, slong n) noexcept + void qqbar_printnd(const qqbar_t x, slong n) noexcept + void qqbar_randtest(qqbar_t res, flint_rand_t state, slong deg, slong bits) noexcept + void qqbar_randtest_real(qqbar_t res, flint_rand_t state, slong deg, slong bits) noexcept + void qqbar_randtest_nonreal(qqbar_t res, flint_rand_t state, slong deg, slong bits) noexcept + bint qqbar_equal(const qqbar_t x, const qqbar_t y) noexcept + bint qqbar_equal_fmpq_poly_val(const qqbar_t x, const fmpq_poly_t f, const qqbar_t y) noexcept + int qqbar_cmp_re(const qqbar_t x, const qqbar_t y) noexcept + int qqbar_cmp_im(const qqbar_t x, const qqbar_t y) noexcept + int qqbar_cmpabs_re(const qqbar_t x, const qqbar_t y) noexcept + int qqbar_cmpabs_im(const qqbar_t x, const qqbar_t y) noexcept + int qqbar_cmpabs(const qqbar_t x, const qqbar_t y) noexcept + int qqbar_cmp_root_order(const qqbar_t x, const qqbar_t y) noexcept + ulong qqbar_hash(const qqbar_t x) noexcept + void qqbar_conj(qqbar_t res, const qqbar_t x) noexcept + void qqbar_re(qqbar_t res, const qqbar_t x) noexcept + void qqbar_im(qqbar_t res, const qqbar_t x) noexcept + void qqbar_re_im(qqbar_t res1, qqbar_t res2, const qqbar_t x) noexcept + void qqbar_abs(qqbar_t res, const qqbar_t x) noexcept + void qqbar_abs2(qqbar_t res, const qqbar_t x) noexcept + void qqbar_sgn(qqbar_t res, const qqbar_t x) noexcept + int qqbar_sgn_re(const qqbar_t x) noexcept + int qqbar_sgn_im(const qqbar_t x) noexcept + int qqbar_csgn(const qqbar_t x) noexcept + void qqbar_floor(fmpz_t res, const qqbar_t x) noexcept + void qqbar_ceil(fmpz_t res, const qqbar_t x) noexcept + void qqbar_neg(qqbar_t res, const qqbar_t x) noexcept + void qqbar_add(qqbar_t res, const qqbar_t x, const qqbar_t y) noexcept + void qqbar_add_fmpq(qqbar_t res, const qqbar_t x, const fmpq_t y) noexcept + void qqbar_add_fmpz(qqbar_t res, const qqbar_t x, const fmpz_t y) noexcept + void qqbar_add_ui(qqbar_t res, const qqbar_t x, ulong y) noexcept + void qqbar_add_si(qqbar_t res, const qqbar_t x, slong y) noexcept + void qqbar_sub(qqbar_t res, const qqbar_t x, const qqbar_t y) noexcept + void qqbar_sub_fmpq(qqbar_t res, const qqbar_t x, const fmpq_t y) noexcept + void qqbar_sub_fmpz(qqbar_t res, const qqbar_t x, const fmpz_t y) noexcept + void qqbar_sub_ui(qqbar_t res, const qqbar_t x, ulong y) noexcept + void qqbar_sub_si(qqbar_t res, const qqbar_t x, slong y) noexcept + void qqbar_fmpq_sub(qqbar_t res, const fmpq_t x, const qqbar_t y) noexcept + void qqbar_fmpz_sub(qqbar_t res, const fmpz_t x, const qqbar_t y) noexcept + void qqbar_ui_sub(qqbar_t res, ulong x, const qqbar_t y) noexcept + void qqbar_si_sub(qqbar_t res, slong x, const qqbar_t y) noexcept + void qqbar_mul(qqbar_t res, const qqbar_t x, const qqbar_t y) noexcept + void qqbar_mul_fmpq(qqbar_t res, const qqbar_t x, const fmpq_t y) noexcept + void qqbar_mul_fmpz(qqbar_t res, const qqbar_t x, const fmpz_t y) noexcept + void qqbar_mul_ui(qqbar_t res, const qqbar_t x, ulong y) noexcept + void qqbar_mul_si(qqbar_t res, const qqbar_t x, slong y) noexcept + void qqbar_mul_2exp_si(qqbar_t res, const qqbar_t x, slong e) noexcept + void qqbar_sqr(qqbar_t res, const qqbar_t x) noexcept + void qqbar_inv(qqbar_t res, const qqbar_t x) noexcept + void qqbar_div(qqbar_t res, const qqbar_t x, const qqbar_t y) noexcept + void qqbar_div_fmpq(qqbar_t res, const qqbar_t x, const fmpq_t y) noexcept + void qqbar_div_fmpz(qqbar_t res, const qqbar_t x, const fmpz_t y) noexcept + void qqbar_div_ui(qqbar_t res, const qqbar_t x, ulong y) noexcept + void qqbar_div_si(qqbar_t res, const qqbar_t x, slong y) noexcept + void qqbar_fmpq_div(qqbar_t res, const fmpq_t x, const qqbar_t y) noexcept + void qqbar_fmpz_div(qqbar_t res, const fmpz_t x, const qqbar_t y) noexcept + void qqbar_ui_div(qqbar_t res, ulong x, const qqbar_t y) noexcept + void qqbar_si_div(qqbar_t res, slong x, const qqbar_t y) noexcept + void qqbar_scalar_op(qqbar_t res, const qqbar_t x, const fmpz_t a, const fmpz_t b, const fmpz_t c) noexcept + void qqbar_sqrt(qqbar_t res, const qqbar_t x) noexcept + void qqbar_sqrt_ui(qqbar_t res, ulong x) noexcept + void qqbar_rsqrt(qqbar_t res, const qqbar_t x) noexcept + void qqbar_pow_ui(qqbar_t res, const qqbar_t x, ulong n) noexcept + void qqbar_pow_si(qqbar_t res, const qqbar_t x, slong n) noexcept + void qqbar_pow_fmpz(qqbar_t res, const qqbar_t x, const fmpz_t n) noexcept + void qqbar_pow_fmpq(qqbar_t res, const qqbar_t x, const fmpq_t n) noexcept + void qqbar_root_ui(qqbar_t res, const qqbar_t x, ulong n) noexcept + void qqbar_fmpq_root_ui(qqbar_t res, const fmpq_t x, ulong n) noexcept + void qqbar_fmpq_pow_si_ui(qqbar_t res, const fmpq_t x, slong m, ulong n) noexcept + int qqbar_pow(qqbar_t res, const qqbar_t x, const qqbar_t y) noexcept + void qqbar_get_acb(acb_t res, const qqbar_t x, slong prec) noexcept + void qqbar_get_arb(arb_t res, const qqbar_t x, slong prec) noexcept + void qqbar_get_arb_re(arb_t res, const qqbar_t x, slong prec) noexcept + void qqbar_get_arb_im(arb_t res, const qqbar_t x, slong prec) noexcept + void qqbar_cache_enclosure(qqbar_t res, slong prec) noexcept + void qqbar_denominator(fmpz_t res, const qqbar_t y) noexcept + void qqbar_numerator(qqbar_t res, const qqbar_t y) noexcept + void qqbar_conjugates(qqbar_ptr res, const qqbar_t x) noexcept + void _qqbar_evaluate_fmpq_poly(qqbar_t res, const fmpz * poly, const fmpz_t den, slong len, const qqbar_t x) noexcept + void qqbar_evaluate_fmpq_poly(qqbar_t res, const fmpq_poly_t poly, const qqbar_t x) noexcept + void _qqbar_evaluate_fmpz_poly(qqbar_t res, const fmpz * poly, slong len, const qqbar_t x) noexcept + void qqbar_evaluate_fmpz_poly(qqbar_t res, const fmpz_poly_t poly, const qqbar_t x) noexcept + int qqbar_evaluate_fmpz_mpoly_iter(qqbar_t res, const fmpz_mpoly_t poly, qqbar_srcptr x, slong deg_limit, slong bits_limit, const fmpz_mpoly_ctx_t ctx) noexcept + int qqbar_evaluate_fmpz_mpoly_horner(qqbar_t res, const fmpz_mpoly_t poly, qqbar_srcptr x, slong deg_limit, slong bits_limit, const fmpz_mpoly_ctx_t ctx) noexcept + int qqbar_evaluate_fmpz_mpoly(qqbar_t res, const fmpz_mpoly_t poly, qqbar_srcptr x, slong deg_limit, slong bits_limit, const fmpz_mpoly_ctx_t ctx) noexcept + void qqbar_roots_fmpz_poly(qqbar_ptr res, const fmpz_poly_t poly, int flags) noexcept + void qqbar_roots_fmpq_poly(qqbar_ptr res, const fmpq_poly_t poly, int flags) noexcept + void qqbar_eigenvalues_fmpz_mat(qqbar_ptr res, const fmpz_mat_t mat, int flags) noexcept + void qqbar_eigenvalues_fmpq_mat(qqbar_ptr res, const fmpq_mat_t mat, int flags) noexcept + void qqbar_root_of_unity(qqbar_t res, slong p, ulong q) noexcept + bint qqbar_is_root_of_unity(slong * p, ulong * q, const qqbar_t x) noexcept + void qqbar_exp_pi_i(qqbar_t res, slong p, ulong q) noexcept + void qqbar_cos_pi(qqbar_t res, slong p, ulong q) noexcept + void qqbar_sin_pi(qqbar_t res, slong p, ulong q) noexcept + int qqbar_tan_pi(qqbar_t res, slong p, ulong q) noexcept + int qqbar_cot_pi(qqbar_t res, slong p, ulong q) noexcept + int qqbar_sec_pi(qqbar_t res, slong p, ulong q) noexcept + int qqbar_csc_pi(qqbar_t res, slong p, ulong q) noexcept + int qqbar_log_pi_i(slong * p, ulong * q, const qqbar_t x) noexcept + int qqbar_atan_pi(slong * p, ulong * q, const qqbar_t x) noexcept + int qqbar_asin_pi(slong * p, ulong * q, const qqbar_t x) noexcept + int qqbar_acos_pi(slong * p, ulong * q, const qqbar_t x) noexcept + int qqbar_acot_pi(slong * p, ulong * q, const qqbar_t x) noexcept + int qqbar_asec_pi(slong * p, ulong * q, const qqbar_t x) noexcept + int qqbar_acsc_pi(slong * p, ulong * q, const qqbar_t x) noexcept + int qqbar_guess(qqbar_t res, const acb_t z, slong max_deg, slong max_bits, int flags, slong prec) noexcept + int qqbar_express_in_field(fmpq_poly_t res, const qqbar_t alpha, const qqbar_t x, slong max_bits, int flags, slong prec) noexcept + void qqbar_get_quadratic(fmpz_t a, fmpz_t b, fmpz_t c, fmpz_t q, const qqbar_t x, int factoring) noexcept + int qqbar_set_fexpr(qqbar_t res, const fexpr_t expr) noexcept + void qqbar_get_fexpr_repr(fexpr_t res, const qqbar_t x) noexcept + void qqbar_get_fexpr_root_nearest(fexpr_t res, const qqbar_t x) noexcept + void qqbar_get_fexpr_root_indexed(fexpr_t res, const qqbar_t x) noexcept + int qqbar_get_fexpr_formula(fexpr_t res, const qqbar_t x, ulong flags) noexcept + void qqbar_fmpz_poly_composed_op(fmpz_poly_t res, const fmpz_poly_t A, const fmpz_poly_t B, int op) noexcept + void qqbar_binary_op(qqbar_t res, const qqbar_t x, const qqbar_t y, int op) noexcept + int _qqbar_validate_uniqueness(acb_t res, const fmpz_poly_t poly, const acb_t z, slong max_prec) noexcept + int _qqbar_validate_existence_uniqueness(acb_t res, const fmpz_poly_t poly, const acb_t z, slong max_prec) noexcept + void _qqbar_enclosure_raw(acb_t res, const fmpz_poly_t poly, const acb_t z, slong prec) noexcept + void qqbar_enclosure_raw(acb_t res, const qqbar_t x, slong prec) noexcept + int _qqbar_acb_lindep(fmpz * rel, acb_srcptr vec, slong len, int check, slong prec) noexcept diff --git a/src/sage/libs/flint/qsieve.pxd b/src/sage/libs/flint/qsieve.pxd index ceab7a684a6..fe25087758c 100644 --- a/src/sage/libs/flint/qsieve.pxd +++ b/src/sage/libs/flint/qsieve.pxd @@ -1,8 +1,39 @@ # distutils: libraries = flint # distutils: depends = flint/qsieve.h +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * from sage.libs.flint.types cimport * -# flint/qsieve.h cdef extern from "flint_wrap.h": - void qsieve_factor(fmpz_factor_t, const fmpz_t) + mp_limb_t qsieve_knuth_schroeppel(qs_t qs_inf) noexcept + mp_limb_t qsieve_primes_init(qs_t qs_inf) noexcept + mp_limb_t qsieve_primes_increment(qs_t qs_inf, mp_limb_t delta) noexcept + void qsieve_init_A0(qs_t qs_inf) noexcept + void qsieve_next_A0(qs_t qs_inf) noexcept + void qsieve_compute_pre_data(qs_t qs_inf) noexcept + void qsieve_init_poly_first(qs_t qs_inf) noexcept + void qsieve_init_poly_next(qs_t qs_inf, slong i) noexcept + void qsieve_compute_C(fmpz_t C, qs_t qs_inf, qs_poly_t poly) noexcept + void qsieve_do_sieving(qs_t qs_inf, unsigned char * sieve, qs_poly_t poly) noexcept + void qsieve_do_sieving2(qs_t qs_inf, unsigned char * seive, qs_poly_t poly) noexcept + slong qsieve_evaluate_candidate(qs_t qs_inf, ulong i, unsigned char * sieve, qs_poly_t poly) noexcept + slong qsieve_evaluate_sieve(qs_t qs_inf, unsigned char * sieve, qs_poly_t poly) noexcept + slong qsieve_collect_relations(qs_t qs_inf, unsigned char * sieve) noexcept + void qsieve_write_to_file(qs_t qs_inf, mp_limb_t prime, const fmpz_t Y, const qs_poly_t poly) noexcept + hash_t * qsieve_get_table_entry(qs_t qs_inf, mp_limb_t prime) noexcept + void qsieve_add_to_hashtable(qs_t qs_inf, mp_limb_t prime) noexcept + relation_t qsieve_parse_relation(qs_t qs_inf, char * str) noexcept + relation_t qsieve_merge_relation(qs_t qs_inf, relation_t a, relation_t b) noexcept + int qsieve_compare_relation(const void * a, const void * b) noexcept + int qsieve_remove_duplicates(relation_t * rel_list, slong num_relations) noexcept + void qsieve_insert_relation2(qs_t qs_inf, relation_t * rel_list, slong num_relations) noexcept + int qsieve_process_relation(qs_t qs_inf) noexcept + void qsieve_factor(fmpz_factor_t factors, const fmpz_t n) noexcept diff --git a/src/sage/libs/flint/qsieve.pyx b/src/sage/libs/flint/qsieve.pyx index 7d93d41f4cc..7168a3beac8 100644 --- a/src/sage/libs/flint/qsieve.pyx +++ b/src/sage/libs/flint/qsieve.pyx @@ -1,63 +1,20 @@ -""" -Interface to FLINT's ``qsieve_factor()``. This used to interact -with an external "QuadraticSieve" program, but its functionality has -been absorbed into flint. -""" - -from cysignals.signals cimport sig_on, sig_off -from sage.libs.flint.fmpz cimport fmpz_t, fmpz_init, fmpz_set_mpz -from sage.libs.flint.fmpz_factor cimport * -from sage.rings.integer cimport Integer - - -def qsieve(n): - r""" - Factor ``n`` using the quadratic sieve. - - INPUT: - - - ``n`` -- an integer; neither prime nor a perfect power. - - OUTPUT: +r""" +Deprecated module. - A list of the factors of ``n``. There is no guarantee that the - factors found will be prime, or distinct. +Functions were moved in qsieve_sage.pyx. - EXAMPLES:: +TESTS:: - sage: k = 19; n = next_prime(10^k)*next_prime(10^(k+1)) - sage: factor(n) # (currently) uses PARI - 10000000000000000051 * 100000000000000000039 - sage: qsieve(n) - [(10000000000000000051, 1), (100000000000000000039, 1)] - - TESTS: - - The factorization of zero is undefined, to match the behavior of - ``ZZ.zero().factor()``:: - - sage: qsieve(ZZ.zero()) - Traceback (most recent call last): - ... - ArithmeticError: factorization of 0 is not defined - - """ - n = Integer(n) - - if n.is_zero(): - raise ArithmeticError("factorization of 0 is not defined") - - cdef fmpz_t p - fmpz_init(p) - fmpz_set_mpz(p, (n).value) - - cdef fmpz_factor_t factors - fmpz_factor_init(factors) - sig_on() - qsieve_factor(factors, p) - sig_off() + sage: from sage.libs.flint.qsieve import qsieve + sage: qsieve(1000) + doctest:warning + ... + DeprecationWarning: + Importing qsieve from here is deprecated; please use "from sage.libs.flint.qsieve_sage import qsieve" instead. + See https://github.com/sagemath/sage/issues/36449 for details. + [(2, 3), (5, 3)] +""" - pairs = fmpz_factor_to_pairlist(factors) +from sage.misc.lazy_import import LazyImport - fmpz_factor_clear(factors) - return pairs +qsieve = LazyImport('sage.libs.flint.qsieve_sage', 'qsieve', deprecation=36449) diff --git a/src/sage/libs/flint/qsieve_sage.pyx b/src/sage/libs/flint/qsieve_sage.pyx new file mode 100644 index 00000000000..93c2ce6b7ed --- /dev/null +++ b/src/sage/libs/flint/qsieve_sage.pyx @@ -0,0 +1,66 @@ +""" +Interface to FLINT's ``qsieve_factor()``. This used to interact +with an external "QuadraticSieve" program, but its functionality has +been absorbed into flint. +""" + +from cysignals.signals cimport sig_on, sig_off +from .types cimport fmpz_t, fmpz_factor_t +from .fmpz cimport fmpz_init, fmpz_set_mpz +from .fmpz_factor cimport fmpz_factor_init, fmpz_factor_clear +from .fmpz_factor_sage cimport fmpz_factor_to_pairlist +from .qsieve cimport qsieve_factor +from sage.rings.integer cimport Integer + + +def qsieve(n): + r""" + Factor ``n`` using the quadratic sieve. + + INPUT: + + - ``n`` -- an integer; neither prime nor a perfect power. + + OUTPUT: + + A list of the factors of ``n``. There is no guarantee that the + factors found will be prime, or distinct. + + EXAMPLES:: + + sage: k = 19; n = next_prime(10^k)*next_prime(10^(k+1)) + sage: factor(n) # (currently) uses PARI + 10000000000000000051 * 100000000000000000039 + sage: qsieve(n) + [(10000000000000000051, 1), (100000000000000000039, 1)] + + TESTS: + + The factorization of zero is undefined, to match the behavior of + ``ZZ.zero().factor()``:: + + sage: qsieve(ZZ.zero()) + Traceback (most recent call last): + ... + ArithmeticError: factorization of 0 is not defined + + """ + n = Integer(n) + + if n.is_zero(): + raise ArithmeticError("factorization of 0 is not defined") + + cdef fmpz_t p + fmpz_init(p) + fmpz_set_mpz(p, (n).value) + + cdef fmpz_factor_t factors + fmpz_factor_init(factors) + sig_on() + qsieve_factor(factors, p) + sig_off() + + pairs = fmpz_factor_to_pairlist(factors) + + fmpz_factor_clear(factors) + return pairs diff --git a/src/sage/libs/flint/thread_pool.pxd b/src/sage/libs/flint/thread_pool.pxd index a2cd915de79..137eae2b7a6 100644 --- a/src/sage/libs/flint/thread_pool.pxd +++ b/src/sage/libs/flint/thread_pool.pxd @@ -1,57 +1,23 @@ # distutils: libraries = flint # distutils: depends = flint/thread_pool.h -#***************************************************************************** -# Copyright (C) 2021 Vincent Delecroix -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 2 of the License, or -# (at your option) any later version. -# http://www.gnu.org/licenses/ -#***************************************************************************** - -from sage.libs.flint.types cimport slong - -# flint/thread_pool.h -cdef extern from "flint/thread_pool.h": - ctypedef struct thread_pool_entry_struct: - pass - - ctypedef thread_pool_entry_struct thread_pool_entry_t[1] - - ctypedef struct thread_pool_struct: - pass - - ctypedef thread_pool_struct thread_pool_t[1] - ctypedef int thread_pool_handle - - - extern thread_pool_t global_thread_pool - extern int global_thread_pool_initialized - - void * thread_pool_idle_loop(void * varg) - - void thread_pool_init(thread_pool_t T, slong l) - - int thread_pool_set_affinity(thread_pool_t T, - int * cpus, slong length) - - int thread_pool_restore_affinity(thread_pool_t T) - - slong thread_pool_get_size(thread_pool_t T) - - int thread_pool_set_size(thread_pool_t T, slong new_size) - - slong thread_pool_request(thread_pool_t T, - thread_pool_handle * out, slong requested) - - void thread_pool_wake(thread_pool_t T, thread_pool_handle i, - int max_workers, void (*f)(void*), void * a) - - void thread_pool_wait(thread_pool_t T, thread_pool_handle i) - - void thread_pool_give_back(thread_pool_t T, thread_pool_handle i) - - void thread_pool_clear(thread_pool_t T) - +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ + +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * + +cdef extern from "flint_wrap.h": + void thread_pool_init(thread_pool_t T, slong size) noexcept + slong thread_pool_get_size(thread_pool_t T) noexcept + int thread_pool_set_size(thread_pool_t T, slong new_size) noexcept + slong thread_pool_request(thread_pool_t T, thread_pool_handle * out, slong requested) noexcept + void thread_pool_wake(thread_pool_t T, thread_pool_handle i, int max_workers, void (*f)(void*), void * a) noexcept + void thread_pool_wait(thread_pool_t T, thread_pool_handle i) noexcept + void thread_pool_give_back(thread_pool_t T, thread_pool_handle i) noexcept + void thread_pool_clear(thread_pool_t T) noexcept diff --git a/src/sage/libs/flint/types.pxd b/src/sage/libs/flint/types.pxd index aee66dc9aa2..8d23a1d480d 100644 --- a/src/sage/libs/flint/types.pxd +++ b/src/sage/libs/flint/types.pxd @@ -1,4 +1,4 @@ -# distutils: depends = flint/flint.h flint/fmpz.h flint/fmpz_factor.h flint/fmpz_poly.h flint/fmpz_mat.h flint/fmpq.h flint/fmpq_poly.h flint/fmpq_mat.h flint/fmpz_mod_poly.h flint/nmod_poly.h flint/fq.h flint/fq_nmod.h flint/ulong_extras.h flint/padic.h flint/padic_poly.h flint/qadic.h flint/fmpz_poly_q.h +# distutils: depends = flint/acb.h flint/acb_calc.h flint/acb_dft.h flint/acb_dirichlet.h flint/acb_elliptic.h flint/acb_hypgeom.h flint/acb_mat.h flint/acb_modular.h flint/acb_poly.h flint/acf.h flint/aprcl.h flint/arb.h flint/arb_calc.h flint/arb_fmpz_poly.h flint/arb_fpwrap.h flint/arb_hypgeom.h flint/arb_mat.h flint/arb_poly.h flint/arf.h flint/arith.h flint/bernoulli.h flint/bool_mat.h flint/ca.h flint/ca_ext.h flint/ca_field.h flint/ca_mat.h flint/ca_poly.h flint/ca_vec.h flint/calcium.h flint/d_mat.h flint/d_vec.h flint/dirichlet.h flint/dlog.h flint/double_extras.h flint/double_interval.h flint/fexpr.h flint/fexpr_builtin.h flint/fft.h flint/flint.h flint/fmpq.h flint/fmpq_mat.h flint/fmpq_mpoly.h flint/fmpq_mpoly_factor.h flint/fmpq_poly.h flint/fmpq_vec.h flint/fmpz.h flint/fmpz_extras.h flint/fmpz_factor.h flint/fmpz_lll.h flint/fmpz_mat.h flint/fmpz_mod.h flint/fmpz_mod_mat.h flint/fmpz_mod_mpoly.h flint/fmpz_mod_mpoly_factor.h flint/fmpz_mod_poly.h flint/fmpz_mod_poly_factor.h flint/fmpz_mod_vec.h flint/fmpz_mpoly.h flint/fmpz_mpoly_factor.h flint/fmpz_mpoly_q.h flint/fmpz_poly.h flint/fmpz_poly_factor.h flint/fmpz_poly_mat.h flint/fmpz_poly_q.h flint/fmpz_vec.h flint/fmpzi.h flint/fq.h flint/fq_default.h flint/fq_default_mat.h flint/fq_default_poly.h flint/fq_default_poly_factor.h flint/fq_embed.h flint/fq_mat.h flint/fq_nmod.h flint/fq_nmod_embed.h flint/fq_nmod_mat.h flint/fq_nmod_mpoly.h flint/fq_nmod_mpoly_factor.h flint/fq_nmod_poly.h flint/fq_nmod_poly_factor.h flint/fq_nmod_vec.h flint/fq_poly.h flint/fq_poly_factor.h flint/fq_vec.h flint/fq_zech.h flint/fq_zech_embed.h flint/fq_zech_mat.h flint/fq_zech_poly.h flint/fq_zech_poly_factor.h flint/fq_zech_vec.h flint/gr.h flint/gr_generic.h flint/gr_mat.h flint/gr_mpoly.h flint/gr_poly.h flint/gr_special.h flint/gr_vec.h flint/hypgeom.h flint/long_extras.h flint/mag.h flint/mpf_mat.h flint/mpf_vec.h flint/mpfr_mat.h flint/mpfr_vec.h flint/mpn_extras.h flint/mpoly.h flint/nf.h flint/nf_elem.h flint/nmod.h flint/nmod_mat.h flint/nmod_mpoly.h flint/nmod_mpoly_factor.h flint/nmod_poly.h flint/nmod_poly_factor.h flint/nmod_poly_mat.h flint/nmod_types.h flint/nmod_vec.h flint/padic.h flint/padic_mat.h flint/padic_poly.h flint/partitions.h flint/perm.h flint/profiler.h flint/qadic.h flint/qfb.h flint/qqbar.h flint/qsieve.h flint/thread_pool.h flint/ulong_extras.h """ Declarations for FLINT types @@ -19,20 +19,14 @@ from sage.libs.gmp.types cimport * # Use these typedefs in lieu of flint's ulong and slong macros ctypedef mp_limb_t ulong ctypedef mp_limb_signed_t slong +ctypedef mp_limb_t flint_bitcnt_t -# flint/flint.h: -cdef extern from "flint_wrap.h": - ctypedef void* flint_rand_t - cdef long FLINT_BITS - cdef long FLINT_D_BITS - -# flint/fmpz.h: cdef extern from "flint_wrap.h": + # flint/fmpz.h ctypedef slong fmpz ctypedef fmpz fmpz_t[1] - bint COEFF_IS_MPZ(fmpz) mpz_ptr COEFF_TO_PTR(fmpz) ctypedef struct fmpz_preinvn_struct: @@ -42,215 +36,2037 @@ cdef extern from "flint_wrap.h": ctypedef fmpz_preinvn_struct[1] fmpz_preinvn_t -# flint/fmpz_factor.h: -cdef extern from "flint_wrap.h": - ctypedef struct fmpz_factor_struct: - int sign - fmpz* p - ulong* exp - slong alloc - slong num + ctypedef struct fmpz_comb_struct: + pass - ctypedef fmpz_factor_struct fmpz_factor_t[1] + ctypedef fmpz_comb_struct fmpz_comb_t[1] -# flint/fmpz_mod.h: -cdef extern from "flint_wrap.h": - ctypedef struct fmpz_mod_ctx_struct: + ctypedef struct fmpz_comb_temp_struct: + slong Alen, Tlen + fmpz * A + fmpz * T + + ctypedef fmpz_comb_temp_struct fmpz_comb_temp_t[1] + + ctypedef struct fmpz_multi_CRT_struct: pass - ctypedef fmpz_mod_ctx_struct fmpz_mod_ctx_t[1] + ctypedef fmpz_multi_CRT_struct fmpz_multi_CRT_t[1] - ctypedef struct fmpz_mod_discrete_log_pohlig_hellman_entry_struct: + + # flint/fmpq.h + ctypedef struct fmpq: pass - ctypedef struct fmpz_mod_discrete_log_pohlig_hellman_struct: + + ctypedef fmpq fmpq_t[1] + + + # flint/arith.h + ctypedef struct trig_prod_struct: pass - ctypedef fmpz_mod_discrete_log_pohlig_hellman_struct fmpz_mod_discrete_log_pohlig_hellman_t[1] + ctypedef trig_prod_struct trig_prod_t[1] -# flint/fmpz_poly.h: -cdef extern from "flint_wrap.h": - ctypedef struct fmpz_poly_struct: - fmpz* coeffs - long alloc - long length - ctypedef fmpz_poly_struct fmpz_poly_t[1] + # flint/ulong_extras.pxd + ctypedef struct n_ecm_s: + pass + ctypedef n_ecm_s n_ecm_t[1] -# flint/fmpz_mat.h: -cdef extern from "flint_wrap.h": - ctypedef struct fmpz_mat_struct: + + # flint/arf.h + ctypedef enum arf_rnd_t: + ARF_RND_DOWN + ARF_RND_UP + ARF_RND_FLOOR + ARF_RND_CEIL + ARF_RND_NEAR + long ARF_PREC_EXACT + + + # flint/arf_types.h + ctypedef struct mantissa_noptr_struct: pass - ctypedef fmpz_mat_struct fmpz_mat_t[1] + ctypedef struct mantissa_ptr_struct: + pass -# flint/fmpq.h: -cdef extern from "flint_wrap.h": - ctypedef struct fmpq: + ctypedef union mantissa_struct: + mantissa_noptr_struct noptr + mantissa_ptr_struct ptr + + ctypedef struct arf_struct: pass + ctypedef arf_struct arf_t[1] + ctypedef arf_struct * arf_ptr + ctypedef const arf_struct * arf_srcptr - ctypedef fmpq fmpq_t[1] + ctypedef struct arf_interval_struct: + arf_struct a + arf_struct b + ctypedef arf_interval_struct arf_interval_t[1] + ctypedef arf_interval_struct * arf_interval_ptr + ctypedef const arf_interval_struct * arf_interval_srcptr -# flint/fmpq_poly.h: -cdef extern from "flint_wrap.h": - ctypedef struct fmpq_poly_struct: + + # flint/arb_types.h + ctypedef struct mag_struct: pass + ctypedef mag_struct mag_t[1] + ctypedef mag_struct * mag_ptr + ctypedef const mag_struct * mag_srcptr - ctypedef fmpq_poly_struct fmpq_poly_t[1] + ctypedef struct arb_struct: + pass + ctypedef arb_struct arb_t[1] + ctypedef arb_struct * arb_ptr + ctypedef const arb_struct * arb_srcptr -# flint/fmpq_mat.h: -cdef extern from "flint_wrap.h": - ctypedef struct fmpq_mat_struct: + 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: pass + ctypedef arb_poly_struct[1] arb_poly_t + ctypedef arb_poly_struct * arb_poly_ptr + ctypedef const arb_poly_struct * arb_poly_srcptr - ctypedef fmpq_mat_struct fmpq_mat_t[1] -# flint/fmpz_poly_mat.h: -cdef extern from "flint_wrap.h": - ctypedef struct fmpz_poly_mat_struct: + # flint/arb_calc.h + ctypedef int (*arb_calc_func_t)(arb_ptr out, const arb_t inp, + void * param, slong order, slong prec) + + + # flint/acb.h + ctypedef struct acb_struct: pass + ctypedef acb_struct[1] acb_t + ctypedef acb_struct * acb_ptr + ctypedef const acb_struct * acb_srcptr - ctypedef fmpz_poly_mat_struct fmpz_poly_mat_t[1] -# flint/fmpz_mod_poly.h: -cdef extern from "flint_wrap.h": - ctypedef struct fmpz_mod_poly_struct: + # flint/acb_mat.h + ctypedef struct acb_mat_struct: pass - ctypedef fmpz_mod_poly_struct fmpz_mod_poly_t[1] + ctypedef acb_mat_struct[1] acb_mat_t - ctypedef struct fmpz_mod_poly_res_struct: + + # flint/acb_modular.h + ctypedef struct psl2z_struct: + fmpz a + fmpz b + fmpz c + fmpz d + ctypedef psl2z_struct psl2z_t[1] + + + # flint/acb_poly.h + ctypedef struct acb_poly_struct: pass - ctypedef fmpz_mod_poly_res_struct fmpz_mod_poly_res_t[1] + ctypedef acb_poly_struct[1] acb_poly_t + ctypedef acb_poly_struct * acb_poly_ptr + ctypedef const acb_poly_struct * acb_poly_srcptr - ctypedef struct fmpz_mod_poly_frobenius_powers_2exp_struct: + # flint/acb_calc.h + ctypedef struct acb_calc_integrate_opt_struct: + long deg_limit + long eval_limit + long depth_limit + bint use_heap + int verbose + ctypedef acb_calc_integrate_opt_struct acb_calc_integrate_opt_t[1] + ctypedef int (*acb_calc_func_t)(acb_ptr out, + const acb_t inp, void * param, long order, long prec) + + + # flint/acb_dft.h + ctypedef struct crt_struct: pass - ctypedef fmpz_mod_poly_frobenius_powers_2exp_struct fmpz_mod_poly_frobenius_powers_2exp_t[1] + ctypedef crt_struct crt_t[1] - ctypedef struct fmpz_mod_poly_frobenius_powers_struct: + ctypedef struct acb_dft_step_struct: pass - ctypedef fmpz_mod_poly_frobenius_powers_struct fmpz_mod_poly_frobenius_powers_t[1] + ctypedef acb_dft_step_struct * acb_dft_step_ptr - ctypedef struct fmpz_mod_poly_matrix_precompute_arg_t: + ctypedef struct acb_dft_cyc_struct: pass + ctypedef acb_dft_cyc_struct acb_dft_cyc_t[1] - ctypedef struct fmpz_mod_poly_compose_mod_precomp_preinv_arg_t: + ctypedef struct acb_dft_rad2_struct: pass + ctypedef acb_dft_rad2_struct acb_dft_rad2_t[1] - ctypedef struct fmpz_mod_poly_radix_struct: + ctypedef struct acb_dft_bluestein_struct: pass - ctypedef fmpz_mod_poly_radix_struct fmpz_mod_poly_radix_t[1] + ctypedef acb_dft_bluestein_struct acb_dft_bluestein_t[1] - ctypedef struct fmpz_mod_berlekamp_massey_struct: + ctypedef struct acb_dft_prod_struct: pass - ctypedef fmpz_mod_berlekamp_massey_struct fmpz_mod_berlekamp_massey_t[1] + ctypedef acb_dft_prod_struct acb_dft_prod_t[1] -# flint/nmod_poly.h: -cdef extern from "flint_wrap.h": - ctypedef struct nmod_t: - mp_limb_t n - mp_limb_t ninv - mp_bitcnt_t norm + ctypedef struct acb_dft_crt_struct: + pass + ctypedef acb_dft_crt_struct acb_dft_crt_t[1] - ctypedef struct nmod_poly_struct: - mp_limb_t *coeffs - long alloc - long length - nmod_t mod + ctypedef struct acb_dft_naive_struct: + pass + ctypedef acb_dft_naive_struct acb_dft_naive_t[1] - ctypedef nmod_poly_struct nmod_poly_t[1] + ctypedef struct acb_dft_pre_struct: + pass + ctypedef acb_dft_pre_struct acb_dft_pre_t[1] - ctypedef struct nmod_poly_factor_struct: - nmod_poly_t p - long *exp - long num - long alloc - ctypedef nmod_poly_factor_struct nmod_poly_factor_t[1] + # flint/acb_dirichlet.h + ctypedef struct acb_dirichlet_hurwitz_precomp_struct: + pass + ctypedef acb_dirichlet_hurwitz_precomp_struct acb_dirichlet_hurwitz_precomp_t[1] -# flint/fq.h: -cdef extern from "flint_wrap.h": - ctypedef struct fq_ctx_struct: - fmpz_mod_poly_t modulus + ctypedef struct acb_dirichlet_roots_struct: + pass + ctypedef acb_dirichlet_roots_struct acb_dirichlet_roots_t[1] - ctypedef fq_ctx_struct fq_ctx_t[1] + ctypedef struct acb_dirichlet_platt_c_precomp_struct: + pass + ctypedef acb_dirichlet_platt_c_precomp_struct acb_dirichlet_platt_c_precomp_t[1] - ctypedef fmpz_poly_struct fq_struct - ctypedef fmpz_poly_t fq_t + ctypedef struct acb_dirichlet_platt_i_precomp_struct: + pass + ctypedef acb_dirichlet_platt_i_precomp_struct acb_dirichlet_platt_i_precomp_t[1] -# flint/fq_nmod.h: -cdef extern from "flint_wrap.h": - ctypedef struct fq_nmod_ctx_struct: - nmod_poly_t modulus + ctypedef struct acb_dirichlet_platt_ws_precomp_struct: + pass + ctypedef acb_dirichlet_platt_ws_precomp_struct acb_dirichlet_platt_ws_precomp_t[1] - ctypedef fq_nmod_ctx_struct fq_nmod_ctx_t[1] - ctypedef nmod_poly_struct fq_nmod_struct - ctypedef nmod_poly_t fq_nmod_t + # flint/acb_theta.h + cdef struct acb_theta_eld_struct: + pass + ctypedef acb_theta_eld_struct acb_theta_eld_t[1] -# flint/ulong_extras.h: -cdef extern from "flint_wrap.h": + ctypedef void (*acb_theta_naive_worker_t)(acb_ptr, acb_srcptr, acb_srcptr, const slong *, + slong, const acb_t, const slong *, slong, slong, slong, slong) + ctypedef int (*acb_theta_ql_worker_t)(acb_ptr, acb_srcptr, acb_srcptr, + arb_srcptr, arb_srcptr, const acb_mat_t, slong, slong) + + # flint/d_mat.h + ctypedef struct d_mat_struct: + double * entries + slong r + slong c + double ** rows + + ctypedef d_mat_struct d_mat_t[1] + + + # flint/flint.h + ctypedef struct flint_rand_s: + pass + ctypedef flint_rand_s flint_rand_t[1] + + cdef long FLINT_BITS + cdef long FLINT_D_BITS + + + # flint/limb_types.h ctypedef struct n_factor_t: int num unsigned long exp[15] unsigned long p[15] -# flint/padic.h: -cdef extern from "flint_wrap.h": - ctypedef struct padic_struct: - fmpz u - long v + ctypedef struct n_primes_struct: + pass - ctypedef padic_struct padic_t[1] + ctypedef n_primes_struct n_primes_t[1] - cdef enum padic_print_mode: - PADIC_TERSE - PADIC_SERIES - PADIC_VAL_UNIT + long FLINT_MAX_FACTORS_IN_LIMB - ctypedef struct padic_ctx_struct: - fmpz_t p - long N - double pinv - fmpz* pow - long min - long max - ctypedef padic_ctx_struct padic_ctx_t[1] + # flint/fmpz_factor.h + ctypedef struct ecm_s: + pass - ctypedef struct padic_inv_struct: - long n - fmpz *pow - fmpz *u + ctypedef ecm_s ecm_t[1] - ctypedef padic_inv_struct padic_inv_t[1] -# flint/padic_poly.h: -cdef extern from "flint_wrap.h": - ctypedef struct padic_poly_struct: - fmpz *coeffs + # flint/fmpz_mod.h + ctypedef struct fmpz_mod_discrete_log_pohlig_hellman_entry_struct: + pass + + ctypedef struct fmpz_mod_discrete_log_pohlig_hellman_struct: + pass + + ctypedef fmpz_mod_discrete_log_pohlig_hellman_struct fmpz_mod_discrete_log_pohlig_hellman_t[1] + + + # flint/nmod_poly.h + ctypedef struct nmod_t: + mp_limb_t n + mp_limb_t ninv + mp_bitcnt_t norm + + ctypedef struct nmod_poly_multi_crt_struct: + pass + + ctypedef nmod_poly_multi_crt_struct nmod_poly_multi_crt_t[1] + + ctypedef struct nmod_berlekamp_massey_struct: + pass + + ctypedef nmod_berlekamp_massey_struct nmod_berlekamp_massey_t[1] + + + # flint/fmpz_types.h + ctypedef struct fmpz_factor_struct: + int sign + fmpz* p + ulong* exp + slong alloc + slong num + + ctypedef fmpz_factor_struct fmpz_factor_t[1] + + ctypedef struct fmpz_poly_struct: + fmpz* coeffs long alloc long length - long val - long N - ctypedef padic_poly_struct padic_poly_t[1] + ctypedef fmpz_poly_struct fmpz_poly_t[1] -# flint/qadic.h: -cdef extern from "flint_wrap.h": - ctypedef struct qadic_ctx_struct: - padic_ctx_struct pctx - fmpz *a - long *j - long len - char *var + ctypedef struct fmpz_poly_factor_struct: + pass - ctypedef qadic_ctx_struct qadic_ctx_t[1] + ctypedef fmpz_poly_factor_struct fmpz_poly_factor_t[1] - ctypedef padic_poly_struct qadic_struct - ctypedef padic_poly_t qadic_t + ctypedef struct fmpz_mat_struct: + pass + + ctypedef fmpz_mat_struct fmpz_mat_t[1] + + ctypedef struct fmpz_poly_mat_struct: + pass + + ctypedef fmpz_poly_mat_struct fmpz_poly_mat_t[1] + + ctypedef struct fmpz_mpoly_struct: + pass + + ctypedef fmpz_mpoly_struct fmpz_mpoly_t[1] + + ctypedef struct fmpz_mpoly_factor_struct: + pass + + ctypedef fmpz_mpoly_factor_struct fmpz_mpoly_factor_t[1] -# flint/fmpz_poly_q.h: -cdef extern from "flint_wrap.h": ctypedef struct fmpz_poly_q_struct: fmpz_poly_struct *num fmpz_poly_struct *den ctypedef fmpz_poly_q_struct fmpz_poly_q_t[1] + + ctypedef struct fmpz_mpoly_q_struct: + pass + + ctypedef fmpz_mpoly_q_struct fmpz_mpoly_q_t[1] + + ctypedef struct fmpzi_struct: + fmpz a + fmpz b + + ctypedef fmpzi_struct fmpzi_t[1] + + + # flint/fmpq_types.h + ctypedef struct fmpq_mat_struct: + pass + ctypedef fmpq_mat_struct fmpq_mat_t[1] + + ctypedef struct fmpq_poly_struct: + pass + ctypedef fmpq_poly_struct fmpq_poly_t[1] + + ctypedef struct fmpq_mpoly_struct: + pass + ctypedef fmpq_mpoly_struct fmpq_mpoly_t[1] + + ctypedef struct fmpq_mpoly_factor_struct: + pass + ctypedef fmpq_mpoly_factor_struct fmpq_mpoly_factor_t[1] + + + # flint/nmod_types.h + ctypedef struct nmod_mat_struct: + mp_limb_t * entries + slong r + slong c + mp_limb_t ** rows + nmod_t mod + + ctypedef nmod_mat_struct nmod_mat_t[1] + + ctypedef struct nmod_poly_struct: + mp_ptr coeffs + slong alloc + slong length + nmod_t mod + + ctypedef nmod_poly_struct nmod_poly_t[1] + + ctypedef struct nmod_poly_factor_struct: + nmod_poly_struct * p + slong *exp + slong num + slong alloc + + ctypedef nmod_poly_factor_struct nmod_poly_factor_t[1] + + ctypedef struct nmod_poly_mat_struct: + nmod_poly_struct * entries + slong r + slong c + nmod_poly_struct ** rows + mp_limb_t modulus + + ctypedef nmod_poly_mat_struct nmod_poly_mat_t[1] + + ctypedef struct nmod_mpoly_struct: + mp_limb_t * coeffs + ulong * exps + slong length + flint_bitcnt_t bits + slong coeffs_alloc + slong exps_alloc + + ctypedef nmod_mpoly_struct nmod_mpoly_t[1] + + ctypedef struct nmod_mpoly_factor_struct: + mp_limb_t constant + nmod_mpoly_struct * poly + fmpz * exp + slong num + slong alloc + + ctypedef nmod_mpoly_factor_struct nmod_mpoly_factor_t[1] + + + # flint/nmod_mpoly.h + ctypedef struct nmod_mpoly_univar_struct: + pass + ctypedef nmod_mpoly_univar_struct nmod_mpoly_univar_t[1] + + ctypedef struct nmod_mpolyu_struct: + pass + ctypedef nmod_mpolyu_struct nmod_mpolyu_t[1] + + ctypedef struct nmod_mpolyn_struct: + pass + ctypedef nmod_mpolyn_struct nmod_mpolyn_t[1] + + ctypedef struct nmod_mpolyun_struct: + pass + ctypedef nmod_mpolyun_struct nmod_mpolyun_t[1] + + ctypedef struct nmod_mpolyd_struct: + pass + ctypedef nmod_mpolyd_struct nmod_mpolyd_t[1] + + ctypedef struct nmod_poly_stack_struct: + pass + ctypedef nmod_poly_stack_struct nmod_poly_stack_t[1] + + + # flint/fq_nmod_types.h + ctypedef nmod_poly_t fq_nmod_t + ctypedef nmod_poly_struct fq_nmod_struct + + ctypedef struct fq_nmod_ctx_struct: + pass + ctypedef fq_nmod_ctx_struct fq_nmod_ctx_t[1] + + ctypedef struct fq_nmod_mat_struct: + pass + ctypedef fq_nmod_mat_struct fq_nmod_mat_t[1] + + ctypedef struct fq_nmod_poly_struct: + pass + ctypedef fq_nmod_poly_struct fq_nmod_poly_t[1] + + ctypedef struct fq_nmod_poly_factor_struct: + pass + ctypedef fq_nmod_poly_factor_struct fq_nmod_poly_factor_t[1] + + + # flint2/fq_nmod_mpoly.h + ctypedef struct fq_nmod_mpoly_ctx_struct: + pass + ctypedef fq_nmod_mpoly_ctx_struct fq_nmod_mpoly_ctx_t[1] + + ctypedef struct fq_nmod_mpoly_struct: + pass + ctypedef fq_nmod_mpoly_struct fq_nmod_mpoly_t[1] + + ctypedef struct fq_nmod_mpoly_univar_struct: + pass + ctypedef fq_nmod_mpoly_univar_struct fq_nmod_mpoly_univar_t[1] + + ctypedef struct fq_nmod_mpolyu_struct: + pass + ctypedef fq_nmod_mpolyu_struct fq_nmod_mpolyu_t[1] + + ctypedef struct fq_nmod_mpolyn_struct: + pass + ctypedef fq_nmod_mpolyn_struct fq_nmod_mpolyn_t[1] + + ctypedef struct fq_nmod_mpolyun_struct: + pass + ctypedef fq_nmod_mpolyun_struct fq_nmod_mpolyun_t[1] + + ctypedef struct bad_fq_nmod_embed_struct: + pass + ctypedef bad_fq_nmod_embed_struct bad_fq_nmod_embed_t[1] + + + # flint2/fq_nmod_mpoly_factor.h + ctypedef struct fq_nmod_mpoly_factor_struct: + pass + ctypedef fq_nmod_mpoly_factor_struct fq_nmod_mpoly_factor_t[1] + + ctypedef struct fq_nmod_mpolyv_struct: + pass + ctypedef fq_nmod_mpolyv_struct fq_nmod_mpolyv_t[1] + + ctypedef struct fq_nmod_mpoly_pfrac_struct: + pass + ctypedef fq_nmod_mpoly_pfrac_struct fq_nmod_mpoly_pfrac_t[1] + + + # flint/fmpz_poly.h + ctypedef struct fmpz_poly_powers_precomp_struct: + fmpz ** powers + slong len + + ctypedef fmpz_poly_powers_precomp_struct fmpz_poly_powers_precomp_t[1] + + ctypedef struct fmpz_poly_mul_precache_struct: + mp_limb_t ** jj + slong n + slong len2 + slong loglen + slong bits2 + slong limbs + fmpz_poly_t poly2 + + ctypedef fmpz_poly_mul_precache_struct fmpz_poly_mul_precache_t[1] + + + # flint/fmpz_mod_types.h + ctypedef struct fmpz_mod_ctx_struct: + pass + + ctypedef fmpz_mod_ctx_struct fmpz_mod_ctx_t[1] + + ctypedef struct fmpz_mod_mat_struct: + fmpz_mat_t mat + fmpz_t mod + + ctypedef fmpz_mod_mat_struct fmpz_mod_mat_t[1] + + ctypedef struct fmpz_mod_poly_struct: + fmpz * coeffs + slong alloc + slong length + + ctypedef fmpz_mod_poly_struct fmpz_mod_poly_t[1] + + ctypedef struct fmpz_mod_poly_factor_struct: + fmpz_mod_poly_struct * poly + slong *exp + slong num + slong alloc + + ctypedef fmpz_mod_poly_factor_struct fmpz_mod_poly_factor_t[1] + + ctypedef struct fmpz_mod_mpoly_struct: + fmpz * coeffs + ulong * exps + slong length + flint_bitcnt_t bits + slong coeffs_alloc + slong exps_alloc + + ctypedef fmpz_mod_mpoly_struct fmpz_mod_mpoly_t[1] + + ctypedef struct fmpz_mod_mpoly_factor_struct: + fmpz_t constant + fmpz_mod_mpoly_struct * poly + fmpz * exp + slong num + slong alloc + + ctypedef fmpz_mod_mpoly_factor_struct fmpz_mod_mpoly_factor_t[1] + + + # flint/fmpq_poly.h + ctypedef struct fmpq_poly_powers_precomp_struct: + fmpq_poly_struct * powers + slong len + + ctypedef fmpq_poly_powers_precomp_struct fmpq_poly_powers_precomp_t[1] + + + # flint/fmpz_mod_poly.h: + ctypedef struct fmpz_mod_poly_res_struct: + pass + + ctypedef fmpz_mod_poly_res_struct fmpz_mod_poly_res_t[1] + + ctypedef struct fmpz_mod_poly_frobenius_powers_2exp_struct: + pass + + ctypedef fmpz_mod_poly_frobenius_powers_2exp_struct fmpz_mod_poly_frobenius_powers_2exp_t[1] + + ctypedef struct fmpz_mod_poly_frobenius_powers_struct: + pass + + ctypedef fmpz_mod_poly_frobenius_powers_struct fmpz_mod_poly_frobenius_powers_t[1] + + ctypedef struct fmpz_mod_poly_matrix_precompute_arg_t: + pass + + ctypedef struct fmpz_mod_poly_compose_mod_precomp_preinv_arg_t: + pass + + ctypedef struct fmpz_mod_poly_radix_struct: + pass + + ctypedef fmpz_mod_poly_radix_struct fmpz_mod_poly_radix_t[1] + + ctypedef struct fmpz_mod_berlekamp_massey_struct: + pass + + ctypedef fmpz_mod_berlekamp_massey_struct fmpz_mod_berlekamp_massey_t[1] + + + # flint/nmod.h + ctypedef struct nmod_discrete_log_pohlig_hellman_table_entry_struct: + pass + + ctypedef struct nmod_discrete_log_pohlig_hellman_entry_struct: + pass + + ctypedef struct nmod_discrete_log_pohlig_hellman_struct: + pass + ctypedef nmod_discrete_log_pohlig_hellman_struct nmod_discrete_log_pohlig_hellman_t[1] + + + # flint/fq_types.h + ctypedef fmpz_poly_t fq_t + ctypedef fmpz_poly_struct fq_struct + + ctypedef struct fq_ctx_struct: + pass + + ctypedef fq_ctx_struct fq_ctx_t[1] + + ctypedef struct fq_mat_struct: + pass + ctypedef fq_mat_struct fq_mat_t[1] + + ctypedef struct fq_poly_struct: + pass + ctypedef fq_poly_struct fq_poly_t[1] + + ctypedef struct fq_poly_factor_struct: + pass + ctypedef fq_poly_factor_struct fq_poly_factor_t[1] + + + # flint/fq_zech_types.h + ctypedef struct fq_zech_struct: + pass + ctypedef fq_zech_struct fq_zech_t[1] + + ctypedef struct fq_zech_ctx_struct: + pass + ctypedef fq_zech_ctx_struct fq_zech_ctx_t[1] + + ctypedef struct fq_zech_mat_struct: + pass + ctypedef fq_zech_mat_struct fq_zech_mat_t[1] + + ctypedef struct fq_zech_poly_struct: + pass + ctypedef fq_zech_poly_struct fq_zech_poly_t[1] + + ctypedef struct fq_zech_poly_factor_struct: + pass + ctypedef fq_zech_poly_factor_struct fq_zech_poly_factor_t[1] + + + # flint/padic.h + ctypedef struct padic_struct: + fmpz u + long v + + ctypedef padic_struct padic_t[1] + + cdef enum padic_print_mode: + PADIC_TERSE + PADIC_SERIES + PADIC_VAL_UNIT + + ctypedef struct padic_ctx_struct: + fmpz_t p + long N + double pinv + fmpz* pow + long min + long max + + ctypedef padic_ctx_struct padic_ctx_t[1] + + ctypedef struct padic_inv_struct: + long n + fmpz *pow + fmpz *u + + ctypedef padic_inv_struct padic_inv_t[1] + + + # flint/fmpz_mod_mpoly.h + ctypedef struct fmpz_mod_mpoly_univar_struct: + pass + ctypedef fmpz_mod_mpoly_univar_struct fmpz_mod_mpoly_univar_t[1] + + + # flint/padic_poly.h + ctypedef struct padic_poly_struct: + fmpz *coeffs + long alloc + long length + long val + long N + + ctypedef padic_poly_struct padic_poly_t[1] + + + # flint/padic_mat.h + ctypedef struct padic_mat_struct: + pass + ctypedef padic_mat_struct padic_mat_t[1] + + + # flint/qadic.h + ctypedef struct qadic_ctx_struct: + padic_ctx_struct pctx + fmpz *a + long *j + long len + char *var + + ctypedef qadic_ctx_struct qadic_ctx_t[1] + + ctypedef padic_poly_struct qadic_struct + ctypedef padic_poly_t qadic_t + + + # flint/qsieve.h + ctypedef struct prime_t: + pass + + ctypedef struct fac_t: + pass + + ctypedef struct la_col_t: + pass + + ctypedef struct hash_t: + pass + + ctypedef struct relation_t: + pass + + ctypedef struct qs_poly_s: + pass + ctypedef qs_poly_s qs_poly_t[1] + + ctypedef struct qs_s: + pass + ctypedef qs_s qs_t[1] + + + # flint/thread_pool.h + ctypedef struct thread_pool_entry_struct: + pass + + ctypedef thread_pool_entry_struct thread_pool_entry_t[1] + + ctypedef struct thread_pool_struct: + pass + + ctypedef thread_pool_struct thread_pool_t[1] + ctypedef int thread_pool_handle + + + # flint/bernoulli.h + ctypedef struct bernoulli_rev_struct: + pass + ctypedef bernoulli_rev_struct bernoulli_rev_t[1] + + + # flint/mpoly_types.h + ctypedef enum ordering_t: + ORD_LEX + ORD_DEGLEX + ORD_DEGREVLEX + + ctypedef struct mpoly_ctx_struct: + pass + ctypedef mpoly_ctx_struct mpoly_ctx_t[1] + + ctypedef struct nmod_mpoly_ctx_struct: + pass + ctypedef nmod_mpoly_ctx_struct nmod_mpoly_ctx_t[1] + + ctypedef struct fmpz_mpoly_ctx_struct: + pass + ctypedef fmpz_mpoly_ctx_struct fmpz_mpoly_ctx_t[1] + + ctypedef struct fmpq_mpoly_ctx_struct: + pass + + ctypedef fmpq_mpoly_ctx_struct fmpq_mpoly_ctx_t[1] + + ctypedef struct fmpz_mod_mpoly_ctx_struct: + pass + ctypedef fmpz_mod_mpoly_ctx_struct fmpz_mod_mpoly_ctx_t[1] + + + # flint/mpoly.h + ctypedef struct mpoly_heap_t: + pass + + ctypedef struct mpoly_nheap_t: + pass + + ctypedef struct mpoly_heap1_s: + pass + + ctypedef struct mpoly_heap_s: + pass + + ctypedef struct mpoly_rbnode_ui_struct: + pass + + ctypedef struct mpoly_rbtree_ui_struct: + pass + + ctypedef mpoly_rbtree_ui_struct mpoly_rbtree_ui_t[1] + + ctypedef struct mpoly_rbnode_fmpz_struct: + pass + + ctypedef struct mpoly_rbtree_fmpz_struct: + pass + ctypedef mpoly_rbtree_fmpz_struct mpoly_rbtree_fmpz_t[1] + + ctypedef struct mpoly_gcd_info_struct: + pass + ctypedef mpoly_gcd_info_struct mpoly_gcd_info_t[1] + + ctypedef struct mpoly_compression_struct: + pass + ctypedef mpoly_compression_struct mpoly_compression_t[1] + + ctypedef struct mpoly_univar_struct: + pass + ctypedef mpoly_univar_struct mpoly_univar_t[1] + + ctypedef struct mpoly_void_ring_struct: + pass + ctypedef mpoly_void_ring_struct mpoly_void_ring_t[1] + + ctypedef struct string_with_length_struct: + pass + + ctypedef struct mpoly_parse_struct: + pass + ctypedef mpoly_parse_struct mpoly_parse_t[1] + + + # flint/fmpz_mpoly.h + ctypedef struct fmpz_mpoly_univar_struct: + pass + ctypedef fmpz_mpoly_univar_struct fmpz_mpoly_univar_t[1] + + ctypedef struct fmpz_mpolyd_struct: + pass + ctypedef fmpz_mpolyd_struct fmpz_mpolyd_t[1] + + ctypedef struct fmpz_mpoly_vec_struct: + pass + ctypedef fmpz_mpoly_vec_struct fmpz_mpoly_vec_t[1] + + ctypedef struct fmpz_mpolyd_ctx_struct: + pass + ctypedef fmpz_mpolyd_ctx_struct fmpz_mpolyd_ctx_t[1] + + ctypedef struct fmpz_pow_cache_struct: + pass + ctypedef fmpz_pow_cache_struct fmpz_pow_cache_t[1] + + ctypedef struct fmpz_mpoly_geobucket_struct: + pass + ctypedef fmpz_mpoly_geobucket_struct fmpz_mpoly_geobucket_t[1] + + + # flint/fmpq_mpoly.h + ctypedef struct fmpq_mpoly_univar_struct: + pass + ctypedef fmpq_mpoly_univar_struct fmpq_mpoly_univar_t[1] + + + # flint/fft_small.h + ctypedef struct mpn_ctx_struct: + pass + ctypedef mpn_ctx_struct mpn_ctx_t[1] + + ctypedef struct mul_precomp_struct: + pass + + ctypedef struct nmod_poly_divrem_precomp_struct: + pass + + + # flint/nf.h + ctypedef struct nf_struct: + pass + ctypedef nf_struct nf_t[1] + + + # flint/nf_elem.h + ctypedef struct lnf_elem_struct: + pass + ctypedef lnf_elem_struct lnf_elem_t[1] + + ctypedef struct qnf_elem_struct: + pass + ctypedef qnf_elem_struct qnf_elem_t[1] + + ctypedef union nf_elem_struct: + fmpq_poly_t elem + lnf_elem_t lelem + qnf_elem_t qelem + ctypedef nf_elem_struct nf_elem_t[1] + + + # flint/machine_vectors.h + ctypedef struct vec1n: + pass + ctypedef struct vec2n: + pass + ctypedef struct vec4n: + pass + ctypedef struct vec8n: + pass + + ctypedef struct vec1d: + pass + ctypedef struct vec2d: + pass + ctypedef struct vec4d: + pass + ctypedef struct vec8d: + pass + + + # flint/calcium.h + ctypedef struct calcium_stream_struct: + pass + ctypedef calcium_stream_struct calcium_stream_t[1] + + + ctypedef enum truth_t: + T_TRUE + T_FALSE + T_UNKNOWN + + ctypedef enum calcium_func_code: + CA_QQBar + CA_Neg + CA_Add + CA_Sub + CA_Mul + CA_Div + CA_Sqrt + CA_Cbrt + CA_Root + CA_Floor + CA_Ceil + CA_Abs + CA_Sign + CA_Re + CA_Im + CA_Arg + CA_Conjugate + CA_Pi + CA_Sin + CA_Cos + CA_Exp + CA_Log + CA_Pow + CA_Tan + CA_Cot + CA_Cosh + CA_Sinh + CA_Tanh + CA_Coth + CA_Atan + CA_Acos + CA_Asin + CA_Acot + CA_Atanh + CA_Acosh + CA_Asinh + CA_Acoth + CA_Euler + CA_Gamma + CA_LogGamma + CA_Psi + CA_Erf + CA_Erfc + CA_Erfi + CA_RiemannZeta + CA_HurwitzZeta + CA_FUNC_CODE_LENGTH + + + # flint/ca.h + ctypedef union ca_elem_struct: + fmpq q + nf_elem_struct nf + fmpz_mpoly_q_struct * mpoly_q + + ctypedef struct ca_struct: + ulong field + ca_elem_struct elem + + ctypedef ca_struct ca_t[1] + ctypedef ca_struct * ca_ptr + ctypedef const ca_struct * ca_srcptr + + ctypedef struct ca_ext_qqbar: + pass + + ctypedef struct ca_ext_func_data: + pass + + ctypedef struct ca_ext_struct: + pass + + ctypedef ca_ext_struct ca_ext_t[1] + ctypedef ca_ext_struct * ca_ext_ptr + ctypedef const ca_ext_struct * ca_ext_srcptr + + ctypedef struct ca_ext_cache_struct: + pass + + ctypedef ca_ext_cache_struct ca_ext_cache_t[1] + + ctypedef struct ca_field_struct: + pass + + ctypedef ca_field_struct ca_field_t[1] + ctypedef ca_field_struct * ca_field_ptr + ctypedef const ca_field_struct * ca_field_srcptr + + ctypedef struct ca_field_cache_struct: + pass + + ctypedef ca_field_cache_struct ca_field_cache_t[1] + + cdef enum: + CA_OPT_VERBOSE + CA_OPT_PRINT_FLAGS + CA_OPT_MPOLY_ORD + CA_OPT_PREC_LIMIT + CA_OPT_QQBAR_DEG_LIMIT + CA_OPT_LOW_PREC + CA_OPT_SMOOTH_LIMIT + CA_OPT_LLL_PREC + CA_OPT_POW_LIMIT + CA_OPT_USE_GROEBNER + CA_OPT_GROEBNER_LENGTH_LIMIT + CA_OPT_GROEBNER_POLY_LENGTH_LIMIT + CA_OPT_GROEBNER_POLY_BITS_LIMIT + CA_OPT_VIETA_LIMIT + CA_OPT_TRIG_FORM + CA_OPT_NUM_OPTIONS + + ctypedef struct ca_ctx_struct: + pass + + ctypedef ca_ctx_struct ca_ctx_t[1] + + ctypedef struct ca_factor_struct: + pass + ctypedef ca_factor_struct ca_factor_t[1] + + + # flint/ca_poly.h + ctypedef struct ca_poly_struct: + pass + ctypedef ca_poly_struct ca_poly_t[1] + + ctypedef struct ca_poly_vec_struct: + pass + ctypedef ca_poly_vec_struct ca_poly_vec_t[1] + + + # flint/ca_vec.h + ctypedef struct ca_vec_struct: + pass + ctypedef ca_vec_struct ca_vec_t[1] + + + # flint/ca_mat.h + ctypedef struct ca_mat_struct: + pass + ctypedef ca_mat_struct ca_mat_t[1] + + + # flint/mpf_vec.h + ctypedef __mpf_struct mpf + + + # flint/mpf_mat.h + ctypedef struct mpf_mat_struct: + pass + ctypedef mpf_mat_struct mpf_mat_t[1] + + + # flint/mpfr_mat.h + ctypedef struct mpfr_mat_struct: + pass + ctypedef mpfr_mat_struct mpfr_mat_t[1] + + + # flint/gr.h + ctypedef int (*gr_funcptr)() + + ctypedef struct gr_stream_struct: + pass + ctypedef gr_stream_struct gr_stream_t[1] + + ctypedef void * gr_ptr + ctypedef const void * gr_srcptr + ctypedef void * gr_ctx_ptr + + ctypedef struct gr_vec_struct: + pass + ctypedef gr_vec_struct gr_vec_t[1] + + ctypedef enum gr_method: + GR_METHOD_CTX_WRITE + GR_METHOD_CTX_CLEAR + GR_METHOD_CTX_IS_RING + GR_METHOD_CTX_IS_COMMUTATIVE_RING + GR_METHOD_CTX_IS_INTEGRAL_DOMAIN + GR_METHOD_CTX_IS_FIELD + GR_METHOD_CTX_IS_UNIQUE_FACTORIZATION_DOMAIN + GR_METHOD_CTX_IS_FINITE + GR_METHOD_CTX_IS_FINITE_CHARACTERISTIC + GR_METHOD_CTX_IS_ALGEBRAICALLY_CLOSED + GR_METHOD_CTX_IS_ORDERED_RING + GR_METHOD_CTX_IS_MULTIPLICATIVE_GROUP + GR_METHOD_CTX_IS_EXACT + GR_METHOD_CTX_IS_CANONICAL + GR_METHOD_CTX_IS_THREADSAFE + GR_METHOD_CTX_HAS_REAL_PREC + GR_METHOD_CTX_SET_REAL_PREC + GR_METHOD_CTX_GET_REAL_PREC + GR_METHOD_CTX_SET_GEN_NAME + GR_METHOD_CTX_SET_GEN_NAMES + GR_METHOD_INIT + GR_METHOD_CLEAR + GR_METHOD_SWAP + GR_METHOD_SET_SHALLOW + GR_METHOD_WRITE + GR_METHOD_WRITE_N + GR_METHOD_RANDTEST + GR_METHOD_RANDTEST_NOT_ZERO + GR_METHOD_RANDTEST_SMALL + GR_METHOD_ZERO + GR_METHOD_ONE + GR_METHOD_NEG_ONE + GR_METHOD_IS_ZERO + GR_METHOD_IS_ONE + GR_METHOD_IS_NEG_ONE + GR_METHOD_EQUAL + GR_METHOD_SET + GR_METHOD_SET_UI + GR_METHOD_SET_SI + GR_METHOD_SET_FMPZ + GR_METHOD_SET_FMPQ + GR_METHOD_SET_D + GR_METHOD_SET_OTHER + GR_METHOD_SET_STR + GR_METHOD_GET_SI + GR_METHOD_GET_UI + GR_METHOD_GET_FMPZ + GR_METHOD_GET_FMPQ + GR_METHOD_GET_D + GR_METHOD_GET_FEXPR + GR_METHOD_GET_FEXPR_SERIALIZE + GR_METHOD_SET_FEXPR + GR_METHOD_NEG + GR_METHOD_ADD + GR_METHOD_ADD_UI + GR_METHOD_ADD_SI + GR_METHOD_ADD_FMPZ + GR_METHOD_ADD_FMPQ + GR_METHOD_ADD_OTHER + GR_METHOD_OTHER_ADD + GR_METHOD_SUB + GR_METHOD_SUB_UI + GR_METHOD_SUB_SI + GR_METHOD_SUB_FMPZ + GR_METHOD_SUB_FMPQ + GR_METHOD_SUB_OTHER + GR_METHOD_OTHER_SUB + GR_METHOD_MUL + GR_METHOD_MUL_UI + GR_METHOD_MUL_SI + GR_METHOD_MUL_FMPZ + GR_METHOD_MUL_FMPQ + GR_METHOD_MUL_OTHER + GR_METHOD_OTHER_MUL + GR_METHOD_ADDMUL + GR_METHOD_ADDMUL_UI + GR_METHOD_ADDMUL_SI + GR_METHOD_ADDMUL_FMPZ + GR_METHOD_ADDMUL_FMPQ + GR_METHOD_ADDMUL_OTHER + GR_METHOD_SUBMUL + GR_METHOD_SUBMUL_UI + GR_METHOD_SUBMUL_SI + GR_METHOD_SUBMUL_FMPZ + GR_METHOD_SUBMUL_FMPQ + GR_METHOD_SUBMUL_OTHER + GR_METHOD_FMA + GR_METHOD_FMS + GR_METHOD_FMMA + GR_METHOD_FMMS + GR_METHOD_MUL_TWO + GR_METHOD_SQR + GR_METHOD_MUL_2EXP_SI + GR_METHOD_MUL_2EXP_FMPZ + GR_METHOD_SET_FMPZ_2EXP_FMPZ + GR_METHOD_GET_FMPZ_2EXP_FMPZ + GR_METHOD_IS_INVERTIBLE + GR_METHOD_INV + GR_METHOD_DIV + GR_METHOD_DIV_UI + GR_METHOD_DIV_SI + GR_METHOD_DIV_FMPZ + GR_METHOD_DIV_FMPQ + GR_METHOD_DIV_OTHER + GR_METHOD_OTHER_DIV + GR_METHOD_DIVEXACT + GR_METHOD_DIVEXACT_UI + GR_METHOD_DIVEXACT_SI + GR_METHOD_DIVEXACT_FMPZ + GR_METHOD_DIVEXACT_FMPQ + GR_METHOD_DIVEXACT_OTHER + GR_METHOD_OTHER_DIVEXACT + GR_METHOD_POW + GR_METHOD_POW_UI + GR_METHOD_POW_SI + GR_METHOD_POW_FMPZ + GR_METHOD_POW_FMPQ + GR_METHOD_POW_OTHER + GR_METHOD_OTHER_POW + GR_METHOD_IS_SQUARE + GR_METHOD_SQRT + GR_METHOD_RSQRT + GR_METHOD_HYPOT + GR_METHOD_IS_PERFECT_POWER + GR_METHOD_FACTOR_PERFECT_POWER + GR_METHOD_ROOT_UI + GR_METHOD_DIVIDES + GR_METHOD_EUCLIDEAN_DIV + GR_METHOD_EUCLIDEAN_REM + GR_METHOD_EUCLIDEAN_DIVREM + GR_METHOD_GCD + GR_METHOD_LCM + GR_METHOD_FACTOR + GR_METHOD_NUMERATOR + GR_METHOD_DENOMINATOR + GR_METHOD_FLOOR + GR_METHOD_CEIL + GR_METHOD_TRUNC + GR_METHOD_NINT + GR_METHOD_CMP + GR_METHOD_CMPABS + GR_METHOD_CMP_OTHER + GR_METHOD_CMPABS_OTHER + GR_METHOD_MIN + GR_METHOD_MAX + GR_METHOD_ABS + GR_METHOD_ABS2 + GR_METHOD_I + GR_METHOD_CONJ + GR_METHOD_RE + GR_METHOD_IM + GR_METHOD_SGN + GR_METHOD_CSGN + GR_METHOD_ARG + GR_METHOD_POS_INF + GR_METHOD_NEG_INF + GR_METHOD_UINF + GR_METHOD_UNDEFINED + GR_METHOD_UNKNOWN + GR_METHOD_IS_INTEGER + GR_METHOD_IS_RATIONAL + GR_METHOD_IS_REAL + GR_METHOD_IS_POSITIVE_INTEGER + GR_METHOD_IS_NONNEGATIVE_INTEGER + GR_METHOD_IS_NEGATIVE_INTEGER + GR_METHOD_IS_NONPOSITIVE_INTEGER + GR_METHOD_IS_POSITIVE_REAL + GR_METHOD_IS_NONNEGATIVE_REAL + GR_METHOD_IS_NEGATIVE_REAL + GR_METHOD_IS_NONPOSITIVE_REAL + GR_METHOD_IS_ROOT_OF_UNITY + GR_METHOD_ROOT_OF_UNITY_UI + GR_METHOD_ROOT_OF_UNITY_UI_VEC + GR_METHOD_PI + GR_METHOD_EXP + GR_METHOD_EXPM1 + GR_METHOD_EXP_PI_I + GR_METHOD_EXP2 + GR_METHOD_EXP10 + GR_METHOD_LOG + GR_METHOD_LOG1P + GR_METHOD_LOG_PI_I + GR_METHOD_LOG2 + GR_METHOD_LOG10 + GR_METHOD_SIN + GR_METHOD_COS + GR_METHOD_SIN_COS + GR_METHOD_TAN + GR_METHOD_COT + GR_METHOD_SEC + GR_METHOD_CSC + GR_METHOD_SIN_PI + GR_METHOD_COS_PI + GR_METHOD_SIN_COS_PI + GR_METHOD_TAN_PI + GR_METHOD_COT_PI + GR_METHOD_SEC_PI + GR_METHOD_CSC_PI + GR_METHOD_SINC + GR_METHOD_SINC_PI + GR_METHOD_SINH + GR_METHOD_COSH + GR_METHOD_SINH_COSH + GR_METHOD_TANH + GR_METHOD_COTH + GR_METHOD_SECH + GR_METHOD_CSCH + GR_METHOD_ASIN + GR_METHOD_ACOS + GR_METHOD_ATAN + GR_METHOD_ATAN2 + GR_METHOD_ACOT + GR_METHOD_ASEC + GR_METHOD_ACSC + GR_METHOD_ASINH + GR_METHOD_ACOSH + GR_METHOD_ATANH + GR_METHOD_ACOTH + GR_METHOD_ASECH + GR_METHOD_ACSCH + GR_METHOD_ASIN_PI + GR_METHOD_ACOS_PI + GR_METHOD_ATAN_PI + GR_METHOD_ACOT_PI + GR_METHOD_ASEC_PI + GR_METHOD_ACSC_PI + GR_METHOD_FAC + GR_METHOD_FAC_UI + GR_METHOD_FAC_FMPZ + GR_METHOD_FAC_VEC + GR_METHOD_RFAC + GR_METHOD_RFAC_UI + GR_METHOD_RFAC_FMPZ + GR_METHOD_RFAC_VEC + GR_METHOD_BIN + GR_METHOD_BIN_UI + GR_METHOD_BIN_UIUI + GR_METHOD_BIN_VEC + GR_METHOD_BIN_UI_VEC + GR_METHOD_RISING_UI + GR_METHOD_RISING + GR_METHOD_FALLING_UI + GR_METHOD_FALLING + GR_METHOD_GAMMA + GR_METHOD_GAMMA_FMPZ + GR_METHOD_GAMMA_FMPQ + GR_METHOD_RGAMMA + GR_METHOD_LGAMMA + GR_METHOD_DIGAMMA + GR_METHOD_BETA + GR_METHOD_DOUBLEFAC + GR_METHOD_DOUBLEFAC_UI + GR_METHOD_BARNES_G + GR_METHOD_LOG_BARNES_G + GR_METHOD_HARMONIC + GR_METHOD_HARMONIC_UI + GR_METHOD_BERNOULLI_UI + GR_METHOD_BERNOULLI_FMPZ + GR_METHOD_BERNOULLI_VEC + GR_METHOD_FIB_UI + GR_METHOD_FIB_FMPZ + GR_METHOD_FIB_VEC + GR_METHOD_STIRLING_S1U_UIUI + GR_METHOD_STIRLING_S1_UIUI + GR_METHOD_STIRLING_S2_UIUI + GR_METHOD_STIRLING_S1U_UI_VEC + GR_METHOD_STIRLING_S1_UI_VEC + GR_METHOD_STIRLING_S2_UI_VEC + GR_METHOD_EULERNUM_UI + GR_METHOD_EULERNUM_FMPZ + GR_METHOD_EULERNUM_VEC + GR_METHOD_BELLNUM_UI + GR_METHOD_BELLNUM_FMPZ + GR_METHOD_BELLNUM_VEC + GR_METHOD_PARTITIONS_UI + GR_METHOD_PARTITIONS_FMPZ + GR_METHOD_PARTITIONS_VEC + GR_METHOD_CHEBYSHEV_T_FMPZ + GR_METHOD_CHEBYSHEV_U_FMPZ + GR_METHOD_CHEBYSHEV_T + GR_METHOD_CHEBYSHEV_U + GR_METHOD_JACOBI_P + GR_METHOD_GEGENBAUER_C + GR_METHOD_LAGUERRE_L + GR_METHOD_HERMITE_H + GR_METHOD_LEGENDRE_P + GR_METHOD_LEGENDRE_Q + GR_METHOD_LEGENDRE_P_ROOT_UI + GR_METHOD_SPHERICAL_Y_SI + GR_METHOD_EULER + GR_METHOD_CATALAN + GR_METHOD_KHINCHIN + GR_METHOD_GLAISHER + GR_METHOD_LAMBERTW + GR_METHOD_LAMBERTW_FMPZ + GR_METHOD_ERF + GR_METHOD_ERFC + GR_METHOD_ERFCX + GR_METHOD_ERFI + GR_METHOD_ERFINV + GR_METHOD_ERFCINV + GR_METHOD_FRESNEL_S + GR_METHOD_FRESNEL_C + GR_METHOD_FRESNEL + GR_METHOD_GAMMA_UPPER + GR_METHOD_GAMMA_LOWER + GR_METHOD_BETA_LOWER + GR_METHOD_EXP_INTEGRAL + GR_METHOD_EXP_INTEGRAL_EI + GR_METHOD_SIN_INTEGRAL + GR_METHOD_COS_INTEGRAL + GR_METHOD_SINH_INTEGRAL + GR_METHOD_COSH_INTEGRAL + GR_METHOD_LOG_INTEGRAL + GR_METHOD_DILOG + GR_METHOD_BESSEL_J + GR_METHOD_BESSEL_Y + GR_METHOD_BESSEL_J_Y + GR_METHOD_BESSEL_I + GR_METHOD_BESSEL_I_SCALED + GR_METHOD_BESSEL_K + GR_METHOD_BESSEL_K_SCALED + GR_METHOD_AIRY + GR_METHOD_AIRY_AI + GR_METHOD_AIRY_BI + GR_METHOD_AIRY_AI_PRIME + GR_METHOD_AIRY_BI_PRIME + GR_METHOD_AIRY_AI_ZERO + GR_METHOD_AIRY_BI_ZERO + GR_METHOD_AIRY_AI_PRIME_ZERO + GR_METHOD_AIRY_BI_PRIME_ZERO + GR_METHOD_COULOMB + GR_METHOD_COULOMB_F + GR_METHOD_COULOMB_G + GR_METHOD_COULOMB_HPOS + GR_METHOD_COULOMB_HNEG + GR_METHOD_ZETA + GR_METHOD_ZETA_UI + GR_METHOD_HURWITZ_ZETA + GR_METHOD_LERCH_PHI + GR_METHOD_STIELTJES + GR_METHOD_DIRICHLET_ETA + GR_METHOD_DIRICHLET_BETA + GR_METHOD_RIEMANN_XI + GR_METHOD_ZETA_ZERO + GR_METHOD_ZETA_ZERO_VEC + GR_METHOD_ZETA_NZEROS + GR_METHOD_DIRICHLET_CHI_UI + GR_METHOD_DIRICHLET_CHI_FMPZ + GR_METHOD_DIRICHLET_L + GR_METHOD_DIRICHLET_HARDY_THETA + GR_METHOD_DIRICHLET_HARDY_Z + GR_METHOD_BERNPOLY_UI + GR_METHOD_EULERPOLY_UI + GR_METHOD_POLYLOG + GR_METHOD_POLYGAMMA + GR_METHOD_HYPGEOM_0F1 + GR_METHOD_HYPGEOM_1F1 + GR_METHOD_HYPGEOM_2F0 + GR_METHOD_HYPGEOM_2F1 + GR_METHOD_HYPGEOM_U + GR_METHOD_HYPGEOM_PFQ + GR_METHOD_JACOBI_THETA + GR_METHOD_JACOBI_THETA_1 + GR_METHOD_JACOBI_THETA_2 + GR_METHOD_JACOBI_THETA_3 + GR_METHOD_JACOBI_THETA_4 + GR_METHOD_JACOBI_THETA_Q + GR_METHOD_JACOBI_THETA_Q_1 + GR_METHOD_JACOBI_THETA_Q_2 + GR_METHOD_JACOBI_THETA_Q_3 + GR_METHOD_JACOBI_THETA_Q_4 + GR_METHOD_MODULAR_J + GR_METHOD_MODULAR_LAMBDA + GR_METHOD_MODULAR_DELTA + GR_METHOD_HILBERT_CLASS_POLY + GR_METHOD_DEDEKIND_ETA + GR_METHOD_DEDEKIND_ETA_Q + GR_METHOD_EISENSTEIN_E + GR_METHOD_EISENSTEIN_G + GR_METHOD_EISENSTEIN_G_VEC + GR_METHOD_AGM + GR_METHOD_AGM1 + GR_METHOD_ELLIPTIC_K + GR_METHOD_ELLIPTIC_E + GR_METHOD_ELLIPTIC_PI + GR_METHOD_ELLIPTIC_F + GR_METHOD_ELLIPTIC_E_INC + GR_METHOD_ELLIPTIC_PI_INC + GR_METHOD_CARLSON_RF + GR_METHOD_CARLSON_RC + GR_METHOD_CARLSON_RJ + GR_METHOD_CARLSON_RG + GR_METHOD_CARLSON_RD + GR_METHOD_ELLIPTIC_ROOTS + GR_METHOD_ELLIPTIC_INVARIANTS + GR_METHOD_WEIERSTRASS_P + GR_METHOD_WEIERSTRASS_P_PRIME + GR_METHOD_WEIERSTRASS_P_INV + GR_METHOD_WEIERSTRASS_ZETA + GR_METHOD_WEIERSTRASS_SIGMA + GR_METHOD_GEN + GR_METHOD_GENS + GR_METHOD_CTX_FQ_PRIME + GR_METHOD_CTX_FQ_DEGREE + GR_METHOD_CTX_FQ_ORDER + GR_METHOD_FQ_FROBENIUS + GR_METHOD_FQ_MULTIPLICATIVE_ORDER + GR_METHOD_FQ_NORM + GR_METHOD_FQ_TRACE + GR_METHOD_FQ_IS_PRIMITIVE + GR_METHOD_FQ_PTH_ROOT + GR_METHOD_VEC_INIT + GR_METHOD_VEC_CLEAR + GR_METHOD_VEC_SWAP + GR_METHOD_VEC_SET + GR_METHOD_VEC_ZERO + GR_METHOD_VEC_EQUAL + GR_METHOD_VEC_IS_ZERO + GR_METHOD_VEC_NEG + GR_METHOD_VEC_NORMALISE + GR_METHOD_VEC_NORMALISE_WEAK + GR_METHOD_VEC_ADD + GR_METHOD_VEC_SUB + GR_METHOD_VEC_MUL + GR_METHOD_VEC_DIV + GR_METHOD_VEC_DIVEXACT + GR_METHOD_VEC_POW + GR_METHOD_VEC_ADD_SCALAR + GR_METHOD_VEC_SUB_SCALAR + GR_METHOD_VEC_MUL_SCALAR + GR_METHOD_VEC_DIV_SCALAR + GR_METHOD_VEC_DIVEXACT_SCALAR + GR_METHOD_VEC_POW_SCALAR + GR_METHOD_SCALAR_ADD_VEC + GR_METHOD_SCALAR_SUB_VEC + GR_METHOD_SCALAR_MUL_VEC + GR_METHOD_SCALAR_DIV_VEC + GR_METHOD_SCALAR_DIVEXACT_VEC + GR_METHOD_SCALAR_POW_VEC + GR_METHOD_VEC_ADD_OTHER + GR_METHOD_VEC_SUB_OTHER + GR_METHOD_VEC_MUL_OTHER + GR_METHOD_VEC_DIV_OTHER + GR_METHOD_VEC_DIVEXACT_OTHER + GR_METHOD_VEC_POW_OTHER + GR_METHOD_OTHER_ADD_VEC + GR_METHOD_OTHER_SUB_VEC + GR_METHOD_OTHER_MUL_VEC + GR_METHOD_OTHER_DIV_VEC + GR_METHOD_OTHER_DIVEXACT_VEC + GR_METHOD_OTHER_POW_VEC + GR_METHOD_VEC_ADD_SCALAR_OTHER + GR_METHOD_VEC_SUB_SCALAR_OTHER + GR_METHOD_VEC_MUL_SCALAR_OTHER + GR_METHOD_VEC_DIV_SCALAR_OTHER + GR_METHOD_VEC_DIVEXACT_SCALAR_OTHER + GR_METHOD_VEC_POW_SCALAR_OTHER + GR_METHOD_SCALAR_OTHER_ADD_VEC + GR_METHOD_SCALAR_OTHER_SUB_VEC + GR_METHOD_SCALAR_OTHER_MUL_VEC + GR_METHOD_SCALAR_OTHER_DIV_VEC + GR_METHOD_SCALAR_OTHER_DIVEXACT_VEC + GR_METHOD_SCALAR_OTHER_POW_VEC + GR_METHOD_VEC_ADD_SCALAR_SI + GR_METHOD_VEC_ADD_SCALAR_UI + GR_METHOD_VEC_ADD_SCALAR_FMPZ + GR_METHOD_VEC_ADD_SCALAR_FMPQ + GR_METHOD_VEC_SUB_SCALAR_SI + GR_METHOD_VEC_SUB_SCALAR_UI + GR_METHOD_VEC_SUB_SCALAR_FMPZ + GR_METHOD_VEC_SUB_SCALAR_FMPQ + GR_METHOD_VEC_MUL_SCALAR_SI + GR_METHOD_VEC_MUL_SCALAR_UI + GR_METHOD_VEC_MUL_SCALAR_FMPZ + GR_METHOD_VEC_MUL_SCALAR_FMPQ + GR_METHOD_VEC_DIV_SCALAR_SI + GR_METHOD_VEC_DIV_SCALAR_UI + GR_METHOD_VEC_DIV_SCALAR_FMPZ + GR_METHOD_VEC_DIV_SCALAR_FMPQ + GR_METHOD_VEC_DIVEXACT_SCALAR_SI + GR_METHOD_VEC_DIVEXACT_SCALAR_UI + GR_METHOD_VEC_DIVEXACT_SCALAR_FMPZ + GR_METHOD_VEC_DIVEXACT_SCALAR_FMPQ + GR_METHOD_VEC_POW_SCALAR_SI + GR_METHOD_VEC_POW_SCALAR_UI + GR_METHOD_VEC_POW_SCALAR_FMPZ + GR_METHOD_VEC_POW_SCALAR_FMPQ + GR_METHOD_VEC_MUL_SCALAR_2EXP_SI + GR_METHOD_VEC_MUL_SCALAR_2EXP_FMPZ + GR_METHOD_VEC_ADDMUL_SCALAR + GR_METHOD_VEC_SUBMUL_SCALAR + GR_METHOD_VEC_ADDMUL_SCALAR_SI + GR_METHOD_VEC_SUBMUL_SCALAR_SI + GR_METHOD_VEC_SUM + GR_METHOD_VEC_PRODUCT + GR_METHOD_VEC_DOT + GR_METHOD_VEC_DOT_REV + GR_METHOD_VEC_DOT_UI + GR_METHOD_VEC_DOT_SI + GR_METHOD_VEC_DOT_FMPZ + GR_METHOD_VEC_SET_POWERS + GR_METHOD_VEC_RECIPROCALS + GR_METHOD_POLY_MULLOW + GR_METHOD_POLY_DIV + GR_METHOD_POLY_DIVREM + GR_METHOD_POLY_DIVEXACT + GR_METHOD_POLY_TAYLOR_SHIFT + GR_METHOD_POLY_INV_SERIES + GR_METHOD_POLY_INV_SERIES_BASECASE + GR_METHOD_POLY_DIV_SERIES + GR_METHOD_POLY_DIV_SERIES_BASECASE + GR_METHOD_POLY_RSQRT_SERIES + GR_METHOD_POLY_SQRT_SERIES + GR_METHOD_POLY_EXP_SERIES + GR_METHOD_POLY_FACTOR + GR_METHOD_POLY_ROOTS + GR_METHOD_POLY_ROOTS_OTHER + GR_METHOD_MAT_MUL + GR_METHOD_MAT_DET + GR_METHOD_MAT_EXP + GR_METHOD_MAT_LOG + GR_METHOD_MAT_FIND_NONZERO_PIVOT + GR_METHOD_MAT_DIAGONALIZATION + GR_METHOD_TAB_SIZE + + ctypedef struct gr_method_tab_input: + pass + + ctypedef enum gr_which_structure: + GR_CTX_FMPZ + GR_CTX_FMPQ + GR_CTX_FMPZI + GR_CTX_FMPZ_MOD + GR_CTX_NMOD + GR_CTX_NMOD8 + GR_CTX_NMOD32 + GR_CTX_FQ + GR_CTX_FQ_NMOD + GR_CTX_FQ_ZECH + GR_CTX_NF + GR_CTX_REAL_ALGEBRAIC_QQBAR + GR_CTX_COMPLEX_ALGEBRAIC_QQBAR + GR_CTX_REAL_ALGEBRAIC_CA + GR_CTX_COMPLEX_ALGEBRAIC_CA + GR_CTX_RR_CA + GR_CTX_CC_CA + GR_CTX_COMPLEX_EXTENDED_CA + GR_CTX_RR_ARB + GR_CTX_CC_ACB + GR_CTX_REAL_FLOAT_ARF + GR_CTX_COMPLEX_FLOAT_ACF + GR_CTX_FMPZ_POLY + GR_CTX_FMPQ_POLY + GR_CTX_GR_POLY + GR_CTX_FMPZ_MPOLY + GR_CTX_GR_MPOLY + GR_CTX_FMPZ_MPOLY_Q + GR_CTX_GR_SERIES + GR_CTX_GR_SERIES_MOD + GR_CTX_GR_MAT + GR_CTX_GR_VEC + GR_CTX_PSL2Z + GR_CTX_DIRICHLET_GROUP + GR_CTX_PERM + GR_CTX_FEXPR + GR_CTX_UNKNOWN_DOMAIN + GR_CTX_WHICH_STRUCTURE_TAB_SIZE + + ctypedef struct gr_ctx_struct: + pass + ctypedef gr_ctx_struct gr_ctx_t[1] + + ctypedef void ((*gr_method_init_clear_op)(gr_ptr, gr_ctx_ptr)) + ctypedef void ((*gr_method_swap_op)(gr_ptr, gr_ptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_ctx)(gr_ctx_ptr)) + # NOTE: we removed an extra parenthesis so that Cython is less confused + # see https://github.com/cython/cython/issues/5779 + ctypedef truth_t (*gr_method_ctx_predicate)(gr_ctx_ptr) + ctypedef int ((*gr_method_ctx_set_si)(gr_ctx_ptr, slong)) + ctypedef int ((*gr_method_ctx_get_si)(slong *, gr_ctx_ptr)) + ctypedef int ((*gr_method_ctx_stream)(gr_stream_t, gr_ctx_ptr)) + ctypedef int ((*gr_method_ctx_set_str)(gr_ctx_ptr, const char *)) + ctypedef int ((*gr_method_ctx_set_strs)(gr_ctx_ptr, const char **)) + ctypedef int ((*gr_method_stream_in)(gr_stream_t, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_stream_in_si)(gr_stream_t, gr_srcptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_randtest)(gr_ptr, flint_rand_t state, gr_ctx_ptr)) + ctypedef int ((*gr_method_constant_op)(gr_ptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_constant_op_get_si)(slong *, gr_ctx_ptr)) + ctypedef int ((*gr_method_constant_op_get_fmpz)(fmpz_t, gr_ctx_ptr)) + ctypedef void ((*gr_method_void_unary_op)(gr_ptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op)(gr_ptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_si)(gr_ptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_ui)(gr_ptr, ulong, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_fmpz)(gr_ptr, const fmpz_t, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_fmpq)(gr_ptr, const fmpq_t, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_d)(gr_ptr, double, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_other)(gr_ptr, gr_srcptr, gr_ctx_ptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_str)(gr_ptr, const char *, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_get_ui)(ulong *, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_get_si)(slong *, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_get_fmpz)(fmpz_t, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_get_fmpq)(fmpq_t, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_get_d)(double *, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_get_fmpz_fmpz)(fmpz_t, fmpz_t, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_with_flag)(gr_ptr, gr_srcptr, int, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_unary_op)(gr_ptr, gr_ptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_unary_op_with_flag)(gr_ptr, gr_ptr, gr_srcptr, int, gr_ctx_ptr)) + ctypedef int ((*gr_method_quaternary_unary_op)(gr_ptr, gr_ptr, gr_ptr, gr_ptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op)(gr_ptr, gr_srcptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_si)(gr_ptr, gr_srcptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_ui)(gr_ptr, gr_srcptr, ulong, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_fmpz)(gr_ptr, gr_srcptr, const fmpz_t, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_fmpz_fmpz)(gr_ptr, const fmpz_t, const fmpz_t, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_fmpz_si)(gr_ptr, const fmpz_t, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_fmpq)(gr_ptr, gr_srcptr, const fmpq_t, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_other)(gr_ptr, gr_srcptr, gr_srcptr, gr_ctx_ptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_other_binary_op)(gr_ptr, gr_srcptr, gr_ctx_ptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_si_binary_op)(gr_ptr, slong, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_ui_binary_op)(gr_ptr, ulong, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_fmpz_binary_op)(gr_ptr, const fmpz_t, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_fmpq_binary_op)(gr_ptr, const fmpq_t, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_ui_ui)(gr_ptr, ulong, ulong, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_ui_si)(gr_ptr, ulong, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_get_int)(int *, gr_srcptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_other_get_int)(int *, gr_srcptr, gr_srcptr, gr_ctx_ptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_binary_op)(gr_ptr, gr_ptr, gr_srcptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_with_flag)(gr_ptr, gr_srcptr, gr_srcptr, int, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_binary_op_ui_ui)(gr_ptr, gr_ptr, ulong, ulong, gr_ctx_ptr)) + ctypedef int ((*gr_method_ternary_op)(gr_ptr, gr_srcptr, gr_srcptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_ternary_op_with_flag)(gr_ptr, gr_srcptr, gr_srcptr, gr_srcptr, int, gr_ctx_ptr)) + ctypedef int ((*gr_method_ternary_unary_op)(gr_ptr, gr_ptr, gr_ptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_quaternary_op)(gr_ptr, gr_srcptr, gr_srcptr, gr_srcptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_quaternary_op_with_flag)(gr_ptr, gr_srcptr, gr_srcptr, gr_srcptr, gr_srcptr, int, gr_ctx_ptr)) + ctypedef int ((*gr_method_quaternary_binary_op)(gr_ptr, gr_ptr, gr_ptr, gr_ptr, gr_srcptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_quaternary_ternary_op)(gr_ptr, gr_ptr, gr_ptr, gr_ptr, gr_srcptr, gr_srcptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_si_si_quaternary_op)(gr_ptr, slong, slong, gr_srcptr, gr_srcptr, gr_ctx_ptr)) + # NOTE: we removed an extra parenthesis so that Cython is less confused + # see https://github.com/cython/cython/issues/5779 + ctypedef truth_t (*gr_method_unary_predicate)(gr_srcptr, gr_ctx_ptr) + ctypedef truth_t (*gr_method_binary_predicate)(gr_srcptr, gr_srcptr, gr_ctx_ptr) + ctypedef void ((*gr_method_vec_init_clear_op)(gr_ptr, slong, gr_ctx_ptr)) + ctypedef void ((*gr_method_vec_swap_op)(gr_ptr, gr_ptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_constant_op)(gr_ptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_op)(gr_ptr, gr_srcptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_vec_op)(gr_ptr, gr_srcptr, gr_srcptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_scalar_op)(gr_ptr, gr_srcptr, slong, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_scalar_vec_op)(gr_ptr, gr_srcptr, gr_srcptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_op_other)(gr_ptr, gr_srcptr, gr_srcptr, gr_ctx_ptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_other_op_vec)(gr_ptr, gr_srcptr, gr_ctx_ptr, gr_srcptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_op_scalar_other)(gr_ptr, gr_srcptr, slong, gr_srcptr, gr_ctx_ptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_scalar_other_op_vec)(gr_ptr, gr_srcptr, gr_ctx_ptr, gr_srcptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_scalar_op_si)(gr_ptr, gr_srcptr, slong, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_scalar_op_ui)(gr_ptr, gr_srcptr, slong, ulong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_scalar_op_fmpz)(gr_ptr, gr_srcptr, slong, const fmpz_t, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_scalar_op_fmpq)(gr_ptr, gr_srcptr, slong, const fmpq_t, gr_ctx_ptr)) + # NOTE: we removed an extra parenthesis so that Cython is less confused + # see https://github.com/cython/cython/issues/5779 + ctypedef truth_t (*gr_method_vec_predicate)(gr_srcptr, slong, gr_ctx_ptr) + ctypedef truth_t (*gr_method_vec_vec_predicate)(gr_srcptr, gr_srcptr, slong, gr_ctx_ptr) + ctypedef int ((*gr_method_factor_op)(gr_ptr, gr_vec_t, gr_vec_t, gr_srcptr, int, gr_ctx_ptr)) + ctypedef int ((*gr_method_poly_unary_trunc_op)(gr_ptr, gr_srcptr, slong, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_poly_binary_op)(gr_ptr, gr_srcptr, slong, gr_srcptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_poly_binary_binary_op)(gr_ptr, gr_ptr, gr_srcptr, slong, gr_srcptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_poly_binary_trunc_op)(gr_ptr, gr_srcptr, slong, gr_srcptr, slong, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_ctx_op)(gr_vec_t, gr_ctx_ptr)) + + ctypedef struct polynomial_ctx_t: + pass + + ctypedef struct vector_ctx_t: + pass + + ctypedef struct matrix_ctx_t: + pass + + + # flint/gr_poly.h + ctypedef struct gr_poly_struct: + pass + ctypedef gr_poly_struct gr_poly_t[1] + + + # flint/gr_mat.h + ctypedef struct gr_mat_struct: + pass + ctypedef gr_mat_struct gr_mat_t[1] + + + # flint/gr_mpoly.h + ctypedef struct gr_mpoly_struct: + pass + ctypedef gr_mpoly_struct gr_mpoly_t[1] + + + # flint/double_interval.h + ctypedef struct di_t: + double a + double b + + + # flint/fq_default.h + ctypedef union fq_default_struct: + fq_t fq + fq_nmod_t fq_nmod + fq_zech_t fq_zech + ulong nmod + fmpz_t fmpz_mod + ctypedef fq_default_struct fq_default_t[1] + + ctypedef struct fq_default_ctx_struct: + pass + ctypedef fq_default_ctx_struct fq_default_ctx_t[1] + + + # flint/fq_default_poly.h + ctypedef union fq_default_poly_struct: + fq_poly_t fq + fq_nmod_poly_t fq_nmod + fq_zech_poly_t fq_zech + nmod_poly_t nmod + fmpz_mod_poly_t fmpz_mod + ctypedef fq_default_poly_struct fq_default_poly_t[1] + + + # flint/fq_poly_factor.h + ctypedef union fq_default_poly_factor_struct: + fq_poly_factor_t fq + fq_nmod_poly_factor_t fq_nmod + fq_zech_poly_factor_t fq_zech + nmod_poly_factor_t nmod + fmpz_mod_poly_factor_t fmpz_mod + ctypedef fq_default_poly_factor_struct fq_default_poly_factor_t[1] + + + # flint/fq_default_mat.h + ctypedef union fq_default_mat_struct: + pass + ctypedef fq_default_mat_struct fq_default_mat_t[1] + + + # flint/qfb.h + ctypedef struct qfb: + pass + ctypedef qfb qfb_t[1] + + ctypedef struct qfb_hash_t: + pass + + + # flint/qqbar.h + ctypedef struct qqbar_struct: + pass + ctypedef qqbar_struct qqbar_t[1] + ctypedef qqbar_struct * qqbar_ptr + ctypedef const qqbar_struct * qqbar_srcptr + + + # flint/profiler.h + ctypedef struct struct_meminfo: + pass + ctypedef struct_meminfo meminfo_t[1] + + ctypedef struct struct_timeit: + pass + ctypedef struct_timeit timeit_t[1] + + ctypedef void (*profile_target_t)(void* arg, ulong count) + + + # flint/fexpr.h + ctypedef struct fexpr_struct: + pass + ctypedef fexpr_struct fexpr_t[1] + ctypedef fexpr_struct * fexpr_ptr + ctypedef const fexpr_struct * fexpr_srcptr + + ctypedef struct fexpr_vec_struct: + pass + ctypedef fexpr_vec_struct fexpr_vec_t[1] + + + # flint/hypgeom.h + ctypedef struct hypgeom_struct: + pass + ctypedef hypgeom_struct hypgeom_t[1] + + + # flint/dlog.h + ctypedef struct dlog_precomp_struct: + pass + ctypedef dlog_precomp_struct * dlog_precomp_ptr + ctypedef dlog_precomp_struct dlog_precomp_t[1] + + ctypedef struct dlog_1modpe_struct: + pass + ctypedef dlog_1modpe_struct dlog_1modpe_t[1] + + ctypedef struct dlog_modpe_struct: + pass + ctypedef dlog_modpe_struct dlog_modpe_t[1] + + ctypedef struct dlog_table_struct: + pass + ctypedef dlog_table_struct dlog_table_t[1] + + ctypedef struct apow_t: + pass + + ctypedef struct dlog_bsgs_struct: + pass + ctypedef dlog_bsgs_struct dlog_bsgs_t[1] + + ctypedef struct dlog_rho_struct: + pass + ctypedef dlog_rho_struct dlog_rho_t[1] + + ctypedef struct dlog_crt_struct: + pass + ctypedef dlog_crt_struct dlog_crt_t[1] + + ctypedef struct dlog_power_struct: + pass + ctypedef dlog_power_struct dlog_power_t[1] + + ctypedef ulong dlog_order23_t[1] + + + # flint/bool_mat.h + ctypedef struct bool_mat_struct: + pass + ctypedef bool_mat_struct bool_mat_t[1] + + + # flint/dirichlet.h + ctypedef struct dirichlet_prime_group_struct: + pass + + ctypedef struct dirichlet_group_struct: + pass + ctypedef dirichlet_group_struct dirichlet_group_t[1] + + ctypedef struct dirichlet_char_struct: + pass + ctypedef dirichlet_char_struct dirichlet_char_t[1] + + + # flint/arb_fpwrap.h + ctypedef struct complex_double: + double real + double imag + + + # flint/aprcl.h + ctypedef struct _aprcl_config: + pass + ctypedef _aprcl_config aprcl_config[1]; + + ctypedef struct _unity_zpq: + pass + ctypedef _unity_zpq unity_zpq[1] + + ctypedef struct _unity_zp: + pass + ctypedef _unity_zp unity_zp[1] + + ctypedef enum primality_test_status: + UNKNOWN + PRIME + COMPOSITE + PROBABPRIME + + + # flint/acf.h + ctypedef struct acf_struct: + pass + + ctypedef acf_struct acf_t[1] + ctypedef acf_struct * acf_ptr + ctypedef const acf_struct * acf_srcptr + + + # flint/fmpz_lll.h + ctypedef enum rep_type: + GRAM + Z_BASIS + + ctypedef enum gram_type: + APPROX + EXACT + + ctypedef struct fmpz_lll_struct: + pass + ctypedef fmpz_lll_struct fmpz_lll_t[1] + + ctypedef union fmpz_gram_union: + d_mat_t appSP + mpf_mat_t appSP2 + fmpz_mat_t exactSP + ctypedef fmpz_gram_union fmpz_gram_t[1] diff --git a/src/sage/libs/flint/ulong_extras.pxd b/src/sage/libs/flint/ulong_extras.pxd index b56f11d44db..8593c3725f2 100644 --- a/src/sage/libs/flint/ulong_extras.pxd +++ b/src/sage/libs/flint/ulong_extras.pxd @@ -1,15 +1,139 @@ # distutils: libraries = flint # distutils: depends = flint/ulong_extras.h -from sage.libs.flint.types cimport n_factor_t +################################################################################ +# This file is auto-generated by the script +# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py. +# Do not modify by hand! Fix and rerun the script instead. +################################################################################ -# flint/ulong_extras.h -cdef extern from "flint_wrap.h": - cdef int n_jacobi(long x, unsigned long y) - - cdef int n_is_prime(unsigned long n) +from libc.stdio cimport FILE +from sage.libs.gmp.types cimport * +from sage.libs.mpfr.types cimport * +from sage.libs.flint.types cimport * - cdef unsigned long n_gcd(long x, long y) - - cdef void n_factor(n_factor_t * factors, unsigned long n, int proved) - cdef void n_factor_init(n_factor_t * factors) +cdef extern from "flint_wrap.h": + ulong n_randlimb(flint_rand_t state) noexcept + ulong n_randbits(flint_rand_t state, unsigned int bits) noexcept + ulong n_randtest_bits(flint_rand_t state, int bits) noexcept + ulong n_randint(flint_rand_t state, ulong limit) noexcept + ulong n_urandint(flint_rand_t state, ulong limit) noexcept + ulong n_randtest(flint_rand_t state) noexcept + ulong n_randtest_not_zero(flint_rand_t state) noexcept + ulong n_randprime(flint_rand_t state, ulong bits, int proved) noexcept + ulong n_randtest_prime(flint_rand_t state, int proved) noexcept + ulong n_pow(ulong n, ulong exp) noexcept + ulong n_flog(ulong n, ulong b) noexcept + ulong n_clog(ulong n, ulong b) noexcept + ulong n_clog_2exp(ulong n, ulong b) noexcept + ulong n_revbin(ulong n, ulong b) noexcept + int n_sizeinbase(ulong n, int base) noexcept + ulong n_preinvert_limb_prenorm(ulong n) noexcept + ulong n_preinvert_limb(ulong n) noexcept + double n_precompute_inverse(ulong n) noexcept + ulong n_mod_precomp(ulong a, ulong n, double ninv) noexcept + ulong n_mod2_precomp(ulong a, ulong n, double ninv) noexcept + ulong n_divrem2_preinv(ulong * q, ulong a, ulong n, ulong ninv) noexcept + ulong n_div2_preinv(ulong a, ulong n, ulong ninv) noexcept + ulong n_mod2_preinv(ulong a, ulong n, ulong ninv) noexcept + ulong n_divrem2_precomp(ulong * q, ulong a, ulong n, double npre) noexcept + ulong n_ll_mod_preinv(ulong a_hi, ulong a_lo, ulong n, ulong ninv) noexcept + ulong n_lll_mod_preinv(ulong a_hi, ulong a_mi, ulong a_lo, ulong n, ulong ninv) noexcept + ulong n_mulmod_precomp(ulong a, ulong b, ulong n, double ninv) noexcept + ulong n_mulmod2_preinv(ulong a, ulong b, ulong n, ulong ninv) noexcept + ulong n_mulmod2(ulong a, ulong b, ulong n) noexcept + ulong n_mulmod_preinv(ulong a, ulong b, ulong n, ulong ninv, ulong norm) noexcept + ulong n_gcd(ulong x, ulong y) noexcept + ulong n_gcdinv(ulong * a, ulong x, ulong y) noexcept + ulong n_xgcd(ulong * a, ulong * b, ulong x, ulong y) noexcept + int n_jacobi(mp_limb_signed_t x, ulong y) noexcept + int n_jacobi_unsigned(ulong x, ulong y) noexcept + ulong n_addmod(ulong a, ulong b, ulong n) noexcept + ulong n_submod(ulong a, ulong b, ulong n) noexcept + ulong n_invmod(ulong x, ulong y) noexcept + ulong n_powmod_precomp(ulong a, mp_limb_signed_t exp, ulong n, double npre) noexcept + ulong n_powmod_ui_precomp(ulong a, ulong exp, ulong n, double npre) noexcept + ulong n_powmod(ulong a, mp_limb_signed_t exp, ulong n) noexcept + ulong n_powmod2_preinv(ulong a, mp_limb_signed_t exp, ulong n, ulong ninv) noexcept + ulong n_powmod2(ulong a, mp_limb_signed_t exp, ulong n) noexcept + ulong n_powmod2_ui_preinv(ulong a, ulong exp, ulong n, ulong ninv) noexcept + ulong n_powmod2_fmpz_preinv(ulong a, const fmpz_t exp, ulong n, ulong ninv) noexcept + ulong n_sqrtmod(ulong a, ulong p) noexcept + slong n_sqrtmod_2pow(ulong ** sqrt, ulong a, slong exp) noexcept + slong n_sqrtmod_primepow(ulong ** sqrt, ulong a, ulong p, slong exp) noexcept + slong n_sqrtmodn(ulong ** sqrt, ulong a, n_factor_t * fac) noexcept + mp_limb_t n_mulmod_shoup(mp_limb_t w, mp_limb_t t, mp_limb_t w_precomp, mp_limb_t p) noexcept + mp_limb_t n_mulmod_precomp_shoup(mp_limb_t w, mp_limb_t p) noexcept + int n_divides(mp_limb_t * q, mp_limb_t n, mp_limb_t p) noexcept + void n_primes_init(n_primes_t it) noexcept + void n_primes_clear(n_primes_t it) noexcept + ulong n_primes_next(n_primes_t it) noexcept + void n_primes_jump_after(n_primes_t it, ulong n) noexcept + void n_primes_extend_small(n_primes_t it, ulong bound) noexcept + void n_primes_sieve_range(n_primes_t it, ulong a, ulong b) noexcept + void n_compute_primes(ulong num_primes) noexcept + const ulong * n_primes_arr_readonly(ulong num_primes) noexcept + const double * n_prime_inverses_arr_readonly(ulong n) noexcept + void n_cleanup_primes() noexcept + ulong n_nextprime(ulong n, int proved) noexcept + ulong n_prime_pi(ulong n) noexcept + void n_prime_pi_bounds(ulong * lo, ulong * hi, ulong n) noexcept + ulong n_nth_prime(ulong n) noexcept + void n_nth_prime_bounds(ulong * lo, ulong * hi, ulong n) noexcept + bint n_is_oddprime_small(ulong n) noexcept + bint n_is_oddprime_binary(ulong n) noexcept + bint n_is_prime_pocklington(ulong n, ulong iterations) noexcept + bint n_is_prime_pseudosquare(ulong n) noexcept + bint n_is_prime(ulong n) noexcept + bint n_is_strong_probabprime_precomp(ulong n, double npre, ulong a, ulong d) noexcept + bint n_is_strong_probabprime2_preinv(ulong n, ulong ninv, ulong a, ulong d) noexcept + bint n_is_probabprime_fermat(ulong n, ulong i) noexcept + bint n_is_probabprime_fibonacci(ulong n) noexcept + bint n_is_probabprime_BPSW(ulong n) noexcept + bint n_is_probabprime_lucas(ulong n) noexcept + bint n_is_probabprime(ulong n) noexcept + ulong n_CRT(ulong r1, ulong m1, ulong r2, ulong m2) noexcept + ulong n_sqrt(ulong a) noexcept + ulong n_sqrtrem(ulong * r, ulong a) noexcept + bint n_is_square(ulong x) noexcept + bint n_is_perfect_power235(ulong n) noexcept + bint n_is_perfect_power(ulong * root, ulong n) noexcept + ulong n_rootrem(ulong * remainder, ulong n, ulong root) noexcept + ulong n_cbrt(ulong n) noexcept + ulong n_cbrt_newton_iteration(ulong n) noexcept + ulong n_cbrt_binary_search(ulong n) noexcept + ulong n_cbrt_chebyshev_approx(ulong n) noexcept + ulong n_cbrtrem(ulong * remainder, ulong n) noexcept + void n_factor_init(n_factor_t * factors) noexcept + int n_remove(ulong * n, ulong p) noexcept + int n_remove2_precomp(ulong * n, ulong p, double ppre) noexcept + void n_factor_insert(n_factor_t * factors, ulong p, ulong exp) noexcept + ulong n_factor_trial_range(n_factor_t * factors, ulong n, ulong start, ulong num_primes) noexcept + ulong n_factor_trial(n_factor_t * factors, ulong n, ulong num_primes) noexcept + ulong n_factor_power235(ulong * exp, ulong n) noexcept + ulong n_factor_one_line(ulong n, ulong iters) noexcept + ulong n_factor_lehman(ulong n) noexcept + ulong n_factor_SQUFOF(ulong n, ulong iters) noexcept + void n_factor(n_factor_t * factors, ulong n, int proved) noexcept + ulong n_factor_trial_partial(n_factor_t * factors, ulong n, ulong * prod, ulong num_primes, ulong limit) noexcept + ulong n_factor_partial(n_factor_t * factors, ulong n, ulong limit, int proved) noexcept + ulong n_factor_pp1(ulong n, ulong B1, ulong c) noexcept + ulong n_factor_pp1_wrapper(ulong n) noexcept + int n_factor_pollard_brent_single(mp_limb_t * factor, mp_limb_t n, mp_limb_t ninv, mp_limb_t ai, mp_limb_t xi, mp_limb_t normbits, mp_limb_t max_iters) noexcept + int n_factor_pollard_brent(mp_limb_t * factor, flint_rand_t state, mp_limb_t n_in, mp_limb_t max_tries, mp_limb_t max_iters) noexcept + int n_moebius_mu(ulong n) noexcept + void n_moebius_mu_vec(int * mu, ulong len) noexcept + bint n_is_squarefree(ulong n) noexcept + ulong n_euler_phi(ulong n) noexcept + ulong n_factorial_fast_mod2_preinv(ulong n, ulong p, ulong pinv) noexcept + ulong n_factorial_mod2_preinv(ulong n, ulong p, ulong pinv) noexcept + ulong n_primitive_root_prime_prefactor(ulong p, n_factor_t * factors) noexcept + ulong n_primitive_root_prime(ulong p) noexcept + ulong n_discrete_log_bsgs(ulong b, ulong a, ulong n) noexcept + void n_factor_ecm_double(mp_limb_t * x, mp_limb_t * z, mp_limb_t x0, mp_limb_t z0, mp_limb_t n, n_ecm_t n_ecm_inf) noexcept + void n_factor_ecm_add(mp_limb_t * x, mp_limb_t * z, mp_limb_t x1, mp_limb_t z1, mp_limb_t x2, mp_limb_t z2, mp_limb_t x0, mp_limb_t z0, mp_limb_t n, n_ecm_t n_ecm_inf) noexcept + void n_factor_ecm_mul_montgomery_ladder(mp_limb_t * x, mp_limb_t * z, mp_limb_t x0, mp_limb_t z0, mp_limb_t k, mp_limb_t n, n_ecm_t n_ecm_inf) noexcept + int n_factor_ecm_select_curve(mp_limb_t * f, mp_limb_t sigma, mp_limb_t n, n_ecm_t n_ecm_inf) noexcept + int n_factor_ecm_stage_I(mp_limb_t * f, const mp_limb_t * prime_array, mp_limb_t num, mp_limb_t B1, mp_limb_t n, n_ecm_t n_ecm_inf) noexcept + int n_factor_ecm_stage_II(mp_limb_t * f, mp_limb_t B1, mp_limb_t B2, mp_limb_t P, mp_limb_t n, n_ecm_t n_ecm_inf) noexcept + int n_factor_ecm(mp_limb_t * f, mp_limb_t curves, mp_limb_t B1, mp_limb_t B2, flint_rand_t state, mp_limb_t n) noexcept diff --git a/src/sage/libs/flint/ulong_extras.pyx b/src/sage/libs/flint/ulong_extras.pyx index 10255a96f1c..e4eee95b119 100644 --- a/src/sage/libs/flint/ulong_extras.pyx +++ b/src/sage/libs/flint/ulong_extras.pyx @@ -1,16 +1,20 @@ -def n_factor_to_list(unsigned long n, int proved): - """ - A wrapper around ``n_factor``. +r""" +Deprecated modules. - EXAMPLES:: +Functions were moved in ulong_extras_sage.pyx - sage: from sage.libs.flint.ulong_extras import n_factor_to_list - sage: n_factor_to_list(60, 20) - [(2, 2), (3, 1), (5, 1)] - sage: n_factor_to_list((10**6).next_prime() + 1, 0) - [(2, 2), (53, 2), (89, 1)] - """ - cdef n_factor_t f - n_factor_init(&f) - n_factor(&f, n, proved) - return [(f.p[i], int(f.exp[i])) for i in range(f.num)] +TESTS:: + + sage: from sage.libs.flint.ulong_extras import n_factor_to_list + sage: n_factor_to_list(60, 20) + doctest:warning + ... + DeprecationWarning: + Importing n_factor_to_list from here is deprecated; please use "from sage.libs.flint.ulong_extras_sage import n_factor_to_list" instead. + See https://github.com/sagemath/sage/issues/36449 for details. + [(2, 2), (3, 1), (5, 1)] +""" + +from sage.misc.lazy_import import LazyImport + +n_factor_to_list = LazyImport('sage.libs.flint.ulong_extras_sage', 'n_factor_to_list', deprecation=36449) diff --git a/src/sage/libs/flint/ulong_extras_sage.pyx b/src/sage/libs/flint/ulong_extras_sage.pyx new file mode 100644 index 00000000000..da2503d9fb7 --- /dev/null +++ b/src/sage/libs/flint/ulong_extras_sage.pyx @@ -0,0 +1,20 @@ +from .types cimport n_factor_t +from .ulong_extras cimport n_factor_init, n_factor + + +def n_factor_to_list(unsigned long n, int proved): + """ + A wrapper around ``n_factor``. + + EXAMPLES:: + + sage: from sage.libs.flint.ulong_extras_sage import n_factor_to_list + sage: n_factor_to_list(60, 20) + [(2, 2), (3, 1), (5, 1)] + sage: n_factor_to_list((10**6).next_prime() + 1, 0) + [(2, 2), (53, 2), (89, 1)] + """ + cdef n_factor_t f + n_factor_init(&f) + n_factor(&f, n, proved) + return [(f.p[i], int(f.exp[i])) for i in range(f.num)] diff --git a/src/sage/libs/linbox/linbox_flint_interface.pyx b/src/sage/libs/linbox/linbox_flint_interface.pyx index 37a340c457f..ed3fa183032 100644 --- a/src/sage/libs/linbox/linbox_flint_interface.pyx +++ b/src/sage/libs/linbox/linbox_flint_interface.pyx @@ -37,7 +37,8 @@ from sage.libs.gmp.types cimport mpz_t from sage.libs.flint.types cimport fmpz_t from sage.libs.flint.fmpz cimport fmpz_get_mpz, fmpz_set_mpz from sage.libs.flint.fmpz_mat cimport fmpz_mat_entry, fmpz_mat_nrows, fmpz_mat_ncols -from sage.libs.flint.fmpz_poly cimport fmpz_poly_set_coeff_mpz, fmpz_poly_fit_length, _fmpz_poly_set_length +from sage.libs.flint.fmpz_poly cimport fmpz_poly_fit_length, _fmpz_poly_set_length +from sage.libs.flint.fmpz_poly_sage cimport fmpz_poly_set_coeff_mpz cimport sage.libs.linbox.givaro as givaro cimport sage.libs.linbox.linbox as linbox diff --git a/src/sage/libs/linkages/padics/fmpz_poly_unram.pxi b/src/sage/libs/linkages/padics/fmpz_poly_unram.pxi index afb9d191609..18f710fad36 100644 --- a/src/sage/libs/linkages/padics/fmpz_poly_unram.pxi +++ b/src/sage/libs/linkages/padics/fmpz_poly_unram.pxi @@ -32,6 +32,8 @@ from sage.rings.finite_rings.integer_mod_ring import Zmod from sage.libs.flint.fmpz cimport * from sage.libs.flint.fmpz_poly cimport * +from sage.libs.flint.fmpz_poly_sage cimport * + DEF CELEMENT_IS_PY_OBJECT = False diff --git a/src/sage/libs/linkages/padics/relaxed/flint.pxi b/src/sage/libs/linkages/padics/relaxed/flint.pxi index 3dab6ecbc30..a1cbdeedf81 100644 --- a/src/sage/libs/linkages/padics/relaxed/flint.pxi +++ b/src/sage/libs/linkages/padics/relaxed/flint.pxi @@ -19,6 +19,7 @@ AUTHOR: from sage.libs.flint.types cimport flint_rand_t from sage.libs.flint.fmpz cimport * from sage.libs.flint.fmpz_poly cimport * +from sage.libs.flint.fmpz_poly_sage cimport * cdef extern from "sage/libs/linkages/padics/relaxed/flint_helper.c": cdef void flint_randseed(flint_rand_t state, ulong seed1, ulong seed2) diff --git a/src/sage/matrix/matrix_integer_sparse.pyx b/src/sage/matrix/matrix_integer_sparse.pyx index 6c5c20dbc6b..979dbf50c4e 100644 --- a/src/sage/matrix/matrix_integer_sparse.pyx +++ b/src/sage/matrix/matrix_integer_sparse.pyx @@ -58,7 +58,8 @@ from sage.matrix.matrix cimport Matrix from sage.matrix.args cimport SparseEntry, MatrixArgs_init from sage.matrix.matrix_integer_dense cimport Matrix_integer_dense from sage.libs.flint.fmpz cimport fmpz_set_mpz, fmpz_get_mpz -from sage.libs.flint.fmpz_poly cimport fmpz_poly_fit_length, fmpz_poly_set_coeff_mpz, _fmpz_poly_set_length +from sage.libs.flint.fmpz_poly cimport fmpz_poly_fit_length, _fmpz_poly_set_length +from sage.libs.flint.fmpz_poly_sage cimport fmpz_poly_set_coeff_mpz from sage.libs.flint.fmpz_mat cimport fmpz_mat_entry from sage.matrix.matrix_modn_sparse cimport Matrix_modn_sparse diff --git a/src/sage/misc/cython.py b/src/sage/misc/cython.py index 781e02b3191..081d0562d05 100644 --- a/src/sage/misc/cython.py +++ b/src/sage/misc/cython.py @@ -638,7 +638,8 @@ def compile_and_load(code, **kwds): sage: code = ''' ....: from sage.rings.rational cimport Rational ....: from sage.rings.polynomial.polynomial_rational_flint cimport Polynomial_rational_flint - ....: from sage.libs.flint.fmpq_poly cimport fmpq_poly_length, fmpq_poly_get_coeff_mpq, fmpq_poly_set_coeff_mpq + ....: from sage.libs.flint.fmpq_poly cimport fmpq_poly_length + ....: from sage.libs.flint.fmpq_poly_sage cimport fmpq_poly_get_coeff_mpq, fmpq_poly_set_coeff_mpq ....: ....: def evaluate_at_power_of_gen(Polynomial_rational_flint f, unsigned long n): ....: assert n >= 1 diff --git a/src/sage/modular/modform/eis_series_cython.pyx b/src/sage/modular/modform/eis_series_cython.pyx index 29ba08039d7..fb8501622f6 100644 --- a/src/sage/modular/modform/eis_series_cython.pyx +++ b/src/sage/modular/modform/eis_series_cython.pyx @@ -12,7 +12,7 @@ from sage.rings.fast_arith cimport prime_range from cpython.list cimport PyList_GET_ITEM from sage.libs.flint.fmpz_poly cimport * from sage.libs.gmp.mpz cimport * -from sage.libs.flint.fmpz_poly cimport Fmpz_poly +from sage.libs.flint.fmpz_poly_sage cimport Fmpz_poly, fmpz_poly_set_coeff_mpz, fmpz_poly_scalar_mul_mpz cpdef Ek_ZZ(int k, int prec=10) noexcept: """ diff --git a/src/sage/modular/modform/vm_basis.py b/src/sage/modular/modform/vm_basis.py index e79408d6f93..38e81409287 100644 --- a/src/sage/modular/modform/vm_basis.py +++ b/src/sage/modular/modform/vm_basis.py @@ -30,7 +30,7 @@ import math -from sage.libs.flint.fmpz_poly import Fmpz_poly +from sage.libs.flint.fmpz_poly_sage import Fmpz_poly from sage.misc.verbose import verbose from sage.rings.big_oh import O as bigO from sage.rings.finite_rings.integer_mod_ring import Integers diff --git a/src/sage/modular/modsym/apply.pyx b/src/sage/modular/modsym/apply.pyx index 40488868b37..4e253c2f805 100644 --- a/src/sage/modular/modsym/apply.pyx +++ b/src/sage/modular/modsym/apply.pyx @@ -17,6 +17,7 @@ Monomial expansion of `(aX + bY)^i (cX + dY)^{j-i}` from sage.ext.stdsage cimport PY_NEW from sage.libs.flint.fmpz_poly cimport * +from sage.libs.flint.fmpz_poly_sage cimport * from sage.rings.integer cimport Integer cdef class Apply: diff --git a/src/sage/rings/complex_arb.pyx b/src/sage/rings/complex_arb.pyx index 0786de7fc81..b7384f628dc 100644 --- a/src/sage/rings/complex_arb.pyx +++ b/src/sage/rings/complex_arb.pyx @@ -161,7 +161,7 @@ from cpython.complex cimport PyComplex_FromDoubles from sage.ext.stdsage cimport PY_NEW from sage.libs.mpfr cimport MPFR_RNDU, MPFR_RNDD, MPFR_PREC_MIN, mpfr_get_d_2exp -from sage.libs.arb.types cimport ARF_RND_NEAR +from sage.libs.arb.types cimport ARF_RND_NEAR, arf_t, mag_t from sage.libs.arb.arb cimport * from sage.libs.arb.acb cimport * from sage.libs.arb.acb_calc cimport * diff --git a/src/sage/rings/factorint_flint.pyx b/src/sage/rings/factorint_flint.pyx index 7e08edafa97..cc50af04a1c 100644 --- a/src/sage/rings/factorint_flint.pyx +++ b/src/sage/rings/factorint_flint.pyx @@ -20,6 +20,7 @@ from cysignals.signals cimport sig_on, sig_off from sage.libs.flint.fmpz cimport fmpz_t, fmpz_init, fmpz_set_mpz from sage.libs.flint.fmpz_factor cimport * +from sage.libs.flint.fmpz_factor_sage cimport * from sage.rings.integer cimport Integer diff --git a/src/sage/rings/integer.pyx b/src/sage/rings/integer.pyx index 415b0ff7d80..5ab123db069 100644 --- a/src/sage/rings/integer.pyx +++ b/src/sage/rings/integer.pyx @@ -3996,7 +3996,7 @@ cdef class Integer(sage.structure.element.EuclideanDomainElement): global n_factor_to_list if n_factor_to_list is None: try: - from sage.libs.flint.ulong_extras import n_factor_to_list + from sage.libs.flint.ulong_extras_sage import n_factor_to_list except ImportError: pass if n_factor_to_list is not None: @@ -4042,7 +4042,7 @@ cdef class Integer(sage.structure.element.EuclideanDomainElement): message = "the factorization returned by qsieve may be incomplete (the factors may not be prime) or even wrong; see qsieve? for details" from warnings import warn warn(message, RuntimeWarning, stacklevel=5) - from sage.libs.flint.qsieve import qsieve + from sage.libs.flint.qsieve_sage import qsieve F = qsieve(n) F.sort() return IntegerFactorization(F, unit=unit, unsafe=True, diff --git a/src/sage/rings/polynomial/evaluation_flint.pyx b/src/sage/rings/polynomial/evaluation_flint.pyx index 94204c0556b..fef3bddecb5 100644 --- a/src/sage/rings/polynomial/evaluation_flint.pyx +++ b/src/sage/rings/polynomial/evaluation_flint.pyx @@ -33,6 +33,8 @@ from sage.libs.gmp.mpz cimport * from sage.libs.gmp.mpq cimport * from sage.libs.flint.fmpz cimport * from sage.libs.flint.fmpz_poly cimport * +from sage.libs.flint.fmpz_poly_sage cimport * + cdef fmpz_poly_evaluation_mpfr(mpfr_t res, const fmpz_poly_t poly, const mpfr_t a) noexcept: cdef mpz_t c diff --git a/src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx b/src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx index c9d196ff893..fc0e2431b9c 100644 --- a/src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx +++ b/src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx @@ -64,6 +64,7 @@ from sage.arith.functions import lcm from sage.libs.arb.arb_fmpz_poly cimport arb_fmpz_poly_evaluate_arb, arb_fmpz_poly_evaluate_acb from sage.libs.flint.fmpz cimport * from sage.libs.flint.fmpz_poly cimport * +from sage.libs.flint.fmpz_poly_sage cimport * from sage.libs.flint.types cimport ulong, fmpz_poly_t from sage.libs.flint.ntl_interface cimport fmpz_set_ZZ, fmpz_poly_set_ZZX, fmpz_poly_get_ZZX from sage.libs.ntl.ZZX cimport * diff --git a/src/sage/rings/polynomial/polynomial_rational_flint.pyx b/src/sage/rings/polynomial/polynomial_rational_flint.pyx index 4b752edc8b0..8dd23a143a1 100644 --- a/src/sage/rings/polynomial/polynomial_rational_flint.pyx +++ b/src/sage/rings/polynomial/polynomial_rational_flint.pyx @@ -37,6 +37,7 @@ from sage.libs.flint.fmpz cimport * from sage.libs.flint.fmpq cimport * from sage.libs.flint.fmpz_poly cimport * from sage.libs.flint.fmpq_poly cimport * +from sage.libs.flint.fmpq_poly_sage cimport * from sage.interfaces.singular import singular as singular_default diff --git a/src/sage/schemes/elliptic_curves/descent_two_isogeny.pyx b/src/sage/schemes/elliptic_curves/descent_two_isogeny.pyx index 66d679a1241..01626ef03ea 100644 --- a/src/sage/schemes/elliptic_curves/descent_two_isogeny.pyx +++ b/src/sage/schemes/elliptic_curves/descent_two_isogeny.pyx @@ -25,7 +25,9 @@ import sage.libs.ntl.all as ntl from sage.rings.integer cimport Integer from sage.libs.gmp.mpz cimport * from sage.libs.flint.fmpz_poly cimport * +from sage.libs.flint.fmpz_poly_sage cimport * from sage.libs.flint.nmod_poly cimport * +from sage.libs.flint.nmod_poly_factor cimport * from sage.libs.flint.ulong_extras cimport * from cypari2.paridecl cimport (GEN, cgetg, t_POL, set_gel, gel, stoi, lg, diff --git a/src/sage_setup/autogen/flint/README.md b/src/sage_setup/autogen/flint/README.md new file mode 100644 index 00000000000..cd693904a53 --- /dev/null +++ b/src/sage_setup/autogen/flint/README.md @@ -0,0 +1,30 @@ +Autogeneration of flint header files for SageMath +================================================= + +The scripts in this folder are responsible for the automatic generation of the +Cython header files in `$SAGE_ROOT/src/sage/libs/flint/`. To make the +autogeneration + +1. Obtain a clone of the flint repo, eg `git clone + https://github.com/flintlib/flint2` + +2. Checkout to the appropriate commit, eg `git checkout v2.9.0` + +3. Possibly adjust the content of `types.pxd.template` (which will be used to + generate types.pxd) + +4. Set the environment variable `FLINT_GIT_DIR` + +5. Run the `flint_autogen.py` script eg `python + $SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py`. The script writes down + the headers in the sage source tree `$SAGE_ROOT/src/sage/libs/flint/`. + + +Additional notes +---------------- + +- macros in flint documentation are not converted into cython declarations + (because they lack a signature). The cython signature of flint macros must be + manually written down in the files contained + `SAGE_SRC/sage/src/sage_setup/autogen/flint/macros` + See https://github.com/flintlib/flint/issues/1529. diff --git a/src/sage_setup/autogen/flint/__init__.py b/src/sage_setup/autogen/flint/__init__.py new file mode 100644 index 00000000000..c2c0601a864 --- /dev/null +++ b/src/sage_setup/autogen/flint/__init__.py @@ -0,0 +1,12 @@ +#***************************************************************************** +# Copyright (C) 2023 Vincent Delecroix <20100.delecroix@gmail.com> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# http://www.gnu.org/licenses/ +#***************************************************************************** + +from .env import AUTOGEN_DIR +from .writer import write_flint_cython_headers diff --git a/src/sage_setup/autogen/flint/env.py b/src/sage_setup/autogen/flint/env.py new file mode 100644 index 00000000000..ce8ebed4f07 --- /dev/null +++ b/src/sage_setup/autogen/flint/env.py @@ -0,0 +1,20 @@ +#***************************************************************************** +# Copyright (C) 2023 Vincent Delecroix <20100.delecroix@gmail.com> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# http://www.gnu.org/licenses/ +#***************************************************************************** + +import os + + +AUTOGEN_DIR = os.path.dirname(os.path.realpath(__file__)) +FLINT_GIT_DIR = os.environ.get('FLINT_GIT_DIR', '') +FLINT_INCLUDE_DIR = os.path.join(FLINT_GIT_DIR, 'src') +FLINT_DOC_DIR = os.path.join(FLINT_GIT_DIR, 'doc/source') + +if not os.path.isdir(FLINT_GIT_DIR) or not os.path.isdir(FLINT_INCLUDE_DIR) or not os.path.isdir(FLINT_DOC_DIR): + raise ValueError('FLINT_GIT_DIR (={}) environment variable must be set to the location of flint sources'.format(FLINT_GIT_DIR)) diff --git a/src/sage_setup/autogen/flint/macros/acb_macros.pxd b/src/sage_setup/autogen/flint/macros/acb_macros.pxd new file mode 100644 index 00000000000..26ef61206bc --- /dev/null +++ b/src/sage_setup/autogen/flint/macros/acb_macros.pxd @@ -0,0 +1,8 @@ +# Macros from acb.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + arb_ptr acb_realref(acb_t x) + arb_ptr acb_imagref(acb_t x) diff --git a/src/sage_setup/autogen/flint/macros/acb_mat_macros.pxd b/src/sage_setup/autogen/flint/macros/acb_mat_macros.pxd new file mode 100644 index 00000000000..36b95b8f6df --- /dev/null +++ b/src/sage_setup/autogen/flint/macros/acb_mat_macros.pxd @@ -0,0 +1,9 @@ +# Macros from acb_mat.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + acb_ptr acb_mat_entry(acb_mat_t mat, slong i, slong j) + slong acb_mat_nrows(acb_mat_t) + slong acb_mat_ncols(acb_mat_t) diff --git a/src/sage_setup/autogen/flint/macros/acb_poly_macros.pxd b/src/sage_setup/autogen/flint/macros/acb_poly_macros.pxd new file mode 100644 index 00000000000..7fa5b0fe852 --- /dev/null +++ b/src/sage_setup/autogen/flint/macros/acb_poly_macros.pxd @@ -0,0 +1,7 @@ +# Macros from acb_poly.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + acb_ptr acb_poly_get_coeff_ptr(acb_poly_t p, ulong n) diff --git a/src/sage_setup/autogen/flint/macros/arb_macros.pxd b/src/sage_setup/autogen/flint/macros/arb_macros.pxd new file mode 100644 index 00000000000..46f9a516434 --- /dev/null +++ b/src/sage_setup/autogen/flint/macros/arb_macros.pxd @@ -0,0 +1,8 @@ +# Macros from arb.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + arf_ptr arb_midref(arb_t x) + mag_ptr arb_radref(arb_t x) diff --git a/src/sage_setup/autogen/flint/macros/arb_mat_macros.pxd b/src/sage_setup/autogen/flint/macros/arb_mat_macros.pxd new file mode 100644 index 00000000000..c7bc5dfcad9 --- /dev/null +++ b/src/sage_setup/autogen/flint/macros/arb_mat_macros.pxd @@ -0,0 +1,9 @@ +# Macros from arb_mat.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + arb_ptr arb_mat_entry(arb_mat_t mat, slong i, slong j) + slong arb_mat_nrows(arb_mat_t) + slong arb_mat_ncols(arb_mat_t) diff --git a/src/sage_setup/autogen/flint/macros/fmpq_mat_macros.pxd b/src/sage_setup/autogen/flint/macros/fmpq_mat_macros.pxd new file mode 100644 index 00000000000..45720b0511a --- /dev/null +++ b/src/sage_setup/autogen/flint/macros/fmpq_mat_macros.pxd @@ -0,0 +1,9 @@ +# Macros from fmpq_mat.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + fmpq * fmpq_mat_entry(fmpq_mat_t mat, slong i, slong j) + slong fmpq_mat_nrows(fmpq_mat_t) + slong fmpq_mat_ncols(fmpq_mat_t) diff --git a/src/sage_setup/autogen/flint/macros/fmpz_macros.pxd b/src/sage_setup/autogen/flint/macros/fmpz_macros.pxd new file mode 100644 index 00000000000..4256a213c21 --- /dev/null +++ b/src/sage_setup/autogen/flint/macros/fmpz_macros.pxd @@ -0,0 +1,7 @@ +# Macros from fmpz_poly.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + bint COEFF_IS_MPZ(fmpz f) diff --git a/src/sage_setup/autogen/flint/macros/fmpz_mat_macros.pxd b/src/sage_setup/autogen/flint/macros/fmpz_mat_macros.pxd new file mode 100644 index 00000000000..3aa4ef5ada0 --- /dev/null +++ b/src/sage_setup/autogen/flint/macros/fmpz_mat_macros.pxd @@ -0,0 +1,9 @@ +# Macros from fmpz_mat.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + fmpz * fmpz_mat_entry(fmpz_mat_t mat, slong i, slong j) + slong fmpz_mat_nrows(fmpz_mat_t) + slong fmpz_mat_ncols(fmpz_mat_t) diff --git a/src/sage_setup/autogen/flint/macros/fmpz_poly_macros.pxd b/src/sage_setup/autogen/flint/macros/fmpz_poly_macros.pxd new file mode 100644 index 00000000000..6690d8bd8bb --- /dev/null +++ b/src/sage_setup/autogen/flint/macros/fmpz_poly_macros.pxd @@ -0,0 +1,7 @@ +# Macros from fmpz_poly.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + fmpz * fmpz_poly_get_coeff_ptr(fmpz_poly_t p, ulong n) diff --git a/src/sage_setup/autogen/flint/macros/mag_macros.pxd b/src/sage_setup/autogen/flint/macros/mag_macros.pxd new file mode 100644 index 00000000000..836fc681fd1 --- /dev/null +++ b/src/sage_setup/autogen/flint/macros/mag_macros.pxd @@ -0,0 +1,7 @@ +# Macros from mag.h +# See https://github.com/flintlib/flint/issues/1529 + +from .types cimport * + +cdef extern from "flint_wrap.h": + long MAG_BITS diff --git a/src/sage_setup/autogen/flint/reader.py b/src/sage_setup/autogen/flint/reader.py new file mode 100644 index 00000000000..671fe5c491d --- /dev/null +++ b/src/sage_setup/autogen/flint/reader.py @@ -0,0 +1,254 @@ +r""" +Extraction of function, macros, types from flint documentation. +""" + +#***************************************************************************** +# Copyright (C) 2023 Vincent Delecroix <20100.delecroix@gmail.com> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# http://www.gnu.org/licenses/ +#***************************************************************************** + +import os +from .env import FLINT_INCLUDE_DIR, FLINT_DOC_DIR + + +class Extractor: + r""" + Tool to extract function declarations from a flint .rst file + """ + NONE = 0 + DOC = 1 + FUNCTION_DECLARATION = 2 + MACRO_DECLARATION = 4 + TYPE_DECLARATION = 8 + + def __init__(self, filename): + self.filename = filename + if not filename.endswith('.rst'): + raise ValueError + + # Attributes that are modified throughout the document parsing + self.state = self.NONE # position in the documentation + self.section = None # current section + self.content = {} # section -> list of pairs (function signatures, func documentation) + self.functions = [] # current list of pairs (function signatures, func documentation) + self.signatures = [] # current list of function/macro/type signatures + self.doc = [] # current function documentation + + with open(filename) as f: + text = f.read() + self.lines = text.splitlines() + self.i = 0 + + def run(self): + while self.process_line(): + pass + if self.state & self.FUNCTION_DECLARATION: + self.add_function() + if self.state & self.MACRO_DECLARATION: + self.add_macro() + if self.functions: + self.update_section() + self.state = self.NONE + + def update_section(self): + if self.section not in self.content: + self.content[self.section] = [] + self.content[self.section] += tuple(self.functions) + self.functions.clear() + + def clean_doc(self): + # Remove empty lines at the end of documentation + while self.doc and not self.doc[-1]: + self.doc.pop() + + for i, line in enumerate(self.doc): + # To make sage linter happier + line = line.replace('\\choose ', 'choose ') + self.doc[i] = line + + @staticmethod + def has_boolean_return_type(func_signature): + r""" + Determine whether the function func_signature has a boolean return type. + + If so, it will be declared in Cython as `bint` rather than `int`. + """ + if func_signature.count('(') != 1 or func_signature.count(')') != 1: + return False + + j = func_signature.index('(') + func_name = func_signature[:j].strip().split() + if len(func_name) != 2: + return False + + return_type = func_name[0] + if return_type != 'int': + return False + + func_name = func_name[1] + + return func_name.startswith('is_') or \ + '_is_' in func_name or \ + func_name.endswith('_eq') or \ + func_name.endswith('_ne') or \ + func_name.endswith('_lt') or \ + func_name.endswith('_le') or \ + func_name.endswith('_gt') or \ + func_name.endswith('_ge') or \ + '_contains_' in func_name or \ + func_name.endswith('_contains') or \ + '_equal_' in func_name or \ + func_name.endswith('_equal') or \ + func_name.endswith('_overlaps') + + def clean_signatures(self): + if (self.state & self.FUNCTION_DECLARATION) or (self.state & self.MACRO_DECLARATION): + for i, func_signature in enumerate(self.signatures): + replacement = [('(void)', '()'), (' enum ', ' ')] + for bad_type, good_type in replacement: + func_signature = func_signature.replace(bad_type, good_type) + + bad_arg_names = [('in', 'input'), ('lambda', 'lmbda'), ('iter', 'it'), ('is', 'iis')] + replacements = [(pattern.format(bad), pattern.format(good)) for pattern in [' {},', ' {})', '*{},', '*{})'] for bad, good in bad_arg_names] + for bad_form, good_form in replacements: + func_signature = func_signature.replace(bad_form, good_form) + + if self.has_boolean_return_type(func_signature): + func_signature = func_signature.strip() + if not func_signature.startswith('int '): + raise RuntimeError + func_signature = 'b' + func_signature + + self.signatures[i] = func_signature + + def add_declaration(self): + if self.state & self.FUNCTION_DECLARATION: + self.add_function() + elif self.state & self.MACRO_DECLARATION: + self.add_macro() + elif self.state & self.TYPE_DECLARATION: + self.add_type() + + self.signatures.clear() + self.doc.clear() + self.state = self.NONE + + def add_function(self): + self.clean_doc() + + # Drop va_list argument + signatures = [] + for func_signature in self.signatures: + if '(' not in func_signature or ')' not in func_signature: + raise RuntimeError(func_signature) + elif 'va_list ' in func_signature: + print('Warning: va_list unsupported {}'.format(func_signature)) + else: + signatures.append(func_signature) + self.signatures = signatures + self.clean_signatures() + + self.functions.append((tuple(self.signatures), tuple(self.doc))) + + def add_macro(self): + # TODO: we might want to support auto-generation of macros + return + + def add_type(self): + # TODO: we might want to support auto-generation of types + return + + def process_line(self): + r""" + Process one line of documentation. + """ + if self.i >= len(self.lines): + return 0 + + if bool(self.state & self.FUNCTION_DECLARATION) + bool(self.state & self.MACRO_DECLARATION) + bool(self.state & self.TYPE_DECLARATION) > 1: + raise RuntimeError('self.state = {} and i = {}'.format(self.state, self.i)) + + line = self.lines[self.i] + if line.startswith('.. function::'): + self.add_declaration() + if line[13] != ' ': + print('Warning: no space {}'.format(line)) + self.signatures.append(line[13:].strip()) + self.state = self.FUNCTION_DECLARATION + self.i += 1 + elif line.startswith('.. macro::'): + self.add_declaration() + if line[10] != ' ': + print('Warning no space{}'.format(line)) + self.signatures.append(line[10:].strip()) + self.state = self.MACRO_DECLARATION + self.i += 1 + elif line.startswith('.. type::'): + # type + # NOTE: we do nothing as the documentation duplicates type declaration + # and lacks the actual list of attributes + self.add_declaration() + self.state = self.TYPE_DECLARATION + self.i += 1 + elif self.state == self.FUNCTION_DECLARATION: + if len(line) > 14 and line.startswith(' ' * 14): + # function with similar declaration + line = line[14:].strip() + if line: + self.signatures.append(line) + self.i += 1 + elif not line.strip(): + # leaving function declaration + self.state |= self.DOC + self.i += 1 + else: + raise ValueError(line) + elif self.state == self.MACRO_DECLARATION: + if len(line) > 10 and line.startswith(' ' * 10): + # macro with similar declaration + line = line[10:].strip() + if line: + self.signatures.append(line) + self.i += 1 + elif not line.strip(): + # leaving macro declaration + self.state |= self.DOC + self.i += 1 + else: + raise ValueError(line) + elif (self.state & self.DOC) and line.startswith(' '): + # function doc + line = line.strip() + if line: + self.doc.append(line) + self.i += 1 + elif self.i + 1 < len(self.lines) and self.lines[self.i + 1].startswith('----'): + # new section + self.add_declaration() + if self.functions: + self.update_section() + section = line + self.i += 2 + elif not line: + self.i += 1 + else: + self.add_declaration() + self.i += 1 + + return 1 + + +def extract_functions(filename): + r""" + OUTPUT: + + dictionary: section -> list of pairs (func_sig, doc) + """ + e = Extractor(filename) + e.run() + return e.content diff --git a/src/sage/libs/flint/flint.pyx b/src/sage_setup/autogen/flint/templates/flint_sage.pyx.template similarity index 58% rename from src/sage/libs/flint/flint.pyx rename to src/sage_setup/autogen/flint/templates/flint_sage.pyx.template index 19d76b4c867..24edaaa5945 100644 --- a/src/sage/libs/flint/flint.pyx +++ b/src/sage_setup/autogen/flint/templates/flint_sage.pyx.template @@ -6,7 +6,7 @@ TESTS: Import this module:: - sage: import sage.libs.flint.flint + sage: import sage.libs.flint.flint_sage We verify that :trac:`6919` is correctly fixed:: @@ -19,21 +19,7 @@ We verify that :trac:`6919` is correctly fixed:: """ # cimport all .pxd files to make sure they compile -cimport sage.libs.flint.arith -cimport sage.libs.flint.fmpq_poly -cimport sage.libs.flint.fmpq -cimport sage.libs.flint.fmpz_mat -cimport sage.libs.flint.fmpz_mod_poly -cimport sage.libs.flint.fmpz_poly -cimport sage.libs.flint.fmpz -cimport sage.libs.flint.fmpz_vec -cimport sage.libs.flint.fq_nmod -cimport sage.libs.flint.fq -cimport sage.libs.flint.nmod_poly -cimport sage.libs.flint.nmod_vec -cimport sage.libs.flint.padic -cimport sage.libs.flint.types -cimport sage.libs.flint.ulong_extras +{CYTHON_IMPORTS} # Try to clean up after ourselves before sage terminates. This # probably doesn't do anything if your copy of flint is re-entrant diff --git a/src/sage_setup/autogen/flint/templates/flint_wrap.h.template b/src/sage_setup/autogen/flint/templates/flint_wrap.h.template new file mode 100644 index 00000000000..27237dcb2a5 --- /dev/null +++ b/src/sage_setup/autogen/flint/templates/flint_wrap.h.template @@ -0,0 +1,43 @@ +#ifndef SAGE_FLINT_WRAP_H +#define SAGE_FLINT_WRAP_H +/* Using flint headers together in the same module as headers from + * some other libraries (pari, possibly others) as it defines the + * macros ulong and slong all over the place. + * + * What's worse is they are defined to types from GMP (mp_limb_t and + * mp_limb_signed_t respectively) which themselves can have system-dependent + * typedefs, so there is no guarantee that all these 'ulong' definitions from + * different libraries' headers will be compatible. + * + * When including flint headers in Sage it should be done through this wrapper + * to prevent confusion. We rename flint's ulong and slong to fulong and + * fslong. This is consistent with flint's other f-prefixed typedefs. + */ + +#include +#include + +/* Save previous definition of ulong if any, as pari also uses it */ +/* Should work on GCC, clang, MSVC */ +#pragma push_macro("ulong") +#undef ulong + +#include + +/* If flint was already previously included via another header (e.g. + * arb_wrap.h) then it may be necessary to redefine ulong and slong again */ + +#ifndef ulong +#define ulong mp_limb_t +#define slong mp_limb_signed_t +#endif + +{HEADER_LIST} + +#undef ulong +#undef slong +#undef mp_bitcnt_t + +#pragma pop_macro("ulong") + +#endif diff --git a/src/sage_setup/autogen/flint/templates/types.pxd.template b/src/sage_setup/autogen/flint/templates/types.pxd.template new file mode 100644 index 00000000000..a60b10839ab --- /dev/null +++ b/src/sage_setup/autogen/flint/templates/types.pxd.template @@ -0,0 +1,2072 @@ +# distutils: depends = {HEADER_LIST} + +""" +Declarations for FLINT types +""" + +#***************************************************************************** +# Copyright (C) 2014 Jeroen Demeyer +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# http://www.gnu.org/licenses/ +#***************************************************************************** + +from sage.libs.gmp.types cimport * + +# Use these typedefs in lieu of flint's ulong and slong macros +ctypedef mp_limb_t ulong +ctypedef mp_limb_signed_t slong +ctypedef mp_limb_t flint_bitcnt_t + + +cdef extern from "flint_wrap.h": + # flint/fmpz.h + ctypedef slong fmpz + ctypedef fmpz fmpz_t[1] + + mpz_ptr COEFF_TO_PTR(fmpz) + + ctypedef struct fmpz_preinvn_struct: + mp_ptr dinv + long n + mp_bitcnt_t norm + + ctypedef fmpz_preinvn_struct[1] fmpz_preinvn_t + + ctypedef struct fmpz_comb_struct: + pass + + ctypedef fmpz_comb_struct fmpz_comb_t[1] + + ctypedef struct fmpz_comb_temp_struct: + slong Alen, Tlen + fmpz * A + fmpz * T + + ctypedef fmpz_comb_temp_struct fmpz_comb_temp_t[1] + + ctypedef struct fmpz_multi_CRT_struct: + pass + + ctypedef fmpz_multi_CRT_struct fmpz_multi_CRT_t[1] + + + # flint/fmpq.h + ctypedef struct fmpq: + pass + + ctypedef fmpq fmpq_t[1] + + + # flint/arith.h + ctypedef struct trig_prod_struct: + pass + ctypedef trig_prod_struct trig_prod_t[1] + + + # flint/ulong_extras.pxd + ctypedef struct n_ecm_s: + pass + ctypedef n_ecm_s n_ecm_t[1] + + + # flint/arf.h + ctypedef enum arf_rnd_t: + ARF_RND_DOWN + ARF_RND_UP + ARF_RND_FLOOR + ARF_RND_CEIL + ARF_RND_NEAR + long ARF_PREC_EXACT + + + # flint/arf_types.h + ctypedef struct mantissa_noptr_struct: + pass + + ctypedef struct mantissa_ptr_struct: + pass + + ctypedef union mantissa_struct: + mantissa_noptr_struct noptr + mantissa_ptr_struct ptr + + ctypedef struct arf_struct: + pass + ctypedef arf_struct arf_t[1] + ctypedef arf_struct * arf_ptr + ctypedef const arf_struct * arf_srcptr + + ctypedef struct arf_interval_struct: + arf_struct a + arf_struct b + ctypedef arf_interval_struct arf_interval_t[1] + ctypedef arf_interval_struct * arf_interval_ptr + ctypedef const arf_interval_struct * arf_interval_srcptr + + + # flint/arb_types.h + ctypedef struct mag_struct: + pass + ctypedef mag_struct mag_t[1] + ctypedef mag_struct * mag_ptr + ctypedef const mag_struct * mag_srcptr + + ctypedef struct arb_struct: + pass + 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: + pass + ctypedef arb_poly_struct[1] arb_poly_t + ctypedef arb_poly_struct * arb_poly_ptr + ctypedef const arb_poly_struct * arb_poly_srcptr + + + # flint/arb_calc.h + ctypedef int (*arb_calc_func_t)(arb_ptr out, const arb_t inp, + void * param, slong order, slong prec) + + + # flint/acb.h + ctypedef struct acb_struct: + pass + ctypedef acb_struct[1] acb_t + ctypedef acb_struct * acb_ptr + ctypedef const acb_struct * acb_srcptr + + + # flint/acb_mat.h + ctypedef struct acb_mat_struct: + pass + ctypedef acb_mat_struct[1] acb_mat_t + + + # flint/acb_modular.h + ctypedef struct psl2z_struct: + fmpz a + fmpz b + fmpz c + fmpz d + ctypedef psl2z_struct psl2z_t[1] + + + # flint/acb_poly.h + ctypedef struct acb_poly_struct: + pass + ctypedef acb_poly_struct[1] acb_poly_t + ctypedef acb_poly_struct * acb_poly_ptr + ctypedef const acb_poly_struct * acb_poly_srcptr + + # flint/acb_calc.h + ctypedef struct acb_calc_integrate_opt_struct: + long deg_limit + long eval_limit + long depth_limit + bint use_heap + int verbose + ctypedef acb_calc_integrate_opt_struct acb_calc_integrate_opt_t[1] + ctypedef int (*acb_calc_func_t)(acb_ptr out, + const acb_t inp, void * param, long order, long prec) + + + # flint/acb_dft.h + ctypedef struct crt_struct: + pass + ctypedef crt_struct crt_t[1] + + ctypedef struct acb_dft_step_struct: + pass + ctypedef acb_dft_step_struct * acb_dft_step_ptr + + ctypedef struct acb_dft_cyc_struct: + pass + ctypedef acb_dft_cyc_struct acb_dft_cyc_t[1] + + ctypedef struct acb_dft_rad2_struct: + pass + ctypedef acb_dft_rad2_struct acb_dft_rad2_t[1] + + ctypedef struct acb_dft_bluestein_struct: + pass + ctypedef acb_dft_bluestein_struct acb_dft_bluestein_t[1] + + ctypedef struct acb_dft_prod_struct: + pass + ctypedef acb_dft_prod_struct acb_dft_prod_t[1] + + ctypedef struct acb_dft_crt_struct: + pass + ctypedef acb_dft_crt_struct acb_dft_crt_t[1] + + ctypedef struct acb_dft_naive_struct: + pass + ctypedef acb_dft_naive_struct acb_dft_naive_t[1] + + ctypedef struct acb_dft_pre_struct: + pass + ctypedef acb_dft_pre_struct acb_dft_pre_t[1] + + + # flint/acb_dirichlet.h + ctypedef struct acb_dirichlet_hurwitz_precomp_struct: + pass + ctypedef acb_dirichlet_hurwitz_precomp_struct acb_dirichlet_hurwitz_precomp_t[1] + + ctypedef struct acb_dirichlet_roots_struct: + pass + ctypedef acb_dirichlet_roots_struct acb_dirichlet_roots_t[1] + + ctypedef struct acb_dirichlet_platt_c_precomp_struct: + pass + ctypedef acb_dirichlet_platt_c_precomp_struct acb_dirichlet_platt_c_precomp_t[1] + + ctypedef struct acb_dirichlet_platt_i_precomp_struct: + pass + ctypedef acb_dirichlet_platt_i_precomp_struct acb_dirichlet_platt_i_precomp_t[1] + + ctypedef struct acb_dirichlet_platt_ws_precomp_struct: + pass + ctypedef acb_dirichlet_platt_ws_precomp_struct acb_dirichlet_platt_ws_precomp_t[1] + + + # flint/acb_theta.h + cdef struct acb_theta_eld_struct: + pass + ctypedef acb_theta_eld_struct acb_theta_eld_t[1] + + ctypedef void (*acb_theta_naive_worker_t)(acb_ptr, acb_srcptr, acb_srcptr, const slong *, + slong, const acb_t, const slong *, slong, slong, slong, slong) + ctypedef int (*acb_theta_ql_worker_t)(acb_ptr, acb_srcptr, acb_srcptr, + arb_srcptr, arb_srcptr, const acb_mat_t, slong, slong) + + # flint/d_mat.h + ctypedef struct d_mat_struct: + double * entries + slong r + slong c + double ** rows + + ctypedef d_mat_struct d_mat_t[1] + + + # flint/flint.h + ctypedef struct flint_rand_s: + pass + ctypedef flint_rand_s flint_rand_t[1] + + cdef long FLINT_BITS + cdef long FLINT_D_BITS + + + # flint/limb_types.h + ctypedef struct n_factor_t: + int num + unsigned long exp[15] + unsigned long p[15] + + ctypedef struct n_primes_struct: + pass + + ctypedef n_primes_struct n_primes_t[1] + + long FLINT_MAX_FACTORS_IN_LIMB + + + # flint/fmpz_factor.h + ctypedef struct ecm_s: + pass + + ctypedef ecm_s ecm_t[1] + + + # flint/fmpz_mod.h + ctypedef struct fmpz_mod_discrete_log_pohlig_hellman_entry_struct: + pass + + ctypedef struct fmpz_mod_discrete_log_pohlig_hellman_struct: + pass + + ctypedef fmpz_mod_discrete_log_pohlig_hellman_struct fmpz_mod_discrete_log_pohlig_hellman_t[1] + + + # flint/nmod_poly.h + ctypedef struct nmod_t: + mp_limb_t n + mp_limb_t ninv + mp_bitcnt_t norm + + ctypedef struct nmod_poly_multi_crt_struct: + pass + + ctypedef nmod_poly_multi_crt_struct nmod_poly_multi_crt_t[1] + + ctypedef struct nmod_berlekamp_massey_struct: + pass + + ctypedef nmod_berlekamp_massey_struct nmod_berlekamp_massey_t[1] + + + # flint/fmpz_types.h + ctypedef struct fmpz_factor_struct: + int sign + fmpz* p + ulong* exp + slong alloc + slong num + + ctypedef fmpz_factor_struct fmpz_factor_t[1] + + ctypedef struct fmpz_poly_struct: + fmpz* coeffs + long alloc + long length + + ctypedef fmpz_poly_struct fmpz_poly_t[1] + + ctypedef struct fmpz_poly_factor_struct: + pass + + ctypedef fmpz_poly_factor_struct fmpz_poly_factor_t[1] + + ctypedef struct fmpz_mat_struct: + pass + + ctypedef fmpz_mat_struct fmpz_mat_t[1] + + ctypedef struct fmpz_poly_mat_struct: + pass + + ctypedef fmpz_poly_mat_struct fmpz_poly_mat_t[1] + + ctypedef struct fmpz_mpoly_struct: + pass + + ctypedef fmpz_mpoly_struct fmpz_mpoly_t[1] + + ctypedef struct fmpz_mpoly_factor_struct: + pass + + ctypedef fmpz_mpoly_factor_struct fmpz_mpoly_factor_t[1] + + ctypedef struct fmpz_poly_q_struct: + fmpz_poly_struct *num + fmpz_poly_struct *den + + ctypedef fmpz_poly_q_struct fmpz_poly_q_t[1] + + ctypedef struct fmpz_mpoly_q_struct: + pass + + ctypedef fmpz_mpoly_q_struct fmpz_mpoly_q_t[1] + + ctypedef struct fmpzi_struct: + fmpz a + fmpz b + + ctypedef fmpzi_struct fmpzi_t[1] + + + # flint/fmpq_types.h + ctypedef struct fmpq_mat_struct: + pass + ctypedef fmpq_mat_struct fmpq_mat_t[1] + + ctypedef struct fmpq_poly_struct: + pass + ctypedef fmpq_poly_struct fmpq_poly_t[1] + + ctypedef struct fmpq_mpoly_struct: + pass + ctypedef fmpq_mpoly_struct fmpq_mpoly_t[1] + + ctypedef struct fmpq_mpoly_factor_struct: + pass + ctypedef fmpq_mpoly_factor_struct fmpq_mpoly_factor_t[1] + + + # flint/nmod_types.h + ctypedef struct nmod_mat_struct: + mp_limb_t * entries + slong r + slong c + mp_limb_t ** rows + nmod_t mod + + ctypedef nmod_mat_struct nmod_mat_t[1] + + ctypedef struct nmod_poly_struct: + mp_ptr coeffs + slong alloc + slong length + nmod_t mod + + ctypedef nmod_poly_struct nmod_poly_t[1] + + ctypedef struct nmod_poly_factor_struct: + nmod_poly_struct * p + slong *exp + slong num + slong alloc + + ctypedef nmod_poly_factor_struct nmod_poly_factor_t[1] + + ctypedef struct nmod_poly_mat_struct: + nmod_poly_struct * entries + slong r + slong c + nmod_poly_struct ** rows + mp_limb_t modulus + + ctypedef nmod_poly_mat_struct nmod_poly_mat_t[1] + + ctypedef struct nmod_mpoly_struct: + mp_limb_t * coeffs + ulong * exps + slong length + flint_bitcnt_t bits + slong coeffs_alloc + slong exps_alloc + + ctypedef nmod_mpoly_struct nmod_mpoly_t[1] + + ctypedef struct nmod_mpoly_factor_struct: + mp_limb_t constant + nmod_mpoly_struct * poly + fmpz * exp + slong num + slong alloc + + ctypedef nmod_mpoly_factor_struct nmod_mpoly_factor_t[1] + + + # flint/nmod_mpoly.h + ctypedef struct nmod_mpoly_univar_struct: + pass + ctypedef nmod_mpoly_univar_struct nmod_mpoly_univar_t[1] + + ctypedef struct nmod_mpolyu_struct: + pass + ctypedef nmod_mpolyu_struct nmod_mpolyu_t[1] + + ctypedef struct nmod_mpolyn_struct: + pass + ctypedef nmod_mpolyn_struct nmod_mpolyn_t[1] + + ctypedef struct nmod_mpolyun_struct: + pass + ctypedef nmod_mpolyun_struct nmod_mpolyun_t[1] + + ctypedef struct nmod_mpolyd_struct: + pass + ctypedef nmod_mpolyd_struct nmod_mpolyd_t[1] + + ctypedef struct nmod_poly_stack_struct: + pass + ctypedef nmod_poly_stack_struct nmod_poly_stack_t[1] + + + # flint/fq_nmod_types.h + ctypedef nmod_poly_t fq_nmod_t + ctypedef nmod_poly_struct fq_nmod_struct + + ctypedef struct fq_nmod_ctx_struct: + pass + ctypedef fq_nmod_ctx_struct fq_nmod_ctx_t[1] + + ctypedef struct fq_nmod_mat_struct: + pass + ctypedef fq_nmod_mat_struct fq_nmod_mat_t[1] + + ctypedef struct fq_nmod_poly_struct: + pass + ctypedef fq_nmod_poly_struct fq_nmod_poly_t[1] + + ctypedef struct fq_nmod_poly_factor_struct: + pass + ctypedef fq_nmod_poly_factor_struct fq_nmod_poly_factor_t[1] + + + # flint2/fq_nmod_mpoly.h + ctypedef struct fq_nmod_mpoly_ctx_struct: + pass + ctypedef fq_nmod_mpoly_ctx_struct fq_nmod_mpoly_ctx_t[1] + + ctypedef struct fq_nmod_mpoly_struct: + pass + ctypedef fq_nmod_mpoly_struct fq_nmod_mpoly_t[1] + + ctypedef struct fq_nmod_mpoly_univar_struct: + pass + ctypedef fq_nmod_mpoly_univar_struct fq_nmod_mpoly_univar_t[1] + + ctypedef struct fq_nmod_mpolyu_struct: + pass + ctypedef fq_nmod_mpolyu_struct fq_nmod_mpolyu_t[1] + + ctypedef struct fq_nmod_mpolyn_struct: + pass + ctypedef fq_nmod_mpolyn_struct fq_nmod_mpolyn_t[1] + + ctypedef struct fq_nmod_mpolyun_struct: + pass + ctypedef fq_nmod_mpolyun_struct fq_nmod_mpolyun_t[1] + + ctypedef struct bad_fq_nmod_embed_struct: + pass + ctypedef bad_fq_nmod_embed_struct bad_fq_nmod_embed_t[1] + + + # flint2/fq_nmod_mpoly_factor.h + ctypedef struct fq_nmod_mpoly_factor_struct: + pass + ctypedef fq_nmod_mpoly_factor_struct fq_nmod_mpoly_factor_t[1] + + ctypedef struct fq_nmod_mpolyv_struct: + pass + ctypedef fq_nmod_mpolyv_struct fq_nmod_mpolyv_t[1] + + ctypedef struct fq_nmod_mpoly_pfrac_struct: + pass + ctypedef fq_nmod_mpoly_pfrac_struct fq_nmod_mpoly_pfrac_t[1] + + + # flint/fmpz_poly.h + ctypedef struct fmpz_poly_powers_precomp_struct: + fmpz ** powers + slong len + + ctypedef fmpz_poly_powers_precomp_struct fmpz_poly_powers_precomp_t[1] + + ctypedef struct fmpz_poly_mul_precache_struct: + mp_limb_t ** jj + slong n + slong len2 + slong loglen + slong bits2 + slong limbs + fmpz_poly_t poly2 + + ctypedef fmpz_poly_mul_precache_struct fmpz_poly_mul_precache_t[1] + + + # flint/fmpz_mod_types.h + ctypedef struct fmpz_mod_ctx_struct: + pass + + ctypedef fmpz_mod_ctx_struct fmpz_mod_ctx_t[1] + + ctypedef struct fmpz_mod_mat_struct: + fmpz_mat_t mat + fmpz_t mod + + ctypedef fmpz_mod_mat_struct fmpz_mod_mat_t[1] + + ctypedef struct fmpz_mod_poly_struct: + fmpz * coeffs + slong alloc + slong length + + ctypedef fmpz_mod_poly_struct fmpz_mod_poly_t[1] + + ctypedef struct fmpz_mod_poly_factor_struct: + fmpz_mod_poly_struct * poly + slong *exp + slong num + slong alloc + + ctypedef fmpz_mod_poly_factor_struct fmpz_mod_poly_factor_t[1] + + ctypedef struct fmpz_mod_mpoly_struct: + fmpz * coeffs + ulong * exps + slong length + flint_bitcnt_t bits + slong coeffs_alloc + slong exps_alloc + + ctypedef fmpz_mod_mpoly_struct fmpz_mod_mpoly_t[1] + + ctypedef struct fmpz_mod_mpoly_factor_struct: + fmpz_t constant + fmpz_mod_mpoly_struct * poly + fmpz * exp + slong num + slong alloc + + ctypedef fmpz_mod_mpoly_factor_struct fmpz_mod_mpoly_factor_t[1] + + + # flint/fmpq_poly.h + ctypedef struct fmpq_poly_powers_precomp_struct: + fmpq_poly_struct * powers + slong len + + ctypedef fmpq_poly_powers_precomp_struct fmpq_poly_powers_precomp_t[1] + + + # flint/fmpz_mod_poly.h: + ctypedef struct fmpz_mod_poly_res_struct: + pass + + ctypedef fmpz_mod_poly_res_struct fmpz_mod_poly_res_t[1] + + ctypedef struct fmpz_mod_poly_frobenius_powers_2exp_struct: + pass + + ctypedef fmpz_mod_poly_frobenius_powers_2exp_struct fmpz_mod_poly_frobenius_powers_2exp_t[1] + + ctypedef struct fmpz_mod_poly_frobenius_powers_struct: + pass + + ctypedef fmpz_mod_poly_frobenius_powers_struct fmpz_mod_poly_frobenius_powers_t[1] + + ctypedef struct fmpz_mod_poly_matrix_precompute_arg_t: + pass + + ctypedef struct fmpz_mod_poly_compose_mod_precomp_preinv_arg_t: + pass + + ctypedef struct fmpz_mod_poly_radix_struct: + pass + + ctypedef fmpz_mod_poly_radix_struct fmpz_mod_poly_radix_t[1] + + ctypedef struct fmpz_mod_berlekamp_massey_struct: + pass + + ctypedef fmpz_mod_berlekamp_massey_struct fmpz_mod_berlekamp_massey_t[1] + + + # flint/nmod.h + ctypedef struct nmod_discrete_log_pohlig_hellman_table_entry_struct: + pass + + ctypedef struct nmod_discrete_log_pohlig_hellman_entry_struct: + pass + + ctypedef struct nmod_discrete_log_pohlig_hellman_struct: + pass + ctypedef nmod_discrete_log_pohlig_hellman_struct nmod_discrete_log_pohlig_hellman_t[1] + + + # flint/fq_types.h + ctypedef fmpz_poly_t fq_t + ctypedef fmpz_poly_struct fq_struct + + ctypedef struct fq_ctx_struct: + pass + + ctypedef fq_ctx_struct fq_ctx_t[1] + + ctypedef struct fq_mat_struct: + pass + ctypedef fq_mat_struct fq_mat_t[1] + + ctypedef struct fq_poly_struct: + pass + ctypedef fq_poly_struct fq_poly_t[1] + + ctypedef struct fq_poly_factor_struct: + pass + ctypedef fq_poly_factor_struct fq_poly_factor_t[1] + + + # flint/fq_zech_types.h + ctypedef struct fq_zech_struct: + pass + ctypedef fq_zech_struct fq_zech_t[1] + + ctypedef struct fq_zech_ctx_struct: + pass + ctypedef fq_zech_ctx_struct fq_zech_ctx_t[1] + + ctypedef struct fq_zech_mat_struct: + pass + ctypedef fq_zech_mat_struct fq_zech_mat_t[1] + + ctypedef struct fq_zech_poly_struct: + pass + ctypedef fq_zech_poly_struct fq_zech_poly_t[1] + + ctypedef struct fq_zech_poly_factor_struct: + pass + ctypedef fq_zech_poly_factor_struct fq_zech_poly_factor_t[1] + + + # flint/padic.h + ctypedef struct padic_struct: + fmpz u + long v + + ctypedef padic_struct padic_t[1] + + cdef enum padic_print_mode: + PADIC_TERSE + PADIC_SERIES + PADIC_VAL_UNIT + + ctypedef struct padic_ctx_struct: + fmpz_t p + long N + double pinv + fmpz* pow + long min + long max + + ctypedef padic_ctx_struct padic_ctx_t[1] + + ctypedef struct padic_inv_struct: + long n + fmpz *pow + fmpz *u + + ctypedef padic_inv_struct padic_inv_t[1] + + + # flint/fmpz_mod_mpoly.h + ctypedef struct fmpz_mod_mpoly_univar_struct: + pass + ctypedef fmpz_mod_mpoly_univar_struct fmpz_mod_mpoly_univar_t[1] + + + # flint/padic_poly.h + ctypedef struct padic_poly_struct: + fmpz *coeffs + long alloc + long length + long val + long N + + ctypedef padic_poly_struct padic_poly_t[1] + + + # flint/padic_mat.h + ctypedef struct padic_mat_struct: + pass + ctypedef padic_mat_struct padic_mat_t[1] + + + # flint/qadic.h + ctypedef struct qadic_ctx_struct: + padic_ctx_struct pctx + fmpz *a + long *j + long len + char *var + + ctypedef qadic_ctx_struct qadic_ctx_t[1] + + ctypedef padic_poly_struct qadic_struct + ctypedef padic_poly_t qadic_t + + + # flint/qsieve.h + ctypedef struct prime_t: + pass + + ctypedef struct fac_t: + pass + + ctypedef struct la_col_t: + pass + + ctypedef struct hash_t: + pass + + ctypedef struct relation_t: + pass + + ctypedef struct qs_poly_s: + pass + ctypedef qs_poly_s qs_poly_t[1] + + ctypedef struct qs_s: + pass + ctypedef qs_s qs_t[1] + + + # flint/thread_pool.h + ctypedef struct thread_pool_entry_struct: + pass + + ctypedef thread_pool_entry_struct thread_pool_entry_t[1] + + ctypedef struct thread_pool_struct: + pass + + ctypedef thread_pool_struct thread_pool_t[1] + ctypedef int thread_pool_handle + + + # flint/bernoulli.h + ctypedef struct bernoulli_rev_struct: + pass + ctypedef bernoulli_rev_struct bernoulli_rev_t[1] + + + # flint/mpoly_types.h + ctypedef enum ordering_t: + ORD_LEX + ORD_DEGLEX + ORD_DEGREVLEX + + ctypedef struct mpoly_ctx_struct: + pass + ctypedef mpoly_ctx_struct mpoly_ctx_t[1] + + ctypedef struct nmod_mpoly_ctx_struct: + pass + ctypedef nmod_mpoly_ctx_struct nmod_mpoly_ctx_t[1] + + ctypedef struct fmpz_mpoly_ctx_struct: + pass + ctypedef fmpz_mpoly_ctx_struct fmpz_mpoly_ctx_t[1] + + ctypedef struct fmpq_mpoly_ctx_struct: + pass + + ctypedef fmpq_mpoly_ctx_struct fmpq_mpoly_ctx_t[1] + + ctypedef struct fmpz_mod_mpoly_ctx_struct: + pass + ctypedef fmpz_mod_mpoly_ctx_struct fmpz_mod_mpoly_ctx_t[1] + + + # flint/mpoly.h + ctypedef struct mpoly_heap_t: + pass + + ctypedef struct mpoly_nheap_t: + pass + + ctypedef struct mpoly_heap1_s: + pass + + ctypedef struct mpoly_heap_s: + pass + + ctypedef struct mpoly_rbnode_ui_struct: + pass + + ctypedef struct mpoly_rbtree_ui_struct: + pass + + ctypedef mpoly_rbtree_ui_struct mpoly_rbtree_ui_t[1] + + ctypedef struct mpoly_rbnode_fmpz_struct: + pass + + ctypedef struct mpoly_rbtree_fmpz_struct: + pass + ctypedef mpoly_rbtree_fmpz_struct mpoly_rbtree_fmpz_t[1] + + ctypedef struct mpoly_gcd_info_struct: + pass + ctypedef mpoly_gcd_info_struct mpoly_gcd_info_t[1] + + ctypedef struct mpoly_compression_struct: + pass + ctypedef mpoly_compression_struct mpoly_compression_t[1] + + ctypedef struct mpoly_univar_struct: + pass + ctypedef mpoly_univar_struct mpoly_univar_t[1] + + ctypedef struct mpoly_void_ring_struct: + pass + ctypedef mpoly_void_ring_struct mpoly_void_ring_t[1] + + ctypedef struct string_with_length_struct: + pass + + ctypedef struct mpoly_parse_struct: + pass + ctypedef mpoly_parse_struct mpoly_parse_t[1] + + + # flint/fmpz_mpoly.h + ctypedef struct fmpz_mpoly_univar_struct: + pass + ctypedef fmpz_mpoly_univar_struct fmpz_mpoly_univar_t[1] + + ctypedef struct fmpz_mpolyd_struct: + pass + ctypedef fmpz_mpolyd_struct fmpz_mpolyd_t[1] + + ctypedef struct fmpz_mpoly_vec_struct: + pass + ctypedef fmpz_mpoly_vec_struct fmpz_mpoly_vec_t[1] + + ctypedef struct fmpz_mpolyd_ctx_struct: + pass + ctypedef fmpz_mpolyd_ctx_struct fmpz_mpolyd_ctx_t[1] + + ctypedef struct fmpz_pow_cache_struct: + pass + ctypedef fmpz_pow_cache_struct fmpz_pow_cache_t[1] + + ctypedef struct fmpz_mpoly_geobucket_struct: + pass + ctypedef fmpz_mpoly_geobucket_struct fmpz_mpoly_geobucket_t[1] + + + # flint/fmpq_mpoly.h + ctypedef struct fmpq_mpoly_univar_struct: + pass + ctypedef fmpq_mpoly_univar_struct fmpq_mpoly_univar_t[1] + + + # flint/fft_small.h + ctypedef struct mpn_ctx_struct: + pass + ctypedef mpn_ctx_struct mpn_ctx_t[1] + + ctypedef struct mul_precomp_struct: + pass + + ctypedef struct nmod_poly_divrem_precomp_struct: + pass + + + # flint/nf.h + ctypedef struct nf_struct: + pass + ctypedef nf_struct nf_t[1] + + + # flint/nf_elem.h + ctypedef struct lnf_elem_struct: + pass + ctypedef lnf_elem_struct lnf_elem_t[1] + + ctypedef struct qnf_elem_struct: + pass + ctypedef qnf_elem_struct qnf_elem_t[1] + + ctypedef union nf_elem_struct: + fmpq_poly_t elem + lnf_elem_t lelem + qnf_elem_t qelem + ctypedef nf_elem_struct nf_elem_t[1] + + + # flint/machine_vectors.h + ctypedef struct vec1n: + pass + ctypedef struct vec2n: + pass + ctypedef struct vec4n: + pass + ctypedef struct vec8n: + pass + + ctypedef struct vec1d: + pass + ctypedef struct vec2d: + pass + ctypedef struct vec4d: + pass + ctypedef struct vec8d: + pass + + + # flint/calcium.h + ctypedef struct calcium_stream_struct: + pass + ctypedef calcium_stream_struct calcium_stream_t[1] + + + ctypedef enum truth_t: + T_TRUE + T_FALSE + T_UNKNOWN + + ctypedef enum calcium_func_code: + CA_QQBar + CA_Neg + CA_Add + CA_Sub + CA_Mul + CA_Div + CA_Sqrt + CA_Cbrt + CA_Root + CA_Floor + CA_Ceil + CA_Abs + CA_Sign + CA_Re + CA_Im + CA_Arg + CA_Conjugate + CA_Pi + CA_Sin + CA_Cos + CA_Exp + CA_Log + CA_Pow + CA_Tan + CA_Cot + CA_Cosh + CA_Sinh + CA_Tanh + CA_Coth + CA_Atan + CA_Acos + CA_Asin + CA_Acot + CA_Atanh + CA_Acosh + CA_Asinh + CA_Acoth + CA_Euler + CA_Gamma + CA_LogGamma + CA_Psi + CA_Erf + CA_Erfc + CA_Erfi + CA_RiemannZeta + CA_HurwitzZeta + CA_FUNC_CODE_LENGTH + + + # flint/ca.h + ctypedef union ca_elem_struct: + fmpq q + nf_elem_struct nf + fmpz_mpoly_q_struct * mpoly_q + + ctypedef struct ca_struct: + ulong field + ca_elem_struct elem + + ctypedef ca_struct ca_t[1] + ctypedef ca_struct * ca_ptr + ctypedef const ca_struct * ca_srcptr + + ctypedef struct ca_ext_qqbar: + pass + + ctypedef struct ca_ext_func_data: + pass + + ctypedef struct ca_ext_struct: + pass + + ctypedef ca_ext_struct ca_ext_t[1] + ctypedef ca_ext_struct * ca_ext_ptr + ctypedef const ca_ext_struct * ca_ext_srcptr + + ctypedef struct ca_ext_cache_struct: + pass + + ctypedef ca_ext_cache_struct ca_ext_cache_t[1] + + ctypedef struct ca_field_struct: + pass + + ctypedef ca_field_struct ca_field_t[1] + ctypedef ca_field_struct * ca_field_ptr + ctypedef const ca_field_struct * ca_field_srcptr + + ctypedef struct ca_field_cache_struct: + pass + + ctypedef ca_field_cache_struct ca_field_cache_t[1] + + cdef enum: + CA_OPT_VERBOSE + CA_OPT_PRINT_FLAGS + CA_OPT_MPOLY_ORD + CA_OPT_PREC_LIMIT + CA_OPT_QQBAR_DEG_LIMIT + CA_OPT_LOW_PREC + CA_OPT_SMOOTH_LIMIT + CA_OPT_LLL_PREC + CA_OPT_POW_LIMIT + CA_OPT_USE_GROEBNER + CA_OPT_GROEBNER_LENGTH_LIMIT + CA_OPT_GROEBNER_POLY_LENGTH_LIMIT + CA_OPT_GROEBNER_POLY_BITS_LIMIT + CA_OPT_VIETA_LIMIT + CA_OPT_TRIG_FORM + CA_OPT_NUM_OPTIONS + + ctypedef struct ca_ctx_struct: + pass + + ctypedef ca_ctx_struct ca_ctx_t[1] + + ctypedef struct ca_factor_struct: + pass + ctypedef ca_factor_struct ca_factor_t[1] + + + # flint/ca_poly.h + ctypedef struct ca_poly_struct: + pass + ctypedef ca_poly_struct ca_poly_t[1] + + ctypedef struct ca_poly_vec_struct: + pass + ctypedef ca_poly_vec_struct ca_poly_vec_t[1] + + + # flint/ca_vec.h + ctypedef struct ca_vec_struct: + pass + ctypedef ca_vec_struct ca_vec_t[1] + + + # flint/ca_mat.h + ctypedef struct ca_mat_struct: + pass + ctypedef ca_mat_struct ca_mat_t[1] + + + # flint/mpf_vec.h + ctypedef __mpf_struct mpf + + + # flint/mpf_mat.h + ctypedef struct mpf_mat_struct: + pass + ctypedef mpf_mat_struct mpf_mat_t[1] + + + # flint/mpfr_mat.h + ctypedef struct mpfr_mat_struct: + pass + ctypedef mpfr_mat_struct mpfr_mat_t[1] + + + # flint/gr.h + ctypedef int (*gr_funcptr)() + + ctypedef struct gr_stream_struct: + pass + ctypedef gr_stream_struct gr_stream_t[1] + + ctypedef void * gr_ptr + ctypedef const void * gr_srcptr + ctypedef void * gr_ctx_ptr + + ctypedef struct gr_vec_struct: + pass + ctypedef gr_vec_struct gr_vec_t[1] + + ctypedef enum gr_method: + GR_METHOD_CTX_WRITE + GR_METHOD_CTX_CLEAR + GR_METHOD_CTX_IS_RING + GR_METHOD_CTX_IS_COMMUTATIVE_RING + GR_METHOD_CTX_IS_INTEGRAL_DOMAIN + GR_METHOD_CTX_IS_FIELD + GR_METHOD_CTX_IS_UNIQUE_FACTORIZATION_DOMAIN + GR_METHOD_CTX_IS_FINITE + GR_METHOD_CTX_IS_FINITE_CHARACTERISTIC + GR_METHOD_CTX_IS_ALGEBRAICALLY_CLOSED + GR_METHOD_CTX_IS_ORDERED_RING + GR_METHOD_CTX_IS_MULTIPLICATIVE_GROUP + GR_METHOD_CTX_IS_EXACT + GR_METHOD_CTX_IS_CANONICAL + GR_METHOD_CTX_IS_THREADSAFE + GR_METHOD_CTX_HAS_REAL_PREC + GR_METHOD_CTX_SET_REAL_PREC + GR_METHOD_CTX_GET_REAL_PREC + GR_METHOD_CTX_SET_GEN_NAME + GR_METHOD_CTX_SET_GEN_NAMES + GR_METHOD_INIT + GR_METHOD_CLEAR + GR_METHOD_SWAP + GR_METHOD_SET_SHALLOW + GR_METHOD_WRITE + GR_METHOD_WRITE_N + GR_METHOD_RANDTEST + GR_METHOD_RANDTEST_NOT_ZERO + GR_METHOD_RANDTEST_SMALL + GR_METHOD_ZERO + GR_METHOD_ONE + GR_METHOD_NEG_ONE + GR_METHOD_IS_ZERO + GR_METHOD_IS_ONE + GR_METHOD_IS_NEG_ONE + GR_METHOD_EQUAL + GR_METHOD_SET + GR_METHOD_SET_UI + GR_METHOD_SET_SI + GR_METHOD_SET_FMPZ + GR_METHOD_SET_FMPQ + GR_METHOD_SET_D + GR_METHOD_SET_OTHER + GR_METHOD_SET_STR + GR_METHOD_GET_SI + GR_METHOD_GET_UI + GR_METHOD_GET_FMPZ + GR_METHOD_GET_FMPQ + GR_METHOD_GET_D + GR_METHOD_GET_FEXPR + GR_METHOD_GET_FEXPR_SERIALIZE + GR_METHOD_SET_FEXPR + GR_METHOD_NEG + GR_METHOD_ADD + GR_METHOD_ADD_UI + GR_METHOD_ADD_SI + GR_METHOD_ADD_FMPZ + GR_METHOD_ADD_FMPQ + GR_METHOD_ADD_OTHER + GR_METHOD_OTHER_ADD + GR_METHOD_SUB + GR_METHOD_SUB_UI + GR_METHOD_SUB_SI + GR_METHOD_SUB_FMPZ + GR_METHOD_SUB_FMPQ + GR_METHOD_SUB_OTHER + GR_METHOD_OTHER_SUB + GR_METHOD_MUL + GR_METHOD_MUL_UI + GR_METHOD_MUL_SI + GR_METHOD_MUL_FMPZ + GR_METHOD_MUL_FMPQ + GR_METHOD_MUL_OTHER + GR_METHOD_OTHER_MUL + GR_METHOD_ADDMUL + GR_METHOD_ADDMUL_UI + GR_METHOD_ADDMUL_SI + GR_METHOD_ADDMUL_FMPZ + GR_METHOD_ADDMUL_FMPQ + GR_METHOD_ADDMUL_OTHER + GR_METHOD_SUBMUL + GR_METHOD_SUBMUL_UI + GR_METHOD_SUBMUL_SI + GR_METHOD_SUBMUL_FMPZ + GR_METHOD_SUBMUL_FMPQ + GR_METHOD_SUBMUL_OTHER + GR_METHOD_FMA + GR_METHOD_FMS + GR_METHOD_FMMA + GR_METHOD_FMMS + GR_METHOD_MUL_TWO + GR_METHOD_SQR + GR_METHOD_MUL_2EXP_SI + GR_METHOD_MUL_2EXP_FMPZ + GR_METHOD_SET_FMPZ_2EXP_FMPZ + GR_METHOD_GET_FMPZ_2EXP_FMPZ + GR_METHOD_IS_INVERTIBLE + GR_METHOD_INV + GR_METHOD_DIV + GR_METHOD_DIV_UI + GR_METHOD_DIV_SI + GR_METHOD_DIV_FMPZ + GR_METHOD_DIV_FMPQ + GR_METHOD_DIV_OTHER + GR_METHOD_OTHER_DIV + GR_METHOD_DIVEXACT + GR_METHOD_DIVEXACT_UI + GR_METHOD_DIVEXACT_SI + GR_METHOD_DIVEXACT_FMPZ + GR_METHOD_DIVEXACT_FMPQ + GR_METHOD_DIVEXACT_OTHER + GR_METHOD_OTHER_DIVEXACT + GR_METHOD_POW + GR_METHOD_POW_UI + GR_METHOD_POW_SI + GR_METHOD_POW_FMPZ + GR_METHOD_POW_FMPQ + GR_METHOD_POW_OTHER + GR_METHOD_OTHER_POW + GR_METHOD_IS_SQUARE + GR_METHOD_SQRT + GR_METHOD_RSQRT + GR_METHOD_HYPOT + GR_METHOD_IS_PERFECT_POWER + GR_METHOD_FACTOR_PERFECT_POWER + GR_METHOD_ROOT_UI + GR_METHOD_DIVIDES + GR_METHOD_EUCLIDEAN_DIV + GR_METHOD_EUCLIDEAN_REM + GR_METHOD_EUCLIDEAN_DIVREM + GR_METHOD_GCD + GR_METHOD_LCM + GR_METHOD_FACTOR + GR_METHOD_NUMERATOR + GR_METHOD_DENOMINATOR + GR_METHOD_FLOOR + GR_METHOD_CEIL + GR_METHOD_TRUNC + GR_METHOD_NINT + GR_METHOD_CMP + GR_METHOD_CMPABS + GR_METHOD_CMP_OTHER + GR_METHOD_CMPABS_OTHER + GR_METHOD_MIN + GR_METHOD_MAX + GR_METHOD_ABS + GR_METHOD_ABS2 + GR_METHOD_I + GR_METHOD_CONJ + GR_METHOD_RE + GR_METHOD_IM + GR_METHOD_SGN + GR_METHOD_CSGN + GR_METHOD_ARG + GR_METHOD_POS_INF + GR_METHOD_NEG_INF + GR_METHOD_UINF + GR_METHOD_UNDEFINED + GR_METHOD_UNKNOWN + GR_METHOD_IS_INTEGER + GR_METHOD_IS_RATIONAL + GR_METHOD_IS_REAL + GR_METHOD_IS_POSITIVE_INTEGER + GR_METHOD_IS_NONNEGATIVE_INTEGER + GR_METHOD_IS_NEGATIVE_INTEGER + GR_METHOD_IS_NONPOSITIVE_INTEGER + GR_METHOD_IS_POSITIVE_REAL + GR_METHOD_IS_NONNEGATIVE_REAL + GR_METHOD_IS_NEGATIVE_REAL + GR_METHOD_IS_NONPOSITIVE_REAL + GR_METHOD_IS_ROOT_OF_UNITY + GR_METHOD_ROOT_OF_UNITY_UI + GR_METHOD_ROOT_OF_UNITY_UI_VEC + GR_METHOD_PI + GR_METHOD_EXP + GR_METHOD_EXPM1 + GR_METHOD_EXP_PI_I + GR_METHOD_EXP2 + GR_METHOD_EXP10 + GR_METHOD_LOG + GR_METHOD_LOG1P + GR_METHOD_LOG_PI_I + GR_METHOD_LOG2 + GR_METHOD_LOG10 + GR_METHOD_SIN + GR_METHOD_COS + GR_METHOD_SIN_COS + GR_METHOD_TAN + GR_METHOD_COT + GR_METHOD_SEC + GR_METHOD_CSC + GR_METHOD_SIN_PI + GR_METHOD_COS_PI + GR_METHOD_SIN_COS_PI + GR_METHOD_TAN_PI + GR_METHOD_COT_PI + GR_METHOD_SEC_PI + GR_METHOD_CSC_PI + GR_METHOD_SINC + GR_METHOD_SINC_PI + GR_METHOD_SINH + GR_METHOD_COSH + GR_METHOD_SINH_COSH + GR_METHOD_TANH + GR_METHOD_COTH + GR_METHOD_SECH + GR_METHOD_CSCH + GR_METHOD_ASIN + GR_METHOD_ACOS + GR_METHOD_ATAN + GR_METHOD_ATAN2 + GR_METHOD_ACOT + GR_METHOD_ASEC + GR_METHOD_ACSC + GR_METHOD_ASINH + GR_METHOD_ACOSH + GR_METHOD_ATANH + GR_METHOD_ACOTH + GR_METHOD_ASECH + GR_METHOD_ACSCH + GR_METHOD_ASIN_PI + GR_METHOD_ACOS_PI + GR_METHOD_ATAN_PI + GR_METHOD_ACOT_PI + GR_METHOD_ASEC_PI + GR_METHOD_ACSC_PI + GR_METHOD_FAC + GR_METHOD_FAC_UI + GR_METHOD_FAC_FMPZ + GR_METHOD_FAC_VEC + GR_METHOD_RFAC + GR_METHOD_RFAC_UI + GR_METHOD_RFAC_FMPZ + GR_METHOD_RFAC_VEC + GR_METHOD_BIN + GR_METHOD_BIN_UI + GR_METHOD_BIN_UIUI + GR_METHOD_BIN_VEC + GR_METHOD_BIN_UI_VEC + GR_METHOD_RISING_UI + GR_METHOD_RISING + GR_METHOD_FALLING_UI + GR_METHOD_FALLING + GR_METHOD_GAMMA + GR_METHOD_GAMMA_FMPZ + GR_METHOD_GAMMA_FMPQ + GR_METHOD_RGAMMA + GR_METHOD_LGAMMA + GR_METHOD_DIGAMMA + GR_METHOD_BETA + GR_METHOD_DOUBLEFAC + GR_METHOD_DOUBLEFAC_UI + GR_METHOD_BARNES_G + GR_METHOD_LOG_BARNES_G + GR_METHOD_HARMONIC + GR_METHOD_HARMONIC_UI + GR_METHOD_BERNOULLI_UI + GR_METHOD_BERNOULLI_FMPZ + GR_METHOD_BERNOULLI_VEC + GR_METHOD_FIB_UI + GR_METHOD_FIB_FMPZ + GR_METHOD_FIB_VEC + GR_METHOD_STIRLING_S1U_UIUI + GR_METHOD_STIRLING_S1_UIUI + GR_METHOD_STIRLING_S2_UIUI + GR_METHOD_STIRLING_S1U_UI_VEC + GR_METHOD_STIRLING_S1_UI_VEC + GR_METHOD_STIRLING_S2_UI_VEC + GR_METHOD_EULERNUM_UI + GR_METHOD_EULERNUM_FMPZ + GR_METHOD_EULERNUM_VEC + GR_METHOD_BELLNUM_UI + GR_METHOD_BELLNUM_FMPZ + GR_METHOD_BELLNUM_VEC + GR_METHOD_PARTITIONS_UI + GR_METHOD_PARTITIONS_FMPZ + GR_METHOD_PARTITIONS_VEC + GR_METHOD_CHEBYSHEV_T_FMPZ + GR_METHOD_CHEBYSHEV_U_FMPZ + GR_METHOD_CHEBYSHEV_T + GR_METHOD_CHEBYSHEV_U + GR_METHOD_JACOBI_P + GR_METHOD_GEGENBAUER_C + GR_METHOD_LAGUERRE_L + GR_METHOD_HERMITE_H + GR_METHOD_LEGENDRE_P + GR_METHOD_LEGENDRE_Q + GR_METHOD_LEGENDRE_P_ROOT_UI + GR_METHOD_SPHERICAL_Y_SI + GR_METHOD_EULER + GR_METHOD_CATALAN + GR_METHOD_KHINCHIN + GR_METHOD_GLAISHER + GR_METHOD_LAMBERTW + GR_METHOD_LAMBERTW_FMPZ + GR_METHOD_ERF + GR_METHOD_ERFC + GR_METHOD_ERFCX + GR_METHOD_ERFI + GR_METHOD_ERFINV + GR_METHOD_ERFCINV + GR_METHOD_FRESNEL_S + GR_METHOD_FRESNEL_C + GR_METHOD_FRESNEL + GR_METHOD_GAMMA_UPPER + GR_METHOD_GAMMA_LOWER + GR_METHOD_BETA_LOWER + GR_METHOD_EXP_INTEGRAL + GR_METHOD_EXP_INTEGRAL_EI + GR_METHOD_SIN_INTEGRAL + GR_METHOD_COS_INTEGRAL + GR_METHOD_SINH_INTEGRAL + GR_METHOD_COSH_INTEGRAL + GR_METHOD_LOG_INTEGRAL + GR_METHOD_DILOG + GR_METHOD_BESSEL_J + GR_METHOD_BESSEL_Y + GR_METHOD_BESSEL_J_Y + GR_METHOD_BESSEL_I + GR_METHOD_BESSEL_I_SCALED + GR_METHOD_BESSEL_K + GR_METHOD_BESSEL_K_SCALED + GR_METHOD_AIRY + GR_METHOD_AIRY_AI + GR_METHOD_AIRY_BI + GR_METHOD_AIRY_AI_PRIME + GR_METHOD_AIRY_BI_PRIME + GR_METHOD_AIRY_AI_ZERO + GR_METHOD_AIRY_BI_ZERO + GR_METHOD_AIRY_AI_PRIME_ZERO + GR_METHOD_AIRY_BI_PRIME_ZERO + GR_METHOD_COULOMB + GR_METHOD_COULOMB_F + GR_METHOD_COULOMB_G + GR_METHOD_COULOMB_HPOS + GR_METHOD_COULOMB_HNEG + GR_METHOD_ZETA + GR_METHOD_ZETA_UI + GR_METHOD_HURWITZ_ZETA + GR_METHOD_LERCH_PHI + GR_METHOD_STIELTJES + GR_METHOD_DIRICHLET_ETA + GR_METHOD_DIRICHLET_BETA + GR_METHOD_RIEMANN_XI + GR_METHOD_ZETA_ZERO + GR_METHOD_ZETA_ZERO_VEC + GR_METHOD_ZETA_NZEROS + GR_METHOD_DIRICHLET_CHI_UI + GR_METHOD_DIRICHLET_CHI_FMPZ + GR_METHOD_DIRICHLET_L + GR_METHOD_DIRICHLET_HARDY_THETA + GR_METHOD_DIRICHLET_HARDY_Z + GR_METHOD_BERNPOLY_UI + GR_METHOD_EULERPOLY_UI + GR_METHOD_POLYLOG + GR_METHOD_POLYGAMMA + GR_METHOD_HYPGEOM_0F1 + GR_METHOD_HYPGEOM_1F1 + GR_METHOD_HYPGEOM_2F0 + GR_METHOD_HYPGEOM_2F1 + GR_METHOD_HYPGEOM_U + GR_METHOD_HYPGEOM_PFQ + GR_METHOD_JACOBI_THETA + GR_METHOD_JACOBI_THETA_1 + GR_METHOD_JACOBI_THETA_2 + GR_METHOD_JACOBI_THETA_3 + GR_METHOD_JACOBI_THETA_4 + GR_METHOD_JACOBI_THETA_Q + GR_METHOD_JACOBI_THETA_Q_1 + GR_METHOD_JACOBI_THETA_Q_2 + GR_METHOD_JACOBI_THETA_Q_3 + GR_METHOD_JACOBI_THETA_Q_4 + GR_METHOD_MODULAR_J + GR_METHOD_MODULAR_LAMBDA + GR_METHOD_MODULAR_DELTA + GR_METHOD_HILBERT_CLASS_POLY + GR_METHOD_DEDEKIND_ETA + GR_METHOD_DEDEKIND_ETA_Q + GR_METHOD_EISENSTEIN_E + GR_METHOD_EISENSTEIN_G + GR_METHOD_EISENSTEIN_G_VEC + GR_METHOD_AGM + GR_METHOD_AGM1 + GR_METHOD_ELLIPTIC_K + GR_METHOD_ELLIPTIC_E + GR_METHOD_ELLIPTIC_PI + GR_METHOD_ELLIPTIC_F + GR_METHOD_ELLIPTIC_E_INC + GR_METHOD_ELLIPTIC_PI_INC + GR_METHOD_CARLSON_RF + GR_METHOD_CARLSON_RC + GR_METHOD_CARLSON_RJ + GR_METHOD_CARLSON_RG + GR_METHOD_CARLSON_RD + GR_METHOD_ELLIPTIC_ROOTS + GR_METHOD_ELLIPTIC_INVARIANTS + GR_METHOD_WEIERSTRASS_P + GR_METHOD_WEIERSTRASS_P_PRIME + GR_METHOD_WEIERSTRASS_P_INV + GR_METHOD_WEIERSTRASS_ZETA + GR_METHOD_WEIERSTRASS_SIGMA + GR_METHOD_GEN + GR_METHOD_GENS + GR_METHOD_CTX_FQ_PRIME + GR_METHOD_CTX_FQ_DEGREE + GR_METHOD_CTX_FQ_ORDER + GR_METHOD_FQ_FROBENIUS + GR_METHOD_FQ_MULTIPLICATIVE_ORDER + GR_METHOD_FQ_NORM + GR_METHOD_FQ_TRACE + GR_METHOD_FQ_IS_PRIMITIVE + GR_METHOD_FQ_PTH_ROOT + GR_METHOD_VEC_INIT + GR_METHOD_VEC_CLEAR + GR_METHOD_VEC_SWAP + GR_METHOD_VEC_SET + GR_METHOD_VEC_ZERO + GR_METHOD_VEC_EQUAL + GR_METHOD_VEC_IS_ZERO + GR_METHOD_VEC_NEG + GR_METHOD_VEC_NORMALISE + GR_METHOD_VEC_NORMALISE_WEAK + GR_METHOD_VEC_ADD + GR_METHOD_VEC_SUB + GR_METHOD_VEC_MUL + GR_METHOD_VEC_DIV + GR_METHOD_VEC_DIVEXACT + GR_METHOD_VEC_POW + GR_METHOD_VEC_ADD_SCALAR + GR_METHOD_VEC_SUB_SCALAR + GR_METHOD_VEC_MUL_SCALAR + GR_METHOD_VEC_DIV_SCALAR + GR_METHOD_VEC_DIVEXACT_SCALAR + GR_METHOD_VEC_POW_SCALAR + GR_METHOD_SCALAR_ADD_VEC + GR_METHOD_SCALAR_SUB_VEC + GR_METHOD_SCALAR_MUL_VEC + GR_METHOD_SCALAR_DIV_VEC + GR_METHOD_SCALAR_DIVEXACT_VEC + GR_METHOD_SCALAR_POW_VEC + GR_METHOD_VEC_ADD_OTHER + GR_METHOD_VEC_SUB_OTHER + GR_METHOD_VEC_MUL_OTHER + GR_METHOD_VEC_DIV_OTHER + GR_METHOD_VEC_DIVEXACT_OTHER + GR_METHOD_VEC_POW_OTHER + GR_METHOD_OTHER_ADD_VEC + GR_METHOD_OTHER_SUB_VEC + GR_METHOD_OTHER_MUL_VEC + GR_METHOD_OTHER_DIV_VEC + GR_METHOD_OTHER_DIVEXACT_VEC + GR_METHOD_OTHER_POW_VEC + GR_METHOD_VEC_ADD_SCALAR_OTHER + GR_METHOD_VEC_SUB_SCALAR_OTHER + GR_METHOD_VEC_MUL_SCALAR_OTHER + GR_METHOD_VEC_DIV_SCALAR_OTHER + GR_METHOD_VEC_DIVEXACT_SCALAR_OTHER + GR_METHOD_VEC_POW_SCALAR_OTHER + GR_METHOD_SCALAR_OTHER_ADD_VEC + GR_METHOD_SCALAR_OTHER_SUB_VEC + GR_METHOD_SCALAR_OTHER_MUL_VEC + GR_METHOD_SCALAR_OTHER_DIV_VEC + GR_METHOD_SCALAR_OTHER_DIVEXACT_VEC + GR_METHOD_SCALAR_OTHER_POW_VEC + GR_METHOD_VEC_ADD_SCALAR_SI + GR_METHOD_VEC_ADD_SCALAR_UI + GR_METHOD_VEC_ADD_SCALAR_FMPZ + GR_METHOD_VEC_ADD_SCALAR_FMPQ + GR_METHOD_VEC_SUB_SCALAR_SI + GR_METHOD_VEC_SUB_SCALAR_UI + GR_METHOD_VEC_SUB_SCALAR_FMPZ + GR_METHOD_VEC_SUB_SCALAR_FMPQ + GR_METHOD_VEC_MUL_SCALAR_SI + GR_METHOD_VEC_MUL_SCALAR_UI + GR_METHOD_VEC_MUL_SCALAR_FMPZ + GR_METHOD_VEC_MUL_SCALAR_FMPQ + GR_METHOD_VEC_DIV_SCALAR_SI + GR_METHOD_VEC_DIV_SCALAR_UI + GR_METHOD_VEC_DIV_SCALAR_FMPZ + GR_METHOD_VEC_DIV_SCALAR_FMPQ + GR_METHOD_VEC_DIVEXACT_SCALAR_SI + GR_METHOD_VEC_DIVEXACT_SCALAR_UI + GR_METHOD_VEC_DIVEXACT_SCALAR_FMPZ + GR_METHOD_VEC_DIVEXACT_SCALAR_FMPQ + GR_METHOD_VEC_POW_SCALAR_SI + GR_METHOD_VEC_POW_SCALAR_UI + GR_METHOD_VEC_POW_SCALAR_FMPZ + GR_METHOD_VEC_POW_SCALAR_FMPQ + GR_METHOD_VEC_MUL_SCALAR_2EXP_SI + GR_METHOD_VEC_MUL_SCALAR_2EXP_FMPZ + GR_METHOD_VEC_ADDMUL_SCALAR + GR_METHOD_VEC_SUBMUL_SCALAR + GR_METHOD_VEC_ADDMUL_SCALAR_SI + GR_METHOD_VEC_SUBMUL_SCALAR_SI + GR_METHOD_VEC_SUM + GR_METHOD_VEC_PRODUCT + GR_METHOD_VEC_DOT + GR_METHOD_VEC_DOT_REV + GR_METHOD_VEC_DOT_UI + GR_METHOD_VEC_DOT_SI + GR_METHOD_VEC_DOT_FMPZ + GR_METHOD_VEC_SET_POWERS + GR_METHOD_VEC_RECIPROCALS + GR_METHOD_POLY_MULLOW + GR_METHOD_POLY_DIV + GR_METHOD_POLY_DIVREM + GR_METHOD_POLY_DIVEXACT + GR_METHOD_POLY_TAYLOR_SHIFT + GR_METHOD_POLY_INV_SERIES + GR_METHOD_POLY_INV_SERIES_BASECASE + GR_METHOD_POLY_DIV_SERIES + GR_METHOD_POLY_DIV_SERIES_BASECASE + GR_METHOD_POLY_RSQRT_SERIES + GR_METHOD_POLY_SQRT_SERIES + GR_METHOD_POLY_EXP_SERIES + GR_METHOD_POLY_FACTOR + GR_METHOD_POLY_ROOTS + GR_METHOD_POLY_ROOTS_OTHER + GR_METHOD_MAT_MUL + GR_METHOD_MAT_DET + GR_METHOD_MAT_EXP + GR_METHOD_MAT_LOG + GR_METHOD_MAT_FIND_NONZERO_PIVOT + GR_METHOD_MAT_DIAGONALIZATION + GR_METHOD_TAB_SIZE + + ctypedef struct gr_method_tab_input: + pass + + ctypedef enum gr_which_structure: + GR_CTX_FMPZ + GR_CTX_FMPQ + GR_CTX_FMPZI + GR_CTX_FMPZ_MOD + GR_CTX_NMOD + GR_CTX_NMOD8 + GR_CTX_NMOD32 + GR_CTX_FQ + GR_CTX_FQ_NMOD + GR_CTX_FQ_ZECH + GR_CTX_NF + GR_CTX_REAL_ALGEBRAIC_QQBAR + GR_CTX_COMPLEX_ALGEBRAIC_QQBAR + GR_CTX_REAL_ALGEBRAIC_CA + GR_CTX_COMPLEX_ALGEBRAIC_CA + GR_CTX_RR_CA + GR_CTX_CC_CA + GR_CTX_COMPLEX_EXTENDED_CA + GR_CTX_RR_ARB + GR_CTX_CC_ACB + GR_CTX_REAL_FLOAT_ARF + GR_CTX_COMPLEX_FLOAT_ACF + GR_CTX_FMPZ_POLY + GR_CTX_FMPQ_POLY + GR_CTX_GR_POLY + GR_CTX_FMPZ_MPOLY + GR_CTX_GR_MPOLY + GR_CTX_FMPZ_MPOLY_Q + GR_CTX_GR_SERIES + GR_CTX_GR_SERIES_MOD + GR_CTX_GR_MAT + GR_CTX_GR_VEC + GR_CTX_PSL2Z + GR_CTX_DIRICHLET_GROUP + GR_CTX_PERM + GR_CTX_FEXPR + GR_CTX_UNKNOWN_DOMAIN + GR_CTX_WHICH_STRUCTURE_TAB_SIZE + + ctypedef struct gr_ctx_struct: + pass + ctypedef gr_ctx_struct gr_ctx_t[1] + + ctypedef void ((*gr_method_init_clear_op)(gr_ptr, gr_ctx_ptr)) + ctypedef void ((*gr_method_swap_op)(gr_ptr, gr_ptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_ctx)(gr_ctx_ptr)) + # NOTE: we removed an extra parenthesis so that Cython is less confused + # see https://github.com/cython/cython/issues/5779 + ctypedef truth_t (*gr_method_ctx_predicate)(gr_ctx_ptr) + ctypedef int ((*gr_method_ctx_set_si)(gr_ctx_ptr, slong)) + ctypedef int ((*gr_method_ctx_get_si)(slong *, gr_ctx_ptr)) + ctypedef int ((*gr_method_ctx_stream)(gr_stream_t, gr_ctx_ptr)) + ctypedef int ((*gr_method_ctx_set_str)(gr_ctx_ptr, const char *)) + ctypedef int ((*gr_method_ctx_set_strs)(gr_ctx_ptr, const char **)) + ctypedef int ((*gr_method_stream_in)(gr_stream_t, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_stream_in_si)(gr_stream_t, gr_srcptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_randtest)(gr_ptr, flint_rand_t state, gr_ctx_ptr)) + ctypedef int ((*gr_method_constant_op)(gr_ptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_constant_op_get_si)(slong *, gr_ctx_ptr)) + ctypedef int ((*gr_method_constant_op_get_fmpz)(fmpz_t, gr_ctx_ptr)) + ctypedef void ((*gr_method_void_unary_op)(gr_ptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op)(gr_ptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_si)(gr_ptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_ui)(gr_ptr, ulong, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_fmpz)(gr_ptr, const fmpz_t, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_fmpq)(gr_ptr, const fmpq_t, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_d)(gr_ptr, double, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_other)(gr_ptr, gr_srcptr, gr_ctx_ptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_str)(gr_ptr, const char *, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_get_ui)(ulong *, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_get_si)(slong *, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_get_fmpz)(fmpz_t, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_get_fmpq)(fmpq_t, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_get_d)(double *, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_get_fmpz_fmpz)(fmpz_t, fmpz_t, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_unary_op_with_flag)(gr_ptr, gr_srcptr, int, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_unary_op)(gr_ptr, gr_ptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_unary_op_with_flag)(gr_ptr, gr_ptr, gr_srcptr, int, gr_ctx_ptr)) + ctypedef int ((*gr_method_quaternary_unary_op)(gr_ptr, gr_ptr, gr_ptr, gr_ptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op)(gr_ptr, gr_srcptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_si)(gr_ptr, gr_srcptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_ui)(gr_ptr, gr_srcptr, ulong, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_fmpz)(gr_ptr, gr_srcptr, const fmpz_t, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_fmpz_fmpz)(gr_ptr, const fmpz_t, const fmpz_t, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_fmpz_si)(gr_ptr, const fmpz_t, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_fmpq)(gr_ptr, gr_srcptr, const fmpq_t, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_other)(gr_ptr, gr_srcptr, gr_srcptr, gr_ctx_ptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_other_binary_op)(gr_ptr, gr_srcptr, gr_ctx_ptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_si_binary_op)(gr_ptr, slong, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_ui_binary_op)(gr_ptr, ulong, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_fmpz_binary_op)(gr_ptr, const fmpz_t, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_fmpq_binary_op)(gr_ptr, const fmpq_t, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_ui_ui)(gr_ptr, ulong, ulong, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_ui_si)(gr_ptr, ulong, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_get_int)(int *, gr_srcptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_other_get_int)(int *, gr_srcptr, gr_srcptr, gr_ctx_ptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_binary_op)(gr_ptr, gr_ptr, gr_srcptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_op_with_flag)(gr_ptr, gr_srcptr, gr_srcptr, int, gr_ctx_ptr)) + ctypedef int ((*gr_method_binary_binary_op_ui_ui)(gr_ptr, gr_ptr, ulong, ulong, gr_ctx_ptr)) + ctypedef int ((*gr_method_ternary_op)(gr_ptr, gr_srcptr, gr_srcptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_ternary_op_with_flag)(gr_ptr, gr_srcptr, gr_srcptr, gr_srcptr, int, gr_ctx_ptr)) + ctypedef int ((*gr_method_ternary_unary_op)(gr_ptr, gr_ptr, gr_ptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_quaternary_op)(gr_ptr, gr_srcptr, gr_srcptr, gr_srcptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_quaternary_op_with_flag)(gr_ptr, gr_srcptr, gr_srcptr, gr_srcptr, gr_srcptr, int, gr_ctx_ptr)) + ctypedef int ((*gr_method_quaternary_binary_op)(gr_ptr, gr_ptr, gr_ptr, gr_ptr, gr_srcptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_quaternary_ternary_op)(gr_ptr, gr_ptr, gr_ptr, gr_ptr, gr_srcptr, gr_srcptr, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_si_si_quaternary_op)(gr_ptr, slong, slong, gr_srcptr, gr_srcptr, gr_ctx_ptr)) + # NOTE: we removed an extra parenthesis so that Cython is less confused + # see https://github.com/cython/cython/issues/5779 + ctypedef truth_t (*gr_method_unary_predicate)(gr_srcptr, gr_ctx_ptr) + ctypedef truth_t (*gr_method_binary_predicate)(gr_srcptr, gr_srcptr, gr_ctx_ptr) + ctypedef void ((*gr_method_vec_init_clear_op)(gr_ptr, slong, gr_ctx_ptr)) + ctypedef void ((*gr_method_vec_swap_op)(gr_ptr, gr_ptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_constant_op)(gr_ptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_op)(gr_ptr, gr_srcptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_vec_op)(gr_ptr, gr_srcptr, gr_srcptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_scalar_op)(gr_ptr, gr_srcptr, slong, gr_srcptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_scalar_vec_op)(gr_ptr, gr_srcptr, gr_srcptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_op_other)(gr_ptr, gr_srcptr, gr_srcptr, gr_ctx_ptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_other_op_vec)(gr_ptr, gr_srcptr, gr_ctx_ptr, gr_srcptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_op_scalar_other)(gr_ptr, gr_srcptr, slong, gr_srcptr, gr_ctx_ptr, gr_ctx_ptr)) + ctypedef int ((*gr_method_scalar_other_op_vec)(gr_ptr, gr_srcptr, gr_ctx_ptr, gr_srcptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_scalar_op_si)(gr_ptr, gr_srcptr, slong, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_scalar_op_ui)(gr_ptr, gr_srcptr, slong, ulong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_scalar_op_fmpz)(gr_ptr, gr_srcptr, slong, const fmpz_t, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_scalar_op_fmpq)(gr_ptr, gr_srcptr, slong, const fmpq_t, gr_ctx_ptr)) + # NOTE: we removed an extra parenthesis so that Cython is less confused + # see https://github.com/cython/cython/issues/5779 + ctypedef truth_t (*gr_method_vec_predicate)(gr_srcptr, slong, gr_ctx_ptr) + ctypedef truth_t (*gr_method_vec_vec_predicate)(gr_srcptr, gr_srcptr, slong, gr_ctx_ptr) + ctypedef int ((*gr_method_factor_op)(gr_ptr, gr_vec_t, gr_vec_t, gr_srcptr, int, gr_ctx_ptr)) + ctypedef int ((*gr_method_poly_unary_trunc_op)(gr_ptr, gr_srcptr, slong, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_poly_binary_op)(gr_ptr, gr_srcptr, slong, gr_srcptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_poly_binary_binary_op)(gr_ptr, gr_ptr, gr_srcptr, slong, gr_srcptr, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_poly_binary_trunc_op)(gr_ptr, gr_srcptr, slong, gr_srcptr, slong, slong, gr_ctx_ptr)) + ctypedef int ((*gr_method_vec_ctx_op)(gr_vec_t, gr_ctx_ptr)) + + ctypedef struct polynomial_ctx_t: + pass + + ctypedef struct vector_ctx_t: + pass + + ctypedef struct matrix_ctx_t: + pass + + + # flint/gr_poly.h + ctypedef struct gr_poly_struct: + pass + ctypedef gr_poly_struct gr_poly_t[1] + + + # flint/gr_mat.h + ctypedef struct gr_mat_struct: + pass + ctypedef gr_mat_struct gr_mat_t[1] + + + # flint/gr_mpoly.h + ctypedef struct gr_mpoly_struct: + pass + ctypedef gr_mpoly_struct gr_mpoly_t[1] + + + # flint/double_interval.h + ctypedef struct di_t: + double a + double b + + + # flint/fq_default.h + ctypedef union fq_default_struct: + fq_t fq + fq_nmod_t fq_nmod + fq_zech_t fq_zech + ulong nmod + fmpz_t fmpz_mod + ctypedef fq_default_struct fq_default_t[1] + + ctypedef struct fq_default_ctx_struct: + pass + ctypedef fq_default_ctx_struct fq_default_ctx_t[1] + + + # flint/fq_default_poly.h + ctypedef union fq_default_poly_struct: + fq_poly_t fq + fq_nmod_poly_t fq_nmod + fq_zech_poly_t fq_zech + nmod_poly_t nmod + fmpz_mod_poly_t fmpz_mod + ctypedef fq_default_poly_struct fq_default_poly_t[1] + + + # flint/fq_poly_factor.h + ctypedef union fq_default_poly_factor_struct: + fq_poly_factor_t fq + fq_nmod_poly_factor_t fq_nmod + fq_zech_poly_factor_t fq_zech + nmod_poly_factor_t nmod + fmpz_mod_poly_factor_t fmpz_mod + ctypedef fq_default_poly_factor_struct fq_default_poly_factor_t[1] + + + # flint/fq_default_mat.h + ctypedef union fq_default_mat_struct: + pass + ctypedef fq_default_mat_struct fq_default_mat_t[1] + + + # flint/qfb.h + ctypedef struct qfb: + pass + ctypedef qfb qfb_t[1] + + ctypedef struct qfb_hash_t: + pass + + + # flint/qqbar.h + ctypedef struct qqbar_struct: + pass + ctypedef qqbar_struct qqbar_t[1] + ctypedef qqbar_struct * qqbar_ptr + ctypedef const qqbar_struct * qqbar_srcptr + + + # flint/profiler.h + ctypedef struct struct_meminfo: + pass + ctypedef struct_meminfo meminfo_t[1] + + ctypedef struct struct_timeit: + pass + ctypedef struct_timeit timeit_t[1] + + ctypedef void (*profile_target_t)(void* arg, ulong count) + + + # flint/fexpr.h + ctypedef struct fexpr_struct: + pass + ctypedef fexpr_struct fexpr_t[1] + ctypedef fexpr_struct * fexpr_ptr + ctypedef const fexpr_struct * fexpr_srcptr + + ctypedef struct fexpr_vec_struct: + pass + ctypedef fexpr_vec_struct fexpr_vec_t[1] + + + # flint/hypgeom.h + ctypedef struct hypgeom_struct: + pass + ctypedef hypgeom_struct hypgeom_t[1] + + + # flint/dlog.h + ctypedef struct dlog_precomp_struct: + pass + ctypedef dlog_precomp_struct * dlog_precomp_ptr + ctypedef dlog_precomp_struct dlog_precomp_t[1] + + ctypedef struct dlog_1modpe_struct: + pass + ctypedef dlog_1modpe_struct dlog_1modpe_t[1] + + ctypedef struct dlog_modpe_struct: + pass + ctypedef dlog_modpe_struct dlog_modpe_t[1] + + ctypedef struct dlog_table_struct: + pass + ctypedef dlog_table_struct dlog_table_t[1] + + ctypedef struct apow_t: + pass + + ctypedef struct dlog_bsgs_struct: + pass + ctypedef dlog_bsgs_struct dlog_bsgs_t[1] + + ctypedef struct dlog_rho_struct: + pass + ctypedef dlog_rho_struct dlog_rho_t[1] + + ctypedef struct dlog_crt_struct: + pass + ctypedef dlog_crt_struct dlog_crt_t[1] + + ctypedef struct dlog_power_struct: + pass + ctypedef dlog_power_struct dlog_power_t[1] + + ctypedef ulong dlog_order23_t[1] + + + # flint/bool_mat.h + ctypedef struct bool_mat_struct: + pass + ctypedef bool_mat_struct bool_mat_t[1] + + + # flint/dirichlet.h + ctypedef struct dirichlet_prime_group_struct: + pass + + ctypedef struct dirichlet_group_struct: + pass + ctypedef dirichlet_group_struct dirichlet_group_t[1] + + ctypedef struct dirichlet_char_struct: + pass + ctypedef dirichlet_char_struct dirichlet_char_t[1] + + + # flint/arb_fpwrap.h + ctypedef struct complex_double: + double real + double imag + + + # flint/aprcl.h + ctypedef struct _aprcl_config: + pass + ctypedef _aprcl_config aprcl_config[1]; + + ctypedef struct _unity_zpq: + pass + ctypedef _unity_zpq unity_zpq[1] + + ctypedef struct _unity_zp: + pass + ctypedef _unity_zp unity_zp[1] + + ctypedef enum primality_test_status: + UNKNOWN + PRIME + COMPOSITE + PROBABPRIME + + + # flint/acf.h + ctypedef struct acf_struct: + pass + + ctypedef acf_struct acf_t[1] + ctypedef acf_struct * acf_ptr + ctypedef const acf_struct * acf_srcptr + + + # flint/fmpz_lll.h + ctypedef enum rep_type: + GRAM + Z_BASIS + + ctypedef enum gram_type: + APPROX + EXACT + + ctypedef struct fmpz_lll_struct: + pass + ctypedef fmpz_lll_struct fmpz_lll_t[1] + + ctypedef union fmpz_gram_union: + d_mat_t appSP + mpf_mat_t appSP2 + fmpz_mat_t exactSP + ctypedef fmpz_gram_union fmpz_gram_t[1] diff --git a/src/sage_setup/autogen/flint/writer.py b/src/sage_setup/autogen/flint/writer.py new file mode 100644 index 00000000000..e63d3c9bcf9 --- /dev/null +++ b/src/sage_setup/autogen/flint/writer.py @@ -0,0 +1,122 @@ +r""" +Write flint header files. +""" +#***************************************************************************** +# Copyright (C) 2023 Vincent Delecroix <20100.delecroix@gmail.com> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# http://www.gnu.org/licenses/ +#***************************************************************************** + +import os +import shutil +from .env import AUTOGEN_DIR, FLINT_DOC_DIR, FLINT_INCLUDE_DIR +from .reader import extract_functions + + +def write_flint_cython_headers(output_dir, documentation=False): + r""" + Write cython header files. + + Arguments + output_dir -- (string) path where to write the .pxd files + """ + header_list = [] + pxd_list = [] + for filename in os.listdir(FLINT_DOC_DIR): + if not filename.endswith('.rst'): + continue + prefix = filename[:-4] + + absolute_filename = os.path.join(FLINT_DOC_DIR, filename) + content = extract_functions(absolute_filename) + if not content: + # NOTE: skip files with no function declaration + continue + + # try to match header + header = prefix + '.h' + if prefix == 'flint': + header = header + '.in' + absolute_header = os.path.join(FLINT_INCLUDE_DIR, header) + + if not os.path.isfile(absolute_header): + print('Warning: skipping {} because no associated .h found'.format(filename)) + continue + + # TODO: below are some exceptions for which we do not create .pxd file + if prefix == 'machine_vectors' or prefix == 'fft_small': + print('Warning: ignoring machine_vectors and fft_small because architecture dependent') + continue + if prefix == 'acb_theta': + print('Warning: ignoring acb_theta because not in stable release') + continue + + header_list.append(prefix + '.h') + pxd_list.append(prefix + '.pxd') + + output = open(os.path.join(output_dir, prefix + '.pxd'), 'w') + + print('# distutils: libraries = flint', file=output) + print('# distutils: depends = flint/{}'.format(prefix + '.h'), file=output) + print(file=output) + print('#' * 80, file=output) + print('# This file is auto-generated by the script', file=output) + print('# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py.', file=output) + print('# Do not modify by hand! Fix and rerun the script instead.', file=output) + print('#' * 80, file=output) + print(file=output) + + print('from libc.stdio cimport FILE', file=output) + print('from sage.libs.gmp.types cimport *', file=output) + print('from sage.libs.mpfr.types cimport *', file=output) + print('from sage.libs.flint.types cimport *', file=output) + print(file=output) + + print('cdef extern from "flint_wrap.h":', file=output) + + for section in content: + if section is not None: + print(' ## {}'.format(section), file=output) + for func_signatures, doc in content[section]: + if documentation: + print('', file=output) + for line in doc: + print(' # {}'.format(line), file=output) + for line in func_signatures: + print(' {} noexcept'.format(line), file=output) + + if os.path.isfile(os.path.join(AUTOGEN_DIR, 'macros', prefix + '_macros.pxd')): + print('\nfrom .{} cimport *'.format(prefix + '_macros'), file=output) + + output.close() + + for extra_header in ['nmod_types.h']: + if extra_header in header_list: + print('Warning: {} already in HEADER_LIST'.format(extra_header)) + header_list.append(extra_header) + + header_list.sort() + pxd_list.sort() + + with open(os.path.join(AUTOGEN_DIR, 'templates', 'flint_wrap.h.template')) as f: + text = f.read() + with open(os.path.join(output_dir, 'flint_wrap.h'), 'w') as output: + output.write(text.format(HEADER_LIST='\n'.join('#include '.format(header) for header in header_list))) + + with open(os.path.join(AUTOGEN_DIR, 'templates', 'types.pxd.template')) as f: + text = f.read() + with open(os.path.join(output_dir, 'types.pxd'), 'w') as output: + output.write(text.format(HEADER_LIST=' '.join('flint/{}'.format(header) for header in header_list))) + + for filename in os.listdir(os.path.join(AUTOGEN_DIR, 'macros')): + prefix = filename[:-4] + shutil.copy(os.path.join(AUTOGEN_DIR, 'macros', filename), os.path.join(output_dir, filename)) + + with open(os.path.join(AUTOGEN_DIR, 'templates', 'flint_sage.pyx.template')) as f: + text = f.read() + with open(os.path.join(output_dir, 'flint_sage.pyx'), 'w') as output: + output.write(text.format(CYTHON_IMPORTS='\n'.join('from .{} cimport *'.format(header[:-4]) for header in pxd_list))) diff --git a/src/sage_setup/autogen/flint_autogen.py b/src/sage_setup/autogen/flint_autogen.py new file mode 100644 index 00000000000..6a21ede1ccc --- /dev/null +++ b/src/sage_setup/autogen/flint_autogen.py @@ -0,0 +1,19 @@ +r""" +Autogeneration of flint headers. +""" +#***************************************************************************** +# Copyright (C) 2023 Vincent Delecroix <20100.delecroix@gmail.com> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# http://www.gnu.org/licenses/ +#***************************************************************************** + +import os +from flint import AUTOGEN_DIR, write_flint_cython_headers + + +OUTPUT_DIR = os.path.realpath(os.path.join(AUTOGEN_DIR, os.path.pardir, os.path.pardir, os.path.pardir, 'sage', 'libs', 'flint')) +write_flint_cython_headers(OUTPUT_DIR, documentation=False)