diff --git a/src/flint/flint_base/flint_context.pyx b/src/flint/flint_base/flint_context.pyx index 60401492..c73c83bc 100644 --- a/src/flint/flint_base/flint_context.pyx +++ b/src/flint/flint_base/flint_context.pyx @@ -1,5 +1,5 @@ from flint.flintlib.arf cimport ARF_RND_DOWN -from flint._flint cimport ( +from flint.flintlib.flint cimport ( flint_cleanup, flint_get_num_threads, flint_set_num_threads diff --git a/src/flint/flintlib/acb.pxd b/src/flint/flintlib/acb.pxd index c74b3c03..cfa16c08 100644 --- a/src/flint/flintlib/acb.pxd +++ b/src/flint/flintlib/acb.pxd @@ -1,9 +1,9 @@ -from flint._flint cimport ulong, slong +from flint.flintlib.flint cimport ulong, slong, flint_rand_t from flint.flintlib.arb cimport arb_struct, arb_t, arb_ptr from flint.flintlib.fmpq cimport fmpq_t -from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.arf cimport arf_t -from flint.flintlib.mag cimport mag_t +from flint.flintlib.fmpz cimport fmpz_t, fmpz_struct +from flint.flintlib.arf cimport arf_t, arf_srcptr +from flint.flintlib.mag cimport mag_t, mag_srcptr cdef extern from "acb.h": ctypedef struct acb_struct: @@ -17,181 +17,240 @@ cdef extern from "acb.h": arb_ptr acb_realref(const acb_t x) arb_ptr acb_imagref(const acb_t x) - acb_ptr _acb_vec_init(long n) - void _acb_vec_clear(acb_ptr v, long n) - void _acb_vec_sort_pretty(acb_ptr vec, long len) - void acb_printd(const acb_t z, long digits) - void acb_init(acb_t x) void acb_clear(acb_t x) - int acb_is_zero(const acb_t z) - int acb_is_one(const acb_t z) - int acb_is_exact(const acb_t z) - int acb_is_finite(const acb_t x) - void acb_indeterminate(acb_t x) + acb_ptr _acb_vec_init(slong n) + void _acb_vec_clear(acb_ptr v, slong n) + slong acb_allocated_bytes(const acb_t x) + slong _acb_vec_allocated_bytes(acb_srcptr vec, slong len) + double _acb_vec_estimate_allocated_bytes(slong len, slong prec) 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_round(acb_t z, const acb_t x, long prec) - void acb_neg_round(acb_t z, const acb_t x, long prec) + void acb_set_ui(acb_t z, ulong x) + void acb_set_si(acb_t z, slong x) + void acb_set_d(acb_t z, double 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_si_si(acb_t z, slong x, slong y) + void acb_set_d_d(acb_t z, double x, double y) + void acb_set_fmpz_fmpz(acb_t z, const fmpz_t x, const fmpz_t y) + void acb_set_arb_arb(acb_t z, const arb_t x, const arb_t y) + void acb_set_fmpq(acb_t z, const fmpq_t x, slong prec) + void acb_set_round(acb_t z, const acb_t x, slong prec) + void acb_set_round_fmpz(acb_t z, const fmpz_t x, slong prec) + void acb_set_round_arb(acb_t z, const arb_t x, slong prec) void acb_swap(acb_t z, acb_t x) + void acb_add_error_arf(acb_t x, const arf_t err) + void acb_add_error_mag(acb_t x, const mag_t err) + void acb_add_error_arb(acb_t x, const arb_t err) + void acb_get_mid(acb_t m, const acb_t x) + void acb_print(const acb_t x) + void acb_printd(const acb_t x, slong digits) + void acb_printn(const acb_t x, slong digits, ulong flags) + void acb_randtest(acb_t z, flint_rand_t state, slong prec, slong mag_bits) + void acb_randtest_special(acb_t z, flint_rand_t state, slong prec, slong mag_bits) + void acb_randtest_precise(acb_t z, flint_rand_t state, slong prec, slong mag_bits) + void acb_randtest_param(acb_t z, flint_rand_t state, slong prec, slong mag_bits) + int acb_is_zero(const acb_t z) + int acb_is_one(const acb_t z) + int acb_is_finite(const acb_t z) + int acb_is_exact(const acb_t z) + int acb_is_int(const acb_t z) + int acb_is_int_2exp_si(const acb_t x, slong e) int acb_equal(const acb_t x, const acb_t y) + int acb_equal_si(const acb_t x, slong y) int acb_eq(const acb_t x, const acb_t y) int acb_ne(const acb_t x, const acb_t y) int acb_overlaps(const acb_t x, const acb_t y) - int acb_contains_zero(const acb_t x) + void acb_union(acb_t z, const acb_t x, const acb_t y, slong prec) + void acb_get_abs_ubound_arf(arf_t u, const acb_t z, slong prec) + void acb_get_abs_lbound_arf(arf_t u, const acb_t z, slong prec) + void acb_get_rad_ubound_arf(arf_t u, const acb_t z, slong prec) + void acb_get_mag(mag_t u, const acb_t x) + void acb_get_mag_lower(mag_t u, const acb_t x) int acb_contains_fmpq(const acb_t x, const fmpq_t y) int acb_contains_fmpz(const acb_t x, const fmpz_t y) int acb_contains(const acb_t x, const acb_t y) + int acb_contains_zero(const acb_t x) + int acb_contains_int(const acb_t x) int acb_contains_interior(const acb_t x, const acb_t y) + slong acb_rel_error_bits(const acb_t x) + slong acb_rel_accuracy_bits(const acb_t x) + slong acb_rel_one_accuracy_bits(const acb_t x) + slong acb_bits(const acb_t x) + void acb_indeterminate(acb_t x) + void acb_trim(acb_t y, const acb_t x) + int acb_is_real(const acb_t x) int acb_get_unique_fmpz(fmpz_t z, const acb_t x) - int acb_contains_int(const acb_t x) - void acb_union(acb_t z, const acb_t x, const acb_t y, long prec) - void acb_set_ui(acb_t z, ulong c) - void acb_set_si(acb_t z, long c) - void acb_set_fmpz(acb_t z, const fmpz_t c) - void acb_set_round_fmpz(acb_t z, const fmpz_t y, long prec) - void acb_set_fmpq(acb_t z, const fmpq_t c, long prec) - void acb_set_arb(acb_t z, const arb_t c) - void acb_set_round_arb(acb_t z, const arb_t x, long prec) - void acb_trim(acb_t z, const acb_t x) - void acb_add_error_arf(acb_t x, const arf_t err) - void acb_add_error_mag(acb_t x, const mag_t err) - void acb_get_mag(mag_t z, const acb_t x) - void acb_get_mag_lower(mag_t z, const acb_t x) - 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_arg(arb_t r, const acb_t z, long prec) - void acb_add(acb_t z, const acb_t x, const acb_t y, long prec) - void acb_sub(acb_t z, const acb_t x, const acb_t y, long prec) - void acb_add_ui(acb_t z, const acb_t x, ulong c, long prec) - void acb_sub_ui(acb_t z, const acb_t x, ulong c, 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_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_get_real(arb_t re, const acb_t z) + void acb_get_imag(arb_t im, const acb_t z) + void acb_arg(arb_t r, const acb_t z, slong prec) + void acb_abs(arb_t r, const acb_t z, slong prec) + void acb_sgn(acb_t r, const acb_t z, slong prec) + void acb_csgn(arb_t r, const acb_t z) void acb_neg(acb_t z, const acb_t x) + void acb_neg_round(acb_t z, const acb_t x, slong prec) void acb_conj(acb_t z, const acb_t x) - void acb_abs(arb_t u, const acb_t z, long prec) - void acb_sgn(acb_t u, const acb_t z, long prec) - void acb_csgn(arb_t u, const acb_t z) - void acb_get_real(arb_t u, const acb_t z) - void acb_get_imag(arb_t u, const acb_t z) - - void acb_real_abs(acb_t res, const acb_t z, int analytic, long prec) - void acb_real_sgn(acb_t res, const acb_t z, int analytic, long prec) - void acb_real_heaviside(acb_t res, const acb_t z, int analytic, long prec) - void acb_real_floor(acb_t res, const acb_t z, int analytic, long prec) - void acb_real_ceil(acb_t res, const acb_t z, int analytic, long prec) - void acb_real_max(acb_t res, const acb_t x, const acb_t y, int analytic, long prec) - void acb_real_min(acb_t res, const acb_t x, const acb_t y, int analytic, long prec) - void acb_real_sqrtpos(acb_t res, const acb_t z, int analytic, long prec) - - void acb_sqrt_analytic(acb_t res, const acb_t z, int analytic, long prec) - void acb_rsqrt_analytic(acb_t res, const acb_t z, int analytic, long prec) - void acb_log_analytic(acb_t res, const acb_t z, int analytic, long prec) - void acb_pow_analytic(acb_t res, const acb_t z, const acb_t w, int analytic, long prec) - - void acb_mul_ui(acb_t z, const acb_t x, ulong 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_add_ui(acb_t z, const acb_t x, ulong y, slong prec) + void acb_add_si(acb_t z, const acb_t x, slong y, slong prec) + void acb_add_fmpz(acb_t z, const acb_t x, const fmpz_t y, slong prec) + void acb_add_arb(acb_t z, const acb_t x, const arb_t y, slong prec) + void acb_add(acb_t z, const acb_t x, const acb_t y, slong prec) + void acb_sub_ui(acb_t z, const acb_t x, ulong y, slong prec) + void acb_sub_si(acb_t z, const acb_t x, slong y, slong prec) + void acb_sub_fmpz(acb_t z, const acb_t x, const fmpz_t y, slong prec) + void acb_sub_arb(acb_t z, const acb_t x, const arb_t y, slong prec) + void acb_sub(acb_t z, const acb_t x, const acb_t y, slong prec) void acb_mul_onei(acb_t z, const acb_t x) - void acb_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 c) - void acb_addmul(acb_t z, const acb_t x, const acb_t y, long prec) - void acb_submul(acb_t z, const acb_t x, const acb_t y, long prec) - void acb_addmul_ui(acb_t z, const acb_t x, ulong y, long prec) - void acb_addmul_si(acb_t z, const acb_t x, long y, long prec) - void acb_submul_ui(acb_t z, const acb_t x, ulong y, long prec) - void acb_submul_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_submul_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_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(acb_t z, const acb_t x, const acb_t y, long prec) - void acb_div_ui(acb_t z, const acb_t x, ulong c, long prec) - void acb_div_si(acb_t z, const acb_t x, long c, long prec) - void acb_div_arb(acb_t z, const acb_t x, const arb_t c, long prec) - void acb_div_fmpz(acb_t z, const acb_t x, const fmpz_t c, long prec) - void acb_cube(acb_t y, const acb_t x, 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, ulong e, long prec) - void acb_pow_si(acb_t y, const acb_t b, long e, long prec) - void acb_const_pi(acb_t x, long prec) - void acb_log(acb_t r, const acb_t z, long prec) - void acb_exp(acb_t r, const acb_t z, long prec) - void acb_exp_pi_i(acb_t r, const acb_t z, long prec) - void acb_sin(acb_t r, const acb_t z, long prec) - void acb_cos(acb_t r, const acb_t z, long prec) - void acb_sin_cos(acb_t s, acb_t c, const acb_t z, long prec) - void acb_tan(acb_t r, const acb_t z, long prec) - void acb_cot(acb_t r, const acb_t z, long prec) - void acb_sec(acb_t r, const acb_t z, long prec) - void acb_csc(acb_t r, const acb_t z, long prec) - void acb_sin_pi(acb_t r, const acb_t z, long prec) - void acb_cos_pi(acb_t r, 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 r, const acb_t z, long prec) - void acb_cot_pi(acb_t r, const acb_t z, long prec) - void acb_sinh(acb_t r, const acb_t z, long prec) - void acb_cosh(acb_t r, 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 r, const acb_t z, long prec) - void acb_coth(acb_t r, const acb_t z, long prec) - void acb_sech(acb_t r, const acb_t z, long prec) - void acb_csch(acb_t r, const acb_t z, long prec) - void acb_sinc(acb_t r, const acb_t z, long prec) - void acb_sinc_pi(acb_t r, const acb_t z, long prec) - void acb_pow_arb(acb_t z, const acb_t x, const arb_t y, long prec) - void acb_pow(acb_t r, const acb_t x, const acb_t y, long prec) - void acb_sqrt(acb_t y, const acb_t x, long prec) - void acb_rsqrt(acb_t y, const acb_t x, long prec) - void acb_rising_ui_bs(acb_t y, const acb_t x, ulong n, long prec) - void acb_rising_ui_rs(acb_t y, const acb_t x, ulong n, ulong m, long prec) - void acb_rising_ui_rec(acb_t y, const acb_t x, ulong n, long prec) - void acb_rising_ui(acb_t z, const acb_t x, ulong n, long prec) - void acb_rising2_ui_bs(acb_t u, acb_t v, const acb_t x, ulong n, long prec) - void acb_rising2_ui_rs(acb_t u, acb_t v, const acb_t x, ulong n, ulong m, long prec) - void acb_rising2_ui(acb_t u, acb_t v, const acb_t x, ulong n, long prec) - void acb_rising_ui_get_mag(mag_t bound, const acb_t s, ulong n) - void acb_rising(acb_t y, 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_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) - void acb_agm(acb_t res, const acb_t a, const acb_t b, long prec) - void acb_expm1(acb_t r, const acb_t z, long prec) - void acb_log1p(acb_t r, const acb_t z, long prec) - void acb_asin(acb_t r, const acb_t z, long prec) - void acb_acos(acb_t r, const acb_t z, long prec) - void acb_atan(acb_t r, const acb_t z, long prec) - void acb_asinh(acb_t r, const acb_t z, long prec) - void acb_acosh(acb_t r, const acb_t z, long prec) - void acb_atanh(acb_t r, const acb_t z, long prec) - void acb_log_sin_pi(acb_t res, const acb_t z, long prec) - - void acb_polygamma(acb_t w, const acb_t s, const acb_t z, long prec) - void acb_log_barnes_g(acb_t w, const acb_t z, long prec) - void acb_barnes_g(acb_t w, const acb_t z, long prec) - - void acb_bernoulli_poly_ui(acb_t res, ulong n, const acb_t x, long prec) - - void acb_lambertw(acb_t z, const acb_t x, const fmpz_t k, int flags, long prec) - - 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_root_ui(acb_t z, const acb_t x, ulong k, long prec) + void acb_div_onei(acb_t z, const acb_t x) + void acb_mul_ui(acb_t z, const acb_t x, ulong y, slong prec) + void acb_mul_si(acb_t z, const acb_t x, slong y, slong prec) + void acb_mul_fmpz(acb_t z, const acb_t x, const fmpz_t y, slong prec) + void acb_mul_arb(acb_t z, const acb_t x, const arb_t y, slong prec) + void acb_mul(acb_t z, const acb_t x, const acb_t y, slong prec) + void acb_mul_2exp_si(acb_t z, const acb_t x, slong e) + void acb_mul_2exp_fmpz(acb_t z, const acb_t x, const fmpz_t e) + void acb_sqr(acb_t z, const acb_t x, slong prec) + void acb_cube(acb_t z, const acb_t x, slong prec) + void acb_addmul(acb_t z, const acb_t x, const acb_t y, slong prec) + void acb_addmul_ui(acb_t z, const acb_t x, ulong y, slong prec) + void acb_addmul_si(acb_t z, const acb_t x, slong y, slong prec) + void acb_addmul_fmpz(acb_t z, const acb_t x, const fmpz_t y, slong prec) + void acb_addmul_arb(acb_t z, const acb_t x, const arb_t y, slong prec) + void acb_submul(acb_t z, const acb_t x, const acb_t y, slong prec) + void acb_submul_ui(acb_t z, const acb_t x, ulong y, slong prec) + void acb_submul_si(acb_t z, const acb_t x, slong y, slong prec) + void acb_submul_fmpz(acb_t z, const acb_t x, const fmpz_t y, slong prec) + void acb_submul_arb(acb_t z, const acb_t x, const arb_t y, slong prec) + void acb_inv(acb_t z, const acb_t x, slong prec) + void acb_div_ui(acb_t z, const acb_t x, ulong y, slong prec) + void acb_div_si(acb_t z, const acb_t x, slong y, slong prec) + void acb_div_fmpz(acb_t z, const acb_t x, const fmpz_t y, slong prec) + void acb_div_arb(acb_t z, const acb_t x, const arb_t y, slong prec) + void acb_div(acb_t z, const acb_t x, const acb_t y, slong prec) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + void acb_dot_fmpz(acb_t res, const acb_t initial, int subtract, acb_srcptr x, slong xstep, const fmpz_struct * y, slong ystep, slong len, slong prec) + void acb_const_pi(acb_t y, slong prec) + void acb_sqrt(acb_t r, const acb_t z, slong prec) + void acb_sqrt_analytic(acb_t r, const acb_t z, int analytic, slong prec) + void acb_rsqrt(acb_t r, const acb_t z, slong prec) + void acb_rsqrt_analytic(acb_t r, const acb_t z, int analytic, slong prec) + void acb_quadratic_roots_fmpz(acb_t r1, acb_t r2, const fmpz_t a, const fmpz_t b, const fmpz_t c, slong prec) + void acb_root_ui(acb_t r, const acb_t z, ulong k, slong prec) + void acb_pow_fmpz(acb_t y, const acb_t b, const fmpz_t e, slong prec) + void acb_pow_ui(acb_t y, const acb_t b, ulong e, slong prec) + void acb_pow_si(acb_t y, const acb_t b, slong e, slong prec) + void acb_pow_arb(acb_t z, const acb_t x, const arb_t y, slong prec) + void acb_pow(acb_t z, const acb_t x, const acb_t y, slong prec) + void acb_pow_analytic(acb_t r, const acb_t x, const acb_t y, int analytic, slong prec) + void acb_unit_root(acb_t res, ulong order, slong prec) + void acb_exp(acb_t y, const acb_t z, slong prec) + void acb_exp_pi_i(acb_t y, const acb_t z, slong prec) + void acb_exp_invexp(acb_t s, acb_t t, const acb_t z, slong prec) + void acb_expm1(acb_t res, const acb_t z, slong prec) + void acb_log(acb_t y, const acb_t z, slong prec) + void acb_log_analytic(acb_t r, const acb_t z, int analytic, slong prec) + void acb_log1p(acb_t z, const acb_t x, slong prec) + void acb_sin(acb_t s, const acb_t z, slong prec) + void acb_cos(acb_t c, const acb_t z, slong prec) + void acb_sin_cos(acb_t s, acb_t c, const acb_t z, slong prec) + void acb_tan(acb_t s, const acb_t z, slong prec) + void acb_cot(acb_t s, const acb_t z, slong prec) + void acb_sin_pi(acb_t s, const acb_t z, slong prec) + void acb_cos_pi(acb_t s, const acb_t z, slong prec) + void acb_sin_cos_pi(acb_t s, acb_t c, const acb_t z, slong prec) + void acb_tan_pi(acb_t s, const acb_t z, slong prec) + void acb_cot_pi(acb_t s, const acb_t z, slong prec) + void acb_sec(acb_t res, const acb_t z, slong prec) + void acb_csc(acb_t res, const acb_t z, slong prec) + void acb_csc_pi(acb_t res, const acb_t z, slong prec) + void acb_sinc(acb_t s, const acb_t z, slong prec) + void acb_sinc_pi(acb_t s, const acb_t z, slong prec) + void acb_asin(acb_t res, const acb_t z, slong prec) + void acb_acos(acb_t res, const acb_t z, slong prec) + void acb_atan(acb_t res, const acb_t z, slong prec) + void acb_sinh(acb_t s, const acb_t z, slong prec) + void acb_cosh(acb_t c, const acb_t z, slong prec) + void acb_sinh_cosh(acb_t s, acb_t c, const acb_t z, slong prec) + void acb_tanh(acb_t s, const acb_t z, slong prec) + void acb_coth(acb_t s, const acb_t z, slong prec) + void acb_sech(acb_t res, const acb_t z, slong prec) + void acb_csch(acb_t res, const acb_t z, slong prec) + void acb_asinh(acb_t res, const acb_t z, slong prec) + void acb_acosh(acb_t res, const acb_t z, slong prec) + void acb_atanh(acb_t res, const acb_t z, slong prec) + void acb_lambertw_asymp(acb_t res, const acb_t z, const fmpz_t k, slong L, slong M, slong prec) + int acb_lambertw_check_branch(const acb_t w, const fmpz_t k, slong prec) + void acb_lambertw_bound_deriv(mag_t res, const acb_t z, const acb_t ez1, const fmpz_t k) + void acb_lambertw(acb_t res, const acb_t z, const fmpz_t k, int flags, slong prec) + void acb_rising_ui(acb_t z, const acb_t x, ulong n, slong prec) + void acb_rising(acb_t z, const acb_t x, const acb_t n, slong prec) + void acb_rising2_ui(acb_t u, acb_t v, const acb_t x, ulong n, slong prec) + void acb_rising_ui_get_mag(mag_t bound, const acb_t x, ulong n) + void acb_gamma(acb_t y, const acb_t x, slong prec) + void acb_rgamma(acb_t y, const acb_t x, slong prec) + void acb_lgamma(acb_t y, const acb_t x, slong prec) + void acb_digamma(acb_t y, const acb_t x, slong prec) + void acb_log_sin_pi(acb_t res, const acb_t z, slong prec) + void acb_polygamma(acb_t res, const acb_t s, const acb_t z, slong prec) + void acb_barnes_g(acb_t res, const acb_t z, slong prec) + void acb_log_barnes_g(acb_t res, const acb_t z, slong prec) + void acb_zeta(acb_t z, const acb_t s, slong prec) + void acb_hurwitz_zeta(acb_t z, const acb_t s, const acb_t a, slong prec) + void acb_bernoulli_poly_ui(acb_t res, ulong n, const acb_t x, slong prec) + void acb_polylog(acb_t w, const acb_t s, const acb_t z, slong prec) + void acb_polylog_si(acb_t w, slong s, const acb_t z, slong prec) + void acb_agm1(acb_t m, const acb_t z, slong prec) + void acb_agm1_cpx(acb_ptr m, const acb_t z, slong len, slong prec) + void acb_agm(acb_t m, const acb_t x, const acb_t y, slong prec) + void acb_chebyshev_t_ui(acb_t a, ulong n, const acb_t x, slong prec) + void acb_chebyshev_u_ui(acb_t a, ulong n, const acb_t x, slong prec) + void acb_chebyshev_t2_ui(acb_t a, acb_t b, ulong n, const acb_t x, slong prec) + void acb_chebyshev_u2_ui(acb_t a, acb_t b, ulong n, const acb_t x, slong prec) + void acb_real_abs(acb_t res, const acb_t z, int analytic, slong prec) + void acb_real_sgn(acb_t res, const acb_t z, int analytic, slong prec) + void acb_real_heaviside(acb_t res, const acb_t z, int analytic, slong prec) + void acb_real_floor(acb_t res, const acb_t z, int analytic, slong prec) + void acb_real_ceil(acb_t res, const acb_t z, int analytic, slong prec) + void acb_real_max(acb_t res, const acb_t x, const acb_t y, int analytic, slong prec) + void acb_real_min(acb_t res, const acb_t x, const acb_t y, int analytic, slong prec) + void acb_real_sqrtpos(acb_t res, const acb_t z, int analytic, slong prec) + void _acb_vec_zero(acb_ptr A, slong n) + int _acb_vec_is_zero(acb_srcptr vec, slong len) + int _acb_vec_is_real(acb_srcptr v, slong len) + void _acb_vec_set(acb_ptr res, acb_srcptr vec, slong len) + void _acb_vec_set_round(acb_ptr res, acb_srcptr vec, slong len, slong prec) + void _acb_vec_swap(acb_ptr vec1, acb_ptr vec2, slong len) + void _acb_vec_neg(acb_ptr res, acb_srcptr vec, slong len) + void _acb_vec_add(acb_ptr res, acb_srcptr vec1, acb_srcptr vec2, slong len, slong prec) + void _acb_vec_sub(acb_ptr res, acb_srcptr vec1, acb_srcptr vec2, slong len, slong prec) + void _acb_vec_scalar_submul(acb_ptr res, acb_srcptr vec, slong len, const acb_t c, slong prec) + void _acb_vec_scalar_addmul(acb_ptr res, acb_srcptr vec, slong len, const acb_t c, slong prec) + void _acb_vec_scalar_mul(acb_ptr res, acb_srcptr vec, slong len, const acb_t c, slong prec) + void _acb_vec_scalar_mul_ui(acb_ptr res, acb_srcptr vec, slong len, ulong c, slong prec) + void _acb_vec_scalar_mul_2exp_si(acb_ptr res, acb_srcptr vec, slong len, slong c) + void _acb_vec_scalar_mul_onei(acb_ptr res, acb_srcptr vec, slong len) + void _acb_vec_scalar_div_ui(acb_ptr res, acb_srcptr vec, slong len, ulong c, slong prec) + void _acb_vec_scalar_div(acb_ptr res, acb_srcptr vec, slong len, const acb_t c, slong prec) + void _acb_vec_scalar_mul_arb(acb_ptr res, acb_srcptr vec, slong len, const arb_t c, slong prec) + void _acb_vec_scalar_div_arb(acb_ptr res, acb_srcptr vec, slong len, const arb_t c, slong prec) + void _acb_vec_scalar_mul_fmpz(acb_ptr res, acb_srcptr vec, slong len, const fmpz_t c, slong prec) + void _acb_vec_scalar_div_fmpz(acb_ptr res, acb_srcptr vec, slong len, const fmpz_t c, slong prec) + slong _acb_vec_bits(acb_srcptr vec, slong len) + void _acb_vec_set_powers(acb_ptr xs, const acb_t x, slong len, slong prec) + void _acb_vec_unit_roots(acb_ptr z, slong order, slong len, slong prec) + void _acb_vec_add_error_arf_vec(acb_ptr res, arf_srcptr err, slong len) + void _acb_vec_add_error_mag_vec(acb_ptr res, mag_srcptr err, slong len) + void _acb_vec_indeterminate(acb_ptr vec, slong len) + void _acb_vec_trim(acb_ptr res, acb_srcptr vec, slong len) + int _acb_vec_get_unique_fmpz_vec(fmpz_struct * res, acb_srcptr vec, slong len) + void _acb_vec_sort_pretty(acb_ptr vec, slong len) diff --git a/src/flint/flintlib/acb_calc.pxd b/src/flint/flintlib/acb_calc.pxd index 18dd8fee..5e2ecda3 100644 --- a/src/flint/flintlib/acb_calc.pxd +++ b/src/flint/flintlib/acb_calc.pxd @@ -1,5 +1,8 @@ from flint.flintlib.acb cimport acb_t, acb_ptr from flint.flintlib.mag cimport mag_t +from flint.flintlib.flint cimport slong +from flint.flintlib.arb cimport arb_t +from flint.flintlib.arf cimport arf_t cdef extern from "acb_calc.h": ctypedef int (*acb_calc_func_t)(acb_ptr out, const acb_t inp, void * param, long order, long prec) @@ -13,10 +16,10 @@ cdef extern from "acb_calc.h": ctypedef acb_calc_integrate_opt_struct acb_calc_integrate_opt_t[1] +# from /Users/davideinstein/projects/arb/doc/source/acb_calc.rst + int acb_calc_integrate(acb_t res, acb_calc_func_t func, void * param, const acb_t a, const acb_t b, slong rel_goal, const mag_t abs_tol, const acb_calc_integrate_opt_t options, slong prec) void acb_calc_integrate_opt_init(acb_calc_integrate_opt_t options) + int acb_calc_integrate_gl_auto_deg(acb_t res, slong * num_eval, acb_calc_func_t func, void * param, const acb_t a, const acb_t b, const mag_t tol, slong deg_limit, int flags, slong prec) + void acb_calc_cauchy_bound(arb_t bound, acb_calc_func_t func, void * param, const acb_t x, const arb_t radius, slong maxdepth, slong prec) + int acb_calc_integrate_taylor(acb_t res, acb_calc_func_t func, void * param, const acb_t a, const acb_t b, const arf_t inner_radius, const arf_t outer_radius, slong accuracy_goal, slong prec) - int acb_calc_integrate(acb_t res, acb_calc_func_t f, void * param, - const acb_t a, const acb_t b, - long goal, const mag_t tol, - const acb_calc_integrate_opt_t options, - long prec) diff --git a/src/flint/flintlib/acb_dirichlet.pxd b/src/flint/flintlib/acb_dirichlet.pxd index 74886cda..ff380e29 100644 --- a/src/flint/flintlib/acb_dirichlet.pxd +++ b/src/flint/flintlib/acb_dirichlet.pxd @@ -1,24 +1,133 @@ from flint.flintlib.acb cimport acb_t, acb_ptr from flint.flintlib.dirichlet cimport dirichlet_group_t, dirichlet_char_t -from flint._flint cimport ulong +from flint.flintlib.flint cimport ulong, slong from flint.flintlib.acb_poly cimport acb_poly_t from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.arb cimport arb_t - +from flint.flintlib.arb cimport arb_t, arb_ptr +from flint.flintlib.mag cimport mag_t, mag_struct +from flint.flintlib.acb cimport acb_struct, acb_srcptr +from flint.flintlib.fmpq cimport fmpq_t +from flint.flintlib.arf cimport arf_t +from flint.flintlib.arb cimport arb_srcptr cdef extern from "acb_dirichlet.h": - void acb_dirichlet_eta(acb_t res, const acb_t s, long prec) - void acb_dirichlet_chi(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, ulong n, long prec) + ctypedef struct acb_dirichlet_roots_struct: + ulong order + ulong reduced_order + acb_t z + slong size + slong depth + acb_ptr Z + int use_pow + + ctypedef acb_dirichlet_roots_struct acb_dirichlet_roots_t[1] + + ctypedef struct acb_dirichlet_hurwitz_precomp_struct: + acb_struct s + mag_struct err + acb_ptr coeffs + int deflate + slong A + slong N + slong K - void acb_dirichlet_l(acb_t res, const acb_t s, const dirichlet_group_t G, const dirichlet_char_t chi, long prec) - void acb_dirichlet_hardy_z(acb_ptr res, const acb_t t, const dirichlet_group_t G, const dirichlet_char_t chi, long len, long prec) - void acb_dirichlet_l_series(acb_poly_t res, const acb_poly_t s, const dirichlet_group_t G, const dirichlet_char_t chi, int deflate, long len, long prec) + ctypedef acb_dirichlet_hurwitz_precomp_struct acb_dirichlet_hurwitz_precomp_t[1] - void acb_dirichlet_stieltjes(acb_t res, const fmpz_t n, const acb_t a, long prec) - void acb_dirichlet_gram_point(arb_t res, const fmpz_t n, const dirichlet_group_t G, const dirichlet_char_t chi, long prec) - void acb_dirichlet_zeta_zeros(acb_ptr res, const fmpz_t n, long len, long prec) - void acb_dirichlet_zeta_nzeros(arb_t res, const arb_t t, long prec) - void acb_dirichlet_backlund_s(arb_t res, const arb_t t, long prec) - void acb_dirichlet_zeta_zero(acb_t res, const fmpz_t n, long prec) - void acb_dirichlet_zeta_zeros(acb_ptr res, const fmpz_t n, long len, long prec) +# from here on is parsed + void acb_dirichlet_roots_init(acb_dirichlet_roots_t roots, ulong n, slong num, slong prec) + void acb_dirichlet_roots_clear(acb_dirichlet_roots_t roots) + void acb_dirichlet_root(acb_t res, const acb_dirichlet_roots_t roots, ulong k, slong prec) + 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) + void acb_dirichlet_powsum_sieved(acb_ptr res, const acb_t s, ulong n, slong len, slong prec) + void acb_dirichlet_powsum_smooth(acb_ptr res, const acb_t s, ulong n, slong len, slong prec) + void acb_dirichlet_zeta(acb_t res, const acb_t s, slong prec) + void acb_dirichlet_zeta_jet(acb_t res, const acb_t s, int deflate, slong len, slong prec) + void acb_dirichlet_zeta_bound(mag_t res, const acb_t s) + void acb_dirichlet_zeta_deriv_bound(mag_t der1, mag_t der2, const acb_t s) + void acb_dirichlet_eta(acb_t res, const acb_t s, slong prec) + void acb_dirichlet_xi(acb_t res, const acb_t s, slong prec) + void acb_dirichlet_zeta_rs_f_coeffs(acb_ptr f, const arb_t p, slong n, slong prec) + void acb_dirichlet_zeta_rs_d_coeffs(arb_ptr d, const arb_t sigma, slong k, slong prec) + void acb_dirichlet_zeta_rs_bound(mag_t err, const acb_t s, slong K) + void acb_dirichlet_zeta_rs_r(acb_t res, const acb_t s, slong K, slong prec) + void acb_dirichlet_zeta_rs(acb_t res, const acb_t s, slong K, slong prec) + void acb_dirichlet_zeta_jet_rs(acb_t res, const acb_t s, slong len, slong prec) + void acb_dirichlet_hurwitz(acb_t res, const acb_t s, const acb_t a, slong prec) + void acb_dirichlet_hurwitz_precomp_init(acb_dirichlet_hurwitz_precomp_t pre, const acb_t s, int deflate, ulong A, ulong K, ulong N, slong prec) + void acb_dirichlet_hurwitz_precomp_init_num(acb_dirichlet_hurwitz_precomp_t pre, const acb_t s, int deflate, double num_eval, slong prec) + void acb_dirichlet_hurwitz_precomp_clear(acb_dirichlet_hurwitz_precomp_t pre) + void acb_dirichlet_hurwitz_precomp_choose_param(ulong * A, ulong * K, ulong * N, const acb_t s, double num_eval, slong prec) + void acb_dirichlet_hurwitz_precomp_bound(mag_t res, const acb_t s, ulong A, ulong K, ulong N) + void acb_dirichlet_hurwitz_precomp_eval(acb_t res, const acb_dirichlet_hurwitz_precomp_t pre, ulong p, ulong q, slong prec) + void acb_dirichlet_lerch_phi_integral(acb_t res, const acb_t z, const acb_t s, const acb_t a, slong prec) + void acb_dirichlet_lerch_phi_direct(acb_t res, const acb_t z, const acb_t s, const acb_t a, slong prec) + void acb_dirichlet_lerch_phi(acb_t res, const acb_t z, const acb_t s, const acb_t a, slong prec) + void acb_dirichlet_stieltjes(acb_t res, const fmpz_t n, const acb_t a, slong prec) + void acb_dirichlet_chi(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, ulong n, slong prec) + void acb_dirichlet_chi_vec(acb_ptr v, const dirichlet_group_t G, const dirichlet_char_t chi, slong nv, slong prec) + void acb_dirichlet_pairing(acb_t res, const dirichlet_group_t G, ulong m, ulong n, slong prec) + void acb_dirichlet_pairing_char(acb_t res, const dirichlet_group_t G, const dirichlet_char_t a, const dirichlet_char_t b, slong prec) + void acb_dirichlet_gauss_sum_naive(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) + void acb_dirichlet_gauss_sum_factor(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) + void acb_dirichlet_gauss_sum_order2(acb_t res, const dirichlet_char_t chi, slong prec) + void acb_dirichlet_gauss_sum_theta(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) + void acb_dirichlet_gauss_sum(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) + void acb_dirichlet_gauss_sum_ui(acb_t res, const dirichlet_group_t G, ulong a, slong prec) + void acb_dirichlet_jacobi_sum_naive(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi1, const dirichlet_char_t chi2, slong prec) + void acb_dirichlet_jacobi_sum_factor(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi1, const dirichlet_char_t chi2, slong prec) + void acb_dirichlet_jacobi_sum_gauss(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi1, const dirichlet_char_t chi2, slong prec) + 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) + void acb_dirichlet_jacobi_sum_ui(acb_t res, const dirichlet_group_t G, ulong a, ulong b, slong prec) + void acb_dirichlet_chi_theta_arb(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, const arb_t t, slong prec) + void acb_dirichlet_ui_theta_arb(acb_t res, const dirichlet_group_t G, ulong a, const arb_t t, slong prec) + ulong acb_dirichlet_theta_length(ulong q, const arb_t t, slong prec) + void acb_dirichlet_qseries_powers_naive(acb_t res, const arb_t x, int p, const ulong * a, const acb_dirichlet_roots_t z, slong len, slong prec) + void acb_dirichlet_qseries_powers_smallorder(acb_t res, const arb_t x, int p, const ulong * a, const acb_dirichlet_roots_t z, slong len, slong prec) + void acb_dirichlet_dft_conrey(acb_ptr w, acb_srcptr v, const dirichlet_group_t G, slong prec) + void acb_dirichlet_dft(acb_ptr w, acb_srcptr v, const dirichlet_group_t G, slong prec) + void acb_dirichlet_root_number_theta(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) + void acb_dirichlet_root_number(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) + 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) + 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) + void _acb_dirichlet_euler_product_real_ui(arb_t res, ulong s, const signed char * chi, int mod, int reciprocal, slong prec) + void acb_dirichlet_l(acb_t res, const acb_t s, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) + void acb_dirichlet_l_fmpq(acb_t res, const fmpq_t s, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) + 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) + 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) + 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) + void _acb_dirichlet_l_series(acb_ptr res, acb_srcptr s, slong slen, const dirichlet_group_t G, const dirichlet_char_t chi, int deflate, slong len, slong prec) + void acb_dirichlet_l_series(acb_poly_t res, const acb_poly_t s, const dirichlet_group_t G, const dirichlet_char_t chi, int deflate, slong len, slong prec) + void acb_dirichlet_hardy_theta(acb_ptr res, const acb_t t, const dirichlet_group_t G, const dirichlet_char_t chi, slong len, slong prec) + void acb_dirichlet_hardy_z(acb_t res, const acb_t t, const dirichlet_group_t G, const dirichlet_char_t chi, slong len, slong prec) + void _acb_dirichlet_hardy_theta_series(acb_ptr res, acb_srcptr t, slong tlen, const dirichlet_group_t G, const dirichlet_char_t chi, slong len, slong prec) + void acb_dirichlet_hardy_theta_series(acb_poly_t res, const acb_poly_t t, const dirichlet_group_t G, const dirichlet_char_t chi, slong len, slong prec) + void _acb_dirichlet_hardy_z_series(acb_ptr res, acb_srcptr t, slong tlen, const dirichlet_group_t G, const dirichlet_char_t chi, slong len, slong prec) + 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) + void acb_dirichlet_gram_point(arb_t res, const fmpz_t n, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec) + ulong acb_dirichlet_turing_method_bound(const fmpz_t p) + int _acb_dirichlet_definite_hardy_z(arb_t res, const arf_t t, slong * pprec) + void _acb_dirichlet_isolate_gram_hardy_z_zero(arf_t a, arf_t b, const fmpz_t n) + void _acb_dirichlet_isolate_rosser_hardy_z_zero(arf_t a, arf_t b, const fmpz_t n) + void _acb_dirichlet_isolate_turing_hardy_z_zero(arf_t a, arf_t b, const fmpz_t n) + void acb_dirichlet_isolate_hardy_z_zero(arf_t a, arf_t b, const fmpz_t n) + void _acb_dirichlet_refine_hardy_z_zero(arb_t res, const arf_t a, const arf_t b, slong prec) + void acb_dirichlet_hardy_z_zero(arb_t res, const fmpz_t n, slong prec) + void acb_dirichlet_hardy_z_zeros(arb_ptr res, const fmpz_t n, slong len, slong prec) + void acb_dirichlet_zeta_zero(acb_t res, const fmpz_t n, slong prec) + void acb_dirichlet_zeta_zeros(acb_ptr res, const fmpz_t n, slong len, slong prec) + void _acb_dirichlet_exact_zeta_nzeros(fmpz_t res, const arf_t t) + void acb_dirichlet_zeta_nzeros(arb_t res, const arb_t t, slong prec) + void acb_dirichlet_backlund_s(arb_t res, const arb_t t, slong prec) + void acb_dirichlet_backlund_s_bound(mag_t res, const arb_t t) + void acb_dirichlet_zeta_nzeros_gram(fmpz_t res, const fmpz_t n) + slong acb_dirichlet_backlund_s_gram(const fmpz_t n) + void acb_dirichlet_platt_scaled_lambda(arb_t res, const arb_t t, slong prec) + void acb_dirichlet_platt_scaled_lambda_vec(arb_ptr res, const fmpz_t T, slong A, slong B, slong prec) + 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) + 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) + 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) + 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) + slong acb_dirichlet_platt_local_hardy_z_zeros(arb_ptr res, const fmpz_t n, slong len, slong prec) + slong acb_dirichlet_platt_hardy_z_zeros(arb_ptr res, const fmpz_t n, slong len, slong prec) + slong acb_dirichlet_platt_zeta_zeros(acb_ptr res, const fmpz_t n, slong len, slong prec) diff --git a/src/flint/flintlib/acb_elliptic.pxd b/src/flint/flintlib/acb_elliptic.pxd index d5f906dd..e0d99991 100644 --- a/src/flint/flintlib/acb_elliptic.pxd +++ b/src/flint/flintlib/acb_elliptic.pxd @@ -1,16 +1,31 @@ -from flint.flintlib.acb cimport acb_t +from flint.flintlib.acb cimport acb_t, acb_ptr, acb_srcptr +from flint.flintlib.acb_poly cimport acb_poly_t +from flint.flintlib.flint cimport slong cdef extern from "acb_elliptic.h": - 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_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 res, 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 res, const acb_t z, const acb_t tau, 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) +# from here on is parsed + void acb_elliptic_k(acb_t res, const acb_t m, slong prec) + void acb_elliptic_k_jet(acb_ptr res, const acb_t m, slong len, slong prec) + void _acb_elliptic_k_series(acb_ptr res, acb_srcptr m, slong mlen, slong len, slong prec) + void acb_elliptic_k_series(acb_poly_t res, const acb_poly_t m, slong len, slong prec) + void acb_elliptic_e(acb_t res, const acb_t m, slong prec) + void acb_elliptic_pi(acb_t res, const acb_t n, const acb_t m, slong prec) + void acb_elliptic_f(acb_t res, const acb_t phi, const acb_t m, int pi, slong prec) + void acb_elliptic_e_inc(acb_t res, const acb_t phi, const acb_t m, int pi, slong prec) + void acb_elliptic_pi_inc(acb_t res, const acb_t n, const acb_t phi, const acb_t m, int pi, slong prec) + void acb_elliptic_rf(acb_t res, const acb_t x, const acb_t y, const acb_t z, int flags, slong prec) + void acb_elliptic_rg(acb_t res, const acb_t x, const acb_t y, const acb_t z, int flags, slong 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, slong prec) + 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) + 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) + void acb_elliptic_rc1(acb_t res, const acb_t x, slong prec) + void acb_elliptic_p(acb_t res, const acb_t z, const acb_t tau, slong prec) + void acb_elliptic_p_prime(acb_t res, const acb_t z, const acb_t tau, slong prec) + void acb_elliptic_p_jet(acb_ptr res, const acb_t z, const acb_t tau, slong len, slong prec) + void _acb_elliptic_p_series(acb_ptr res, acb_srcptr z, slong zlen, const acb_t tau, slong len, slong prec) + void acb_elliptic_p_series(acb_poly_t res, const acb_poly_t z, const acb_t tau, slong len, slong prec) + void acb_elliptic_invariants(acb_t g2, acb_t g3, const acb_t tau, slong prec) + void acb_elliptic_roots(acb_t e1, acb_t e2, acb_t e3, const acb_t tau, slong prec) + void acb_elliptic_inv_p(acb_t res, const acb_t z, const acb_t tau, slong prec) + void acb_elliptic_zeta(acb_t res, const acb_t z, const acb_t tau, slong prec) + void acb_elliptic_sigma(acb_t res, const acb_t z, const acb_t tau, slong prec) diff --git a/src/flint/flintlib/acb_hypgeom.pxd b/src/flint/flintlib/acb_hypgeom.pxd index 2e46ed57..8c40671e 100644 --- a/src/flint/flintlib/acb_hypgeom.pxd +++ b/src/flint/flintlib/acb_hypgeom.pxd @@ -1,81 +1,160 @@ from flint.flintlib.acb cimport acb_t, acb_srcptr, acb_ptr from flint.flintlib.acb_poly cimport acb_poly_t, acb_poly_struct from flint.flintlib.mag cimport mag_t +from flint.flintlib.flint cimport ulong, slong cdef extern from "acb_hypgeom.h": - void acb_hypgeom_bessel_j(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_bessel_i(acb_t res, 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_k_scaled(acb_t res, const acb_t nu, const acb_t z, long prec) - void acb_hypgeom_bessel_i_scaled(acb_t res, const acb_t nu, const acb_t z, long prec) - - void acb_hypgeom_erf(acb_t res, const acb_t z, 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_u_asymp(acb_t res, const acb_t a, const acb_t b, const acb_t z, long n, 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(acb_t res, const acb_t a, const acb_t b, const acb_t z, int regularized, long prec) - void acb_hypgeom_1f1(acb_t res, const acb_t a, const acb_t b, const acb_t z, int regularized, long prec) - - 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(acb_t res, acb_srcptr a, long p, acb_srcptr b, long q, const acb_t z, int regularized, long prec) - void acb_hypgeom_gamma_upper(acb_t res, const acb_t s, const acb_t z, int modified, long prec) - void acb_hypgeom_gamma_upper_asymp(acb_t res, const acb_t s, const acb_t z, int modified, long prec) - void acb_hypgeom_expint(acb_t res, const acb_t s, const acb_t z, long prec) - void acb_hypgeom_gamma_lower(acb_t res, const acb_t s, const acb_t z, int modified, long prec) - void acb_hypgeom_beta_lower(acb_t res, const acb_t a, const acb_t b, const acb_t z, int regularized, 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_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_ei(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(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(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_2f1(acb_t res, const acb_t a, const acb_t b, const acb_t c, const acb_t z, int regularized, long prec) - void acb_hypgeom_0f1(acb_t res, const acb_t a, const acb_t z, int 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_spherical_y(acb_t res, long n, long m, const acb_t theta, const acb_t phi, 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_airy_bound(mag_t ai, mag_t aip, mag_t bi, mag_t bip, const acb_t z) - void acb_hypgeom_airy_asymp(acb_t ai, acb_t aip, acb_t bi, acb_t bip, const acb_t z, long n, long prec) - void acb_hypgeom_airy_direct(acb_t ai, acb_t aip, acb_t bi, acb_t bip, const acb_t z, long n, long prec) - void acb_hypgeom_airy(acb_t ai, acb_t aip, acb_t bi, acb_t bip, const acb_t z, long prec) - void acb_hypgeom_airy_jet(acb_ptr ai, acb_ptr bi, const acb_t z, long len, long prec) - void _acb_hypgeom_airy_series(acb_ptr ai, acb_ptr ai_prime, acb_ptr bi, acb_ptr bi_prime, acb_srcptr z, long zlen, long len, long prec) - 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, long len, long prec) - - 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, long prec) - 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, long len, long prec) - - void acb_hypgeom_erf_series(acb_poly_t res, const acb_poly_t h, long n, long prec) - void acb_hypgeom_erfc_series(acb_poly_t res, const acb_poly_t h, long n, long prec) - void acb_hypgeom_erfi_series(acb_poly_t res, const acb_poly_t h, long n, long prec) - - void acb_hypgeom_fresnel(acb_t res1, acb_t res2, const acb_t z, int normalized, long prec) - void acb_hypgeom_fresnel_series(acb_poly_t res1, acb_poly_t res2, const acb_poly_t h, int normalized, long n, long prec) - - void _acb_hypgeom_gamma_upper_series(acb_ptr g, const acb_t s, acb_srcptr h, long hlen, int regularized, long n, long prec) - void acb_hypgeom_gamma_upper_series(acb_poly_t g, const acb_t s, const acb_poly_t h, int regularized, long n, long prec) - - void _acb_hypgeom_gamma_lower_series(acb_ptr g, const acb_t s, acb_srcptr h, long hlen, int regularized, long n, long prec) - void acb_hypgeom_gamma_lower_series(acb_poly_t g, const acb_t s, const acb_poly_t h, int regularized, long n, long prec) - - void _acb_hypgeom_beta_lower_series(acb_ptr g, const acb_t s, const acb_t t, acb_srcptr h, long hlen, int regularized, long n, long prec) - void acb_hypgeom_beta_lower_series(acb_poly_t g, const acb_t s, const acb_t t, const acb_poly_t h, int regularized, long n, long prec) - - void acb_hypgeom_ei_series(acb_poly_t res, const acb_poly_t h, long n, long prec) - void acb_hypgeom_si_series(acb_poly_t res, const acb_poly_t h, long n, long prec) - void acb_hypgeom_ci_series(acb_poly_t res, const acb_poly_t h, long n, long prec) - void acb_hypgeom_shi_series(acb_poly_t res, const acb_poly_t h, long n, long prec) - void acb_hypgeom_chi_series(acb_poly_t res, const acb_poly_t h, long n, long prec) - void acb_hypgeom_li_series(acb_poly_t res, const acb_poly_t h, int offset, long n, long prec) +# from here on is parsed + void acb_hypgeom_rising_ui_forward(acb_t res, const acb_t x, ulong n, slong prec) + void acb_hypgeom_rising_ui_bs(acb_t res, const acb_t x, ulong n, slong prec) + void acb_hypgeom_rising_ui_rs(acb_t res, const acb_t x, ulong n, ulong m, slong prec) + void acb_hypgeom_rising_ui_rec(acb_t res, const acb_t x, ulong n, slong prec) + void acb_hypgeom_rising_ui(acb_t res, const acb_t x, ulong n, slong prec) + void acb_hypgeom_rising(acb_t res, const acb_t x, const acb_t n, slong prec) + void acb_hypgeom_rising_ui_jet_powsum(acb_ptr res, const acb_t x, ulong n, slong len, slong prec) + void acb_hypgeom_rising_ui_jet_bs(acb_ptr res, const acb_t x, ulong n, slong len, slong prec) + void acb_hypgeom_rising_ui_jet_rs(acb_ptr res, const acb_t x, ulong n, ulong m, slong len, slong prec) + void acb_hypgeom_rising_ui_jet(acb_ptr res, const acb_t x, ulong n, slong len, slong prec) + void acb_hypgeom_log_rising_ui(acb_ptr res, const acb_t x, ulong n, slong prec) + void acb_hypgeom_log_rising_ui_jet(acb_ptr res, const acb_t x, ulong n, slong len, slong prec) + void acb_hypgeom_gamma_stirling_sum_horner(acb_t s, const acb_t z, slong N, slong prec) + void acb_hypgeom_gamma_stirling_sum_improved(acb_t s, const acb_t z, slong N, slong K, slong prec) + void acb_hypgeom_gamma_stirling(acb_t res, const acb_t x, int reciprocal, slong prec) + int acb_hypgeom_gamma_taylor(acb_t res, const acb_t x, int reciprocal, slong prec) + void acb_hypgeom_gamma(acb_t res, const acb_t x, slong prec) + void acb_hypgeom_rgamma(acb_t res, const acb_t x, slong prec) + void acb_hypgeom_lgamma(acb_t res, const acb_t x, slong prec) + 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) + slong acb_hypgeom_pfq_choose_n(acb_srcptr a, slong p, acb_srcptr b, slong q, const acb_t z, slong prec) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + void acb_hypgeom_u_asymp(acb_t res, const acb_t a, const acb_t b, const acb_t z, slong n, slong prec) + int acb_hypgeom_u_use_asymp(const acb_t z, slong prec) + 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) + 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) + void acb_hypgeom_u_1f1(acb_t res, const acb_t a, const acb_t b, const acb_t z, slong prec) + void acb_hypgeom_u(acb_t res, const acb_t a, const acb_t b, const acb_t z, slong prec) + void acb_hypgeom_m_asymp(acb_t res, const acb_t a, const acb_t b, const acb_t z, int regularized, slong prec) + void acb_hypgeom_m_1f1(acb_t res, const acb_t a, const acb_t b, const acb_t z, int regularized, slong prec) + void acb_hypgeom_m(acb_t res, const acb_t a, const acb_t b, const acb_t z, int regularized, slong prec) + void acb_hypgeom_1f1(acb_t res, const acb_t a, const acb_t b, const acb_t z, int regularized, slong prec) + void acb_hypgeom_0f1_asymp(acb_t res, const acb_t a, const acb_t z, int regularized, slong prec) + void acb_hypgeom_0f1_direct(acb_t res, const acb_t a, const acb_t z, int regularized, slong prec) + void acb_hypgeom_0f1(acb_t res, const acb_t a, const acb_t z, int regularized, slong prec) + void acb_hypgeom_erf_propagated_error(mag_t re, mag_t im, const acb_t z) + void acb_hypgeom_erf_1f1a(acb_t res, const acb_t z, slong prec) + void acb_hypgeom_erf_1f1b(acb_t res, const acb_t z, slong prec) + void acb_hypgeom_erf_asymp(acb_t res, const acb_t z, int complementary, slong prec, slong prec2) + void acb_hypgeom_erf(acb_t res, const acb_t z, slong prec) + void _acb_hypgeom_erf_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) + void acb_hypgeom_erf_series(acb_poly_t res, const acb_poly_t z, slong len, slong prec) + void acb_hypgeom_erfc(acb_t res, const acb_t z, slong prec) + void _acb_hypgeom_erfc_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) + void acb_hypgeom_erfc_series(acb_poly_t res, const acb_poly_t z, slong len, slong prec) + void acb_hypgeom_erfi(acb_t res, const acb_t z, slong prec) + void _acb_hypgeom_erfi_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) + void acb_hypgeom_erfi_series(acb_poly_t res, const acb_poly_t z, slong len, slong prec) + void acb_hypgeom_fresnel(acb_t res1, acb_t res2, const acb_t z, int normalized, slong prec) + void _acb_hypgeom_fresnel_series(acb_ptr res1, acb_ptr res2, acb_srcptr z, slong zlen, int normalized, slong len, slong prec) + void acb_hypgeom_fresnel_series(acb_poly_t res1, acb_poly_t res2, const acb_poly_t z, int normalized, slong len, slong prec) + void acb_hypgeom_bessel_j_asymp(acb_t res, const acb_t nu, const acb_t z, slong prec) + void acb_hypgeom_bessel_j_0f1(acb_t res, const acb_t nu, const acb_t z, slong prec) + void acb_hypgeom_bessel_j(acb_t res, const acb_t nu, const acb_t z, slong prec) + void acb_hypgeom_bessel_y(acb_t res, const acb_t nu, const acb_t z, slong prec) + void acb_hypgeom_bessel_jy(acb_t res1, acb_t res2, const acb_t nu, const acb_t z, slong prec) + void acb_hypgeom_bessel_i_asymp(acb_t res, const acb_t nu, const acb_t z, int scaled, slong prec) + void acb_hypgeom_bessel_i_0f1(acb_t res, const acb_t nu, const acb_t z, int scaled, slong prec) + void acb_hypgeom_bessel_i(acb_t res, const acb_t nu, const acb_t z, slong prec) + void acb_hypgeom_bessel_i_scaled(acb_t res, const acb_t nu, const acb_t z, slong prec) + void acb_hypgeom_bessel_k_asymp(acb_t res, const acb_t nu, const acb_t z, int scaled, slong prec) + 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) + void acb_hypgeom_bessel_k_0f1(acb_t res, const acb_t nu, const acb_t z, int scaled, slong prec) + void acb_hypgeom_bessel_k(acb_t res, const acb_t nu, const acb_t z, slong prec) + void acb_hypgeom_bessel_k_scaled(acb_t res, const acb_t nu, const acb_t z, slong prec) + 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) + 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) + void acb_hypgeom_airy_bound(mag_t ai, mag_t ai_prime, mag_t bi, mag_t bi_prime, const acb_t z) + void acb_hypgeom_airy(acb_t ai, acb_t ai_prime, acb_t bi, acb_t bi_prime, const acb_t z, slong prec) + void acb_hypgeom_airy_jet(acb_ptr ai, acb_ptr bi, const acb_t z, slong len, slong prec) + 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) + 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) + 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) + 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) + 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) + 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) + void acb_hypgeom_gamma_upper_asymp(acb_t res, const acb_t s, const acb_t z, int regularized, slong prec) + void acb_hypgeom_gamma_upper_1f1a(acb_t res, const acb_t s, const acb_t z, int regularized, slong prec) + void acb_hypgeom_gamma_upper_1f1b(acb_t res, const acb_t s, const acb_t z, int regularized, slong prec) + void acb_hypgeom_gamma_upper_singular(acb_t res, slong s, const acb_t z, int regularized, slong prec) + void acb_hypgeom_gamma_upper(acb_t res, const acb_t s, const acb_t z, int regularized, slong prec) + void _acb_hypgeom_gamma_upper_series(acb_ptr res, const acb_t s, acb_srcptr z, slong zlen, int regularized, slong n, slong prec) + 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) + void acb_hypgeom_gamma_lower(acb_t res, const acb_t s, const acb_t z, int regularized, slong prec) + void _acb_hypgeom_gamma_lower_series(acb_ptr res, const acb_t s, acb_srcptr z, slong zlen, int regularized, slong n, slong prec) + 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) + void acb_hypgeom_beta_lower(acb_t res, const acb_t a, const acb_t b, const acb_t z, int regularized, slong prec) + 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) + 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) + void acb_hypgeom_expint(acb_t res, const acb_t s, const acb_t z, slong prec) + void acb_hypgeom_ei_asymp(acb_t res, const acb_t z, slong prec) + void acb_hypgeom_ei_2f2(acb_t res, const acb_t z, slong prec) + void acb_hypgeom_ei(acb_t res, const acb_t z, slong prec) + void _acb_hypgeom_ei_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) + void acb_hypgeom_ei_series(acb_poly_t res, const acb_poly_t z, slong len, slong prec) + void acb_hypgeom_si_asymp(acb_t res, const acb_t z, slong prec) + void acb_hypgeom_si_1f2(acb_t res, const acb_t z, slong prec) + void acb_hypgeom_si(acb_t res, const acb_t z, slong prec) + void _acb_hypgeom_si_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) + void acb_hypgeom_si_series(acb_poly_t res, const acb_poly_t z, slong len, slong prec) + void acb_hypgeom_ci_asymp(acb_t res, const acb_t z, slong prec) + void acb_hypgeom_ci_2f3(acb_t res, const acb_t z, slong prec) + void acb_hypgeom_ci(acb_t res, const acb_t z, slong prec) + void _acb_hypgeom_ci_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) + void acb_hypgeom_ci_series(acb_poly_t res, const acb_poly_t z, slong len, slong prec) + void acb_hypgeom_shi(acb_t res, const acb_t z, slong prec) + void _acb_hypgeom_shi_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) + void acb_hypgeom_shi_series(acb_poly_t res, const acb_poly_t z, slong len, slong prec) + void acb_hypgeom_chi_asymp(acb_t res, const acb_t z, slong prec) + void acb_hypgeom_chi_2f3(acb_t res, const acb_t z, slong prec) + void acb_hypgeom_chi(acb_t res, const acb_t z, slong prec) + void _acb_hypgeom_chi_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) + void acb_hypgeom_chi_series(acb_poly_t res, const acb_poly_t z, slong len, slong prec) + void acb_hypgeom_li(acb_t res, const acb_t z, int offset, slong prec) + void _acb_hypgeom_li_series(acb_ptr res, acb_srcptr z, slong zlen, int offset, slong len, slong prec) + void acb_hypgeom_li_series(acb_poly_t res, const acb_poly_t z, int offset, slong len, slong prec) + 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) + 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) + 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) + 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) + 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) + 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) + int acb_hypgeom_2f1_choose(const acb_t z) + 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) + void acb_hypgeom_chebyshev_t(acb_t res, const acb_t n, const acb_t z, slong prec) + void acb_hypgeom_chebyshev_u(acb_t res, const acb_t n, const acb_t z, slong 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, slong prec) + void acb_hypgeom_gegenbauer_c(acb_t res, const acb_t n, const acb_t m, const acb_t z, slong prec) + void acb_hypgeom_laguerre_l(acb_t res, const acb_t n, const acb_t m, const acb_t z, slong prec) + void acb_hypgeom_hermite_h(acb_t res, const acb_t n, const acb_t z, slong prec) + void acb_hypgeom_legendre_p(acb_t res, const acb_t n, const acb_t m, const acb_t z, int type, slong prec) + void acb_hypgeom_legendre_q(acb_t res, const acb_t n, const acb_t m, const acb_t z, int type, slong prec) + void acb_hypgeom_legendre_p_uiui_rec(acb_t res, ulong n, ulong m, const acb_t z, slong prec) + void acb_hypgeom_spherical_y(acb_t res, slong n, slong m, const acb_t theta, const acb_t phi, slong prec) + void acb_hypgeom_dilog_bernoulli(acb_t res, const acb_t z, slong prec) + void acb_hypgeom_dilog_zero_taylor(acb_t res, const acb_t z, slong prec) + void acb_hypgeom_dilog_zero(acb_t res, const acb_t z, slong prec) + void acb_hypgeom_dilog_transform(acb_t res, const acb_t z, int algorithm, slong prec) + void acb_hypgeom_dilog_continuation(acb_t res, const acb_t a, const acb_t z, slong prec) + void acb_hypgeom_dilog_bitburst(acb_t res, acb_t z0, const acb_t z, slong prec) + void acb_hypgeom_dilog(acb_t res, const acb_t z, slong prec) diff --git a/src/flint/flintlib/acb_mat.pxd b/src/flint/flintlib/acb_mat.pxd index fa2023e4..4d99f73b 100644 --- a/src/flint/flintlib/acb_mat.pxd +++ b/src/flint/flintlib/acb_mat.pxd @@ -1,4 +1,4 @@ -from flint._flint cimport ulong, flint_rand_t +from flint.flintlib.flint cimport ulong, flint_rand_t, slong from flint.flintlib.fmpz_mat cimport fmpz_mat_t from flint.flintlib.fmpq_mat cimport fmpq_mat_t from flint.flintlib.mag cimport mag_t @@ -6,6 +6,7 @@ from flint.flintlib.fmpz cimport fmpz_t from flint.flintlib.acb_poly cimport acb_poly_t from flint.flintlib.arb cimport arb_t from flint.flintlib.acb cimport acb_ptr, acb_struct, acb_t, acb_srcptr +from flint.flintlib.arb_mat cimport arb_mat_t cdef extern from "acb_mat.h": ctypedef struct acb_mat_struct: @@ -15,83 +16,118 @@ cdef extern from "acb_mat.h": acb_ptr * rows ctypedef acb_mat_struct acb_mat_t[1] - +#macros acb_struct * acb_mat_entry(acb_mat_t mat, long i, long j) long acb_mat_nrows(const acb_mat_t x) long acb_mat_ncols(const acb_mat_t x) - - void acb_mat_init(acb_mat_t mat, long r, long c) +# from here on is parsed + void acb_mat_init(acb_mat_t mat, slong r, slong c) void acb_mat_clear(acb_mat_t mat) - + slong acb_mat_allocated_bytes(const acb_mat_t x) + void acb_mat_window_init(acb_mat_t window, const acb_mat_t mat, slong r1, slong c1, slong r2, slong c2) + void acb_mat_window_clear(acb_mat_t window) void acb_mat_set(acb_mat_t dest, const acb_mat_t src) void acb_mat_set_fmpz_mat(acb_mat_t dest, const fmpz_mat_t src) - void acb_mat_set_fmpq_mat(acb_mat_t dest, const fmpq_mat_t src, long prec) - void acb_mat_printd(const acb_mat_t mat, long digits) + void acb_mat_set_round_fmpz_mat(acb_mat_t dest, const fmpz_mat_t src, slong prec) + void acb_mat_set_fmpq_mat(acb_mat_t dest, const fmpq_mat_t src, slong prec) + void acb_mat_set_arb_mat(acb_mat_t dest, const arb_mat_t src) + void acb_mat_set_round_arb_mat(acb_mat_t dest, const arb_mat_t src, slong prec) + void acb_mat_randtest(acb_mat_t mat, flint_rand_t state, slong prec, slong mag_bits) + void acb_mat_randtest_eig(acb_mat_t mat, flint_rand_t state, acb_srcptr E, slong prec) + void acb_mat_printd(const acb_mat_t mat, slong digits) int acb_mat_equal(const acb_mat_t mat1, const acb_mat_t mat2) int acb_mat_overlaps(const acb_mat_t mat1, const acb_mat_t mat2) int acb_mat_contains(const acb_mat_t mat1, const acb_mat_t mat2) - int acb_mat_contains_fmpq_mat(const acb_mat_t mat1, const fmpq_mat_t mat2) int acb_mat_contains_fmpz_mat(const acb_mat_t mat1, const fmpz_mat_t mat2) - + int acb_mat_contains_fmpq_mat(const acb_mat_t mat1, const fmpq_mat_t mat2) + int acb_mat_eq(const acb_mat_t mat1, const acb_mat_t mat2) + int acb_mat_ne(const acb_mat_t mat1, const acb_mat_t mat2) + int acb_mat_is_real(const acb_mat_t mat) + int acb_mat_is_empty(const acb_mat_t mat) + int acb_mat_is_square(const acb_mat_t mat) + int acb_mat_is_exact(const acb_mat_t mat) + int acb_mat_is_zero(const acb_mat_t mat) + int acb_mat_is_finite(const acb_mat_t mat) + int acb_mat_is_triu(const acb_mat_t mat) + int acb_mat_is_tril(const acb_mat_t mat) + int acb_mat_is_diag(const acb_mat_t mat) void acb_mat_zero(acb_mat_t mat) void acb_mat_one(acb_mat_t mat) - + void acb_mat_ones(acb_mat_t mat) + void acb_mat_indeterminate(acb_mat_t mat) + void acb_mat_dft(acb_mat_t mat, int type, slong prec) + void acb_mat_transpose(acb_mat_t dest, const acb_mat_t src) + void acb_mat_conjugate_transpose(acb_mat_t dest, const acb_mat_t src) + void acb_mat_conjugate(acb_mat_t dest, const acb_mat_t src) void acb_mat_bound_inf_norm(mag_t b, const acb_mat_t A) - + void acb_mat_frobenius_norm(acb_t res, const acb_mat_t A, slong prec) + void acb_mat_bound_frobenius_norm(mag_t res, const acb_mat_t A) void acb_mat_neg(acb_mat_t dest, const acb_mat_t src) - void acb_mat_add(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, 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_pow_ui(acb_mat_t B, const acb_mat_t A, ulong 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_mul_si(acb_mat_t B, const acb_mat_t A, long 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_addmul_fmpz(acb_mat_t B, const acb_mat_t A, const fmpz_t c, long prec) - void acb_mat_scalar_mul_fmpz(acb_mat_t B, const acb_mat_t A, const fmpz_t c, long prec) - void acb_mat_scalar_div_fmpz(acb_mat_t B, const acb_mat_t A, const fmpz_t 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_acb(acb_mat_t B, const acb_mat_t A, const acb_t c, long prec) - void acb_mat_scalar_div_acb(acb_mat_t B, const acb_mat_t A, const acb_t c, long prec) - - int acb_mat_lu(long * P, 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 A, const acb_mat_t B, long prec) - int acb_mat_solve(acb_mat_t X, const acb_mat_t A, const acb_mat_t B, long prec) - int acb_mat_solve_lu(acb_mat_t X, const acb_mat_t A, const acb_mat_t B, long prec) - int acb_mat_solve_precond(acb_mat_t X, const acb_mat_t A, const acb_mat_t B, long prec) - int 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_exp(acb_mat_t B, const acb_mat_t A, long prec) - - void _acb_mat_charpoly(acb_ptr cp, const acb_mat_t mat, long prec) - void acb_mat_charpoly(acb_poly_t cp, const acb_mat_t mat, long prec) - - - void acb_mat_conjugate(acb_mat_t mat1, const acb_mat_t mat2) - void acb_mat_transpose(acb_mat_t B, const acb_mat_t A) - void acb_mat_trace(acb_t trace, const acb_mat_t mat, long prec) + void acb_mat_add(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec) + void acb_mat_sub(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec) + void acb_mat_mul_classical(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec) + void acb_mat_mul_threaded(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec) + void acb_mat_mul_reorder(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec) + void acb_mat_mul(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec) + void acb_mat_mul_entrywise(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec) + void acb_mat_sqr_classical(acb_mat_t res, const acb_mat_t mat, slong prec) + void acb_mat_sqr(acb_mat_t res, const acb_mat_t mat, slong prec) + void acb_mat_pow_ui(acb_mat_t res, const acb_mat_t mat, ulong exp, slong prec) + void acb_mat_approx_mul(acb_mat_t res, const acb_mat_t mat1, const acb_mat_t mat2, slong prec) + void acb_mat_scalar_mul_2exp_si(acb_mat_t B, const acb_mat_t A, slong c) + void acb_mat_scalar_addmul_si(acb_mat_t B, const acb_mat_t A, slong c, slong prec) + void acb_mat_scalar_addmul_fmpz(acb_mat_t B, const acb_mat_t A, const fmpz_t c, slong prec) + void acb_mat_scalar_addmul_arb(acb_mat_t B, const acb_mat_t A, const arb_t c, slong prec) + void acb_mat_scalar_addmul_acb(acb_mat_t B, const acb_mat_t A, const acb_t c, slong prec) + void acb_mat_scalar_mul_si(acb_mat_t B, const acb_mat_t A, slong c, slong prec) + void acb_mat_scalar_mul_fmpz(acb_mat_t B, const acb_mat_t A, const fmpz_t c, slong prec) + void acb_mat_scalar_mul_arb(acb_mat_t B, const acb_mat_t A, const arb_t c, slong prec) + void acb_mat_scalar_mul_acb(acb_mat_t B, const acb_mat_t A, const acb_t c, slong prec) + void acb_mat_scalar_div_si(acb_mat_t B, const acb_mat_t A, slong c, slong prec) + void acb_mat_scalar_div_fmpz(acb_mat_t B, const acb_mat_t A, const fmpz_t c, slong prec) + void acb_mat_scalar_div_arb(acb_mat_t B, const acb_mat_t A, const arb_t c, slong prec) + void acb_mat_scalar_div_acb(acb_mat_t B, const acb_mat_t A, const acb_t c, slong prec) + int acb_mat_lu_classical(slong * perm, acb_mat_t LU, const acb_mat_t A, slong prec) + int acb_mat_lu_recursive(slong * perm, acb_mat_t LU, const acb_mat_t A, slong prec) + int acb_mat_lu(slong * perm, acb_mat_t LU, const acb_mat_t A, slong prec) + void acb_mat_solve_tril_classical(acb_mat_t X, const acb_mat_t L, const acb_mat_t B, int unit, slong prec) + void acb_mat_solve_tril_recursive(acb_mat_t X, const acb_mat_t L, const acb_mat_t B, int unit, slong prec) + void acb_mat_solve_tril(acb_mat_t X, const acb_mat_t L, const acb_mat_t B, int unit, slong prec) + void acb_mat_solve_triu_classical(acb_mat_t X, const acb_mat_t U, const acb_mat_t B, int unit, slong prec) + void acb_mat_solve_triu_recursive(acb_mat_t X, const acb_mat_t U, const acb_mat_t B, int unit, slong prec) + void acb_mat_solve_triu(acb_mat_t X, const acb_mat_t U, const acb_mat_t B, int unit, slong prec) + 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) + int acb_mat_solve(acb_mat_t X, const acb_mat_t A, const acb_mat_t B, slong prec) + int acb_mat_solve_lu(acb_mat_t X, const acb_mat_t A, const acb_mat_t B, slong prec) + int acb_mat_solve_precond(acb_mat_t X, const acb_mat_t A, const acb_mat_t B, slong prec) + int acb_mat_inv(acb_mat_t X, const acb_mat_t A, slong prec) + void acb_mat_det_lu(acb_t det, const acb_mat_t A, slong prec) + void acb_mat_det_precond(acb_t det, const acb_mat_t A, slong prec) + void acb_mat_det(acb_t det, const acb_mat_t A, slong prec) + void acb_mat_approx_solve_triu(acb_mat_t X, const acb_mat_t U, const acb_mat_t B, int unit, slong prec) + void acb_mat_approx_solve_tril(acb_mat_t X, const acb_mat_t L, const acb_mat_t B, int unit, slong prec) + int acb_mat_approx_lu(slong * P, acb_mat_t LU, const acb_mat_t A, slong prec) + 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) + int acb_mat_approx_solve(acb_mat_t X, const acb_mat_t A, const acb_mat_t B, slong prec) + int acb_mat_approx_inv(acb_mat_t X, const acb_mat_t A, slong prec) + void _acb_mat_charpoly(acb_ptr poly, const acb_mat_t mat, slong prec) + void acb_mat_charpoly(acb_poly_t poly, const acb_mat_t mat, slong prec) + void _acb_mat_companion(acb_mat_t mat, acb_srcptr poly, slong prec) + void acb_mat_companion(acb_mat_t mat, const acb_poly_t poly, slong prec) + void acb_mat_exp_taylor_sum(acb_mat_t S, const acb_mat_t A, slong N, slong prec) + void acb_mat_exp(acb_mat_t B, const acb_mat_t A, slong prec) + void acb_mat_trace(acb_t trace, const acb_mat_t mat, slong prec) + void _acb_mat_diag_prod(acb_t res, const acb_mat_t mat, slong a, slong b, slong prec) + void acb_mat_diag_prod(acb_t res, const acb_mat_t mat, slong 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, slong maxiter, slong prec) + void acb_mat_eig_global_enclosure(mag_t eps, const acb_mat_t A, acb_srcptr E, const acb_mat_t R, slong prec) + void acb_mat_eig_enclosure_rump(acb_t l, acb_mat_t J, acb_mat_t R, const acb_mat_t A, const acb_t lambda_approx, const acb_mat_t R_approx, slong prec) + int acb_mat_eig_simple_rump(acb_ptr E, acb_mat_t L, acb_mat_t R, const acb_mat_t A, acb_srcptr E_approx, const acb_mat_t R_approx, slong prec) + int acb_mat_eig_simple_vdhoeven_mourrain(acb_ptr E, acb_mat_t L, acb_mat_t R, const acb_mat_t A, acb_srcptr E_approx, const acb_mat_t R_approx, slong prec) + int acb_mat_eig_simple(acb_ptr E, acb_mat_t L, acb_mat_t R, const acb_mat_t A, acb_srcptr E_approx, const acb_mat_t R_approx, slong prec) + 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) + 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) - void acb_mat_dft(acb_mat_t res, int kind, long prec) - - void acb_mat_frobenius_norm(arb_t res, const acb_mat_t A, long prec) - - int acb_mat_eq(const acb_mat_t mat1, const acb_mat_t mat2) - int acb_mat_ne(const acb_mat_t mat1, const acb_mat_t mat2) - int acb_mat_equal(const acb_mat_t mat1, const acb_mat_t mat2) - - int acb_mat_approx_solve(acb_mat_t X, const acb_mat_t A, const acb_mat_t B, long prec) - - void acb_mat_randtest_eig(acb_mat_t A, flint_rand_t state, acb_srcptr E, long prec) - 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) - - 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) diff --git a/src/flint/flintlib/acb_poly.pxd b/src/flint/flintlib/acb_poly.pxd index 137d23a3..e399082c 100644 --- a/src/flint/flintlib/acb_poly.pxd +++ b/src/flint/flintlib/acb_poly.pxd @@ -1,10 +1,11 @@ -from flint._flint cimport flint_rand_t, ulong +from flint.flintlib.flint cimport flint_rand_t, ulong, slong from flint.flintlib.acb cimport acb_ptr, acb_t, acb_srcptr from flint.flintlib.arb_poly cimport arb_poly_t from flint.flintlib.fmpq_poly cimport fmpq_poly_t from flint.flintlib.fmpz_poly cimport fmpz_poly_t from flint.flintlib.mag cimport mag_t from flint.flintlib.fmpz cimport fmpz_t +from flint.flintlib.arb cimport arb_ptr cdef extern from "acb_poly.h": ctypedef struct acb_poly_struct: @@ -14,199 +15,259 @@ cdef extern from "acb_poly.h": ctypedef acb_poly_struct acb_poly_t[1] +#macros + acb_ptr acb_poly_get_coeff_ptr(arb_poly_t poly, long n) +# from here on is parsed void acb_poly_init(acb_poly_t poly) - void acb_poly_init2(acb_poly_t poly, long len) 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_fit_length(acb_poly_t poly, slong len) + void _acb_poly_set_length(acb_poly_t poly, slong 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) + slong acb_poly_allocated_bytes(const acb_poly_t x) + slong acb_poly_length(const acb_poly_t poly) + slong acb_poly_degree(const acb_poly_t poly) + int acb_poly_is_zero(const acb_poly_t poly) + int acb_poly_is_one(const acb_poly_t poly) + int 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_coeff_si(acb_poly_t poly, long n, long x) - void acb_poly_set_coeff_acb(acb_poly_t poly, long n, const acb_t x) - void acb_poly_get_coeff_acb(acb_t x, const acb_poly_t poly, long n) - acb_ptr acb_poly_get_coeff_ptr(arb_poly_t poly, long n) - 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 newlen) - void acb_poly_printd(const acb_poly_t poly, long digits) - void _acb_poly_evaluate_horner(acb_t res, acb_srcptr f, long len, const acb_t a, long prec) - void acb_poly_evaluate_horner(acb_t res, const acb_poly_t f, const acb_t a, long prec) - void _acb_poly_evaluate_rectangular(acb_t y, acb_srcptr poly, long len, const acb_t x, long prec) - void acb_poly_evaluate_rectangular(acb_t res, const acb_poly_t f, const acb_t a, long prec) - void _acb_poly_evaluate(acb_t res, acb_srcptr f, long len, const acb_t a, long prec) - void acb_poly_evaluate(acb_t res, const acb_poly_t f, const acb_t a, 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_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_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_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_fmpz_poly(acb_poly_t poly, const fmpz_poly_t src, long prec) - void acb_poly_set_acb(acb_poly_t poly, const acb_t c) - void acb_poly_set_si(acb_poly_t poly, long c) - void acb_poly_randtest(acb_poly_t poly, flint_rand_t state, long len, long prec, long mag_bits) + void acb_poly_set_round(acb_poly_t dest, const acb_poly_t src, slong prec) + void acb_poly_set_trunc(acb_poly_t dest, const acb_poly_t src, slong n) + void acb_poly_set_trunc_round(acb_poly_t dest, const acb_poly_t src, slong n, slong prec) + void acb_poly_set_coeff_si(acb_poly_t poly, slong n, slong c) + void acb_poly_set_coeff_acb(acb_poly_t poly, slong n, const acb_t c) + void acb_poly_get_coeff_acb(acb_t v, const acb_poly_t poly, slong n) + void _acb_poly_shift_right(acb_ptr res, acb_srcptr poly, slong len, slong n) + void acb_poly_shift_right(acb_poly_t res, const acb_poly_t poly, slong n) + void _acb_poly_shift_left(acb_ptr res, acb_srcptr poly, slong len, slong n) + void acb_poly_shift_left(acb_poly_t res, const acb_poly_t poly, slong n) + void acb_poly_truncate(acb_poly_t poly, slong n) + slong acb_poly_valuation(const acb_poly_t poly) + void acb_poly_printd(const acb_poly_t poly, slong digits) + void acb_poly_randtest(acb_poly_t poly, flint_rand_t state, slong len, slong prec, slong mag_bits) int acb_poly_equal(const acb_poly_t A, const acb_poly_t B) + int acb_poly_contains(const acb_poly_t poly1, const acb_poly_t poly2) int acb_poly_contains_fmpz_poly(const acb_poly_t poly1, const fmpz_poly_t poly2) int acb_poly_contains_fmpq_poly(const acb_poly_t poly1, const fmpq_poly_t poly2) - int _acb_poly_overlaps(acb_srcptr poly1, long len1, acb_srcptr poly2, long len2) + int _acb_poly_overlaps(acb_srcptr poly1, slong len1, acb_srcptr poly2, slong len2) int acb_poly_overlaps(const acb_poly_t poly1, const acb_poly_t poly2) - int acb_poly_contains(const acb_poly_t poly1, const acb_poly_t poly2) - void _acb_poly_add(acb_ptr res, acb_srcptr poly1, long len1, acb_srcptr poly2, long len2, long prec) - void acb_poly_add(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, long prec) - void _acb_poly_sub(acb_ptr res, acb_srcptr poly1, long len1, acb_srcptr poly2, long len2, long prec) - void acb_poly_sub(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, long prec) - void acb_poly_neg(acb_poly_t res, const acb_poly_t poly) - void acb_poly_scalar_mul_2exp_si(acb_poly_t res, const acb_poly_t poly, long c) - void acb_poly_mullow_classical(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, long n, long prec) - void _acb_poly_mullow_classical(acb_ptr res, acb_srcptr poly1, long len1, acb_srcptr poly2, long len2, long n, long prec) - void _acb_poly_mullow_transpose(acb_ptr res, acb_srcptr poly1, long len1, acb_srcptr poly2, long len2, long n, long prec) - void acb_poly_mullow_transpose(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, long n, long prec) - void _acb_poly_mullow_transpose_gauss(acb_ptr res, acb_srcptr poly1, long len1, acb_srcptr poly2, long len2, long n, long prec) - void acb_poly_mullow_transpose_gauss(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, long n, long prec) - void _acb_poly_mullow(acb_ptr res, acb_srcptr poly1, long len1, acb_srcptr poly2, long len2, long n, long prec) - void acb_poly_mullow(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, 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 res, const acb_poly_t poly1, const acb_poly_t poly2, 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_reverse(acb_ptr res, acb_srcptr poly, long len, long n) - void _acb_poly_div(acb_ptr Q, 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) - void _acb_poly_rem(acb_ptr R, acb_srcptr A, long lenA, acb_srcptr B, long lenB, long prec) - int 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_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_horner(acb_ptr res, acb_srcptr poly1, long len1, acb_srcptr poly2, long len2, long prec) - void acb_poly_compose_horner(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, long prec) - void _acb_poly_compose_divconquer(acb_ptr res, acb_srcptr poly1, long len1, acb_srcptr poly2, long len2, long prec) - void acb_poly_compose_divconquer(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, long prec) - void _acb_poly_compose_series_horner(acb_ptr res, acb_srcptr poly1, long len1, acb_srcptr poly2, long len2, long n, long prec) - void acb_poly_compose_series_horner(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, long n, long prec) - void _acb_poly_compose_series_brent_kung(acb_ptr res, acb_srcptr poly1, long len1, acb_srcptr poly2, long len2, long n, long prec) - void acb_poly_compose_series_brent_kung(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, long n, 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 Qinv, acb_srcptr Q, long Qlen, long n, long prec) - void acb_poly_revert_series_lagrange(acb_poly_t Qinv, const acb_poly_t Q, long n, long prec) - void _acb_poly_revert_series_newton(acb_ptr Qinv, acb_srcptr Q, long Qlen, long n, long prec) - void acb_poly_revert_series_newton(acb_poly_t Qinv, const acb_poly_t Q, long n, long prec) - void _acb_poly_revert_series_lagrange_fast(acb_ptr Qinv, acb_srcptr Q, long Qlen, long n, long prec) - void acb_poly_revert_series_lagrange_fast(acb_poly_t Qinv, const acb_poly_t Q, long n, long prec) - void _acb_poly_revert_series(acb_ptr Qinv, acb_srcptr Q, long Qlen, long n, long prec) - void acb_poly_revert_series(acb_poly_t Qinv, const acb_poly_t Q, 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_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_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_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_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_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) - void _acb_poly_pow_ui_trunc_binexp(acb_ptr res, acb_srcptr f, long flen, ulong exp, long len, long prec) - void acb_poly_pow_ui_trunc_binexp(acb_poly_t res, const acb_poly_t poly, ulong exp, long len, long prec) - void _acb_poly_pow_ui(acb_ptr res, acb_srcptr f, long flen, ulong exp, long prec) - void acb_poly_pow_ui(acb_poly_t res, const acb_poly_t poly, ulong exp, long prec) - void _acb_poly_rsqrt_series(acb_ptr g, acb_srcptr h, long hlen, long len, long prec) - void acb_poly_rsqrt_series(acb_poly_t g, const acb_poly_t h, long n, long prec) - void _acb_poly_sqrt_series(acb_ptr g, acb_srcptr h, long hlen, long len, long prec) - void acb_poly_sqrt_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_basecase(acb_ptr s, acb_ptr c, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_sin_cos_series_basecase(acb_poly_t s, acb_poly_t c, const acb_poly_t h, long n, long prec) - void _acb_poly_sin_cos_series_tangent(acb_ptr s, acb_ptr c, const acb_srcptr h, long hlen, long len, long prec) - void acb_poly_sin_cos_series_tangent(acb_poly_t s, acb_poly_t c, const acb_poly_t h, long n, long prec) - void _acb_poly_sin_cos_series(acb_ptr s, acb_ptr c, const acb_srcptr h, long hlen, long len, 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 g, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_sin_series(acb_poly_t g, const acb_poly_t h, long n, long prec) - void _acb_poly_cos_series(acb_ptr g, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_cos_series(acb_poly_t g, 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_gamma_series(acb_ptr res, acb_srcptr h, long hlen, long len, long prec) - void acb_poly_gamma_series(acb_poly_t res, const acb_poly_t f, long n, long prec) - void _acb_poly_rgamma_series(acb_ptr res, acb_srcptr h, long hlen, long len, long prec) - void acb_poly_rgamma_series(acb_poly_t res, const acb_poly_t f, long n, long prec) - void _acb_poly_lgamma_series(acb_ptr res, acb_srcptr h, long hlen, long len, long prec) - void acb_poly_lgamma_series(acb_poly_t res, const acb_poly_t f, long n, long prec) - void _acb_poly_rising_ui_series(acb_ptr res, acb_srcptr f, long flen, ulong r, long trunc, long prec) - void acb_poly_rising_ui_series(acb_poly_t res, const acb_poly_t f, ulong r, long trunc, long prec) - void _acb_poly_zeta_series(acb_ptr res, acb_srcptr h, long hlen, const acb_t a, int deflate, long len, long prec) - void acb_poly_zeta_series(acb_poly_t res, const acb_poly_t f, const acb_t a, int deflate, long n, 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_small(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 res, acb_srcptr s, long slen, const acb_t z, long len, long prec) - void acb_poly_polylog_series(acb_poly_t res, const acb_poly_t s, const acb_t z, long n, 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_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_erf_series(acb_ptr res, acb_srcptr h, long hlen, long len, long prec) - void acb_poly_erf_series(acb_poly_t res, const acb_poly_t h, long n, long prec) - int acb_poly_get_unique_fmpz_poly(fmpz_poly_t res, const acb_poly_t src) - - void _acb_poly_sin_cos_pi_series(acb_ptr s, acb_ptr c, const acb_srcptr h, long hlen, long len, 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 g, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_sin_pi_series(acb_poly_t g, const acb_poly_t h, long n, long prec) - void _acb_poly_cos_pi_series(acb_ptr g, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_cos_pi_series(acb_poly_t g, const acb_poly_t h, long n, long prec) - - void _acb_poly_cot_pi_series(acb_ptr g, acb_srcptr h, long hlen, long n, long prec) - void acb_poly_cot_pi_series(acb_poly_t g, const acb_poly_t h, long n, long prec) - + int acb_poly_get_unique_fmpz_poly(fmpz_poly_t z, const acb_poly_t x) + int acb_poly_is_real(const acb_poly_t poly) + void acb_poly_set_fmpz_poly(acb_poly_t poly, const fmpz_poly_t re, slong prec) + void acb_poly_set2_fmpz_poly(acb_poly_t poly, const fmpz_poly_t re, const fmpz_poly_t im, slong 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, slong prec) + void acb_poly_set2_fmpq_poly(acb_poly_t poly, const fmpq_poly_t re, const fmpq_poly_t im, slong prec) + void acb_poly_set_acb(acb_poly_t poly, const acb_t src) + void acb_poly_set_si(acb_poly_t poly, slong src) + void _acb_poly_majorant(arb_ptr res, acb_srcptr poly, slong len, slong prec) + void acb_poly_majorant(arb_poly_t res, const acb_poly_t poly, slong prec) + void _acb_poly_add(acb_ptr C, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong prec) + void acb_poly_add(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, slong prec) + void acb_poly_add_si(acb_poly_t C, const acb_poly_t A, slong B, slong prec) + void _acb_poly_sub(acb_ptr C, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong prec) + void acb_poly_sub(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, slong prec) + void acb_poly_add_series(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, slong len, slong prec) + void acb_poly_sub_series(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, slong len, slong 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, slong c) + void acb_poly_scalar_mul(acb_poly_t C, const acb_poly_t A, const acb_t c, slong prec) + void acb_poly_scalar_div(acb_poly_t C, const acb_poly_t A, const acb_t c, slong prec) + void _acb_poly_mullow_classical(acb_ptr C, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong n, slong prec) + void _acb_poly_mullow_transpose(acb_ptr C, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong n, slong prec) + void _acb_poly_mullow_transpose_gauss(acb_ptr C, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong n, slong prec) + void _acb_poly_mullow(acb_ptr C, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong n, slong prec) + void acb_poly_mullow_classical(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, slong n, slong prec) + void acb_poly_mullow_transpose(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, slong n, slong prec) + void acb_poly_mullow_transpose_gauss(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, slong n, slong prec) + void acb_poly_mullow(acb_poly_t C, const acb_poly_t A, const acb_poly_t B, slong n, slong prec) + void _acb_poly_mul(acb_ptr C, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong prec) + void acb_poly_mul(acb_poly_t C, const acb_poly_t A1, const acb_poly_t B2, slong prec) + void _acb_poly_inv_series(acb_ptr Qinv, acb_srcptr Q, slong Qlen, slong len, slong prec) + void acb_poly_inv_series(acb_poly_t Qinv, const acb_poly_t Q, slong n, slong prec) + void _acb_poly_div_series(acb_ptr Q, acb_srcptr A, slong Alen, acb_srcptr B, slong Blen, slong n, slong prec) + void acb_poly_div_series(acb_poly_t Q, const acb_poly_t A, const acb_poly_t B, slong n, slong prec) + void _acb_poly_div(acb_ptr Q, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong prec) + void _acb_poly_rem(acb_ptr R, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong prec) + void _acb_poly_divrem(acb_ptr Q, acb_ptr R, acb_srcptr A, slong lenA, acb_srcptr B, slong lenB, slong prec) + int acb_poly_divrem(acb_poly_t Q, acb_poly_t R, const acb_poly_t A, const acb_poly_t B, slong prec) + void _acb_poly_div_root(acb_ptr Q, acb_t R, acb_srcptr A, slong len, const acb_t c, slong prec) + void _acb_poly_taylor_shift_horner(acb_ptr g, const acb_t c, slong n, slong prec) + void acb_poly_taylor_shift_horner(acb_poly_t g, const acb_poly_t f, const acb_t c, slong prec) + void _acb_poly_taylor_shift_divconquer(acb_ptr g, const acb_t c, slong n, slong prec) + void acb_poly_taylor_shift_divconquer(acb_poly_t g, const acb_poly_t f, const acb_t c, slong prec) + void _acb_poly_taylor_shift_convolution(acb_ptr g, const acb_t c, slong n, slong prec) + void acb_poly_taylor_shift_convolution(acb_poly_t g, const acb_poly_t f, const acb_t c, slong prec) + void _acb_poly_taylor_shift(acb_ptr g, const acb_t c, slong n, slong prec) + void acb_poly_taylor_shift(acb_poly_t g, const acb_poly_t f, const acb_t c, slong prec) + void _acb_poly_compose_horner(acb_ptr res, acb_srcptr poly1, slong len1, acb_srcptr poly2, slong len2, slong prec) + void acb_poly_compose_horner(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, slong prec) + void _acb_poly_compose_divconquer(acb_ptr res, acb_srcptr poly1, slong len1, acb_srcptr poly2, slong len2, slong prec) + void acb_poly_compose_divconquer(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, slong prec) + void _acb_poly_compose(acb_ptr res, acb_srcptr poly1, slong len1, acb_srcptr poly2, slong len2, slong prec) + void acb_poly_compose(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, slong prec) + void _acb_poly_compose_series_horner(acb_ptr res, acb_srcptr poly1, slong len1, acb_srcptr poly2, slong len2, slong n, slong prec) + void acb_poly_compose_series_horner(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, slong n, slong prec) + void _acb_poly_compose_series_brent_kung(acb_ptr res, acb_srcptr poly1, slong len1, acb_srcptr poly2, slong len2, slong n, slong prec) + void acb_poly_compose_series_brent_kung(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, slong n, slong prec) + void _acb_poly_compose_series(acb_ptr res, acb_srcptr poly1, slong len1, acb_srcptr poly2, slong len2, slong n, slong prec) + void acb_poly_compose_series(acb_poly_t res, const acb_poly_t poly1, const acb_poly_t poly2, slong n, slong prec) + void _acb_poly_revert_series_lagrange(acb_ptr h, acb_srcptr f, slong flen, slong n, slong prec) + void acb_poly_revert_series_lagrange(acb_poly_t h, const acb_poly_t f, slong n, slong prec) + void _acb_poly_revert_series_newton(acb_ptr h, acb_srcptr f, slong flen, slong n, slong prec) + void acb_poly_revert_series_newton(acb_poly_t h, const acb_poly_t f, slong n, slong prec) + void _acb_poly_revert_series_lagrange_fast(acb_ptr h, acb_srcptr f, slong flen, slong n, slong prec) + void acb_poly_revert_series_lagrange_fast(acb_poly_t h, const acb_poly_t f, slong n, slong prec) + void _acb_poly_revert_series(acb_ptr h, acb_srcptr f, slong flen, slong n, slong prec) + void acb_poly_revert_series(acb_poly_t h, const acb_poly_t f, slong n, slong prec) + void _acb_poly_evaluate_horner(acb_t y, acb_srcptr f, slong len, const acb_t x, slong prec) + void acb_poly_evaluate_horner(acb_t y, const acb_poly_t f, const acb_t x, slong prec) + void _acb_poly_evaluate_rectangular(acb_t y, acb_srcptr f, slong len, const acb_t x, slong prec) + void acb_poly_evaluate_rectangular(acb_t y, const acb_poly_t f, const acb_t x, slong prec) + void _acb_poly_evaluate(acb_t y, acb_srcptr f, slong len, const acb_t x, slong prec) + void acb_poly_evaluate(acb_t y, const acb_poly_t f, const acb_t x, slong prec) + void _acb_poly_evaluate2_horner(acb_t y, acb_t z, acb_srcptr f, slong len, const acb_t x, slong prec) + void acb_poly_evaluate2_horner(acb_t y, acb_t z, const acb_poly_t f, const acb_t x, slong prec) + void _acb_poly_evaluate2_rectangular(acb_t y, acb_t z, acb_srcptr f, slong len, const acb_t x, slong prec) + void acb_poly_evaluate2_rectangular(acb_t y, acb_t z, const acb_poly_t f, const acb_t x, slong prec) + void _acb_poly_evaluate2(acb_t y, acb_t z, acb_srcptr f, slong len, const acb_t x, slong prec) + void acb_poly_evaluate2(acb_t y, acb_t z, const acb_poly_t f, const acb_t x, slong prec) + void _acb_poly_product_roots(acb_ptr poly, acb_srcptr xs, slong n, slong prec) + void acb_poly_product_roots(acb_poly_t poly, acb_srcptr xs, slong n, slong prec) + acb_ptr * _acb_poly_tree_alloc(slong len) + void _acb_poly_tree_free(acb_ptr * tree, slong len) + void _acb_poly_tree_build(acb_ptr * tree, acb_srcptr roots, slong len, slong prec) + void _acb_poly_evaluate_vec_iter(acb_ptr ys, acb_srcptr poly, slong plen, acb_srcptr xs, slong n, slong prec) + void acb_poly_evaluate_vec_iter(acb_ptr ys, const acb_poly_t poly, acb_srcptr xs, slong n, slong prec) + void _acb_poly_evaluate_vec_fast_precomp(acb_ptr vs, acb_srcptr poly, slong plen, acb_ptr * tree, slong len, slong prec) + void _acb_poly_evaluate_vec_fast(acb_ptr ys, acb_srcptr poly, slong plen, acb_srcptr xs, slong n, slong prec) + void acb_poly_evaluate_vec_fast(acb_ptr ys, const acb_poly_t poly, acb_srcptr xs, slong n, slong prec) + void _acb_poly_interpolate_newton(acb_ptr poly, acb_srcptr xs, acb_srcptr ys, slong n, slong prec) + void acb_poly_interpolate_newton(acb_poly_t poly, acb_srcptr xs, acb_srcptr ys, slong n, slong prec) + void _acb_poly_interpolate_barycentric(acb_ptr poly, acb_srcptr xs, acb_srcptr ys, slong n, slong prec) + void acb_poly_interpolate_barycentric(acb_poly_t poly, acb_srcptr xs, acb_srcptr ys, slong n, slong prec) + void _acb_poly_interpolation_weights(acb_ptr w, acb_ptr * tree, slong len, slong prec) + void _acb_poly_interpolate_fast_precomp(acb_ptr poly, acb_srcptr ys, acb_ptr * tree, acb_srcptr weights, slong len, slong prec) + void _acb_poly_interpolate_fast(acb_ptr poly, acb_srcptr xs, acb_srcptr ys, slong len, slong prec) + void acb_poly_interpolate_fast(acb_poly_t poly, acb_srcptr xs, acb_srcptr ys, slong n, slong prec) + void _acb_poly_derivative(acb_ptr res, acb_srcptr poly, slong len, slong prec) + void acb_poly_derivative(acb_poly_t res, const acb_poly_t poly, slong prec) + void _acb_poly_integral(acb_ptr res, acb_srcptr poly, slong len, slong prec) + void acb_poly_integral(acb_poly_t res, const acb_poly_t poly, slong prec) + void _acb_poly_borel_transform(acb_ptr res, acb_srcptr poly, slong len, slong prec) + void acb_poly_borel_transform(acb_poly_t res, const acb_poly_t poly, slong prec) + void _acb_poly_inv_borel_transform(acb_ptr res, acb_srcptr poly, slong len, slong prec) + void acb_poly_inv_borel_transform(acb_poly_t res, const acb_poly_t poly, slong prec) + void _acb_poly_binomial_transform_basecase(acb_ptr b, acb_srcptr a, slong alen, slong len, slong prec) + void acb_poly_binomial_transform_basecase(acb_poly_t b, const acb_poly_t a, slong len, slong prec) + void _acb_poly_binomial_transform_convolution(acb_ptr b, acb_srcptr a, slong alen, slong len, slong prec) + void acb_poly_binomial_transform_convolution(acb_poly_t b, const acb_poly_t a, slong len, slong prec) + void _acb_poly_binomial_transform(acb_ptr b, acb_srcptr a, slong alen, slong len, slong prec) + void acb_poly_binomial_transform(acb_poly_t b, const acb_poly_t a, slong len, slong prec) + void _acb_poly_graeffe_transform(acb_ptr b, acb_srcptr a, slong len, slong prec) + void acb_poly_graeffe_transform(acb_poly_t b, acb_poly_t a, slong prec) + void _acb_poly_pow_ui_trunc_binexp(acb_ptr res, acb_srcptr f, slong flen, ulong exp, slong len, slong prec) + void acb_poly_pow_ui_trunc_binexp(acb_poly_t res, const acb_poly_t poly, ulong exp, slong len, slong prec) + void _acb_poly_pow_ui(acb_ptr res, acb_srcptr f, slong flen, ulong exp, slong prec) + void acb_poly_pow_ui(acb_poly_t res, const acb_poly_t poly, ulong exp, slong prec) + void _acb_poly_pow_series(acb_ptr h, acb_srcptr f, slong flen, acb_srcptr g, slong glen, slong len, slong prec) + void acb_poly_pow_series(acb_poly_t h, const acb_poly_t f, const acb_poly_t g, slong len, slong prec) + void _acb_poly_pow_acb_series(acb_ptr h, acb_srcptr f, slong flen, const acb_t g, slong len, slong prec) + void acb_poly_pow_acb_series(acb_poly_t h, const acb_poly_t f, const acb_t g, slong len, slong prec) + void _acb_poly_sqrt_series(acb_ptr g, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_sqrt_series(acb_poly_t g, const acb_poly_t h, slong n, slong prec) + void _acb_poly_rsqrt_series(acb_ptr g, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_rsqrt_series(acb_poly_t g, const acb_poly_t h, slong n, slong prec) + void _acb_poly_log_series(acb_ptr res, acb_srcptr f, slong flen, slong n, slong prec) + void acb_poly_log_series(acb_poly_t res, const acb_poly_t f, slong n, slong prec) + void _acb_poly_log1p_series(acb_ptr res, acb_srcptr f, slong flen, slong n, slong prec) + void acb_poly_log1p_series(acb_poly_t res, const acb_poly_t f, slong n, slong prec) + void _acb_poly_atan_series(acb_ptr res, acb_srcptr f, slong flen, slong n, slong prec) + void acb_poly_atan_series(acb_poly_t res, const acb_poly_t f, slong n, slong prec) + void _acb_poly_exp_series_basecase(acb_ptr f, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_exp_series_basecase(acb_poly_t f, const acb_poly_t h, slong n, slong prec) + void _acb_poly_exp_series(acb_ptr f, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_exp_series(acb_poly_t f, const acb_poly_t h, slong n, slong prec) + void _acb_poly_exp_pi_i_series(acb_ptr f, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_exp_pi_i_series(acb_poly_t f, const acb_poly_t h, slong n, slong prec) + void _acb_poly_sin_cos_series_basecase(acb_ptr s, acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec, int times_pi) + void acb_poly_sin_cos_series_basecase(acb_poly_t s, acb_poly_t c, const acb_poly_t h, slong n, slong prec, int times_pi) + void _acb_poly_sin_cos_series_tangent(acb_ptr s, acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec, int times_pi) + void acb_poly_sin_cos_series_tangent(acb_poly_t s, acb_poly_t c, const acb_poly_t h, slong n, slong prec, int times_pi) + void _acb_poly_sin_cos_series(acb_ptr s, acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_sin_cos_series(acb_poly_t s, acb_poly_t c, const acb_poly_t h, slong n, slong prec) + void _acb_poly_sin_series(acb_ptr s, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_sin_series(acb_poly_t s, const acb_poly_t h, slong n, slong prec) + void _acb_poly_cos_series(acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_cos_series(acb_poly_t c, const acb_poly_t h, slong n, slong prec) + void _acb_poly_tan_series(acb_ptr g, acb_srcptr h, slong hlen, slong len, slong prec) + void acb_poly_tan_series(acb_poly_t g, const acb_poly_t h, slong n, slong prec) + void _acb_poly_sin_cos_pi_series(acb_ptr s, acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_sin_cos_pi_series(acb_poly_t s, acb_poly_t c, const acb_poly_t h, slong n, slong prec) + void _acb_poly_sin_pi_series(acb_ptr s, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_sin_pi_series(acb_poly_t s, const acb_poly_t h, slong n, slong prec) + void _acb_poly_cos_pi_series(acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_cos_pi_series(acb_poly_t c, const acb_poly_t h, slong n, slong prec) + void _acb_poly_cot_pi_series(acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_cot_pi_series(acb_poly_t c, const acb_poly_t h, slong n, slong prec) + void _acb_poly_sinh_cosh_series_basecase(acb_ptr s, acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_sinh_cosh_series_basecase(acb_poly_t s, acb_poly_t c, const acb_poly_t h, slong n, slong prec) + void _acb_poly_sinh_cosh_series_exponential(acb_ptr s, acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_sinh_cosh_series_exponential(acb_poly_t s, acb_poly_t c, const acb_poly_t h, slong n, slong prec) + void _acb_poly_sinh_cosh_series(acb_ptr s, acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_sinh_cosh_series(acb_poly_t s, acb_poly_t c, const acb_poly_t h, slong n, slong prec) + void _acb_poly_sinh_series(acb_ptr s, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_sinh_series(acb_poly_t s, const acb_poly_t h, slong n, slong prec) + void _acb_poly_cosh_series(acb_ptr c, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_cosh_series(acb_poly_t c, const acb_poly_t h, slong n, slong prec) + void _acb_poly_sinc_series(acb_ptr s, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_sinc_series(acb_poly_t s, const acb_poly_t h, slong n, slong prec) + void _acb_poly_lambertw_series(acb_ptr res, acb_srcptr z, slong zlen, const fmpz_t k, int flags, slong len, slong prec) + void acb_poly_lambertw_series(acb_poly_t res, const acb_poly_t z, const fmpz_t k, int flags, slong len, slong prec) + void _acb_poly_gamma_series(acb_ptr res, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_gamma_series(acb_poly_t res, const acb_poly_t h, slong n, slong prec) + void _acb_poly_rgamma_series(acb_ptr res, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_rgamma_series(acb_poly_t res, const acb_poly_t h, slong n, slong prec) + void _acb_poly_lgamma_series(acb_ptr res, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_lgamma_series(acb_poly_t res, const acb_poly_t h, slong n, slong prec) + void _acb_poly_digamma_series(acb_ptr res, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_digamma_series(acb_poly_t res, const acb_poly_t h, slong n, slong prec) + void _acb_poly_rising_ui_series(acb_ptr res, acb_srcptr f, slong flen, ulong r, slong trunc, slong prec) + void acb_poly_rising_ui_series(acb_poly_t res, const acb_poly_t f, ulong r, slong trunc, slong prec) + 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) + 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) + void _acb_poly_powsum_one_series_sieved(acb_ptr z, const acb_t s, slong n, slong len, slong prec) + 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) + 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) + 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) + 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) + 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) + 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) + void _acb_poly_zeta_cpx_series(acb_ptr z, const acb_t s, const acb_t a, int deflate, slong d, slong prec) + void _acb_poly_zeta_series(acb_ptr res, acb_srcptr h, slong hlen, const acb_t a, int deflate, slong len, slong prec) + void acb_poly_zeta_series(acb_poly_t res, const acb_poly_t f, const acb_t a, int deflate, slong n, slong prec) + void _acb_poly_polylog_cpx_small(acb_ptr w, const acb_t s, const acb_t z, slong len, slong prec) + void _acb_poly_polylog_cpx_zeta(acb_ptr w, const acb_t s, const acb_t z, slong len, slong prec) + void _acb_poly_polylog_cpx(acb_ptr w, const acb_t s, const acb_t z, slong len, slong prec) + void _acb_poly_polylog_series(acb_ptr w, acb_srcptr s, slong slen, const acb_t z, slong len, slong prec) + void acb_poly_polylog_series(acb_poly_t w, const acb_poly_t s, const acb_t z, slong len, slong prec) + void _acb_poly_erf_series(acb_ptr res, acb_srcptr z, slong zlen, slong n, slong prec) + void acb_poly_erf_series(acb_poly_t res, const acb_poly_t z, slong n, slong prec) + void _acb_poly_agm1_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) + void acb_poly_agm1_series(acb_poly_t res, const acb_poly_t z, slong n, slong prec) + void _acb_poly_elliptic_k_series(acb_ptr res, acb_srcptr z, slong zlen, slong len, slong prec) + void acb_poly_elliptic_k_series(acb_poly_t res, const acb_poly_t z, slong n, slong prec) + void _acb_poly_elliptic_p_series(acb_ptr res, acb_srcptr z, slong zlen, const acb_t tau, slong len, slong prec) + void acb_poly_elliptic_p_series(acb_poly_t res, const acb_poly_t z, const acb_t tau, slong n, slong prec) + void _acb_poly_root_bound_fujiwara(mag_t bound, acb_srcptr poly, slong len) void acb_poly_root_bound_fujiwara(mag_t bound, acb_poly_t poly) - - 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_root_inclusion(acb_t r, const acb_t m, acb_srcptr poly, acb_srcptr polyder, slong len, slong prec) + slong _acb_poly_validate_roots(acb_ptr roots, acb_srcptr poly, slong len, slong prec) + void _acb_poly_refine_roots_durand_kerner(acb_ptr roots, acb_srcptr poly, slong len, slong prec) + slong _acb_poly_find_roots(acb_ptr roots, acb_srcptr poly, acb_srcptr initial, slong len, slong maxiter, slong prec) + slong acb_poly_find_roots(acb_ptr roots, const acb_poly_t poly, acb_srcptr initial, slong maxiter, slong prec) + int _acb_poly_validate_real_roots(acb_srcptr roots, acb_srcptr poly, slong len, slong prec) + int acb_poly_validate_real_roots(acb_srcptr roots, const acb_poly_t poly, slong prec) diff --git a/src/flint/flintlib/arb.pxd b/src/flint/flintlib/arb.pxd index c846592c..059c175f 100644 --- a/src/flint/flintlib/arb.pxd +++ b/src/flint/flintlib/arb.pxd @@ -1,4 +1,4 @@ -from flint._flint cimport ulong, slong, flint_rand_t +from flint.flintlib.flint cimport ulong, slong, flint_rand_t from flint.flintlib.fmpz cimport fmpz_t from flint.flintlib.fmpq cimport fmpq_t from flint.flintlib.arf cimport arf_struct, arf_ptr, arf_t diff --git a/src/flint/flintlib/arb_fmpz_poly.pxd b/src/flint/flintlib/arb_fmpz_poly.pxd index 60be9a79..3b9f9878 100644 --- a/src/flint/flintlib/arb_fmpz_poly.pxd +++ b/src/flint/flintlib/arb_fmpz_poly.pxd @@ -1,11 +1,25 @@ from flint.flintlib.arb cimport arb_t from flint.flintlib.acb cimport acb_t, acb_ptr from flint.flintlib.fmpz_poly cimport fmpz_poly_t -from flint._flint cimport ulong +from flint.flintlib.flint cimport ulong, slong +from flint.flintlib.fmpz cimport fmpz_struct cdef extern from "arb_fmpz_poly.h": - 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(acb_t res, const fmpz_poly_t poly, const acb_t x, long prec) - void arb_fmpz_poly_complex_roots(acb_ptr roots, const fmpz_poly_t poly, int flags, long prec) +# from here on is parsed + void _arb_fmpz_poly_evaluate_arb_horner(arb_t res, const fmpz_struct * poly, slong len, const arb_t x, slong prec) + void arb_fmpz_poly_evaluate_arb_horner(arb_t res, const fmpz_poly_t poly, const arb_t x, slong prec) + void _arb_fmpz_poly_evaluate_arb_rectangular(arb_t res, const fmpz_struct * poly, slong len, const arb_t x, slong prec) + void arb_fmpz_poly_evaluate_arb_rectangular(arb_t res, const fmpz_poly_t poly, const arb_t x, slong prec) + void _arb_fmpz_poly_evaluate_arb(arb_t res, const fmpz_struct * poly, slong len, const arb_t x, slong prec) + void arb_fmpz_poly_evaluate_arb(arb_t res, const fmpz_poly_t poly, const arb_t x, slong prec) + void _arb_fmpz_poly_evaluate_acb_horner(acb_t res, const fmpz_struct * poly, slong len, const acb_t x, slong prec) + void arb_fmpz_poly_evaluate_acb_horner(acb_t res, const fmpz_poly_t poly, const acb_t x, slong prec) + void _arb_fmpz_poly_evaluate_acb_rectangular(acb_t res, const fmpz_struct * poly, slong len, const acb_t x, slong prec) + void arb_fmpz_poly_evaluate_acb_rectangular(acb_t res, const fmpz_poly_t poly, const acb_t x, slong prec) + void _arb_fmpz_poly_evaluate_acb(acb_t res, const fmpz_struct * poly, slong len, const acb_t x, slong prec) + void arb_fmpz_poly_evaluate_acb(acb_t res, const fmpz_poly_t poly, const acb_t x, slong prec) ulong arb_fmpz_poly_deflation(const fmpz_poly_t poly) void arb_fmpz_poly_deflate(fmpz_poly_t res, const fmpz_poly_t poly, ulong deflation) + void arb_fmpz_poly_complex_roots(acb_ptr roots, const fmpz_poly_t poly, int flags, slong prec) + void arb_fmpz_poly_cos_minpoly(fmpz_poly_t res, ulong n) + void arb_fmpz_poly_gauss_period_minpoly(fmpz_poly_t res, ulong q, ulong n) diff --git a/src/flint/flintlib/arb_hypgeom.pxd b/src/flint/flintlib/arb_hypgeom.pxd index bca0d1f4..ad13d90c 100644 --- a/src/flint/flintlib/arb_hypgeom.pxd +++ b/src/flint/flintlib/arb_hypgeom.pxd @@ -1,69 +1,139 @@ -from flint.flintlib.arb cimport arb_t, arb_srcptr +from flint.flintlib.arb cimport arb_t, arb_srcptr, arb_ptr from flint.flintlib.arb_poly cimport arb_poly_t -from flint.flintlib.fmpz cimport fmpz_t -from flint._flint cimport ulong +from flint.flintlib.fmpz cimport fmpz_t, fmpz_struct +from flint.flintlib.flint cimport ulong, slong +from flint.flintlib.mag cimport mag_t +from flint.flintlib.fmpq cimport fmpq_t, fmpq_struct cdef extern from "arb_hypgeom.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_poly_t g, const arb_poly_t h, long len, long prec) - void arb_hypgeom_erfc(arb_t res, const arb_t z, long prec) - void arb_hypgeom_erfc_series(arb_poly_t g, const arb_poly_t h, long len, long prec) - void arb_hypgeom_erfi(arb_t res, const arb_t z, long prec) - void arb_hypgeom_erfi_series(arb_poly_t g, const arb_poly_t h, 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_poly_t s, arb_poly_t c, const arb_poly_t h, int normalized, long len, long prec) - - void arb_hypgeom_ei(arb_t res, const arb_t z, long prec) - void arb_hypgeom_si(arb_t res, const arb_t z, long prec) - void arb_hypgeom_ci(arb_t res, const arb_t z, long prec) - void arb_hypgeom_shi(arb_t res, const arb_t z, long prec) - void arb_hypgeom_chi(arb_t res, const arb_t z, long prec) - void arb_hypgeom_li(arb_t res, const arb_t z, int offset, long prec) - void arb_hypgeom_ei_series(arb_poly_t res, const arb_poly_t h, long n, long prec) - void arb_hypgeom_si_series(arb_poly_t res, const arb_poly_t h, long n, long prec) - void arb_hypgeom_ci_series(arb_poly_t res, const arb_poly_t h, long n, long prec) - void arb_hypgeom_shi_series(arb_poly_t res, const arb_poly_t h, long n, long prec) - void arb_hypgeom_chi_series(arb_poly_t res, const arb_poly_t h, long n, long prec) - void arb_hypgeom_li_series(arb_poly_t res, const arb_poly_t h, int offset, long n, long prec) - - void arb_hypgeom_bessel_j(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_i(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_k_scaled(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_airy(arb_t ai, arb_t aip, arb_t bi, arb_t bip, const arb_t z, 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 ai, arb_t aip, arb_t bi, arb_t bip, 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_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_expint(arb_t res, const arb_t s, const arb_t z, long prec) - void arb_hypgeom_gamma_upper(arb_t res, const arb_t s, const arb_t z, int modified, long prec) - void arb_hypgeom_gamma_lower(arb_t res, const arb_t s, const arb_t z, int modified, long prec) - void arb_hypgeom_beta_lower(arb_t res, const arb_t a, const arb_t b, const arb_t z, int regularized, long prec) - - void arb_hypgeom_gamma_upper_series(arb_poly_t g, const arb_t s, const arb_poly_t h, int regularized, long n, long prec) - void arb_hypgeom_gamma_lower_series(arb_poly_t g, const arb_t s, const arb_poly_t h, int regularized, long n, long prec) - void arb_hypgeom_beta_lower_series(arb_poly_t g, const arb_t s, const arb_t t, const arb_poly_t h, int regularized, long n, 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_root(arb_t res, arb_t weight, ulong n, ulong k, long prec) +# from here on is parsed + void _arb_hypgeom_rising_coeffs_1(ulong * c, ulong k, slong n) + void _arb_hypgeom_rising_coeffs_2(ulong * c, ulong k, slong n) + void _arb_hypgeom_rising_coeffs_fmpz(fmpz_struct * c, ulong k, slong n) + void arb_hypgeom_rising_ui_forward(arb_t res, const arb_t x, ulong n, slong prec) + void arb_hypgeom_rising_ui_bs(arb_t res, const arb_t x, ulong n, slong prec) + void arb_hypgeom_rising_ui_rs(arb_t res, const arb_t x, ulong n, ulong m, slong prec) + void arb_hypgeom_rising_ui_rec(arb_t res, const arb_t x, ulong n, slong prec) + void arb_hypgeom_rising_ui(arb_t res, const arb_t x, ulong n, slong prec) + void arb_hypgeom_rising(arb_t res, const arb_t x, const arb_t n, slong prec) + void arb_hypgeom_rising_ui_jet_powsum(arb_ptr res, const arb_t x, ulong n, slong len, slong prec) + void arb_hypgeom_rising_ui_jet_bs(arb_ptr res, const arb_t x, ulong n, slong len, slong prec) + void arb_hypgeom_rising_ui_jet_rs(arb_ptr res, const arb_t x, ulong n, ulong m, slong len, slong prec) + void arb_hypgeom_rising_ui_jet(arb_ptr res, const arb_t x, ulong n, slong len, slong prec) + void _arb_hypgeom_gamma_stirling_term_bounds(slong * bound, const mag_t zinv, slong N) + void arb_hypgeom_gamma_stirling_sum_horner(arb_t res, const arb_t z, slong N, slong prec) + void arb_hypgeom_gamma_stirling_sum_improved(arb_t res, const arb_t z, slong N, slong K, slong prec) + void arb_hypgeom_gamma_stirling(arb_t res, const arb_t x, int reciprocal, slong prec) + int arb_hypgeom_gamma_taylor(arb_t res, const arb_t x, int reciprocal, slong prec) + void arb_hypgeom_gamma(arb_t res, const arb_t x, slong prec) + void arb_hypgeom_gamma_fmpq(arb_t res, const fmpq_t x, slong prec) + void arb_hypgeom_gamma_fmpz(arb_t res, const fmpz_t x, slong prec) + void arb_hypgeom_rgamma(arb_t res, const arb_t x, slong prec) + void arb_hypgeom_lgamma(arb_t res, const arb_t x, slong prec) + void arb_hypgeom_central_bin_ui(arb_t res, ulong n, slong prec) + 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) + void arb_hypgeom_0f1(arb_t res, const arb_t a, const arb_t z, int regularized, slong prec) + void arb_hypgeom_m(arb_t res, const arb_t a, const arb_t b, const arb_t z, int regularized, slong prec) + void arb_hypgeom_1f1(arb_t res, const arb_t a, const arb_t b, const arb_t z, int regularized, slong prec) + void arb_hypgeom_1f1_integration(arb_t res, const arb_t a, const arb_t b, const arb_t z, int regularized, slong prec) + void arb_hypgeom_u(arb_t res, const arb_t a, const arb_t b, const arb_t z, slong prec) + void arb_hypgeom_u_integration(arb_t res, const arb_t a, const arb_t b, const arb_t z, int regularized, slong prec) + void arb_hypgeom_2f1(arb_t res, const arb_t a, const arb_t b, const arb_t c, const arb_t z, int regularized, slong prec) + void arb_hypgeom_2f1_integration(arb_t res, const arb_t a, const arb_t b, const arb_t z, int regularized, slong prec) + void arb_hypgeom_erf(arb_t res, const arb_t z, slong prec) + void _arb_hypgeom_erf_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) + void arb_hypgeom_erf_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) + void arb_hypgeom_erfc(arb_t res, const arb_t z, slong prec) + void _arb_hypgeom_erfc_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) + void arb_hypgeom_erfc_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) + void arb_hypgeom_erfi(arb_t res, const arb_t z, slong prec) + void _arb_hypgeom_erfi_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) + void arb_hypgeom_erfi_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) + void arb_hypgeom_erfinv(arb_t res, const arb_t z, slong prec) + void arb_hypgeom_erfcinv(arb_t res, const arb_t z, slong prec) + void arb_hypgeom_fresnel(arb_t res1, arb_t res2, const arb_t z, int normalized, slong prec) + void _arb_hypgeom_fresnel_series(arb_ptr res1, arb_ptr res2, arb_srcptr z, slong zlen, int normalized, slong len, slong prec) + void arb_hypgeom_fresnel_series(arb_poly_t res1, arb_poly_t res2, const arb_poly_t z, int normalized, slong len, slong prec) + void arb_hypgeom_gamma_upper(arb_t res, const arb_t s, const arb_t z, int regularized, slong prec) + void arb_hypgeom_gamma_upper_integration(arb_t res, const arb_t s, const arb_t z, int regularized, slong prec) + void _arb_hypgeom_gamma_upper_series(arb_ptr res, const arb_t s, arb_srcptr z, slong zlen, int regularized, slong n, slong prec) + 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) + void arb_hypgeom_gamma_lower(arb_t res, const arb_t s, const arb_t z, int regularized, slong prec) + void _arb_hypgeom_gamma_lower_series(arb_ptr res, const arb_t s, arb_srcptr z, slong zlen, int regularized, slong n, slong prec) + 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) + void arb_hypgeom_beta_lower(arb_t res, const arb_t a, const arb_t b, const arb_t z, int regularized, slong prec) + 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) + 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) + void _arb_hypgeom_gamma_lower_sum_rs_1(arb_t res, ulong p, ulong q, const arb_t z, slong N, slong prec) + void _arb_hypgeom_gamma_upper_sum_rs_1(arb_t res, ulong p, ulong q, const arb_t z, slong N, slong prec) + 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) + void _arb_hypgeom_gamma_upper_fmpq_inf_bsplit(arb_t res, const fmpq_t a, const arb_t z, slong N, slong prec) + 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) + void _arb_hypgeom_gamma_lower_fmpq_0_bsplit(arb_t res, const fmpq_t a, const arb_t z, slong N, slong prec) + slong _arb_hypgeom_gamma_upper_singular_si_choose_N(mag_t err, slong n, const arb_t z, const mag_t abs_tol) + void _arb_hypgeom_gamma_upper_singular_si_bsplit(arb_t res, slong n, const arb_t z, slong N, slong prec) + 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) + void arb_hypgeom_expint(arb_t res, const arb_t s, const arb_t z, slong prec) + void arb_hypgeom_ei(arb_t res, const arb_t z, slong prec) + void _arb_hypgeom_ei_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) + void arb_hypgeom_ei_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) + void _arb_hypgeom_si_asymp(arb_t res, const arb_t z, slong N, slong prec) + void _arb_hypgeom_si_1f2(arb_t res, const arb_t z, slong N, slong wp, slong prec) + void arb_hypgeom_si(arb_t res, const arb_t z, slong prec) + void _arb_hypgeom_si_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) + void arb_hypgeom_si_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) + void _arb_hypgeom_ci_asymp(arb_t res, const arb_t z, slong N, slong prec) + void _arb_hypgeom_ci_2f3(arb_t res, const arb_t z, slong N, slong wp, slong prec) + void arb_hypgeom_ci(arb_t res, const arb_t z, slong prec) + void _arb_hypgeom_ci_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) + void arb_hypgeom_ci_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) + void arb_hypgeom_shi(arb_t res, const arb_t z, slong prec) + void _arb_hypgeom_shi_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) + void arb_hypgeom_shi_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) + void arb_hypgeom_chi(arb_t res, const arb_t z, slong prec) + void _arb_hypgeom_chi_series(arb_ptr res, arb_srcptr z, slong zlen, slong len, slong prec) + void arb_hypgeom_chi_series(arb_poly_t res, const arb_poly_t z, slong len, slong prec) + void arb_hypgeom_li(arb_t res, const arb_t z, int offset, slong prec) + void _arb_hypgeom_li_series(arb_ptr res, arb_srcptr z, slong zlen, int offset, slong len, slong prec) + void arb_hypgeom_li_series(arb_poly_t res, const arb_poly_t z, int offset, slong len, slong prec) + void arb_hypgeom_bessel_j(arb_t res, const arb_t nu, const arb_t z, slong prec) + void arb_hypgeom_bessel_y(arb_t res, const arb_t nu, const arb_t z, slong prec) + void arb_hypgeom_bessel_jy(arb_t res1, arb_t res2, const arb_t nu, const arb_t z, slong prec) + void arb_hypgeom_bessel_i(arb_t res, const arb_t nu, const arb_t z, slong prec) + void arb_hypgeom_bessel_i_scaled(arb_t res, const arb_t nu, const arb_t z, slong prec) + void arb_hypgeom_bessel_k(arb_t res, const arb_t nu, const arb_t z, slong prec) + void arb_hypgeom_bessel_k_scaled(arb_t res, const arb_t nu, const arb_t z, slong prec) + void arb_hypgeom_bessel_i_integration(arb_t res, const arb_t nu, const arb_t z, int scaled, slong prec) + void arb_hypgeom_bessel_k_integration(arb_t res, const arb_t nu, const arb_t z, int scaled, slong prec) + void arb_hypgeom_airy(arb_t ai, arb_t ai_prime, arb_t bi, arb_t bi_prime, const arb_t z, slong prec) + void arb_hypgeom_airy_jet(arb_ptr ai, arb_ptr bi, const arb_t z, slong len, slong prec) + 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) + 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) + 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) + void arb_hypgeom_coulomb(arb_t F, arb_t G, const arb_t l, const arb_t eta, const arb_t z, slong prec) + 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) + 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) + 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) + void arb_hypgeom_chebyshev_t(arb_t res, const arb_t nu, const arb_t z, slong prec) + void arb_hypgeom_chebyshev_u(arb_t res, const arb_t nu, const arb_t z, slong 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, slong prec) + void arb_hypgeom_gegenbauer_c(arb_t res, const arb_t n, const arb_t m, const arb_t z, slong prec) + void arb_hypgeom_laguerre_l(arb_t res, const arb_t n, const arb_t m, const arb_t z, slong prec) + void arb_hypgeom_hermite_h(arb_t res, const arb_t nu, const arb_t z, slong prec) + void arb_hypgeom_legendre_p(arb_t res, const arb_t n, const arb_t m, const arb_t z, int type, slong prec) + void arb_hypgeom_legendre_q(arb_t res, const arb_t n, const arb_t m, const arb_t z, int type, slong prec) + void arb_hypgeom_legendre_p_ui_deriv_bound(mag_t dp, mag_t dp2, ulong n, const arb_t x, const arb_t x2sub1) + void arb_hypgeom_legendre_p_ui_zero(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong K, slong prec) + void arb_hypgeom_legendre_p_ui_one(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong K, slong prec) + void arb_hypgeom_legendre_p_ui_asymp(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong K, slong prec) + void arb_hypgeom_legendre_p_rec(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong prec) + void arb_hypgeom_legendre_p_ui(arb_t res, arb_t res_prime, ulong n, const arb_t x, slong prec) + void arb_hypgeom_legendre_p_ui_root(arb_t res, arb_t weight, ulong n, ulong k, slong prec) + void arb_hypgeom_dilog(arb_t res, const arb_t z, slong prec) + void arb_hypgeom_sum_fmpq_arb_forward(arb_t res, const fmpq_struct * a, slong alen, const fmpq_struct * b, slong blen, const arb_t z, int reciprocal, slong N, slong prec) + void arb_hypgeom_sum_fmpq_arb_rs(arb_t res, const fmpq_struct * a, slong alen, const fmpq_struct * b, slong blen, const arb_t z, int reciprocal, slong N, slong prec) + void arb_hypgeom_sum_fmpq_arb(arb_t res, const fmpq_struct * a, slong alen, const fmpq_struct * b, slong blen, const arb_t z, int reciprocal, slong N, slong prec) + void arb_hypgeom_sum_fmpq_imag_arb_forward(arb_t res1, arb_t res2, const fmpq_struct * a, slong alen, const fmpq_struct * b, slong blen, const arb_t z, int reciprocal, slong N, slong prec) + void arb_hypgeom_sum_fmpq_imag_arb_rs(arb_t res1, arb_t res2, const fmpq_struct * a, slong alen, const fmpq_struct * b, slong blen, const arb_t z, int reciprocal, slong N, slong prec) + void arb_hypgeom_sum_fmpq_imag_arb_bs(arb_t res1, arb_t res2, const fmpq_struct * a, slong alen, const fmpq_struct * b, slong blen, const arb_t z, int reciprocal, slong N, slong prec) + void arb_hypgeom_sum_fmpq_imag_arb(arb_t res1, arb_t res2, const fmpq_struct * a, slong alen, const fmpq_struct * b, slong blen, const arb_t z, int reciprocal, slong N, slong prec) diff --git a/src/flint/flintlib/arb_mat.pxd b/src/flint/flintlib/arb_mat.pxd index 3220a516..144b09d6 100644 --- a/src/flint/flintlib/arb_mat.pxd +++ b/src/flint/flintlib/arb_mat.pxd @@ -1,10 +1,10 @@ from flint.flintlib.arb cimport arb_ptr, arb_struct from flint.flintlib.fmpz_mat cimport fmpz_mat_t from flint.flintlib.fmpq_mat cimport fmpq_mat_t -from flint.flintlib.mag cimport mag_t -from flint._flint cimport ulong +from flint.flintlib.mag cimport mag_t, mag_srcptr +from flint.flintlib.flint cimport ulong, slong, flint_rand_t from flint.flintlib.fmpz cimport fmpz_t -from flint.flintlib.arb cimport arb_t +from flint.flintlib.arb cimport arb_t, arb_srcptr from flint.flintlib.arb_poly cimport arb_poly_t cdef extern from "arb_mat.h": @@ -15,75 +15,120 @@ cdef extern from "arb_mat.h": arb_ptr * rows ctypedef arb_mat_struct arb_mat_t[1] - +#macros arb_struct * arb_mat_entry(arb_mat_t mat, long i, long j) long arb_mat_nrows(const arb_mat_t x) long arb_mat_ncols(const arb_mat_t x) - - void arb_mat_init(arb_mat_t mat, long r, long c) +# from here on is parsed + void arb_mat_init(arb_mat_t mat, slong r, slong c) void arb_mat_clear(arb_mat_t mat) - + slong arb_mat_allocated_bytes(const arb_mat_t x) + void arb_mat_window_init(arb_mat_t window, const arb_mat_t mat, slong r1, slong c1, slong r2, slong c2) + void arb_mat_window_clear(arb_mat_t window) void arb_mat_set(arb_mat_t dest, const arb_mat_t src) void arb_mat_set_fmpz_mat(arb_mat_t dest, const fmpz_mat_t src) - void arb_mat_set_fmpq_mat(arb_mat_t dest, const fmpq_mat_t src, long prec) - void arb_mat_printd(const arb_mat_t mat, long digits) + void arb_mat_set_round_fmpz_mat(arb_mat_t dest, const fmpz_mat_t src, slong prec) + void arb_mat_set_fmpq_mat(arb_mat_t dest, const fmpq_mat_t src, slong prec) + void arb_mat_randtest(arb_mat_t mat, flint_rand_t state, slong prec, slong mag_bits) + void arb_mat_printd(const arb_mat_t mat, slong digits) int arb_mat_equal(const arb_mat_t mat1, const arb_mat_t mat2) int arb_mat_overlaps(const arb_mat_t mat1, const arb_mat_t mat2) int arb_mat_contains(const arb_mat_t mat1, const arb_mat_t mat2) - int arb_mat_contains_fmpq_mat(const arb_mat_t mat1, const fmpq_mat_t mat2) int arb_mat_contains_fmpz_mat(const arb_mat_t mat1, const fmpz_mat_t mat2) - + int arb_mat_contains_fmpq_mat(const arb_mat_t mat1, const fmpq_mat_t mat2) + int arb_mat_eq(const arb_mat_t mat1, const arb_mat_t mat2) + int arb_mat_ne(const arb_mat_t mat1, const arb_mat_t mat2) + int arb_mat_is_empty(const arb_mat_t mat) + int arb_mat_is_square(const arb_mat_t mat) + int arb_mat_is_exact(const arb_mat_t mat) + int arb_mat_is_zero(const arb_mat_t mat) + int arb_mat_is_finite(const arb_mat_t mat) + int arb_mat_is_triu(const arb_mat_t mat) + int arb_mat_is_tril(const arb_mat_t mat) + int arb_mat_is_diag(const arb_mat_t mat) void arb_mat_zero(arb_mat_t mat) void arb_mat_one(arb_mat_t mat) - + void arb_mat_ones(arb_mat_t mat) + void arb_mat_indeterminate(arb_mat_t mat) + void arb_mat_hilbert(arb_mat_t mat, slong prec) + void arb_mat_pascal(arb_mat_t mat, int triangular, slong prec) + void arb_mat_stirling(arb_mat_t mat, int kind, slong prec) + void arb_mat_dct(arb_mat_t mat, int type, slong prec) + void arb_mat_transpose(arb_mat_t dest, const arb_mat_t src) void arb_mat_bound_inf_norm(mag_t b, const arb_mat_t A) - + void arb_mat_frobenius_norm(arb_t res, const arb_mat_t A, slong prec) + void arb_mat_bound_frobenius_norm(mag_t res, const arb_mat_t A) void arb_mat_neg(arb_mat_t dest, const arb_mat_t src) - void arb_mat_add(arb_mat_t res, const arb_mat_t mat1, const arb_mat_t mat2, long prec) - void arb_mat_sub(arb_mat_t res, const arb_mat_t mat1, const arb_mat_t mat2, long prec) - void arb_mat_mul(arb_mat_t res, const arb_mat_t mat1, const arb_mat_t mat2, long prec) - void arb_mat_pow_ui(arb_mat_t B, const arb_mat_t A, ulong exp, long prec) - - void arb_mat_scalar_mul_2exp_si(arb_mat_t B, const arb_mat_t A, long c) - void arb_mat_scalar_addmul_si(arb_mat_t B, const arb_mat_t A, long c, long prec) - void arb_mat_scalar_mul_si(arb_mat_t B, const arb_mat_t A, long c, long prec) - void arb_mat_scalar_div_si(arb_mat_t B, const arb_mat_t A, long c, long prec) - void arb_mat_scalar_addmul_fmpz(arb_mat_t B, const arb_mat_t A, const fmpz_t c, long prec) - void arb_mat_scalar_mul_fmpz(arb_mat_t B, const arb_mat_t A, const fmpz_t c, long prec) - void arb_mat_scalar_div_fmpz(arb_mat_t B, const arb_mat_t A, const fmpz_t c, long prec) - void arb_mat_scalar_addmul_arb(arb_mat_t B, const arb_mat_t A, const arb_t c, long prec) - void arb_mat_scalar_mul_arb(arb_mat_t B, const arb_mat_t A, const arb_t c, long prec) - void arb_mat_scalar_div_arb(arb_mat_t B, const arb_mat_t A, const arb_t c, long prec) - - int arb_mat_lu(long * P, arb_mat_t LU, const arb_mat_t A, long prec) - void arb_mat_solve_lu_precomp(arb_mat_t X, const long * perm, const arb_mat_t A, const arb_mat_t B, long prec) - int arb_mat_solve(arb_mat_t X, const arb_mat_t A, const arb_mat_t B, long prec) - int arb_mat_solve_lu(arb_mat_t X, const arb_mat_t A, const arb_mat_t B, long prec) - int arb_mat_solve_precond(arb_mat_t X, const arb_mat_t A, const arb_mat_t B, long prec) - int arb_mat_inv(arb_mat_t X, const arb_mat_t A, long prec) - void arb_mat_det(arb_t det, const arb_mat_t A, long prec) - - void arb_mat_exp(arb_mat_t B, const arb_mat_t A, long prec) - - void _arb_mat_charpoly(arb_ptr cp, const arb_mat_t mat, long prec) - void arb_mat_charpoly(arb_poly_t cp, const arb_mat_t mat, long prec) - - void arb_mat_transpose(arb_mat_t B, const arb_mat_t A) - - void arb_mat_trace(arb_t trace, const arb_mat_t mat, long prec) - void arb_mat_ones(arb_mat_t mat) - void arb_mat_hilbert(arb_mat_t mat, long prec) - void arb_mat_pascal(arb_mat_t mat, int triangular, long prec) - void arb_mat_stirling(arb_mat_t mat, int kind, long prec) - void arb_mat_dct(arb_mat_t mat, int type, long prec) - + void arb_mat_add(arb_mat_t res, const arb_mat_t mat1, const arb_mat_t mat2, slong prec) + void arb_mat_sub(arb_mat_t res, const arb_mat_t mat1, const arb_mat_t mat2, slong prec) + void arb_mat_mul_classical(arb_mat_t C, const arb_mat_t A, const arb_mat_t B, slong prec) + void arb_mat_mul_threaded(arb_mat_t C, const arb_mat_t A, const arb_mat_t B, slong prec) + void arb_mat_mul_block(arb_mat_t C, const arb_mat_t A, const arb_mat_t B, slong prec) + void arb_mat_mul(arb_mat_t res, const arb_mat_t mat1, const arb_mat_t mat2, slong prec) + void arb_mat_mul_entrywise(arb_mat_t C, const arb_mat_t A, const arb_mat_t B, slong prec) + void arb_mat_sqr_classical(arb_mat_t B, const arb_mat_t A, slong prec) + void arb_mat_sqr(arb_mat_t res, const arb_mat_t mat, slong prec) + void arb_mat_pow_ui(arb_mat_t res, const arb_mat_t mat, ulong exp, slong prec) + void _arb_mat_addmul_rad_mag_fast(arb_mat_t C, mag_srcptr A, mag_srcptr B, slong ar, slong ac, slong bc) + void arb_mat_approx_mul(arb_mat_t res, const arb_mat_t mat1, const arb_mat_t mat2, slong prec) + void arb_mat_scalar_mul_2exp_si(arb_mat_t B, const arb_mat_t A, slong c) + void arb_mat_scalar_addmul_si(arb_mat_t B, const arb_mat_t A, slong c, slong prec) + void arb_mat_scalar_addmul_fmpz(arb_mat_t B, const arb_mat_t A, const fmpz_t c, slong prec) + void arb_mat_scalar_addmul_arb(arb_mat_t B, const arb_mat_t A, const arb_t c, slong prec) + void arb_mat_scalar_mul_si(arb_mat_t B, const arb_mat_t A, slong c, slong prec) + void arb_mat_scalar_mul_fmpz(arb_mat_t B, const arb_mat_t A, const fmpz_t c, slong prec) + void arb_mat_scalar_mul_arb(arb_mat_t B, const arb_mat_t A, const arb_t c, slong prec) + void arb_mat_scalar_div_si(arb_mat_t B, const arb_mat_t A, slong c, slong prec) + void arb_mat_scalar_div_fmpz(arb_mat_t B, const arb_mat_t A, const fmpz_t c, slong prec) + void arb_mat_scalar_div_arb(arb_mat_t B, const arb_mat_t A, const arb_t c, slong prec) + int arb_mat_lu_classical(slong * perm, arb_mat_t LU, const arb_mat_t A, slong prec) + int arb_mat_lu_recursive(slong * perm, arb_mat_t LU, const arb_mat_t A, slong prec) + int arb_mat_lu(slong * perm, arb_mat_t LU, const arb_mat_t A, slong prec) + void arb_mat_solve_tril_classical(arb_mat_t X, const arb_mat_t L, const arb_mat_t B, int unit, slong prec) + void arb_mat_solve_tril_recursive(arb_mat_t X, const arb_mat_t L, const arb_mat_t B, int unit, slong prec) + void arb_mat_solve_tril(arb_mat_t X, const arb_mat_t L, const arb_mat_t B, int unit, slong prec) + void arb_mat_solve_triu_classical(arb_mat_t X, const arb_mat_t U, const arb_mat_t B, int unit, slong prec) + void arb_mat_solve_triu_recursive(arb_mat_t X, const arb_mat_t U, const arb_mat_t B, int unit, slong prec) + void arb_mat_solve_triu(arb_mat_t X, const arb_mat_t U, const arb_mat_t B, int unit, slong prec) + 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) + int arb_mat_solve(arb_mat_t X, const arb_mat_t A, const arb_mat_t B, slong prec) + int arb_mat_solve_lu(arb_mat_t X, const arb_mat_t A, const arb_mat_t B, slong prec) + int arb_mat_solve_precond(arb_mat_t X, const arb_mat_t A, const arb_mat_t B, slong prec) + 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) + int arb_mat_inv(arb_mat_t X, const arb_mat_t A, slong prec) + void arb_mat_det_lu(arb_t det, const arb_mat_t A, slong prec) + void arb_mat_det_precond(arb_t det, const arb_mat_t A, slong prec) + void arb_mat_det(arb_t det, const arb_mat_t A, slong prec) + void arb_mat_approx_solve_triu(arb_mat_t X, const arb_mat_t U, const arb_mat_t B, int unit, slong prec) + void arb_mat_approx_solve_tril(arb_mat_t X, const arb_mat_t L, const arb_mat_t B, int unit, slong prec) + int arb_mat_approx_lu(slong * P, arb_mat_t LU, const arb_mat_t A, slong prec) + 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) + int arb_mat_approx_solve(arb_mat_t X, const arb_mat_t A, const arb_mat_t B, slong prec) + int arb_mat_approx_inv(arb_mat_t X, const arb_mat_t A, slong prec) + int _arb_mat_cholesky_banachiewicz(arb_mat_t A, slong prec) + int arb_mat_cho(arb_mat_t L, const arb_mat_t A, slong prec) + void arb_mat_solve_cho_precomp(arb_mat_t X, const arb_mat_t L, const arb_mat_t B, slong prec) + int arb_mat_spd_solve(arb_mat_t X, const arb_mat_t A, const arb_mat_t B, slong prec) + void arb_mat_inv_cho_precomp(arb_mat_t X, const arb_mat_t L, slong prec) + int arb_mat_spd_inv(arb_mat_t X, const arb_mat_t A, slong prec) + int _arb_mat_ldl_inplace(arb_mat_t A, slong prec) + int _arb_mat_ldl_golub_and_van_loan(arb_mat_t A, slong prec) + int arb_mat_ldl(arb_mat_t res, const arb_mat_t A, slong prec) + void arb_mat_solve_ldl_precomp(arb_mat_t X, const arb_mat_t L, const arb_mat_t B, slong prec) + void arb_mat_inv_ldl_precomp(arb_mat_t X, const arb_mat_t L, slong prec) + void _arb_mat_charpoly(arb_ptr poly, const arb_mat_t mat, slong prec) + void arb_mat_charpoly(arb_poly_t poly, const arb_mat_t mat, slong prec) + void _arb_mat_companion(arb_mat_t mat, arb_srcptr poly, slong prec) + void arb_mat_companion(arb_mat_t mat, const arb_poly_t poly, slong prec) + void arb_mat_exp_taylor_sum(arb_mat_t S, const arb_mat_t A, slong N, slong prec) + void arb_mat_exp(arb_mat_t B, const arb_mat_t A, slong prec) + void arb_mat_trace(arb_t trace, const arb_mat_t mat, slong prec) + void _arb_mat_diag_prod(arb_t res, const arb_mat_t mat, slong a, slong b, slong prec) + void arb_mat_diag_prod(arb_t res, const arb_mat_t mat, slong prec) + void arb_mat_entrywise_is_zero(fmpz_mat_t dest, const arb_mat_t src) + void arb_mat_entrywise_not_is_zero(fmpz_mat_t dest, const arb_mat_t src) + slong arb_mat_count_is_zero(const arb_mat_t mat) + slong arb_mat_count_not_is_zero(const arb_mat_t mat) void arb_mat_get_mid(arb_mat_t B, const arb_mat_t A) - - int arb_mat_eq(const arb_mat_t mat1, const arb_mat_t mat2) - int arb_mat_ne(const arb_mat_t mat1, const arb_mat_t mat2) - int arb_mat_equal(const arb_mat_t mat1, const arb_mat_t mat2) - - void arb_mat_frobenius_norm(arb_t res, const arb_mat_t A, long prec) - - int arb_mat_approx_solve(arb_mat_t X, const arb_mat_t A, const arb_mat_t B, long prec) + void arb_mat_add_error_mag(arb_mat_t mat, const mag_t err) diff --git a/src/flint/flintlib/arb_poly.pxd b/src/flint/flintlib/arb_poly.pxd index 9476d313..6891321b 100644 --- a/src/flint/flintlib/arb_poly.pxd +++ b/src/flint/flintlib/arb_poly.pxd @@ -1,8 +1,10 @@ -from flint._flint cimport flint_rand_t, ulong +from flint.flintlib.flint cimport flint_rand_t, ulong, slong from flint.flintlib.arb cimport arb_ptr, arb_t, arb_srcptr from flint.flintlib.fmpz_poly cimport fmpz_poly_t from flint.flintlib.fmpq_poly cimport fmpq_poly_t -from flint.flintlib.acb cimport acb_t +from flint.flintlib.acb cimport acb_t, acb_srcptr +from flint.flintlib.mag cimport mag_t +from flint.flintlib.arf cimport arf_t cdef extern from "arb_poly.h": ctypedef struct arb_poly_struct: @@ -11,203 +13,250 @@ cdef extern from "arb_poly.h": long alloc ctypedef arb_poly_struct arb_poly_t[1] + #macros + arb_ptr arb_poly_get_coeff_ptr(arb_poly_t poly, long n) + +# from here on is parsed void arb_poly_init(arb_poly_t poly) - void arb_poly_init2(arb_poly_t poly, long len) void arb_poly_clear(arb_poly_t poly) - void arb_poly_fit_length(arb_poly_t poly, long len) - void _arb_poly_set_length(arb_poly_t poly, long len) + void arb_poly_fit_length(arb_poly_t poly, slong len) + void _arb_poly_set_length(arb_poly_t poly, slong len) void _arb_poly_normalise(arb_poly_t poly) - void arb_poly_swap(arb_poly_t poly1, arb_poly_t poly2) - void arb_poly_set(arb_poly_t poly, const arb_poly_t src) - void arb_poly_set_round(arb_poly_t dest, const arb_poly_t src, long prec) - long arb_poly_length(const arb_poly_t poly) - long arb_poly_degree(const arb_poly_t poly) + slong arb_poly_allocated_bytes(const arb_poly_t x) + slong arb_poly_length(const arb_poly_t poly) + slong arb_poly_degree(const arb_poly_t poly) + int arb_poly_is_zero(const arb_poly_t poly) + int arb_poly_is_one(const arb_poly_t poly) + int arb_poly_is_x(const arb_poly_t poly) void arb_poly_zero(arb_poly_t poly) void arb_poly_one(arb_poly_t poly) - void arb_poly_set_coeff_si(arb_poly_t poly, long n, long x) - void arb_poly_set_coeff_arb(arb_poly_t poly, long n, const arb_t x) - void arb_poly_get_coeff_arb(arb_t x, const arb_poly_t poly, long n) - arb_ptr arb_poly_get_coeff_ptr(arb_poly_t poly, long n) - void _arb_poly_reverse(arb_ptr res, arb_srcptr poly, long len, long n) - void _arb_poly_shift_right(arb_ptr res, arb_srcptr poly, long len, long n) - void arb_poly_shift_right(arb_poly_t res, const arb_poly_t poly, long n) - void _arb_poly_shift_left(arb_ptr res, arb_srcptr poly, long len, long n) - void arb_poly_shift_left(arb_poly_t res, const arb_poly_t poly, long n) - void arb_poly_truncate(arb_poly_t poly, long newlen) - void arb_poly_set_fmpz_poly(arb_poly_t poly, const fmpz_poly_t src, long prec) - void arb_poly_set_fmpq_poly(arb_poly_t poly, const fmpq_poly_t src, long prec) void arb_poly_set_arb(arb_poly_t poly, const arb_t c) - void arb_poly_set_si(arb_poly_t poly, long c) + void arb_poly_set(arb_poly_t dest, const arb_poly_t src) + void arb_poly_set_round(arb_poly_t dest, const arb_poly_t src, slong prec) + void arb_poly_set_trunc(arb_poly_t dest, const arb_poly_t src, slong n) + void arb_poly_set_trunc_round(arb_poly_t dest, const arb_poly_t src, slong n, slong prec) + void arb_poly_set_coeff_si(arb_poly_t poly, slong n, slong c) + void arb_poly_set_coeff_arb(arb_poly_t poly, slong n, const arb_t c) + void arb_poly_get_coeff_arb(arb_t v, const arb_poly_t poly, slong n) + void _arb_poly_shift_right(arb_ptr res, arb_srcptr poly, slong len, slong n) + void arb_poly_shift_right(arb_poly_t res, const arb_poly_t poly, slong n) + void _arb_poly_shift_left(arb_ptr res, arb_srcptr poly, slong len, slong n) + void arb_poly_shift_left(arb_poly_t res, const arb_poly_t poly, slong n) + void arb_poly_truncate(arb_poly_t poly, slong n) + slong arb_poly_valuation(const arb_poly_t poly) + void arb_poly_set_fmpz_poly(arb_poly_t poly, const fmpz_poly_t src, slong prec) + void arb_poly_set_fmpq_poly(arb_poly_t poly, const fmpq_poly_t src, slong prec) + void arb_poly_set_si(arb_poly_t poly, slong src) + void arb_poly_printd(const arb_poly_t poly, slong digits) + void arb_poly_randtest(arb_poly_t poly, flint_rand_t state, slong len, slong prec, slong mag_bits) int arb_poly_contains(const arb_poly_t poly1, const arb_poly_t poly2) int arb_poly_contains_fmpz_poly(const arb_poly_t poly1, const fmpz_poly_t poly2) int arb_poly_contains_fmpq_poly(const arb_poly_t poly1, const fmpq_poly_t poly2) int arb_poly_equal(const arb_poly_t A, const arb_poly_t B) - int _arb_poly_overlaps(arb_srcptr poly1, long len1, arb_srcptr poly2, long len2) + int _arb_poly_overlaps(arb_srcptr poly1, slong len1, arb_srcptr poly2, slong len2) int arb_poly_overlaps(const arb_poly_t poly1, const arb_poly_t poly2) - void arb_poly_printd(const arb_poly_t poly, long digits) - void arb_poly_randtest(arb_poly_t poly, flint_rand_t state, long len, long prec, long mag_bits) - void _arb_poly_add(arb_ptr res, arb_srcptr poly1, long len1, arb_srcptr poly2, long len2, long prec) - void arb_poly_add(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, long prec) - void _arb_poly_sub(arb_ptr res, arb_srcptr poly1, long len1, arb_srcptr poly2, long len2, long prec) - void arb_poly_sub(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, long prec) - void arb_poly_neg(arb_poly_t res, const arb_poly_t poly) - void arb_poly_scalar_mul_2exp_si(arb_poly_t res, const arb_poly_t poly, long c) - void _arb_poly_mullow(arb_ptr C, arb_srcptr A, long lenA, arb_srcptr B, long lenB, long n, long prec) - void arb_poly_mullow(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, long len, long prec) - void _arb_poly_mul(arb_ptr C, arb_srcptr A, long lenA, arb_srcptr B, long lenB, long prec) - void arb_poly_mul(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, long prec) - void _arb_poly_inv_series(arb_ptr Qinv, arb_srcptr Q, long Qlen, long len, long prec) - void arb_poly_inv_series(arb_poly_t Qinv, const arb_poly_t Q, long n, long prec) - void _arb_poly_div_series(arb_ptr Q, arb_srcptr A, long Alen, arb_srcptr B, long Blen, long n, long prec) - void arb_poly_div_series(arb_poly_t Q, const arb_poly_t A, const arb_poly_t B, long n, long prec) - void _arb_poly_div(arb_ptr Q, arb_srcptr A, long lenA, arb_srcptr B, long lenB, long prec) - void _arb_poly_divrem(arb_ptr Q, arb_ptr R, arb_srcptr A, long lenA, arb_srcptr B, long lenB, long prec) - void _arb_poly_rem(arb_ptr R, arb_srcptr A, long lenA, arb_srcptr B, long lenB, long prec) - int arb_poly_divrem(arb_poly_t Q, arb_poly_t R, const arb_poly_t A, const arb_poly_t B, long prec) - void _arb_poly_div_root(arb_ptr Q, arb_t R, arb_srcptr A, long len, const arb_t c, long prec) - void _arb_poly_product_roots(arb_ptr poly, arb_srcptr xs, long n, long prec) - void arb_poly_product_roots(arb_poly_t poly, arb_srcptr xs, long n, long prec) - arb_ptr * _arb_poly_tree_alloc(long len) - void _arb_poly_tree_free(arb_ptr * tree, long len) - void _arb_poly_tree_build(arb_ptr * tree, arb_srcptr roots, long len, long prec) - void _arb_poly_compose(arb_ptr res, arb_srcptr poly1, long len1, arb_srcptr poly2, long len2, long prec) - void arb_poly_compose(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, long prec) - void _arb_poly_compose_horner(arb_ptr res, arb_srcptr poly1, long len1, arb_srcptr poly2, long len2, long prec) - void arb_poly_compose_horner(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, long prec) - void _arb_poly_compose_divconquer(arb_ptr res, arb_srcptr poly1, long len1, arb_srcptr poly2, long len2, long prec) - void arb_poly_compose_divconquer(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, long prec) - void _arb_poly_compose_series_horner(arb_ptr res, arb_srcptr poly1, long len1, arb_srcptr poly2, long len2, long n, long prec) - void arb_poly_compose_series_horner(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, long n, long prec) - void _arb_poly_compose_series(arb_ptr res, arb_srcptr poly1, long len1, arb_srcptr poly2, long len2, long n, long prec) - void arb_poly_compose_series(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, long n, long prec) - void _arb_poly_revert_series_lagrange(arb_ptr Qinv, arb_srcptr Q, long Qlen, long n, long prec) - void arb_poly_revert_series_lagrange(arb_poly_t Qinv, const arb_poly_t Q, long n, long prec) - void _arb_poly_revert_series_newton(arb_ptr Qinv, arb_srcptr Q, long Qlen, long n, long prec) - void arb_poly_revert_series_newton(arb_poly_t Qinv, const arb_poly_t Q, long n, long prec) - void _arb_poly_revert_series_lagrange_fast(arb_ptr Qinv, arb_srcptr Q, long Qlen, long n, long prec) - void arb_poly_revert_series_lagrange_fast(arb_poly_t Qinv, const arb_poly_t Q, long n, long prec) - void _arb_poly_revert_series(arb_ptr Qinv, arb_srcptr Q, long Qlen, long n, long prec) - void arb_poly_revert_series(arb_poly_t Qinv, const arb_poly_t Q, long n, long prec) - - void _arb_poly_evaluate_horner(arb_t res, arb_srcptr f, long len, const arb_t a, long prec) - void arb_poly_evaluate_horner(arb_t res, const arb_poly_t f, const arb_t a, long prec) - void _arb_poly_evaluate_rectangular(arb_t y, arb_srcptr poly, long len, const arb_t x, long prec) - void arb_poly_evaluate_rectangular(arb_t res, const arb_poly_t f, const arb_t a, long prec) - void _arb_poly_evaluate(arb_t res, arb_srcptr f, long len, const arb_t a, long prec) - void arb_poly_evaluate(arb_t res, const arb_poly_t f, const arb_t a, long prec) - void _arb_poly_evaluate2_horner(arb_t y, arb_t z, arb_srcptr f, long len, const arb_t x, long prec) - void arb_poly_evaluate2_horner(arb_t y, arb_t z, const arb_poly_t f, const arb_t x, long prec) - void _arb_poly_evaluate2_rectangular(arb_t y, arb_t z, arb_srcptr f, long len, const arb_t x, long prec) - void arb_poly_evaluate2_rectangular(arb_t y, arb_t z, const arb_poly_t f, const arb_t x, long prec) - void _arb_poly_evaluate2(arb_t y, arb_t z, arb_srcptr f, long len, const arb_t x, long prec) - void arb_poly_evaluate2(arb_t y, arb_t z, const arb_poly_t f, const arb_t x, long prec) - - void _arb_poly_evaluate_vec_iter(arb_ptr ys, arb_srcptr poly, long plen, arb_srcptr xs, long n, long prec) - void arb_poly_evaluate_vec_iter(arb_ptr ys, const arb_poly_t poly, arb_srcptr xs, long n, long prec) - void _arb_poly_evaluate_vec_fast_precomp(arb_ptr vs, arb_srcptr poly, long plen, arb_ptr * tree, long len, long prec) - void _arb_poly_evaluate_vec_fast(arb_ptr ys, arb_srcptr poly, long plen, arb_srcptr xs, long n, long prec) - void arb_poly_evaluate_vec_fast(arb_ptr ys, const arb_poly_t poly, arb_srcptr xs, long n, long prec) - void _arb_poly_interpolate_newton(arb_ptr poly, arb_srcptr xs, arb_srcptr ys, long n, long prec) - void arb_poly_interpolate_newton(arb_poly_t poly, arb_srcptr xs, arb_srcptr ys, long n, long prec) - void _arb_poly_interpolate_barycentric(arb_ptr poly, arb_srcptr xs, arb_srcptr ys, long n, long prec) - void arb_poly_interpolate_barycentric(arb_poly_t poly, arb_srcptr xs, arb_srcptr ys, long n, long prec) - void _arb_poly_interpolation_weights(arb_ptr w, arb_ptr * tree, long len, long prec) - void _arb_poly_interpolate_fast_precomp(arb_ptr poly, arb_srcptr ys, arb_ptr * tree, arb_srcptr weights, long len, long prec) - void _arb_poly_interpolate_fast(arb_ptr poly, arb_srcptr xs, arb_srcptr ys, long len, long prec) - void arb_poly_interpolate_fast(arb_poly_t poly, arb_srcptr xs, arb_srcptr ys, long n, long prec) - - void _arb_poly_derivative(arb_ptr res, arb_srcptr poly, long len, long prec) - void arb_poly_derivative(arb_poly_t res, const arb_poly_t poly, long prec) - void _arb_poly_integral(arb_ptr res, arb_srcptr poly, long len, long prec) - void arb_poly_integral(arb_poly_t res, const arb_poly_t poly, long prec) - - void arb_poly_borel_transform(arb_poly_t res, const arb_poly_t poly, long prec) - void _arb_poly_borel_transform(arb_ptr res, arb_srcptr poly, long len, long prec) - void arb_poly_inv_borel_transform(arb_poly_t res, const arb_poly_t poly, long prec) - void _arb_poly_inv_borel_transform(arb_ptr res, arb_srcptr poly, long len, long prec) - void _arb_poly_binomial_transform_basecase(arb_ptr b, arb_srcptr a, long alen, long len, long prec) - void arb_poly_binomial_transform_basecase(arb_poly_t b, const arb_poly_t a, long len, long prec) - void _arb_poly_binomial_transform_convolution(arb_ptr b, arb_srcptr a, long alen, long len, long prec) - void arb_poly_binomial_transform_convolution(arb_poly_t b, const arb_poly_t a, long len, long prec) - void _arb_poly_binomial_transform(arb_ptr b, arb_srcptr a, long alen, long len, long prec) - void arb_poly_binomial_transform(arb_poly_t b, const arb_poly_t a, long len, long prec) - - void _arb_poly_pow_ui_trunc_binexp(arb_ptr res, arb_srcptr f, long flen, ulong exp, long len, long prec) - void arb_poly_pow_ui_trunc_binexp(arb_poly_t res, const arb_poly_t poly, ulong exp, long len, long prec) - void _arb_poly_pow_ui(arb_ptr res, arb_srcptr f, long flen, ulong exp, long prec) - void arb_poly_pow_ui(arb_poly_t res, const arb_poly_t poly, ulong exp, long prec) - void _arb_poly_pow_series(arb_ptr h, arb_srcptr f, long flen, arb_srcptr g, long glen, long len, long prec) - void arb_poly_pow_series(arb_poly_t h, const arb_poly_t f, const arb_poly_t g, long len, long prec) - void _arb_poly_pow_arb_series(arb_ptr h, arb_srcptr f, long flen, const arb_t g, long len, long prec) - void arb_poly_pow_arb_series(arb_poly_t h, const arb_poly_t f, const arb_t g, long len, long prec) - void _arb_poly_rsqrt_series(arb_ptr g, arb_srcptr h, long hlen, long len, long prec) - void arb_poly_rsqrt_series(arb_poly_t g, const arb_poly_t h, long n, long prec) - void _arb_poly_sqrt_series(arb_ptr g, arb_srcptr h, long hlen, long len, long prec) - void arb_poly_sqrt_series(arb_poly_t g, const arb_poly_t h, long n, long prec) - void _arb_poly_log_series(arb_ptr res, arb_srcptr f, long flen, long n, long prec) - void arb_poly_log_series(arb_poly_t res, const arb_poly_t f, long n, long prec) - void _arb_poly_atan_series(arb_ptr res, arb_srcptr f, long flen, long n, long prec) - void arb_poly_atan_series(arb_poly_t res, const arb_poly_t f, long n, long prec) - void _arb_poly_asin_series(arb_ptr res, arb_srcptr f, long flen, long n, long prec) - void arb_poly_asin_series(arb_poly_t res, const arb_poly_t f, long n, long prec) - void _arb_poly_acos_series(arb_ptr res, arb_srcptr f, long flen, long n, long prec) - void arb_poly_acos_series(arb_poly_t res, const arb_poly_t f, long n, long prec) - void _arb_poly_exp_series_basecase(arb_ptr f, arb_srcptr h, long hlen, long n, long prec) - void arb_poly_exp_series_basecase(arb_poly_t f, const arb_poly_t h, long n, long prec) - void _arb_poly_exp_series(arb_ptr f, arb_srcptr h, long hlen, long n, long prec) - void arb_poly_exp_series(arb_poly_t f, const arb_poly_t h, long n, long prec) - void _arb_poly_sin_cos_series_basecase(arb_ptr s, arb_ptr c, arb_srcptr h, long hlen, long n, long prec) - void arb_poly_sin_cos_series_basecase(arb_poly_t s, arb_poly_t c, const arb_poly_t h, long n, long prec) - void _arb_poly_sin_cos_series_tangent(arb_ptr s, arb_ptr c, const arb_srcptr h, long hlen, long len, long prec) - void arb_poly_sin_cos_series_tangent(arb_poly_t s, arb_poly_t c, const arb_poly_t h, long n, long prec) - void _arb_poly_sin_cos_series(arb_ptr s, arb_ptr c, const arb_srcptr h, long hlen, long len, long prec) - void arb_poly_sin_cos_series(arb_poly_t s, arb_poly_t c, const arb_poly_t h, long n, long prec) - void _arb_poly_sin_series(arb_ptr g, arb_srcptr h, long hlen, long n, long prec) - void arb_poly_sin_series(arb_poly_t g, const arb_poly_t h, long n, long prec) - void _arb_poly_cos_series(arb_ptr g, arb_srcptr h, long hlen, long n, long prec) - void arb_poly_cos_series(arb_poly_t g, const arb_poly_t h, long n, long prec) - void _arb_poly_tan_series(arb_ptr g, arb_srcptr h, long hlen, long len, long prec) - void arb_poly_tan_series(arb_poly_t g, const arb_poly_t h, long n, long prec) - void _arb_poly_compose_series_brent_kung(arb_ptr res, arb_srcptr poly1, long len1, arb_srcptr poly2, long len2, long n, long prec) - void arb_poly_compose_series_brent_kung(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, long n, long prec) - void _arb_poly_evaluate_acb_horner(acb_t res, arb_srcptr f, long len, const acb_t x, long prec) - void arb_poly_evaluate_acb_horner(acb_t res, const arb_poly_t f, const acb_t a, long prec) - void _arb_poly_evaluate_acb_rectangular(acb_t y, arb_srcptr poly, long len, const acb_t x, long prec) - void arb_poly_evaluate_acb_rectangular(acb_t res, const arb_poly_t f, const acb_t a, long prec) - void _arb_poly_evaluate_acb(acb_t res, arb_srcptr f, long len, const acb_t x, long prec) - void arb_poly_evaluate_acb(acb_t res, const arb_poly_t f, const acb_t a, long prec) - void _arb_poly_evaluate2_acb_horner(acb_t y, acb_t z, arb_srcptr f, long len, const acb_t x, long prec) - void arb_poly_evaluate2_acb_horner(acb_t y, acb_t z, const arb_poly_t f, const acb_t x, long prec) - void _arb_poly_evaluate2_acb_rectangular(acb_t y, acb_t z, arb_srcptr f, long len, const acb_t x, long prec) - void arb_poly_evaluate2_acb_rectangular(acb_t y, acb_t z, const arb_poly_t f, const acb_t x, long prec) - void _arb_poly_evaluate2_acb(acb_t y, acb_t z, arb_srcptr f, long len, const acb_t x, long prec) - void arb_poly_evaluate2_acb(acb_t y, acb_t z, const arb_poly_t f, const acb_t x, long prec) - void _arb_poly_gamma_series(arb_ptr res, arb_srcptr h, long hlen, long len, long prec) - void arb_poly_gamma_series(arb_poly_t res, const arb_poly_t f, long n, long prec) - void _arb_poly_rgamma_series(arb_ptr res, arb_srcptr h, long hlen, long len, long prec) - void arb_poly_rgamma_series(arb_poly_t res, const arb_poly_t f, long n, long prec) - void _arb_poly_lgamma_series(arb_ptr res, arb_srcptr h, long hlen, long len, long prec) - void arb_poly_lgamma_series(arb_poly_t res, const arb_poly_t f, long n, long prec) - void _arb_poly_rising_ui_series(arb_ptr res, arb_srcptr f, long flen, ulong r, long trunc, long prec) - void arb_poly_rising_ui_series(arb_poly_t res, const arb_poly_t f, ulong r, long trunc, long prec) - void _arb_poly_zeta_series(arb_ptr res, arb_srcptr h, long hlen, const arb_t a, int deflate, long len, long prec) - void arb_poly_zeta_series(arb_poly_t res, const arb_poly_t f, const arb_t a, int deflate, long n, long prec) - void _arb_poly_riemann_siegel_theta_series(arb_ptr res, arb_srcptr h, long hlen, long len, long prec) - void arb_poly_riemann_siegel_theta_series(arb_poly_t res, const arb_poly_t h, long n, long prec) - void _arb_poly_riemann_siegel_z_series(arb_ptr res, arb_srcptr h, long hlen, long len, long prec) - void arb_poly_riemann_siegel_z_series(arb_poly_t res, const arb_poly_t h, long n, long prec) - - void arb_poly_swinnerton_dyer_ui(arb_poly_t poly, ulong n, long prec) - int arb_poly_get_unique_fmpz_poly(fmpz_poly_t res, const arb_poly_t src) - - void _arb_poly_sin_cos_pi_series(arb_ptr s, arb_ptr c, const arb_srcptr h, long hlen, long len, long prec) - void arb_poly_sin_cos_pi_series(arb_poly_t s, arb_poly_t c, const arb_poly_t h, long n, long prec) - void _arb_poly_sin_pi_series(arb_ptr g, arb_srcptr h, long hlen, long n, long prec) - void arb_poly_sin_pi_series(arb_poly_t g, const arb_poly_t h, long n, long prec) - void _arb_poly_cos_pi_series(arb_ptr g, arb_srcptr h, long hlen, long n, long prec) - void arb_poly_cos_pi_series(arb_poly_t g, const arb_poly_t h, long n, long prec) - void _arb_poly_cot_pi_series(arb_ptr g, arb_srcptr h, long hlen, long n, long prec) - void arb_poly_cot_pi_series(arb_poly_t g, const arb_poly_t h, long n, long prec) - - void arb_poly_lambertw_series(arb_poly_t res, const arb_poly_t z, int flags, long len, long prec) + int arb_poly_get_unique_fmpz_poly(fmpz_poly_t z, const arb_poly_t x) + void _arb_poly_majorant(arb_ptr res, arb_srcptr poly, slong len, slong prec) + void arb_poly_majorant(arb_poly_t res, const arb_poly_t poly, slong prec) + void _arb_poly_add(arb_ptr C, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong prec) + void arb_poly_add(arb_poly_t C, const arb_poly_t A, const arb_poly_t B, slong prec) + void arb_poly_add_si(arb_poly_t C, const arb_poly_t A, slong B, slong prec) + void _arb_poly_sub(arb_ptr C, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong prec) + void arb_poly_sub(arb_poly_t C, const arb_poly_t A, const arb_poly_t B, slong prec) + void arb_poly_add_series(arb_poly_t C, const arb_poly_t A, const arb_poly_t B, slong len, slong prec) + void arb_poly_sub_series(arb_poly_t C, const arb_poly_t A, const arb_poly_t B, slong len, slong prec) + void arb_poly_neg(arb_poly_t C, const arb_poly_t A) + void arb_poly_scalar_mul_2exp_si(arb_poly_t C, const arb_poly_t A, slong c) + void arb_poly_scalar_mul(arb_poly_t C, const arb_poly_t A, const arb_t c, slong prec) + void arb_poly_scalar_div(arb_poly_t C, const arb_poly_t A, const arb_t c, slong prec) + void _arb_poly_mullow_classical(arb_ptr C, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong n, slong prec) + void _arb_poly_mullow_block(arb_ptr C, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong n, slong prec) + void _arb_poly_mullow(arb_ptr C, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong n, slong prec) + void arb_poly_mullow_classical(arb_poly_t C, const arb_poly_t A, const arb_poly_t B, slong n, slong prec) + void arb_poly_mullow_ztrunc(arb_poly_t C, const arb_poly_t A, const arb_poly_t B, slong n, slong prec) + void arb_poly_mullow_block(arb_poly_t C, const arb_poly_t A, const arb_poly_t B, slong n, slong prec) + void arb_poly_mullow(arb_poly_t C, const arb_poly_t A, const arb_poly_t B, slong n, slong prec) + void _arb_poly_mul(arb_ptr C, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong prec) + void arb_poly_mul(arb_poly_t C, const arb_poly_t A, const arb_poly_t B, slong prec) + void _arb_poly_inv_series(arb_ptr Q, arb_srcptr A, slong Alen, slong len, slong prec) + void arb_poly_inv_series(arb_poly_t Q, const arb_poly_t A, slong n, slong prec) + void _arb_poly_div_series(arb_ptr Q, arb_srcptr A, slong Alen, arb_srcptr B, slong Blen, slong n, slong prec) + void arb_poly_div_series(arb_poly_t Q, const arb_poly_t A, const arb_poly_t B, slong n, slong prec) + void _arb_poly_div(arb_ptr Q, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong prec) + void _arb_poly_rem(arb_ptr R, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong prec) + void _arb_poly_divrem(arb_ptr Q, arb_ptr R, arb_srcptr A, slong lenA, arb_srcptr B, slong lenB, slong prec) + int arb_poly_divrem(arb_poly_t Q, arb_poly_t R, const arb_poly_t A, const arb_poly_t B, slong prec) + void _arb_poly_div_root(arb_ptr Q, arb_t R, arb_srcptr A, slong len, const arb_t c, slong prec) + void _arb_poly_taylor_shift_horner(arb_ptr g, const arb_t c, slong n, slong prec) + void arb_poly_taylor_shift_horner(arb_poly_t g, const arb_poly_t f, const arb_t c, slong prec) + void _arb_poly_taylor_shift_divconquer(arb_ptr g, const arb_t c, slong n, slong prec) + void arb_poly_taylor_shift_divconquer(arb_poly_t g, const arb_poly_t f, const arb_t c, slong prec) + void _arb_poly_taylor_shift_convolution(arb_ptr g, const arb_t c, slong n, slong prec) + void arb_poly_taylor_shift_convolution(arb_poly_t g, const arb_poly_t f, const arb_t c, slong prec) + void _arb_poly_taylor_shift(arb_ptr g, const arb_t c, slong n, slong prec) + void arb_poly_taylor_shift(arb_poly_t g, const arb_poly_t f, const arb_t c, slong prec) + void _arb_poly_compose_horner(arb_ptr res, arb_srcptr poly1, slong len1, arb_srcptr poly2, slong len2, slong prec) + void arb_poly_compose_horner(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, slong prec) + void _arb_poly_compose_divconquer(arb_ptr res, arb_srcptr poly1, slong len1, arb_srcptr poly2, slong len2, slong prec) + void arb_poly_compose_divconquer(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, slong prec) + void _arb_poly_compose(arb_ptr res, arb_srcptr poly1, slong len1, arb_srcptr poly2, slong len2, slong prec) + void arb_poly_compose(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, slong prec) + void _arb_poly_compose_series_horner(arb_ptr res, arb_srcptr poly1, slong len1, arb_srcptr poly2, slong len2, slong n, slong prec) + void arb_poly_compose_series_horner(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, slong n, slong prec) + void _arb_poly_compose_series_brent_kung(arb_ptr res, arb_srcptr poly1, slong len1, arb_srcptr poly2, slong len2, slong n, slong prec) + void arb_poly_compose_series_brent_kung(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, slong n, slong prec) + void _arb_poly_compose_series(arb_ptr res, arb_srcptr poly1, slong len1, arb_srcptr poly2, slong len2, slong n, slong prec) + void arb_poly_compose_series(arb_poly_t res, const arb_poly_t poly1, const arb_poly_t poly2, slong n, slong prec) + void _arb_poly_revert_series_lagrange(arb_ptr h, arb_srcptr f, slong flen, slong n, slong prec) + void arb_poly_revert_series_lagrange(arb_poly_t h, const arb_poly_t f, slong n, slong prec) + void _arb_poly_revert_series_newton(arb_ptr h, arb_srcptr f, slong flen, slong n, slong prec) + void arb_poly_revert_series_newton(arb_poly_t h, const arb_poly_t f, slong n, slong prec) + void _arb_poly_revert_series_lagrange_fast(arb_ptr h, arb_srcptr f, slong flen, slong n, slong prec) + void arb_poly_revert_series_lagrange_fast(arb_poly_t h, const arb_poly_t f, slong n, slong prec) + void _arb_poly_revert_series(arb_ptr h, arb_srcptr f, slong flen, slong n, slong prec) + void arb_poly_revert_series(arb_poly_t h, const arb_poly_t f, slong n, slong prec) + void _arb_poly_evaluate_horner(arb_t y, arb_srcptr f, slong len, const arb_t x, slong prec) + void arb_poly_evaluate_horner(arb_t y, const arb_poly_t f, const arb_t x, slong prec) + void _arb_poly_evaluate_rectangular(arb_t y, arb_srcptr f, slong len, const arb_t x, slong prec) + void arb_poly_evaluate_rectangular(arb_t y, const arb_poly_t f, const arb_t x, slong prec) + void _arb_poly_evaluate(arb_t y, arb_srcptr f, slong len, const arb_t x, slong prec) + void arb_poly_evaluate(arb_t y, const arb_poly_t f, const arb_t x, slong prec) + void _arb_poly_evaluate_acb_horner(acb_t y, arb_srcptr f, slong len, const acb_t x, slong prec) + void arb_poly_evaluate_acb_horner(acb_t y, const arb_poly_t f, const acb_t x, slong prec) + void _arb_poly_evaluate_acb_rectangular(acb_t y, arb_srcptr f, slong len, const acb_t x, slong prec) + void arb_poly_evaluate_acb_rectangular(acb_t y, const arb_poly_t f, const acb_t x, slong prec) + void _arb_poly_evaluate_acb(acb_t y, arb_srcptr f, slong len, const acb_t x, slong prec) + void arb_poly_evaluate_acb(acb_t y, const arb_poly_t f, const acb_t x, slong prec) + void _arb_poly_evaluate2_horner(arb_t y, arb_t z, arb_srcptr f, slong len, const arb_t x, slong prec) + void arb_poly_evaluate2_horner(arb_t y, arb_t z, const arb_poly_t f, const arb_t x, slong prec) + void _arb_poly_evaluate2_rectangular(arb_t y, arb_t z, arb_srcptr f, slong len, const arb_t x, slong prec) + void arb_poly_evaluate2_rectangular(arb_t y, arb_t z, const arb_poly_t f, const arb_t x, slong prec) + void _arb_poly_evaluate2(arb_t y, arb_t z, arb_srcptr f, slong len, const arb_t x, slong prec) + void arb_poly_evaluate2(arb_t y, arb_t z, const arb_poly_t f, const arb_t x, slong prec) + void _arb_poly_evaluate2_acb_horner(acb_t y, acb_t z, arb_srcptr f, slong len, const acb_t x, slong prec) + void arb_poly_evaluate2_acb_horner(acb_t y, acb_t z, const arb_poly_t f, const acb_t x, slong prec) + void _arb_poly_evaluate2_acb_rectangular(acb_t y, acb_t z, arb_srcptr f, slong len, const acb_t x, slong prec) + void arb_poly_evaluate2_acb_rectangular(acb_t y, acb_t z, const arb_poly_t f, const acb_t x, slong prec) + void _arb_poly_evaluate2_acb(acb_t y, acb_t z, arb_srcptr f, slong len, const acb_t x, slong prec) + void arb_poly_evaluate2_acb(acb_t y, acb_t z, const arb_poly_t f, const acb_t x, slong prec) + void _arb_poly_product_roots(arb_ptr poly, arb_srcptr xs, slong n, slong prec) + void arb_poly_product_roots(arb_poly_t poly, arb_srcptr xs, slong n, slong prec) + void _arb_poly_product_roots_complex(arb_ptr poly, arb_srcptr r, slong rn, acb_srcptr c, slong cn, slong prec) + void arb_poly_product_roots_complex(arb_poly_t poly, arb_srcptr r, slong rn, acb_srcptr c, slong cn, slong prec) + arb_ptr * _arb_poly_tree_alloc(slong len) + void _arb_poly_tree_free(arb_ptr * tree, slong len) + void _arb_poly_tree_build(arb_ptr * tree, arb_srcptr roots, slong len, slong prec) + void _arb_poly_evaluate_vec_iter(arb_ptr ys, arb_srcptr poly, slong plen, arb_srcptr xs, slong n, slong prec) + void arb_poly_evaluate_vec_iter(arb_ptr ys, const arb_poly_t poly, arb_srcptr xs, slong n, slong prec) + void _arb_poly_evaluate_vec_fast_precomp(arb_ptr vs, arb_srcptr poly, slong plen, arb_ptr * tree, slong len, slong prec) + void _arb_poly_evaluate_vec_fast(arb_ptr ys, arb_srcptr poly, slong plen, arb_srcptr xs, slong n, slong prec) + void arb_poly_evaluate_vec_fast(arb_ptr ys, const arb_poly_t poly, arb_srcptr xs, slong n, slong prec) + void _arb_poly_interpolate_newton(arb_ptr poly, arb_srcptr xs, arb_srcptr ys, slong n, slong prec) + void arb_poly_interpolate_newton(arb_poly_t poly, arb_srcptr xs, arb_srcptr ys, slong n, slong prec) + void _arb_poly_interpolate_barycentric(arb_ptr poly, arb_srcptr xs, arb_srcptr ys, slong n, slong prec) + void arb_poly_interpolate_barycentric(arb_poly_t poly, arb_srcptr xs, arb_srcptr ys, slong n, slong prec) + void _arb_poly_interpolation_weights(arb_ptr w, arb_ptr * tree, slong len, slong prec) + void _arb_poly_interpolate_fast_precomp(arb_ptr poly, arb_srcptr ys, arb_ptr * tree, arb_srcptr weights, slong len, slong prec) + void _arb_poly_interpolate_fast(arb_ptr poly, arb_srcptr xs, arb_srcptr ys, slong len, slong prec) + void arb_poly_interpolate_fast(arb_poly_t poly, arb_srcptr xs, arb_srcptr ys, slong n, slong prec) + void _arb_poly_derivative(arb_ptr res, arb_srcptr poly, slong len, slong prec) + void arb_poly_derivative(arb_poly_t res, const arb_poly_t poly, slong prec) + void _arb_poly_integral(arb_ptr res, arb_srcptr poly, slong len, slong prec) + void arb_poly_integral(arb_poly_t res, const arb_poly_t poly, slong prec) + void _arb_poly_borel_transform(arb_ptr res, arb_srcptr poly, slong len, slong prec) + void arb_poly_borel_transform(arb_poly_t res, const arb_poly_t poly, slong prec) + void _arb_poly_inv_borel_transform(arb_ptr res, arb_srcptr poly, slong len, slong prec) + void arb_poly_inv_borel_transform(arb_poly_t res, const arb_poly_t poly, slong prec) + void _arb_poly_binomial_transform_basecase(arb_ptr b, arb_srcptr a, slong alen, slong len, slong prec) + void arb_poly_binomial_transform_basecase(arb_poly_t b, const arb_poly_t a, slong len, slong prec) + void _arb_poly_binomial_transform_convolution(arb_ptr b, arb_srcptr a, slong alen, slong len, slong prec) + void arb_poly_binomial_transform_convolution(arb_poly_t b, const arb_poly_t a, slong len, slong prec) + void _arb_poly_binomial_transform(arb_ptr b, arb_srcptr a, slong alen, slong len, slong prec) + void arb_poly_binomial_transform(arb_poly_t b, const arb_poly_t a, slong len, slong prec) + void _arb_poly_graeffe_transform(arb_ptr b, arb_srcptr a, slong len, slong prec) + void arb_poly_graeffe_transform(arb_poly_t b, arb_poly_t a, slong prec) + void _arb_poly_pow_ui_trunc_binexp(arb_ptr res, arb_srcptr f, slong flen, ulong exp, slong len, slong prec) + void arb_poly_pow_ui_trunc_binexp(arb_poly_t res, const arb_poly_t poly, ulong exp, slong len, slong prec) + void _arb_poly_pow_ui(arb_ptr res, arb_srcptr f, slong flen, ulong exp, slong prec) + void arb_poly_pow_ui(arb_poly_t res, const arb_poly_t poly, ulong exp, slong prec) + void _arb_poly_pow_series(arb_ptr h, arb_srcptr f, slong flen, arb_srcptr g, slong glen, slong len, slong prec) + void arb_poly_pow_series(arb_poly_t h, const arb_poly_t f, const arb_poly_t g, slong len, slong prec) + void _arb_poly_pow_arb_series(arb_ptr h, arb_srcptr f, slong flen, const arb_t g, slong len, slong prec) + void arb_poly_pow_arb_series(arb_poly_t h, const arb_poly_t f, const arb_t g, slong len, slong prec) + void _arb_poly_sqrt_series(arb_ptr g, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_sqrt_series(arb_poly_t g, const arb_poly_t h, slong n, slong prec) + void _arb_poly_rsqrt_series(arb_ptr g, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_rsqrt_series(arb_poly_t g, const arb_poly_t h, slong n, slong prec) + void _arb_poly_log_series(arb_ptr res, arb_srcptr f, slong flen, slong n, slong prec) + void arb_poly_log_series(arb_poly_t res, const arb_poly_t f, slong n, slong prec) + void _arb_poly_log1p_series(arb_ptr res, arb_srcptr f, slong flen, slong n, slong prec) + void arb_poly_log1p_series(arb_poly_t res, const arb_poly_t f, slong n, slong prec) + void _arb_poly_atan_series(arb_ptr res, arb_srcptr f, slong flen, slong n, slong prec) + void arb_poly_atan_series(arb_poly_t res, const arb_poly_t f, slong n, slong prec) + void _arb_poly_asin_series(arb_ptr res, arb_srcptr f, slong flen, slong n, slong prec) + void arb_poly_asin_series(arb_poly_t res, const arb_poly_t f, slong n, slong prec) + void _arb_poly_acos_series(arb_ptr res, arb_srcptr f, slong flen, slong n, slong prec) + void arb_poly_acos_series(arb_poly_t res, const arb_poly_t f, slong n, slong prec) + void _arb_poly_exp_series_basecase(arb_ptr f, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_exp_series_basecase(arb_poly_t f, const arb_poly_t h, slong n, slong prec) + void _arb_poly_exp_series(arb_ptr f, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_exp_series(arb_poly_t f, const arb_poly_t h, slong n, slong prec) + void _arb_poly_sin_cos_series_basecase(arb_ptr s, arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec, int times_pi) + void arb_poly_sin_cos_series_basecase(arb_poly_t s, arb_poly_t c, const arb_poly_t h, slong n, slong prec, int times_pi) + void _arb_poly_sin_cos_series_tangent(arb_ptr s, arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec, int times_pi) + void arb_poly_sin_cos_series_tangent(arb_poly_t s, arb_poly_t c, const arb_poly_t h, slong n, slong prec, int times_pi) + void _arb_poly_sin_cos_series(arb_ptr s, arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_sin_cos_series(arb_poly_t s, arb_poly_t c, const arb_poly_t h, slong n, slong prec) + void _arb_poly_sin_series(arb_ptr s, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_sin_series(arb_poly_t s, const arb_poly_t h, slong n, slong prec) + void _arb_poly_cos_series(arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_cos_series(arb_poly_t c, const arb_poly_t h, slong n, slong prec) + void _arb_poly_tan_series(arb_ptr g, arb_srcptr h, slong hlen, slong len, slong prec) + void arb_poly_tan_series(arb_poly_t g, const arb_poly_t h, slong n, slong prec) + void _arb_poly_sin_cos_pi_series(arb_ptr s, arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_sin_cos_pi_series(arb_poly_t s, arb_poly_t c, const arb_poly_t h, slong n, slong prec) + void _arb_poly_sin_pi_series(arb_ptr s, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_sin_pi_series(arb_poly_t s, const arb_poly_t h, slong n, slong prec) + void _arb_poly_cos_pi_series(arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_cos_pi_series(arb_poly_t c, const arb_poly_t h, slong n, slong prec) + void _arb_poly_cot_pi_series(arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_cot_pi_series(arb_poly_t c, const arb_poly_t h, slong n, slong prec) + void _arb_poly_sinh_cosh_series_basecase(arb_ptr s, arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_sinh_cosh_series_basecase(arb_poly_t s, arb_poly_t c, const arb_poly_t h, slong n, slong prec) + void _arb_poly_sinh_cosh_series_exponential(arb_ptr s, arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_sinh_cosh_series_exponential(arb_poly_t s, arb_poly_t c, const arb_poly_t h, slong n, slong prec) + void _arb_poly_sinh_cosh_series(arb_ptr s, arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_sinh_cosh_series(arb_poly_t s, arb_poly_t c, const arb_poly_t h, slong n, slong prec) + void _arb_poly_sinh_series(arb_ptr s, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_sinh_series(arb_poly_t s, const arb_poly_t h, slong n, slong prec) + void _arb_poly_cosh_series(arb_ptr c, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_cosh_series(arb_poly_t c, const arb_poly_t h, slong n, slong prec) + void _arb_poly_sinc_series(arb_ptr s, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_sinc_series(arb_poly_t s, const arb_poly_t h, slong n, slong prec) + void _arb_poly_sinc_pi_series(arb_ptr s, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_sinc_pi_series(arb_poly_t s, const arb_poly_t h, slong n, slong prec) + void _arb_poly_lambertw_series(arb_ptr res, arb_srcptr z, slong zlen, int flags, slong len, slong prec) + void arb_poly_lambertw_series(arb_poly_t res, const arb_poly_t z, int flags, slong len, slong prec) + void _arb_poly_gamma_series(arb_ptr res, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_gamma_series(arb_poly_t res, const arb_poly_t h, slong n, slong prec) + void _arb_poly_rgamma_series(arb_ptr res, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_rgamma_series(arb_poly_t res, const arb_poly_t h, slong n, slong prec) + void _arb_poly_lgamma_series(arb_ptr res, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_lgamma_series(arb_poly_t res, const arb_poly_t h, slong n, slong prec) + void _arb_poly_digamma_series(arb_ptr res, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_digamma_series(arb_poly_t res, const arb_poly_t h, slong n, slong prec) + void _arb_poly_rising_ui_series(arb_ptr res, arb_srcptr f, slong flen, ulong r, slong trunc, slong prec) + void arb_poly_rising_ui_series(arb_poly_t res, const arb_poly_t f, ulong r, slong trunc, slong prec) + void arb_poly_zeta_series(arb_poly_t res, const arb_poly_t s, const arb_t a, int deflate, slong n, slong prec) + void _arb_poly_riemann_siegel_theta_series(arb_ptr res, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_riemann_siegel_theta_series(arb_poly_t res, const arb_poly_t h, slong n, slong prec) + void _arb_poly_riemann_siegel_z_series(arb_ptr res, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_riemann_siegel_z_series(arb_poly_t res, const arb_poly_t h, slong n, slong prec) + void _arb_poly_root_bound_fujiwara(mag_t bound, arb_srcptr poly, slong len) + void arb_poly_root_bound_fujiwara(mag_t bound, arb_poly_t poly) + void _arb_poly_newton_convergence_factor(arf_t convergence_factor, arb_srcptr poly, slong len, const arb_t convergence_interval, slong prec) + 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) + 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) + void _arb_poly_swinnerton_dyer_ui(arb_ptr poly, ulong n, slong trunc, slong prec) + void arb_poly_swinnerton_dyer_ui(arb_poly_t poly, ulong n, slong prec) diff --git a/src/flint/flintlib/arf.pxd b/src/flint/flintlib/arf.pxd index 38ac745a..d78bfa3b 100644 --- a/src/flint/flintlib/arf.pxd +++ b/src/flint/flintlib/arf.pxd @@ -1,5 +1,5 @@ from flint.flintlib.fmpz cimport fmpz_t, fmpz_struct -from flint._flint cimport mp_limb_t, ulong, flint_rand_t +from flint.flintlib.flint cimport mp_limb_t, ulong, flint_rand_t, slong from flint.flintlib.fmpq cimport fmpq_t from flint.flintlib.mag cimport mag_t @@ -21,118 +21,153 @@ cdef extern from "arf.h": cdef arf_rnd_t ARF_RND_CEIL cdef arf_rnd_t ARF_RND_UP +# from here on is parsed void arf_init(arf_t x) void arf_clear(arf_t x) - void arf_zero(arf_t x) - void arf_pos_inf(arf_t x) - void arf_neg_inf(arf_t x) - void arf_nan(arf_t x) - int arf_is_special(const arf_t x) + slong arf_allocated_bytes(const arf_t x) + void arf_zero(arf_t res) + void arf_one(arf_t res) + void arf_pos_inf(arf_t res) + void arf_neg_inf(arf_t res) + void arf_nan(arf_t res) int arf_is_zero(const arf_t x) + int arf_is_one(const arf_t x) int arf_is_pos_inf(const arf_t x) int arf_is_neg_inf(const arf_t x) int arf_is_nan(const arf_t x) + int arf_is_inf(const arf_t x) int arf_is_normal(const arf_t x) + int arf_is_special(const arf_t x) int arf_is_finite(const arf_t x) - int arf_is_inf(const arf_t x) - void arf_one(arf_t x) - int arf_is_one(const arf_t x) - int arf_sgn(const arf_t x) + void arf_set(arf_t res, const arf_t x) +# void arf_set_mpz(arf_t res, const mpz_t x) +# void arf_set_fmpz(arf_t res, const fmpz_t x) + void arf_set_ui(arf_t res, ulong x) + void arf_set_si(arf_t res, slong x) +# void arf_set_mpfr(arf_t res, const mpfr_t x) +# void arf_set_fmpr(arf_t res, const fmpr_t x) + void arf_set_d(arf_t res, double x) + void arf_swap(arf_t x, arf_t y) + void arf_init_set_ui(arf_t res, ulong x) + void arf_init_set_si(arf_t res, slong x) + int arf_set_round(arf_t res, const arf_t x, slong prec, arf_rnd_t rnd) + int arf_set_round_si(arf_t res, slong x, slong prec, arf_rnd_t rnd) + int arf_set_round_ui(arf_t res, ulong x, slong prec, arf_rnd_t rnd) +# int arf_set_round_mpz(arf_t res, const mpz_t x, slong prec, arf_rnd_t rnd) + int arf_set_round_fmpz(arf_t res, const fmpz_t x, slong prec, arf_rnd_t rnd) + void arf_set_si_2exp_si(arf_t res, slong m, slong e) + void arf_set_ui_2exp_si(arf_t res, ulong m, slong e) + void arf_set_fmpz_2exp(arf_t res, const fmpz_t m, const fmpz_t e) + int arf_set_round_fmpz_2exp(arf_t res, const fmpz_t x, const fmpz_t e, slong prec, arf_rnd_t rnd) + void arf_get_fmpz_2exp(fmpz_t m, fmpz_t e, const arf_t x) + void arf_frexp(arf_t m, fmpz_t e, const arf_t x) + double arf_get_d(const arf_t x, arf_rnd_t rnd) + void arf_set_fmpz(arf_t x, const fmpz_t res) +# int arf_get_mpfr(mpfr_t res, const arf_t x, mpfr_rnd_t rnd) + int arf_get_fmpz(fmpz_t res, const arf_t x, arf_rnd_t rnd) + slong arf_get_si(const arf_t x, arf_rnd_t rnd) + int arf_get_fmpz_fixed_fmpz(fmpz_t res, const arf_t x, const fmpz_t e) + int arf_get_fmpz_fixed_si(fmpz_t res, const arf_t x, slong e) + void arf_floor(arf_t res, const arf_t x) + void arf_ceil(arf_t res, const arf_t x) + void arf_get_fmpq(fmpq_t res, const arf_t x) + int arf_equal(const arf_t x, const arf_t y) + int arf_equal_si(const arf_t x, slong y) + int arf_equal_ui(const arf_t x, ulong y) + int arf_equal_d(const arf_t x, double y) int arf_cmp(const arf_t x, const arf_t y) + int arf_cmp_si(const arf_t x, slong y) + int arf_cmp_ui(const arf_t x, ulong y) + int arf_cmp_d(const arf_t x, double y) int arf_cmpabs(const arf_t x, const arf_t y) - void arf_swap(arf_t y, arf_t x) - void arf_set(arf_t y, const arf_t x) - void arf_neg(arf_t y, const arf_t x) - void arf_init_set_ui(arf_t x, ulong v) - void arf_init_set_si(arf_t x, long v) - void arf_set_ui(arf_t x, ulong v) - void arf_set_si(arf_t x, long v) int arf_cmpabs_ui(const arf_t x, ulong y) + int arf_cmpabs_d(const arf_t x, double y) + int arf_cmpabs_mag(const arf_t x, const mag_t y) + int arf_cmp_2exp_si(const arf_t x, slong e) + int arf_cmpabs_2exp_si(const arf_t x, slong e) + int arf_sgn(const arf_t x) + void arf_min(arf_t res, const arf_t a, const arf_t b) + void arf_max(arf_t res, const arf_t a, const arf_t b) + slong arf_bits(const arf_t x) + int arf_is_int(const arf_t x) + int arf_is_int_2exp_si(const arf_t x, slong e) + void arf_abs_bound_lt_2exp_fmpz(fmpz_t res, const arf_t x) + void arf_abs_bound_le_2exp_fmpz(fmpz_t res, const arf_t x) + slong arf_abs_bound_lt_2exp_si(const arf_t x) + void arf_get_mag(mag_t res, const arf_t x) + void arf_get_mag_lower(mag_t res, const arf_t x) + void arf_set_mag(arf_t res, const mag_t x) + void mag_init_set_arf(mag_t res, const arf_t x) + void mag_fast_init_set_arf(mag_t res, const arf_t x) + void arf_mag_set_ulp(mag_t res, const arf_t x, slong prec) + void arf_mag_add_ulp(mag_t res, const mag_t x, const arf_t y, slong prec) + void arf_mag_fast_add_ulp(mag_t res, const mag_t x, const arf_t y, slong 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_set_mag_shallow(arf_t y, const mag_t x) void arf_init_neg_mag_shallow(arf_t z, const mag_t x) - int arf_cmpabs_mag(const arf_t x, const mag_t y) - int arf_mag_cmpabs(const mag_t x, const arf_t y) - void arf_set_fmpz(arf_t y, const fmpz_t x) - int arf_set_round_ui(arf_t x, ulong v, 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_fmpz(arf_t y, const fmpz_t x, long prec, arf_rnd_t rnd) - int arf_set_round(arf_t y, const arf_t x, long prec, arf_rnd_t rnd) - int arf_neg_round(arf_t y, const arf_t x, long prec, arf_rnd_t rnd) - int arf_equal(const arf_t x, const arf_t y) - 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) - void arf_abs(arf_t y, const arf_t x) - long arf_bits(const arf_t x) - void arf_bot(fmpz_t e, const arf_t x) - int arf_is_int(const arf_t x) - int arf_is_int_2exp_si(const arf_t x, long e) - int arf_cmp_2exp_si(const arf_t x, long e) - int arf_cmpabs_2exp_si(const arf_t x, long e) - void arf_set_si_2exp_si(arf_t x, long man, long exp) - void arf_set_ui_2exp_si(arf_t x, ulong man, long exp) - 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_set_round_fmpz_2exp(arf_t y, const fmpz_t x, const fmpz_t exp, long prec, arf_rnd_t rnd) - 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_fmpz_2exp(fmpz_t man, fmpz_t exp, const arf_t x) - 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_set_fmpz_2exp(arf_t x, const fmpz_t man, const fmpz_t exp) - void arf_floor(arf_t z, const arf_t x) - void arf_ceil(arf_t z, const arf_t x) + void arf_randtest(arf_t res, flint_rand_t state, slong bits, slong mag_bits) + void arf_randtest_not_zero(arf_t res, flint_rand_t state, slong bits, slong mag_bits) + void arf_randtest_special(arf_t res, flint_rand_t state, slong bits, slong mag_bits) + void arf_urandom(arf_t res, flint_rand_t state, slong bits, arf_rnd_t rnd) 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_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) - int arf_mul(arf_t z, const arf_t x, const arf_t y, long prec, arf_rnd_t rnd) - int arf_neg_mul(arf_t z, const arf_t x, const arf_t y, long prec, arf_rnd_t rnd) - int arf_mul_ui(arf_ptr z, arf_srcptr x, ulong y, long prec, arf_rnd_t rnd) - int arf_mul_si(arf_ptr z, arf_srcptr x, long y, long prec, arf_rnd_t rnd) - int arf_mul_fmpz(arf_ptr z, arf_srcptr x, const fmpz_t y, long prec, arf_rnd_t rnd) - int arf_add(arf_ptr z, arf_srcptr x, arf_srcptr y, long prec, arf_rnd_t rnd) - int arf_add_si(arf_ptr z, arf_srcptr x, long y, long prec, arf_rnd_t rnd) - int arf_add_ui(arf_ptr z, arf_srcptr x, ulong y, long prec, arf_rnd_t rnd) - int arf_add_fmpz(arf_ptr z, arf_srcptr x, const fmpz_t y, long prec, arf_rnd_t rnd) - int arf_add_fmpz_2exp(arf_ptr z, arf_srcptr x, const fmpz_t y, const fmpz_t exp, long prec, arf_rnd_t rnd) - int arf_sub(arf_ptr z, arf_srcptr x, arf_srcptr y, long prec, arf_rnd_t rnd) - int arf_sub_si(arf_ptr z, arf_srcptr x, long y, long prec, arf_rnd_t rnd) - int arf_sub_ui(arf_ptr z, arf_srcptr x, ulong y, long prec, arf_rnd_t rnd) - int arf_sub_fmpz(arf_ptr z, arf_srcptr x, const fmpz_t y, long prec, arf_rnd_t rnd) - int arf_addmul(arf_ptr z, arf_srcptr x, arf_srcptr y, long prec, arf_rnd_t rnd) - int arf_addmul_ui(arf_ptr z, arf_srcptr x, ulong y, long prec, arf_rnd_t rnd) - int arf_addmul_si(arf_ptr z, arf_srcptr x, long y, long prec, arf_rnd_t rnd) - int arf_addmul_fmpz(arf_ptr z, arf_srcptr x, const fmpz_t y, long prec, arf_rnd_t rnd) - int arf_submul(arf_ptr z, arf_srcptr x, arf_srcptr y, long prec, arf_rnd_t rnd) - int arf_submul_ui(arf_ptr z, arf_srcptr x, ulong y, long prec, arf_rnd_t rnd) - int arf_submul_si(arf_ptr z, arf_srcptr x, long y, long prec, arf_rnd_t rnd) - int arf_submul_fmpz(arf_ptr z, arf_srcptr x, const fmpz_t y, long prec, arf_rnd_t rnd) - int arf_div(arf_ptr z, arf_srcptr x, arf_srcptr y, long prec, arf_rnd_t rnd) - int arf_div_ui(arf_ptr z, arf_srcptr x, ulong y, long prec, arf_rnd_t rnd) - int arf_ui_div(arf_ptr z, ulong x, arf_srcptr y, long prec, arf_rnd_t rnd) - int arf_div_si(arf_ptr z, arf_srcptr x, long y, long prec, arf_rnd_t rnd) - int arf_si_div(arf_ptr z, long x, arf_srcptr y, long prec, arf_rnd_t rnd) - int arf_div_fmpz(arf_ptr z, arf_srcptr x, const fmpz_t y, long prec, arf_rnd_t rnd) - int arf_fmpz_div(arf_ptr z, const fmpz_t x, arf_srcptr y, long prec, arf_rnd_t rnd) - int arf_fmpz_div_fmpz(arf_ptr z, const fmpz_t x, const fmpz_t y, long prec, arf_rnd_t rnd) - int arf_sqrt(arf_ptr z, arf_srcptr x, long prec, arf_rnd_t rnd) - int arf_sqrt_ui(arf_t z, ulong 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_ptr z, arf_srcptr x, long prec, arf_rnd_t rnd) - 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 arf_mag_add_ulp(mag_t z, const mag_t x, const arf_t y, long prec) - void arf_mag_set_ulp(mag_t z, const arf_t y, long prec) - void arf_get_fmpq(fmpq_t y, const arf_t x) - int arf_set_fmpq(arf_t y, const fmpq_t x, long prec, arf_rnd_t rnd) - double arf_get_d(const arf_t x, arf_rnd_t rnd) - void arf_set_d(arf_t x, double v) + void arf_printd(const arf_t x, slong d) + char * arf_get_str(const arf_t x, slong d) + char * arf_dump_str(const arf_t x) + int arf_load_str(arf_t x, const char * str) + void arf_abs(arf_t res, const arf_t x) + void arf_neg(arf_t res, const arf_t x) + int arf_neg_round(arf_t res, const arf_t x, slong prec, arf_rnd_t rnd) + int arf_add(arf_t res, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) + int arf_add_si(arf_t res, const arf_t x, slong y, slong prec, arf_rnd_t rnd) + int arf_add_ui(arf_t res, const arf_t x, ulong y, slong prec, arf_rnd_t rnd) + int arf_add_fmpz(arf_t res, const arf_t x, const fmpz_t y, slong prec, arf_rnd_t rnd) + 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) + int arf_sub(arf_t res, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) + int arf_sub_si(arf_t res, const arf_t x, slong y, slong prec, arf_rnd_t rnd) + int arf_sub_ui(arf_t res, const arf_t x, ulong y, slong prec, arf_rnd_t rnd) + int arf_sub_fmpz(arf_t res, const arf_t x, const fmpz_t y, slong prec, arf_rnd_t rnd) + void arf_mul_2exp_si(arf_t res, const arf_t x, slong e) + void arf_mul_2exp_fmpz(arf_t res, const arf_t x, const fmpz_t e) + int arf_mul(arf_t res, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) + int arf_mul_ui(arf_t res, const arf_t x, ulong y, slong prec, arf_rnd_t rnd) + int arf_mul_si(arf_t res, const arf_t x, slong y, slong prec, arf_rnd_t rnd) +# int arf_mul_mpz(arf_t res, const arf_t x, const mpz_t y, slong prec, arf_rnd_t rnd) + int arf_mul_fmpz(arf_t res, const arf_t x, const fmpz_t y, slong prec, arf_rnd_t rnd) + int arf_addmul(arf_t z, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) + int arf_addmul_ui(arf_t z, const arf_t x, ulong y, slong prec, arf_rnd_t rnd) + int arf_addmul_si(arf_t z, const arf_t x, slong y, slong prec, arf_rnd_t rnd) +# int arf_addmul_mpz(arf_t z, const arf_t x, const mpz_t y, slong prec, arf_rnd_t rnd) + int arf_addmul_fmpz(arf_t z, const arf_t x, const fmpz_t y, slong prec, arf_rnd_t rnd) + int arf_submul(arf_t z, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) + int arf_submul_ui(arf_t z, const arf_t x, ulong y, slong prec, arf_rnd_t rnd) + int arf_submul_si(arf_t z, const arf_t x, slong y, slong prec, arf_rnd_t rnd) +# int arf_submul_mpz(arf_t z, const arf_t x, const mpz_t y, slong prec, arf_rnd_t rnd) + int arf_submul_fmpz(arf_t z, const arf_t x, const fmpz_t y, slong prec, arf_rnd_t rnd) + int arf_fma(arf_t res, const arf_t x, const arf_t y, const arf_t z, slong prec, arf_rnd_t rnd) + int arf_sosq(arf_t res, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) + int arf_sum(arf_t res, arf_srcptr terms, slong len, slong prec, arf_rnd_t rnd) + 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) + int arf_div(arf_t res, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) + int arf_div_ui(arf_t res, const arf_t x, ulong y, slong prec, arf_rnd_t rnd) + int arf_ui_div(arf_t res, ulong x, const arf_t y, slong prec, arf_rnd_t rnd) + int arf_div_si(arf_t res, const arf_t x, slong y, slong prec, arf_rnd_t rnd) + int arf_si_div(arf_t res, slong x, const arf_t y, slong prec, arf_rnd_t rnd) + int arf_div_fmpz(arf_t res, const arf_t x, const fmpz_t y, slong prec, arf_rnd_t rnd) + int arf_fmpz_div(arf_t res, const fmpz_t x, const arf_t y, slong prec, arf_rnd_t rnd) + int arf_fmpz_div_fmpz(arf_t res, const fmpz_t x, const fmpz_t y, slong prec, arf_rnd_t rnd) + int arf_sqrt(arf_t res, const arf_t x, slong prec, arf_rnd_t rnd) + int arf_sqrt_ui(arf_t res, ulong x, slong prec, arf_rnd_t rnd) + int arf_sqrt_fmpz(arf_t res, const fmpz_t x, slong prec, arf_rnd_t rnd) + int arf_rsqrt(arf_t res, const arf_t x, slong prec, arf_rnd_t rnd) + int arf_root(arf_t res, const arf_t x, ulong k, slong 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, slong prec, arf_rnd_t rnd) + int arf_complex_mul_fallback(arf_t e, arf_t f, const arf_t a, const arf_t b, const arf_t c, const arf_t d, slong prec, arf_rnd_t rnd) + int arf_complex_sqr(arf_t e, arf_t f, const arf_t a, const arf_t b, slong prec, arf_rnd_t rnd) +# int _arf_get_integer_mpn(mp_ptr y, mp_srcptr xp, mp_size_t xn, slong exp) +# int _arf_set_mpn_fixed(arf_t z, mp_srcptr xp, mp_size_t xn, mp_size_t fixn, int negative, slong prec, arf_rnd_t rnd) + int _arf_set_round_ui(arf_t z, ulong x, int sgnbit, slong prec, arf_rnd_t rnd) + int _arf_set_round_uiui(arf_t z, slong * fix, mp_limb_t hi, mp_limb_t lo, int sgnbit, slong prec, arf_rnd_t rnd) +# int _arf_set_round_mpn(arf_t z, slong * exp_shift, mp_srcptr x, mp_size_t xn, int sgnbit, slong prec, arf_rnd_t rnd) + diff --git a/src/flint/flintlib/arith.pxd b/src/flint/flintlib/arith.pxd index 64ce4308..71f85137 100644 --- a/src/flint/flintlib/arith.pxd +++ b/src/flint/flintlib/arith.pxd @@ -1,23 +1,82 @@ -from flint._flint cimport ulong -from flint.flintlib.fmpz cimport fmpz_t +from flint.flintlib.flint cimport ulong, slong, mp_limb_t +from flint.flintlib.fmpz cimport fmpz_t, fmpz_struct from flint.flintlib.fmpz_poly cimport fmpz_poly_t from flint.flintlib.fmpq_poly cimport fmpq_poly_t from flint.flintlib.fmpq cimport fmpq_t +from flint.flintlib.fmpz_mat cimport fmpz_mat_t +from flint.flintlib.nmod_vec cimport nmod_t +from flint.flintlib.fmpq cimport fmpq_struct cdef extern from "flint/arith.h": - void arith_number_of_partitions(fmpz_t res, ulong n) - int arith_moebius_mu(fmpz_t n) - void arith_divisor_sigma(fmpz_t v, ulong k, fmpz_t n) - void arith_euler_phi(fmpz_t v, fmpz_t n) - void arith_bell_number(fmpz_t v, ulong n) - void arith_euler_number(fmpz_t v, ulong n) - void arith_bernoulli_number(fmpq_t v, ulong n) - void arith_stirling_number_1(fmpz_t s, long n, long k) - void arith_stirling_number_2(fmpz_t s, long n, long k) - void arith_harmonic_number(fmpq_t v, ulong n) - void arith_bernoulli_polynomial(fmpq_poly_t v, ulong n) - void arith_euler_polynomial(fmpq_poly_t v, ulong n) +#stealth macros void arith_legendre_polynomial(fmpq_poly_t v, ulong n) void arith_chebyshev_t_polynomial(fmpz_poly_t v, ulong n) void arith_chebyshev_u_polynomial(fmpz_poly_t v, ulong n) void arith_cyclotomic_polynomial(fmpz_poly_t v, ulong n) + +# from here on is parsed + void arith_primorial(fmpz_t res, slong n) + void _arith_harmonic_number(fmpz_t num, fmpz_t den, slong n) + void arith_harmonic_number(fmpq_t x, slong n) + void arith_stirling_number_1u(fmpz_t s, ulong n, ulong k) + void arith_stirling_number_1(fmpz_t s, ulong n, ulong k) + void arith_stirling_number_2(fmpz_t s, ulong n, ulong k) + void arith_stirling_number_1u_vec(fmpz_struct * row, ulong n, slong klen) + void arith_stirling_number_1_vec(fmpz_struct * row, ulong n, slong klen) + void arith_stirling_number_2_vec(fmpz_struct * row, ulong n, slong klen) + void arith_stirling_number_1u_vec_next(fmpz_struct * row, fmpz_struct * prev, slong n, slong klen) + void arith_stirling_number_1_vec_next(fmpz_struct * row, fmpz_struct * prev, slong n, slong klen) + void arith_stirling_number_2_vec_next(fmpz_struct * row, fmpz_struct * prev, slong n, slong klen) + void arith_stirling_matrix_1u(fmpz_mat_t mat) + void arith_stirling_matrix_1(fmpz_mat_t mat) + void arith_stirling_matrix_2(fmpz_mat_t mat) + void arith_bell_number(fmpz_t b, ulong n) + void arith_bell_number_dobinski(fmpz_t res, ulong n) + void arith_bell_number_multi_mod(fmpz_t res, ulong n) + void arith_bell_number_vec(fmpz_struct * b, slong n) + void arith_bell_number_vec_recursive(fmpz_struct * b, slong n) + void arith_bell_number_vec_multi_mod(fmpz_struct * b, slong n) + mp_limb_t arith_bell_number_nmod(ulong n, nmod_t mod) + # void arith_bell_number_nmod_vec(mp_ptr b, slong n, nmod_t mod) + # void arith_bell_number_nmod_vec_recursive(mp_ptr b, slong n, nmod_t mod) + # void arith_bell_number_nmod_vec_ogf(mp_ptr b, slong n, nmod_t mod) + # int arith_bell_number_nmod_vec_series(mp_ptr b, slong n, nmod_t mod) + double arith_bell_number_size(ulong n) + void _arith_bernoulli_number(fmpz_t num, fmpz_t den, ulong n) + void arith_bernoulli_number(fmpq_t x, ulong n) + void _arith_bernoulli_number_vec(fmpz_struct * num, fmpz_struct * den, slong n) + void arith_bernoulli_number_vec(fmpq_struct * x, slong n) + void arith_bernoulli_number_denom(fmpz_t den, ulong n) + double arith_bernoulli_number_size(ulong n) + void arith_bernoulli_polynomial(fmpq_poly_t poly, ulong n) + void _arith_bernoulli_number_zeta(fmpz_t num, fmpz_t den, ulong n) + void _arith_bernoulli_number_vec_recursive(fmpz_struct * num, fmpz_struct * den, slong n) + void _arith_bernoulli_number_vec_zeta(fmpz_struct * num, fmpz_struct * den, slong n) + void _arith_bernoulli_number_vec_multi_mod(fmpz_struct * num, fmpz_struct * den, slong n) + void arith_euler_number(fmpz_t res, ulong n) + void arith_euler_number_vec(fmpz_struct * res, slong n) + double arith_euler_number_size(ulong n) + void arith_euler_polynomial(fmpq_poly_t poly, ulong n) + void _arith_euler_number_zeta(fmpz_t res, ulong n) + void arith_euler_phi(fmpz_t res, const fmpz_t n) + int arith_moebius_mu(const fmpz_t n) + void arith_divisor_sigma(fmpz_t res, ulong k, const fmpz_t n) + void arith_divisors(fmpz_poly_t res, const fmpz_t n) + void arith_ramanujan_tau(fmpz_t res, const fmpz_t n) + void arith_ramanujan_tau_series(fmpz_poly_t res, slong n) + void _arith_cos_minpoly(fmpz_struct * coeffs, slong d, ulong n) + void arith_cos_minpoly(fmpz_poly_t poly, ulong n) + void arith_landau_function_vec(fmpz_struct * res, slong len) + void arith_dedekind_sum_naive(fmpq_t s, const fmpz_t h, const fmpz_t k) + double arith_dedekind_sum_coprime_d(double h, double k) + void arith_dedekind_sum_coprime_large(fmpq_t s, const fmpz_t h, const fmpz_t k) + void arith_dedekind_sum_coprime(fmpq_t s, const fmpz_t h, const fmpz_t k) + void arith_dedekind_sum(fmpq_t s, const fmpz_t h, const fmpz_t k) + void arith_number_of_partitions_vec(fmpz_struct * res, slong len) + # void arith_number_of_partitions_nmod_vec(mp_ptr res, slong len, nmod_t mod) + # void arith_hrr_expsum_factored(trig_prod_t prod, mp_limb_t k, mp_limb_t n) + # void arith_number_of_partitions_mpfr(mpfr_t x, ulong n) + void arith_number_of_partitions(fmpz_t x, ulong n) + void arith_sum_of_squares(fmpz_t r, ulong k, const fmpz_t n) + void arith_sum_of_squares_vec(fmpz_struct * r, ulong k, slong n) + diff --git a/src/flint/flintlib/bernoulli.pxd b/src/flint/flintlib/bernoulli.pxd index a1fb9ee2..154867db 100644 --- a/src/flint/flintlib/bernoulli.pxd +++ b/src/flint/flintlib/bernoulli.pxd @@ -1,6 +1,18 @@ -from flint._flint cimport ulong -from flint.flintlib.fmpq cimport fmpq_t +from flint.flintlib.flint cimport ulong, slong +from flint.flintlib.fmpq cimport fmpq_t, fmpq_struct +from flint.flintlib.fmpz cimport fmpz_t cdef extern from "bernoulli.h": - void bernoulli_fmpq_ui(fmpq_t, ulong) - void bernoulli_cache_compute(long n) +# from here on is parsed + # void bernoulli_rev_init(bernoulli_rev_t iter, ulong n) + # void bernoulli_rev_next(fmpz_t numer, fmpz_t denom, bernoulli_rev_t iter) + # void bernoulli_rev_clear(bernoulli_rev_t iter) + void bernoulli_fmpq_vec_no_cache(fmpq_struct * res, ulong a, slong num) + void bernoulli_cache_compute(slong n) + slong bernoulli_bound_2exp_si(ulong n) + ulong bernoulli_mod_p_harvey(ulong n, ulong p) + void _bernoulli_fmpq_ui_zeta(fmpz_t num, fmpz_t den, ulong n) + void _bernoulli_fmpq_ui_multi_mod(fmpz_t num, fmpz_t den, ulong n, double alpha) + void _bernoulli_fmpq_ui(fmpz_t num, fmpz_t den, ulong n) + void bernoulli_fmpq_ui(fmpq_t b, ulong n) + diff --git a/src/flint/flintlib/dirichlet.pxd b/src/flint/flintlib/dirichlet.pxd index 6ab7306f..f65caec8 100644 --- a/src/flint/flintlib/dirichlet.pxd +++ b/src/flint/flintlib/dirichlet.pxd @@ -1,4 +1,4 @@ -from flint._flint cimport ulong +from flint.flintlib.flint cimport ulong, slong from flint.flintlib.nmod_vec cimport nmod_t cdef extern from "dirichlet.h": @@ -21,41 +21,48 @@ cdef extern from "dirichlet.h": ulong * log ctypedef dirichlet_char_struct dirichlet_char_t[1] - ulong dirichlet_group_size(const dirichlet_group_t G) - void dirichlet_group_init(dirichlet_group_t G, ulong q) +# from here on is parsed + int dirichlet_group_init(dirichlet_group_t G, ulong q) + void dirichlet_subgroup_init(dirichlet_group_t H, const dirichlet_group_t G, ulong h) void dirichlet_group_clear(dirichlet_group_t G) - ulong dirichlet_number_primitive(const dirichlet_group_t G) - - void dirichlet_char_init(dirichlet_char_t x, const dirichlet_group_t G) - void dirichlet_char_clear(dirichlet_char_t x) - void dirichlet_char_print(const dirichlet_group_t G, const dirichlet_char_t x) - - void dirichlet_char_set(dirichlet_char_t x, const dirichlet_group_t G, const dirichlet_char_t y) - int dirichlet_char_eq(const dirichlet_char_t x, const dirichlet_char_t y) - int dirichlet_parity_char(const dirichlet_group_t G, const dirichlet_char_t x) - ulong dirichlet_conductor_char(const dirichlet_group_t G, const dirichlet_char_t x) - ulong dirichlet_order_char(const dirichlet_group_t G, const dirichlet_char_t x) - + ulong dirichlet_group_size(const dirichlet_group_t G) + ulong dirichlet_group_num_primitive(const dirichlet_group_t G) + void dirichlet_group_dlog_precompute(dirichlet_group_t G, ulong num) + void dirichlet_group_dlog_clear(dirichlet_group_t G, ulong num) + void dirichlet_char_init(dirichlet_char_t chi, const dirichlet_group_t G) + void dirichlet_char_clear(dirichlet_char_t chi) + void dirichlet_char_print(const dirichlet_group_t G, const dirichlet_char_t chi) void dirichlet_char_log(dirichlet_char_t x, const dirichlet_group_t G, ulong m) ulong dirichlet_char_exp(const dirichlet_group_t G, const dirichlet_char_t x) ulong _dirichlet_char_exp(dirichlet_char_t x, const dirichlet_group_t G) - void dirichlet_char_index(dirichlet_char_t x, const dirichlet_group_t G, ulong j) - ulong dirichlet_index_char(const dirichlet_group_t G, const dirichlet_char_t x) void dirichlet_char_one(dirichlet_char_t x, const dirichlet_group_t G) void dirichlet_char_first_primitive(dirichlet_char_t x, const dirichlet_group_t G) + void dirichlet_char_set(dirichlet_char_t x, const dirichlet_group_t G, const dirichlet_char_t y) int dirichlet_char_next(dirichlet_char_t x, const dirichlet_group_t G) int dirichlet_char_next_primitive(dirichlet_char_t x, const dirichlet_group_t G) - void dirichlet_char_mul(dirichlet_char_t c, const dirichlet_group_t G, const dirichlet_char_t a, const dirichlet_char_t b) - void dirichlet_char_pow(dirichlet_char_t c, const dirichlet_group_t G, const dirichlet_char_t a, ulong n) - void dirichlet_char_lower(dirichlet_char_t y, const dirichlet_group_t H, const dirichlet_char_t x, const dirichlet_group_t G) - void dirichlet_char_lift(dirichlet_char_t y, const dirichlet_group_t G, const dirichlet_char_t x, const dirichlet_group_t H) + ulong dirichlet_index_char(const dirichlet_group_t G, const dirichlet_char_t x) + void dirichlet_char_index(dirichlet_char_t x, const dirichlet_group_t G, ulong j) + int dirichlet_char_eq(const dirichlet_char_t x, const dirichlet_char_t y) + int dirichlet_char_eq_deep(const dirichlet_group_t G, const dirichlet_char_t x, const dirichlet_char_t y) + int dirichlet_char_is_principal(const dirichlet_group_t G, const dirichlet_char_t chi) + ulong dirichlet_conductor_ui(const dirichlet_group_t G, ulong a) + ulong dirichlet_conductor_char(const dirichlet_group_t G, const dirichlet_char_t x) + int dirichlet_parity_ui(const dirichlet_group_t G, ulong a) + int dirichlet_parity_char(const dirichlet_group_t G, const dirichlet_char_t x) + ulong dirichlet_order_ui(const dirichlet_group_t G, ulong a) + ulong dirichlet_order_char(const dirichlet_group_t G, const dirichlet_char_t x) + int dirichlet_char_is_real(const dirichlet_group_t G, const dirichlet_char_t chi) + int dirichlet_char_is_primitive(const dirichlet_group_t G, const dirichlet_char_t chi) cdef ulong DIRICHLET_CHI_NULL ulong dirichlet_pairing(const dirichlet_group_t G, ulong m, ulong n) - ulong dirichlet_pairing_char(const dirichlet_group_t G, const dirichlet_char_t a, const dirichlet_char_t b) - - int dirichlet_char_is_principal(const dirichlet_group_t G, const dirichlet_char_t chi) - int dirichlet_char_is_real(const dirichlet_group_t G, const dirichlet_char_t chi) - int dirichlet_char_is_primitive(const dirichlet_group_t G, const dirichlet_char_t chi) + ulong dirichlet_pairing_char(const dirichlet_group_t G, const dirichlet_char_t chi, const dirichlet_char_t psi) ulong dirichlet_chi(const dirichlet_group_t G, const dirichlet_char_t chi, ulong n) + void dirichlet_chi_vec(ulong * v, const dirichlet_group_t G, const dirichlet_char_t chi, slong nv) + void dirichlet_chi_vec_order(ulong * v, const dirichlet_group_t G, const dirichlet_char_t chi, ulong order, slong nv) + void dirichlet_char_mul(dirichlet_char_t chi12, const dirichlet_group_t G, const dirichlet_char_t chi1, const dirichlet_char_t chi2) + void dirichlet_char_pow(dirichlet_char_t c, const dirichlet_group_t G, const dirichlet_char_t a, ulong n) + 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) + 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) + diff --git a/src/flint/_flint.pxd b/src/flint/flintlib/flint.pxd similarity index 82% rename from src/flint/_flint.pxd rename to src/flint/flintlib/flint.pxd index c0218e25..51950f47 100644 --- a/src/flint/_flint.pxd +++ b/src/flint/flintlib/flint.pxd @@ -1,19 +1,9 @@ # _flint.pxd # -# Define the contents of the Python, GMP, Flint and Arb headers. +# Define fundamental types and constants cdef extern from "Python.h": ctypedef void PyObject -# ctypedef void PyTypeObject -# ctypedef long Py_ssize_t -# int PyObject_TypeCheck(object, PyTypeObject*) -# int PyInt_Check(PyObject *o) -# int PyLong_Check(PyObject *o) -# long PyInt_AS_LONG(PyObject *io) -# double PyFloat_AS_DOUBLE(PyObject *io) -# Py_ssize_t PyList_GET_SIZE(PyObject *list) -# long PyLong_AsLongAndOverflow(PyObject *pylong, int *overflow) -# long long PyLong_AsLongLongAndOverflow(PyObject *pylong, int *overflow) cdef enum: FMPZ_UNKNOWN = 0 diff --git a/src/flint/flintlib/fmpq.pxd b/src/flint/flintlib/fmpq.pxd index 5af96777..12a5d400 100644 --- a/src/flint/flintlib/fmpq.pxd +++ b/src/flint/flintlib/fmpq.pxd @@ -1,4 +1,4 @@ -from flint._flint cimport ulong, flint_rand_t, mp_bitcnt_t +from flint.flintlib.flint cimport ulong, flint_rand_t, mp_bitcnt_t, slong, flint_bitcnt_t from flint.flintlib.fmpz cimport fmpz_struct, fmpz_t cdef extern from "flint/fmpq.h": @@ -8,42 +8,285 @@ cdef extern from "flint/fmpq.h": ctypedef fmpq_struct fmpq_t[1] fmpz_struct * fmpq_numref(fmpq_t x) fmpz_struct * fmpq_denref(fmpq_t x) + +# from here on is parsed void fmpq_init(fmpq_t x) void fmpq_clear(fmpq_t x) + void fmpq_canonicalise(fmpq_t res) + void _fmpq_canonicalise(fmpz_t num, fmpz_t den) + int fmpq_is_canonical(const fmpq_t x) + int _fmpq_is_canonical(const fmpz_t num, const fmpz_t den) + void fmpq_set(fmpq_t dest, const fmpq_t src) + void fmpq_swap(fmpq_t op1, fmpq_t op2) + void fmpq_neg(fmpq_t dest, const fmpq_t src) + void fmpq_abs(fmpq_t dest, const fmpq_t src) void fmpq_zero(fmpq_t res) void fmpq_one(fmpq_t res) - int fmpq_equal(fmpq_t x, fmpq_t y) - int fmpq_sgn(fmpq_t x) - int fmpq_is_zero(fmpq_t x) - int fmpq_is_one(fmpq_t x) - void fmpq_set(fmpq_t dest, fmpq_t src) - void fmpq_neg(fmpq_t dest, fmpq_t src) + int fmpq_is_zero(const fmpq_t res) + int fmpq_is_one(const fmpq_t res) + int fmpq_is_pm1(const fmpq_t res) + int fmpq_equal(const fmpq_t x, const fmpq_t y) + int fmpq_sgn(const fmpq_t x) + int fmpq_cmp(const fmpq_t x, const fmpq_t y) + int fmpq_cmp_fmpz(const fmpq_t x, const fmpz_t y) + int fmpq_cmp_ui(const fmpq_t x, ulong y) + int fmpq_cmp_si(const fmpq_t x, slong y) + int fmpq_equal_ui(const fmpq_t x, ulong y) + int fmpq_equal_si(const fmpq_t x, slong y) + void fmpq_height(fmpz_t height, const fmpq_t x) + flint_bitcnt_t fmpq_height_bits(const fmpq_t x) + void fmpq_set_fmpz_frac(fmpq_t res, const fmpz_t p, const fmpz_t q) + # void fmpq_get_mpz_frac(mpz_t a, mpz_t b, fmpq_t c) + void fmpq_set_si(fmpq_t res, slong p, ulong q) + void _fmpq_set_si(fmpz_t rnum, fmpz_t rden, slong p, ulong q) + void fmpq_set_ui(fmpq_t res, ulong p, ulong q) + void _fmpq_set_ui(fmpz_t rnum, fmpz_t rden, ulong p, ulong q) + # void fmpq_set_mpq(fmpq_t dest, const mpq_t src) + void fmpq_set_str(fmpq_t dest, const char * s, int base) + # void fmpq_init_set_mpz_frac_readonly(fmpq_t z, const mpz_t p, const mpz_t q) + double fmpq_get_d(const fmpq_t f) + # void fmpq_get_mpq(mpq_t dest, const fmpq_t src) + # int fmpq_get_mpfr(mpfr_t dest, const fmpq_t src, mpfr_rnd_t rnd) +# from here on is parsed + void fmpq_init(fmpq_t x) + void fmpq_clear(fmpq_t x) void fmpq_canonicalise(fmpq_t res) - int fmpq_is_canonical(fmpq_t x) - void fmpq_set_si(fmpq_t res, long p, ulong q) - #void fmpq_set_mpq(fmpq_t dest, mpq_t src) - #void fmpq_get_mpq(mpq_t dest, fmpq_t src) - void fmpq_print(fmpq_t x) - void fmpq_randtest(fmpq_t res, flint_rand_t state, mp_bitcnt_t bits) - void fmpq_randbits(fmpq_t res, flint_rand_t state, mp_bitcnt_t bits) - void fmpq_add(fmpq_t res, fmpq_t op1, fmpq_t op2) - void fmpq_sub(fmpq_t res, fmpq_t op1, fmpq_t op2) - void fmpq_mul(fmpq_t res, fmpq_t op1, fmpq_t op2) - void fmpq_mul_fmpz(fmpq_t res, fmpq_t op, fmpz_t x) - void fmpq_addmul(fmpq_t res, fmpq_t op1, fmpq_t op2) - void fmpq_submul(fmpq_t res, fmpq_t op1, fmpq_t op2) - void fmpq_inv(fmpq_t dest, fmpq_t src) - void fmpq_div(fmpq_t res, fmpq_t op1, fmpq_t op2) - void fmpq_div_fmpz(fmpq_t res, fmpq_t op, fmpz_t x) - int fmpq_mod_fmpz(fmpz_t res, fmpq_t x, fmpz_t mod) + void _fmpq_canonicalise(fmpz_t num, fmpz_t den) + int fmpq_is_canonical(const fmpq_t x) + int _fmpq_is_canonical(const fmpz_t num, const fmpz_t den) + void fmpq_set(fmpq_t dest, const fmpq_t src) + void fmpq_swap(fmpq_t op1, fmpq_t op2) + void fmpq_neg(fmpq_t dest, const fmpq_t src) + void fmpq_abs(fmpq_t dest, const fmpq_t src) + void fmpq_zero(fmpq_t res) + void fmpq_one(fmpq_t res) + int fmpq_is_zero(const fmpq_t res) + int fmpq_is_one(const fmpq_t res) + int fmpq_is_pm1(const fmpq_t res) + int fmpq_equal(const fmpq_t x, const fmpq_t y) + int fmpq_sgn(const fmpq_t x) + int fmpq_cmp(const fmpq_t x, const fmpq_t y) + int fmpq_cmp_fmpz(const fmpq_t x, const fmpz_t y) + int fmpq_cmp_ui(const fmpq_t x, ulong y) + int fmpq_cmp_si(const fmpq_t x, slong y) + int fmpq_equal_ui(const fmpq_t x, ulong y) + int fmpq_equal_si(const fmpq_t x, slong y) + void fmpq_height(fmpz_t height, const fmpq_t x) + flint_bitcnt_t fmpq_height_bits(const fmpq_t x) + void fmpq_set_fmpz_frac(fmpq_t res, const fmpz_t p, const fmpz_t q) + # void fmpq_get_mpz_frac(mpz_t a, mpz_t b, fmpq_t c) + void fmpq_set_si(fmpq_t res, slong p, ulong q) + void _fmpq_set_si(fmpz_t rnum, fmpz_t rden, slong p, ulong q) + void fmpq_set_ui(fmpq_t res, ulong p, ulong q) + void _fmpq_set_ui(fmpz_t rnum, fmpz_t rden, ulong p, ulong q) + # void fmpq_set_mpq(fmpq_t dest, const mpq_t src) + void fmpq_set_str(fmpq_t dest, const char * s, int base) + # void fmpq_init_set_mpz_frac_readonly(fmpq_t z, const mpz_t p, const mpz_t q) + double fmpq_get_d(const fmpq_t f) + # void fmpq_get_mpq(mpq_t dest, const fmpq_t src) + # int fmpq_get_mpfr(mpfr_t dest, const fmpq_t src, mpfr_rnd_t rnd) + char * _fmpq_get_str(char * str, int b, const fmpz_t num, const fmpz_t den) + char * fmpq_get_str(char * str, int b, const fmpq_t x) + # void flint_mpq_init_set_readonly(mpq_t z, const fmpq_t f) + # void flint_mpq_clear_readonly(mpq_t z) + # void fmpq_init_set_readonly(fmpq_t f, const mpq_t z) + void fmpq_clear_readonly(fmpq_t f) + int fmpq_print(const fmpq_t x) + int _fmpq_print(const fmpz_t num, const fmpz_t den) + void fmpq_randtest(fmpq_t res, flint_rand_t state, flint_bitcnt_t bits) + void _fmpq_randtest(fmpz_t num, fmpz_t den, flint_rand_t state, flint_bitcnt_t bits) + void fmpq_randtest_not_zero(fmpq_t res, flint_rand_t state, flint_bitcnt_t bits) + void fmpq_randbits(fmpq_t res, flint_rand_t state, flint_bitcnt_t bits) + void _fmpq_randbits(fmpz_t num, fmpz_t den, flint_rand_t state, flint_bitcnt_t bits) + void fmpq_add(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void fmpq_sub(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void fmpq_mul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void fmpq_div(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void _fmpq_add(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) + void _fmpq_sub(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) + void _fmpq_mul(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) + void _fmpq_div(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) + void _fmpq_add_si(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, slong r) + void _fmpq_sub_si(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, slong r) + void _fmpq_add_ui(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, ulong r) + void _fmpq_sub_ui(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, ulong r) + void _fmpq_add_fmpz(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, const fmpz_t r) + void _fmpq_sub_fmpz(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, const fmpz_t r) + void fmpq_add_si(fmpq_t res, const fmpq_t op1, slong c) + void fmpq_sub_si(fmpq_t res, const fmpq_t op1, slong c) + void fmpq_add_ui(fmpq_t res, const fmpq_t op1, ulong c) + void fmpq_sub_ui(fmpq_t res, const fmpq_t op1, ulong c) + void fmpq_add_fmpz(fmpq_t res, const fmpq_t op1, const fmpz_t c) + void fmpq_sub_fmpz(fmpq_t res, const fmpq_t op1, const fmpz_t c) + void _fmpq_mul_si(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, slong r) + void fmpq_mul_si(fmpq_t res, const fmpq_t op1, slong c) + void _fmpq_mul_ui(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, ulong r) + void fmpq_mul_ui(fmpq_t res, const fmpq_t op1, ulong c) + void fmpq_addmul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void fmpq_submul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void _fmpq_addmul(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) + void _fmpq_submul(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) + void fmpq_inv(fmpq_t dest, const fmpq_t src) + void _fmpq_pow_si(fmpz_t rnum, fmpz_t rden, const fmpz_t opnum, const fmpz_t opden, slong e) + void fmpq_pow_si(fmpq_t res, const fmpq_t op, slong e) int fmpq_pow_fmpz(fmpq_t a, const fmpq_t b, const fmpz_t e) - int fmpq_reconstruct_fmpz(fmpq_t res, fmpz_t a, fmpz_t m) - int fmpq_reconstruct_fmpz_2(fmpq_t res, fmpz_t a, fmpz_t m, fmpz_t N, fmpz_t D) - mp_bitcnt_t fmpq_height_bits(fmpq_t x) - void fmpq_height(fmpz_t height, fmpq_t x) - void fmpq_next_calkin_wilf(fmpq_t res, fmpq_t x) - void fmpq_next_signed_calkin_wilf(fmpq_t res, fmpq_t x) - void fmpq_next_minimal(fmpq_t res, fmpq_t x) - void fmpq_next_signed_minimal(fmpq_t res, fmpq_t x) - void fmpq_harmonic_ui(fmpq_t res, ulong n) + void fmpq_mul_fmpz(fmpq_t res, const fmpq_t op, const fmpz_t x) + void fmpq_div_fmpz(fmpq_t res, const fmpq_t op, const fmpz_t x) + void fmpq_mul_2exp(fmpq_t res, const fmpq_t x, flint_bitcnt_t exp) + void fmpq_div_2exp(fmpq_t res, const fmpq_t x, flint_bitcnt_t exp) + void _fmpq_gcd(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, const fmpz_t r, const fmpz_t s) + void fmpq_gcd(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void _fmpq_gcd_cofactors(fmpz_t gnum, fmpz_t gden, fmpz_t abar, fmpz_t bbar, const fmpz_t anum, const fmpz_t aden, const fmpz_t bnum, const fmpz_t bden) + void fmpq_gcd_cofactors(fmpq_t g, fmpz_t abar, fmpz_t bbar, const fmpq_t a, const fmpq_t b) + void _fmpq_add_small(fmpz_t rnum, fmpz_t rden, slong p1, ulong q1, slong p2, ulong q2) + void _fmpq_mul_small(fmpz_t rnum, fmpz_t rden, slong p1, ulong q1, slong p2, ulong q2) + int _fmpq_mod_fmpz(fmpz_t res, const fmpz_t num, const fmpz_t den, const fmpz_t mod) + int fmpq_mod_fmpz(fmpz_t res, const fmpq_t x, const fmpz_t mod) + int _fmpq_reconstruct_fmpz_2_naive(fmpz_t n, fmpz_t d, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) + int _fmpq_reconstruct_fmpz_2(fmpz_t n, fmpz_t d, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) + int fmpq_reconstruct_fmpz_2(fmpq_t res, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) + int _fmpq_reconstruct_fmpz(fmpz_t n, fmpz_t d, const fmpz_t a, const fmpz_t m) + int fmpq_reconstruct_fmpz(fmpq_t res, const fmpz_t a, const fmpz_t m) + void _fmpq_next_minimal(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) + void fmpq_next_minimal(fmpq_t res, const fmpq_t x) + void _fmpq_next_signed_minimal(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) + void fmpq_next_signed_minimal(fmpq_t res, const fmpq_t x) + void _fmpq_next_calkin_wilf(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) + void fmpq_next_calkin_wilf(fmpq_t res, const fmpq_t x) + void _fmpq_next_signed_calkin_wilf(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) + void fmpq_next_signed_calkin_wilf(fmpq_t res, const fmpq_t x) + void fmpq_farey_neighbors(fmpq_t l, fmpq_t r, const fmpq_t x, const fmpz_t Q) + void fmpq_simplest_between(fmpq_t x, const fmpq_t l, const fmpq_t r) + void _fmpq_simplest_between(fmpz_t x_num, fmpz_t x_den, const fmpz_t l_num, const fmpz_t l_den, const fmpz_t r_num, const fmpz_t r_den) + slong fmpq_get_cfrac(fmpz_struct * c, fmpq_t rem, const fmpq_t x, slong n) + slong fmpq_get_cfrac_naive(fmpz_struct * c, fmpq_t rem, const fmpq_t x, slong n) + void fmpq_set_cfrac(fmpq_t x, const fmpz_struct * c, slong n) + slong fmpq_cfrac_bound(const fmpq_t x) + void _fmpq_harmonic_ui(fmpz_t num, fmpz_t den, ulong n) + void fmpq_harmonic_ui(fmpq_t x, ulong n) void fmpq_dedekind_sum(fmpq_t s, const fmpz_t h, const fmpz_t k) + void fmpq_dedekind_sum_naive(fmpq_t s, const fmpz_t h, const fmpz_t k) + char * _fmpq_get_str(char * str, int b, const fmpz_t num, const fmpz_t den) + char * fmpq_get_str(char * str, int b, const fmpq_t x) + # void flint_mpq_init_set_readonly(mpq_t z, const fmpq_t f) + # void flint_mpq_clear_readonly(mpq_t z) + # void fmpq_init_set_readonly(fmpq_t f, const mpq_t z) + void fmpq_clear_readonly(fmpq_t f) + int fmpq_print(const fmpq_t x) + int _fmpq_print(const fmpz_t num, const fmpz_t den) + void fmpq_randtest(fmpq_t res, flint_rand_t state, flint_bitcnt_t bits) + void _fmpq_randtest(fmpz_t num, fmpz_t den, flint_rand_t state, flint_bitcnt_t bits) + void fmpq_randtest_not_zero(fmpq_t res, flint_rand_t state, flint_bitcnt_t bits) + void fmpq_randbits(fmpq_t res, flint_rand_t state, flint_bitcnt_t bits) + void _fmpq_randbits(fmpz_t num, fmpz_t den, flint_rand_t state, flint_bitcnt_t bits) + void fmpq_add(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void fmpq_sub(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void fmpq_mul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void fmpq_div(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void _fmpq_add(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) + void _fmpq_sub(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) + void _fmpq_mul(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) + void _fmpq_div(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) + void _fmpq_add_si(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, slong r) + void _fmpq_sub_si(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, slong r) + void _fmpq_add_ui(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, ulong r) + void _fmpq_sub_ui(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, ulong r) + void _fmpq_add_fmpz(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, const fmpz_t r) + void _fmpq_sub_fmpz(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, const fmpz_t r) + void fmpq_add_si(fmpq_t res, const fmpq_t op1, slong c) + void fmpq_sub_si(fmpq_t res, const fmpq_t op1, slong c) + void fmpq_add_ui(fmpq_t res, const fmpq_t op1, ulong c) + void fmpq_sub_ui(fmpq_t res, const fmpq_t op1, ulong c) + void fmpq_add_fmpz(fmpq_t res, const fmpq_t op1, const fmpz_t c) + void fmpq_sub_fmpz(fmpq_t res, const fmpq_t op1, const fmpz_t c) + void _fmpq_mul_si(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, slong r) + void fmpq_mul_si(fmpq_t res, const fmpq_t op1, slong c) + void _fmpq_mul_ui(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, ulong r) + void fmpq_mul_ui(fmpq_t res, const fmpq_t op1, ulong c) + void fmpq_addmul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void fmpq_submul(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void _fmpq_addmul(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) + void _fmpq_submul(fmpz_t rnum, fmpz_t rden, const fmpz_t op1num, const fmpz_t op1den, const fmpz_t op2num, const fmpz_t op2den) + void fmpq_inv(fmpq_t dest, const fmpq_t src) + void _fmpq_pow_si(fmpz_t rnum, fmpz_t rden, const fmpz_t opnum, const fmpz_t opden, slong e) + void fmpq_pow_si(fmpq_t res, const fmpq_t op, slong e) + int fmpq_pow_fmpz(fmpq_t a, const fmpq_t b, const fmpz_t e) + void fmpq_mul_fmpz(fmpq_t res, const fmpq_t op, const fmpz_t x) + void fmpq_div_fmpz(fmpq_t res, const fmpq_t op, const fmpz_t x) + void fmpq_mul_2exp(fmpq_t res, const fmpq_t x, flint_bitcnt_t exp) + void fmpq_div_2exp(fmpq_t res, const fmpq_t x, flint_bitcnt_t exp) + void _fmpq_gcd(fmpz_t rnum, fmpz_t rden, const fmpz_t p, const fmpz_t q, const fmpz_t r, const fmpz_t s) + void fmpq_gcd(fmpq_t res, const fmpq_t op1, const fmpq_t op2) + void _fmpq_gcd_cofactors(fmpz_t gnum, fmpz_t gden, fmpz_t abar, fmpz_t bbar, const fmpz_t anum, const fmpz_t aden, const fmpz_t bnum, const fmpz_t bden) + void fmpq_gcd_cofactors(fmpq_t g, fmpz_t abar, fmpz_t bbar, const fmpq_t a, const fmpq_t b) + void _fmpq_add_small(fmpz_t rnum, fmpz_t rden, slong p1, ulong q1, slong p2, ulong q2) + void _fmpq_mul_small(fmpz_t rnum, fmpz_t rden, slong p1, ulong q1, slong p2, ulong q2) + int _fmpq_mod_fmpz(fmpz_t res, const fmpz_t num, const fmpz_t den, const fmpz_t mod) + int fmpq_mod_fmpz(fmpz_t res, const fmpq_t x, const fmpz_t mod) + int _fmpq_reconstruct_fmpz_2_naive(fmpz_t n, fmpz_t d, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) + int _fmpq_reconstruct_fmpz_2(fmpz_t n, fmpz_t d, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) + int fmpq_reconstruct_fmpz_2(fmpq_t res, const fmpz_t a, const fmpz_t m, const fmpz_t N, const fmpz_t D) + int _fmpq_reconstruct_fmpz(fmpz_t n, fmpz_t d, const fmpz_t a, const fmpz_t m) + int fmpq_reconstruct_fmpz(fmpq_t res, const fmpz_t a, const fmpz_t m) + void _fmpq_next_minimal(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) + void fmpq_next_minimal(fmpq_t res, const fmpq_t x) + void _fmpq_next_signed_minimal(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) + void fmpq_next_signed_minimal(fmpq_t res, const fmpq_t x) + void _fmpq_next_calkin_wilf(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) + void fmpq_next_calkin_wilf(fmpq_t res, const fmpq_t x) + void _fmpq_next_signed_calkin_wilf(fmpz_t rnum, fmpz_t rden, const fmpz_t num, const fmpz_t den) + void fmpq_next_signed_calkin_wilf(fmpq_t res, const fmpq_t x) + void fmpq_farey_neighbors(fmpq_t l, fmpq_t r, const fmpq_t x, const fmpz_t Q) + void fmpq_simplest_between(fmpq_t x, const fmpq_t l, const fmpq_t r) + void _fmpq_simplest_between(fmpz_t x_num, fmpz_t x_den, const fmpz_t l_num, const fmpz_t l_den, const fmpz_t r_num, const fmpz_t r_den) + slong fmpq_get_cfrac(fmpz_struct * c, fmpq_t rem, const fmpq_t x, slong n) + slong fmpq_get_cfrac_naive(fmpz_struct * c, fmpq_t rem, const fmpq_t x, slong n) + void fmpq_set_cfrac(fmpq_t x, const fmpz_struct * c, slong n) + slong fmpq_cfrac_bound(const fmpq_t x) + void _fmpq_harmonic_ui(fmpz_t num, fmpz_t den, ulong n) + void fmpq_harmonic_ui(fmpq_t x, ulong n) + void fmpq_dedekind_sum(fmpq_t s, const fmpz_t h, const fmpz_t k) + void fmpq_dedekind_sum_naive(fmpq_t s, const fmpz_t h, const fmpz_t k) + + + + + # void fmpq_init(fmpq_t x) + # void fmpq_clear(fmpq_t x) + # void fmpq_zero(fmpq_t res) + # void fmpq_one(fmpq_t res) + # int fmpq_equal(fmpq_t x, fmpq_t y) + # int fmpq_sgn(fmpq_t x) + # int fmpq_is_zero(fmpq_t x) + # int fmpq_is_one(fmpq_t x) + # void fmpq_set(fmpq_t dest, fmpq_t src) + # void fmpq_neg(fmpq_t dest, fmpq_t src) + # void fmpq_canonicalise(fmpq_t res) + # int fmpq_is_canonical(fmpq_t x) + # void fmpq_set_si(fmpq_t res, long p, ulong q) + # #void fmpq_set_mpq(fmpq_t dest, mpq_t src) + # #void fmpq_get_mpq(mpq_t dest, fmpq_t src) + # void fmpq_print(fmpq_t x) + # void fmpq_randtest(fmpq_t res, flint_rand_t state, mp_bitcnt_t bits) + # void fmpq_randbits(fmpq_t res, flint_rand_t state, mp_bitcnt_t bits) + # void fmpq_add(fmpq_t res, fmpq_t op1, fmpq_t op2) + # void fmpq_sub(fmpq_t res, fmpq_t op1, fmpq_t op2) + # void fmpq_mul(fmpq_t res, fmpq_t op1, fmpq_t op2) + # void fmpq_mul_fmpz(fmpq_t res, fmpq_t op, fmpz_t x) + # void fmpq_addmul(fmpq_t res, fmpq_t op1, fmpq_t op2) + # void fmpq_submul(fmpq_t res, fmpq_t op1, fmpq_t op2) + # void fmpq_inv(fmpq_t dest, fmpq_t src) + # void fmpq_div(fmpq_t res, fmpq_t op1, fmpq_t op2) + # void fmpq_div_fmpz(fmpq_t res, fmpq_t op, fmpz_t x) + # int fmpq_mod_fmpz(fmpz_t res, fmpq_t x, fmpz_t mod) + # int fmpq_pow_fmpz(fmpq_t a, const fmpq_t b, const fmpz_t e) + # int fmpq_reconstruct_fmpz(fmpq_t res, fmpz_t a, fmpz_t m) + # int fmpq_reconstruct_fmpz_2(fmpq_t res, fmpz_t a, fmpz_t m, fmpz_t N, fmpz_t D) + # mp_bitcnt_t fmpq_height_bits(fmpq_t x) + # void fmpq_height(fmpz_t height, fmpq_t x) + # void fmpq_next_calkin_wilf(fmpq_t res, fmpq_t x) + # void fmpq_next_signed_calkin_wilf(fmpq_t res, fmpq_t x) + # void fmpq_next_minimal(fmpq_t res, fmpq_t x) + # void fmpq_next_signed_minimal(fmpq_t res, fmpq_t x) + # void fmpq_harmonic_ui(fmpq_t res, ulong n) + # void fmpq_dedekind_sum(fmpq_t s, const fmpz_t h, const fmpz_t k) diff --git a/src/flint/flintlib/fmpq_mat.pxd b/src/flint/flintlib/fmpq_mat.pxd index 4c0982a3..85604115 100644 --- a/src/flint/flintlib/fmpq_mat.pxd +++ b/src/flint/flintlib/fmpq_mat.pxd @@ -1,4 +1,4 @@ -from flint._flint cimport flint_rand_t, mp_bitcnt_t +from flint.flintlib.flint cimport flint_rand_t, mp_bitcnt_t,slong,flint_bitcnt_t from flint.flintlib.fmpz cimport fmpz_struct, fmpz_t from flint.flintlib.fmpq cimport fmpq_struct, fmpq_t from flint.flintlib.fmpz_mat cimport fmpz_mat_t @@ -11,50 +11,93 @@ cdef extern from "flint/fmpq_mat.h": long c fmpq_struct ** rows ctypedef fmpq_mat_struct fmpq_mat_t[1] - fmpq_struct * fmpq_mat_entry(fmpq_mat_t mat, long i, long j) - fmpz_struct * fmpq_mat_entry_num(fmpq_mat_t mat, long i, long j) - fmpz_struct * fmpq_mat_entry_den(fmpq_mat_t mat, long i, long j) - long fmpq_mat_nrows(fmpq_mat_t mat) - long fmpq_mat_ncols(fmpq_mat_t mat) - void fmpq_mat_init(fmpq_mat_t mat, long rows, long cols) + + +# from here on is parsed + void fmpq_mat_init(fmpq_mat_t mat, slong rows, slong cols) + void fmpq_mat_init_set(fmpq_mat_t mat1, const fmpq_mat_t mat2) void fmpq_mat_clear(fmpq_mat_t mat) - void fmpq_mat_print(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, fmpq_mat_t src) + void fmpq_mat_swap(fmpq_mat_t mat1, fmpq_mat_t mat2) + void fmpq_mat_swap_entrywise(fmpq_mat_t mat1, fmpq_mat_t mat2) + fmpq_struct * fmpq_mat_entry(const fmpq_mat_t mat, slong i, slong j) + fmpz_struct * fmpq_mat_entry_num(const fmpq_mat_t mat, slong i, slong j) + fmpz_struct * fmpq_mat_entry_den(const fmpq_mat_t mat, slong i, slong j) + slong fmpq_mat_nrows(const fmpq_mat_t mat) + slong fmpq_mat_ncols(const 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_add(fmpq_mat_t mat, fmpq_mat_t mat1, fmpq_mat_t mat2) - void fmpq_mat_sub(fmpq_mat_t mat, fmpq_mat_t mat1, fmpq_mat_t mat2) - void fmpq_mat_neg(fmpq_mat_t rop, fmpq_mat_t op) - void fmpq_mat_scalar_mul_fmpz(fmpq_mat_t rop, fmpq_mat_t op, fmpz_t x) - void fmpq_mat_scalar_div_fmpz(fmpq_mat_t rop, fmpq_mat_t op, fmpz_t x) - int fmpq_mat_equal(fmpq_mat_t mat1, fmpq_mat_t mat2) - int fmpq_mat_is_integral(fmpq_mat_t mat) - int fmpq_mat_is_zero(fmpq_mat_t mat) - int fmpq_mat_is_empty(fmpq_mat_t mat) - int fmpq_mat_is_square(fmpq_mat_t mat) - int fmpq_mat_get_fmpz_mat(fmpz_mat_t dest, fmpq_mat_t mat) - void fmpq_mat_get_fmpz_mat_entrywise(fmpz_mat_t num, fmpz_mat_t den, fmpq_mat_t mat) - void fmpq_mat_get_fmpz_mat_matwise(fmpz_mat_t num, fmpz_t den, fmpq_mat_t mat) - void fmpq_mat_get_fmpz_mat_rowwise(fmpz_mat_t num, fmpz_struct * den, fmpq_mat_t mat) - void fmpq_mat_get_fmpz_mat_colwise(fmpz_mat_t num, fmpz_struct * den, fmpq_mat_t mat) - void fmpq_mat_get_fmpz_mat_rowwise_2(fmpz_mat_t num, fmpz_mat_t num2, fmpz_struct * den, fmpq_mat_t mat, fmpq_mat_t mat2) - void fmpq_mat_get_fmpz_mat_mod_fmpz(fmpz_mat_t dest, fmpq_mat_t mat, fmpz_t mod) - void fmpq_mat_set_fmpz_mat(fmpq_mat_t dest, fmpz_mat_t src) - void fmpq_mat_set_fmpz_mat_div_fmpz(fmpq_mat_t X, fmpz_mat_t Xmod, fmpz_t div) - int fmpq_mat_set_fmpz_mat_mod_fmpz(fmpq_mat_t X, fmpz_mat_t Xmod, fmpz_t mod) - void fmpq_mat_mul(fmpq_mat_t C, fmpq_mat_t A, fmpq_mat_t B) - void fmpq_mat_mul_fmpz_mat(fmpq_mat_t C, fmpq_mat_t A, fmpz_mat_t B) - void fmpq_mat_mul_r_fmpz_mat(fmpq_mat_t C, fmpz_mat_t A, fmpq_mat_t B) - void fmpq_mat_det(fmpq_t det, fmpq_mat_t mat) - int fmpq_mat_solve_fraction_free(fmpq_mat_t X, fmpq_mat_t A, fmpq_mat_t B) - int fmpq_mat_solve_dixon(fmpq_mat_t X, fmpq_mat_t A, fmpq_mat_t B) + void fmpq_mat_transpose(fmpq_mat_t rop, const fmpq_mat_t op) + void fmpq_mat_swap_rows(fmpq_mat_t mat, slong * perm, slong r, slong s) + void fmpq_mat_swap_cols(fmpq_mat_t mat, slong * perm, slong r, slong s) + void fmpq_mat_invert_rows(fmpq_mat_t mat, slong * perm) + void fmpq_mat_invert_cols(fmpq_mat_t mat, slong * perm) + 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_fmpq(fmpq_mat_t rop, const fmpq_mat_t op, const fmpq_t x) + 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) + void fmpq_mat_print(const fmpq_mat_t mat) + void fmpq_mat_randbits(fmpq_mat_t mat, flint_rand_t state, flint_bitcnt_t bits) + void fmpq_mat_randtest(fmpq_mat_t mat, flint_rand_t state, flint_bitcnt_t bits) + void fmpq_mat_window_init(fmpq_mat_t window, const fmpq_mat_t mat, slong r1, slong c1, slong r2, slong c2) + void fmpq_mat_window_clear(fmpq_mat_t window) + void fmpq_mat_concat_vertical(fmpq_mat_t res, const fmpq_mat_t mat1, const fmpq_mat_t mat2) + void fmpq_mat_concat_horizontal(fmpq_mat_t res, const fmpq_mat_t mat1, const fmpq_mat_t mat2) + void fmpq_mat_hilbert_matrix(fmpq_mat_t mat) + int fmpq_mat_equal(const fmpq_mat_t mat1, const fmpq_mat_t mat2) + int fmpq_mat_is_integral(const fmpq_mat_t mat) + int fmpq_mat_is_zero(const fmpq_mat_t mat) + int fmpq_mat_is_one(const fmpq_mat_t mat) + int fmpq_mat_is_empty(const fmpq_mat_t mat) + int 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_struct * den, const fmpq_mat_t mat) + void fmpq_mat_get_fmpz_mat_rowwise_2(fmpz_mat_t num, fmpz_mat_t num2, fmpz_struct * den, const fmpq_mat_t mat, const fmpq_mat_t mat2) + void fmpq_mat_get_fmpz_mat_colwise(fmpz_mat_t num, fmpz_struct * den, const fmpq_mat_t mat) + 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 mat, const fmpz_mat_t num, const fmpz_t den) + void fmpq_mat_get_fmpz_mat_mod_fmpz(fmpz_mat_t dest, const fmpq_mat_t mat, const fmpz_t mod) + 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_mul_fmpq_vec(fmpq_struct * c, const fmpq_mat_t A, const fmpq_struct * b, slong blen) + void fmpq_mat_mul_fmpz_vec(fmpq_struct * c, const fmpq_mat_t A, const fmpz_struct * b, slong blen) + void fmpq_mat_mul_fmpq_vec_ptr(fmpq_struct * const * c, const fmpq_mat_t A, const fmpq_struct * const * b, slong blen) + void fmpq_mat_mul_fmpz_vec_ptr(fmpq_struct * const * c, const fmpq_mat_t A, const fmpz_struct * const * b, slong blen) + void fmpq_mat_fmpq_vec_mul(fmpq_struct * c, const fmpq_struct * a, slong alen, const fmpq_mat_t B) + void fmpq_mat_fmpz_vec_mul(fmpq_struct * c, const fmpz_struct * a, slong alen, const fmpq_mat_t B) + void fmpq_mat_fmpq_vec_mul_ptr(fmpq_struct * const * c, const fmpq_struct * const * a, slong alen, const fmpq_mat_t B) + void fmpq_mat_fmpz_vec_mul_ptr(fmpq_struct * const * c, const fmpz_struct * const * a, slong alen, const fmpq_mat_t B) + void fmpq_mat_kronecker_product(fmpq_mat_t C, const fmpq_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_multi_mod(fmpq_mat_t X, const fmpq_mat_t A, const fmpq_mat_t B) + int fmpq_mat_solve(fmpq_mat_t X, const fmpq_mat_t A, const fmpq_mat_t B) + int fmpq_mat_solve_fmpz_mat_fraction_free(fmpq_mat_t X, const fmpz_mat_t A, const fmpz_mat_t B) + int fmpq_mat_solve_fmpz_mat_dixon(fmpq_mat_t X, const fmpz_mat_t A, const fmpz_mat_t B) + int fmpq_mat_solve_fmpz_mat_multi_mod(fmpq_mat_t X, const fmpz_mat_t A, const fmpz_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, fmpq_mat_t A) - long fmpq_mat_rref(fmpq_mat_t B, fmpq_mat_t A) - void fmpq_mat_transpose(fmpq_mat_t B, fmpq_mat_t A) + int fmpq_mat_can_solve_multi_mod(fmpq_mat_t X, const fmpq_mat_t A, const fmpq_mat_t B) + int fmpq_mat_can_solve_fraction_free(fmpq_mat_t X, const fmpq_mat_t A, const fmpq_mat_t B) + int fmpq_mat_can_solve(fmpq_mat_t X, const fmpq_mat_t A, const fmpq_mat_t B) + int fmpq_mat_inv(fmpq_mat_t B, const fmpq_mat_t A) + int fmpq_mat_pivot(slong * perm, fmpq_mat_t mat, slong r, slong c) + slong fmpq_mat_rref_classical(fmpq_mat_t B, const fmpq_mat_t A) + slong fmpq_mat_rref_fraction_free(fmpq_mat_t B, const fmpq_mat_t A) + slong 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_similarity(fmpq_mat_t A, slong r, fmpq_t d) + void _fmpq_mat_charpoly(fmpz_struct * coeffs, fmpz_t den, const fmpq_mat_t mat) + void fmpq_mat_charpoly(fmpq_poly_t pol, const fmpq_mat_t mat) + slong _fmpq_mat_minpoly(fmpz_struct * coeffs, fmpz_t den, const fmpq_mat_t mat) + void fmpq_mat_minpoly(fmpq_poly_t pol, const fmpq_mat_t mat) - void fmpq_mat_charpoly(fmpq_poly_t cp, const fmpq_mat_t mat) - void fmpq_mat_minpoly(fmpq_poly_t cp, const fmpq_mat_t mat) diff --git a/src/flint/flintlib/fmpq_poly.pxd b/src/flint/flintlib/fmpq_poly.pxd index eaf0373e..14956cc8 100644 --- a/src/flint/flintlib/fmpq_poly.pxd +++ b/src/flint/flintlib/fmpq_poly.pxd @@ -1,7 +1,8 @@ -from flint._flint cimport mp_bitcnt_t, flint_rand_t, ulong +from flint.flintlib.flint cimport mp_bitcnt_t, flint_rand_t, ulong, slong, flint_bitcnt_t from flint.flintlib.fmpz cimport fmpz_struct, fmpz_t from flint.flintlib.fmpz_poly cimport fmpz_poly_t -from flint.flintlib.fmpq cimport fmpq_t +from flint.flintlib.fmpq cimport fmpq_t, fmpq_struct +from flint.flintlib.nmod_poly cimport nmod_poly_t cdef extern from "flint/fmpq_poly.h": ctypedef struct fmpq_poly_struct: @@ -10,110 +11,242 @@ cdef extern from "flint/fmpq_poly.h": long length fmpz_t den ctypedef fmpq_poly_struct fmpq_poly_t[1] + + +# from here on is parsed void fmpq_poly_init(fmpq_poly_t poly) - void fmpq_poly_init2(fmpq_poly_t poly, long alloc) - void fmpq_poly_realloc(fmpq_poly_t poly, long alloc) - void fmpq_poly_fit_length(fmpq_poly_t poly, long len) + void fmpq_poly_init2(fmpq_poly_t poly, slong alloc) + void fmpq_poly_realloc(fmpq_poly_t poly, slong alloc) + void fmpq_poly_fit_length(fmpq_poly_t poly, slong len) + void _fmpq_poly_set_length(fmpq_poly_t poly, slong len) void fmpq_poly_clear(fmpq_poly_t poly) void _fmpq_poly_normalise(fmpq_poly_t poly) + void _fmpq_poly_canonicalise(fmpz_struct * poly, fmpz_t den, slong len) void fmpq_poly_canonicalise(fmpq_poly_t poly) - int fmpq_poly_is_canonical(fmpq_poly_t poly) + int _fmpq_poly_is_canonical(const fmpz_struct * poly, const fmpz_t den, slong len) + int fmpq_poly_is_canonical(const fmpq_poly_t poly) + slong fmpq_poly_degree(const fmpq_poly_t poly) + slong fmpq_poly_length(const fmpq_poly_t poly) fmpz_struct * fmpq_poly_numref(fmpq_poly_t poly) - fmpz_struct * fmpq_poly_denref(fmpq_poly_t poly) - void fmpq_poly_get_numerator(fmpz_poly_t res, fmpq_poly_t poly) - long fmpq_poly_degree(fmpq_poly_t poly) - long fmpq_poly_length(fmpq_poly_t poly) - void fmpq_poly_randtest(fmpq_poly_t f, flint_rand_t state, long len, mp_bitcnt_t bits_in) - void fmpq_poly_randtest_unsigned(fmpq_poly_t f, flint_rand_t state, long len, mp_bitcnt_t bits_in) - void fmpq_poly_randtest_not_zero(fmpq_poly_t f, flint_rand_t state, long len, mp_bitcnt_t bits_in) - void fmpq_poly_set(fmpq_poly_t poly1, fmpq_poly_t poly2) - void fmpq_poly_set_si(fmpq_poly_t poly, long x) + fmpz_t fmpq_poly_denref(fmpq_poly_t poly) + void fmpq_poly_get_numerator(fmpz_poly_t res, const fmpq_poly_t poly) + void fmpq_poly_get_denominator(fmpz_t den, const fmpq_poly_t poly) + void fmpq_poly_randtest(fmpq_poly_t f, flint_rand_t state, slong len, flint_bitcnt_t bits) + void fmpq_poly_randtest_unsigned(fmpq_poly_t f, flint_rand_t state, slong len, flint_bitcnt_t bits) + void fmpq_poly_randtest_not_zero(fmpq_poly_t f, flint_rand_t state, slong len, flint_bitcnt_t bits) + void fmpq_poly_set(fmpq_poly_t poly1, const fmpq_poly_t poly2) + void fmpq_poly_set_si(fmpq_poly_t poly, slong x) void fmpq_poly_set_ui(fmpq_poly_t poly, ulong x) - void fmpq_poly_set_fmpz(fmpq_poly_t poly, fmpz_t x) - void fmpq_poly_set_fmpq(fmpq_poly_t poly, fmpq_t x) - #void fmpq_poly_set_mpz(fmpq_poly_t poly, mpz_t x) - #void fmpq_poly_set_mpq(fmpq_poly_t poly, mpq_t x) - void fmpq_poly_set_fmpz_poly(fmpq_poly_t rop, fmpz_poly_t op) - #void _fmpq_poly_set_array_mpq(fmpz_struct * poly, fmpz_t den, mpq_t * a, long n) - #void fmpq_poly_set_array_mpq(fmpq_poly_t poly, mpq_t * a, long n) - int fmpq_poly_set_str(fmpq_poly_t poly, char * str) - char * fmpq_poly_get_str(fmpq_poly_t poly) - char * fmpq_poly_get_str_pretty(fmpq_poly_t poly, char * var) + void fmpq_poly_set_fmpz(fmpq_poly_t poly, const fmpz_t x) + void fmpq_poly_set_fmpq(fmpq_poly_t poly, const fmpq_t x) + # void fmpq_poly_set_mpz(fmpq_poly_t poly, const mpz_t x) + # void fmpq_poly_set_mpq(fmpq_poly_t poly, const mpq_t x) + void fmpq_poly_set_fmpz_poly(fmpq_poly_t rop, const fmpz_poly_t op) + void fmpq_poly_set_nmod_poly(fmpq_poly_t rop, const nmod_poly_t op) + void fmpq_poly_get_nmod_poly(nmod_poly_t rop, const fmpq_poly_t op) + void fmpq_poly_get_nmod_poly_den(nmod_poly_t rop, const fmpq_poly_t op, int den) + # void _fmpq_poly_set_array_mpq(fmpz_struct * poly, fmpz_t den, const mpq_t * a, slong n) + # void fmpq_poly_set_array_mpq(fmpq_poly_t poly, const mpq_t * a, slong n) + int _fmpq_poly_set_str(fmpz_struct * poly, fmpz_t den, const char * str, slong len) + int fmpq_poly_set_str(fmpq_poly_t poly, const char * str) + char * fmpq_poly_get_str(const fmpq_poly_t poly) + char * fmpq_poly_get_str_pretty(const fmpq_poly_t poly, const char * var) void fmpq_poly_zero(fmpq_poly_t poly) void fmpq_poly_one(fmpq_poly_t poly) - void fmpq_poly_neg(fmpq_poly_t poly1, fmpq_poly_t poly2) - void fmpq_poly_inv(fmpq_poly_t poly1, fmpq_poly_t poly2) + void fmpq_poly_neg(fmpq_poly_t poly1, const fmpq_poly_t poly2) + void fmpq_poly_inv(fmpq_poly_t poly1, const fmpq_poly_t poly2) void fmpq_poly_swap(fmpq_poly_t poly1, fmpq_poly_t poly2) - void fmpq_poly_truncate(fmpq_poly_t poly, long n) - void fmpq_poly_get_coeff_fmpq(fmpq_t x, fmpq_poly_t poly, long n) - void fmpq_poly_set_coeff_si(fmpq_poly_t poly, long n, long x) - void fmpq_poly_set_coeff_ui(fmpq_poly_t poly, long n, ulong x) - void fmpq_poly_set_coeff_fmpz(fmpq_poly_t poly, long n, fmpz_t x) - void fmpq_poly_set_coeff_fmpq(fmpq_poly_t poly, long n, fmpq_t x) - #void fmpq_poly_set_coeff_mpz(fmpq_poly_t poly, long n, mpz_t x) - #void fmpq_poly_set_coeff_mpq(fmpq_poly_t poly, long n, mpq_t x) - int fmpq_poly_equal(fmpq_poly_t poly1, fmpq_poly_t poly2) - int fmpq_poly_cmp(fmpq_poly_t left, fmpq_poly_t right) - int fmpq_poly_is_zero(fmpq_poly_t poly) - int fmpq_poly_is_one(fmpq_poly_t poly) + void fmpq_poly_truncate(fmpq_poly_t poly, slong n) + void fmpq_poly_set_trunc(fmpq_poly_t res, const fmpq_poly_t poly, slong n) + void fmpq_poly_get_slice(fmpq_poly_t rop, const fmpq_poly_t op, slong i, slong j) + void fmpq_poly_reverse(fmpq_poly_t res, const fmpq_poly_t poly, slong n) + void fmpq_poly_get_coeff_fmpz(fmpz_t x, const fmpq_poly_t poly, slong n) + void fmpq_poly_get_coeff_fmpq(fmpq_t x, const fmpq_poly_t poly, slong n) + # void fmpq_poly_get_coeff_mpq(mpq_t x, const fmpq_poly_t poly, slong n) + void fmpq_poly_set_coeff_si(fmpq_poly_t poly, slong n, slong x) + void fmpq_poly_set_coeff_ui(fmpq_poly_t poly, slong n, ulong x) + void fmpq_poly_set_coeff_fmpz(fmpq_poly_t poly, slong n, const fmpz_t x) + void fmpq_poly_set_coeff_fmpq(fmpq_poly_t poly, slong n, const fmpq_t x) + # void fmpq_poly_set_coeff_mpz(fmpq_poly_t rop, slong n, const mpz_t x) + # void fmpq_poly_set_coeff_mpq(fmpq_poly_t rop, slong n, const mpq_t x) + int fmpq_poly_equal(const fmpq_poly_t poly1, const fmpq_poly_t poly2) + int _fmpq_poly_equal_trunc(const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, slong n) + int fmpq_poly_equal_trunc(const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n) + int _fmpq_poly_cmp(const fmpz_struct * lpoly, const fmpz_t lden, const fmpz_struct * rpoly, const fmpz_t rden, slong len) + int fmpq_poly_cmp(const fmpq_poly_t left, const fmpq_poly_t right) + int fmpq_poly_is_one(const fmpq_poly_t poly) + int fmpq_poly_is_zero(const fmpq_poly_t poly) + int fmpq_poly_is_gen(const fmpq_poly_t poly) + void _fmpq_poly_add(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2) + void _fmpq_poly_add_can(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, int can) void fmpq_poly_add(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2) + void fmpq_poly_add_can(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2, int can) + void _fmpq_poly_add_series(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, slong n) + void _fmpq_poly_add_series_can(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, slong n, int can) + void fmpq_poly_add_series(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2, slong n) + void fmpq_poly_add_series_can(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2, slong n, int can) + void _fmpq_poly_sub(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2) + void _fmpq_poly_sub_can(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, int can) void fmpq_poly_sub(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2) - void fmpq_poly_scalar_mul_si(fmpq_poly_t rop, fmpq_poly_t op, long c) - void fmpq_poly_scalar_mul_ui(fmpq_poly_t rop, fmpq_poly_t op, ulong c) - void fmpq_poly_scalar_mul_fmpz(fmpq_poly_t rop, fmpq_poly_t op, fmpz_t c) - #void fmpq_poly_scalar_mul_mpz(fmpq_poly_t rop, fmpq_poly_t op, mpz_t c) - void fmpq_poly_scalar_mul_fmpq(fmpq_poly_t rop, fmpq_poly_t op, fmpq_t c) - void fmpq_poly_scalar_div_si(fmpq_poly_t rop, fmpq_poly_t op, long c) - void fmpq_poly_scalar_div_ui(fmpq_poly_t rop, fmpq_poly_t op, ulong c) - void fmpq_poly_scalar_div_fmpz(fmpq_poly_t rop, fmpq_poly_t op, fmpz_t c) - #void fmpq_poly_scalar_div_mpz(fmpq_poly_t rop, fmpq_poly_t op, mpz_t c) - void fmpq_poly_scalar_div_fmpq(fmpq_poly_t rop, fmpq_poly_t op, fmpq_t c) - void fmpq_poly_mul(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2) - void fmpq_poly_mullow(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2, long n) - void fmpq_poly_addmul(fmpq_poly_t rop, fmpq_poly_t op1, fmpq_poly_t op2) - void fmpq_poly_submul(fmpq_poly_t rop, fmpq_poly_t op1, fmpq_poly_t op2) - void fmpq_poly_pow(fmpq_poly_t rpoly, fmpq_poly_t poly, ulong e) - void fmpq_poly_shift_left(fmpq_poly_t res, fmpq_poly_t poly, long n) - void fmpq_poly_shift_right(fmpq_poly_t res, fmpq_poly_t poly, long n) - void fmpq_poly_divrem(fmpq_poly_t Q, fmpq_poly_t R, fmpq_poly_t poly1, fmpq_poly_t poly2) - void fmpq_poly_div(fmpq_poly_t Q, fmpq_poly_t poly1, fmpq_poly_t poly2) - void fmpq_poly_gcd(fmpq_poly_t g, fmpq_poly_t a, fmpq_poly_t b) + void fmpq_poly_sub_can(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2, int can) + void _fmpq_poly_sub_series(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, slong n) + void _fmpq_poly_sub_series_can(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, slong n, int can) + void fmpq_poly_sub_series(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2, slong n) + void fmpq_poly_sub_series_can(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2, slong n, int can) + void _fmpq_poly_scalar_mul_si(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, slong c) + void _fmpq_poly_scalar_mul_ui(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, ulong c) + void _fmpq_poly_scalar_mul_fmpz(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, const fmpz_t c) + void _fmpq_poly_scalar_mul_fmpq(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, const fmpz_t r, const fmpz_t s) + void fmpq_poly_scalar_mul_si(fmpq_poly_t rop, const fmpq_poly_t op, slong c) + void fmpq_poly_scalar_mul_ui(fmpq_poly_t rop, const fmpq_poly_t op, ulong c) + void fmpq_poly_scalar_mul_fmpz(fmpq_poly_t rop, const fmpq_poly_t op, const fmpz_t c) + # void fmpq_poly_scalar_mul_fmpq(fmpq_poly_t rop, const fmpq_poly_t op, const mpq_t c) + # void fmpq_poly_scalar_mul_mpz(fmpq_poly_t rop, const fmpq_poly_t op, const mpz_t c) + void fmpq_poly_scalar_mul_mpq(fmpq_poly_t rop, const fmpq_poly_t op, const fmpq_t c) + void _fmpq_poly_scalar_div_fmpz(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, const fmpz_t c) + void _fmpq_poly_scalar_div_si(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, slong c) + void _fmpq_poly_scalar_div_ui(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, ulong c) + void _fmpq_poly_scalar_div_fmpq(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, const fmpz_t r, const fmpz_t s) + void fmpq_poly_scalar_div_si(fmpq_poly_t rop, const fmpq_poly_t op, slong c) + void fmpq_poly_scalar_div_ui(fmpq_poly_t rop, const fmpq_poly_t op, ulong c) + void fmpq_poly_scalar_div_fmpz(fmpq_poly_t rop, const fmpq_poly_t op, const fmpz_t c) + void fmpq_poly_scalar_div_fmpq(fmpq_poly_t rop, const fmpq_poly_t op, const fmpq_t c) + # void fmpq_poly_scalar_div_mpz(fmpq_poly_t rop, const fmpq_poly_t op, const mpz_t c) + # void fmpq_poly_scalar_div_mpq(fmpq_poly_t rop, const fmpq_poly_t op, const mpq_t c) + void _fmpq_poly_mul(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2) + void fmpq_poly_mul(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2) + void _fmpq_poly_mullow(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, slong n) + void fmpq_poly_mullow(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n) + void fmpq_poly_addmul(fmpq_poly_t rop, const fmpq_poly_t op1, const fmpq_poly_t op2) + void fmpq_poly_submul(fmpq_poly_t rop, const fmpq_poly_t op1, const fmpq_poly_t op2) + void _fmpq_poly_pow(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, ulong e) + void fmpq_poly_pow(fmpq_poly_t res, const fmpq_poly_t poly, ulong e) + void _fmpq_poly_pow_trunc(fmpz_struct * res, fmpz_t rden, const fmpz_struct * f, const fmpz_t fden, slong flen, ulong exp, slong len) + void fmpq_poly_pow_trunc(fmpq_poly_t res, const fmpq_poly_t poly, ulong e, slong n) + void fmpq_poly_shift_left(fmpq_poly_t res, const fmpq_poly_t poly, slong n) + void fmpq_poly_shift_right(fmpq_poly_t res, const fmpq_poly_t poly, slong n) + # void _fmpq_poly_divrem(fmpz_struct * Q, fmpz_t q, fmpz_struct * R, fmpz_t r, const fmpz_struct * A, const fmpz_t a, slong lenA, const fmpz_struct * B, const fmpz_t b, slong lenB, const fmpz_preinvn_t inv) + void fmpq_poly_divrem(fmpq_poly_t Q, fmpq_poly_t R, const fmpq_poly_t poly1, const fmpq_poly_t poly2) + # void _fmpq_poly_div(fmpz_struct * Q, fmpz_t q, const fmpz_struct * A, const fmpz_t a, slong lenA, const fmpz_struct * B, const fmpz_t b, slong lenB, const fmpz_preinvn_t inv) + void fmpq_poly_div(fmpq_poly_t Q, const fmpq_poly_t poly1, const fmpq_poly_t poly2) + # void _fmpq_poly_rem(fmpz_struct * R, fmpz_t r, const fmpz_struct * A, const fmpz_t a, slong lenA, const fmpz_struct * B, const fmpz_t b, slong lenB, const fmpz_preinvn_t inv) + void fmpq_poly_rem(fmpq_poly_t R, const fmpq_poly_t poly1, const fmpq_poly_t poly2) + fmpq_poly_struct * _fmpq_poly_powers_precompute(const fmpz_struct * B, const fmpz_t denB, slong len) + # void fmpq_poly_powers_precompute(fmpq_poly_powers_precomp_t pinv, fmpq_poly_t poly) + void _fmpq_poly_powers_clear(fmpq_poly_struct * powers, slong len) + # void fmpq_poly_powers_clear(fmpq_poly_powers_precomp_t pinv) + void _fmpq_poly_rem_powers_precomp(fmpz_struct * A, fmpz_t denA, slong m, const fmpz_struct * B, const fmpz_t denB, slong n, const fmpq_poly_struct * const powers) + # void fmpq_poly_rem_powers_precomp(fmpq_poly_t R, const fmpq_poly_t A, const fmpq_poly_t B, const fmpq_poly_powers_precomp_t B_inv) + int _fmpq_poly_divides(fmpz_struct * qpoly, fmpz_t qden, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2) + int fmpq_poly_divides(fmpq_poly_t q, const fmpq_poly_t poly1, const fmpq_poly_t poly2) + slong fmpq_poly_remove(fmpq_poly_t q, const fmpq_poly_t poly1, const fmpq_poly_t poly2) + void _fmpq_poly_inv_series_newton(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, slong n) + void fmpq_poly_inv_series_newton(fmpq_poly_t res, const fmpq_poly_t poly, slong n) + void _fmpq_poly_inv_series(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong n) + void fmpq_poly_inv_series(fmpq_poly_t res, const fmpq_poly_t poly, slong n) + void _fmpq_poly_div_series(fmpz_struct * Q, fmpz_t denQ, const fmpz_struct * A, const fmpz_t denA, slong lenA, const fmpz_struct * B, const fmpz_t denB, slong lenB, slong n) + void fmpq_poly_div_series(fmpq_poly_t Q, const fmpq_poly_t A, const fmpq_poly_t B, slong n) + void _fmpq_poly_gcd(fmpz_struct *G, fmpz_t denG, const fmpz_struct *A, slong lenA, const fmpz_struct *B, slong lenB) + void fmpq_poly_gcd(fmpq_poly_t G, const fmpq_poly_t A, const fmpq_poly_t B) + void _fmpq_poly_xgcd(fmpz_struct *G, fmpz_t denG, fmpz_struct *S, fmpz_t denS, fmpz_struct *T, fmpz_t denT, const fmpz_struct *A, const fmpz_t denA, slong lenA, const fmpz_struct *B, const fmpz_t denB, slong lenB) void fmpq_poly_xgcd(fmpq_poly_t G, fmpq_poly_t S, fmpq_poly_t T, const fmpq_poly_t A, const fmpq_poly_t B) - void fmpq_poly_rem(fmpq_poly_t R, fmpq_poly_t poly1, fmpq_poly_t poly2) - void fmpq_poly_inv_series(fmpq_poly_t Qinv, fmpq_poly_t Q, long n) - void fmpq_poly_div_series(fmpq_poly_t Q, fmpq_poly_t A, fmpq_poly_t B, long n) - void fmpq_poly_derivative(fmpq_poly_t res, fmpq_poly_t poly) - void fmpq_poly_integral(fmpq_poly_t res, fmpq_poly_t poly) - void fmpq_poly_invsqrt_series(fmpq_poly_t res, fmpq_poly_t poly, long n) - void fmpq_poly_sqrt_series(fmpq_poly_t res, fmpq_poly_t poly, long n) - void fmpq_poly_log_series(fmpq_poly_t res, fmpq_poly_t f, long n) - void fmpq_poly_exp_series(fmpq_poly_t res, fmpq_poly_t poly, long n) - void fmpq_poly_atan_series(fmpq_poly_t res, fmpq_poly_t poly, long n) - void fmpq_poly_atanh_series(fmpq_poly_t res, fmpq_poly_t poly, long n) - void fmpq_poly_asin_series(fmpq_poly_t res, fmpq_poly_t poly, long n) - void fmpq_poly_asinh_series(fmpq_poly_t res, fmpq_poly_t poly, long n) - void fmpq_poly_tan_series(fmpq_poly_t res, fmpq_poly_t poly, long n) - void fmpq_poly_sin_series(fmpq_poly_t res, fmpq_poly_t poly, long n) - void fmpq_poly_cos_series(fmpq_poly_t res, fmpq_poly_t poly, long n) - void fmpq_poly_sinh_series(fmpq_poly_t res, fmpq_poly_t poly, long n) - void fmpq_poly_cosh_series(fmpq_poly_t res, fmpq_poly_t poly, long n) - void fmpq_poly_tanh_series(fmpq_poly_t res, fmpq_poly_t poly, long n) - void fmpq_poly_evaluate_fmpz(fmpq_t res, fmpq_poly_t poly, fmpz_t a) - void fmpq_poly_evaluate_fmpq(fmpq_t res, fmpq_poly_t poly, fmpq_t a) - # void fmpq_poly_evaluate_mpq(mpq_t res, fmpq_poly_t poly, mpq_t a) - void fmpq_poly_interpolate_fmpz_vec(fmpq_poly_t poly, fmpz_struct * xs, fmpz_struct * ys, long n) - void fmpq_poly_compose(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2) - #void fmpq_poly_rescale(fmpq_poly_t res, fmpq_poly_t poly, mpq_t x) - #void fmpq_poly_content(mpq_t res, fmpq_poly_t poly) - void fmpq_poly_primitive_part(fmpq_poly_t res, fmpq_poly_t poly) - int fmpq_poly_is_monic(fmpq_poly_t poly) - void fmpq_poly_make_monic(fmpq_poly_t res, fmpq_poly_t poly) - int fmpq_poly_is_squarefree(fmpq_poly_t poly) - int fmpq_poly_debug(fmpq_poly_t poly) - #int fmpq_poly_fprint(FILE * file, fmpq_poly_t poly) - int fmpq_poly_print(fmpq_poly_t poly) - int fmpq_poly_print_pretty(fmpq_poly_t poly, char * var) - #int fmpq_poly_fread(FILE * file, fmpq_poly_t poly) + void _fmpq_poly_lcm(fmpz_struct *L, fmpz_t denL, const fmpz_struct *A, slong lenA, const fmpz_struct *B, slong lenB) + void fmpq_poly_lcm(fmpq_poly_t L, const fmpq_poly_t A, const fmpq_poly_t B) + void _fmpq_poly_resultant(fmpz_t rnum, fmpz_t rden, const fmpz_struct *poly1, const fmpz_t den1, slong len1, const fmpz_struct *poly2, const fmpz_t den2, slong len2) + void fmpq_poly_resultant(fmpq_t r, const fmpq_poly_t f, const fmpq_poly_t g) + void fmpq_poly_resultant_div(fmpq_t r, const fmpq_poly_t f, const fmpq_poly_t g, fmpz_t div, slong nbits) + void _fmpq_poly_derivative(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len) + void fmpq_poly_derivative(fmpq_poly_t res, const fmpq_poly_t poly) + void _fmpq_poly_nth_derivative(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, ulong n, slong len) + void fmpq_poly_nth_derivative(fmpq_poly_t res, const fmpq_poly_t poly, ulong n) + void _fmpq_poly_integral(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len) + void fmpq_poly_integral(fmpq_poly_t res, const fmpq_poly_t poly) + void _fmpq_poly_sqrt_series(fmpz_struct * g, fmpz_t gden, const fmpz_struct * f, const fmpz_t fden, slong flen, slong n) + void fmpq_poly_sqrt_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) + void _fmpq_poly_invsqrt_series(fmpz_struct * g, fmpz_t gden, const fmpz_struct * f, const fmpz_t fden, slong flen, slong n) + void fmpq_poly_invsqrt_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) + void _fmpq_poly_power_sums(fmpz_struct * res, fmpz_t rden, const fmpz_struct * poly, slong len, slong n) + void fmpq_poly_power_sums(fmpq_poly_t res, const fmpq_poly_t poly, slong n) + void _fmpq_poly_power_sums_to_poly(fmpz_struct * res, const fmpz_struct * poly, const fmpz_t den, slong len) + void fmpq_poly_power_sums_to_fmpz_poly(fmpz_poly_t res, const fmpq_poly_t Q) + void fmpq_poly_power_sums_to_poly(fmpq_poly_t res, const fmpq_poly_t Q) + void _fmpq_poly_log_series(fmpz_struct * g, fmpz_t gden, const fmpz_struct * f, const fmpz_t fden, slong flen, slong n) + void fmpq_poly_log_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) + void _fmpq_poly_exp_series(fmpz_struct * g, fmpz_t gden, const fmpz_struct * h, const fmpz_t hden, slong hlen, slong n) + void fmpq_poly_exp_series(fmpq_poly_t res, const fmpq_poly_t h, slong n) + void _fmpq_poly_exp_expinv_series(fmpz_struct * res1, fmpz_t res1den, fmpz_struct * res2, fmpz_t res2den, const fmpz_struct * h, const fmpz_t hden, slong hlen, slong n) + void fmpq_poly_exp_expinv_series(fmpq_poly_t res1, fmpq_poly_t res2, const fmpq_poly_t h, slong n) + void _fmpq_poly_atan_series(fmpz_struct * g, fmpz_t gden, const fmpz_struct * f, const fmpz_t fden, slong flen, slong n) + void fmpq_poly_atan_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) + void _fmpq_poly_atanh_series(fmpz_struct * g, fmpz_t gden, const fmpz_struct * f, const fmpz_t fden, slong flen, slong n) + void fmpq_poly_atanh_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) + void _fmpq_poly_asin_series(fmpz_struct * g, fmpz_t gden, const fmpz_struct * f, const fmpz_t fden, slong flen, slong n) + void fmpq_poly_asin_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) + void _fmpq_poly_asinh_series(fmpz_struct * g, fmpz_t gden, const fmpz_struct * f, const fmpz_t fden, slong flen, slong n) + void fmpq_poly_asinh_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) + void _fmpq_poly_tan_series(fmpz_struct * g, fmpz_t gden, const fmpz_struct * f, const fmpz_t fden, slong flen, slong n) + void fmpq_poly_tan_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) + void _fmpq_poly_sin_series(fmpz_struct * g, fmpz_t gden, const fmpz_struct * f, const fmpz_t fden, slong flen, slong n) + void fmpq_poly_sin_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) + void _fmpq_poly_cos_series(fmpz_struct * g, fmpz_t gden, const fmpz_struct * f, const fmpz_t fden, slong flen, slong n) + void fmpq_poly_cos_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) + void _fmpq_poly_sin_cos_series(fmpz_struct * s, fmpz_t sden, fmpz_struct * c, fmpz_t cden, const fmpz_struct * f, const fmpz_t fden, slong flen, slong n) + void fmpq_poly_sin_cos_series(fmpq_poly_t res1, fmpq_poly_t res2, const fmpq_poly_t f, slong n) + void _fmpq_poly_sinh_series(fmpz_struct * g, fmpz_t gden, const fmpz_struct * f, const fmpz_t fden, slong flen, slong n) + void fmpq_poly_sinh_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) + void _fmpq_poly_cosh_series(fmpz_struct * g, fmpz_t gden, const fmpz_struct * f, const fmpz_t fden, slong flen, slong n) + void fmpq_poly_cosh_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) + void _fmpq_poly_sinh_cosh_series(fmpz_struct * s, fmpz_t sden, fmpz_struct * c, fmpz_t cden, const fmpz_struct * f, const fmpz_t fden, slong flen, slong n) + void fmpq_poly_sinh_cosh_series(fmpq_poly_t res1, fmpq_poly_t res2, const fmpq_poly_t f, slong n) + void _fmpq_poly_tanh_series(fmpz_struct * g, fmpz_t gden, const fmpz_struct * f, const fmpz_t fden, slong flen, slong n) + void fmpq_poly_tanh_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) + void _fmpq_poly_legendre_p(fmpq_struct * coeffs, fmpz_t den, ulong n) + void fmpq_poly_legendre_p(fmpq_poly_t poly, ulong n) + void _fmpq_poly_laguerre_l(fmpq_struct * coeffs, fmpz_t den, ulong n) + void fmpq_poly_laguerre_l(fmpq_poly_t poly, ulong n) + void _fmpq_poly_gegenbauer_c(fmpq_struct * coeffs, fmpz_t den, ulong n, const fmpq_t a) + void fmpq_poly_gegenbauer_c(fmpq_poly_t poly, ulong n, const fmpq_t a) + void _fmpq_poly_evaluate_fmpz(fmpz_t rnum, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, const fmpz_t a) + void fmpq_poly_evaluate_fmpz(fmpq_t res, const fmpq_poly_t poly, const fmpz_t a) + void _fmpq_poly_evaluate_fmpq(fmpz_t rnum, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, const fmpz_t anum, const fmpz_t aden) + void fmpq_poly_evaluate_fmpq(fmpq_t res, const fmpq_poly_t poly, const fmpq_t a) + # void fmpq_poly_evaluate_mpz(mpq_t res, const fmpq_poly_t poly, const mpz_t a) + # void fmpq_poly_evaluate_mpq(mpq_t res, const fmpq_poly_t poly, const mpq_t a) + void _fmpq_poly_interpolate_fmpz_vec(fmpz_struct * poly, fmpz_t den, const fmpz_struct * xs, const fmpz_struct * ys, slong n) + void fmpq_poly_interpolate_fmpz_vec(fmpq_poly_t poly, const fmpz_struct * xs, const fmpz_struct * ys, slong n) + void _fmpq_poly_compose(fmpz_struct * res, fmpz_t den, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2) + void fmpq_poly_compose(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2) + void _fmpq_poly_rescale(fmpz_struct * res, fmpz_t denr, const fmpz_struct * poly, const fmpz_t den, slong len, const fmpz_t anum, const fmpz_t aden) + void fmpq_poly_rescale(fmpq_poly_t res, const fmpq_poly_t poly, const fmpq_t a) + void _fmpq_poly_compose_series_horner(fmpz_struct * res, fmpz_t den, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, slong n) + void fmpq_poly_compose_series_horner(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n) + void _fmpq_poly_compose_series_brent_kung(fmpz_struct * res, fmpz_t den, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, slong n) + void fmpq_poly_compose_series_brent_kung(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n) + void _fmpq_poly_compose_series(fmpz_struct * res, fmpz_t den, const fmpz_struct * poly1, const fmpz_t den1, slong len1, const fmpz_struct * poly2, const fmpz_t den2, slong len2, slong n) + void fmpq_poly_compose_series(fmpq_poly_t res, const fmpq_poly_t poly1, const fmpq_poly_t poly2, slong n) + void _fmpq_poly_revert_series_lagrange(fmpz_struct * res, fmpz_t den, const fmpz_struct * poly1, const fmpz_t den1, slong len1, slong n) + void fmpq_poly_revert_series_lagrange(fmpq_poly_t res, const fmpq_poly_t poly, slong n) + void _fmpq_poly_revert_series_lagrange_fast(fmpz_struct * res, fmpz_t den, const fmpz_struct * poly1, const fmpz_t den1, slong len1, slong n) + void fmpq_poly_revert_series_lagrange_fast(fmpq_poly_t res, const fmpq_poly_t poly, slong n) + void _fmpq_poly_revert_series_newton(fmpz_struct * res, fmpz_t den, const fmpz_struct * poly1, const fmpz_t den1, slong len1, slong n) + void fmpq_poly_revert_series_newton(fmpq_poly_t res, const fmpq_poly_t poly, slong n) + void _fmpq_poly_revert_series(fmpz_struct * res, fmpz_t den, const fmpz_struct * poly1, const fmpz_t den1, slong len1, slong n) + void fmpq_poly_revert_series(fmpq_poly_t res, const fmpq_poly_t poly, slong n) + void _fmpq_poly_content(fmpq_t res, const fmpz_struct * poly, const fmpz_t den, slong len) + void fmpq_poly_content(fmpq_t res, const fmpq_poly_t poly) + void _fmpq_poly_primitive_part(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len) + void fmpq_poly_primitive_part(fmpq_poly_t res, const fmpq_poly_t poly) + int _fmpq_poly_is_monic(const fmpz_struct * poly, const fmpz_t den, slong len) + int fmpq_poly_is_monic(const fmpq_poly_t poly) + void _fmpq_poly_make_monic(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len) + void fmpq_poly_make_monic(fmpq_poly_t res, const fmpq_poly_t poly) + int fmpq_poly_is_squarefree(const fmpq_poly_t poly) + int _fmpq_poly_print(const fmpz_struct * poly, const fmpz_t den, slong len) + int fmpq_poly_print(const fmpq_poly_t poly) + int _fmpq_poly_print_pretty(const fmpz_struct *poly, const fmpz_t den, slong len, const char * x) + int fmpq_poly_print_pretty(const fmpq_poly_t poly, const char * var) + # int fmpq_poly_fprint_pretty(FILE * file, const fmpq_poly_t poly, const char * var) int fmpq_poly_read(fmpq_poly_t poly) - void fmpq_poly_compose_series(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2, long n) - void fmpq_poly_revert_series(fmpq_poly_t res, fmpq_poly_t poly1, long n) + + + diff --git a/src/flint/flintlib/fmpz.pxd b/src/flint/flintlib/fmpz.pxd index 4c78ec52..4779537d 100644 --- a/src/flint/flintlib/fmpz.pxd +++ b/src/flint/flintlib/fmpz.pxd @@ -1,103 +1,250 @@ -from flint._flint cimport fmpz_struct, ulong, mp_limb_t -from flint._flint cimport mp_size_t, mp_bitcnt_t +from flint.flintlib.flint cimport fmpz_struct, ulong, mp_limb_t +from flint.flintlib.flint cimport mp_size_t, mp_bitcnt_t, slong, flint_rand_t, flint_bitcnt_t +# from flint.flintlib.nmod cimport nmod_t +# from flint.flintlib.fmpz_factor cimport fmpz_factor_t cdef extern from "flint/fmpz.h": ctypedef fmpz_struct fmpz_t[1] - int COEFF_IS_MPZ(fmpz_struct v) - void fmpz_init(fmpz_t op) - void fmpz_clear(fmpz_t op) - long fmpz_get_si(fmpz_t f) - ulong fmpz_get_ui(fmpz_t f) - void fmpz_set_si(fmpz_t f, long val) + + +# from here on is parsed + # fmpz_struct PTR_TO_COEFF(__mpz_struct * ptr) + # __mpz_struct * COEFF_TO_PTR(fmpz_struct f) + int COEFF_IS_MPZ(fmpz_struct f) + # __mpz_struct * _fmpz_new_mpz(void) + void _fmpz_clear_mpz(fmpz_struct f) + void _fmpz_cleanup_mpz_content() + void _fmpz_cleanup() + # __mpz_struct * _fmpz_promote(fmpz_t f) + # __mpz_struct * _fmpz_promote_val(fmpz_t f) + void _fmpz_demote(fmpz_t f) + void _fmpz_demote_val(fmpz_t f) + void fmpz_init(fmpz_t f) + void fmpz_init2(fmpz_t f, ulong limbs) + void fmpz_clear(fmpz_t f) + void fmpz_init_set(fmpz_t f, const fmpz_t g) + void fmpz_init_set_ui(fmpz_t f, ulong g) + void fmpz_init_set_si(fmpz_t f, slong g) + void fmpz_randbits(fmpz_t f, flint_rand_t state, flint_bitcnt_t bits) + void fmpz_randtest(fmpz_t f, flint_rand_t state, flint_bitcnt_t bits) + void fmpz_randtest_unsigned(fmpz_t f, flint_rand_t state, flint_bitcnt_t bits) + void fmpz_randtest_not_zero(fmpz_t f, flint_rand_t state, flint_bitcnt_t bits) + void fmpz_randm(fmpz_t f, flint_rand_t state, const fmpz_t m) + void fmpz_randtest_mod(fmpz_t f, flint_rand_t state, const fmpz_t m) + void fmpz_randtest_mod_signed(fmpz_t f, flint_rand_t state, const fmpz_t m) + void fmpz_randprime(fmpz_t f, flint_rand_t state, flint_bitcnt_t bits, int proved) + slong fmpz_get_si(const fmpz_t f) + ulong fmpz_get_ui(const fmpz_t f) + void fmpz_get_uiui(mp_limb_t * hi, mp_limb_t * low, const fmpz_t f) + # moved to nmod.pxd + # mp_limb_t fmpz_get_nmod(const fmpz_t f, nmod_t mod) + double fmpz_get_d(const fmpz_t f) + # void fmpz_set_mpf(fmpz_t f, const mpf_t x) + # void fmpz_get_mpf(mpf_t x, const fmpz_t f) + # void fmpz_get_mpfr(mpfr_t x, const fmpz_t f, mpfr_rnd_t rnd) + double fmpz_get_d_2exp(slong * exp, const fmpz_t f) + # void fmpz_get_mpz(mpz_t x, const fmpz_t f) + # int fmpz_get_mpn(mp_ptr *n, fmpz_t n_in) + char * fmpz_get_str(char * str, int b, const fmpz_t f) + void fmpz_set_si(fmpz_t f, slong val) void fmpz_set_ui(fmpz_t f, ulong val) - #void fmpz_get_mpz(mpz_t x, fmpz_t f) - #void fmpz_set_mpz(fmpz_t f, mpz_t x) - int fmpz_set_str(fmpz_t f, char * str, int b) - int fmpz_abs_fits_ui( fmpz_t f) - void fmpz_zero(fmpz_t f) - void fmpz_one(fmpz_t f) - int fmpz_is_zero(fmpz_t f) - int fmpz_is_one( fmpz_t f) - int fmpz_is_pm1( fmpz_t f) - void fmpz_set(fmpz_t f, fmpz_t g) - int fmpz_equal(fmpz_t f, fmpz_t g) + void fmpz_set_d(fmpz_t f, double c) + void fmpz_set_d_2exp(fmpz_t f, double d, slong exp) + void fmpz_neg_ui(fmpz_t f, ulong val) + void fmpz_set_uiui(fmpz_t f, mp_limb_t hi, mp_limb_t lo) + void fmpz_neg_uiui(fmpz_t f, mp_limb_t hi, mp_limb_t lo) + void fmpz_set_signed_uiui(fmpz_t f, ulong hi, ulong lo) + void fmpz_set_signed_uiuiui(fmpz_t f, ulong hi, ulong mid, ulong lo) + void fmpz_set_ui_array(fmpz_t out, const ulong * in_, slong n) + void fmpz_set_signed_ui_array(fmpz_t out, const ulong * in_, slong n) + void fmpz_get_ui_array(ulong * out, slong n, const fmpz_t in_) + void fmpz_get_signed_ui_array(ulong * out, slong n, const fmpz_t in_) + void fmpz_get_signed_uiui(ulong * hi, ulong * lo, const fmpz_t in_) + # void fmpz_set_mpz(fmpz_t f, const mpz_t x) + int fmpz_set_str(fmpz_t f, const char * str, int b) + void fmpz_set_ui_smod(fmpz_t f, mp_limb_t x, mp_limb_t m) + # void flint_mpz_init_set_readonly(mpz_t z, const fmpz_t f) + # void flint_mpz_clear_readonly(mpz_t z) + # void fmpz_init_set_readonly(fmpz_t f, const mpz_t z) + void fmpz_clear_readonly(fmpz_t f) int fmpz_read(fmpz_t f) int fmpz_print(fmpz_t x) - size_t fmpz_sizeinbase( fmpz_t f, int b) - char * fmpz_get_str(char * str, int b, fmpz_t f) + size_t fmpz_sizeinbase(const fmpz_t f, int b) + flint_bitcnt_t fmpz_bits(const fmpz_t f) + mp_size_t fmpz_size(const fmpz_t f) + int fmpz_sgn(const fmpz_t f) + flint_bitcnt_t fmpz_val2(const fmpz_t f) void fmpz_swap(fmpz_t f, fmpz_t g) - int fmpz_cmp( fmpz_t f, fmpz_t g) - int fmpz_cmp_ui( fmpz_t f, ulong g) - int fmpz_cmp_si( fmpz_t f, long g) - int fmpz_cmpabs( fmpz_t f, fmpz_t g) - int fmpz_equal_si(const fmpz_t f, long g) - int fmpz_is_even(fmpz_t f) - int fmpz_is_odd(fmpz_t f) - mp_size_t fmpz_size(fmpz_t f) - int fmpz_sgn(fmpz_t f) - mp_bitcnt_t fmpz_bits(fmpz_t f) - void fmpz_neg(fmpz_t f1, fmpz_t f2) - void fmpz_abs(fmpz_t f1, fmpz_t f2) - void fmpz_add(fmpz_t f, fmpz_t g, fmpz_t h) - void fmpz_sub(fmpz_t f, fmpz_t g, fmpz_t h) - void fmpz_mul_ui(fmpz_t f, fmpz_t g, ulong x) - void fmpz_mul_si(fmpz_t f, fmpz_t g, long x) - void fmpz_mul(fmpz_t f, fmpz_t g, fmpz_t h) - void fmpz_mul_2exp(fmpz_t f, fmpz_t g, ulong exp) - void fmpz_add_ui(fmpz_t f, fmpz_t g, ulong x) - void fmpz_sub_ui(fmpz_t f, fmpz_t g, ulong x) - void fmpz_addmul_ui(fmpz_t f, fmpz_t g, ulong x) - void fmpz_submul_ui(fmpz_t f, fmpz_t g, ulong x) - void fmpz_addmul(fmpz_t f, fmpz_t g, fmpz_t h) - void fmpz_submul(fmpz_t f, fmpz_t g, fmpz_t h) - void fmpz_pow_ui(fmpz_t f, fmpz_t g, ulong exp) - void fmpz_powm_ui(fmpz_t f, fmpz_t g, ulong exp, fmpz_t m) - void fmpz_powm(fmpz_t f, fmpz_t g, fmpz_t e, fmpz_t m) + void fmpz_set(fmpz_t f, const fmpz_t g) + void fmpz_zero(fmpz_t f) + void fmpz_one(fmpz_t f) + int fmpz_abs_fits_ui(const fmpz_t f) + int fmpz_fits_si(const fmpz_t f) + void fmpz_setbit(fmpz_t f, ulong i) + int fmpz_tstbit(const fmpz_t f, ulong i) + mp_limb_t fmpz_abs_lbound_ui_2exp(slong * exp, const fmpz_t x, int bits) + mp_limb_t fmpz_abs_ubound_ui_2exp(slong * exp, const fmpz_t x, int bits) + int fmpz_cmp(const fmpz_t f, const fmpz_t g) + int fmpz_cmp_ui(const fmpz_t f, ulong g) + int fmpz_cmp_si(const fmpz_t f, slong g) + int fmpz_cmpabs(const fmpz_t f, const fmpz_t g) + int fmpz_cmp2abs(const fmpz_t f, const fmpz_t g) + int fmpz_equal(const fmpz_t f, const fmpz_t g) + int fmpz_equal_ui(const fmpz_t f, ulong g) + int fmpz_equal_si(const fmpz_t f, slong g) + int fmpz_is_zero(const fmpz_t f) + int fmpz_is_one(const fmpz_t f) + int fmpz_is_pm1(const fmpz_t f) + int fmpz_is_even(const fmpz_t f) + int fmpz_is_odd(const fmpz_t f) + void fmpz_neg(fmpz_t f1, const fmpz_t f2) + void fmpz_abs(fmpz_t f1, const fmpz_t f2) + void fmpz_add(fmpz_t f, const fmpz_t g, const fmpz_t h) + void fmpz_add_ui(fmpz_t f, const fmpz_t g, ulong h) + void fmpz_add_si(fmpz_t f, const fmpz_t g, slong h) + void fmpz_sub(fmpz_t f, const fmpz_t g, const fmpz_t h) + void fmpz_sub_ui(fmpz_t f, const fmpz_t g, ulong h) + void fmpz_sub_si(fmpz_t f, const fmpz_t g, slong h) + void fmpz_mul(fmpz_t f, const fmpz_t g, const fmpz_t h) + void fmpz_mul_ui(fmpz_t f, const fmpz_t g, ulong h) + void fmpz_mul_si(fmpz_t f, const fmpz_t g, slong h) + void fmpz_mul2_uiui(fmpz_t f, const fmpz_t g, ulong x, ulong y) + void fmpz_mul_2exp(fmpz_t f, const fmpz_t g, ulong e) + void fmpz_one_2exp(fmpz_t f, ulong e) + void fmpz_addmul(fmpz_t f, const fmpz_t g, const fmpz_t h) + void fmpz_addmul_ui(fmpz_t f, const fmpz_t g, ulong h) + void fmpz_addmul_si(fmpz_t f, const fmpz_t g, slong h) + void fmpz_submul(fmpz_t f, const fmpz_t g, const fmpz_t h) + void fmpz_submul_ui(fmpz_t f, const fmpz_t g, ulong h) + void fmpz_submul_si(fmpz_t f, const fmpz_t g, slong h) + void fmpz_fmma(fmpz_t f, const fmpz_t a, const fmpz_t b, const fmpz_t c, const fmpz_t d) + void fmpz_fmms(fmpz_t f, const fmpz_t a, const fmpz_t b, const fmpz_t c, const fmpz_t d) + void fmpz_cdiv_qr(fmpz_t f, fmpz_t s, const fmpz_t g, const fmpz_t h) + void fmpz_fdiv_qr(fmpz_t f, fmpz_t s, const fmpz_t g, const fmpz_t h) + void fmpz_tdiv_qr(fmpz_t f, fmpz_t s, const fmpz_t g, const fmpz_t h) + void fmpz_ndiv_qr(fmpz_t f, fmpz_t s, const fmpz_t g, const fmpz_t h) + void fmpz_cdiv_q(fmpz_t f, const fmpz_t g, const fmpz_t h) + void fmpz_fdiv_q(fmpz_t f, const fmpz_t g, const fmpz_t h) + void fmpz_tdiv_q(fmpz_t f, const fmpz_t g, const fmpz_t h) + void fmpz_cdiv_q_si(fmpz_t f, const fmpz_t g, slong h) + void fmpz_fdiv_q_si(fmpz_t f, const fmpz_t g, slong h) + void fmpz_tdiv_q_si(fmpz_t f, const fmpz_t g, slong h) + void fmpz_cdiv_q_ui(fmpz_t f, const fmpz_t g, ulong h) + void fmpz_fdiv_q_ui(fmpz_t f, const fmpz_t g, ulong h) + void fmpz_tdiv_q_ui(fmpz_t f, const fmpz_t g, ulong h) + void fmpz_cdiv_q_2exp(fmpz_t f, const fmpz_t g, ulong exp) + void fmpz_fdiv_q_2exp(fmpz_t f, const fmpz_t g, ulong exp) + void fmpz_tdiv_q_2exp(fmpz_t f, const fmpz_t g, ulong exp) + void fmpz_fdiv_r(fmpz_t s, const fmpz_t g, const fmpz_t h) + void fmpz_cdiv_r_2exp(fmpz_t s, const fmpz_t g, ulong exp) + void fmpz_fdiv_r_2exp(fmpz_t s, const fmpz_t g, ulong exp) + void fmpz_tdiv_r_2exp(fmpz_t s, const fmpz_t g, ulong exp) + ulong fmpz_cdiv_ui(const fmpz_t g, ulong h) + ulong fmpz_fdiv_ui(const fmpz_t g, ulong h) + ulong fmpz_tdiv_ui(const fmpz_t g, ulong h) + void fmpz_divexact(fmpz_t f, const fmpz_t g, const fmpz_t h) + void fmpz_divexact_si(fmpz_t f, const fmpz_t g, slong h) + void fmpz_divexact_ui(fmpz_t f, const fmpz_t g, ulong h) + void fmpz_divexact2_uiui(fmpz_t f, const fmpz_t g, ulong x, ulong y) + int fmpz_divisible(const fmpz_t f, const fmpz_t g) + int fmpz_divisible_si(const fmpz_t f, slong g) + int fmpz_divides(fmpz_t q, const fmpz_t g, const fmpz_t h) + void fmpz_mod(fmpz_t f, const fmpz_t g, const fmpz_t h) + ulong fmpz_mod_ui(fmpz_t f, const fmpz_t g, ulong h) + void fmpz_smod(fmpz_t f, const fmpz_t g, const fmpz_t h) + # void fmpz_preinvn_init(fmpz_preinvn_t inv, const fmpz_t f) + # void fmpz_preinvn_clear(fmpz_preinvn_t inv) + # void fmpz_fdiv_qr_preinvn(fmpz_t f, fmpz_t s, const fmpz_t g, const fmpz_t h, const fmpz_preinvn_t hinv) + void fmpz_pow_ui(fmpz_t f, const fmpz_t g, ulong x) int fmpz_pow_fmpz(fmpz_t f, const fmpz_t g, const fmpz_t x) - int fmpz_sqrtmod(fmpz_t b, fmpz_t a, fmpz_t p) - void fmpz_sqrt(fmpz_t f, fmpz_t g) - void fmpz_sqrtrem(fmpz_t f, fmpz_t r, fmpz_t g) - void fmpz_root(fmpz_t r, const fmpz_t f, long n) - ulong fmpz_fdiv_ui(fmpz_t g, ulong h) - ulong fmpz_mod_ui(fmpz_t f, fmpz_t g, ulong h) - void fmpz_mod(fmpz_t f, fmpz_t g, fmpz_t h) - void fmpz_gcd(fmpz_t f, fmpz_t g, fmpz_t h) - void fmpz_lcm(fmpz_t f, fmpz_t g, fmpz_t h) - int fmpz_invmod(fmpz_t f, fmpz_t g, fmpz_t h) - long fmpz_remove(fmpz_t rop, fmpz_t op, fmpz_t f) - void fmpz_divexact(fmpz_t f, fmpz_t g, fmpz_t h) - void fmpz_divexact_si(fmpz_t f, fmpz_t g, long h) - void fmpz_divexact_ui(fmpz_t f, fmpz_t g, ulong h) - void fmpz_cdiv_q(fmpz_t f, fmpz_t g, fmpz_t h) - void fmpz_cdiv_q_si(fmpz_t f, fmpz_t g, long h) - void fmpz_cdiv_q_ui(fmpz_t f, fmpz_t g, ulong h) - void fmpz_fdiv_qr(fmpz_t f, fmpz_t s, fmpz_t g, fmpz_t h) - void fmpz_fdiv_q(fmpz_t f, fmpz_t g, fmpz_t h) - void fmpz_fdiv_r(fmpz_t f, fmpz_t g, fmpz_t h) - void fmpz_fdiv_q_ui(fmpz_t f, fmpz_t g, ulong h) - void fmpz_fdiv_q_si(fmpz_t f, fmpz_t g, long h) - void fmpz_fdiv_q_2exp(fmpz_t f, fmpz_t g, ulong exp) - void fmpz_tdiv_q(fmpz_t f, fmpz_t g, fmpz_t h) - void fmpz_tdiv_q_ui(fmpz_t f, fmpz_t g, ulong h) - void fmpz_tdiv_q_si(fmpz_t f, fmpz_t g, long h) - double fmpz_get_d_2exp(long * exp, fmpz_t f) - void fmpz_mul2_uiui(fmpz_t f, fmpz_t g, ulong h1, ulong h2) - void fmpz_divexact2_uiui(fmpz_t f, fmpz_t g, ulong h1, ulong h2) + void fmpz_powm_ui(fmpz_t f, const fmpz_t g, ulong e, const fmpz_t m) + void fmpz_powm(fmpz_t f, const fmpz_t g, const fmpz_t e, const fmpz_t m) + slong fmpz_clog(const fmpz_t x, const fmpz_t b) + slong fmpz_clog_ui(const fmpz_t x, ulong b) + slong fmpz_flog(const fmpz_t x, const fmpz_t b) + slong fmpz_flog_ui(const fmpz_t x, ulong b) + double fmpz_dlog(const fmpz_t x) + int fmpz_sqrtmod(fmpz_t b, const fmpz_t a, const fmpz_t p) + void fmpz_sqrt(fmpz_t f, const fmpz_t g) + void fmpz_sqrtrem(fmpz_t f, fmpz_t r, const fmpz_t g) + int fmpz_is_square(const fmpz_t f) + int fmpz_root(fmpz_t r, const fmpz_t f, slong n) + int fmpz_is_perfect_power(fmpz_t root, const fmpz_t f) void fmpz_fac_ui(fmpz_t f, ulong n) - void fmpz_bin_uiui(fmpz_t res, ulong n, ulong k) - void fmpz_CRT_ui(fmpz_t out, fmpz_t r1, fmpz_t m1, ulong r2, ulong m2) - void fmpz_CRT_ui_unsigned(fmpz_t out, fmpz_t r1, fmpz_t m1, ulong r2, ulong m2) - void fmpz_set_ui_mod(fmpz_t f, mp_limb_t x, mp_limb_t m) - int fmpz_moebius_mu(const fmpz_t f) void fmpz_fib_ui(fmpz_t f, ulong n) - void fmpz_rfac_ui(fmpz_t r, const fmpz_t x, ulong n) - void fmpz_rfac_uiui(fmpz_t r, ulong x, ulong n) - void fmpz_primorial(fmpz_t res, ulong n) - int fmpz_is_perfect_power(fmpz_t root, const fmpz_t f) - int fmpz_jacobi(const fmpz_t a, const fmpz_t p) - int fmpz_is_prime(const fmpz_t n) - int fmpz_is_probabprime(const fmpz_t n) + void fmpz_bin_uiui(fmpz_t f, ulong n, ulong k) + void _fmpz_rfac_ui(fmpz_t r, const fmpz_t x, ulong a, ulong b) + void fmpz_rfac_ui(fmpz_t r, const fmpz_t x, ulong k) + void fmpz_rfac_uiui(fmpz_t r, ulong x, ulong k) + void fmpz_mul_tdiv_q_2exp(fmpz_t f, const fmpz_t g, const fmpz_t h, ulong exp) + void fmpz_mul_si_tdiv_q_2exp(fmpz_t f, const fmpz_t g, slong x, ulong exp) + void fmpz_gcd_ui(fmpz_t f, const fmpz_t g, ulong h) + void fmpz_gcd(fmpz_t f, const fmpz_t g, const fmpz_t h) + void fmpz_gcd3(fmpz_t f, const fmpz_t a, const fmpz_t b, const fmpz_t c) + void fmpz_lcm(fmpz_t f, const fmpz_t g, const fmpz_t h) + void fmpz_gcdinv(fmpz_t d, fmpz_t a, const fmpz_t f, const fmpz_t g) + void fmpz_xgcd(fmpz_t d, fmpz_t a, fmpz_t b, const fmpz_t f, const fmpz_t g) + void fmpz_xgcd_canonical_bezout(fmpz_t d, fmpz_t a, fmpz_t b, const fmpz_t f, const fmpz_t g) + void fmpz_xgcd_partial(fmpz_t co2, fmpz_t co1, fmpz_t r2, fmpz_t r1, const fmpz_t L) + slong _fmpz_remove(fmpz_t x, const fmpz_t f, double finv) + slong fmpz_remove(fmpz_t rop, const fmpz_t op, const fmpz_t f) + int fmpz_invmod(fmpz_t f, const fmpz_t g, const fmpz_t h) + void fmpz_negmod(fmpz_t f, const fmpz_t g, const fmpz_t h) + int fmpz_jacobi(const fmpz_t a, const fmpz_t n) + int fmpz_kronecker(const fmpz_t a, const fmpz_t n) + void fmpz_divides_mod_list(fmpz_t xstart, fmpz_t xstride, fmpz_t xlength, const fmpz_t a, const fmpz_t b, const fmpz_t n) + int fmpz_bit_pack(mp_limb_t * arr, flint_bitcnt_t shift, flint_bitcnt_t bits, fmpz_t coeff, int negate, int borrow) + int fmpz_bit_unpack(fmpz_t coeff, mp_limb_t * arr, flint_bitcnt_t shift, flint_bitcnt_t bits, int negate, int borrow) + void fmpz_bit_unpack_unsigned(fmpz_t coeff, const mp_limb_t * arr, flint_bitcnt_t shift, flint_bitcnt_t bits) void fmpz_complement(fmpz_t r, const fmpz_t f) + void fmpz_clrbit(fmpz_t f, ulong i) + void fmpz_combit(fmpz_t f, ulong i) void fmpz_and(fmpz_t r, const fmpz_t a, const fmpz_t b) void fmpz_or(fmpz_t r, const fmpz_t a, const fmpz_t b) void fmpz_xor(fmpz_t r, const fmpz_t a, const fmpz_t b) + int fmpz_popcnt(const fmpz_t a) + void fmpz_CRT_ui(fmpz_t out, fmpz_t r1, fmpz_t m1, ulong r2, ulong m2, int sign) + void fmpz_CRT(fmpz_t out, const fmpz_t r1, const fmpz_t m1, fmpz_t r2, fmpz_t m2, int sign) + # void fmpz_multi_mod_ui(mp_limb_t * out, const fmpz_t in_, const fmpz_comb_t comb, fmpz_comb_temp_t temp) + # void fmpz_multi_CRT_ui(fmpz_t output, mp_srcptr residues, const fmpz_comb_t comb, fmpz_comb_temp_t ctemp, int sign) + # void fmpz_comb_init(fmpz_comb_t comb, mp_srcptr primes, slong num_primes) + # void fmpz_comb_temp_init(fmpz_comb_temp_t temp, const fmpz_comb_t comb) + # void fmpz_comb_clear(fmpz_comb_t comb) + # void fmpz_comb_temp_clear(fmpz_comb_temp_t temp) + # void fmpz_multi_crt_init(fmpz_multi_crt_t CRT) + # int fmpz_multi_crt_precompute(fmpz_multi_crt_t CRT, const fmpz_struct * moduli, slong len) + # int fmpz_multi_crt_precompute_p(fmpz_multi_crt_t CRT, const fmpz_struct * const * moduli, slong len) + # void fmpz_multi_crt_precomp(fmpz_t output, const fmpz_multi_crt_t P, const fmpz_struct * inputs) + # void fmpz_multi_crt_precomp_p(fmpz_t output, const fmpz_multi_crt_t P, const fmpz_struct * const * inputs) + int fmpz_multi_crt(fmpz_t output, const fmpz_struct * moduli, const fmpz_struct * values, slong len) + # void fmpz_multi_crt_clear(fmpz_multi_crt_t P) + # slong _nmod_poly_crt_local_size(const nmod_poly_crt_t CRT) + # void _fmpz_multi_crt_run(fmpz_struct * outputs, const fmpz_multi_crt_t CRT, const fmpz_struct * inputs) + # void _fmpz_multi_crt_run_p(fmpz_struct * outputs, const fmpz_multi_crt_t CRT, const fmpz_struct * const * inputs) + int fmpz_is_strong_probabprime(const fmpz_t n, const fmpz_t a) + int fmpz_is_probabprime_lucas(const fmpz_t n) + int fmpz_is_probabprime_BPSW(const fmpz_t n) + int fmpz_is_probabprime(const fmpz_t p) + int fmpz_is_prime_pseudosquare(const fmpz_t n) + # int fmpz_is_prime_pocklington(fmpz_t F, fmpz_t R, const fmpz_t n, mp_ptr pm1, slong num_pm1) + # void _fmpz_nm1_trial_factors(const fmpz_t n, mp_ptr pm1, slong * num_pm1, ulong limit) + # int fmpz_is_prime_morrison(fmpz_t F, fmpz_t R, const fmpz_t n, mp_ptr pp1, slong num_pp1) + # void _fmpz_np1_trial_factors(const fmpz_t n, mp_ptr pp1, slong * num_pp1, ulong limit) + int fmpz_is_prime(const fmpz_t n) + void fmpz_lucas_chain(fmpz_t Vm, fmpz_t Vm1, const fmpz_t A, const fmpz_t m, const fmpz_t n) + void fmpz_lucas_chain_full(fmpz_t Vm, fmpz_t Vm1, const fmpz_t A, const fmpz_t B, const fmpz_t m, const fmpz_t n) + 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) + 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) + 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) + 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) + int fmpz_divisor_in_residue_class_lenstra(fmpz_t fac, const fmpz_t n, const fmpz_t r, const fmpz_t s) + void fmpz_nextprime(fmpz_t res, const fmpz_t n, int proved) + void fmpz_primorial(fmpz_t res, ulong n) + # void fmpz_factor_euler_phi(fmpz_t res, const fmpz_factor_t fac) + void fmpz_euler_phi(fmpz_t res, const fmpz_t n) + # int fmpz_factor_moebius_mu(const fmpz_factor_t fac) + int fmpz_moebius_mu(const fmpz_t n) + # void fmpz_factor_divisor_sigma(fmpz_t res, ulong k, const fmpz_factor_t fac) + void fmpz_divisor_sigma(fmpz_t res, ulong k, const fmpz_t n) + + diff --git a/src/flint/flintlib/fmpz_factor.pxd b/src/flint/flintlib/fmpz_factor.pxd index f87316ba..f7618faa 100644 --- a/src/flint/flintlib/fmpz_factor.pxd +++ b/src/flint/flintlib/fmpz_factor.pxd @@ -1,4 +1,4 @@ -from flint._flint cimport fmpz_struct, ulong +from flint.flintlib.flint cimport fmpz_struct, ulong, mp_limb_t, slong, flint_rand_t from flint.flintlib.fmpz cimport fmpz_t cdef extern from "flint/fmpz_factor.h": @@ -9,10 +9,39 @@ cdef extern from "flint/fmpz_factor.h": long alloc long num ctypedef fmpz_factor_struct fmpz_factor_t[1] + +# from here on is parsed void fmpz_factor_init(fmpz_factor_t factor) void fmpz_factor_clear(fmpz_factor_t factor) - void fmpz_factor(fmpz_factor_t factor, fmpz_t n) + void _fmpz_factor_append_ui(fmpz_factor_t factor, mp_limb_t p, ulong exp) + void _fmpz_factor_append(fmpz_factor_t factor, const fmpz_t p, ulong exp) + void fmpz_factor(fmpz_factor_t factor, const fmpz_t n) + int fmpz_factor_smooth(fmpz_factor_t factor, const fmpz_t n, slong bits, int proved) + void fmpz_factor_si(fmpz_factor_t factor, slong n) int fmpz_factor_trial_range(fmpz_factor_t factor, const fmpz_t n, ulong start, ulong num_primes) + int fmpz_factor_trial(fmpz_factor_t factor, const fmpz_t n, slong num_primes) + void fmpz_factor_refine(fmpz_factor_t res, const fmpz_factor_t f) + void fmpz_factor_expand_iterative(fmpz_t n, const fmpz_factor_t factor) + int fmpz_factor_pp1(fmpz_t factor, const fmpz_t n, ulong B1, ulong B2_sqrt, ulong c) + int fmpz_factor_pollard_brent_single(fmpz_t p_factor, fmpz_t n_in, fmpz_t yi, fmpz_t ai, mp_limb_t max_iters) + int fmpz_factor_pollard_brent(fmpz_t factor, flint_rand_t state, fmpz_t n, mp_limb_t max_tries, mp_limb_t max_iters) + # void fmpz_factor_ecm_init(ecm_t ecm_inf, mp_limb_t sz) + # void fmpz_factor_ecm_clear(ecm_t ecm_inf) + # void fmpz_factor_ecm_addmod(mp_ptr a, mp_ptr b, mp_ptr c, mp_ptr n, mp_limb_t n_size) + # void fmpz_factor_ecm_submod(mp_ptr x, mp_ptr a, mp_ptr b, mp_ptr n, mp_limb_t n_size) + # void fmpz_factor_ecm_double(mp_ptr x, mp_ptr z, mp_ptr x0, mp_ptr z0, mp_ptr n, ecm_t ecm_inf) + # void fmpz_factor_ecm_add(mp_ptr x, mp_ptr z, mp_ptr x1, mp_ptr z1, mp_ptr x2, mp_ptr z2, mp_ptr x0, mp_ptr z0, mp_ptr n, ecm_t ecm_inf) + # void fmpz_factor_ecm_mul_montgomery_ladder(mp_ptr x, mp_ptr z, mp_ptr x0, mp_ptr z0, mp_limb_t k, mp_ptr n, ecm_t ecm_inf) + # int fmpz_factor_ecm_select_curve(mp_ptr f, mp_ptr sigma, mp_ptr n, ecm_t ecm_inf) + # int fmpz_factor_ecm_stage_I(mp_ptr f, const mp_limb_t *prime_array, mp_limb_t num, mp_limb_t B1, mp_ptr n, ecm_t ecm_inf) + # int fmpz_factor_ecm_stage_II(mp_ptr f, mp_limb_t B1, mp_limb_t B2, mp_limb_t P, mp_ptr n, ecm_t ecm_inf) + # int fmpz_factor_ecm(fmpz_t f, mp_limb_t curves, mp_limb_t B1, mp_limb_t B2, flint_rand_t state, fmpz_t n_in) + + +# this function wasn't in the doc void fmpz_factor_expand(fmpz_t n, const fmpz_factor_t factor) - void _fmpz_factor_append(fmpz_factor_t factor, const fmpz_t p, ulong exp) - void fmpz_factor_smooth(fmpz_factor_t factor, fmpz_t n, long bits, int proved) + +cdef extern from "flint/fmpz.h": + void fmpz_factor_euler_phi(fmpz_t res, const fmpz_factor_t fac) + int fmpz_factor_moebius_mu(const fmpz_factor_t fac) + void fmpz_factor_divisor_sigma(fmpz_t res, ulong k, const fmpz_factor_t fac) diff --git a/src/flint/flintlib/fmpz_lll.pxd b/src/flint/flintlib/fmpz_lll.pxd index 864c2810..7da0e42b 100644 --- a/src/flint/flintlib/fmpz_lll.pxd +++ b/src/flint/flintlib/fmpz_lll.pxd @@ -1,4 +1,6 @@ from flint.flintlib.fmpz_mat cimport fmpz_mat_t +from flint.flintlib.flint cimport flint_rand_t, slong, flint_bitcnt_t +from flint.flintlib.fmpz cimport fmpz_t cdef extern from "flint/fmpz_lll.h": ctypedef struct fmpz_lll_struct: @@ -8,6 +10,39 @@ cdef extern from "flint/fmpz_lll.h": int gt ctypedef fmpz_lll_struct fmpz_lll_t[1] + ctypedef int gram_type + ctypedef int rep_type - void fmpz_lll_context_init(fmpz_lll_t fl, double delta, double eta, int rt, int gt) +# from here on is parsed + void fmpz_lll_context_init_default(fmpz_lll_t fl) + void fmpz_lll_context_init(fmpz_lll_t fl, double delta, double eta, rep_type rt, gram_type gt) + void fmpz_lll_randtest(fmpz_lll_t fl, flint_rand_t state) + double fmpz_lll_heuristic_dot(const double * vec1, const double * vec2, slong len2, const fmpz_mat_t B, slong k, slong j, slong exp_adj) + # int fmpz_lll_check_babai(int kappa, fmpz_mat_t B, fmpz_mat_t U, d_mat_t mu, d_mat_t r, double *s, d_mat_t appB, int *expo, fmpz_gram_t A, int a, int zeros, int kappamax, int n, const fmpz_lll_t fl) + # int fmpz_lll_check_babai_heuristic_d(int kappa, fmpz_mat_t B, fmpz_mat_t U, d_mat_t mu, d_mat_t r, double *s, d_mat_t appB, int *expo, fmpz_gram_t A, int a, int zeros, int kappamax, int n, const fmpz_lll_t fl) + # int fmpz_lll_check_babai_heuristic(int kappa, fmpz_mat_t B, fmpz_mat_t U, mpf_mat_t mu, mpf_mat_t r, mpf *s, mpf_mat_t appB, fmpz_gram_t A, int a, int zeros, int kappamax, int n, mpf_t tmp, mpf_t rtmp, flint_bitcnt_t prec, const fmpz_lll_t fl) + # int fmpz_lll_advance_check_babai(int cur_kappa, int kappa, fmpz_mat_t B, fmpz_mat_t U, d_mat_t mu, d_mat_t r, double *s, d_mat_t appB, int *expo, fmpz_gram_t A, int a, int zeros, int kappamax, int n, const fmpz_lll_t fl) + # int fmpz_lll_advance_check_babai_heuristic_d(int cur_kappa, int kappa, fmpz_mat_t B, fmpz_mat_t U, d_mat_t mu, d_mat_t r, double *s, d_mat_t appB, int *expo, fmpz_gram_t A, int a, int zeros, int kappamax, int n, const fmpz_lll_t fl) + int fmpz_lll_shift(const fmpz_mat_t B) + int fmpz_lll_d(fmpz_mat_t B, fmpz_mat_t U, const fmpz_lll_t fl) + int fmpz_lll_d_heuristic(fmpz_mat_t B, fmpz_mat_t U, const fmpz_lll_t fl) + int fmpz_lll_mpf2(fmpz_mat_t B, fmpz_mat_t U, flint_bitcnt_t prec, const fmpz_lll_t fl) + int fmpz_lll_mpf(fmpz_mat_t B, fmpz_mat_t U, const fmpz_lll_t fl) + int fmpz_lll_wrapper(fmpz_mat_t B, fmpz_mat_t U, const fmpz_lll_t fl) + int fmpz_lll_d_with_removal(fmpz_mat_t B, fmpz_mat_t U, const fmpz_t gs_B, const fmpz_lll_t fl) + 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) + 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) + int fmpz_lll_mpf_with_removal(fmpz_mat_t B, fmpz_mat_t U, const fmpz_t gs_B, const fmpz_lll_t fl) + int fmpz_lll_wrapper_with_removal(fmpz_mat_t B, fmpz_mat_t U, const fmpz_t gs_B, const fmpz_lll_t fl) + 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) + 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) + 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) + int fmpz_lll_is_reduced_d(const fmpz_mat_t B, const fmpz_lll_t fl) + int fmpz_lll_is_reduced_mpfr(const fmpz_mat_t B, const fmpz_lll_t fl, flint_bitcnt_t prec) + int fmpz_lll_is_reduced_d_with_removal(const fmpz_mat_t B, const fmpz_lll_t fl, const fmpz_t gs_B, int newd) + int 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) + int fmpz_lll_is_reduced(const fmpz_mat_t B, const fmpz_lll_t fl, flint_bitcnt_t prec) + int 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) + void fmpz_lll_storjohann_ulll(fmpz_mat_t FM, slong new_size, const fmpz_lll_t fl) void fmpz_lll(fmpz_mat_t B, fmpz_mat_t U, const fmpz_lll_t fl) + int fmpz_lll_with_removal(fmpz_mat_t B, fmpz_mat_t U, const fmpz_t gs_B, const fmpz_lll_t fl) diff --git a/src/flint/flintlib/fmpz_mat.pxd b/src/flint/flintlib/fmpz_mat.pxd index 2ad7eaf1..b8cd22f6 100644 --- a/src/flint/flintlib/fmpz_mat.pxd +++ b/src/flint/flintlib/fmpz_mat.pxd @@ -1,7 +1,8 @@ -from flint._flint cimport flint_rand_t, mp_bitcnt_t, ulong +from flint.flintlib.flint cimport flint_rand_t, mp_bitcnt_t, ulong, slong, flint_bitcnt_t, mp_limb_t from flint.flintlib.fmpz cimport fmpz_struct, fmpz_t from flint.flintlib.fmpz_poly cimport fmpz_poly_t from flint.flintlib.nmod_mat cimport nmod_mat_t +from flint.flintlib.fmpq cimport fmpq_t cdef extern from "flint/fmpz_mat.h": ctypedef struct fmpz_mat_struct: @@ -10,49 +11,211 @@ cdef extern from "flint/fmpz_mat.h": long c fmpz_struct ** rows ctypedef fmpz_mat_struct fmpz_mat_t[1] - fmpz_struct * 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_init(fmpz_mat_t mat, long rows, long cols) - void fmpz_mat_init_set(fmpz_mat_t mat, fmpz_mat_t src) - void fmpz_mat_swap(fmpz_mat_t mat1, fmpz_mat_t mat2) - void fmpz_mat_set(fmpz_mat_t mat1, fmpz_mat_t mat2) + +# from here on is parsed + void fmpz_mat_init(fmpz_mat_t mat, slong rows, slong cols) void fmpz_mat_clear(fmpz_mat_t mat) - int fmpz_mat_equal(fmpz_mat_t mat1, fmpz_mat_t mat2) - int fmpz_mat_is_zero( fmpz_mat_t mat) - int fmpz_mat_is_empty( fmpz_mat_t mat) - int fmpz_mat_is_square( fmpz_mat_t mat) + void fmpz_mat_set(fmpz_mat_t mat1, const fmpz_mat_t mat2) + void fmpz_mat_init_set(fmpz_mat_t mat, const fmpz_mat_t src) + void fmpz_mat_swap(fmpz_mat_t mat1, fmpz_mat_t mat2) + void fmpz_mat_swap_entrywise(fmpz_mat_t mat1, fmpz_mat_t mat2) + fmpz_struct * fmpz_mat_entry(fmpz_mat_t mat, slong i, slong j) void fmpz_mat_zero(fmpz_mat_t mat) void fmpz_mat_one(fmpz_mat_t mat) - void fmpz_mat_get_nmod_mat(nmod_mat_t mat, fmpz_mat_t mat2) - void fmpz_mat_randbits(fmpz_mat_t mat, flint_rand_t state, mp_bitcnt_t bits) - void fmpz_mat_randtest(fmpz_mat_t mat, flint_rand_t state, mp_bitcnt_t bits) - void fmpz_mat_randtest_unsigned(fmpz_mat_t mat, flint_rand_t state, mp_bitcnt_t bits) - void fmpz_mat_randrank(fmpz_mat_t mat, flint_rand_t state, long rank, mp_bitcnt_t bits) - int fmpz_mat_print_pretty( fmpz_mat_t mat) - void fmpz_mat_transpose(fmpz_mat_t B, fmpz_mat_t A) - void fmpz_mat_add(fmpz_mat_t C, fmpz_mat_t A, fmpz_mat_t B) - void fmpz_mat_sub(fmpz_mat_t C, fmpz_mat_t A, fmpz_mat_t B) - void fmpz_mat_neg(fmpz_mat_t B, fmpz_mat_t A) - void fmpz_mat_scalar_mul_fmpz(fmpz_mat_t B, fmpz_mat_t A, fmpz_t c) - void fmpz_mat_scalar_mul_si(fmpz_mat_t B, fmpz_mat_t A, long c) - void fmpz_mat_scalar_mul_ui(fmpz_mat_t B, fmpz_mat_t A, ulong c) - void fmpz_mat_mul(fmpz_mat_t C, fmpz_mat_t A, fmpz_mat_t B) - void fmpz_mat_det(fmpz_t det, fmpz_mat_t A) - long fmpz_mat_rank(fmpz_mat_t A) - long fmpz_mat_rref(fmpz_mat_t R, fmpz_t den, fmpz_mat_t A) - void fmpz_mat_inv(fmpz_mat_t B, fmpz_t den, fmpz_mat_t A) - int fmpz_mat_solve(fmpz_mat_t X, fmpz_t den, fmpz_mat_t A, fmpz_mat_t B) - long fmpz_mat_nullspace(fmpz_mat_t res, fmpz_mat_t mat) - void fmpz_mat_pow(fmpz_mat_t A, fmpz_mat_t B, ulong e) - int fmpz_mat_is_hadamard(const fmpz_mat_t A) - int fmpz_mat_hadamard(fmpz_mat_t A) - + void fmpz_mat_swap_rows(fmpz_mat_t mat, slong * perm, slong r, slong s) + void fmpz_mat_swap_cols(fmpz_mat_t mat, slong * perm, slong r, slong s) + void fmpz_mat_invert_rows(fmpz_mat_t mat, slong * perm) + void fmpz_mat_invert_cols(fmpz_mat_t mat, slong * perm) + void fmpz_mat_window_init(fmpz_mat_t window, const fmpz_mat_t mat, slong r1, slong c1, slong r2, slong c2) + void fmpz_mat_window_clear(fmpz_mat_t window) + void fmpz_mat_randbits(fmpz_mat_t mat, flint_rand_t state, flint_bitcnt_t bits) + void fmpz_mat_randtest(fmpz_mat_t mat, flint_rand_t state, flint_bitcnt_t bits) + void fmpz_mat_randintrel(fmpz_mat_t mat, flint_rand_t state, flint_bitcnt_t bits) + void fmpz_mat_randsimdioph(fmpz_mat_t mat, flint_rand_t state, flint_bitcnt_t bits, flint_bitcnt_t bits2) + void fmpz_mat_randntrulike(fmpz_mat_t mat, flint_rand_t state, flint_bitcnt_t bits, ulong q) + void fmpz_mat_randntrulike2(fmpz_mat_t mat, flint_rand_t state, flint_bitcnt_t bits, ulong q) + void fmpz_mat_randajtai(fmpz_mat_t mat, flint_rand_t state, double alpha) + int fmpz_mat_randpermdiag(fmpz_mat_t mat, flint_rand_t state, const fmpz_struct * diag, slong n) + void fmpz_mat_randrank(fmpz_mat_t mat, flint_rand_t state, slong rank, flint_bitcnt_t bits) + void fmpz_mat_randdet(fmpz_mat_t mat, flint_rand_t state, const fmpz_t det) + void fmpz_mat_randops(fmpz_mat_t mat, flint_rand_t state, slong count) + int fmpz_mat_print(const fmpz_mat_t mat) + int fmpz_mat_print_pretty(const fmpz_mat_t mat) + int fmpz_mat_read(fmpz_mat_t mat) + int fmpz_mat_equal(const fmpz_mat_t mat1, const fmpz_mat_t mat2) + int fmpz_mat_is_zero(const fmpz_mat_t mat) + int fmpz_mat_is_one(const fmpz_mat_t mat) + int fmpz_mat_is_empty(const fmpz_mat_t mat) + int fmpz_mat_is_square(const fmpz_mat_t mat) + int fmpz_mat_is_zero_row(const fmpz_mat_t mat, slong i) + int fmpz_mat_col_equal(fmpz_mat_t M, slong m, slong n) + int fmpz_mat_row_equal(fmpz_mat_t M, slong m, slong n) + void fmpz_mat_transpose(fmpz_mat_t B, const fmpz_mat_t A) + void fmpz_mat_concat_vertical(fmpz_mat_t res, const fmpz_mat_t mat1, const fmpz_mat_t mat2) + void fmpz_mat_concat_horizontal(fmpz_mat_t res, const fmpz_mat_t mat1, const fmpz_mat_t mat2) + void fmpz_mat_get_nmod_mat(nmod_mat_t Amod, const fmpz_mat_t A) + void fmpz_mat_set_nmod_mat(fmpz_mat_t A, const nmod_mat_t Amod) + void fmpz_mat_set_nmod_mat_unsigned(fmpz_mat_t A, const nmod_mat_t Amod) + void fmpz_mat_CRT_ui(fmpz_mat_t res, const fmpz_mat_t mat1, const fmpz_t m1, const nmod_mat_t mat2, int sign) + # void fmpz_mat_multi_mod_ui_precomp(nmod_mat_t * residues, slong nres, const fmpz_mat_t mat, fmpz_comb_t comb, fmpz_comb_temp_t temp) + void fmpz_mat_multi_mod_ui(nmod_mat_t * residues, slong nres, const fmpz_mat_t mat) + # void fmpz_mat_multi_CRT_ui_precomp(fmpz_mat_t mat, nmod_mat_t * const residues, slong nres, fmpz_comb_t comb, fmpz_comb_temp_t temp, int sign) + void fmpz_mat_multi_CRT_ui(fmpz_mat_t mat, nmod_mat_t * const residues, slong nres, int sign) + void fmpz_mat_add(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) + void fmpz_mat_sub(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) + void fmpz_mat_neg(fmpz_mat_t B, const fmpz_mat_t A) + void fmpz_mat_scalar_mul_si(fmpz_mat_t B, const fmpz_mat_t A, slong c) + void fmpz_mat_scalar_mul_ui(fmpz_mat_t B, const fmpz_mat_t A, ulong c) + void fmpz_mat_scalar_mul_fmpz(fmpz_mat_t B, const fmpz_mat_t A, const fmpz_t c) + void fmpz_mat_scalar_addmul_si(fmpz_mat_t B, const fmpz_mat_t A, slong c) + void fmpz_mat_scalar_addmul_ui(fmpz_mat_t B, const fmpz_mat_t A, ulong c) + void fmpz_mat_scalar_addmul_fmpz(fmpz_mat_t B, const fmpz_mat_t A, const fmpz_t c) + void fmpz_mat_scalar_submul_si(fmpz_mat_t B, const fmpz_mat_t A, slong c) + void fmpz_mat_scalar_submul_ui(fmpz_mat_t B, const fmpz_mat_t A, ulong c) + void fmpz_mat_scalar_submul_fmpz(fmpz_mat_t B, const fmpz_mat_t A, const fmpz_t c) + void fmpz_mat_scalar_addmul_nmod_mat_ui(fmpz_mat_t B, const nmod_mat_t A, ulong c) + void fmpz_mat_scalar_addmul_nmod_mat_fmpz(fmpz_mat_t B, const nmod_mat_t A, const fmpz_t c) + void fmpz_mat_scalar_divexact_si(fmpz_mat_t B, const fmpz_mat_t A, slong c) + void fmpz_mat_scalar_divexact_ui(fmpz_mat_t B, const fmpz_mat_t A, ulong c) + void fmpz_mat_scalar_divexact_fmpz(fmpz_mat_t B, const fmpz_mat_t A, const fmpz_t c) + void fmpz_mat_scalar_mul_2exp(fmpz_mat_t B, const fmpz_mat_t A, ulong exp) + void fmpz_mat_scalar_tdiv_q_2exp(fmpz_mat_t B, const fmpz_mat_t A, ulong exp) + void fmpz_mat_scalar_smod(fmpz_mat_t B, const fmpz_mat_t A, const fmpz_t P) + void fmpz_mat_mul(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) + void fmpz_mat_mul_classical(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) + void fmpz_mat_mul_strassen(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) + void _fmpz_mat_mul_multi_mod(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B, int sign, flint_bitcnt_t bits) + void fmpz_mat_mul_multi_mod(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) + int fmpz_mat_mul_blas(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) + void fmpz_mat_mul_fft(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_sqr_bodrato(fmpz_mat_t B, const fmpz_mat_t A) + void fmpz_mat_pow(fmpz_mat_t B, const fmpz_mat_t A, ulong e) + int _fmpz_mat_mul_small(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) + void _fmpz_mat_mul_double_word(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) + void fmpz_mat_mul_fmpz_vec(fmpz_struct * c, const fmpz_mat_t A, const fmpz_struct * b, slong blen) + void fmpz_mat_mul_fmpz_vec_ptr(fmpz_struct * const * c, const fmpz_mat_t A, const fmpz_struct * const * b, slong blen) + void fmpz_mat_fmpz_vec_mul(fmpz_struct * c, const fmpz_struct * a, slong alen, const fmpz_mat_t B) + void fmpz_mat_fmpz_vec_mul_ptr(fmpz_struct * const * c, const fmpz_struct * const * a, slong alen, const fmpz_mat_t B) + int fmpz_mat_inv(fmpz_mat_t Ainv, fmpz_t den, const fmpz_mat_t A) + void fmpz_mat_kronecker_product(fmpz_mat_t C, const fmpz_mat_t A, const fmpz_mat_t B) + void fmpz_mat_content(fmpz_t mat_gcd, const fmpz_mat_t A) + void fmpz_mat_trace(fmpz_t trace, const fmpz_mat_t mat) + void fmpz_mat_det(fmpz_t det, const fmpz_mat_t A) + void fmpz_mat_det_cofactor(fmpz_t det, const fmpz_mat_t A) + void fmpz_mat_det_bareiss(fmpz_t det, const fmpz_mat_t A) + void fmpz_mat_det_modular(fmpz_t det, const fmpz_mat_t A, int proved) + void fmpz_mat_det_modular_accelerated(fmpz_t det, const fmpz_mat_t A, int proved) + void fmpz_mat_det_modular_given_divisor(fmpz_t det, const fmpz_mat_t A, const fmpz_t d, int proved) + void fmpz_mat_det_bound(fmpz_t bound, const fmpz_mat_t A) + void fmpz_mat_det_divisor(fmpz_t d, const fmpz_mat_t A) + void fmpz_mat_similarity(fmpz_mat_t A, slong r, fmpz_t d) + void _fmpz_mat_charpoly_berkowitz(fmpz_struct * cp, const fmpz_mat_t mat) + void fmpz_mat_charpoly_berkowitz(fmpz_poly_t cp, const fmpz_mat_t mat) + void _fmpz_mat_charpoly_modular(fmpz_struct * cp, const fmpz_mat_t mat) + void fmpz_mat_charpoly_modular(fmpz_poly_t cp, const fmpz_mat_t mat) + void _fmpz_mat_charpoly(fmpz_struct * cp, const fmpz_mat_t mat) + void fmpz_mat_charpoly(fmpz_poly_t cp, const fmpz_mat_t mat) + slong _fmpz_mat_minpoly_modular(fmpz_struct * cp, const fmpz_mat_t mat) + void fmpz_mat_minpoly_modular(fmpz_poly_t cp, const fmpz_mat_t mat) + slong _fmpz_mat_minpoly(fmpz_struct * cp, const fmpz_mat_t mat) + void fmpz_mat_minpoly(fmpz_poly_t cp, const fmpz_mat_t mat) + slong fmpz_mat_rank(const fmpz_mat_t A) + int fmpz_mat_col_partition(slong * part, fmpz_mat_t M, int short_circuit) + int fmpz_mat_solve(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) + int fmpz_mat_solve_fflu(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) + int fmpz_mat_solve_fflu_precomp(fmpz_mat_t X, const slong * perm, const fmpz_mat_t FFLU, const fmpz_mat_t B) + int fmpz_mat_solve_cramer(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) + void fmpz_mat_solve_bound(fmpz_t N, fmpz_t D, const fmpz_mat_t A, const fmpz_mat_t B) + int fmpz_mat_solve_dixon(fmpz_mat_t X, fmpz_t M, const fmpz_mat_t A, const fmpz_mat_t B) + void _fmpz_mat_solve_dixon_den(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B, const nmod_mat_t Ainv, mp_limb_t p, const fmpz_t N, const fmpz_t D) + int fmpz_mat_solve_dixon_den(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) + int fmpz_mat_solve_multi_mod_den(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) + int fmpz_mat_can_solve_multi_mod_den(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) + void fmpz_mat_can_solve_fflu(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) + int fmpz_mat_can_solve(fmpz_mat_t X, fmpz_t den, const fmpz_mat_t A, const fmpz_mat_t B) + slong fmpz_mat_find_pivot_any(const fmpz_mat_t mat, slong start_row, slong end_row, slong c) + slong fmpz_mat_fflu(fmpz_mat_t B, fmpz_t den, slong * perm, const fmpz_mat_t A, int rank_check) + slong fmpz_mat_rref(fmpz_mat_t B, fmpz_t den, const fmpz_mat_t A) + slong fmpz_mat_rref_fflu(fmpz_mat_t B, fmpz_t den, const fmpz_mat_t A) + slong fmpz_mat_rref_mul(fmpz_mat_t B, fmpz_t den, const fmpz_mat_t A) + int fmpz_mat_is_in_rref_with_rank(const fmpz_mat_t A, const fmpz_t den, slong rank) + slong fmpz_mat_rref_mod(slong * perm, fmpz_mat_t A, const fmpz_t p) + void fmpz_mat_strong_echelon_form_mod(fmpz_mat_t A, const fmpz_t mod) + slong fmpz_mat_howell_form_mod(nmod_mat_t A, const fmpz_t mod) + slong fmpz_mat_nullspace(fmpz_mat_t B, const fmpz_mat_t A) + slong fmpz_mat_rref_fraction_free(slong * perm, fmpz_mat_t B, fmpz_t den, const fmpz_mat_t A) void fmpz_mat_hnf(fmpz_mat_t H, const fmpz_mat_t A) - void fmpz_mat_hnf_transform(fmpz_mat_t H, fmpz_mat_t U, 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_hnf_classical(fmpz_mat_t H, const fmpz_mat_t A) + void fmpz_mat_hnf_xgcd(fmpz_mat_t H, const fmpz_mat_t A) + void fmpz_mat_hnf_modular(fmpz_mat_t H, const fmpz_mat_t A, const fmpz_t D) + void fmpz_mat_hnf_modular_eldiv(fmpz_mat_t A, const fmpz_t D) + void fmpz_mat_hnf_minors(fmpz_mat_t H, const fmpz_mat_t A) + void fmpz_mat_hnf_pernet_stein(fmpz_mat_t H, const fmpz_mat_t A, flint_rand_t state) int fmpz_mat_is_in_hnf(const fmpz_mat_t A) void fmpz_mat_snf(fmpz_mat_t S, const fmpz_mat_t A) + void fmpz_mat_snf_diagonal(fmpz_mat_t S, const fmpz_mat_t A) + void fmpz_mat_snf_kannan_bachem(fmpz_mat_t S, const fmpz_mat_t A) + void fmpz_mat_snf_iliopoulos(fmpz_mat_t S, const fmpz_mat_t A, const fmpz_t mod) int fmpz_mat_is_in_snf(const fmpz_mat_t A) + void fmpz_mat_gram(fmpz_mat_t B, const fmpz_mat_t A) + int fmpz_mat_is_hadamard(const fmpz_mat_t H) + int fmpz_mat_hadamard(fmpz_mat_t H) + # int fmpz_mat_get_d_mat(d_mat_t B, const fmpz_mat_t A) + # int fmpz_mat_get_d_mat_transpose(d_mat_t B, const fmpz_mat_t A) + # void fmpz_mat_get_mpf_mat(mpf_mat_t B, const fmpz_mat_t A) + # void fmpz_mat_chol_d(d_mat_t R, const fmpz_mat_t A) + int fmpz_mat_is_reduced(const fmpz_mat_t A, double delta, double eta) + int fmpz_mat_is_reduced_gram(const fmpz_mat_t A, double delta, double eta) + int fmpz_mat_is_reduced_with_removal(const fmpz_mat_t A, double delta, double eta, const fmpz_t gs_B, int newd) + int fmpz_mat_is_reduced_gram_with_removal(const fmpz_mat_t A, double delta, double eta, const fmpz_t gs_B, int newd) + void fmpz_mat_lll_original(fmpz_mat_t A, const fmpq_t delta, const fmpq_t eta) + void fmpz_mat_lll_storjohann(fmpz_mat_t A, const fmpq_t delta, const fmpq_t eta) - void fmpz_mat_charpoly(fmpz_poly_t cp, const fmpz_mat_t mat) - void fmpz_mat_minpoly(fmpz_poly_t cp, const fmpz_mat_t mat) + # fmpz_struct * fmpz_mat_entry(fmpz_mat_t mat, long i, long j) + # void fmpz_mat_init(fmpz_mat_t mat, long rows, long cols) + # void fmpz_mat_init_set(fmpz_mat_t mat, fmpz_mat_t src) + # void fmpz_mat_swap(fmpz_mat_t mat1, fmpz_mat_t mat2) + # void fmpz_mat_set(fmpz_mat_t mat1, fmpz_mat_t mat2) + # void fmpz_mat_clear(fmpz_mat_t mat) + # int fmpz_mat_equal(fmpz_mat_t mat1, fmpz_mat_t mat2) + # int fmpz_mat_is_zero( fmpz_mat_t mat) + # int fmpz_mat_is_empty( fmpz_mat_t mat) + # int fmpz_mat_is_square( fmpz_mat_t mat) + # void fmpz_mat_zero(fmpz_mat_t mat) + # void fmpz_mat_one(fmpz_mat_t mat) + # void fmpz_mat_get_nmod_mat(nmod_mat_t mat, fmpz_mat_t mat2) + # void fmpz_mat_randbits(fmpz_mat_t mat, flint_rand_t state, mp_bitcnt_t bits) + # void fmpz_mat_randtest(fmpz_mat_t mat, flint_rand_t state, mp_bitcnt_t bits) + # void fmpz_mat_randtest_unsigned(fmpz_mat_t mat, flint_rand_t state, mp_bitcnt_t bits) + # void fmpz_mat_randrank(fmpz_mat_t mat, flint_rand_t state, long rank, mp_bitcnt_t bits) + # int fmpz_mat_print_pretty( fmpz_mat_t mat) + # void fmpz_mat_transpose(fmpz_mat_t B, fmpz_mat_t A) + # void fmpz_mat_add(fmpz_mat_t C, fmpz_mat_t A, fmpz_mat_t B) + # void fmpz_mat_sub(fmpz_mat_t C, fmpz_mat_t A, fmpz_mat_t B) + # void fmpz_mat_neg(fmpz_mat_t B, fmpz_mat_t A) + # void fmpz_mat_scalar_mul_fmpz(fmpz_mat_t B, fmpz_mat_t A, fmpz_t c) + # void fmpz_mat_scalar_mul_si(fmpz_mat_t B, fmpz_mat_t A, long c) + # void fmpz_mat_scalar_mul_ui(fmpz_mat_t B, fmpz_mat_t A, ulong c) + # void fmpz_mat_mul(fmpz_mat_t C, fmpz_mat_t A, fmpz_mat_t B) + # void fmpz_mat_det(fmpz_t det, fmpz_mat_t A) + # long fmpz_mat_rank(fmpz_mat_t A) + # long fmpz_mat_rref(fmpz_mat_t R, fmpz_t den, fmpz_mat_t A) + # void fmpz_mat_inv(fmpz_mat_t B, fmpz_t den, fmpz_mat_t A) + # int fmpz_mat_solve(fmpz_mat_t X, fmpz_t den, fmpz_mat_t A, fmpz_mat_t B) + # long fmpz_mat_nullspace(fmpz_mat_t res, fmpz_mat_t mat) + # void fmpz_mat_pow(fmpz_mat_t A, fmpz_mat_t B, ulong e) + # int fmpz_mat_is_hadamard(const fmpz_mat_t A) + # int fmpz_mat_hadamard(fmpz_mat_t A) + + # void fmpz_mat_hnf(fmpz_mat_t H, const fmpz_mat_t A) + # void fmpz_mat_hnf_transform(fmpz_mat_t H, fmpz_mat_t U, const fmpz_mat_t A) + # int fmpz_mat_is_in_hnf(const fmpz_mat_t A) + # void fmpz_mat_snf(fmpz_mat_t S, const fmpz_mat_t A) + # int fmpz_mat_is_in_snf(const fmpz_mat_t A) + + # void fmpz_mat_charpoly(fmpz_poly_t cp, const fmpz_mat_t mat) + # void fmpz_mat_minpoly(fmpz_poly_t cp, const fmpz_mat_t mat) diff --git a/src/flint/flintlib/fmpz_mpoly.pxd b/src/flint/flintlib/fmpz_mpoly.pxd index 27f61950..d74f2df1 100644 --- a/src/flint/flintlib/fmpz_mpoly.pxd +++ b/src/flint/flintlib/fmpz_mpoly.pxd @@ -1,6 +1,6 @@ from flint.flintlib.mpoly cimport mpoly_ctx_t, ordering_t from flint.flintlib.fmpz cimport fmpz_t, fmpz_struct -from flint._flint cimport ulong, slong, flint_bitcnt_t, flint_rand_t +from flint.flintlib.flint cimport ulong, slong, flint_bitcnt_t, flint_rand_t, mp_limb_t from flint.flintlib.fmpz_poly cimport fmpz_poly_t, fmpz_poly_struct cdef extern from "flint/fmpz_mpoly.h": @@ -18,26 +18,28 @@ cdef extern from "flint/fmpz_mpoly.h": ctypedef fmpz_mpoly_struct fmpz_mpoly_t[1] +# from here on is parsed void fmpz_mpoly_ctx_init(fmpz_mpoly_ctx_t ctx, slong nvars, const ordering_t ord) - void fmpz_mpoly_ctx_init_rand(fmpz_mpoly_ctx_t mctx, flint_rand_t state, slong max_nvars) - void fmpz_mpoly_ctx_clear(fmpz_mpoly_ctx_t ctx) - slong fmpz_mpoly_ctx_nvars(const fmpz_mpoly_ctx_t ctx) + slong fmpz_mpoly_ctx_nvars(fmpz_mpoly_ctx_t ctx) ordering_t fmpz_mpoly_ctx_ord(const fmpz_mpoly_ctx_t ctx) - + void fmpz_mpoly_ctx_clear(fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_init(fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_init2(fmpz_mpoly_t A, slong alloc, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_init3(fmpz_mpoly_t A, slong alloc, flint_bitcnt_t bits, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_fit_length(fmpz_mpoly_t A, slong len, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_fit_bits(fmpz_mpoly_t A, flint_bitcnt_t bits, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_realloc(fmpz_mpoly_t A, slong alloc, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_clear(fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) - - int fmpz_mpoly_set_str_pretty(fmpz_mpoly_t A, const char * str, const char ** x, const fmpz_mpoly_ctx_t ctx) char * fmpz_mpoly_get_str_pretty(const fmpz_mpoly_t A, const char ** x, const fmpz_mpoly_ctx_t ctx) - - void fmpz_mpoly_gen(fmpz_mpoly_t poly, slong i, const fmpz_mpoly_ctx_t ctx) - int fmpz_mpoly_is_gen(const fmpz_mpoly_t poly, slong k, const fmpz_mpoly_ctx_t ctx) + int fmpz_mpoly_print_pretty(const fmpz_mpoly_t A, const char ** x, const fmpz_mpoly_ctx_t ctx) + int fmpz_mpoly_set_str_pretty(fmpz_mpoly_t A, const char * str, const char ** x, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_gen(fmpz_mpoly_t A, slong var, const fmpz_mpoly_ctx_t ctx) + int fmpz_mpoly_is_gen(const fmpz_mpoly_t A, slong var, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_set(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) - int fmpz_mpoly_equal(const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_swap(fmpz_mpoly_t A, fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) - + int fmpz_mpoly_equal(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_swap(fmpz_mpoly_t poly1, fmpz_mpoly_t poly2, const fmpz_mpoly_ctx_t ctx) + int _fmpz_mpoly_fits_small(const fmpz_struct * poly, slong len) slong fmpz_mpoly_max_bits(const fmpz_mpoly_t A) - int fmpz_mpoly_is_fmpz(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_get_fmpz(fmpz_t c, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_set_fmpz(fmpz_mpoly_t A, const fmpz_t c, const fmpz_mpoly_ctx_t ctx) @@ -45,125 +47,152 @@ cdef extern from "flint/fmpz_mpoly.h": void fmpz_mpoly_set_si(fmpz_mpoly_t A, slong c, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_zero(fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_one(fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) - int fmpz_mpoly_equal_fmpz(const fmpz_mpoly_t A, const fmpz_t c, const fmpz_mpoly_ctx_t ctx) + int fmpz_mpoly_equal_fmpz(const fmpz_mpoly_t A, fmpz_t c, const fmpz_mpoly_ctx_t ctx) int fmpz_mpoly_equal_ui(const fmpz_mpoly_t A, ulong c, const fmpz_mpoly_ctx_t ctx) int fmpz_mpoly_equal_si(const fmpz_mpoly_t A, slong c, const fmpz_mpoly_ctx_t ctx) int fmpz_mpoly_is_zero(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) int fmpz_mpoly_is_one(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) - int fmpz_mpoly_degrees_fit_si(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_degrees_fmpz(fmpz_struct ** degs, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_degrees_si(slong * degs, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_degree_fmpz(fmpz_t deg, const fmpz_mpoly_t A, slong var, const fmpz_mpoly_ctx_t ctx) slong fmpz_mpoly_degree_si(const fmpz_mpoly_t A, slong var, const fmpz_mpoly_ctx_t ctx) int fmpz_mpoly_total_degree_fits_si(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_total_degree_fmpz(fmpz_t td, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_total_degree_fmpz(fmpz_t tdeg, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) slong fmpz_mpoly_total_degree_si(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) - + void fmpz_mpoly_used_vars(int * used, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) 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) - void fmpz_mpoly_set_coeff_fmpz_monomial(fmpz_mpoly_t A, const fmpz_t c, const fmpz_mpoly_t M, const fmpz_mpoly_ctx_t ctx) + 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) void fmpz_mpoly_get_coeff_fmpz_fmpz(fmpz_t c, const fmpz_mpoly_t A, fmpz_struct * const * exp, const fmpz_mpoly_ctx_t ctx) ulong fmpz_mpoly_get_coeff_ui_fmpz(const fmpz_mpoly_t A, fmpz_struct * const * exp, const fmpz_mpoly_ctx_t ctx) slong fmpz_mpoly_get_coeff_si_fmpz(const fmpz_mpoly_t A, fmpz_struct * const * exp, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_get_coeff_fmpz_ui(fmpz_t c, const fmpz_mpoly_t A, const ulong * exp, const fmpz_mpoly_ctx_t ctx) ulong fmpz_mpoly_get_coeff_ui_ui(const fmpz_mpoly_t A, const ulong * exp, const fmpz_mpoly_ctx_t ctx) - slong fmpz_mpoly_get_coeff_si_ui(const fmpz_mpoly_t A, - const ulong * exp, const fmpz_mpoly_ctx_t ctx) - void _fmpz_mpoly_set_coeff_fmpz_fmpz(fmpz_mpoly_t A, - const fmpz_t c, const fmpz_struct * exp, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_set_coeff_fmpz_fmpz(fmpz_mpoly_t A, - const fmpz_t c, fmpz_struct * const * exp, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_set_coeff_ui_fmpz(fmpz_mpoly_t A, - const ulong c, fmpz_struct * const * exp, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_set_coeff_si_fmpz(fmpz_mpoly_t A, - const slong c, fmpz_struct * const * exp, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_set_coeff_fmpz_ui(fmpz_mpoly_t A, - const fmpz_t c, const ulong * exp, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_set_coeff_ui_ui(fmpz_mpoly_t A, - const ulong c, const ulong * exp, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_set_coeff_si_ui(fmpz_mpoly_t A, - const slong c, const ulong * exp, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_get_coeff_vars_ui(fmpz_mpoly_t C, - const fmpz_mpoly_t A, slong * vars, ulong * exps, slong length, - const fmpz_mpoly_ctx_t ctx) - + slong fmpz_mpoly_get_coeff_si_ui(const fmpz_mpoly_t A, const ulong * exp, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_set_coeff_fmpz_fmpz(fmpz_mpoly_t A, const fmpz_t c, const fmpz_struct ** exp, fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_set_coeff_ui_fmpz(fmpz_mpoly_t A, ulong c, const fmpz_struct ** exp, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_set_coeff_si_fmpz(fmpz_mpoly_t A, slong c, const fmpz_struct ** exp, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_set_coeff_fmpz_ui(fmpz_mpoly_t A, const fmpz_t c, const ulong * exp, fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_set_coeff_ui_ui(fmpz_mpoly_t A, ulong c, const ulong * exp, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_set_coeff_si_ui(fmpz_mpoly_t A, slong c, const ulong * exp, const fmpz_mpoly_ctx_t ctx) + 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) int fmpz_mpoly_cmp(const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) - + fmpz_struct * fmpz_mpoly_term_coeff_ref(fmpz_mpoly_t A, slong i, const fmpz_mpoly_ctx_t ctx) + int fmpz_mpoly_is_canonical(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) slong fmpz_mpoly_length(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) - + void fmpz_mpoly_resize(fmpz_mpoly_t A, slong new_length, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_get_term_coeff_fmpz(fmpz_t c, const fmpz_mpoly_t A, slong i, const fmpz_mpoly_ctx_t ctx) - - void fmpz_mpoly_get_term_exp_fmpz(fmpz_struct ** exp, const fmpz_mpoly_t A, - slong i, const fmpz_mpoly_ctx_t ctx) - - void fmpz_mpoly_get_term_exp_ui(ulong * exp, const fmpz_mpoly_t A, - slong i, const fmpz_mpoly_ctx_t ctx) - - void fmpz_mpoly_get_term_exp_si(slong * exp, const fmpz_mpoly_t A, - slong i, const fmpz_mpoly_ctx_t ctx) - - ulong fmpz_mpoly_get_term_var_exp_ui(const fmpz_mpoly_t A, slong i, - slong var, const fmpz_mpoly_ctx_t ctx) - - slong fmpz_mpoly_get_term_var_exp_si(const fmpz_mpoly_t A, slong i, - slong var, const fmpz_mpoly_ctx_t ctx) - - void fmpz_mpoly_set_term_exp_fmpz(fmpz_mpoly_t A, - slong i, fmpz_struct * const * exp, const fmpz_mpoly_ctx_t ctx) - - void fmpz_mpoly_set_term_exp_ui(fmpz_mpoly_t A, - slong i, const ulong * exp, const fmpz_mpoly_ctx_t ctx) - - void fmpz_mpoly_get_term(fmpz_mpoly_t M, const fmpz_mpoly_t A, - slong i, const fmpz_mpoly_ctx_t ctx) - - void fmpz_mpoly_get_term_monomial(fmpz_mpoly_t M, const fmpz_mpoly_t A, - slong i, const fmpz_mpoly_ctx_t ctx) - - # Addition/Subtraction - void fmpz_mpoly_add_fmpz(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_t c, const fmpz_mpoly_ctx_t ctx) + ulong fmpz_mpoly_get_term_coeff_ui(const fmpz_mpoly_t A, slong i, const fmpz_mpoly_ctx_t ctx) + slong fmpz_mpoly_get_term_coeff_si(const fmpz_mpoly_t poly, slong i, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_set_term_coeff_fmpz(fmpz_mpoly_t A, slong i, const fmpz_t c, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_set_term_coeff_ui(fmpz_mpoly_t A, slong i, ulong c, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_set_term_coeff_si(fmpz_mpoly_t A, slong i, slong c, const fmpz_mpoly_ctx_t ctx) + int fmpz_mpoly_term_exp_fits_si(const fmpz_mpoly_t poly, slong i, const fmpz_mpoly_ctx_t ctx) + int fmpz_mpoly_term_exp_fits_ui(const fmpz_mpoly_t poly, slong i, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_get_term_exp_fmpz(fmpz_struct ** exp, const fmpz_mpoly_t A, slong i, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_get_term_exp_ui(ulong * exp, const fmpz_mpoly_t A, slong i, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_get_term_exp_si(slong * exp, const fmpz_mpoly_t A, slong i, const fmpz_mpoly_ctx_t ctx) + ulong fmpz_mpoly_get_term_var_exp_ui(const fmpz_mpoly_t A, slong i, slong var, const fmpz_mpoly_ctx_t ctx) + slong fmpz_mpoly_get_term_var_exp_si(const fmpz_mpoly_t A, slong i, slong var, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_set_term_exp_fmpz(fmpz_mpoly_t A, slong i, fmpz_struct * const * exp, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_set_term_exp_ui(fmpz_mpoly_t A, slong i, const ulong * exp, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_get_term(fmpz_mpoly_t M, const fmpz_mpoly_t A, slong i, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_get_term_monomial(fmpz_mpoly_t M, const fmpz_mpoly_t A, slong i, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_push_term_fmpz_fmpz(fmpz_mpoly_t A, const fmpz_t c, fmpz_struct * const * exp, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_push_term_ui_fmpz(fmpz_mpoly_t A, ulong c, fmpz_struct * const * exp, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_push_term_si_fmpz(fmpz_mpoly_t A, slong c, fmpz_struct * const * exp, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_push_term_fmpz_ui(fmpz_mpoly_t A, const fmpz_t c, const ulong * exp, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_push_term_ui_ui(fmpz_mpoly_t A, ulong c, const ulong * exp, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_push_term_si_ui(fmpz_mpoly_t A, slong c, const ulong * exp, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_sort_terms(fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_combine_like_terms(fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_reverse(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_randtest_bound(fmpz_mpoly_t A, flint_rand_t state, slong length, mp_limb_t coeff_bits, ulong exp_bound, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_randtest_bounds(fmpz_mpoly_t A, flint_rand_t state, slong length, mp_limb_t coeff_bits, ulong * exp_bounds, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_randtest_bits(fmpz_mpoly_t A, flint_rand_t state, slong length, mp_limb_t coeff_bits, mp_limb_t exp_bits, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_add_fmpz(fmpz_mpoly_t A, const fmpz_mpoly_t B, fmpz_t c, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_add_ui(fmpz_mpoly_t A, const fmpz_mpoly_t B, ulong c, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_add_si(fmpz_mpoly_t A, const fmpz_mpoly_t B, slong c, const fmpz_mpoly_ctx_t ctx) - void fmpz_mpoly_sub_fmpz(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_t c, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_sub_fmpz(fmpz_mpoly_t A, const fmpz_mpoly_t B, fmpz_t c, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_sub_ui(fmpz_mpoly_t A, const fmpz_mpoly_t B, ulong c, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_sub_si(fmpz_mpoly_t A, const fmpz_mpoly_t B, slong c, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_add(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_t C, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_sub(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_t C, const fmpz_mpoly_ctx_t ctx) - - # Scalar operations void fmpz_mpoly_neg(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) 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) - void fmpz_mpoly_scalar_mul_si(fmpz_mpoly_t A, const fmpz_mpoly_t B, slong c, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_scalar_mul_ui(fmpz_mpoly_t A, const fmpz_mpoly_t B, ulong c, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_scalar_mul_si(fmpz_mpoly_t A, const fmpz_mpoly_t B, slong c, const fmpz_mpoly_ctx_t ctx) + 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) 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) - void fmpz_mpoly_scalar_divexact_si(fmpz_mpoly_t A, const fmpz_mpoly_t B, slong c, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_scalar_divexact_ui(fmpz_mpoly_t A, const fmpz_mpoly_t B, ulong c, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_scalar_divexact_si(fmpz_mpoly_t A, const fmpz_mpoly_t B, slong c, const fmpz_mpoly_ctx_t ctx) 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) - int fmpz_mpoly_scalar_divides_si(fmpz_mpoly_t A, const fmpz_mpoly_t B, slong c, const fmpz_mpoly_ctx_t ctx) int fmpz_mpoly_scalar_divides_ui(fmpz_mpoly_t A, const fmpz_mpoly_t B, ulong c, const fmpz_mpoly_ctx_t ctx) - - # Differentiation/Integration + int fmpz_mpoly_scalar_divides_si(fmpz_mpoly_t A, const fmpz_mpoly_t B, slong c, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_derivative(fmpz_mpoly_t A, const fmpz_mpoly_t B, slong var, const fmpz_mpoly_ctx_t ctx) void fmpz_mpoly_integral(fmpz_mpoly_t A, fmpz_t scale, const fmpz_mpoly_t B, slong var, const fmpz_mpoly_ctx_t ctx) - - # Evaluation int fmpz_mpoly_evaluate_all_fmpz(fmpz_t ev, const fmpz_mpoly_t A, fmpz_struct * const * vals, const fmpz_mpoly_ctx_t ctx) 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) 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) + 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) + 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) 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) 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) - - # Multiplication void fmpz_mpoly_mul(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_t C, const fmpz_mpoly_ctx_t ctx) - - # Powering + 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) + 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) + 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) + 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) + 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) + 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) int fmpz_mpoly_pow_fmpz(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_t k, const fmpz_mpoly_ctx_t ctx) int fmpz_mpoly_pow_ui(fmpz_mpoly_t A, const fmpz_mpoly_t B, ulong k, const fmpz_mpoly_ctx_t ctx) - - # Division int fmpz_mpoly_divides(fmpz_mpoly_t Q, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) 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) 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) void fmpz_mpoly_div(fmpz_mpoly_t Q, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) 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) 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) + 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) void fmpz_mpoly_term_content(fmpz_mpoly_t M, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) + 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) int fmpz_mpoly_gcd(fmpz_mpoly_t G, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + int fmpz_mpoly_discriminant(fmpz_mpoly_t D, const fmpz_mpoly_t A, slong var, const fmpz_mpoly_ctx_t ctx) + int fmpz_mpoly_sqrt_heap(fmpz_mpoly_t Q, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx, int check) + int fmpz_mpoly_sqrt(fmpz_mpoly_t q, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) + int fmpz_mpoly_is_square(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) + # void fmpz_mpoly_univar_init(fmpz_mpoly_univar_t A, const fmpz_mpoly_ctx_t ctx) + # void fmpz_mpoly_univar_clear(fmpz_mpoly_univar_t A, const fmpz_mpoly_ctx_t ctx) + # void fmpz_mpoly_univar_swap(fmpz_mpoly_univar_t A, fmpz_mpoly_univar_t B, const fmpz_mpoly_ctx_t ctx) + # void fmpz_mpoly_to_univar(fmpz_mpoly_univar_t A, const fmpz_mpoly_t B, slong var, const fmpz_mpoly_ctx_t ctx) + # void fmpz_mpoly_from_univar(fmpz_mpoly_t A, const fmpz_mpoly_univar_t B, slong var, const fmpz_mpoly_ctx_t ctx) + # int fmpz_mpoly_univar_degree_fits_si(const fmpz_mpoly_univar_t A, const fmpz_mpoly_ctx_t ctx) + # slong fmpz_mpoly_univar_length(const fmpz_mpoly_univar_t A, const fmpz_mpoly_ctx_t ctx) + # slong fmpz_mpoly_univar_get_term_exp_si(fmpz_mpoly_univar_t A, slong i, const fmpz_mpoly_ctx_t ctx) + # void fmpz_mpoly_univar_get_term_coeff(fmpz_mpoly_t c, const fmpz_mpoly_univar_t A, slong i, const fmpz_mpoly_ctx_t ctx) + # void fmpz_mpoly_univar_swap_term_coeff(fmpz_mpoly_t c, fmpz_mpoly_univar_t A, slong i, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_inflate(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_struct * shift, const fmpz_struct * stride, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_deflate(fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_struct * shift, const fmpz_struct * stride, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_deflation(fmpz_struct * shift, fmpz_struct * stride, const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_pow_fps(fmpz_mpoly_t A, const fmpz_mpoly_t B, ulong k, const fmpz_mpoly_ctx_t ctx) + slong _fmpz_mpoly_divides_array(fmpz_struct ** poly1, ulong ** exp1, slong * alloc, const fmpz_struct * poly2, const ulong * exp2, slong len2, const fmpz_struct * poly3, const ulong * exp3, slong len3, slong * mults, slong num, slong bits) + int fmpz_mpoly_divides_array(fmpz_mpoly_t poly1, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, const fmpz_mpoly_ctx_t ctx) + slong _fmpz_mpoly_divides_monagan_pearce(fmpz_struct ** poly1, ulong ** exp1, slong * alloc, const fmpz_struct * poly2, const ulong * exp2, slong len2, const fmpz_struct * poly3, const ulong * exp3, slong len3, slong bits, slong N) + int fmpz_mpoly_divides_monagan_pearce(fmpz_mpoly_t poly1, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, const fmpz_mpoly_ctx_t ctx) + int fmpz_mpoly_divides_heap_threaded(fmpz_mpoly_t Q, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx, slong thread_limit) + slong _fmpz_mpoly_div_monagan_pearce(fmpz_struct ** polyq, ulong ** expq, slong * allocq, const fmpz_struct * poly2, const ulong * exp2, slong len2, const fmpz_struct * poly3, const ulong * exp3, slong len3, slong bits, slong N) + void fmpz_mpoly_div_monagan_pearce(fmpz_mpoly_t polyq, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, const fmpz_mpoly_ctx_t ctx) + slong _fmpz_mpoly_divrem_monagan_pearce(slong * lenr, fmpz_struct ** polyq, ulong ** expq, slong * allocq, fmpz_struct ** polyr, ulong ** expr, slong * allocr, const fmpz_struct * poly2, const ulong * exp2, slong len2, const fmpz_struct * poly3, const ulong * exp3, slong len3, slong bits, slong N) + void fmpz_mpoly_divrem_monagan_pearce(fmpz_mpoly_t q, fmpz_mpoly_t r, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, const fmpz_mpoly_ctx_t ctx) + slong _fmpz_mpoly_divrem_array(slong * lenr, fmpz_struct ** polyq, ulong ** expq, slong * allocq, fmpz_struct ** polyr, ulong ** expr, slong * allocr, const fmpz_struct * poly2, const ulong * exp2, slong len2, const fmpz_struct * poly3, const ulong * exp3, slong len3, slong * mults, slong num, slong bits) + int fmpz_mpoly_divrem_array(fmpz_mpoly_t q, fmpz_mpoly_t r, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, const fmpz_mpoly_ctx_t ctx) + void fmpz_mpoly_quasidivrem_heap(fmpz_t scale, fmpz_mpoly_t q, fmpz_mpoly_t r, const fmpz_mpoly_t poly2, const fmpz_mpoly_t poly3, const fmpz_mpoly_ctx_t ctx) + slong _fmpz_mpoly_divrem_ideal_monagan_pearce(fmpz_mpoly_struct ** polyq, fmpz_struct ** polyr, ulong ** expr, slong * allocr, const fmpz_struct * poly2, const ulong * exp2, slong len2, fmpz_mpoly_struct * const * poly3, ulong * const * exp3, slong len, slong N, slong bits, const fmpz_mpoly_ctx_t ctx) + 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) diff --git a/src/flint/flintlib/fmpz_poly.pxd b/src/flint/flintlib/fmpz_poly.pxd index 498177b9..4d6c75e6 100644 --- a/src/flint/flintlib/fmpz_poly.pxd +++ b/src/flint/flintlib/fmpz_poly.pxd @@ -1,6 +1,8 @@ -from flint._flint cimport ulong, mp_limb_t +from flint.flintlib.flint cimport ulong, mp_limb_t, slong, flint_rand_t, flint_bitcnt_t from flint.flintlib.fmpz cimport fmpz_struct,fmpz_t +from flint.flintlib.fmpq cimport fmpq_struct,fmpq_t from flint.flintlib.nmod_poly cimport nmod_poly_t +from flint.flintlib.nmod_poly_factor cimport nmod_poly_factor_t cdef extern from "flint/fmpz_poly.h": ctypedef struct fmpz_poly_struct: @@ -17,98 +19,395 @@ cdef extern from "flint/fmpz_poly.h": long alloc ctypedef fmpz_poly_factor_struct fmpz_poly_factor_t[1] + +# from here on is parsed void fmpz_poly_init(fmpz_poly_t poly) - void fmpz_poly_init2(fmpz_poly_t poly, long alloc) - void fmpz_poly_realloc(fmpz_poly_t poly, long alloc) - void fmpz_poly_fit_length(fmpz_poly_t poly, long len) + void fmpz_poly_init2(fmpz_poly_t poly, slong alloc) + void fmpz_poly_realloc(fmpz_poly_t poly, slong alloc) + void fmpz_poly_fit_length(fmpz_poly_t poly, slong len) void fmpz_poly_clear(fmpz_poly_t poly) void _fmpz_poly_normalise(fmpz_poly_t poly) - void _fmpz_poly_set_length(fmpz_poly_t poly, long newlen) - long fmpz_poly_length(fmpz_poly_t poly) - long fmpz_poly_degree(fmpz_poly_t poly) - ulong fmpz_poly_max_limbs(fmpz_poly_t poly) - long fmpz_poly_max_bits(fmpz_poly_t poly) - void fmpz_poly_set(fmpz_poly_t poly1, fmpz_poly_t poly2) + void _fmpz_poly_set_length(fmpz_poly_t poly, slong newlen) + void fmpz_poly_attach_truncate(fmpz_poly_t trunc, fmpz_poly_t poly, slong n) + void fmpz_poly_attach_shift(fmpz_poly_t trunc, fmpz_poly_t poly, slong n) + slong fmpz_poly_length(const fmpz_poly_t poly) + slong fmpz_poly_degree(const fmpz_poly_t poly) + void fmpz_poly_set(fmpz_poly_t poly1, const fmpz_poly_t poly2) + void fmpz_poly_set_si(fmpz_poly_t poly, slong c) void fmpz_poly_set_ui(fmpz_poly_t poly, ulong c) - void fmpz_poly_set_si(fmpz_poly_t poly, long c) - void fmpz_poly_set_fmpz(fmpz_poly_t poly, fmpz_t c) - #void fmpz_poly_set_mpz(fmpz_poly_t poly, mpz_t c) - int fmpz_poly_set_str(fmpz_poly_t poly, char * str) - char * fmpz_poly_get_str(fmpz_poly_t poly) - char * fmpz_poly_get_str_pretty(fmpz_poly_t poly, char * x) - fmpz_struct * fmpz_poly_get_coeff_ptr(fmpz_poly_t poly, long n) + void fmpz_poly_set_fmpz(fmpz_poly_t poly, const fmpz_t c) + # void fmpz_poly_set_mpz(fmpz_poly_t poly, const mpz_t c) + int _fmpz_poly_set_str(fmpz_struct * poly, const char * str) + int fmpz_poly_set_str(fmpz_poly_t poly, const char * str) + char * _fmpz_poly_get_str(const fmpz_struct * poly, slong len) + char * fmpz_poly_get_str(const fmpz_poly_t poly) + char * _fmpz_poly_get_str_pretty(const fmpz_struct * poly, slong len, const char * x) + char * fmpz_poly_get_str_pretty(const fmpz_poly_t poly, const char * x) void fmpz_poly_zero(fmpz_poly_t poly) void fmpz_poly_one(fmpz_poly_t poly) - void fmpz_poly_zero_coeffs(fmpz_poly_t poly, long i, long j) + void fmpz_poly_zero_coeffs(fmpz_poly_t poly, slong i, slong j) void fmpz_poly_swap(fmpz_poly_t poly1, fmpz_poly_t poly2) - void fmpz_poly_reverse(fmpz_poly_t res, fmpz_poly_t poly, long n) - void fmpz_poly_truncate(fmpz_poly_t poly, long newlen) - #void fmpz_poly_randtest(fmpz_poly_t f, flint_rand_t state, long len, mp_bitcnt_t bits) - #void fmpz_poly_randtest_unsigned(fmpz_poly_t f, flint_rand_t state, long len, mp_bitcnt_t bits) - #void fmpz_poly_randtest_not_zero(fmpz_poly_t f, flint_rand_t state, long len, mp_bitcnt_t bits) - long fmpz_poly_get_coeff_si(fmpz_poly_t poly, long n) - void fmpz_poly_set_coeff_si(fmpz_poly_t poly, long n, long x) - ulong fmpz_poly_get_coeff_ui(fmpz_poly_t poly, long n) - void fmpz_poly_set_coeff_ui(fmpz_poly_t poly, long n, ulong x) - void fmpz_poly_set_coeff_fmpz(fmpz_poly_t poly, long n, fmpz_t x) - void fmpz_poly_get_coeff_fmpz(fmpz_t x, fmpz_poly_t poly, long n) - int fmpz_poly_equal(fmpz_poly_t poly1, fmpz_poly_t poly2) - int fmpz_poly_is_zero(fmpz_poly_t poly) - int fmpz_poly_is_one(fmpz_poly_t op) - int fmpz_poly_is_unit(fmpz_poly_t op) - void fmpz_poly_add(fmpz_poly_t res, fmpz_poly_t poly1, fmpz_poly_t poly2) - void fmpz_poly_sub(fmpz_poly_t res, fmpz_poly_t poly1, fmpz_poly_t poly2) - void fmpz_poly_neg(fmpz_poly_t res, fmpz_poly_t poly) + void _fmpz_poly_reverse(fmpz_struct * res, const fmpz_struct * poly, slong len, slong n) + void fmpz_poly_reverse(fmpz_poly_t res, const fmpz_poly_t poly, slong n) + void fmpz_poly_truncate(fmpz_poly_t poly, slong newlen) + void fmpz_poly_set_trunc(fmpz_poly_t res, const fmpz_poly_t poly, slong n) + void fmpz_poly_randtest(fmpz_poly_t f, flint_rand_t state, slong len, flint_bitcnt_t bits) + void fmpz_poly_randtest_unsigned(fmpz_poly_t f, flint_rand_t state, slong len, flint_bitcnt_t bits) + void fmpz_poly_randtest_not_zero(fmpz_poly_t f, flint_rand_t state, slong len, flint_bitcnt_t bits) + void fmpz_poly_randtest_no_real_root(fmpz_poly_t p, flint_rand_t state, slong len, flint_bitcnt_t bits) + void fmpz_poly_get_coeff_fmpz(fmpz_t x, const fmpz_poly_t poly, slong n) + slong fmpz_poly_get_coeff_si(const fmpz_poly_t poly, slong n) + ulong fmpz_poly_get_coeff_ui(const fmpz_poly_t poly, slong n) + fmpz_struct * fmpz_poly_get_coeff_ptr(const fmpz_poly_t poly, slong n) + fmpz_struct * fmpz_poly_lead(const fmpz_poly_t poly) + void fmpz_poly_set_coeff_fmpz(fmpz_poly_t poly, slong n, const fmpz_t x) + void fmpz_poly_set_coeff_si(fmpz_poly_t poly, slong n, slong x) + void fmpz_poly_set_coeff_ui(fmpz_poly_t poly, slong n, ulong x) + int fmpz_poly_equal(const fmpz_poly_t poly1, const fmpz_poly_t poly2) + int fmpz_poly_equal_trunc(const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) + int fmpz_poly_is_zero(const fmpz_poly_t poly) + int fmpz_poly_is_one(const fmpz_poly_t poly) + int fmpz_poly_is_unit(const fmpz_poly_t poly) + int fmpz_poly_is_gen(const fmpz_poly_t poly) + void _fmpz_poly_add(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) + void fmpz_poly_add(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + void fmpz_poly_add_series(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong n) + void _fmpz_poly_sub(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) + void fmpz_poly_sub(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + void fmpz_poly_sub_series(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong n) + void fmpz_poly_neg(fmpz_poly_t res, const fmpz_poly_t poly) + void fmpz_poly_scalar_abs(fmpz_poly_t res, const fmpz_poly_t poly) + void fmpz_poly_scalar_mul_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t x) + # void fmpz_poly_scalar_mul_mpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const mpz_t x) + void fmpz_poly_scalar_mul_si(fmpz_poly_t poly1, fmpz_poly_t poly2, slong x) void fmpz_poly_scalar_mul_ui(fmpz_poly_t poly1, fmpz_poly_t poly2, ulong x) - void fmpz_poly_scalar_mul_si(fmpz_poly_t poly1, fmpz_poly_t poly2, long x) - void fmpz_poly_scalar_mul_fmpz(fmpz_poly_t poly1, fmpz_poly_t poly2, fmpz_t x) - void fmpz_poly_scalar_addmul_fmpz(fmpz_poly_t poly1, fmpz_poly_t poly2, fmpz_t x) - void fmpz_poly_scalar_submul_fmpz(fmpz_poly_t poly1, fmpz_poly_t poly2, fmpz_t x) + void fmpz_poly_scalar_mul_2exp(fmpz_poly_t poly1, fmpz_poly_t poly2, ulong exp) + void fmpz_poly_scalar_addmul_si(fmpz_poly_t poly1, const fmpz_poly_t poly2, slong x) + void fmpz_poly_scalar_addmul_ui(fmpz_poly_t poly1, const fmpz_poly_t poly2, ulong x) + void fmpz_poly_scalar_addmul_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t x) + void fmpz_poly_scalar_submul_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t x) + void fmpz_poly_scalar_fdiv_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t x) + # void fmpz_poly_scalar_fdiv_mpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const mpz_t x) + void fmpz_poly_scalar_fdiv_si(fmpz_poly_t poly1, fmpz_poly_t poly2, slong x) void fmpz_poly_scalar_fdiv_ui(fmpz_poly_t poly1, fmpz_poly_t poly2, ulong x) - void fmpz_poly_scalar_fdiv_si(fmpz_poly_t poly1, fmpz_poly_t poly2, long x) - void fmpz_poly_scalar_fdiv_fmpz(fmpz_poly_t poly1, fmpz_poly_t poly2, fmpz_t x) + void fmpz_poly_scalar_fdiv_2exp(fmpz_poly_t poly1, fmpz_poly_t poly2, ulong x) + void fmpz_poly_scalar_tdiv_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t x) + void fmpz_poly_scalar_tdiv_si(fmpz_poly_t poly1, fmpz_poly_t poly2, slong x) void fmpz_poly_scalar_tdiv_ui(fmpz_poly_t poly1, fmpz_poly_t poly2, ulong x) - void fmpz_poly_scalar_tdiv_si(fmpz_poly_t poly1, fmpz_poly_t poly2, long x) - void fmpz_poly_scalar_tdiv_fmpz(fmpz_poly_t poly1, fmpz_poly_t poly2, fmpz_t x) + void fmpz_poly_scalar_tdiv_2exp(fmpz_poly_t poly1, fmpz_poly_t poly2, ulong x) + void fmpz_poly_scalar_divexact_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t x) + # void fmpz_poly_scalar_divexact_mpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const mpz_t x) + void fmpz_poly_scalar_divexact_si(fmpz_poly_t poly1, fmpz_poly_t poly2, slong x) void fmpz_poly_scalar_divexact_ui(fmpz_poly_t poly1, fmpz_poly_t poly2, ulong x) - void fmpz_poly_scalar_divexact_si(fmpz_poly_t poly1, fmpz_poly_t poly2, long x) - void fmpz_poly_scalar_divexact_fmpz(fmpz_poly_t poly1, fmpz_poly_t poly2, fmpz_t x) - void fmpz_poly_mul(fmpz_poly_t res, fmpz_poly_t poly1, fmpz_poly_t poly2) - void fmpz_poly_mullow(fmpz_poly_t res, fmpz_poly_t poly1, fmpz_poly_t poly2, long n) - void fmpz_poly_mulhigh_n(fmpz_poly_t res, fmpz_poly_t poly1, fmpz_poly_t poly2, long n) - void fmpz_poly_pow(fmpz_poly_t res, fmpz_poly_t poly, ulong e) - void fmpz_poly_pow_trunc(fmpz_poly_t res, fmpz_poly_t poly, ulong e, long n) - void fmpz_poly_shift_left(fmpz_poly_t res, fmpz_poly_t poly, long n) - void fmpz_poly_shift_right(fmpz_poly_t res, fmpz_poly_t poly, long n) - void fmpz_poly_2norm(fmpz_t res, fmpz_poly_t poly) - void fmpz_poly_gcd(fmpz_poly_t res, fmpz_poly_t poly1, fmpz_poly_t poly2) - void fmpz_poly_xgcd(fmpz_t r, fmpz_poly_t s, fmpz_poly_t t, fmpz_poly_t poly1, fmpz_poly_t poly2) - void fmpz_poly_content(fmpz_t res, fmpz_poly_t poly) - void fmpz_poly_primitive_part(fmpz_poly_t res, fmpz_poly_t poly) - void fmpz_poly_divrem(fmpz_poly_t Q, fmpz_poly_t R, fmpz_poly_t A, fmpz_poly_t B) - void fmpz_poly_div(fmpz_poly_t Q, fmpz_poly_t A, fmpz_poly_t B) - void fmpz_poly_rem(fmpz_poly_t R, fmpz_poly_t A, fmpz_poly_t B) - fmpz_poly_inv_series(fmpz_poly_t Qinv, fmpz_poly_t Q, long n) - void fmpz_poly_div_series(fmpz_poly_t Q, fmpz_poly_t A, fmpz_poly_t B, long n) - int fmpz_poly_divides(fmpz_poly_t q, fmpz_poly_t a, fmpz_poly_t b) - void fmpz_poly_derivative(fmpz_poly_t res, fmpz_poly_t poly) - void fmpz_poly_evaluate_fmpz(fmpz_t res, fmpz_poly_t f, fmpz_t a) - #void fmpz_poly_evaluate_mpq(mpq_t res, fmpz_poly_t f, mpq_t a) - mp_limb_t fmpz_poly_evaluate_mod(fmpz_poly_t poly, mp_limb_t a, mp_limb_t n) - void fmpz_poly_compose(fmpz_poly_t res, fmpz_poly_t poly1, fmpz_poly_t poly2) - - void fmpz_poly_compose_series(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, long n) - void fmpz_poly_revert_series(fmpz_poly_t Qinv, const fmpz_poly_t Q, long n) - - void fmpz_poly_signature(long * r1, long * r2, fmpz_poly_t poly) - int fmpz_poly_print(fmpz_poly_t poly) - int fmpz_poly_print_pretty(fmpz_poly_t poly, char * x) - void fmpz_poly_evaluate_fmpz_vec(fmpz_struct * res, fmpz_poly_t f, fmpz_struct * a, long n) - void fmpz_poly_interpolate_fmpz_vec(fmpz_poly_t poly, fmpz_struct * xs, fmpz_struct * ys, long n) - void fmpz_poly_get_nmod_poly(nmod_poly_t res, fmpz_poly_t poly) - void fmpz_poly_set_nmod_poly(fmpz_poly_t res, nmod_poly_t poly) - void fmpz_poly_set_nmod_poly_unsigned(fmpz_poly_t res, nmod_poly_t poly) - void fmpz_poly_cyclotomic(fmpz_poly_t, ulong) - void fmpz_poly_cos_minpoly(fmpz_poly_t, ulong) - void fmpz_poly_swinnerton_dyer(fmpz_poly_t, ulong) + void fmpz_poly_scalar_mod_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t p) + void fmpz_poly_scalar_smod_fmpz(fmpz_poly_t poly1, const fmpz_poly_t poly2, const fmpz_t p) + slong _fmpz_poly_remove_content_2exp(fmpz_struct * pol, slong len) + void _fmpz_poly_scale_2exp(fmpz_struct * pol, slong len, slong k) + # void _fmpz_poly_bit_pack(mp_ptr arr, const fmpz_struct * poly, slong len, flint_bitcnt_t bit_size, int negate) + # int _fmpz_poly_bit_unpack(fmpz_struct * poly, slong len, mp_srcptr arr, flint_bitcnt_t bit_size, int negate) + # void _fmpz_poly_bit_unpack_unsigned(fmpz_struct * poly, slong len, mp_srcptr_t arr, flint_bitcnt_t bit_size) + void fmpz_poly_bit_pack(fmpz_t f, const fmpz_poly_t poly, flint_bitcnt_t bit_size) + void fmpz_poly_bit_unpack(fmpz_poly_t poly, const fmpz_t f, flint_bitcnt_t bit_size) + void fmpz_poly_bit_unpack_unsigned(fmpz_poly_t poly, const fmpz_t f, flint_bitcnt_t bit_size) + void _fmpz_poly_mul_classical(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) + void fmpz_poly_mul_classical(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + void _fmpz_poly_mullow_classical(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2, slong n) + void fmpz_poly_mullow_classical(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) + void _fmpz_poly_mulhigh_classical(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2, slong start) + void fmpz_poly_mulhigh_classical(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong start) + void _fmpz_poly_mulmid_classical(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) + void fmpz_poly_mulmid_classical(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + void _fmpz_poly_mul_karatsuba(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) + void fmpz_poly_mul_karatsuba(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + void _fmpz_poly_mullow_karatsuba_n(fmpz_struct * res, const fmpz_struct * poly1, const fmpz_struct * poly2, slong n) + void fmpz_poly_mullow_karatsuba_n(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) + void _fmpz_poly_mulhigh_karatsuba_n(fmpz_struct * res, const fmpz_struct * poly1, const fmpz_struct * poly2, slong len) + void fmpz_poly_mulhigh_karatsuba_n(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong len) + void _fmpz_poly_mul_KS(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) + void fmpz_poly_mul_KS(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + void _fmpz_poly_mullow_KS(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2, slong n) + void fmpz_poly_mullow_KS(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) + void _fmpz_poly_mul_SS(fmpz_struct * output, const fmpz_struct * input1, slong length1, const fmpz_struct * input2, slong length2) + void fmpz_poly_mul_SS(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + void _fmpz_poly_mullow_SS(fmpz_struct * output, const fmpz_struct * input1, slong length1, const fmpz_struct * input2, slong length2, slong n) + void fmpz_poly_mullow_SS(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) + void _fmpz_poly_mul(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) + void fmpz_poly_mul(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + void _fmpz_poly_mullow(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2, slong n) + void fmpz_poly_mullow(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) + void fmpz_poly_mulhigh_n(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) + void _fmpz_poly_mulhigh(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2, slong start) + # void fmpz_poly_mul_SS_precache_init(fmpz_poly_mul_precache_t pre, slong len1, slong bits1, const fmpz_poly_t poly2) + # void fmpz_poly_mul_precache_clear(fmpz_poly_mul_precache_t pre) + # void _fmpz_poly_mullow_SS_precache(fmpz_struct * output, const fmpz_struct * input1, slong len1, fmpz_poly_mul_precache_t pre, slong trunc) + # void fmpz_poly_mullow_SS_precache(fmpz_poly_t res, const fmpz_poly_t poly1, fmpz_poly_mul_precache_t pre, slong n) + # void fmpz_poly_mul_SS_precache(fmpz_poly_t res, const fmpz_poly_t poly1, fmpz_poly_precache_t pre) + void _fmpz_poly_sqr_KS(fmpz_struct * rop, const fmpz_struct * op, slong len) + void fmpz_poly_sqr_KS(fmpz_poly_t rop, const fmpz_poly_t op) + void _fmpz_poly_sqr_karatsuba(fmpz_struct * rop, const fmpz_struct * op, slong len) + void fmpz_poly_sqr_karatsuba(fmpz_poly_t rop, const fmpz_poly_t op) + void _fmpz_poly_sqr_classical(fmpz_struct * rop, const fmpz_struct * op, slong len) + void fmpz_poly_sqr_classical(fmpz_poly_t rop, const fmpz_poly_t op) + void _fmpz_poly_sqr(fmpz_struct * rop, const fmpz_struct * op, slong len) + void fmpz_poly_sqr(fmpz_poly_t rop, const fmpz_poly_t op) + void _fmpz_poly_sqrlow_KS(fmpz_struct * res, const fmpz_struct * poly, slong len, slong n) + void fmpz_poly_sqrlow_KS(fmpz_poly_t res, const fmpz_poly_t poly, slong n) + void _fmpz_poly_sqrlow_karatsuba_n(fmpz_struct * res, const fmpz_struct * poly, slong n) + void fmpz_poly_sqrlow_karatsuba_n(fmpz_poly_t res, const fmpz_poly_t poly, slong n) + void _fmpz_poly_sqrlow_classical(fmpz_struct * res, const fmpz_struct * poly, slong len, slong n) + void fmpz_poly_sqrlow_classical(fmpz_poly_t res, const fmpz_poly_t poly, slong n) + void _fmpz_poly_sqrlow(fmpz_struct * res, const fmpz_struct * poly, slong len, slong n) + void fmpz_poly_sqrlow(fmpz_poly_t res, const fmpz_poly_t poly, slong n) + void _fmpz_poly_pow_multinomial(fmpz_struct * res, const fmpz_struct * poly, slong len, ulong e) + void fmpz_poly_pow_multinomial(fmpz_poly_t res, const fmpz_poly_t poly, ulong e) + void _fmpz_poly_pow_binomial(fmpz_struct * res, const fmpz_struct * poly, ulong e) + void fmpz_poly_pow_binomial(fmpz_poly_t res, const fmpz_poly_t poly, ulong e) + void _fmpz_poly_pow_addchains(fmpz_struct * res, const fmpz_struct * poly, slong len, const int * a, int n) + void fmpz_poly_pow_addchains(fmpz_poly_t res, const fmpz_poly_t poly, ulong e) + void _fmpz_poly_pow_binexp(fmpz_struct * res, const fmpz_struct * poly, slong len, ulong e) + void fmpz_poly_pow_binexp(fmpz_poly_t res, const fmpz_poly_t poly, ulong e) + void _fmpz_poly_pow_small(fmpz_struct * res, const fmpz_struct * poly, slong len, ulong e) + void _fmpz_poly_pow(fmpz_struct * res, const fmpz_struct * poly, slong len, ulong e) + void fmpz_poly_pow(fmpz_poly_t res, const fmpz_poly_t poly, ulong e) + void _fmpz_poly_pow_trunc(fmpz_struct * res, const fmpz_struct * poly, ulong e, slong n) + void fmpz_poly_pow_trunc(fmpz_poly_t res, const fmpz_poly_t poly, ulong e, slong n) + void _fmpz_poly_shift_left(fmpz_struct * res, const fmpz_struct * poly, slong len, slong n) + void fmpz_poly_shift_left(fmpz_poly_t res, const fmpz_poly_t poly, slong n) + void _fmpz_poly_shift_right(fmpz_struct * res, const fmpz_struct * poly, slong len, slong n) + void fmpz_poly_shift_right(fmpz_poly_t res, const fmpz_poly_t poly, slong n) + ulong fmpz_poly_max_limbs(const fmpz_poly_t poly) + slong fmpz_poly_max_bits(const fmpz_poly_t poly) + void fmpz_poly_height(fmpz_t height, const fmpz_poly_t poly) + void _fmpz_poly_2norm(fmpz_t res, const fmpz_struct * poly, slong len) + void fmpz_poly_2norm(fmpz_t res, const fmpz_poly_t poly) + mp_limb_t _fmpz_poly_2norm_normalised_bits(const fmpz_struct * poly, slong len) + void _fmpz_poly_gcd_subresultant(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) + void fmpz_poly_gcd_subresultant(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + int _fmpz_poly_gcd_heuristic(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) + int fmpz_poly_gcd_heuristic(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + void _fmpz_poly_gcd_modular(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) + void fmpz_poly_gcd_modular(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + void _fmpz_poly_gcd(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) + void fmpz_poly_gcd(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + void _fmpz_poly_xgcd_modular(fmpz_t r, fmpz_struct * s, fmpz_struct * t, const fmpz_struct * f, slong len1, const fmpz_struct * g, slong len2) + 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) + void _fmpz_poly_xgcd(fmpz_t r, fmpz_struct * s, fmpz_struct * t, const fmpz_struct * f, slong len1, const fmpz_struct * g, slong len2) + 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) + void _fmpz_poly_lcm(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) + void fmpz_poly_lcm(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + void _fmpz_poly_resultant_modular(fmpz_t res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) + void fmpz_poly_resultant_modular(fmpz_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + 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) + void _fmpz_poly_resultant_euclidean(fmpz_t res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) + void fmpz_poly_resultant_euclidean(fmpz_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + void _fmpz_poly_resultant(fmpz_t res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) + void fmpz_poly_resultant(fmpz_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + void _fmpz_poly_discriminant(fmpz_t res, const fmpz_struct * poly, slong len) + void fmpz_poly_discriminant(fmpz_t res, const fmpz_poly_t poly) + void _fmpz_poly_content(fmpz_t res, const fmpz_struct * poly, slong len) + void fmpz_poly_content(fmpz_t res, const fmpz_poly_t poly) + void _fmpz_poly_primitive_part(fmpz_struct * res, const fmpz_struct * poly, slong len) + void fmpz_poly_primitive_part(fmpz_poly_t res, const fmpz_poly_t poly) + int _fmpz_poly_is_squarefree(const fmpz_struct * poly, slong len) + int fmpz_poly_is_squarefree(const fmpz_poly_t poly) + int _fmpz_poly_divrem_basecase(fmpz_struct * Q, fmpz_struct * R, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, int exact) + void fmpz_poly_divrem_basecase(fmpz_poly_t Q, fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B) + int _fmpz_poly_divrem_divconquer_recursive(fmpz_struct * Q, fmpz_struct * BQ, fmpz_struct * W, const fmpz_struct * A, const fmpz_struct * B, slong lenB, int exact) + int _fmpz_poly_divrem_divconquer(fmpz_struct * Q, fmpz_struct * R, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, int exact) + void fmpz_poly_divrem_divconquer(fmpz_poly_t Q, fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B) + int _fmpz_poly_divrem(fmpz_struct * Q, fmpz_struct * R, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, int exact) + void fmpz_poly_divrem(fmpz_poly_t Q, fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B) + int _fmpz_poly_div_basecase(fmpz_struct * Q, fmpz_struct * R, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, int exact) + void fmpz_poly_div_basecase(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B) + int _fmpz_poly_divremlow_divconquer_recursive(fmpz_struct * Q, fmpz_struct * BQ, const fmpz_struct * A, const fmpz_struct * B, slong lenB, int exact) + int _fmpz_poly_div_divconquer_recursive(fmpz_struct * Q, fmpz_struct * temp, const fmpz_struct * A, const fmpz_struct * B, slong lenB, int exact) + int _fmpz_poly_div_divconquer(fmpz_struct * Q, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, int exact) + void fmpz_poly_div_divconquer(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B) + int _fmpz_poly_div(fmpz_struct * Q, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, int exact) + void fmpz_poly_div(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B) + void _fmpz_poly_rem_basecase(fmpz_struct * R, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB) + void fmpz_poly_rem_basecase(fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B) + void _fmpz_poly_rem(fmpz_struct * R, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB) + void fmpz_poly_rem(fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B) + void _fmpz_poly_div_root(fmpz_struct * Q, const fmpz_struct * A, slong len, const fmpz_t c) + void fmpz_poly_div_root(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_t c) + void _fmpz_poly_preinvert(fmpz_struct * B_inv, const fmpz_struct * B, slong n) + void fmpz_poly_preinvert(fmpz_poly_t B_inv, const fmpz_poly_t B) + void _fmpz_poly_div_preinv(fmpz_struct * Q, const fmpz_struct * A, slong len1, const fmpz_struct * B, const fmpz_struct * B_inv, slong len2) + 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) + void _fmpz_poly_divrem_preinv(fmpz_struct * Q, fmpz_struct * A, slong len1, const fmpz_struct * B, const fmpz_struct * B_inv, slong len2) + void fmpz_poly_divrem_preinv(fmpz_poly_t Q, fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B, const fmpz_poly_t B_inv) + fmpz_struct ** _fmpz_poly_powers_precompute(const fmpz_struct * B, slong len) + # void fmpz_poly_powers_precompute(fmpz_poly_powers_precomp_t pinv, fmpz_poly_t poly) + # void _fmpz_poly_powers_clear(fmpz_struct ** powers, slong len) + # void fmpz_poly_powers_clear(fmpz_poly_powers_precomp_t pinv) + # void _fmpz_poly_rem_powers_precomp(fmpz_struct * A, slong m, const fmpz_struct * B, slong n, fmpz_struct ** const powers) + # void fmpz_poly_rem_powers_precomp(fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B, const fmpz_poly_powers_precomp_t B_inv) + int _fmpz_poly_divides(fmpz_struct * Q, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB) + int fmpz_poly_divides(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B) + slong fmpz_poly_remove(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + void fmpz_poly_divlow_smodp(fmpz_struct * res, const fmpz_poly_t f, const fmpz_poly_t g, const fmpz_t p, slong n) + void fmpz_poly_divhigh_smodp(fmpz_struct * res, const fmpz_poly_t f, const fmpz_poly_t g, const fmpz_t p, slong n) + void _fmpz_poly_inv_series_basecase(fmpz_struct * Qinv, const fmpz_struct * Q, slong Qlen, slong n) + void fmpz_poly_inv_series_basecase(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong n) + void _fmpz_poly_inv_series_newton(fmpz_struct * Qinv, const fmpz_struct * Q, slong n) + void fmpz_poly_inv_series_newton(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong Qlen, slong n) + void _fmpz_poly_inv_series(fmpz_struct * Qinv, const fmpz_struct * Q, slong n) + void fmpz_poly_inv_series(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong n) + void _fmpz_poly_div_series_basecase(fmpz_struct * Q, const fmpz_struct * A, slong Alen, const fmpz_struct * B, slong Blen, slong n) + void _fmpz_poly_div_series_divconquer(fmpz_struct * Q, const fmpz_struct * A, slong Alen, const fmpz_struct * B, slong Blen, slong n) + void _fmpz_poly_div_series(fmpz_struct * Q, const fmpz_struct * A, slong Alen, const fmpz_struct * B, slong Blen, slong n) + void fmpz_poly_div_series_basecase(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B, slong n) + void fmpz_poly_div_series_divconquer(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B, slong n) + void fmpz_poly_div_series(fmpz_poly_t Q, const fmpz_poly_t A, const fmpz_poly_t B, slong n) + # void _fmpz_poly_pseudo_divrem_basecase(fmpz_struct * Q, fmpz_struct * R, ulong * d, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_preinvn_t inv) + void fmpz_poly_pseudo_divrem_basecase(fmpz_poly_t Q, fmpz_poly_t R, ulong * d, const fmpz_poly_t A, const fmpz_poly_t B) + # void _fmpz_poly_pseudo_divrem_divconquer(fmpz_struct * Q, fmpz_struct * R, ulong * d, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_preinvn_t inv) + void fmpz_poly_pseudo_divrem_divconquer(fmpz_poly_t Q, fmpz_poly_t R, ulong * d, const fmpz_poly_t A, const fmpz_poly_t B) + void _fmpz_poly_pseudo_divrem_cohen(fmpz_struct * Q, fmpz_struct * R, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB) + void fmpz_poly_pseudo_divrem_cohen(fmpz_poly_t Q, fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B) + void _fmpz_poly_pseudo_rem_cohen(fmpz_struct * R, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB) + void fmpz_poly_pseudo_rem_cohen(fmpz_poly_t R, const fmpz_poly_t A, const fmpz_poly_t B) + # void _fmpz_poly_pseudo_divrem(fmpz_struct * Q, fmpz_struct * R, ulong * d, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_preinvn_t inv) + void fmpz_poly_pseudo_divrem(fmpz_poly_t Q, fmpz_poly_t R, ulong * d, const fmpz_poly_t A, const fmpz_poly_t B) + # void _fmpz_poly_pseudo_div(fmpz_struct * Q, ulong * d, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_preinvn_t inv) + void fmpz_poly_pseudo_div(fmpz_poly_t Q, ulong * d, const fmpz_poly_t A, const fmpz_poly_t B) + # void _fmpz_poly_pseudo_rem(fmpz_struct * R, ulong * d, const fmpz_struct * A, slong lenA, const fmpz_struct * B, slong lenB, const fmpz_preinvn_t inv) + void fmpz_poly_pseudo_rem(fmpz_poly_t R, ulong * d, const fmpz_poly_t A, const fmpz_poly_t B) + void _fmpz_poly_derivative(fmpz_struct * rpoly, const fmpz_struct * poly, slong len) + void fmpz_poly_derivative(fmpz_poly_t res, const fmpz_poly_t poly) + void _fmpz_poly_nth_derivative(fmpz_struct * rpoly, const fmpz_struct * poly, ulong n, slong len) + void fmpz_poly_nth_derivative(fmpz_poly_t res, const fmpz_poly_t poly, ulong n) + void _fmpz_poly_evaluate_divconquer_fmpz(fmpz_t res, const fmpz_struct * poly, slong len, const fmpz_t a) + void fmpz_poly_evaluate_divconquer_fmpz(fmpz_t res, const fmpz_poly_t poly, const fmpz_t a) + void _fmpz_poly_evaluate_horner_fmpz(fmpz_t res, const fmpz_struct * f, slong len, const fmpz_t a) + void fmpz_poly_evaluate_horner_fmpz(fmpz_t res, const fmpz_poly_t f, const fmpz_t a) + void _fmpz_poly_evaluate_fmpz(fmpz_t res, const fmpz_struct * f, slong len, const fmpz_t a) + void fmpz_poly_evaluate_fmpz(fmpz_t res, const fmpz_poly_t f, const fmpz_t a) + void _fmpz_poly_evaluate_divconquer_fmpq(fmpz_t rnum, fmpz_t rden, const fmpz_struct * f, slong len, const fmpz_t anum, const fmpz_t aden) + void fmpz_poly_evaluate_divconquer_fmpq(fmpq_t res, const fmpz_poly_t f, const fmpq_t a) + void _fmpz_poly_evaluate_horner_fmpq(fmpz_t rnum, fmpz_t rden, const fmpz_struct * f, slong len, const fmpz_t anum, const fmpz_t aden) + void fmpz_poly_evaluate_horner_fmpq(fmpq_t res, const fmpz_poly_t f, const fmpq_t a) + void _fmpz_poly_evaluate_fmpq(fmpz_t rnum, fmpz_t rden, const fmpz_struct * f, slong len, const fmpz_t anum, const fmpz_t aden) + void fmpz_poly_evaluate_fmpq(fmpq_t res, const fmpz_poly_t f, const fmpq_t a) + # void fmpz_poly_evaluate_mpq(mpq_t res, const fmpz_poly_t f, const mpq_t a) + mp_limb_t _fmpz_poly_evaluate_mod(const fmpz_struct * poly, slong len, mp_limb_t a, mp_limb_t n, mp_limb_t ninv) + mp_limb_t fmpz_poly_evaluate_mod(const fmpz_poly_t poly, mp_limb_t a, mp_limb_t n) + void fmpz_poly_evaluate_fmpz_vec(fmpz_struct * res, const fmpz_poly_t f, const fmpz_struct * a, slong n) + double _fmpz_poly_evaluate_horner_d(const fmpz_struct * poly, slong n, double d) + double fmpz_poly_evaluate_horner_d(const fmpz_poly_t poly, double d) + double _fmpz_poly_evaluate_horner_d_2exp(slong * exp, const fmpz_struct * poly, slong n, double d) + double fmpz_poly_evaluate_horner_d_2exp(slong * exp, const fmpz_poly_t poly, double d) + double _fmpz_poly_evaluate_horner_d_2exp2(slong * exp, const fmpz_struct * poly, slong n, double d, slong dexp) + void _fmpz_poly_monomial_to_newton(fmpz_struct * poly, const fmpz_struct * roots, slong n) + void _fmpz_poly_newton_to_monomial(fmpz_struct * poly, const fmpz_struct * roots, slong n) + void fmpz_poly_interpolate_fmpz_vec(fmpz_poly_t poly, const fmpz_struct * xs, const fmpz_struct * ys, slong n) + void _fmpz_poly_compose_horner(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) + void fmpz_poly_compose_horner(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + void _fmpz_poly_compose_divconquer(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) + void fmpz_poly_compose_divconquer(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + void _fmpz_poly_compose(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2) + void fmpz_poly_compose(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2) + void fmpz_poly_inflate(fmpz_poly_t result, const fmpz_poly_t input, ulong inflation) + void fmpz_poly_deflate(fmpz_poly_t result, const fmpz_poly_t input, ulong deflation) + ulong fmpz_poly_deflation(const fmpz_poly_t input) + void _fmpz_poly_taylor_shift_horner(fmpz_struct * poly, const fmpz_t c, slong n) + void fmpz_poly_taylor_shift_horner(fmpz_poly_t g, const fmpz_poly_t f, const fmpz_t c) + void _fmpz_poly_taylor_shift_divconquer(fmpz_struct * poly, const fmpz_t c, slong n) + void fmpz_poly_taylor_shift_divconquer(fmpz_poly_t g, const fmpz_poly_t f, const fmpz_t c) + void _fmpz_poly_taylor_shift_multi_mod(fmpz_struct * poly, const fmpz_t c, slong n) + void fmpz_poly_taylor_shift_multi_mod(fmpz_poly_t g, const fmpz_poly_t f, const fmpz_t c) + void _fmpz_poly_taylor_shift(fmpz_struct * poly, const fmpz_t c, slong n) + void fmpz_poly_taylor_shift(fmpz_poly_t g, const fmpz_poly_t f, const fmpz_t c) + void _fmpz_poly_compose_series_horner(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2, slong n) + void fmpz_poly_compose_series_horner(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) + void _fmpz_poly_compose_series_brent_kung(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2, slong n) + void fmpz_poly_compose_series_brent_kung(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) + void _fmpz_poly_compose_series(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_struct * poly2, slong len2, slong n) + void fmpz_poly_compose_series(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_poly_t poly2, slong n) + void _fmpz_poly_revert_series_lagrange(fmpz_struct * Qinv, const fmpz_struct * Q, slong Qlen, slong n) + void fmpz_poly_revert_series_lagrange(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong n) + void _fmpz_poly_revert_series_lagrange_fast(fmpz_struct * Qinv, const fmpz_struct * Q, slong Qlen, slong n) + void fmpz_poly_revert_series_lagrange_fast(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong n) + void _fmpz_poly_revert_series_newton(fmpz_struct * Qinv, const fmpz_struct * Q, slong Qlen, slong n) + void fmpz_poly_revert_series_newton(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong n) + void _fmpz_poly_revert_series(fmpz_struct * Qinv, const fmpz_struct * Q, slong Qlen, slong n) + void fmpz_poly_revert_series(fmpz_poly_t Qinv, const fmpz_poly_t Q, slong n) + int _fmpz_poly_sqrtrem_classical(fmpz_struct * res, fmpz_struct * r, const fmpz_struct * poly, slong len) + int fmpz_poly_sqrtrem_classical(fmpz_poly_t b, fmpz_poly_t r, const fmpz_poly_t a) + int _fmpz_poly_sqrtrem_divconquer(fmpz_struct * res, fmpz_struct * r, const fmpz_struct * poly, slong len, fmpz_struct * temp) + int fmpz_poly_sqrtrem_divconquer(fmpz_poly_t b, fmpz_poly_t r, const fmpz_poly_t a) + int _fmpz_poly_sqrt_classical(fmpz_struct * res, const fmpz_struct * poly, slong len, int exact) + int fmpz_poly_sqrt_classical(fmpz_poly_t b, const fmpz_poly_t a) + int _fmpz_poly_sqrt_KS(fmpz_struct * res, const fmpz_struct * poly, slong len) + int fmpz_poly_sqrt_KS(fmpz_poly_t b, const fmpz_poly_t a) + int _fmpz_poly_sqrt_divconquer(fmpz_struct * res, const fmpz_struct * poly, slong len, int exact) + int fmpz_poly_sqrt_divconquer(fmpz_poly_t b, const fmpz_poly_t a) + int _fmpz_poly_sqrt(fmpz_struct * res, const fmpz_struct * poly, slong len) int fmpz_poly_sqrt(fmpz_poly_t b, const fmpz_poly_t a) + int _fmpz_poly_sqrt_series(fmpz_struct * res, const fmpz_struct * poly, slong len, slong n) + int fmpz_poly_sqrt_series(fmpz_poly_t b, const fmpz_poly_t a, slong n) + void _fmpz_poly_power_sums_naive(fmpz_struct * res, const fmpz_struct * poly, slong len, slong n) + void fmpz_poly_power_sums_naive(fmpz_poly_t res, const fmpz_poly_t poly, slong n) + void fmpz_poly_power_sums(fmpz_poly_t res, const fmpz_poly_t poly, slong n) + void _fmpz_poly_power_sums_to_poly(fmpz_struct * res, const fmpz_struct * poly, slong len) + void fmpz_poly_power_sums_to_poly(fmpz_poly_t res, const fmpz_poly_t Q) + void _fmpz_poly_signature(slong * r1, slong * r2, const fmpz_struct * poly, slong len) + void fmpz_poly_signature(slong * r1, slong * r2, const fmpz_poly_t poly) + void fmpz_poly_hensel_build_tree(slong * link, fmpz_poly_t *v, fmpz_poly_t *w, const nmod_poly_factor_t fac) + void fmpz_poly_hensel_lift(fmpz_poly_t G, fmpz_poly_t H, fmpz_poly_t A, fmpz_poly_t B, const fmpz_poly_t f, const fmpz_poly_t g, const fmpz_poly_t h, const fmpz_poly_t a, const fmpz_poly_t b, const fmpz_t p, const fmpz_t p1) + void fmpz_poly_hensel_lift_without_inverse(fmpz_poly_t Gout, fmpz_poly_t Hout, const fmpz_poly_t f, const fmpz_poly_t g, const fmpz_poly_t h, const fmpz_poly_t a, const fmpz_poly_t b, const fmpz_t p, const fmpz_t p1) + void fmpz_poly_hensel_lift_only_inverse(fmpz_poly_t Aout, fmpz_poly_t Bout, const fmpz_poly_t G, const fmpz_poly_t H, const fmpz_poly_t a, const fmpz_poly_t b, const fmpz_t p, const fmpz_t p1) + void fmpz_poly_hensel_lift_tree_recursive(slong *link, fmpz_poly_t *v, fmpz_poly_t *w, fmpz_poly_t f, slong j, slong inv, const fmpz_t p0, const fmpz_t p1) + void fmpz_poly_hensel_lift_tree(slong *link, fmpz_poly_t *v, fmpz_poly_t *w, fmpz_poly_t f, slong r, const fmpz_t p, slong e0, slong e1, slong inv) + slong _fmpz_poly_hensel_start_lift(fmpz_poly_factor_t lifted_fac, slong *link, fmpz_poly_t *v, fmpz_poly_t *w, const fmpz_poly_t f, const nmod_poly_factor_t local_fac, slong N) + slong _fmpz_poly_hensel_continue_lift(fmpz_poly_factor_t lifted_fac, slong *link, fmpz_poly_t *v, fmpz_poly_t *w, const fmpz_poly_t f, slong prev, slong curr, slong N, const fmpz_t p) + void fmpz_poly_hensel_lift_once(fmpz_poly_factor_t lifted_fac, const fmpz_poly_t f, const nmod_poly_factor_t local_fac, slong N) + int _fmpz_poly_print(const fmpz_struct * poly, slong len) + int fmpz_poly_print(const fmpz_poly_t poly) + int _fmpz_poly_print_pretty(const fmpz_struct * poly, slong len, const char * x) + int fmpz_poly_print_pretty(const fmpz_poly_t poly, const char * x) + int fmpz_poly_read(fmpz_poly_t poly) + int fmpz_poly_read_pretty(fmpz_poly_t poly, char **x) + void fmpz_poly_get_nmod_poly(nmod_poly_t Amod, fmpz_poly_t A) + void fmpz_poly_set_nmod_poly(fmpz_poly_t A, const nmod_poly_t Amod) + void fmpz_poly_set_nmod_poly_unsigned(fmpz_poly_t A, const nmod_poly_t Amod) + # void _fmpz_poly_CRT_ui_precomp(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_t m1, mp_srcptr poly2, slong len2, mp_limb_t m2, mp_limb_t m2inv, fmpz_t m1m2, mp_limb_t c, int sign) + # void _fmpz_poly_CRT_ui(fmpz_struct * res, const fmpz_struct * poly1, slong len1, const fmpz_t m1, mp_srcptr poly2, slong len2, mp_limb_t m2, mp_limb_t m2inv, int sign) + void fmpz_poly_CRT_ui(fmpz_poly_t res, const fmpz_poly_t poly1, const fmpz_t m, const nmod_poly_t poly2, int sign) + void _fmpz_poly_product_roots_fmpz_vec(fmpz_struct * poly, const fmpz_struct * xs, slong n) + void fmpz_poly_product_roots_fmpz_vec(fmpz_poly_t poly, const fmpz_struct * xs, slong n) + void _fmpz_poly_product_roots_fmpq_vec(fmpz_struct * poly, const fmpq_struct * xs, slong n) + void fmpz_poly_product_roots_fmpq_vec(fmpz_poly_t poly, const fmpq_struct * xs, slong n) + void _fmpz_poly_bound_roots(fmpz_t bound, const fmpz_struct * poly, slong len) + void fmpz_poly_bound_roots(fmpz_t bound, const fmpz_poly_t poly) + void _fmpz_poly_num_real_roots_sturm(slong * n_neg, slong * n_pos, const fmpz_struct * pol, slong len) + slong fmpz_poly_num_real_roots_sturm(const fmpz_poly_t pol) + slong _fmpz_poly_num_real_roots(const fmpz_struct * pol, slong len) + slong fmpz_poly_num_real_roots(const fmpz_poly_t pol) + # void _fmpz_poly_cyclotomic(fmpz_struct * a, ulong n, mp_ptr factors, slong num_factors, ulong phi) + void fmpz_poly_cyclotomic(fmpz_poly_t poly, ulong n) + ulong _fmpz_poly_is_cyclotomic(const fmpz_struct * poly, slong len) + ulong fmpz_poly_is_cyclotomic(fmpz_poly_t poly) + void _fmpz_poly_cos_minpoly(fmpz_struct * coeffs, ulong n) + void fmpz_poly_cos_minpoly(fmpz_poly_t poly, ulong n) + void _fmpz_poly_swinnerton_dyer(fmpz_struct * coeffs, ulong n) + void fmpz_poly_swinnerton_dyer(fmpz_poly_t poly, ulong n) + void _fmpz_poly_chebyshev_t(fmpz_struct * coeffs, ulong n) + void fmpz_poly_chebyshev_t(fmpz_poly_t poly, ulong n) + void _fmpz_poly_chebyshev_u(fmpz_struct * coeffs, ulong n) + void fmpz_poly_chebyshev_u(fmpz_poly_t poly, ulong n) + void _fmpz_poly_legendre_pt(fmpz_struct * coeffs, ulong n) + void fmpz_poly_legendre_pt(fmpz_poly_t poly, ulong n) + void _fmpz_poly_hermite_h(fmpz_struct * coeffs, ulong n) + void fmpz_poly_hermite_h(fmpz_poly_t poly, ulong n) + void _fmpz_poly_hermite_he(fmpz_struct * coeffs, ulong n) + void fmpz_poly_hermite_he(fmpz_poly_t poly, ulong n) + void _fmpz_poly_fibonacci(fmpz_struct * coeffs, ulong n) + void fmpz_poly_fibonacci(fmpz_poly_t poly, ulong n) + void arith_eulerian_polynomial(fmpz_poly_t res, ulong n) + void _fmpz_poly_eta_qexp(fmpz_struct * f, slong r, slong len) + void fmpz_poly_eta_qexp(fmpz_poly_t f, slong r, slong n) + void _fmpz_poly_theta_qexp(fmpz_struct * f, slong r, slong len) + void fmpz_poly_theta_qexp(fmpz_poly_t f, slong r, slong n) + void fmpz_poly_CLD_bound(fmpz_t res, const fmpz_poly_t f, slong n) diff --git a/src/flint/flintlib/fmpz_poly_factor.pxd b/src/flint/flintlib/fmpz_poly_factor.pxd index ccced4e4..c1e2ba43 100644 --- a/src/flint/flintlib/fmpz_poly_factor.pxd +++ b/src/flint/flintlib/fmpz_poly_factor.pxd @@ -1,8 +1,22 @@ +from flint.flintlib.flint cimport slong +from flint.flintlib.fmpz cimport fmpz_t, fmpz_struct from flint.flintlib.fmpz_poly cimport fmpz_poly_t, fmpz_poly_factor_t cdef extern from "flint/fmpz_poly_factor.h": +# from here on is parsed void fmpz_poly_factor_init(fmpz_poly_factor_t fac) + void fmpz_poly_factor_init2(fmpz_poly_factor_t fac, slong alloc) + void fmpz_poly_factor_realloc(fmpz_poly_factor_t fac, slong alloc) + void fmpz_poly_factor_fit_length(fmpz_poly_factor_t fac, slong len) void fmpz_poly_factor_clear(fmpz_poly_factor_t fac) - void fmpz_poly_factor_zassenhaus(fmpz_poly_factor_t fac, fmpz_poly_t G) - void fmpz_poly_factor(fmpz_poly_factor_t fac, fmpz_poly_t G) - void fmpz_poly_factor_squarefree(fmpz_poly_factor_t fac, fmpz_poly_t G) + void fmpz_poly_factor_set(fmpz_poly_factor_t res, const fmpz_poly_factor_t fac) + void fmpz_poly_factor_insert(fmpz_poly_factor_t fac, const fmpz_poly_t p, slong e) + void fmpz_poly_factor_concat(fmpz_poly_factor_t res, const fmpz_poly_factor_t fac) + void fmpz_poly_factor_print(const fmpz_poly_factor_t fac) + void fmpz_poly_factor_squarefree(fmpz_poly_factor_t fac, fmpz_poly_t F) + void fmpz_poly_factor_zassenhaus_recombination(fmpz_poly_factor_t final_fac, const fmpz_poly_factor_t lifted_fac, const fmpz_poly_t F, const fmpz_t P, slong exp) + void _fmpz_poly_factor_zassenhaus(fmpz_poly_factor_t final_fac, slong exp, fmpz_poly_t f, slong cutoff, int use_van_hoeij) + void fmpz_poly_factor_zassenhaus(fmpz_poly_factor_t final_fac, fmpz_poly_t F) + void _fmpz_poly_factor_quadratic(fmpz_poly_factor_t fac, const fmpz_poly_t f, slong exp) + void _fmpz_poly_factor_cubic(fmpz_poly_factor_t fac, const fmpz_poly_t f, slong exp) + void fmpz_poly_factor(fmpz_poly_factor_t final_fac, fmpz_poly_t F) diff --git a/src/flint/flintlib/mag.pxd b/src/flint/flintlib/mag.pxd index fe25de18..b89e5634 100644 --- a/src/flint/flintlib/mag.pxd +++ b/src/flint/flintlib/mag.pxd @@ -1,5 +1,6 @@ -from flint._flint cimport ulong, mp_limb_t -from flint.flintlib.fmpz cimport fmpz_struct +from flint.flintlib.flint cimport ulong, mp_limb_t, slong, flint_rand_t +from flint.flintlib.fmpz cimport fmpz_struct, fmpz_t +from flint.flintlib.fmpq cimport fmpq_struct, fmpq_t cdef extern from "mag.h": ctypedef struct mag_struct: @@ -9,9 +10,115 @@ cdef extern from "mag.h": ctypedef mag_struct * mag_ptr ctypedef const mag_struct * mag_srcptr +# from here on is parsed void mag_init(mag_t x) void mag_clear(mag_t x) - void mag_zero(mag_t x) - void mag_set(mag_t x, const mag_t y) - void mag_set_ui_2exp_si(mag_t x, ulong v, long e) - void mag_hypot(mag_t x, const mag_t y, const mag_t z) + void mag_swap(mag_t x, mag_t y) + mag_ptr _mag_vec_init(slong n) + void _mag_vec_clear(mag_ptr v, slong n) + slong mag_allocated_bytes(const mag_t x) + void mag_zero(mag_t res) + void mag_one(mag_t res) + void mag_inf(mag_t res) + int mag_is_special(const mag_t x) + int mag_is_zero(const mag_t x) + int mag_is_inf(const mag_t x) + int mag_is_finite(const mag_t x) + void mag_init_set(mag_t res, const mag_t x) + void mag_set(mag_t res, const mag_t x) + void mag_set_d(mag_t res, double x) + # void mag_set_fmpr(mag_t res, const fmpr_t x) + void mag_set_ui(mag_t res, ulong x) + void mag_set_fmpz(mag_t res, const fmpz_t x) + void mag_set_d_lower(mag_t res, double x) + void mag_set_ui_lower(mag_t res, ulong x) + void mag_set_fmpz_lower(mag_t res, const fmpz_t x) + void mag_set_d_2exp_fmpz(mag_t res, double x, const fmpz_t y) + void mag_set_fmpz_2exp_fmpz(mag_t res, const fmpz_t x, const fmpz_t y) + void mag_set_ui_2exp_si(mag_t res, ulong x, slong y) + void mag_set_d_2exp_fmpz_lower(mag_t res, double x, const fmpz_t y) + void mag_set_fmpz_2exp_fmpz_lower(mag_t res, const fmpz_t x, const fmpz_t y) + double mag_get_d(const mag_t x) + double mag_get_d_log2_approx(const mag_t x) + # void mag_get_fmpr(fmpr_t res, const mag_t x) + void mag_get_fmpq(fmpq_t res, const mag_t x) + void mag_get_fmpz(fmpz_t res, const mag_t x) + void mag_get_fmpz_lower(fmpz_t res, const mag_t x) + int mag_equal(const mag_t x, const mag_t y) + int mag_cmp(const mag_t x, const mag_t y) + int mag_cmp_2exp_si(const mag_t x, slong y) + void mag_min(mag_t res, const mag_t x, const mag_t y) + void mag_max(mag_t res, const mag_t x, const mag_t y) + void mag_print(const mag_t x) + char * mag_dump_str(const mag_t x) + int mag_load_str(mag_t x, const char * str) + void mag_randtest(mag_t res, flint_rand_t state, slong expbits) + void mag_randtest_special(mag_t res, flint_rand_t state, slong expbits) + void mag_add(mag_t res, const mag_t x, const mag_t y) + void mag_add_ui(mag_t res, const mag_t x, ulong y) + void mag_add_lower(mag_t res, const mag_t x, const mag_t y) + void mag_add_ui_lower(mag_t res, const mag_t x, ulong y) + void mag_add_2exp_fmpz(mag_t res, const mag_t x, const fmpz_t e) + void mag_add_ui_2exp_si(mag_t res, const mag_t x, ulong y, slong e) + void mag_sub(mag_t res, const mag_t x, const mag_t y) + void mag_sub_lower(mag_t res, const mag_t x, const mag_t y) + void mag_mul_2exp_si(mag_t res, const mag_t x, slong y) + void mag_mul_2exp_fmpz(mag_t res, const mag_t x, const fmpz_t y) + void mag_mul(mag_t res, const mag_t x, const mag_t y) + void mag_mul_ui(mag_t res, const mag_t x, ulong y) + void mag_mul_fmpz(mag_t res, const mag_t x, const fmpz_t y) + void mag_mul_lower(mag_t res, const mag_t x, const mag_t y) + void mag_mul_ui_lower(mag_t res, const mag_t x, ulong y) + void mag_mul_fmpz_lower(mag_t res, const mag_t x, const fmpz_t y) + void mag_addmul(mag_t z, const mag_t x, const mag_t y) + void mag_div(mag_t res, const mag_t x, const mag_t y) + void mag_div_ui(mag_t res, const mag_t x, ulong y) + void mag_div_fmpz(mag_t res, const mag_t x, const fmpz_t y) + void mag_div_lower(mag_t res, const mag_t x, const mag_t y) + void mag_inv(mag_t res, const mag_t x) + void mag_inv_lower(mag_t res, const mag_t x) + void mag_fast_init_set(mag_t x, const mag_t y) + void mag_fast_zero(mag_t res) + int mag_fast_is_zero(const mag_t x) + void mag_fast_mul(mag_t res, 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 res, const mag_t x, slong e) + void mag_fast_mul_2exp_si(mag_t res, const mag_t x, slong e) + void mag_pow_ui(mag_t res, const mag_t x, ulong e) + void mag_pow_fmpz(mag_t res, const mag_t x, const fmpz_t e) + void mag_pow_ui_lower(mag_t res, const mag_t x, ulong e) + void mag_pow_fmpz_lower(mag_t res, const mag_t x, const fmpz_t e) + void mag_sqrt(mag_t res, const mag_t x) + void mag_sqrt_lower(mag_t res, const mag_t x) + void mag_rsqrt(mag_t res, const mag_t x) + void mag_rsqrt_lower(mag_t res, const mag_t x) + void mag_hypot(mag_t res, const mag_t x, const mag_t y) + void mag_root(mag_t res, const mag_t x, ulong n) + void mag_log(mag_t res, const mag_t x) + void mag_log_lower(mag_t res, const mag_t x) + void mag_neg_log(mag_t res, const mag_t x) + void mag_neg_log_lower(mag_t res, const mag_t x) + void mag_log_ui(mag_t res, ulong n) + void mag_log1p(mag_t res, const mag_t x) + void mag_exp(mag_t res, const mag_t x) + void mag_exp_lower(mag_t res, const mag_t x) + void mag_expinv(mag_t res, const mag_t x) + void mag_expinv_lower(mag_t res, const mag_t x) + void mag_expm1(mag_t res, const mag_t x) + void mag_exp_tail(mag_t res, const mag_t x, ulong N) + void mag_binpow_uiui(mag_t res, ulong m, ulong n) + void mag_geom_series(mag_t res, const mag_t x, ulong N) + void mag_const_pi(mag_t res) + void mag_const_pi_lower(mag_t res) + void mag_atan(mag_t res, const mag_t x) + void mag_atan_lower(mag_t res, const mag_t x) + void mag_cosh(mag_t res, const mag_t x) + void mag_cosh_lower(mag_t res, const mag_t x) + void mag_sinh(mag_t res, const mag_t x) + void mag_sinh_lower(mag_t res, const mag_t x) + void mag_fac_ui(mag_t res, ulong n) + void mag_rfac_ui(mag_t res, ulong n) + void mag_bin_uiui(mag_t res, ulong n, ulong k) + void mag_bernoulli_div_fac_ui(mag_t res, ulong n) + void mag_polylog_tail(mag_t res, const mag_t z, slong s, ulong d, ulong N) + void mag_hurwitz_zeta_uiui(mag_t res, ulong s, ulong a) diff --git a/src/flint/flintlib/mpoly.pxd b/src/flint/flintlib/mpoly.pxd index e3dabfe6..81b7cb8d 100644 --- a/src/flint/flintlib/mpoly.pxd +++ b/src/flint/flintlib/mpoly.pxd @@ -1,4 +1,4 @@ -from flint._flint cimport slong, FLINT_BITS +from flint.flintlib.flint cimport slong, FLINT_BITS cdef extern from "flint/mpoly.h": ctypedef enum ordering_t: diff --git a/src/flint/flintlib/nmod.pxd b/src/flint/flintlib/nmod.pxd new file mode 100644 index 00000000..b748f90f --- /dev/null +++ b/src/flint/flintlib/nmod.pxd @@ -0,0 +1,31 @@ +from flint.flintlib.flint cimport mp_limb_t, mp_bitcnt_t, ulong +from flint.flintlib.fmpz cimport fmpz_t + +cdef extern from "flint/nmod.h": + ctypedef struct nmod_t: + mp_limb_t n + mp_limb_t ninv + mp_bitcnt_t norm +# TODO add macros + +# from here on is parsed + void nmod_init(nmod_t * mod, mp_limb_t n) + mp_limb_t _nmod_add(mp_limb_t a, mp_limb_t b, nmod_t mod) + mp_limb_t nmod_add(mp_limb_t a, mp_limb_t b, nmod_t mod) + mp_limb_t _nmod_sub(mp_limb_t a, mp_limb_t b, nmod_t mod) + mp_limb_t nmod_sub(mp_limb_t a, mp_limb_t b, nmod_t mod) + mp_limb_t nmod_neg(mp_limb_t a, nmod_t mod) + mp_limb_t nmod_mul(mp_limb_t a, mp_limb_t b, nmod_t mod) + mp_limb_t _nmod_mul_fullword(mp_limb_t a, mp_limb_t b, nmod_t mod) + mp_limb_t nmod_inv(mp_limb_t a, nmod_t mod) + mp_limb_t nmod_div(mp_limb_t a, mp_limb_t b, nmod_t mod) + mp_limb_t nmod_pow_ui(mp_limb_t a, ulong e, nmod_t mod) + mp_limb_t nmod_pow_fmpz(mp_limb_t a, const fmpz_t e, nmod_t mod) + # void nmod_discrete_log_pohlig_hellman_init(nmod_discrete_log_pohlig_hellman_t L) + # void nmod_discrete_log_pohlig_hellman_clear(nmod_discrete_log_pohlig_hellman_t L) + # double nmod_discrete_log_pohlig_hellman_precompute_prime(nmod_discrete_log_pohlig_hellman_t L, mp_limb_t p) + # mp_limb_t nmod_discrete_log_pohlig_hellman_primitive_root(const nmod_discrete_log_pohlig_hellman_t L) + # ulong nmod_discrete_log_pohlig_hellman_run(const nmod_discrete_log_pohlig_hellman_t L, mp_limb_t y) + +cdef extern from "flint/fmpz.h": + mp_limb_t fmpz_get_nmod(const fmpz_t f, nmod_t mod) diff --git a/src/flint/flintlib/nmod_mat.pxd b/src/flint/flintlib/nmod_mat.pxd index aa0a16c4..925f9647 100644 --- a/src/flint/flintlib/nmod_mat.pxd +++ b/src/flint/flintlib/nmod_mat.pxd @@ -1,7 +1,8 @@ -from flint._flint cimport mp_limb_t, flint_rand_t, mp_ptr -from flint._flint cimport mp_srcptr +from flint.flintlib.flint cimport mp_limb_t, flint_rand_t, mp_ptr +from flint.flintlib.flint cimport mp_srcptr, slong, ulong from flint.flintlib.nmod_vec cimport nmod_t from flint.flintlib.nmod_poly cimport nmod_poly_t +from flint.flintlib.fmpz cimport fmpz_t cdef extern from "flint/nmod_mat.h": ctypedef struct nmod_mat_struct: @@ -11,43 +12,92 @@ cdef extern from "flint/nmod_mat.h": mp_limb_t ** rows nmod_t mod ctypedef nmod_mat_struct nmod_mat_t[1] - mp_limb_t nmod_mat_entry(nmod_mat_t mat, long i, long j) - long nmod_mat_nrows(nmod_mat_t mat) - long nmod_mat_ncols(nmod_mat_t mat) - void _nmod_mat_set_mod(nmod_mat_t mat, mp_limb_t n) - void nmod_mat_init(nmod_mat_t mat, long rows, long cols, mp_limb_t n) + +# from here on is parsed + void nmod_mat_init(nmod_mat_t mat, slong rows, slong cols, mp_limb_t n) void nmod_mat_init_set(nmod_mat_t mat, nmod_mat_t src) void nmod_mat_clear(nmod_mat_t mat) + void nmod_mat_set(nmod_mat_t mat, nmod_mat_t src) + void nmod_mat_swap(nmod_mat_t mat1, nmod_mat_t mat2) + void nmod_mat_swap_entrywise(nmod_mat_t mat1, nmod_mat_t mat2) + mp_limb_t nmod_mat_entry(nmod_mat_t mat, long i, long j) + # MACRO nmod_mat_entry(nmod_mat_t mat, slong i, slong j) + mp_limb_t nmod_mat_get_entry(const nmod_mat_t mat, slong i, slong j) + mp_limb_t * nmod_mat_entry_ptr(const nmod_mat_t mat, slong i, slong j) + void nmod_mat_set_entry(nmod_mat_t mat, slong i, slong j, mp_limb_t x) + slong nmod_mat_nrows(nmod_mat_t mat) + slong nmod_mat_ncols(nmod_mat_t mat) + void nmod_mat_zero(nmod_mat_t mat) + int nmod_mat_is_zero(nmod_mat_t mat) + void nmod_mat_window_init(nmod_mat_t window, const nmod_mat_t mat, slong r1, slong c1, slong r2, slong c2) + void nmod_mat_window_clear(nmod_mat_t window) + void nmod_mat_concat_vertical(nmod_mat_t res, const nmod_mat_t mat1, const nmod_mat_t mat2) + void nmod_mat_concat_horizontal(nmod_mat_t res, const nmod_mat_t mat1, const nmod_mat_t mat2) + void nmod_mat_print_pretty(nmod_mat_t mat) void nmod_mat_randtest(nmod_mat_t mat, flint_rand_t state) void nmod_mat_randfull(nmod_mat_t mat, flint_rand_t state) - void nmod_mat_randrank(nmod_mat_t, flint_rand_t state, long rank) - void nmod_mat_randops(nmod_mat_t mat, long count, flint_rand_t state) + int nmod_mat_randpermdiag(nmod_mat_t mat, mp_limb_t * diag, slong n, flint_rand_t state) + void nmod_mat_randrank(nmod_mat_t mat, slong rank, flint_rand_t state) + void nmod_mat_randops(nmod_mat_t mat, slong count, flint_rand_t state) void nmod_mat_randtril(nmod_mat_t mat, flint_rand_t state, int unit) void nmod_mat_randtriu(nmod_mat_t mat, flint_rand_t state, int unit) - void nmod_mat_print_pretty(nmod_mat_t mat) int nmod_mat_equal(nmod_mat_t mat1, nmod_mat_t mat2) - int nmod_mat_is_zero(nmod_mat_t mat) - int nmod_mat_is_empty(nmod_mat_t mat) - int nmod_mat_is_square(nmod_mat_t mat) - void nmod_mat_zero(nmod_mat_t mat) - void nmod_mat_set(nmod_mat_t B, nmod_mat_t A) + int nmod_mat_is_zero_row(const nmod_mat_t mat, slong i) void nmod_mat_transpose(nmod_mat_t B, nmod_mat_t A) + void nmod_mat_swap_rows(nmod_mat_t mat, slong * perm, slong r, slong s) + void nmod_mat_swap_cols(nmod_mat_t mat, slong * perm, slong r, slong s) + void nmod_mat_invert_rows(nmod_mat_t mat, slong * perm) + void nmod_mat_invert_cols(nmod_mat_t mat, slong * perm) void nmod_mat_add(nmod_mat_t C, nmod_mat_t A, nmod_mat_t B) void nmod_mat_sub(nmod_mat_t C, nmod_mat_t A, nmod_mat_t B) - void nmod_mat_neg(nmod_mat_t B, nmod_mat_t A) - void nmod_mat_scalar_mul(nmod_mat_t B, nmod_mat_t A, mp_limb_t c) - void nmod_mat_mul(nmod_mat_t C, nmod_mat_t A, nmod_mat_t B) - void nmod_mat_mul_classical(nmod_mat_t C, nmod_mat_t A, nmod_mat_t B) - void nmod_mat_mul_strassen(nmod_mat_t C, nmod_mat_t A, nmod_mat_t B) - void nmod_mat_addmul(nmod_mat_t D, nmod_mat_t C, nmod_mat_t A, nmod_mat_t B) - void nmod_mat_submul(nmod_mat_t D, nmod_mat_t C, nmod_mat_t A, nmod_mat_t B) - mp_limb_t nmod_mat_det(nmod_mat_t A) - long nmod_mat_rank(nmod_mat_t A) + void nmod_mat_neg(nmod_mat_t A, nmod_mat_t B) + void nmod_mat_scalar_mul(nmod_mat_t B, const nmod_mat_t A, mp_limb_t c) + void nmod_mat_scalar_addmul_ui(nmod_mat_t dest, const nmod_mat_t X, const nmod_mat_t Y, const mp_limb_t b) + void nmod_mat_scalar_mul_fmpz(nmod_mat_t res, const nmod_mat_t M, const fmpz_t c) + void nmod_mat_mul(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) + void _nmod_mat_mul_classical_op(nmod_mat_t D, const nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B, int op) + void nmod_mat_mul_classical(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) + # 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) + 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) + void nmod_mat_mul_classical_threaded(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) + void nmod_mat_mul_strassen(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) + int nmod_mat_mul_blas(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) + void nmod_mat_addmul(nmod_mat_t D, const nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) + void nmod_mat_submul(nmod_mat_t D, const nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B) + void nmod_mat_mul_nmod_vec(mp_limb_t * c, const nmod_mat_t A, const mp_limb_t * b, slong blen) + void nmod_mat_mul_nmod_vec_ptr(mp_limb_t * const * c, const nmod_mat_t A, const mp_limb_t * const * b, slong blen) + void nmod_mat_nmod_vec_mul(mp_limb_t * c, const mp_limb_t * a, slong alen, const nmod_mat_t B) + void nmod_mat_nmod_vec_mul_ptr(mp_limb_t * const * c, const mp_limb_t * const * a, slong alen, const nmod_mat_t B) + void _nmod_mat_pow(nmod_mat_t dest, const nmod_mat_t mat, ulong pow) + void nmod_mat_pow(nmod_mat_t dest, nmod_mat_t mat, ulong pow) + mp_limb_t nmod_mat_trace(const nmod_mat_t mat) + mp_limb_t nmod_mat_det_howell(const nmod_mat_t A) + mp_limb_t nmod_mat_det(const nmod_mat_t A) + slong nmod_mat_rank(const nmod_mat_t A) int nmod_mat_inv(nmod_mat_t B, nmod_mat_t A) - void nmod_mat_solve_tril(nmod_mat_t X, nmod_mat_t L, nmod_mat_t B, int unit) - void nmod_mat_solve_triu(nmod_mat_t X, nmod_mat_t U, nmod_mat_t B, int unit) - long nmod_mat_lu(long * P, nmod_mat_t A, int rank_check) + void nmod_mat_solve_tril(nmod_mat_t X, const nmod_mat_t L, const nmod_mat_t B, int unit) + void nmod_mat_solve_tril_classical(nmod_mat_t X, const nmod_mat_t L, const nmod_mat_t B, int unit) + void nmod_mat_solve_tril_recursive(nmod_mat_t X, const nmod_mat_t L, const nmod_mat_t B, int unit) + void nmod_mat_solve_triu(nmod_mat_t X, const nmod_mat_t U, const nmod_mat_t B, int unit) + void nmod_mat_solve_triu_classical(nmod_mat_t X, const nmod_mat_t U, const nmod_mat_t B, int unit) + void nmod_mat_solve_triu_recursive(nmod_mat_t X, const nmod_mat_t U, const nmod_mat_t B, int unit) int nmod_mat_solve(nmod_mat_t X, nmod_mat_t A, nmod_mat_t B) - int nmod_mat_solve_vec(mp_ptr x, nmod_mat_t A, mp_srcptr b) - long nmod_mat_rref(nmod_mat_t A) - long nmod_mat_nullspace(nmod_mat_t X, nmod_mat_t A) + int nmod_mat_can_solve_inner(slong * rank, slong * perm, slong * pivots, nmod_mat_t X, const nmod_mat_t A, const nmod_mat_t B) + int nmod_mat_can_solve(nmod_mat_t X, nmod_mat_t A, nmod_mat_t B) + int nmod_mat_solve_vec(mp_limb_t * x, nmod_mat_t A, mp_limb_t * b) + slong nmod_mat_lu(slong * P, nmod_mat_t A, int rank_check) + slong nmod_mat_lu_classical(slong * P, nmod_mat_t A, int rank_check) + slong nmod_mat_lu_classical_delayed(slong * P, nmod_mat_t A, int rank_check) + slong nmod_mat_lu_recursive(slong * P, nmod_mat_t A, int rank_check) + slong nmod_mat_rref(nmod_mat_t A) + slong nmod_mat_reduce_row(nmod_mat_t A, slong * P, slong * L, slong n) + slong nmod_mat_nullspace(nmod_mat_t X, const nmod_mat_t A) + void nmod_mat_similarity(nmod_mat_t M, slong r, ulong d) + void nmod_mat_charpoly_berkowitz(nmod_poly_t p, const nmod_mat_t M) + void nmod_mat_charpoly_danilevsky(nmod_poly_t p, const nmod_mat_t M) + void nmod_mat_charpoly(nmod_poly_t p, const nmod_mat_t M) + void nmod_mat_minpoly(nmod_poly_t p, const nmod_mat_t M) + void nmod_mat_strong_echelon_form(nmod_mat_t A) + slong nmod_mat_howell_form(nmod_mat_t A) + # not in doc + int nmod_mat_is_square(nmod_mat_t mat) diff --git a/src/flint/flintlib/nmod_poly.pxd b/src/flint/flintlib/nmod_poly.pxd index acdd779a..e0f10153 100644 --- a/src/flint/flintlib/nmod_poly.pxd +++ b/src/flint/flintlib/nmod_poly.pxd @@ -1,6 +1,7 @@ -from flint._flint cimport mp_ptr, mp_limb_t, mp_bitcnt_t -from flint._flint cimport flint_rand_t, ulong +from flint.flintlib.flint cimport mp_ptr, mp_limb_t, mp_bitcnt_t, mp_srcptr, slong, flint_bitcnt_t +from flint.flintlib.flint cimport flint_rand_t, ulong from flint.flintlib.nmod_vec cimport nmod_t +from flint.flintlib.fmpz cimport fmpz_t cdef extern from "flint/nmod_poly.h": ctypedef struct nmod_poly_struct: @@ -10,76 +11,422 @@ cdef extern from "flint/nmod_poly.h": nmod_t mod ctypedef nmod_poly_struct nmod_poly_t[1] - ctypedef struct nmod_poly_factor_struct: - nmod_poly_struct *p - long *exp - long num - long alloc - ctypedef nmod_poly_factor_struct nmod_poly_factor_t[1] - +# from here on is parsed + # int signed_mpn_sub_n(mp_ptr res, mp_srcptr op1, mp_srcptr op2, slong n) void nmod_poly_init(nmod_poly_t poly, mp_limb_t n) void nmod_poly_init_preinv(nmod_poly_t poly, mp_limb_t n, mp_limb_t ninv) - void nmod_poly_init2(nmod_poly_t poly, mp_limb_t n, long alloc) - void nmod_poly_init2_preinv(nmod_poly_t poly, mp_limb_t n, mp_limb_t ninv, long alloc) - void nmod_poly_realloc(nmod_poly_t poly, long alloc) + void nmod_poly_init_mod(nmod_poly_t poly, const nmod_t mod) + void nmod_poly_init2(nmod_poly_t poly, mp_limb_t n, slong alloc) + void nmod_poly_init2_preinv(nmod_poly_t poly, mp_limb_t n, mp_limb_t ninv, slong alloc) + void nmod_poly_realloc(nmod_poly_t poly, slong alloc) void nmod_poly_clear(nmod_poly_t poly) - void nmod_poly_fit_length(nmod_poly_t poly, long alloc) - long nmod_poly_length(nmod_poly_t poly) - long nmod_poly_degree(nmod_poly_t poly) - mp_limb_t nmod_poly_modulus(nmod_poly_t poly) - mp_bitcnt_t nmod_poly_max_bits(nmod_poly_t poly) - void nmod_poly_set(nmod_poly_t a, nmod_poly_t b) + void nmod_poly_fit_length(nmod_poly_t poly, slong alloc) + void _nmod_poly_normalise(nmod_poly_t poly) + slong nmod_poly_length(const nmod_poly_t poly) + slong nmod_poly_degree(const nmod_poly_t poly) + mp_limb_t nmod_poly_modulus(const nmod_poly_t poly) + flint_bitcnt_t nmod_poly_max_bits(const nmod_poly_t poly) + void nmod_poly_set(nmod_poly_t a, const nmod_poly_t b) void nmod_poly_swap(nmod_poly_t poly1, nmod_poly_t poly2) void nmod_poly_zero(nmod_poly_t res) - void nmod_poly_truncate(nmod_poly_t poly, long len) - void nmod_poly_reverse(nmod_poly_t output, nmod_poly_t input, long m) - void nmod_poly_randtest(nmod_poly_t poly, flint_rand_t state, long len) - ulong nmod_poly_get_coeff_ui(nmod_poly_t poly, ulong j) - void nmod_poly_set_coeff_ui(nmod_poly_t poly, ulong j, ulong c) - char * nmod_poly_get_str(nmod_poly_t poly) - int nmod_poly_set_str(char * s, nmod_poly_t poly) - int nmod_poly_print(nmod_poly_t a) - int nmod_poly_equal(nmod_poly_t a, nmod_poly_t b) - int nmod_poly_is_zero(nmod_poly_t poly) - void nmod_poly_shift_left(nmod_poly_t res, nmod_poly_t poly, long k) - void nmod_poly_shift_right(nmod_poly_t res, nmod_poly_t poly, long k) - void nmod_poly_add(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2) - void nmod_poly_sub(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2) - void nmod_poly_neg(nmod_poly_t res, nmod_poly_t poly1) - void nmod_poly_scalar_mul_nmod(nmod_poly_t res, nmod_poly_t poly1, mp_limb_t c) - void nmod_poly_make_monic(nmod_poly_t output, nmod_poly_t input) - void nmod_poly_mul(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2) - void nmod_poly_mullow(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2, long trunc) - void nmod_poly_pow(nmod_poly_t res, nmod_poly_t poly, ulong e) - void nmod_poly_pow_trunc(nmod_poly_t res, nmod_poly_t poly, ulong e, long trunc) - void nmod_poly_divrem(nmod_poly_t Q, nmod_poly_t R, nmod_poly_t A, nmod_poly_t B) - void nmod_poly_div(nmod_poly_t Q, nmod_poly_t A, nmod_poly_t B) - void nmod_poly_inv_series(nmod_poly_t Qinv, nmod_poly_t Q, long n) - void nmod_poly_div_series(nmod_poly_t Q, nmod_poly_t A, nmod_poly_t B, long n) - void nmod_poly_derivative(nmod_poly_t x_prime, nmod_poly_t x) - void nmod_poly_integral(nmod_poly_t x_int, nmod_poly_t x) + void nmod_poly_truncate(nmod_poly_t poly, slong len) + void nmod_poly_set_trunc(nmod_poly_t res, const nmod_poly_t poly, slong n) + void _nmod_poly_reverse(mp_ptr output, mp_srcptr input, slong len, slong m) + void nmod_poly_reverse(nmod_poly_t output, const nmod_poly_t input, slong m) + void nmod_poly_randtest(nmod_poly_t poly, flint_rand_t state, slong len) + void nmod_poly_randtest_irreducible(nmod_poly_t poly, flint_rand_t state, slong len) + void nmod_poly_randtest_monic(nmod_poly_t poly, flint_rand_t state, slong len) + void nmod_poly_randtest_monic_irreducible(nmod_poly_t poly, flint_rand_t state, slong len) + void nmod_poly_randtest_monic_primitive(nmod_poly_t poly, flint_rand_t state, slong len) + void nmod_poly_randtest_trinomial(nmod_poly_t poly, flint_rand_t state, slong len) + int nmod_poly_randtest_trinomial_irreducible(nmod_poly_t poly, flint_rand_t state, slong len, slong max_attempts) + void nmod_poly_randtest_pentomial(nmod_poly_t poly, flint_rand_t state, slong len) + int nmod_poly_randtest_pentomial_irreducible(nmod_poly_t poly, flint_rand_t state, slong len, slong max_attempts) + void nmod_poly_randtest_sparse_irreducible(nmod_poly_t poly, flint_rand_t state, slong len) + ulong nmod_poly_get_coeff_ui(const nmod_poly_t poly, slong j) + void nmod_poly_set_coeff_ui(nmod_poly_t poly, slong j, ulong c) + char * nmod_poly_get_str(const nmod_poly_t poly) + char * nmod_poly_get_str_pretty(const nmod_poly_t poly, const char * x) + int nmod_poly_set_str(nmod_poly_t poly, const char * s) + int nmod_poly_print(const nmod_poly_t a) + int nmod_poly_print_pretty(const nmod_poly_t a, const char * x) + int nmod_poly_read(nmod_poly_t poly) + int nmod_poly_equal(const nmod_poly_t a, const nmod_poly_t b) + int nmod_poly_equal_trunc(const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) + int nmod_poly_is_zero(const nmod_poly_t poly) + int nmod_poly_is_one(const nmod_poly_t poly) + void _nmod_poly_shift_left(mp_ptr res, mp_srcptr poly, slong len, slong k) + void nmod_poly_shift_left(nmod_poly_t res, const nmod_poly_t poly, slong k) + void _nmod_poly_shift_right(mp_ptr res, mp_srcptr poly, slong len, slong k) + void nmod_poly_shift_right(nmod_poly_t res, const nmod_poly_t poly, slong k) + void _nmod_poly_add(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) + void nmod_poly_add(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) + void nmod_poly_add_series(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) + void _nmod_poly_sub(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) + void nmod_poly_sub(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) + void nmod_poly_sub_series(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) + void nmod_poly_neg(nmod_poly_t res, const nmod_poly_t poly) + void nmod_poly_scalar_mul_nmod(nmod_poly_t res, const nmod_poly_t poly, ulong c) + void _nmod_poly_make_monic(mp_ptr output, mp_srcptr input, slong len, nmod_t mod) + void nmod_poly_make_monic(nmod_poly_t output, const nmod_poly_t input) + void _nmod_poly_bit_pack(mp_ptr res, mp_srcptr poly, slong len, flint_bitcnt_t bits) + void _nmod_poly_bit_unpack(mp_ptr res, slong len, mp_srcptr mpn, ulong bits, nmod_t mod) + void nmod_poly_bit_pack(fmpz_t f, const nmod_poly_t poly, flint_bitcnt_t bit_size) + void nmod_poly_bit_unpack(nmod_poly_t poly, const fmpz_t f, flint_bitcnt_t bit_size) + void _nmod_poly_KS2_pack1(mp_ptr res, mp_srcptr op, slong n, slong s, ulong b, ulong k, slong r) + void _nmod_poly_KS2_pack(mp_ptr res, mp_srcptr op, slong n, slong s, ulong b, ulong k, slong r) + void _nmod_poly_KS2_unpack1(mp_ptr res, mp_srcptr op, slong n, ulong b, ulong k) + void _nmod_poly_KS2_unpack2(mp_ptr res, mp_srcptr op, slong n, ulong b, ulong k) + void _nmod_poly_KS2_unpack3(mp_ptr res, mp_srcptr op, slong n, ulong b, ulong k) + void _nmod_poly_KS2_unpack(mp_ptr res, mp_srcptr op, slong n, ulong b, ulong k) + void _nmod_poly_KS2_reduce(mp_ptr res, slong s, mp_srcptr op, slong n, ulong w, nmod_t mod) + void _nmod_poly_KS2_recover_reduce1(mp_ptr res, slong s, mp_srcptr op1, mp_srcptr op2, slong n, ulong b, nmod_t mod) + void _nmod_poly_KS2_recover_reduce2(mp_ptr res, slong s, mp_srcptr op1, mp_srcptr op2, slong n, ulong b, nmod_t mod) + void _nmod_poly_KS2_recover_reduce2b(mp_ptr res, slong s, mp_srcptr op1, mp_srcptr op2, slong n, ulong b, nmod_t mod) + void _nmod_poly_KS2_recover_reduce3(mp_ptr res, slong s, mp_srcptr op1, mp_srcptr op2, slong n, ulong b, nmod_t mod) + void _nmod_poly_KS2_recover_reduce(mp_ptr res, slong s, mp_srcptr op1, mp_srcptr op2, slong n, ulong b, nmod_t mod) + void _nmod_poly_mul_classical(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) + void nmod_poly_mul_classical(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) + void _nmod_poly_mullow_classical(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong trunc, nmod_t mod) + void nmod_poly_mullow_classical(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong trunc) + void _nmod_poly_mulhigh_classical(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong start, nmod_t mod) + void nmod_poly_mulhigh_classical(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong start) + void _nmod_poly_mul_KS(mp_ptr out, mp_srcptr in1, slong len1, mp_srcptr in2, slong len2, flint_bitcnt_t bits, nmod_t mod) + void nmod_poly_mul_KS(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, flint_bitcnt_t bits) + void _nmod_poly_mul_KS2(mp_ptr res, mp_srcptr op1, slong n1, mp_srcptr op2, slong n2, nmod_t mod) + void nmod_poly_mul_KS2(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) + void _nmod_poly_mul_KS4(mp_ptr res, mp_srcptr op1, slong n1, mp_srcptr op2, slong n2, nmod_t mod) + void nmod_poly_mul_KS4(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) + void _nmod_poly_mullow_KS(mp_ptr out, mp_srcptr in1, slong len1, mp_srcptr in2, slong len2, flint_bitcnt_t bits, slong n, nmod_t mod) + void nmod_poly_mullow_KS(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, flint_bitcnt_t bits, slong n) + void _nmod_poly_mul(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) + void nmod_poly_mul(nmod_poly_t res, const nmod_poly_t poly, const nmod_poly_t poly2) + void _nmod_poly_mullow(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong n, nmod_t mod) + void nmod_poly_mullow(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong trunc) + void _nmod_poly_mulhigh(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong n, nmod_t mod) + void nmod_poly_mulhigh(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) + void _nmod_poly_mulmod(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, mp_srcptr f, slong lenf, nmod_t mod) + void nmod_poly_mulmod(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, const nmod_poly_t f) + void _nmod_poly_mulmod_preinv(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, mp_srcptr f, slong lenf, mp_srcptr finv, slong lenfinv, nmod_t mod) + void nmod_poly_mulmod_preinv(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, const nmod_poly_t f, const nmod_poly_t finv) + void _nmod_poly_pow_binexp(mp_ptr res, mp_srcptr poly, slong len, ulong e, nmod_t mod) + void nmod_poly_pow_binexp(nmod_poly_t res, const nmod_poly_t poly, ulong e) + void _nmod_poly_pow(mp_ptr res, mp_srcptr poly, slong len, ulong e, nmod_t mod) + void nmod_poly_pow(nmod_poly_t res, const nmod_poly_t poly, ulong e) + void _nmod_poly_pow_trunc_binexp(mp_ptr res, mp_srcptr poly, ulong e, slong trunc, nmod_t mod) + void nmod_poly_pow_trunc_binexp(nmod_poly_t res, const nmod_poly_t poly, ulong e, slong trunc) + void _nmod_poly_pow_trunc(mp_ptr res, mp_srcptr poly, ulong e, slong trunc, nmod_t mod) + void nmod_poly_pow_trunc(nmod_poly_t res, const nmod_poly_t poly, ulong e, slong trunc) + void _nmod_poly_powmod_ui_binexp(mp_ptr res, mp_srcptr poly, ulong e, mp_srcptr f, slong lenf, nmod_t mod) + void nmod_poly_powmod_ui_binexp(nmod_poly_t res, const nmod_poly_t poly, ulong e, const nmod_poly_t f) + # void _nmod_poly_powmod_mpz_binexp(mp_ptr res, mp_srcptr poly, mpz_srcptr e, mp_srcptr f, slong lenf, nmod_t mod) + # void nmod_poly_powmod_mpz_binexp(nmod_poly_t res, const nmod_poly_t poly, mpz_srcptr e, const nmod_poly_t f) + void _nmod_poly_powmod_fmpz_binexp(mp_ptr res, mp_srcptr poly, fmpz_t e, mp_srcptr f, slong lenf, nmod_t mod) + void nmod_poly_powmod_fmpz_binexp(nmod_poly_t res, const nmod_poly_t poly, fmpz_t e, const nmod_poly_t f) + void _nmod_poly_powmod_ui_binexp_preinv (mp_ptr res, mp_srcptr poly, ulong e, mp_srcptr f, slong lenf, mp_srcptr finv, slong lenfinv, nmod_t mod) + void nmod_poly_powmod_ui_binexp_preinv(nmod_poly_t res, const nmod_poly_t poly, ulong e, const nmod_poly_t f, const nmod_poly_t finv) + # void _nmod_poly_powmod_mpz_binexp_preinv (mp_ptr res, mp_srcptr poly, mpz_srcptr e, mp_srcptr f, slong lenf, mp_srcptr finv, slong lenfinv, nmod_t mod) + # void nmod_poly_powmod_mpz_binexp_preinv(nmod_poly_t res, const nmod_poly_t poly, mpz_srcptr e, const nmod_poly_t f, const nmod_poly_t finv) + void _nmod_poly_powmod_fmpz_binexp_preinv (mp_ptr res, mp_srcptr poly, fmpz_t e, mp_srcptr f, slong lenf, mp_srcptr finv, slong lenfinv, nmod_t mod) + void nmod_poly_powmod_fmpz_binexp_preinv(nmod_poly_t res, const nmod_poly_t poly, fmpz_t e, const nmod_poly_t f, const nmod_poly_t finv) + void _nmod_poly_powmod_x_ui_preinv (mp_ptr res, ulong e, mp_srcptr f, slong lenf, mp_srcptr finv, slong lenfinv, nmod_t mod) + void nmod_poly_powmod_x_ui_preinv(nmod_poly_t res, ulong e, const nmod_poly_t f, const nmod_poly_t finv) + void _nmod_poly_powmod_x_fmpz_preinv (mp_ptr res, fmpz_t e, mp_srcptr f, slong lenf, mp_srcptr finv, slong lenfinv, nmod_t mod) + void nmod_poly_powmod_x_fmpz_preinv(nmod_poly_t res, fmpz_t e, const nmod_poly_t f, const nmod_poly_t finv) + void _nmod_poly_powers_mod_preinv_naive(mp_ptr * res, mp_srcptr f, slong flen, slong n, mp_srcptr g, slong glen, mp_srcptr ginv, slong ginvlen, const nmod_t mod) + void nmod_poly_powers_mod_naive(nmod_poly_struct * res, const nmod_poly_t f, slong n, const nmod_poly_t g) + # void _nmod_poly_powers_mod_preinv_threaded_pool(mp_ptr * res, mp_srcptr f, slong flen, slong n, mp_srcptr g, slong glen, mp_srcptr ginv, slong ginvlen, const nmod_t mod, thread_pool_handle * threads, slong num_threads) + void _nmod_poly_powers_mod_preinv_threaded(mp_ptr * res, mp_srcptr f, slong flen, slong n, mp_srcptr g, slong glen, mp_srcptr ginv, slong ginvlen, const nmod_t mod) + void nmod_poly_powers_mod_bsgs(nmod_poly_struct * res, const nmod_poly_t f, slong n, const nmod_poly_t g) + void _nmod_poly_divrem_basecase(mp_ptr Q, mp_ptr R, mp_ptr W, mp_srcptr A, slong A_len, mp_srcptr B, slong B_len, nmod_t mod) + void nmod_poly_divrem_basecase(nmod_poly_t Q, nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B) + void _nmod_poly_div_basecase(mp_ptr Q, mp_ptr W, mp_srcptr A, slong A_len, mp_srcptr B, slong B_len, nmod_t mod) + void nmod_poly_div_basecase(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) + void _nmod_poly_divrem_divconquer_recursive(mp_ptr Q, mp_ptr BQ, mp_ptr W, mp_ptr V, mp_srcptr A, mp_srcptr B, slong lenB, nmod_t mod) + void _nmod_poly_divrem_divconquer(mp_ptr Q, mp_ptr R, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) + void nmod_poly_divrem_divconquer(nmod_poly_t Q, nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B) + void _nmod_poly_divrem_q0(mp_ptr Q, mp_ptr R, mp_srcptr A, mp_srcptr B, slong lenA, nmod_t mod) + void _nmod_poly_divrem_q1(mp_ptr Q, mp_ptr R, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) + void _nmod_poly_divrem(mp_ptr Q, mp_ptr R, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) + void nmod_poly_divrem(nmod_poly_t Q, nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B) + void _nmod_poly_div_divconquer_recursive(mp_ptr Q, mp_ptr W, mp_ptr V, mp_srcptr A, mp_srcptr B, slong lenB, nmod_t mod) + void _nmod_poly_div_divconquer(mp_ptr Q, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) + void nmod_poly_div_divconquer(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) + void _nmod_poly_div(mp_ptr Q, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) + void nmod_poly_div(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) + void _nmod_poly_rem_basecase(mp_ptr R, mp_ptr W, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) + void nmod_poly_rem_basecase(nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B) + void _nmod_poly_rem_q1(mp_ptr R, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) + void _nmod_poly_rem(mp_ptr R, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) + void nmod_poly_rem(nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B) + void _nmod_poly_inv_series_basecase(mp_ptr Qinv, mp_srcptr Q, slong Qlen, slong n, nmod_t mod) + void nmod_poly_inv_series_basecase(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) + void _nmod_poly_inv_series_newton(mp_ptr Qinv, mp_srcptr Q, slong Qlen, slong n, nmod_t mod) + void nmod_poly_inv_series_newton(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) + void _nmod_poly_inv_series(mp_ptr Qinv, mp_srcptr Q, slong Qlen, slong n, nmod_t mod) + void nmod_poly_inv_series(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) + void _nmod_poly_div_series_basecase(mp_ptr Q, mp_srcptr A, slong Alen, mp_srcptr B, slong Blen, slong n, nmod_t mod) + void nmod_poly_div_series_basecase(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B, slong n) + void _nmod_poly_div_series(mp_ptr Q, mp_srcptr A, slong Alen, mp_srcptr B, slong Blen, slong n, nmod_t mod) + void nmod_poly_div_series(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B, slong n) + void _nmod_poly_div_newton(mp_ptr Q, mp_srcptr A, slong Alen, mp_srcptr B, slong Blen, nmod_t mod) + void nmod_poly_div_newton(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) + void _nmod_poly_div_newton_n_preinv (mp_ptr Q, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, mp_srcptr Binv, slong lenBinv, nmod_t mod) + void nmod_poly_div_newton_n_preinv (nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B, const nmod_poly_t Binv) + void _nmod_poly_divrem_newton(mp_ptr Q, mp_ptr R, mp_srcptr A, slong Alen, mp_srcptr B, slong Blen, nmod_t mod) + void nmod_poly_divrem_newton(nmod_poly_t Q, nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B) + void _nmod_poly_divrem_newton_n_preinv (mp_ptr Q, mp_ptr R, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, mp_srcptr Binv, slong lenBinv, nmod_t mod) + void nmod_poly_divrem_newton_n_preinv(nmod_poly_t Q, nmod_poly_t R, const nmod_poly_t A, const nmod_poly_t B, const nmod_poly_t Binv) + mp_limb_t _nmod_poly_div_root(mp_ptr Q, mp_srcptr A, slong len, mp_limb_t c, nmod_t mod) + mp_limb_t nmod_poly_div_root(nmod_poly_t Q, const nmod_poly_t A, mp_limb_t c) + int _nmod_poly_divides_classical(mp_ptr Q, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) + int nmod_poly_divides_classical(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) + int _nmod_poly_divides(mp_ptr Q, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) + int nmod_poly_divides(nmod_poly_t Q, const nmod_poly_t A, const nmod_poly_t B) + void _nmod_poly_derivative(mp_ptr x_prime, mp_srcptr x, slong len, nmod_t mod) + void nmod_poly_derivative(nmod_poly_t x_prime, const nmod_poly_t x) + void _nmod_poly_integral(mp_ptr x_int, mp_srcptr x, slong len, nmod_t mod) + void nmod_poly_integral(nmod_poly_t x_int, const nmod_poly_t x) + mp_limb_t _nmod_poly_evaluate_nmod(mp_srcptr poly, slong len, mp_limb_t c, nmod_t mod) mp_limb_t nmod_poly_evaluate_nmod(nmod_poly_t poly, mp_limb_t c) - void nmod_poly_compose(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2) - void nmod_poly_gcd(nmod_poly_t G, nmod_poly_t A, nmod_poly_t B) - void nmod_poly_xgcd(nmod_poly_t G, nmod_poly_t S, nmod_poly_t T, nmod_poly_t A, nmod_poly_t B) - void nmod_poly_invsqrt_series(nmod_poly_t g, nmod_poly_t h, long n) - void nmod_poly_sqrt_series(nmod_poly_t g, nmod_poly_t h, long n) - void nmod_poly_atan_series(nmod_poly_t g, nmod_poly_t h, long n) - void nmod_poly_tan_series(nmod_poly_t g, nmod_poly_t h, long n) - void nmod_poly_asin_series(nmod_poly_t g, nmod_poly_t h, long n) - void nmod_poly_sin_series(nmod_poly_t g, nmod_poly_t h, long n) - void nmod_poly_cos_series(nmod_poly_t g, nmod_poly_t h, long n) - void nmod_poly_asinh_series(nmod_poly_t g, nmod_poly_t h, long n) - void nmod_poly_atanh_series(nmod_poly_t g, nmod_poly_t h, long n) - void nmod_poly_sinh_series(nmod_poly_t g, nmod_poly_t h, long n) - void nmod_poly_cosh_series(nmod_poly_t g, nmod_poly_t h, long n) - void nmod_poly_tanh_series(nmod_poly_t g, nmod_poly_t h, long n) - void nmod_poly_log_series(nmod_poly_t res, nmod_poly_t f, long n) - void nmod_poly_exp_series(nmod_poly_t f, nmod_poly_t h, long n) + # void nmod_poly_evaluate_mat_horner(nmod_mat_t dest, const nmod_poly_t poly, const nmod_mat_t c) + # void nmod_poly_evaluate_mat_paterson_stockmeyer(nmod_mat_t dest, const nmod_poly_t poly, const nmod_mat_t c) + # void nmod_poly_evaluate_mat(nmod_mat_t dest, const nmod_poly_t poly, const nmod_mat_t c) + void _nmod_poly_evaluate_nmod_vec_iter(mp_ptr ys, mp_srcptr poly, slong len, mp_srcptr xs, slong n, nmod_t mod) + void nmod_poly_evaluate_nmod_vec_iter(mp_ptr ys, const nmod_poly_t poly, mp_srcptr xs, slong n) + void _nmod_poly_evaluate_nmod_vec_fast_precomp(mp_ptr vs, mp_srcptr poly, slong plen, const mp_ptr * tree, slong len, nmod_t mod) + void _nmod_poly_evaluate_nmod_vec_fast(mp_ptr ys, mp_srcptr poly, slong len, mp_srcptr xs, slong n, nmod_t mod) + void nmod_poly_evaluate_nmod_vec_fast(mp_ptr ys, const nmod_poly_t poly, mp_srcptr xs, slong n) + void _nmod_poly_evaluate_nmod_vec(mp_ptr ys, mp_srcptr poly, slong len, mp_srcptr xs, slong n, nmod_t mod) + void nmod_poly_evaluate_nmod_vec(mp_ptr ys, const nmod_poly_t poly, mp_srcptr xs, slong n) + void _nmod_poly_interpolate_nmod_vec(mp_ptr poly, mp_srcptr xs, mp_srcptr ys, slong n, nmod_t mod) + void nmod_poly_interpolate_nmod_vec(nmod_poly_t poly, mp_srcptr xs, mp_srcptr ys, slong n) + void _nmod_poly_interpolation_weights(mp_ptr w, const mp_ptr * tree, slong len, nmod_t mod) + void _nmod_poly_interpolate_nmod_vec_fast_precomp(mp_ptr poly, mp_srcptr ys, const mp_ptr * tree, mp_srcptr weights, slong len, nmod_t mod) + void _nmod_poly_interpolate_nmod_vec_fast(mp_ptr poly, mp_srcptr xs, mp_srcptr ys, slong n, nmod_t mod) + void nmod_poly_interpolate_nmod_vec_fast(nmod_poly_t poly, mp_srcptr xs, mp_srcptr ys, slong n) + void _nmod_poly_interpolate_nmod_vec_newton(mp_ptr poly, mp_srcptr xs, mp_srcptr ys, slong n, nmod_t mod) + void nmod_poly_interpolate_nmod_vec_newton(nmod_poly_t poly, mp_srcptr xs, mp_srcptr ys, slong n) + void _nmod_poly_interpolate_nmod_vec_barycentric(mp_ptr poly, mp_srcptr xs, mp_srcptr ys, slong n, nmod_t mod) + void nmod_poly_interpolate_nmod_vec_barycentric(nmod_poly_t poly, mp_srcptr xs, mp_srcptr ys, slong n) + void _nmod_poly_compose_horner(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) + void nmod_poly_compose_horner(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) + void _nmod_poly_compose_divconquer(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) + void nmod_poly_compose_divconquer(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) + void _nmod_poly_compose(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) + void nmod_poly_compose(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) + void _nmod_poly_taylor_shift_horner(mp_ptr poly, mp_limb_t c, slong len, nmod_t mod) + void nmod_poly_taylor_shift_horner(nmod_poly_t g, const nmod_poly_t f, mp_limb_t c) + void _nmod_poly_taylor_shift_convolution(mp_ptr poly, mp_limb_t c, slong len, nmod_t mod) + void nmod_poly_taylor_shift_convolution(nmod_poly_t g, const nmod_poly_t f, mp_limb_t c) + void _nmod_poly_taylor_shift(mp_ptr poly, mp_limb_t c, slong len, nmod_t mod) + void nmod_poly_taylor_shift(nmod_poly_t g, const nmod_poly_t f, mp_limb_t c) + void _nmod_poly_compose_mod_horner(mp_ptr res, mp_srcptr f, slong lenf, mp_srcptr g, mp_srcptr h, slong lenh, nmod_t mod) + void nmod_poly_compose_mod_horner(nmod_poly_t res, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t h) + void _nmod_poly_compose_mod_brent_kung(mp_ptr res, mp_srcptr f, slong lenf, mp_srcptr g, mp_srcptr h, slong lenh, nmod_t mod) + void nmod_poly_compose_mod_brent_kung(nmod_poly_t res, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t h) + void _nmod_poly_compose_mod_brent_kung_preinv(mp_ptr res, mp_srcptr f, slong lenf, mp_srcptr g, mp_srcptr h, slong lenh, mp_srcptr hinv, slong lenhinv, nmod_t mod) + void nmod_poly_compose_mod_brent_kung_preinv(nmod_poly_t res, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t h, const nmod_poly_t hinv) + # void _nmod_poly_reduce_matrix_mod_poly (nmod_mat_t A, const nmod_mat_t B, const nmod_poly_t f) + void _nmod_poly_precompute_matrix_worker (void * arg_ptr) + # void _nmod_poly_precompute_matrix (nmod_mat_t A, mp_srcptr f, mp_srcptr g, slong leng, mp_srcptr ginv, slong lenginv, nmod_t mod) + # void nmod_poly_precompute_matrix (nmod_mat_t A, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t ginv) + void _nmod_poly_compose_mod_brent_kung_precomp_preinv_worker(void * arg_ptr) + # void _nmod_poly_compose_mod_brent_kung_precomp_preinv(mp_ptr res, mp_srcptr f, slong lenf, const nmod_mat_t A, mp_srcptr h, slong lenh, mp_srcptr hinv, slong lenhinv, nmod_t mod) + # void nmod_poly_compose_mod_brent_kung_precomp_preinv(nmod_poly_t res, const nmod_poly_t f, const nmod_mat_t A, const nmod_poly_t h, const nmod_poly_t hinv) + void _nmod_poly_compose_mod_brent_kung_vec_preinv(nmod_poly_struct * res, const nmod_poly_struct * polys, slong len1, slong l, mp_srcptr g, slong leng, mp_srcptr h, slong lenh, mp_srcptr hinv, slong lenhinv, nmod_t mod) + void nmod_poly_compose_mod_brent_kung_vec_preinv(nmod_poly_struct * res, const nmod_poly_struct * polys, slong len1, slong n, const nmod_poly_t g, const nmod_poly_t h, const nmod_poly_t hinv) + # void _nmod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(nmod_poly_struct * res, const nmod_poly_struct * polys, slong lenpolys, slong l, mp_srcptr g, slong glen, mp_srcptr poly, slong len, mp_srcptr polyinv, slong leninv, nmod_t mod, thread_pool_handle * threads, slong num_threads) + # void nmod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(nmod_poly_struct * res, const nmod_poly_struct * polys, slong len1, slong n, const nmod_poly_t g, const nmod_poly_t poly, const nmod_poly_t polyinv, thread_pool_handle * threads, slong num_threads) + void nmod_poly_compose_mod_brent_kung_vec_preinv_threaded(nmod_poly_struct * res, const nmod_poly_struct * polys, slong len1, slong n, const nmod_poly_t g, const nmod_poly_t poly, const nmod_poly_t polyinv) + void _nmod_poly_compose_mod(mp_ptr res, mp_srcptr f, slong lenf, mp_srcptr g, mp_srcptr h, slong lenh, nmod_t mod) + void nmod_poly_compose_mod(nmod_poly_t res, const nmod_poly_t f, const nmod_poly_t g, const nmod_poly_t h) + slong _nmod_poly_gcd_euclidean(mp_ptr G, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) + void nmod_poly_gcd_euclidean(nmod_poly_t G, const nmod_poly_t A, const nmod_poly_t B) + slong _nmod_poly_hgcd(mp_ptr *M, slong *lenM, mp_ptr A, slong *lenA, mp_ptr B, slong *lenB, mp_srcptr a, slong lena, mp_srcptr b, slong lenb, nmod_t mod) + slong _nmod_poly_gcd_hgcd(mp_ptr G, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) + void nmod_poly_gcd_hgcd(nmod_poly_t G, const nmod_poly_t A, const nmod_poly_t B) + slong _nmod_poly_gcd(mp_ptr G, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) + void nmod_poly_gcd(nmod_poly_t G, const nmod_poly_t A, const nmod_poly_t B) + slong _nmod_poly_xgcd_euclidean(mp_ptr G, mp_ptr S, mp_ptr T, mp_srcptr A, slong A_len, mp_srcptr B, slong B_len, nmod_t mod) + void nmod_poly_xgcd_euclidean(nmod_poly_t G, nmod_poly_t S, nmod_poly_t T, const nmod_poly_t A, const nmod_poly_t B) + slong _nmod_poly_xgcd_hgcd(mp_ptr G, mp_ptr S, mp_ptr T, mp_srcptr A, slong A_len, mp_srcptr B, slong B_len, nmod_t mod) + void nmod_poly_xgcd_hgcd(nmod_poly_t G, nmod_poly_t S, nmod_poly_t T, const nmod_poly_t A, const nmod_poly_t B) + slong _nmod_poly_xgcd(mp_ptr G, mp_ptr S, mp_ptr T, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, nmod_t mod) + void nmod_poly_xgcd(nmod_poly_t G, nmod_poly_t S, nmod_poly_t T, const nmod_poly_t A, const nmod_poly_t B) + mp_limb_t _nmod_poly_resultant_euclidean(mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) + mp_limb_t nmod_poly_resultant_euclidean(const nmod_poly_t f, const nmod_poly_t g) + mp_limb_t _nmod_poly_resultant_hgcd(mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) + mp_limb_t nmod_poly_resultant_hgcd(const nmod_poly_t f, const nmod_poly_t g) + mp_limb_t _nmod_poly_resultant(mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, nmod_t mod) + mp_limb_t nmod_poly_resultant(const nmod_poly_t f, const nmod_poly_t g) + slong _nmod_poly_gcdinv(mp_ptr G, mp_ptr S, mp_srcptr A, slong lenA, mp_srcptr B, slong lenB, const nmod_t mod) + void nmod_poly_gcdinv(nmod_poly_t G, nmod_poly_t S, const nmod_poly_t A, const nmod_poly_t B) + int _nmod_poly_invmod(mp_ptr A, mp_srcptr B, slong lenB, mp_srcptr P, slong lenP, const nmod_t mod) + int nmod_poly_invmod(nmod_poly_t A, const nmod_poly_t B, const nmod_poly_t P) + mp_limb_t _nmod_poly_discriminant(mp_srcptr poly, slong len, nmod_t mod) + mp_limb_t nmod_poly_discriminant(const nmod_poly_t f) + void _nmod_poly_compose_series_horner(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong n) + void nmod_poly_compose_series_horner(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) + void _nmod_poly_compose_series_brent_kung(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong n) + void nmod_poly_compose_series_brent_kung(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) + void _nmod_poly_compose_series_divconquer(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong N, nmod_t mod) + void nmod_poly_compose_series_divconquer(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong N) + void _nmod_poly_compose_series(mp_ptr res, mp_srcptr poly1, slong len1, mp_srcptr poly2, slong len2, slong n) + void nmod_poly_compose_series(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong n) + void _nmod_poly_revert_series_lagrange(mp_ptr Qinv, mp_srcptr Q, slong n, nmod_t mod) + void nmod_poly_revert_series_lagrange(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) + void _nmod_poly_revert_series_lagrange_fast(mp_ptr Qinv, mp_srcptr Q, slong n, nmod_t mod) + void nmod_poly_revert_series_lagrange_fast(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) + void _nmod_poly_revert_series_newton(mp_ptr Qinv, mp_srcptr Q, slong n, nmod_t mod) + void nmod_poly_revert_series_newton(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) + void _nmod_poly_revert_series(mp_ptr Qinv, mp_srcptr Q, slong n, nmod_t mod) + void nmod_poly_revert_series(nmod_poly_t Qinv, const nmod_poly_t Q, slong n) + void _nmod_poly_invsqrt_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) + void nmod_poly_invsqrt_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_sqrt_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) + void nmod_poly_sqrt_series(nmod_poly_t g, const nmod_poly_t h, slong n) + int _nmod_poly_sqrt(mp_ptr s, mp_srcptr p, slong n, nmod_t mod) + int nmod_poly_sqrt(nmod_poly_t s, const nmod_poly_t p) + void _nmod_poly_power_sums_naive(mp_ptr res, mp_srcptr poly, slong len, slong n, nmod_t mod) + void nmod_poly_power_sums_naive(nmod_poly_t res, const nmod_poly_t poly, slong n) + void _nmod_poly_power_sums_schoenhage(mp_ptr res, mp_srcptr poly, slong len, slong n, nmod_t mod) + void nmod_poly_power_sums_schoenhage(nmod_poly_t res, const nmod_poly_t poly, slong n) + void _nmod_poly_power_sums(mp_ptr res, mp_srcptr poly, slong len, slong n, nmod_t mod) + void nmod_poly_power_sums(nmod_poly_t res, const nmod_poly_t poly, slong n) + void _nmod_poly_power_sums_to_poly_naive(mp_ptr res, mp_srcptr poly, slong len, nmod_t mod) + void nmod_poly_power_sums_to_poly_naive(nmod_poly_t res, const nmod_poly_t Q) + void _nmod_poly_power_sums_to_poly_schoenhage(mp_ptr res, mp_srcptr poly, slong len, nmod_t mod) + void nmod_poly_power_sums_to_poly_schoenhage(nmod_poly_t res, const nmod_poly_t Q) + void _nmod_poly_power_sums_to_poly(mp_ptr res, mp_srcptr poly, slong len, nmod_t mod) + void nmod_poly_power_sums_to_poly(nmod_poly_t res, const nmod_poly_t Q) + void _nmod_poly_log_series_monomial_ui(mp_ptr g, mp_limb_t c, ulong r, slong n, nmod_t mod) + void nmod_poly_log_series_monomial_ui(nmod_poly_t g, mp_limb_t c, ulong r, slong n) + void _nmod_poly_log_series(mp_ptr g, mp_srcptr h, slong hlen, slong n, nmod_t mod) + void nmod_poly_log_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_exp_series_monomial_ui(mp_ptr g, mp_limb_t c, ulong r, slong n, nmod_t mod) + void nmod_poly_exp_series_monomial_ui(nmod_poly_t g, mp_limb_t c, ulong r, slong n) + void _nmod_poly_exp_series_basecase(mp_ptr g, mp_srcptr h, slong hlen, slong n, nmod_t mod) + void nmod_poly_exp_series_basecase(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_exp_series(mp_ptr f, mp_srcptr h, slong hlen, slong n, nmod_t mod) + void _nmod_poly_exp_expinv_series(mp_ptr f, mp_ptr g, mp_srcptr h, slong n, nmod_t mod) + void nmod_poly_exp_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_atan_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) + void nmod_poly_atan_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_atanh_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) + void nmod_poly_atanh_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_asin_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) + void nmod_poly_asin_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_asinh_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) + void nmod_poly_asinh_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_sin_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) + void nmod_poly_sin_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_cos_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) + void nmod_poly_cos_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_tan_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) + void nmod_poly_tan_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_sinh_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) + void nmod_poly_sinh_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_cosh_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) + void nmod_poly_cosh_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_tanh_series(mp_ptr g, mp_srcptr h, slong n, nmod_t mod) + void nmod_poly_tanh_series(nmod_poly_t g, const nmod_poly_t h, slong n) + void _nmod_poly_product_roots_nmod_vec(mp_ptr poly, mp_srcptr xs, slong n, nmod_t mod) + void nmod_poly_product_roots_nmod_vec(nmod_poly_t poly, mp_srcptr xs, slong n) + int nmod_poly_find_distinct_nonzero_roots(mp_limb_t * roots, const nmod_poly_t A) + mp_ptr * _nmod_poly_tree_alloc(slong len) + void _nmod_poly_tree_free(mp_ptr * tree, slong len) + void _nmod_poly_tree_build(mp_ptr * tree, mp_srcptr roots, slong len, nmod_t mod) + void nmod_poly_inflate(nmod_poly_t result, const nmod_poly_t input, ulong inflation) + void nmod_poly_deflate(nmod_poly_t result, const nmod_poly_t input, ulong deflation) + ulong nmod_poly_deflation(const nmod_poly_t input) + # void nmod_poly_multi_crt_init(nmod_poly_multi_crt_t CRT) + # int nmod_poly_multi_crt_precompute(nmod_poly_multi_crt_t CRT, const nmod_poly_struct * moduli, slong len) + # int nmod_poly_multi_crt_precompute_p(nmod_poly_multi_crt_t CRT, const nmod_poly_struct * const * moduli, slong len) + # void nmod_poly_multi_crt_precomp(nmod_poly_t output, const nmod_poly_multi_crt_t CRT, const nmod_poly_struct * values) + # void nmod_poly_multi_crt_precomp_p(nmod_poly_t output, const nmod_poly_multi_crt_t CRT, const nmod_poly_struct * const * values) + int nmod_poly_multi_crt(nmod_poly_t output, const nmod_poly_struct * moduli, const nmod_poly_struct * values, slong len) + # void nmod_poly_multi_crt_clear(nmod_poly_multi_crt_t CRT) + # slong _nmod_poly_multi_crt_local_size(const nmod_poly_multi_crt_t CRT) + # void _nmod_poly_multi_crt_run(nmod_poly_struct * outputs, const nmod_poly_multi_crt_t CRT, const nmod_poly_struct * inputs) + # void _nmod_poly_multi_crt_run_p(nmod_poly_struct * outputs, const nmod_poly_multi_crt_t CRT, const nmod_poly_struct * const * inputs) + # void nmod_berlekamp_massey_init(nmod_berlekamp_massey_t B, mp_limb_t p) + # void nmod_berlekamp_massey_clear(nmod_berlekamp_massey_t B) + # void nmod_berlekamp_massey_start_over(nmod_berlekamp_massey_t B) + # void nmod_berlekamp_massey_set_prime(nmod_berlekamp_massey_t B, mp_limb_t p) + # void nmod_berlekamp_massey_add_points(nmod_berlekamp_massey_t B, const mp_limb_t * a, slong count) + # void nmod_berlekamp_massey_add_zeros(nmod_berlekamp_massey_t B, slong count) + # void nmod_berlekamp_massey_add_point(nmod_berlekamp_massey_t B, mp_limb_t a) + # int nmod_berlekamp_massey_reduce(nmod_berlekamp_massey_t B) + # slong nmod_berlekamp_massey_point_count(const nmod_berlekamp_massey_t B) + # const mp_limb_t * nmod_berlekamp_massey_points(const nmod_berlekamp_massey_t B) + # const nmod_poly_struct * nmod_berlekamp_massey_V_poly(const nmod_berlekamp_massey_t B) + # const nmod_poly_struct * nmod_berlekamp_massey_R_poly(const nmod_berlekamp_massey_t B) + + + # void nmod_poly_init(nmod_poly_t poly, mp_limb_t n) + # void nmod_poly_init_preinv(nmod_poly_t poly, mp_limb_t n, mp_limb_t ninv) + # void nmod_poly_init2(nmod_poly_t poly, mp_limb_t n, long alloc) + # void nmod_poly_init2_preinv(nmod_poly_t poly, mp_limb_t n, mp_limb_t ninv, long alloc) + # void nmod_poly_realloc(nmod_poly_t poly, long alloc) + # void nmod_poly_clear(nmod_poly_t poly) + # void nmod_poly_fit_length(nmod_poly_t poly, long alloc) + # long nmod_poly_length(nmod_poly_t poly) + # long nmod_poly_degree(nmod_poly_t poly) + # mp_limb_t nmod_poly_modulus(nmod_poly_t poly) + # mp_bitcnt_t nmod_poly_max_bits(nmod_poly_t poly) + # void nmod_poly_set(nmod_poly_t a, nmod_poly_t b) + # void nmod_poly_swap(nmod_poly_t poly1, nmod_poly_t poly2) + # void nmod_poly_zero(nmod_poly_t res) + # void nmod_poly_truncate(nmod_poly_t poly, long len) + # void nmod_poly_reverse(nmod_poly_t output, nmod_poly_t input, long m) + # void nmod_poly_randtest(nmod_poly_t poly, flint_rand_t state, long len) + # ulong nmod_poly_get_coeff_ui(nmod_poly_t poly, ulong j) + # void nmod_poly_set_coeff_ui(nmod_poly_t poly, ulong j, ulong c) + # char * nmod_poly_get_str(nmod_poly_t poly) + # int nmod_poly_set_str(char * s, nmod_poly_t poly) + # int nmod_poly_print(nmod_poly_t a) + # int nmod_poly_equal(nmod_poly_t a, nmod_poly_t b) + # int nmod_poly_is_zero(nmod_poly_t poly) + # void nmod_poly_shift_left(nmod_poly_t res, nmod_poly_t poly, long k) + # void nmod_poly_shift_right(nmod_poly_t res, nmod_poly_t poly, long k) + # void nmod_poly_add(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2) + # void nmod_poly_sub(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2) + # void nmod_poly_neg(nmod_poly_t res, nmod_poly_t poly1) + # void nmod_poly_scalar_mul_nmod(nmod_poly_t res, nmod_poly_t poly1, mp_limb_t c) + # void nmod_poly_make_monic(nmod_poly_t output, nmod_poly_t input) + # void nmod_poly_mul(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2) + # void nmod_poly_mullow(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2, long trunc) + # void nmod_poly_pow(nmod_poly_t res, nmod_poly_t poly, ulong e) + # void nmod_poly_pow_trunc(nmod_poly_t res, nmod_poly_t poly, ulong e, long trunc) + # void nmod_poly_divrem(nmod_poly_t Q, nmod_poly_t R, nmod_poly_t A, nmod_poly_t B) + # void nmod_poly_div(nmod_poly_t Q, nmod_poly_t A, nmod_poly_t B) + # void nmod_poly_inv_series(nmod_poly_t Qinv, nmod_poly_t Q, long n) + # void nmod_poly_div_series(nmod_poly_t Q, nmod_poly_t A, nmod_poly_t B, long n) + # void nmod_poly_derivative(nmod_poly_t x_prime, nmod_poly_t x) + # void nmod_poly_integral(nmod_poly_t x_int, nmod_poly_t x) + # mp_limb_t nmod_poly_evaluate_nmod(nmod_poly_t poly, mp_limb_t c) + # void nmod_poly_compose(nmod_poly_t res, nmod_poly_t poly1, nmod_poly_t poly2) + # void nmod_poly_gcd(nmod_poly_t G, nmod_poly_t A, nmod_poly_t B) + # void nmod_poly_xgcd(nmod_poly_t G, nmod_poly_t S, nmod_poly_t T, nmod_poly_t A, nmod_poly_t B) + # void nmod_poly_invsqrt_series(nmod_poly_t g, nmod_poly_t h, long n) + # void nmod_poly_sqrt_series(nmod_poly_t g, nmod_poly_t h, long n) + # void nmod_poly_atan_series(nmod_poly_t g, nmod_poly_t h, long n) + # void nmod_poly_tan_series(nmod_poly_t g, nmod_poly_t h, long n) + # void nmod_poly_asin_series(nmod_poly_t g, nmod_poly_t h, long n) + # void nmod_poly_sin_series(nmod_poly_t g, nmod_poly_t h, long n) + # void nmod_poly_cos_series(nmod_poly_t g, nmod_poly_t h, long n) + # void nmod_poly_asinh_series(nmod_poly_t g, nmod_poly_t h, long n) + # void nmod_poly_atanh_series(nmod_poly_t g, nmod_poly_t h, long n) + # void nmod_poly_sinh_series(nmod_poly_t g, nmod_poly_t h, long n) + # void nmod_poly_cosh_series(nmod_poly_t g, nmod_poly_t h, long n) + # void nmod_poly_tanh_series(nmod_poly_t g, nmod_poly_t h, long n) + # void nmod_poly_log_series(nmod_poly_t res, nmod_poly_t f, long n) + # void nmod_poly_exp_series(nmod_poly_t f, nmod_poly_t h, long n) - int nmod_poly_is_irreducible(nmod_poly_t f) - mp_limb_t nmod_poly_factor_with_berlekamp(nmod_poly_factor_t result, nmod_poly_t poly) - mp_limb_t nmod_poly_factor_with_cantor_zassenhaus(nmod_poly_factor_t result, nmod_poly_t poly) - mp_limb_t nmod_poly_factor(nmod_poly_factor_t result, nmod_poly_t input) - void nmod_poly_factor_init(nmod_poly_factor_t fac) - void nmod_poly_factor_clear(nmod_poly_factor_t fac) + # int nmod_poly_is_irreducible(nmod_poly_t f) + # mp_limb_t nmod_poly_factor_with_berlekamp(nmod_poly_factor_t result, nmod_poly_t poly) + # mp_limb_t nmod_poly_factor_with_cantor_zassenhaus(nmod_poly_factor_t result, nmod_poly_t poly) + # mp_limb_t nmod_poly_factor(nmod_poly_factor_t result, nmod_poly_t input) + # void nmod_poly_factor_init(nmod_poly_factor_t fac) + # void nmod_poly_factor_clear(nmod_poly_factor_t fac) diff --git a/src/flint/flintlib/nmod_poly_factor.pxd b/src/flint/flintlib/nmod_poly_factor.pxd new file mode 100644 index 00000000..1b7dda89 --- /dev/null +++ b/src/flint/flintlib/nmod_poly_factor.pxd @@ -0,0 +1,42 @@ +from flint.flintlib.flint cimport slong, ulong, mp_srcptr, flint_rand_t, mp_limb_t +from flint.flintlib.nmod cimport nmod_t +from flint.flintlib.nmod_poly cimport nmod_poly_t, nmod_poly_struct + +cdef extern from "flint/nmod_poly_factor.h": + + ctypedef struct nmod_poly_factor_struct: + nmod_poly_struct *p + long *exp + long num + long alloc + ctypedef nmod_poly_factor_struct nmod_poly_factor_t[1] + +# from here on is parsed + void nmod_poly_factor_init(nmod_poly_factor_t fac) + void nmod_poly_factor_clear(nmod_poly_factor_t fac) + void nmod_poly_factor_realloc(nmod_poly_factor_t fac, slong alloc) + void nmod_poly_factor_fit_length(nmod_poly_factor_t fac, slong len) + void nmod_poly_factor_set(nmod_poly_factor_t res, const nmod_poly_factor_t fac) + void nmod_poly_factor_print(const nmod_poly_factor_t fac) + void nmod_poly_factor_insert(nmod_poly_factor_t fac, const nmod_poly_t poly, slong exp) + void nmod_poly_factor_concat(nmod_poly_factor_t res, const nmod_poly_factor_t fac) + void nmod_poly_factor_pow(nmod_poly_factor_t fac, slong exp) + ulong nmod_poly_remove(nmod_poly_t f, const nmod_poly_t p) + int nmod_poly_is_irreducible(const nmod_poly_t f) + int nmod_poly_is_irreducible_ddf(const nmod_poly_t f) + int nmod_poly_is_irreducible_rabin(const nmod_poly_t f) + int _nmod_poly_is_squarefree(mp_srcptr f, slong len, nmod_t mod) + int nmod_poly_is_squarefree(const nmod_poly_t f) + void nmod_poly_factor_squarefree(nmod_poly_factor_t res, const nmod_poly_t f) + int nmod_poly_factor_equal_deg_prob(nmod_poly_t factor, flint_rand_t state, const nmod_poly_t pol, slong d) + void nmod_poly_factor_equal_deg(nmod_poly_factor_t factors, const nmod_poly_t pol, slong d) + void nmod_poly_factor_distinct_deg(nmod_poly_factor_t res, const nmod_poly_t poly, slong * const *degs) + void nmod_poly_factor_distinct_deg_threaded(nmod_poly_factor_t res, const nmod_poly_t poly, slong * const *degs) + void nmod_poly_factor_cantor_zassenhaus(nmod_poly_factor_t res, const nmod_poly_t f) + void nmod_poly_factor_berlekamp(nmod_poly_factor_t res, const nmod_poly_t f) + void nmod_poly_factor_kaltofen_shoup(nmod_poly_factor_t res, const nmod_poly_t poly) + mp_limb_t nmod_poly_factor_with_berlekamp(nmod_poly_factor_t res, const nmod_poly_t f) + mp_limb_t nmod_poly_factor_with_cantor_zassenhaus(nmod_poly_factor_t res, const nmod_poly_t f) + mp_limb_t nmod_poly_factor_with_kaltofen_shoup(nmod_poly_factor_t res, const nmod_poly_t f) + mp_limb_t nmod_poly_factor(nmod_poly_factor_t res, const nmod_poly_t f) + void _nmod_poly_interval_poly_worker(void* arg_ptr) diff --git a/src/flint/flintlib/nmod_vec.pxd b/src/flint/flintlib/nmod_vec.pxd index 9a154a18..fd9760b9 100644 --- a/src/flint/flintlib/nmod_vec.pxd +++ b/src/flint/flintlib/nmod_vec.pxd @@ -1,10 +1,7 @@ -from flint._flint cimport mp_limb_t, mp_bitcnt_t +from flint.flintlib.flint cimport mp_limb_t, mp_bitcnt_t +from flint.flintlib.nmod cimport nmod_t cdef extern from "flint/nmod_vec.h": - ctypedef struct nmod_t: - mp_limb_t n - mp_limb_t ninv - mp_bitcnt_t norm void nmod_init(nmod_t * mod, mp_limb_t n) mp_limb_t nmod_add(mp_limb_t a, mp_limb_t b, nmod_t mod) mp_limb_t nmod_sub(mp_limb_t a, mp_limb_t b, nmod_t mod) diff --git a/src/flint/flintlib/partitions.pxd b/src/flint/flintlib/partitions.pxd index ac523b55..7c01d6c6 100644 --- a/src/flint/flintlib/partitions.pxd +++ b/src/flint/flintlib/partitions.pxd @@ -1,4 +1,13 @@ +from flint.flintlib.flint cimport ulong, slong from flint.flintlib.fmpz cimport fmpz_t +from flint.flintlib.arf cimport arf_t +from flint.flintlib.arb cimport arb_t cdef extern from "partitions.h": - void partitions_fmpz_fmpz(fmpz_t, const fmpz_t, int) +# from here on is parsed + void partitions_rademacher_bound(arf_t b, const fmpz_t n, ulong N) + void partitions_hrr_sum_arb(arb_t x, const fmpz_t n, slong N0, slong N, int use_doubles) + void partitions_fmpz_fmpz(fmpz_t p, const fmpz_t n, int use_doubles) + void partitions_fmpz_ui(fmpz_t p, ulong n) + void partitions_fmpz_ui_using_doubles(fmpz_t p, ulong n) + void partitions_leading_fmpz(arb_t res, const fmpz_t n, slong prec) diff --git a/src/flint/flintlib/ulong_extras.pxd b/src/flint/flintlib/ulong_extras.pxd index e253dd91..37ae0327 100644 --- a/src/flint/flintlib/ulong_extras.pxd +++ b/src/flint/flintlib/ulong_extras.pxd @@ -1,5 +1,130 @@ -from flint._flint cimport ulong +from flint.flintlib.flint cimport ulong, flint_rand_t, slong, mp_limb_t +from flint.flintlib.fmpz cimport fmpz_t cdef extern from "flint/ulong_extras.h": - ulong n_gcd(ulong n, ulong k) +# ulong n_gcd(ulong n, ulong k) +# int n_is_prime(ulong n) + +# from here on is parsed + ulong n_randlimb(flint_rand_t state) + ulong n_randbits(flint_rand_t state, unsigned int bits) + ulong n_randtest_bits(flint_rand_t state, int bits) + ulong n_randint(flint_rand_t state, ulong limit) + ulong n_urandint(flint_rand_t state, ulong limit) + ulong n_randtest(flint_rand_t state) + ulong n_randtest_not_zero(flint_rand_t state) + ulong n_randprime(flint_rand_t state, ulong bits, int proved) + ulong n_randtest_prime(flint_rand_t state, int proved) + ulong n_pow(ulong n, ulong exp) + ulong n_flog(ulong n, ulong b) + ulong n_clog(ulong n, ulong b) + ulong n_clog_2exp(ulong n, ulong b) + ulong n_revbin(ulong n, ulong b) + int n_sizeinbase(ulong n, int base) + ulong n_preinvert_limb(ulong n) + double n_precompute_inverse(ulong n) + ulong n_mod_precomp(ulong a, ulong n, double ninv) + ulong n_mod2_precomp(ulong a, ulong n, double ninv) + ulong n_divrem2_preinv(ulong * q, ulong a, ulong n, ulong ninv) + ulong n_div2_preinv(ulong a, ulong n, ulong ninv) + ulong n_mod2_preinv(ulong a, ulong n, ulong ninv) + ulong n_divrem2_precomp(ulong * q, ulong a, ulong n, double npre) + ulong n_ll_mod_preinv(ulong a_hi, ulong a_lo, ulong n, ulong ninv) + ulong n_lll_mod_preinv(ulong a_hi, ulong a_mi, ulong a_lo, ulong n, ulong ninv) + ulong n_mulmod_precomp(ulong a, ulong b, ulong n, double ninv) + ulong n_mulmod2_preinv(ulong a, ulong b, ulong n, ulong ninv) + ulong n_mulmod2(ulong a, ulong b, ulong n) + ulong n_mulmod_preinv(ulong a, ulong b, ulong n, ulong ninv, ulong norm) + ulong n_gcd(ulong x, ulong y) + ulong n_gcdinv(ulong * a, ulong x, ulong y) + ulong n_xgcd(ulong * a, ulong * b, ulong x, ulong y) + # int n_jacobi(mp_limb_signed_t x, ulong y) + int n_jacobi_unsigned(ulong x, ulong y) + ulong n_addmod(ulong a, ulong b, ulong n) + ulong n_submod(ulong a, ulong b, ulong n) + ulong n_invmod(ulong x, ulong y) + # ulong n_powmod_precomp(ulong a, mp_limb_signed_t exp, ulong n, double npre) + ulong n_powmod_ui_precomp(ulong a, ulong exp, ulong n, double npre) + # ulong n_powmod(ulong a, mp_limb_signed_t exp, ulong n) + # ulong n_powmod2_preinv(ulong a, mp_limb_signed_t exp, ulong n, ulong ninv) + # ulong n_powmod2(ulong a, mp_limb_signed_t exp, ulong n) + ulong n_powmod2_ui_preinv(ulong a, ulong exp, ulong n, ulong ninv) + ulong n_powmod2_fmpz_preinv(ulong a, const fmpz_t exp, ulong n, ulong ninv) + ulong n_sqrtmod(ulong a, ulong p) + slong n_sqrtmod_2pow(ulong ** sqrt, ulong a, slong exp) + slong n_sqrtmod_primepow(ulong ** sqrt, ulong a, ulong p, slong exp) + # slong n_sqrtmodn(ulong ** sqrt, ulong a, n_factor_t * fac) + mp_limb_t n_mulmod_shoup(mp_limb_t w, mp_limb_t t, mp_limb_t w_precomp, mp_limb_t p) + mp_limb_t n_mulmod_precomp_shoup(mp_limb_t w, mp_limb_t p) + int n_divides(mp_limb_t * q, mp_limb_t n, mp_limb_t p) + # void n_primes_init(n_primes_t iter) + # void n_primes_clear(n_primes_t iter) + # ulong n_primes_next(n_primes_t iter) + # void n_primes_jump_after(n_primes_t iter, ulong n) + # void n_primes_extend_small(n_primes_t iter, ulong bound) + # void n_primes_sieve_range(n_primes_t iter, ulong a, ulong b) + void n_compute_primes(ulong num_primes) + const ulong * n_primes_arr_readonly(ulong num_primes) + const double * n_prime_inverses_arr_readonly(ulong n) + void n_cleanup_primes() + ulong n_nextprime(ulong n, int proved) + ulong n_prime_pi(ulong n) + void n_prime_pi_bounds(ulong *lo, ulong *hi, ulong n) + ulong n_nth_prime(ulong n) + void n_nth_prime_bounds(ulong *lo, ulong *hi, ulong n) + int n_is_oddprime_small(ulong n) + int n_is_oddprime_binary(ulong n) + int n_is_prime_pocklington(ulong n, ulong iterations) + int n_is_prime_pseudosquare(ulong n) int n_is_prime(ulong n) + int n_is_strong_probabprime_precomp(ulong n, double npre, ulong a, ulong d) + int n_is_strong_probabprime2_preinv(ulong n, ulong ninv, ulong a, ulong d) + int n_is_probabprime_fermat(ulong n, ulong i) + int n_is_probabprime_fibonacci(ulong n) + int n_is_probabprime_BPSW(ulong n) + int n_is_probabprime_lucas(ulong n) + int n_is_probabprime(ulong n) + ulong n_CRT(ulong r1, ulong m1, ulong r2, ulong m2) + ulong n_sqrt(ulong a) + ulong n_sqrtrem(ulong * r, ulong a) + int n_is_square(ulong x) + int n_is_perfect_power235(ulong n) + int n_is_perfect_power(ulong * root, ulong n) + ulong n_rootrem(ulong* remainder, ulong n, ulong root) + ulong n_cbrt(ulong n) + ulong n_cbrt_newton_iteration(ulong n) + ulong n_cbrt_binary_search(ulong n) + ulong n_cbrt_chebyshev_approx(ulong n) + ulong n_cbrtrem(ulong* remainder, ulong n) + int n_remove(ulong * n, ulong p) + int n_remove2_precomp(ulong * n, ulong p, double ppre) + # void n_factor_insert(n_factor_t * factors, ulong p, ulong exp) + # ulong n_factor_trial_range(n_factor_t * factors, ulong n, ulong start, ulong num_primes) + # ulong n_factor_trial(n_factor_t * factors, ulong n, ulong num_primes) + ulong n_factor_power235(ulong *exp, ulong n) + ulong n_factor_one_line(ulong n, ulong iters) + ulong n_factor_lehman(ulong n) + ulong n_factor_SQUFOF(ulong n, ulong iters) + # void n_factor(n_factor_t * factors, ulong n, int proved) + # ulong n_factor_trial_partial(n_factor_t * factors, ulong n, ulong * prod, ulong num_primes, ulong limit) + # ulong n_factor_partial(n_factor_t * factors, ulong n, ulong limit, int proved) + ulong n_factor_pp1(ulong n, ulong B1, ulong c) + ulong n_factor_pp1_wrapper(ulong n) + int n_factor_pollard_brent_single(mp_limb_t *factor, mp_limb_t n, mp_limb_t ninv, mp_limb_t ai, mp_limb_t xi, mp_limb_t normbits, mp_limb_t max_iters) + int n_factor_pollard_brent(mp_limb_t *factor, flint_rand_t state, mp_limb_t n_in, mp_limb_t max_tries, mp_limb_t max_iters) + int n_moebius_mu(ulong n) + void n_moebius_mu_vec(int * mu, ulong len) + int n_is_squarefree(ulong n) + ulong n_euler_phi(ulong n) + ulong n_factorial_fast_mod2_preinv(ulong n, ulong p, ulong pinv) + ulong n_factorial_mod2_preinv(ulong n, ulong p, ulong pinv) + # ulong n_primitive_root_prime_prefactor(ulong p, n_factor_t * factors) + ulong n_primitive_root_prime(ulong p) + ulong n_discrete_log_bsgs(ulong b, ulong a, ulong n) + # void n_factor_ecm_double(mp_limb_t *x, mp_limb_t *z, mp_limb_t x0, mp_limb_t z0, mp_limb_t n, n_ecm_t n_ecm_inf) + # void n_factor_ecm_add(mp_limb_t *x, mp_limb_t *z, mp_limb_t x1, mp_limb_t z1, mp_limb_t x2, mp_limb_t z2, mp_limb_t x0, mp_limb_t z0, mp_limb_t n, n_ecm_t n_ecm_inf) + # void n_factor_ecm_mul_montgomery_ladder(mp_limb_t *x, mp_limb_t *z, mp_limb_t x0, mp_limb_t z0, mp_limb_t k, mp_limb_t n, n_ecm_t n_ecm_inf) + # int n_factor_ecm_select_curve(mp_limb_t *f, mp_limb_t sigma, mp_limb_t n, n_ecm_t n_ecm_inf) + # int n_factor_ecm_stage_I(mp_limb_t *f, const mp_limb_t *prime_array, mp_limb_t num, mp_limb_t B1, mp_limb_t n, n_ecm_t n_ecm_inf) + # int n_factor_ecm_stage_II(mp_limb_t *f, mp_limb_t B1, mp_limb_t B2, mp_limb_t P, mp_limb_t n, n_ecm_t n_ecm_inf) + # int n_factor_ecm(mp_limb_t *f, mp_limb_t curves, mp_limb_t B1, mp_limb_t B2, flint_rand_t state, mp_limb_t n) diff --git a/src/flint/pyflint.pxd b/src/flint/pyflint.pxd index d34fb964..ec18e14c 100644 --- a/src/flint/pyflint.pxd +++ b/src/flint/pyflint.pxd @@ -6,7 +6,7 @@ from flint.flint_base.flint_base cimport flint_scalar from flint.flint_base.flint_base cimport flint_poly from flint.types.fmpz cimport fmpz -from flint._flint cimport * +from flint.flintlib.flint cimport * cdef flint_rand_t global_random_state diff --git a/src/flint/types/acb.pyx b/src/flint/types/acb.pyx index d0d345eb..961da564 100644 --- a/src/flint/types/acb.pyx +++ b/src/flint/types/acb.pyx @@ -13,7 +13,7 @@ from flint.types.fmpz cimport fmpz from flint.types.fmpz cimport any_as_fmpz from flint.types.dirichlet cimport dirichlet_char -from flint._flint cimport FMPZ_TMP, FMPZ_REF, FMPZ_UNKNOWN +from flint.flintlib.flint cimport FMPZ_TMP, FMPZ_REF, FMPZ_UNKNOWN from flint.flintlib.mag cimport * from flint.flintlib.arb cimport * from flint.flintlib.arf cimport * diff --git a/src/flint/types/arb.pyx b/src/flint/types/arb.pyx index 129a519a..5f5a15b4 100644 --- a/src/flint/types/arb.pyx +++ b/src/flint/types/arb.pyx @@ -14,7 +14,7 @@ from flint.types.arf cimport arf from flint.types.fmpq cimport fmpq from flint.types.fmpz cimport fmpz -from flint._flint cimport FMPZ_UNKNOWN, FMPZ_TMP, FMPZ_REF +from flint.flintlib.flint cimport FMPZ_UNKNOWN, FMPZ_TMP, FMPZ_REF from flint.flintlib.mag cimport * from flint.flintlib.fmpz cimport fmpz_init, fmpz_clear from flint.flintlib.arf cimport * diff --git a/src/flint/types/fmpq.pyx b/src/flint/types/fmpq.pyx index 35f81a3d..83c9c4b5 100644 --- a/src/flint/types/fmpq.pyx +++ b/src/flint/types/fmpq.pyx @@ -4,7 +4,7 @@ from flint.types.fmpz cimport fmpz_set_any_ref from flint.types.fmpz cimport fmpz from flint.types.fmpz cimport any_as_fmpz -from flint._flint cimport FMPZ_UNKNOWN, FMPZ_TMP +from flint.flintlib.flint cimport FMPZ_UNKNOWN, FMPZ_TMP from flint.flintlib.fmpz cimport fmpz_set, fmpz_one from flint.flintlib.fmpz cimport fmpz_is_zero, fmpz_sgn from flint.flintlib.fmpz cimport fmpz_fdiv_q, fmpz_bits diff --git a/src/flint/types/fmpz.pxd b/src/flint/types/fmpz.pxd index d23f5f71..4317c89f 100644 --- a/src/flint/types/fmpz.pxd +++ b/src/flint/types/fmpz.pxd @@ -3,8 +3,8 @@ from cpython.long cimport PyLong_Check from flint.flint_base.flint_base cimport flint_scalar from flint.utils.conversion cimport chars_from_str -from flint._flint cimport slong, pylong_as_slong -from flint._flint cimport PyObject +from flint.flintlib.flint cimport slong, pylong_as_slong +from flint.flintlib.flint cimport PyObject from flint.flintlib.fmpz cimport fmpz_t, fmpz_set_str, fmpz_set_si from cpython.version cimport PY_MAJOR_VERSION diff --git a/src/flint/types/fmpz.pyx b/src/flint/types/fmpz.pyx index 45f7b6f9..51d46ba1 100644 --- a/src/flint/types/fmpz.pyx +++ b/src/flint/types/fmpz.pyx @@ -6,7 +6,7 @@ from flint.utils.conversion cimport chars_from_str from flint.utils.conversion cimport str_from_chars, _str_trunc cimport libc.stdlib -from flint._flint cimport FMPZ_REF, FMPZ_TMP, FMPZ_UNKNOWN +from flint.flintlib.flint cimport FMPZ_REF, FMPZ_TMP, FMPZ_UNKNOWN from flint.flintlib.fmpz cimport * from flint.flintlib.fmpz_factor cimport * from flint.flintlib.arith cimport * diff --git a/src/flint/types/fmpz_mpoly.pxd b/src/flint/types/fmpz_mpoly.pxd index 8cf863c3..e4470efd 100644 --- a/src/flint/types/fmpz_mpoly.pxd +++ b/src/flint/types/fmpz_mpoly.pxd @@ -2,7 +2,7 @@ from flint.flint_base.flint_base cimport flint_mpoly from flint.flintlib.fmpz_mpoly cimport fmpz_mpoly_ctx_t from flint.flintlib.fmpz_mpoly cimport fmpz_mpoly_t -from flint._flint cimport slong +from flint.flintlib.flint cimport slong cdef class fmpz_mpoly_ctx: cdef fmpz_mpoly_ctx_t val diff --git a/src/flint/types/nmod.pxd b/src/flint/types/nmod.pxd index 0a441fec..3db868c7 100644 --- a/src/flint/types/nmod.pxd +++ b/src/flint/types/nmod.pxd @@ -1,5 +1,5 @@ from flint.flint_base.flint_base cimport flint_scalar -from flint._flint cimport mp_limb_t +from flint.flintlib.flint cimport mp_limb_t from flint.flintlib.nmod_vec cimport nmod_t cdef int any_as_nmod(mp_limb_t * val, obj, nmod_t mod) except -1 diff --git a/src/flint/types/nmod_mat.pxd b/src/flint/types/nmod_mat.pxd index 7a31e15b..fc930383 100644 --- a/src/flint/types/nmod_mat.pxd +++ b/src/flint/types/nmod_mat.pxd @@ -1,7 +1,7 @@ from flint.flint_base.flint_base cimport flint_mat from flint.flintlib.nmod_mat cimport nmod_mat_t -from flint._flint cimport mp_limb_t +from flint.flintlib.flint cimport mp_limb_t cdef class nmod_mat: cdef nmod_mat_t val diff --git a/src/flint/types/nmod_mat.pyx b/src/flint/types/nmod_mat.pyx index 6a813433..350bf73d 100644 --- a/src/flint/types/nmod_mat.pyx +++ b/src/flint/types/nmod_mat.pyx @@ -9,7 +9,7 @@ from flint.flint_base.flint_context cimport thectx cimport cython -from flint._flint cimport ulong +from flint.flintlib.flint cimport ulong from flint.flintlib.nmod_mat cimport * from flint.flintlib.fmpz_mat cimport fmpz_mat_nrows, fmpz_mat_ncols from flint.flintlib.fmpz_mat cimport fmpz_mat_get_nmod_mat diff --git a/src/flint/types/nmod_poly.pxd b/src/flint/types/nmod_poly.pxd index ab33f64c..c0d1cd85 100644 --- a/src/flint/types/nmod_poly.pxd +++ b/src/flint/types/nmod_poly.pxd @@ -1,7 +1,7 @@ from flint.flint_base.flint_base cimport flint_poly from flint.flintlib.nmod_poly cimport nmod_poly_t -from flint._flint cimport mp_limb_t +from flint.flintlib.flint cimport mp_limb_t cdef class nmod_poly(flint_poly): cdef nmod_poly_t val diff --git a/src/flint/types/nmod_poly.pyx b/src/flint/types/nmod_poly.pyx index 6128eca9..8c7b297b 100644 --- a/src/flint/types/nmod_poly.pyx +++ b/src/flint/types/nmod_poly.pyx @@ -8,6 +8,7 @@ from flint.types.nmod cimport nmod from flint.flintlib.nmod_vec cimport * from flint.flintlib.nmod_poly cimport * +from flint.flintlib.nmod_poly_factor cimport * from flint.flintlib.fmpz_poly cimport fmpz_poly_get_nmod_poly cdef any_as_nmod_poly(obj, nmod_t mod):