diff --git a/bin/build_variables.sh b/bin/build_variables.sh index c65e5db5..6e12a71a 100644 --- a/bin/build_variables.sh +++ b/bin/build_variables.sh @@ -21,4 +21,4 @@ MPIRVER=3.0.0 # MPIR build no longer works (not clear where to download from) # These are the actual dependencies used (at least by default): GMPVER=6.3.0 MPFRVER=4.2.2 -FLINTVER='3.2.2' +FLINTVER='3.3.0' diff --git a/meson.build b/meson.build index 3e009f53..71cbc18e 100644 --- a/meson.build +++ b/meson.build @@ -12,7 +12,7 @@ project( # then we can consider not using a speculative upper version cap here. # flint_lower = '>=3.0' -flint_upper = '<3.3' +flint_upper = '<3.4' cython_lower = '>=3.0.11' cython_upper = '<3.2' diff --git a/src/flint/flintlib/functions/acb_theta.pxd b/src/flint/flintlib/functions/acb_theta.pxd index 5fab53ec..fa4a6713 100644 --- a/src/flint/flintlib/functions/acb_theta.pxd +++ b/src/flint/flintlib/functions/acb_theta.pxd @@ -1,33 +1,21 @@ from flint.flintlib.types.acb cimport acb_mat_t, acb_poly_struct, acb_poly_t, acb_ptr, acb_srcptr, acb_t -from flint.flintlib.types.acb_theta cimport acb_theta_eld_t, acb_theta_naive_worker_t, acb_theta_ql_worker_t +from flint.flintlib.types.acb_theta cimport acb_theta_eld_t from flint.flintlib.types.arb cimport arb_mat_t, arb_ptr, arb_srcptr, arb_t from flint.flintlib.types.arf cimport arf_t from flint.flintlib.types.flint cimport flint_rand_t, slong, ulong from flint.flintlib.types.fmpz cimport fmpz_mat_struct, fmpz_mat_t +# unknown type acb_theta_ctx_tau_t +# unknown type acb_theta_ctx_z_struct +# unknown type acb_theta_ctx_z_t +# unknown type acb_theta_sum_worker_t -# .. macro:: acb_theta_eld_dim(E) -# .. macro:: acb_theta_eld_ambient_dim(E) -# .. macro:: acb_theta_eld_coord(E, k) -# .. macro:: acb_theta_eld_min(E) -# .. macro:: acb_theta_eld_mid(E) -# .. macro:: acb_theta_eld_max(E) -# .. macro:: acb_theta_eld_nr(E) -# .. macro:: acb_theta_eld_nl(E) -# .. macro:: acb_theta_eld_rchild(E, k) -# .. macro:: acb_theta_eld_lchild(E, k) -# .. macro:: acb_theta_eld_nb_pts(E) -# .. macro:: acb_theta_eld_nb_border(E) -# .. macro:: acb_theta_eld_box(E, k) -# .. macro:: ACB_THETA_G2_COV_NB cdef extern from "flint/acb_theta.h": + ulong acb_theta_char_set_slong_vec(const slong * vec, slong len) + void acb_theta_one(acb_t th, acb_srcptr z, const acb_mat_t tau, ulong ab, slong prec) void acb_theta_all(acb_ptr th, acb_srcptr z, const acb_mat_t tau, int sqr, slong prec) - void acb_theta_naive_fixed_ab(acb_ptr th, ulong ab, acb_srcptr zs, slong nb, const acb_mat_t tau, slong prec) - void acb_theta_naive_all(acb_ptr th, acb_srcptr zs, slong nb, const acb_mat_t tau, slong prec) - void acb_theta_jet_all(acb_ptr dth, acb_srcptr z, const acb_mat_t tau, slong ord, slong prec) - void acb_theta_jet_naive_fixed_ab(acb_ptr dth, ulong ab, acb_srcptr z, const acb_mat_t tau, slong ord, slong prec) - void acb_theta_jet_naive_all(acb_ptr dth, acb_srcptr z, const acb_mat_t tau, slong ord, slong prec) + void acb_theta_jet(acb_ptr th, acb_srcptr zs, slong nb, const acb_mat_t tau, slong ord, ulong ab, int all, int sqr, slong prec) slong sp2gz_dim(const fmpz_mat_t mat) void sp2gz_set_blocks(fmpz_mat_t mat, const fmpz_mat_t alpha, const fmpz_mat_t beta, const fmpz_mat_t gamma, const fmpz_mat_t delta) void sp2gz_j(fmpz_mat_t mat) @@ -48,38 +36,24 @@ cdef extern from "flint/acb_theta.h": void acb_siegel_cocycle(acb_mat_t c, const fmpz_mat_t mat, const acb_mat_t tau, slong prec) void acb_siegel_transform_cocycle_inv(acb_mat_t w, acb_mat_t c, acb_mat_t cinv, const fmpz_mat_t mat, const acb_mat_t tau, slong prec) void acb_siegel_transform(acb_mat_t w, const fmpz_mat_t mat, const acb_mat_t tau, slong prec) - void acb_siegel_transform_z(acb_ptr r, acb_mat_t w, const fmpz_mat_t mat, acb_srcptr z, const acb_mat_t tau, slong prec) - void acb_siegel_cho(arb_mat_t C, const acb_mat_t tau, slong prec) - void acb_siegel_yinv(arb_mat_t Yinv, const acb_mat_t tau, slong prec) + void acb_siegel_cho_yinv(arb_mat_t cho, arb_mat_t yinv, const acb_mat_t tau, slong prec) void acb_siegel_reduce(fmpz_mat_t mat, const acb_mat_t tau, slong prec) int acb_siegel_is_reduced(const acb_mat_t tau, slong tol_exp, slong prec) + slong acb_siegel_kappa(acb_t sqrtdet, const fmpz_mat_t mat, const acb_mat_t tau, int sqr, slong prec) + slong acb_siegel_kappa2(const fmpz_mat_t mat) void acb_siegel_randtest(acb_mat_t tau, flint_rand_t state, slong prec, slong mag_bits) void acb_siegel_randtest_reduced(acb_mat_t tau, flint_rand_t state, slong prec, slong mag_bits) + void acb_siegel_randtest_compact(acb_mat_t tau, flint_rand_t state, int exact, slong prec) void acb_siegel_randtest_vec(acb_ptr z, flint_rand_t state, slong g, slong prec) - void acb_theta_char_get_slong(slong * n, ulong a, slong g) - ulong acb_theta_char_get_a(const slong * n, slong g) + void acb_siegel_randtest_vec_reduced(acb_ptr zs, flint_rand_t state, slong nb, const acb_mat_t tau, int exact, slong prec) + int acb_theta_char_bit(ulong ch, slong j, slong n) void acb_theta_char_get_arb(arb_ptr v, ulong a, slong g) void acb_theta_char_get_acb(acb_ptr v, ulong a, slong g) slong acb_theta_char_dot(ulong a, ulong b, slong g) slong acb_theta_char_dot_slong(ulong a, const slong * n, slong g) - void acb_theta_char_dot_acb(acb_t x, ulong a, acb_srcptr z, slong g, slong prec) int acb_theta_char_is_even(ulong ab, slong g) - int acb_theta_char_is_goepel(ulong ch1, ulong ch2, ulong ch3, ulong ch4, slong g) - int acb_theta_char_is_syzygous(ulong ch1, ulong ch2, ulong ch3, slong g) - void acb_theta_eld_init(acb_theta_eld_t E, slong d, slong g) - void acb_theta_eld_clear(acb_theta_eld_t E) - int acb_theta_eld_set(acb_theta_eld_t E, const arb_mat_t C, const arf_t R2, arb_srcptr v) - void acb_theta_eld_points(slong * pts, const acb_theta_eld_t E) - void acb_theta_eld_border(slong * pts, const acb_theta_eld_t E) - int acb_theta_eld_contains(const acb_theta_eld_t E, slong * pt) - void acb_theta_eld_print(const acb_theta_eld_t E) - void acb_theta_naive_radius(arf_t R2, arf_t eps, const arb_mat_t C, slong ord, slong prec) - void acb_theta_naive_reduce(arb_ptr v, acb_ptr new_zs, arb_ptr as, acb_ptr cs, arb_ptr us, acb_srcptr zs, slong nb, const acb_mat_t tau, slong prec) - void acb_theta_naive_term(acb_t res, acb_srcptr z, const acb_mat_t tau, slong * tup, slong * n, slong prec) - void acb_theta_naive_worker(acb_ptr th, slong len, acb_srcptr zs, slong nb, const acb_mat_t tau, const acb_theta_eld_t E, slong ord, slong prec, acb_theta_naive_worker_t worker) - void acb_theta_naive_00(acb_ptr th, acb_srcptr zs, slong nb, const acb_mat_t tau, slong prec) - void acb_theta_naive_0b(acb_ptr th, acb_srcptr zs, slong nb, const acb_mat_t tau, slong prec) - void acb_theta_naive_fixed_a(acb_ptr th, ulong a, acb_srcptr zs, slong nb, const acb_mat_t tau, slong prec) + void acb_theta_char_table(ulong * ch, slong * e, const fmpz_mat_t mat, ulong ab, int all) + void acb_theta_char_shuffle(acb_ptr res, const fmpz_mat_t mat, acb_srcptr th, int sqr, slong prec) slong acb_theta_jet_nb(slong ord, slong g) slong acb_theta_jet_total_order(const slong * tup, slong g) void acb_theta_jet_tuples(slong * tups, slong ord, slong g) @@ -87,46 +61,63 @@ cdef extern from "flint/acb_theta.h": void acb_theta_jet_mul(acb_ptr res, acb_srcptr v1, acb_srcptr v2, slong ord, slong g, slong prec) void acb_theta_jet_compose(acb_ptr res, acb_srcptr v, const acb_mat_t N, slong ord, slong prec) void acb_theta_jet_exp_pi_i(acb_ptr res, arb_srcptr a, slong ord, slong g, slong prec) - void acb_theta_jet_naive_radius(arf_t R2, arf_t eps, arb_srcptr v, const arb_mat_t C, slong ord, slong prec) - void acb_theta_jet_naive_00(acb_ptr dth, acb_srcptr z, const acb_mat_t tau, slong ord, slong prec) - void acb_theta_jet_error_bounds(arb_ptr err, acb_srcptr z, const acb_mat_t tau, acb_srcptr dth, slong ord, slong prec) - void acb_theta_dist_pt(arb_t d, arb_srcptr v, const arb_mat_t C, slong * n, slong prec) - void acb_theta_dist_lat(arb_t d, arb_srcptr v, const arb_mat_t C, slong prec) - void acb_theta_dist_a0(arb_ptr d, acb_srcptr z, const acb_mat_t tau, slong prec) - slong acb_theta_dist_addprec(const arb_t d) - void acb_theta_agm_hadamard(acb_ptr res, acb_srcptr a, slong g, slong prec) - void acb_theta_agm_sqrt(acb_ptr res, acb_srcptr a, acb_srcptr rts, slong nb, slong prec) - void acb_theta_agm_mul(acb_ptr res, acb_srcptr a1, acb_srcptr a2, slong g, slong prec) - void acb_theta_agm_mul_tight(acb_ptr res, acb_srcptr a0, acb_srcptr a, arb_srcptr d0, arb_srcptr d, slong g, slong prec) - int acb_theta_ql_a0_naive(acb_ptr th, acb_srcptr t, acb_srcptr z, arb_srcptr d0, arb_srcptr d, const acb_mat_t tau, slong guard, slong prec) - int acb_theta_ql_a0_split(acb_ptr th, acb_srcptr t, acb_srcptr z, arb_srcptr d, const acb_mat_t tau, slong s, slong guard, slong prec, acb_theta_ql_worker_t worker) - int acb_theta_ql_a0_steps(acb_ptr th, acb_srcptr t, acb_srcptr z, arb_srcptr d0, arb_srcptr d, const acb_mat_t tau, slong nb_steps, slong s, slong guard, slong prec, acb_theta_ql_worker_t worker) - slong acb_theta_ql_a0_nb_steps(const arb_mat_t C, slong s, slong prec) - int acb_theta_ql_a0(acb_ptr th, acb_srcptr t, acb_srcptr z, arb_srcptr d0, arb_srcptr d, const acb_mat_t tau, slong guard, slong prec) - slong acb_theta_ql_reduce(acb_ptr new_z, acb_t c, arb_t u, slong * n1, acb_srcptr z, const acb_mat_t tau, slong prec) - void acb_theta_ql_all(acb_ptr th, acb_srcptr z, const acb_mat_t tau, int sqr, slong prec) - void acb_theta_jet_ql_bounds(arb_t c, arb_t rho, acb_srcptr z, const acb_mat_t tau, slong ord) - void acb_theta_jet_ql_radius(arf_t eps, arf_t err, const arb_t c, const arb_t rho, slong ord, slong g, slong prec) - void acb_theta_jet_ql_finite_diff(acb_ptr dth, const arf_t eps, const arf_t err, acb_srcptr val, slong ord, slong g, slong prec) - void acb_theta_jet_ql_all(acb_ptr dth, acb_srcptr z, const acb_mat_t tau, slong ord, slong prec) - ulong acb_theta_transform_char(slong * e, const fmpz_mat_t mat, ulong ab) - void acb_theta_transform_sqrtdet(acb_t res, const acb_mat_t tau, slong prec) - slong acb_theta_transform_kappa(acb_t sqrtdet, const fmpz_mat_t mat, const acb_mat_t tau, slong prec) - slong acb_theta_transform_kappa2(const fmpz_mat_t mat) - void acb_theta_transform_proj(acb_ptr res, const fmpz_mat_t mat, acb_srcptr th, int sqr, slong prec) - void acb_theta_g2_jet_naive_1(acb_ptr dth, const acb_mat_t tau, slong prec) + void acb_theta_jet_exp_qf(acb_ptr res, acb_srcptr z, const acb_mat_t N, slong ord, slong prec) + void acb_theta_eld_init(acb_theta_eld_t E, slong d, slong g) + void acb_theta_eld_clear(acb_theta_eld_t E) + int acb_theta_eld_set(acb_theta_eld_t E, const arb_mat_t C, const arf_t R2, arb_srcptr v) + slong acb_theta_eld_nb_pts(acb_theta_eld_t E) + void acb_theta_eld_points(slong * pts, const acb_theta_eld_t E) + slong acb_theta_eld_box(const acb_theta_eld_t E, slong j) + slong acb_theta_eld_nb_border(acb_theta_eld_t E) + void acb_theta_eld_border(slong * pts, const acb_theta_eld_t E) + int acb_theta_eld_contains(const acb_theta_eld_t E, slong * pt) + void acb_theta_eld_print(const acb_theta_eld_t E) + void acb_theta_eld_distances(arb_ptr ds, acb_srcptr zs, slong nb, const acb_mat_t tau, slong prec) + void acb_theta_sum_radius(arf_t R2, arf_t eps, const arb_mat_t cho, slong ord, slong prec) + void acb_theta_sum_jet_radius(arf_t R2, arf_t eps, const arb_mat_t cho, arb_srcptr v, slong ord, slong prec) + void acb_theta_sum_term(acb_t res, acb_srcptr z, const acb_mat_t tau, slong * tup, slong * n, slong prec) + slong acb_theta_sum_addprec(const arb_t d) + # void acb_theta_ctx_tau_init(acb_theta_ctx_tau_t ctx, int allow_shift, slong g) + # void acb_theta_ctx_tau_clear(acb_theta_ctx_tau_t ctx) + # void acb_theta_ctx_z_init(acb_theta_ctx_z_t ctx, slong g) + # void acb_theta_ctx_z_clear(acb_theta_ctx_z_t ctx) + # acb_theta_ctx_z_struct * acb_theta_ctx_z_vec_init(slong nb, slong g) + # void acb_theta_ctx_z_vec_clear(acb_theta_ctx_z_struct * vec, slong nb) + void acb_theta_ctx_exp_inv(acb_t exp_inv, const acb_t exp, const acb_t x, int is_real, slong prec) + void acb_theta_ctx_sqr_inv(acb_t sqr_inv, const acb_t inv, const acb_t sqr, int is_real, slong prec) + # void acb_theta_ctx_tau_set(acb_theta_ctx_tau_t ctx, const acb_mat_t tau, slong prec) + # void acb_theta_ctx_tau_dupl(acb_theta_ctx_tau_t ctx, slong prec) + # int acb_theta_ctx_tau_overlaps(const acb_theta_ctx_tau_t ctx1, const acb_theta_ctx_tau_t ctx2) + # void acb_theta_ctx_z_set(acb_theta_ctx_z_t ctx, acb_srcptr z, const acb_theta_ctx_tau_t ctx_tau, slong prec) + # void acb_theta_ctx_z_dupl(acb_theta_ctx_z_t ctx, slong prec) + # void acb_theta_ctx_z_add_real(acb_theta_ctx_z_t res, const acb_theta_ctx_z_t ctx, const acb_theta_ctx_z_t ctx_real, slong prec) + # void acb_theta_ctx_z_common_v(arb_ptr v, const acb_theta_ctx_z_struct * vec, slong nb, slong prec) + # int acb_theta_ctx_z_overlaps(const acb_theta_ctx_z_t ctx1, const acb_theta_ctx_z_t ctx2) + void acb_theta_sum_sqr_pow(acb_ptr * sqr_pow, const acb_mat_t exp_tau, const acb_theta_eld_t E, slong prec) + # void acb_theta_sum_work(acb_ptr th, slong len, acb_srcptr exp_z, acb_srcptr exp_z_inv, const acb_mat_t exp_tau, const acb_mat_t exp_tau_inv, const acb_ptr * sqr_pow, const acb_theta_eld_t E, slong ord, slong prec, acb_theta_sum_worker_t worker) + # void acb_theta_sum(acb_ptr th, const acb_theta_ctx_z_struct * vec, slong nb, const acb_theta_ctx_tau_t ctx_tau, arb_srcptr distances, int all_a, int all_b, int tilde, slong prec) + # void acb_theta_sum_jet(acb_ptr th, const acb_theta_ctx_z_struct * vec, slong nb, const acb_theta_ctx_tau_t ctx_tau, slong ord, int all_a, int all_b, slong prec) + void acb_theta_agm_sqrt(acb_ptr res, acb_srcptr a, acb_srcptr roots, slong nb, slong prec) + void acb_theta_agm_mul(acb_ptr res, acb_srcptr a1, acb_srcptr a2, slong g, int all, slong prec) + void acb_theta_agm_mul_tight(acb_ptr res, acb_srcptr a0, acb_srcptr a, arb_srcptr d0, arb_srcptr d, slong g, int all, slong prec) + int acb_theta_ql_nb_steps(slong * pattern, const acb_mat_t tau, int cst, slong prec) + int acb_theta_ql_lower_dim(acb_ptr * new_zs, acb_ptr * cofactors, slong ** pts, slong * nb, arf_t err, slong * fullprec, acb_srcptr z, const acb_mat_t tau, arb_srcptr distances, slong s, ulong a, slong prec) + void acb_theta_ql_recombine(acb_ptr th, acb_srcptr th0, acb_srcptr cofactors, const slong * pts, slong nb, const arf_t err, slong fullprec, slong s, ulong a, int all, slong g, slong prec) + int acb_theta_ql_setup(acb_ptr rts, acb_ptr rts_all, acb_ptr t, slong * guard, slong * easy_steps, acb_srcptr zs, slong nb, const acb_mat_t tau, arb_srcptr distances, slong nb_steps, int all, slong prec) + void acb_theta_ql_exact(acb_ptr th, acb_srcptr zs, slong nb, const acb_mat_t tau, const slong * pattern, int all, int shifted_prec, slong prec) + void acb_theta_ql_local_bound(arb_t c, arb_t rho, acb_srcptr z, const acb_mat_t tau, slong ord) + void acb_theta_ql_jet_error(arb_ptr err, acb_srcptr z, const acb_mat_t tau, acb_srcptr dth, slong ord, slong prec) + void acb_theta_ql_jet_fd(acb_ptr th, acb_srcptr zs, slong nb, const acb_mat_t tau, slong ord, int all, slong prec) + void acb_theta_ql_jet(acb_ptr th, acb_srcptr zs, slong nb, const acb_mat_t tau, slong ord, int all, slong prec) + void acb_theta_jet_notransform(acb_ptr th, acb_srcptr zs, slong nb, const acb_mat_t tau, slong ord, ulong ab, int all, int sqr, slong prec) + int acb_theta_reduce_tau(acb_ptr new_zs, acb_mat_t new_tau, fmpz_mat_t mat, acb_mat_t N, acb_mat_t ct, acb_ptr exps, acb_srcptr zs, slong nb, const acb_mat_t tau, slong prec) + int acb_theta_reduce_z(acb_ptr new_zs, arb_ptr rs, acb_ptr cs, acb_srcptr zs, slong nb, const acb_mat_t tau, slong prec) void acb_theta_g2_detk_symj(acb_poly_t res, const acb_mat_t m, const acb_poly_t f, slong k, slong j, slong prec) - void acb_theta_g2_transvectant(acb_poly_t res, const acb_poly_t g, const acb_poly_t h, slong m, slong n, slong k, slong prec) - void acb_theta_g2_transvectant_lead(acb_t res, const acb_poly_t g, const acb_poly_t h, slong m, slong n, slong k, slong prec) + void acb_theta_g2_transvectant(acb_poly_t res, const acb_poly_t g, const acb_poly_t h, slong m, slong n, slong k, int lead, slong prec) slong acb_theta_g2_character(const fmpz_mat_t mat) - void acb_theta_g2_psi4(acb_t res, acb_srcptr th2, slong prec) - void acb_theta_g2_psi6(acb_t res, acb_srcptr th2, slong prec) - void acb_theta_g2_chi10(acb_t res, acb_srcptr th2, slong prec) - void acb_theta_g2_chi12(acb_t res, acb_srcptr th2, slong prec) + void acb_theta_g2_even_weight(acb_t psi4, acb_t psi6, acb_t chi10, acb_t chi12, acb_srcptr th2, slong prec) void acb_theta_g2_chi5(acb_t res, acb_srcptr th, slong prec) void acb_theta_g2_chi35(acb_t res, acb_srcptr th, slong prec) void acb_theta_g2_chi3_6(acb_poly_t res, acb_srcptr dth, slong prec) - void acb_theta_g2_sextic(acb_poly_t res, const acb_mat_t tau, slong prec) void acb_theta_g2_sextic_chi5(acb_poly_t res, acb_t chi5, const acb_mat_t tau, slong prec) - void acb_theta_g2_covariants(acb_poly_struct * res, const acb_poly_t f, slong prec) - void acb_theta_g2_covariants_lead(acb_ptr res, const acb_poly_t f, slong prec) + void acb_theta_g2_covariants(acb_poly_struct * res, const acb_poly_t f, int lead, slong prec) diff --git a/src/flint/flintlib/functions/arf.pxd b/src/flint/flintlib/functions/arf.pxd index cb7a40d2..3abbc68f 100644 --- a/src/flint/flintlib/functions/arf.pxd +++ b/src/flint/flintlib/functions/arf.pxd @@ -62,6 +62,7 @@ cdef extern from "flint/arf.h": 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_nint(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) diff --git a/src/flint/flintlib/functions/fmpz.pxd b/src/flint/flintlib/functions/fmpz.pxd index 2b278bb2..07cede32 100644 --- a/src/flint/flintlib/functions/fmpz.pxd +++ b/src/flint/flintlib/functions/fmpz.pxd @@ -163,7 +163,7 @@ cdef extern from "flint/fmpz.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) + int fmpz_divides(fmpz_t q, const fmpz_t f, const fmpz_t g) 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) diff --git a/src/flint/flintlib/functions/fmpz_mod_mat.pxd b/src/flint/flintlib/functions/fmpz_mod_mat.pxd index f3a2b24f..a673a1d4 100644 --- a/src/flint/flintlib/functions/fmpz_mod_mat.pxd +++ b/src/flint/flintlib/functions/fmpz_mod_mat.pxd @@ -43,6 +43,7 @@ cdef extern from "flint/fmpz_mod_mat.h": void _fmpz_mod_mat_mul_classical_threaded_op(fmpz_mod_mat_t D, const fmpz_mod_mat_t C, const fmpz_mod_mat_t A, const fmpz_mod_mat_t B, int op, const fmpz_mod_ctx_t ctx) void fmpz_mod_mat_mul_classical_threaded(fmpz_mod_mat_t C, const fmpz_mod_mat_t A, const fmpz_mod_mat_t B, const fmpz_mod_ctx_t ctx) void fmpz_mod_mat_sqr(fmpz_mod_mat_t B, const fmpz_mod_mat_t A, const fmpz_mod_ctx_t ctx) + void fmpz_mod_mat_pow_ui(fmpz_mod_mat_t B, const fmpz_mod_mat_t A, ulong e, const fmpz_mod_ctx_t ctx) void fmpz_mod_mat_mul_fmpz_vec(fmpz_struct * c, const fmpz_mod_mat_t A, const fmpz_struct * b, slong blen, const fmpz_mod_ctx_t ctx) void fmpz_mod_mat_mul_fmpz_vec_ptr(fmpz_struct * const * c, const fmpz_mod_mat_t A, const fmpz_struct * const * b, slong blen, const fmpz_mod_ctx_t ctx) void fmpz_mod_mat_fmpz_vec_mul(fmpz_struct * c, const fmpz_struct * a, slong alen, const fmpz_mod_mat_t B, const fmpz_mod_ctx_t ctx) diff --git a/src/flint/flintlib/functions/fq_default_mat.pxd b/src/flint/flintlib/functions/fq_default_mat.pxd index 562dd2b3..563ab910 100644 --- a/src/flint/flintlib/functions/fq_default_mat.pxd +++ b/src/flint/flintlib/functions/fq_default_mat.pxd @@ -47,6 +47,7 @@ cdef extern from "flint/fq_default_mat.h": int fq_default_mat_is_one(const fq_default_mat_t mat, const fq_default_ctx_t ctx) int fq_default_mat_is_empty(const fq_default_mat_t mat, const fq_default_ctx_t ctx) int fq_default_mat_is_square(const fq_default_mat_t mat, const fq_default_ctx_t ctx) + void fq_default_mat_transpose(fq_default_mat_t B, const fq_default_mat_t A, const fq_default_ctx_t ctx) void fq_default_mat_add(fq_default_mat_t C, const fq_default_mat_t A, const fq_default_mat_t B, const fq_default_ctx_t ctx) void fq_default_mat_sub(fq_default_mat_t C, const fq_default_mat_t A, const fq_default_mat_t B, const fq_default_ctx_t ctx) void fq_default_mat_neg(fq_default_mat_t A, const fq_default_mat_t B, const fq_default_ctx_t ctx) diff --git a/src/flint/flintlib/functions/fq_mat.pxd b/src/flint/flintlib/functions/fq_mat.pxd index c1cd01c9..85da9617 100644 --- a/src/flint/flintlib/functions/fq_mat.pxd +++ b/src/flint/flintlib/functions/fq_mat.pxd @@ -44,6 +44,7 @@ cdef extern from "flint/fq_mat.h": int fq_mat_is_one(const fq_mat_t mat, const fq_ctx_t ctx) int fq_mat_is_empty(const fq_mat_t mat, const fq_ctx_t ctx) int fq_mat_is_square(const fq_mat_t mat, const fq_ctx_t ctx) + void fq_mat_transpose(fq_mat_t B, const fq_mat_t A, const fq_ctx_t ctx) void fq_mat_add(fq_mat_t C, const fq_mat_t A, const fq_mat_t B, const fq_ctx_t ctx) void fq_mat_sub(fq_mat_t C, const fq_mat_t A, const fq_mat_t B, const fq_ctx_t ctx) void fq_mat_neg(fq_mat_t A, const fq_mat_t B, const fq_ctx_t ctx) @@ -57,19 +58,12 @@ cdef extern from "flint/fq_mat.h": void fq_mat_vec_mul_ptr(fq_struct * const * c, const fq_struct * const * a, slong alen, const fq_mat_t B, const fq_ctx_t ctx) int fq_mat_inv(fq_mat_t B, fq_mat_t A, const fq_ctx_t ctx) slong fq_mat_lu(slong * P, fq_mat_t A, int rank_check, const fq_ctx_t ctx) - slong fq_mat_lu_classical(slong * P, fq_mat_t A, int rank_check, const fq_ctx_t ctx) - slong fq_mat_lu_recursive(slong * P, fq_mat_t A, int rank_check, const fq_ctx_t ctx) slong fq_mat_rref(fq_mat_t B, const fq_mat_t A, const fq_ctx_t ctx) slong fq_mat_reduce_row(fq_mat_t A, slong * P, slong * L, slong n, const fq_ctx_t ctx) void fq_mat_solve_tril(fq_mat_t X, const fq_mat_t L, const fq_mat_t B, int unit, const fq_ctx_t ctx) - void fq_mat_solve_tril_classical(fq_mat_t X, const fq_mat_t L, const fq_mat_t B, int unit, const fq_ctx_t ctx) - void fq_mat_solve_tril_recursive(fq_mat_t X, const fq_mat_t L, const fq_mat_t B, int unit, const fq_ctx_t ctx) void fq_mat_solve_triu(fq_mat_t X, const fq_mat_t U, const fq_mat_t B, int unit, const fq_ctx_t ctx) - void fq_mat_solve_triu_classical(fq_mat_t X, const fq_mat_t U, const fq_mat_t B, int unit, const fq_ctx_t ctx) - void fq_mat_solve_triu_recursive(fq_mat_t X, const fq_mat_t U, const fq_mat_t B, int unit, const fq_ctx_t ctx) int fq_mat_solve(fq_mat_t X, const fq_mat_t A, const fq_mat_t B, const fq_ctx_t ctx) int fq_mat_can_solve(fq_mat_t X, const fq_mat_t A, const fq_mat_t B, const fq_ctx_t ctx) void fq_mat_similarity(fq_mat_t M, slong r, fq_t d, const fq_ctx_t ctx) - void fq_mat_charpoly_danilevsky(fq_poly_t p, const fq_mat_t M, const fq_ctx_t ctx) void fq_mat_charpoly(fq_poly_t p, const fq_mat_t M, const fq_ctx_t ctx) void fq_mat_minpoly(fq_poly_t p, const fq_mat_t M, const fq_ctx_t ctx) diff --git a/src/flint/flintlib/functions/fq_nmod_mat.pxd b/src/flint/flintlib/functions/fq_nmod_mat.pxd index 4e04af58..8f61e459 100644 --- a/src/flint/flintlib/functions/fq_nmod_mat.pxd +++ b/src/flint/flintlib/functions/fq_nmod_mat.pxd @@ -44,6 +44,7 @@ cdef extern from "flint/fq_nmod_mat.h": int fq_nmod_mat_is_one(const fq_nmod_mat_t mat, const fq_nmod_ctx_t ctx) int fq_nmod_mat_is_empty(const fq_nmod_mat_t mat, const fq_nmod_ctx_t ctx) int fq_nmod_mat_is_square(const fq_nmod_mat_t mat, const fq_nmod_ctx_t ctx) + void fq_nmod_mat_transpose(fq_nmod_mat_t B, const fq_nmod_mat_t A, const fq_nmod_ctx_t ctx) void fq_nmod_mat_add(fq_nmod_mat_t C, const fq_nmod_mat_t A, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) void fq_nmod_mat_sub(fq_nmod_mat_t C, const fq_nmod_mat_t A, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) void fq_nmod_mat_neg(fq_nmod_mat_t A, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) @@ -57,19 +58,12 @@ cdef extern from "flint/fq_nmod_mat.h": void fq_nmod_mat_vec_mul_ptr(fq_nmod_struct * const * c, const fq_nmod_struct * const * a, slong alen, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) int fq_nmod_mat_inv(fq_nmod_mat_t B, fq_nmod_mat_t A, const fq_nmod_ctx_t ctx) slong fq_nmod_mat_lu(slong * P, fq_nmod_mat_t A, int rank_check, const fq_nmod_ctx_t ctx) - slong fq_nmod_mat_lu_classical(slong * P, fq_nmod_mat_t A, int rank_check, const fq_nmod_ctx_t ctx) - slong fq_nmod_mat_lu_recursive(slong * P, fq_nmod_mat_t A, int rank_check, const fq_nmod_ctx_t ctx) slong fq_nmod_mat_rref(fq_nmod_mat_t B, const fq_nmod_mat_t A, const fq_nmod_ctx_t ctx) slong fq_nmod_mat_reduce_row(fq_nmod_mat_t A, slong * P, slong * L, slong n, const fq_nmod_ctx_t ctx) void fq_nmod_mat_solve_tril(fq_nmod_mat_t X, const fq_nmod_mat_t L, const fq_nmod_mat_t B, int unit, const fq_nmod_ctx_t ctx) - void fq_nmod_mat_solve_tril_classical(fq_nmod_mat_t X, const fq_nmod_mat_t L, const fq_nmod_mat_t B, int unit, const fq_nmod_ctx_t ctx) - void fq_nmod_mat_solve_tril_recursive(fq_nmod_mat_t X, const fq_nmod_mat_t L, const fq_nmod_mat_t B, int unit, const fq_nmod_ctx_t ctx) void fq_nmod_mat_solve_triu(fq_nmod_mat_t X, const fq_nmod_mat_t U, const fq_nmod_mat_t B, int unit, const fq_nmod_ctx_t ctx) - void fq_nmod_mat_solve_triu_classical(fq_nmod_mat_t X, const fq_nmod_mat_t U, const fq_nmod_mat_t B, int unit, const fq_nmod_ctx_t ctx) - void fq_nmod_mat_solve_triu_recursive(fq_nmod_mat_t X, const fq_nmod_mat_t U, const fq_nmod_mat_t B, int unit, const fq_nmod_ctx_t ctx) int fq_nmod_mat_solve(fq_nmod_mat_t X, const fq_nmod_mat_t A, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) int fq_nmod_mat_can_solve(fq_nmod_mat_t X, const fq_nmod_mat_t A, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) void fq_nmod_mat_similarity(fq_nmod_mat_t M, slong r, fq_nmod_t d, const fq_nmod_ctx_t ctx) - void fq_nmod_mat_charpoly_danilevsky(fq_nmod_poly_t p, const fq_nmod_mat_t M, const fq_nmod_ctx_t ctx) void fq_nmod_mat_charpoly(fq_nmod_poly_t p, const fq_nmod_mat_t M, const fq_nmod_ctx_t ctx) void fq_nmod_mat_minpoly(fq_nmod_poly_t p, const fq_nmod_mat_t M, const fq_nmod_ctx_t ctx) diff --git a/src/flint/flintlib/functions/fq_zech_mat.pxd b/src/flint/flintlib/functions/fq_zech_mat.pxd index cfba589e..b72e6058 100644 --- a/src/flint/flintlib/functions/fq_zech_mat.pxd +++ b/src/flint/flintlib/functions/fq_zech_mat.pxd @@ -40,6 +40,7 @@ cdef extern from "flint/fq_zech_mat.h": int fq_zech_mat_is_one(const fq_zech_mat_t mat, const fq_zech_ctx_t ctx) int fq_zech_mat_is_empty(const fq_zech_mat_t mat, const fq_zech_ctx_t ctx) int fq_zech_mat_is_square(const fq_zech_mat_t mat, const fq_zech_ctx_t ctx) + void fq_zech_mat_transpose(fq_zech_mat_t B, const fq_zech_mat_t A, const fq_zech_ctx_t ctx) void fq_zech_mat_add(fq_zech_mat_t C, const fq_zech_mat_t A, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) void fq_zech_mat_sub(fq_zech_mat_t C, const fq_zech_mat_t A, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) void fq_zech_mat_neg(fq_zech_mat_t A, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) @@ -52,19 +53,11 @@ cdef extern from "flint/fq_zech_mat.h": void fq_zech_mat_vec_mul(fq_zech_struct * c, const fq_zech_struct * a, slong alen, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) void fq_zech_mat_vec_mul_ptr(fq_zech_struct * const * c, const fq_zech_struct * const * a, slong alen, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) slong fq_zech_mat_lu(slong * P, fq_zech_mat_t A, int rank_check, const fq_zech_ctx_t ctx) - slong fq_zech_mat_lu_classical(slong * P, fq_zech_mat_t A, int rank_check, const fq_zech_ctx_t ctx) - slong fq_zech_mat_lu_recursive(slong * P, fq_zech_mat_t A, int rank_check, const fq_zech_ctx_t ctx) slong fq_zech_mat_rref(fq_zech_mat_t B, const fq_zech_mat_t A, const fq_zech_ctx_t ctx) - slong fq_zech_mat_reduce_row(fq_zech_mat_t A, slong * P, slong * L, slong n, const fq_zech_ctx_t ctx) void fq_zech_mat_solve_tril(fq_zech_mat_t X, const fq_zech_mat_t L, const fq_zech_mat_t B, int unit, const fq_zech_ctx_t ctx) - void fq_zech_mat_solve_tril_classical(fq_zech_mat_t X, const fq_zech_mat_t L, const fq_zech_mat_t B, int unit, const fq_zech_ctx_t ctx) - void fq_zech_mat_solve_tril_recursive(fq_zech_mat_t X, const fq_zech_mat_t L, const fq_zech_mat_t B, int unit, const fq_zech_ctx_t ctx) void fq_zech_mat_solve_triu(fq_zech_mat_t X, const fq_zech_mat_t U, const fq_zech_mat_t B, int unit, const fq_zech_ctx_t ctx) - void fq_zech_mat_solve_triu_classical(fq_zech_mat_t X, const fq_zech_mat_t U, const fq_zech_mat_t B, int unit, const fq_zech_ctx_t ctx) - void fq_zech_mat_solve_triu_recursive(fq_zech_mat_t X, const fq_zech_mat_t U, const fq_zech_mat_t B, int unit, const fq_zech_ctx_t ctx) int fq_zech_mat_solve(fq_zech_mat_t X, const fq_zech_mat_t A, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) int fq_zech_mat_can_solve(fq_zech_mat_t X, const fq_zech_mat_t A, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) void fq_zech_mat_similarity(fq_zech_mat_t M, slong r, fq_zech_t d, const fq_zech_ctx_t ctx) - void fq_zech_mat_charpoly_danilevsky(fq_zech_poly_t p, const fq_zech_mat_t M, const fq_zech_ctx_t ctx) void fq_zech_mat_charpoly(fq_zech_poly_t p, const fq_zech_mat_t M, const fq_zech_ctx_t ctx) void fq_zech_mat_minpoly(fq_zech_poly_t p, const fq_zech_mat_t M, const fq_zech_ctx_t ctx) diff --git a/src/flint/flintlib/functions/gr.pxd b/src/flint/flintlib/functions/gr.pxd index fc7feefc..ef7475ec 100644 --- a/src/flint/flintlib/functions/gr.pxd +++ b/src/flint/flintlib/functions/gr.pxd @@ -15,8 +15,14 @@ from flint.flintlib.types.gr cimport gr_ctx_t, gr_ptr, gr_srcptr, gr_stream_t, g # .. macro:: GR_TMP_CLEAR(x1, ctx) cdef extern from "flint/gr.h": + truth_t truth_and(truth_t x, truth_t y) + truth_t truth_or(truth_t x, truth_t y) + truth_t truth_not(truth_t x) + void truth_println(truth_t x) + truth_t gr_in_domain(int status) + int gr_check(truth_t t) slong gr_ctx_sizeof_elem(gr_ctx_t ctx) - int gr_ctx_clear(gr_ctx_t ctx) + void gr_ctx_clear(gr_ctx_t ctx) int gr_ctx_write(gr_stream_t out, gr_ctx_t ctx) int gr_ctx_print(gr_ctx_t ctx) int gr_ctx_println(gr_ctx_t ctx) @@ -32,6 +38,7 @@ cdef extern from "flint/gr.h": gr_ptr gr_heap_init_vec(slong len, gr_ctx_t ctx) void gr_heap_clear_vec(gr_ptr x, slong len, gr_ctx_t ctx) int gr_randtest(gr_ptr res, flint_rand_t state, gr_ctx_t ctx) + int gr_randtest_invertible(gr_ptr res, flint_rand_t state, gr_ctx_t ctx) int gr_randtest_not_zero(gr_ptr res, flint_rand_t state, gr_ctx_t ctx) int gr_randtest_small(gr_ptr res, flint_rand_t state, gr_ctx_t ctx) int gr_write(gr_stream_t out, gr_srcptr x, gr_ctx_t ctx) @@ -141,6 +148,7 @@ cdef extern from "flint/gr.h": int gr_rsqrt(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) int gr_gcd(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) int gr_lcm(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) + int gr_canonical_associate(gr_ptr res, gr_ptr u, gr_srcptr x, gr_ctx_t ctx) int gr_factor(gr_ptr c, gr_vec_t factors, gr_vec_t exponents, gr_srcptr x, int flags, gr_ctx_t ctx) int gr_numerator(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) int gr_denominator(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) diff --git a/src/flint/flintlib/functions/gr_domains.pxd b/src/flint/flintlib/functions/gr_domains.pxd index 3988ec74..1fe7fad4 100644 --- a/src/flint/flintlib/functions/gr_domains.pxd +++ b/src/flint/flintlib/functions/gr_domains.pxd @@ -69,5 +69,6 @@ cdef extern from "flint/gr.h": void gr_ctx_init_gr_mpoly(gr_ctx_t ctx, gr_ctx_t base_ring, slong nvars, const ordering_t ord) void gr_ctx_init_series_mod_gr_poly(gr_ctx_t ctx, gr_ctx_t base_ring, slong n) void gr_ctx_init_gr_series(gr_ctx_t ctx, gr_ctx_t base_ring, slong prec) + void gr_ctx_init_gr_fraction(gr_ctx_t ctx, gr_ctx_t domain, int flags) void gr_ctx_init_fmpz_mpoly_q(gr_ctx_t ctx, slong nvars, const ordering_t ord) void gr_ctx_init_fexpr(gr_ctx_t ctx) diff --git a/src/flint/flintlib/functions/gr_generic.pxd b/src/flint/flintlib/functions/gr_generic.pxd index 9f3bfa58..f6dd87f3 100644 --- a/src/flint/flintlib/functions/gr_generic.pxd +++ b/src/flint/flintlib/functions/gr_generic.pxd @@ -1,7 +1,7 @@ from flint.flintlib.types.flint cimport flint_rand_t, fmpz_struct, fmpz_t, slong, ulong from flint.flintlib.types.fmpq cimport fmpq_t from flint.flintlib.types.fmpz cimport fmpz_mpoly_ctx_t, fmpz_mpoly_t, fmpz_poly_t -from flint.flintlib.types.gr cimport gr_ctx_t, gr_ptr, gr_srcptr, gr_stream_t, truth_t +from flint.flintlib.types.gr cimport gr_ctx_t, gr_ptr, gr_srcptr, gr_stream_t, gr_vec_t, truth_t # .. macro :: GR_PARSE_BALANCE_ADDITIONS @@ -24,7 +24,7 @@ cdef extern from "flint/gr_generic.h": void gr_generic_add(void) void gr_generic_sub(void) void gr_generic_mul(void) - int gr_generic_ctx_clear(gr_ctx_t ctx) + void gr_generic_ctx_clear(gr_ctx_t ctx) void gr_generic_set_shallow(gr_ptr res, gr_srcptr x, const gr_ctx_t ctx) int gr_generic_write_n(gr_stream_t out, gr_srcptr x, slong n, gr_ctx_t ctx) int gr_generic_randtest_not_zero(gr_ptr x, flint_rand_t state, gr_ctx_t ctx) @@ -212,3 +212,4 @@ cdef extern from "flint/gr_generic.h": int gr_generic_scalar_other_div_vec(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) int gr_generic_scalar_other_divexact_vec(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) int gr_generic_scalar_other_pow_vec(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) + int gr_generic_poly_factor_roots( gr_ptr c, gr_vec_t fac, gr_vec_t mult, gr_srcptr elt, int flags, gr_ctx_t ctx) diff --git a/src/flint/flintlib/functions/gr_mat.pxd b/src/flint/flintlib/functions/gr_mat.pxd index 260550c9..e17716c2 100644 --- a/src/flint/flintlib/functions/gr_mat.pxd +++ b/src/flint/flintlib/functions/gr_mat.pxd @@ -11,6 +11,8 @@ from flint.flintlib.types.gr cimport gr_ctx_t, gr_mat_t, gr_poly_t, gr_ptr, gr_s # unknown type gr_method_mat_unary_op_get_scalar # unknown type gr_method_unary_op # unknown type gr_method_unary_predicate +# unknown type gr_method_vec_op +# unknown type gr_method_vec_scalar_op # .. macro:: GR_MAT_ENTRY(mat, i, j, sz) # .. macro:: gr_mat_nrows(mat, ctx) @@ -45,7 +47,7 @@ cdef extern from "flint/gr_mat.h": int gr_mat_set_fmpq(gr_mat_t res, const fmpq_t c, gr_ctx_t ctx) int gr_mat_concat_horizontal(gr_mat_t res, const gr_mat_t mat1, const gr_mat_t mat2, gr_ctx_t ctx) int gr_mat_concat_vertical(gr_mat_t res, const gr_mat_t mat1, const gr_mat_t mat2, gr_ctx_t ctx) - int gr_mat_transpose(gr_mat_t B, const gr_mat_t A, gr_ctx_t ctx) + int gr_mat_transpose(gr_mat_t res, const gr_mat_t mat, gr_ctx_t ctx) int gr_mat_swap_rows(gr_mat_t mat, slong * perm, slong r, slong s, gr_ctx_t ctx) int gr_mat_swap_cols(gr_mat_t mat, slong * perm, slong r, slong s, gr_ctx_t ctx) int gr_mat_invert_rows(gr_mat_t mat, slong * perm, gr_ctx_t ctx) @@ -65,12 +67,6 @@ cdef extern from "flint/gr_mat.h": int gr_mat_neg(gr_mat_t res, const gr_mat_t mat, gr_ctx_t ctx) int gr_mat_add(gr_mat_t res, const gr_mat_t mat1, const gr_mat_t mat2, gr_ctx_t ctx) int gr_mat_sub(gr_mat_t res, const gr_mat_t mat1, const gr_mat_t mat2, gr_ctx_t ctx) - int gr_mat_mul_classical(gr_mat_t res, const gr_mat_t mat1, const gr_mat_t mat2, gr_ctx_t ctx) - int gr_mat_mul_strassen(gr_mat_t C, const gr_mat_t A, const gr_mat_t B, gr_ctx_t ctx) - int gr_mat_mul_waksman(gr_mat_t C, const gr_mat_t A, const gr_mat_t B, gr_ctx_t ctx) - int gr_mat_mul_generic(gr_mat_t C, const gr_mat_t A, const gr_mat_t B, gr_ctx_t ctx) - int gr_mat_mul(gr_mat_t res, const gr_mat_t mat1, const gr_mat_t mat2, gr_ctx_t ctx) - int gr_mat_sqr(gr_mat_t res, const gr_mat_t mat, gr_ctx_t ctx) int gr_mat_add_scalar(gr_mat_t res, const gr_mat_t mat, gr_srcptr x, gr_ctx_t ctx) int gr_mat_scalar_add(gr_mat_t res, gr_srcptr x, const gr_mat_t mat, gr_ctx_t ctx) int gr_mat_add_ui(gr_mat_t res, const gr_mat_t mat, ulong x, gr_ctx_t ctx) @@ -103,6 +99,16 @@ cdef extern from "flint/gr_mat.h": int gr_mat_div_fmpq(gr_mat_t res, const gr_mat_t mat, const fmpq_t x, gr_ctx_t ctx) int gr_mat_addmul_scalar(gr_mat_t res, const gr_mat_t mat, gr_srcptr c, gr_ctx_t ctx) int gr_mat_submul_scalar(gr_mat_t res, const gr_mat_t mat, gr_srcptr c, gr_ctx_t ctx) + int gr_mat_mul(gr_mat_t res, const gr_mat_t mat1, const gr_mat_t mat2, gr_ctx_t ctx) + int gr_mat_mul_generic(gr_mat_t C, const gr_mat_t A, const gr_mat_t B, gr_ctx_t ctx) + int gr_mat_mul_classical(gr_mat_t res, const gr_mat_t mat1, const gr_mat_t mat2, gr_ctx_t ctx) + int gr_mat_mul_strassen(gr_mat_t C, const gr_mat_t A, const gr_mat_t B, gr_ctx_t ctx) + int gr_mat_mul_waksman(gr_mat_t C, const gr_mat_t A, const gr_mat_t B, gr_ctx_t ctx) + int gr_mat_mul_rosowski(gr_mat_t C, const gr_mat_t A, const gr_mat_t B, gr_ctx_t ctx) + int gr_mat_sqr(gr_mat_t res, const gr_mat_t mat, gr_ctx_t ctx) + int gr_mat_pow_ui(gr_mat_t res, const gr_mat_t mat, ulong e, gr_ctx_t ctx) + int gr_mat_pow_si(gr_mat_t res, const gr_mat_t mat, slong e, gr_ctx_t ctx) + int gr_mat_pow_fmpz(gr_mat_t res, const gr_mat_t mat, const fmpz_t e, gr_ctx_t ctx) int _gr_mat_gr_poly_evaluate(gr_mat_t res, gr_srcptr poly, slong len, const gr_mat_t mat, gr_ctx_t ctx) int gr_mat_gr_poly_evaluate(gr_mat_t res, const gr_poly_t poly, const gr_mat_t mat, gr_ctx_t ctx) truth_t gr_mat_is_upper_triangular(const gr_mat_t mat, gr_ctx_t ctx) @@ -152,12 +158,16 @@ cdef extern from "flint/gr_mat.h": int gr_mat_rref_den_fflu(slong * rank, gr_mat_t R, gr_ptr den, const gr_mat_t A, gr_ctx_t ctx) int gr_mat_rref_den(slong * rank, gr_mat_t R, gr_ptr den, const gr_mat_t A, gr_ctx_t ctx) int gr_mat_nullspace(gr_mat_t X, const gr_mat_t A, gr_ctx_t ctx) + int gr_mat_nullspace_from_rref(gr_mat_t X, const gr_mat_t A, gr_srcptr Aden, slong rank, gr_ctx_t ctx) + int gr_mat_nullspace_no_resize(slong * nullity, gr_mat_t X, const gr_mat_t A, gr_ctx_t ctx) int gr_mat_inv(gr_mat_t res, const gr_mat_t mat, gr_ctx_t ctx) int gr_mat_adjugate_charpoly(gr_mat_t adj, gr_ptr det, const gr_mat_t mat, gr_ctx_t ctx) int gr_mat_adjugate_cofactor(gr_mat_t adj, gr_ptr det, const gr_mat_t mat, gr_ctx_t ctx) int gr_mat_adjugate(gr_mat_t adj, gr_ptr det, const gr_mat_t mat, gr_ctx_t ctx) int _gr_mat_charpoly(gr_ptr res, const gr_mat_t mat, gr_ctx_t ctx) int gr_mat_charpoly(gr_poly_t res, const gr_mat_t mat, gr_ctx_t ctx) + int _gr_mat_charpoly_generic(gr_ptr res, const gr_mat_t mat, gr_ctx_t ctx) + int gr_mat_charpoly_generic(gr_poly_t res, const gr_mat_t mat, gr_ctx_t ctx) int _gr_mat_charpoly_berkowitz(gr_ptr res, const gr_mat_t mat, gr_ctx_t ctx) int gr_mat_charpoly_berkowitz(gr_poly_t res, const gr_mat_t mat, gr_ctx_t ctx) int _gr_mat_charpoly_danilevsky_inplace(gr_ptr res, gr_mat_t mat, gr_ctx_t ctx) @@ -174,6 +184,10 @@ cdef extern from "flint/gr_mat.h": int _gr_mat_charpoly_from_hessenberg(gr_ptr res, const gr_mat_t mat, gr_ctx_t ctx) int gr_mat_charpoly_from_hessenberg(gr_poly_t res, const gr_mat_t mat, gr_ctx_t ctx) int gr_mat_minpoly_field(gr_poly_t res, const gr_mat_t mat, gr_ctx_t ctx) + int _gr_mat_companion(gr_mat_t res, gr_srcptr poly, gr_ctx_t ctx) + int gr_mat_companion(gr_mat_t res, const gr_poly_t poly, gr_ctx_t ctx) + int _gr_mat_companion_fraction(gr_mat_t res_num, gr_ptr res_den, gr_srcptr poly, gr_ctx_t ctx) + int gr_mat_companion_fraction(gr_mat_t res_num, gr_ptr res_den, const gr_poly_t poly, gr_ctx_t ctx) int gr_mat_apply_row_similarity(gr_mat_t M, slong r, gr_ptr d, gr_ctx_t ctx) int gr_mat_eigenvalues(gr_vec_t lambda_, gr_vec_t mult, const gr_mat_t mat, int flags, gr_ctx_t ctx) int gr_mat_eigenvalues_other(gr_vec_t lambda_, gr_vec_t mult, const gr_mat_t mat, gr_ctx_t mat_ctx, int flags, gr_ctx_t ctx) @@ -184,10 +198,18 @@ cdef extern from "flint/gr_mat.h": int gr_mat_jordan_blocks(gr_vec_t lambda_, slong * num_blocks, slong * block_lambda, slong * block_size, const gr_mat_t A, gr_ctx_t ctx) int gr_mat_jordan_transformation(gr_mat_t mat, const gr_vec_t lambda_, slong num_blocks, slong * block_lambda, slong * block_size, const gr_mat_t A, gr_ctx_t ctx) int gr_mat_jordan_form(gr_mat_t J, gr_mat_t P, const gr_mat_t A, gr_ctx_t ctx) + # int gr_mat_func_jordan(gr_mat_t res, const gr_mat_t A, gr_method_vec_op jet_func, gr_ctx_t ctx) + # int gr_mat_func_param_jordan(gr_mat_t res, const gr_mat_t A, gr_method_vec_scalar_op jet_func, gr_srcptr c, gr_ctx_t ctx) int gr_mat_exp_jordan(gr_mat_t res, const gr_mat_t A, gr_ctx_t ctx) int gr_mat_exp(gr_mat_t res, const gr_mat_t A, gr_ctx_t ctx) int gr_mat_log_jordan(gr_mat_t res, const gr_mat_t A, gr_ctx_t ctx) int gr_mat_log(gr_mat_t res, const gr_mat_t A, gr_ctx_t ctx) + int gr_mat_pow_scalar_jordan(gr_mat_t res, const gr_mat_t A, gr_srcptr c, gr_ctx_t ctx) + int gr_mat_pow_scalar(gr_mat_t res, const gr_mat_t A, gr_srcptr c, gr_ctx_t ctx) + int gr_mat_pow_fmpq_jordan(gr_mat_t res, const gr_mat_t mat, const fmpq_t exp, gr_ctx_t ctx) + int gr_mat_pow_fmpq(gr_mat_t res, const gr_mat_t mat, const fmpq_t exp, gr_ctx_t ctx) + int gr_mat_sqrt(gr_mat_t res, const gr_mat_t A, gr_ctx_t ctx) + int gr_mat_rsqrt(gr_mat_t res, const gr_mat_t A, gr_ctx_t ctx) truth_t gr_mat_is_hessenberg(const gr_mat_t mat, gr_ctx_t ctx) int gr_mat_hessenberg_gauss(gr_mat_t res, const gr_mat_t mat, gr_ctx_t ctx) int gr_mat_hessenberg_householder(gr_mat_t res, const gr_mat_t mat, gr_ctx_t ctx) @@ -196,15 +218,18 @@ cdef extern from "flint/gr_mat.h": int gr_mat_randops(gr_mat_t mat, flint_rand_t state, slong count, gr_ctx_t ctx) int gr_mat_randpermdiag(int * parity, gr_mat_t mat, flint_rand_t state, gr_ptr diag, slong n, gr_ctx_t ctx) int gr_mat_randrank(gr_mat_t mat, flint_rand_t state, slong rank, gr_ctx_t ctx) + int gr_mat_randsimilar(gr_mat_t mat, flint_rand_t state, slong opcount, gr_ctx_t ctx) int gr_mat_ones(gr_mat_t res, gr_ctx_t ctx) int gr_mat_pascal(gr_mat_t res, int triangular, gr_ctx_t ctx) int gr_mat_stirling(gr_mat_t res, int kind, gr_ctx_t ctx) int gr_mat_hilbert(gr_mat_t res, gr_ctx_t ctx) int gr_mat_hadamard(gr_mat_t res, gr_ctx_t ctx) + int gr_mat_reduce_row_generic(slong * column, gr_mat_t A, slong * P, slong * L, slong m, gr_ctx_t ctx) int gr_mat_reduce_row(slong * column, gr_mat_t A, slong * P, slong * L, slong m, gr_ctx_t ctx) # void gr_mat_test_mul(gr_method_mat_binary_op mul_impl, flint_rand_t state, slong iters, slong maxn, gr_ctx_t ctx) # void gr_mat_test_lu(gr_method_mat_lu_op lu_impl, flint_rand_t state, slong iters, slong maxn, gr_ctx_t ctx) # void gr_mat_test_det(gr_method_mat_unary_op_get_scalar det_impl, flint_rand_t state, slong iters, slong maxn, gr_ctx_t ctx) + # void gr_mat_test_charpoly(gr_method_mat_unary_op_get_scalar charpoly_impl, flint_rand_t state, slong iters, slong maxn, gr_ctx_t ctx) # void gr_mat_test_nonsingular_solve_tril(gr_method_mat_binary_op_with_flag solve_impl, flint_rand_t state, slong iters, slong maxn, gr_ctx_t ctx) # void gr_mat_test_nonsingular_solve_triu(gr_method_mat_binary_op_with_flag solve_impl, flint_rand_t state, slong iters, slong maxn, gr_ctx_t ctx) # void gr_mat_test_approx_mul_max_norm(gr_method_mat_binary_op mul_impl, gr_srcptr rel_tol, flint_rand_t state, slong iters, slong maxn, gr_ctx_t ctx) diff --git a/src/flint/flintlib/functions/gr_mpoly.pxd b/src/flint/flintlib/functions/gr_mpoly.pxd index c62cbda6..d9988ae6 100644 --- a/src/flint/flintlib/functions/gr_mpoly.pxd +++ b/src/flint/flintlib/functions/gr_mpoly.pxd @@ -69,6 +69,8 @@ cdef extern from "flint/gr_mpoly.h": # int gr_mpoly_mul_ui(gr_mpoly_t A, const gr_mpoly_t B, ulong c, gr_mpoly_ctx_t ctx) # int gr_mpoly_mul_fmpz(gr_mpoly_t A, const gr_mpoly_t B, const fmpz_t c, gr_mpoly_ctx_t ctx) # int gr_mpoly_mul_fmpq(gr_mpoly_t A, const gr_mpoly_t B, const fmpq_t c, gr_mpoly_ctx_t ctx) + # int gr_mpoly_inv(gr_mpoly_t res, const gr_mpoly_t src, gr_mpoly_ctx_t ctx) + # int gr_mpoly_canonical_associate(gr_mpoly_t res, gr_mpoly_t u, const gr_mpoly_t src, gr_mpoly_ctx_t ctx) # void _gr_mpoly_fit_length(gr_ptr * coeffs, slong * coeffs_alloc, ulong ** exps, slong * exps_alloc, slong N, slong length, gr_mpoly_ctx_t ctx) # void gr_mpoly_fit_length(gr_mpoly_t A, slong len, gr_mpoly_ctx_t ctx) # void gr_mpoly_fit_bits(gr_mpoly_t A, flint_bitcnt_t bits, gr_mpoly_ctx_t ctx) diff --git a/src/flint/flintlib/functions/gr_poly.pxd b/src/flint/flintlib/functions/gr_poly.pxd index 8588c88b..bb2ae93b 100644 --- a/src/flint/flintlib/functions/gr_poly.pxd +++ b/src/flint/flintlib/functions/gr_poly.pxd @@ -1,7 +1,7 @@ from flint.flintlib.types.flint cimport flint_rand_t, fmpz_struct, fmpz_t, slong, ulong from flint.flintlib.types.fmpq cimport fmpq_poly_t, fmpq_struct, fmpq_t from flint.flintlib.types.fmpz cimport fmpz_poly_t -from flint.flintlib.types.gr cimport gr_ctx_t, gr_poly_t, gr_ptr, gr_srcptr, gr_stream_t, gr_vec_t, truth_t +from flint.flintlib.types.gr cimport gr_ctx_t, gr_mat_t, gr_poly_t, gr_ptr, gr_srcptr, gr_stream_t, gr_vec_t, truth_t # unknown type gr_method_poly_binary_binary_op # unknown type gr_method_poly_binary_op @@ -15,6 +15,8 @@ cdef extern from "flint/gr_poly.h": void gr_poly_init(gr_poly_t poly, gr_ctx_t ctx) void gr_poly_init2(gr_poly_t poly, slong len, gr_ctx_t ctx) void gr_poly_clear(gr_poly_t poly, gr_ctx_t ctx) + gr_ptr gr_poly_coeff_ptr(gr_poly_t poly, slong i, gr_ctx_t ctx) + gr_srcptr gr_poly_coeff_srcptr(const gr_poly_t poly, slong i, gr_ctx_t ctx) gr_ptr gr_poly_entry_ptr(gr_poly_t poly, slong i, gr_ctx_t ctx) gr_srcptr gr_poly_entry_srcptr(const gr_poly_t poly, slong i, gr_ctx_t ctx) slong gr_poly_length(const gr_poly_t poly, gr_ctx_t ctx) @@ -34,7 +36,12 @@ cdef extern from "flint/gr_poly.h": int gr_poly_neg_one(gr_poly_t poly, gr_ctx_t ctx) int gr_poly_gen(gr_poly_t poly, gr_ctx_t ctx) int gr_poly_write(gr_stream_t out, const gr_poly_t poly, const char * x, gr_ctx_t ctx) + int _gr_poly_write(gr_stream_t out, gr_srcptr poly, slong n, const char * x, gr_ctx_t ctx) + int _gr_poly_get_str(char ** res, const gr_poly_t f, const char * x, gr_ctx_t ctx) + int gr_poly_get_str(char ** res, const gr_poly_t f, const char * x, gr_ctx_t ctx) int gr_poly_print(const gr_poly_t poly, gr_ctx_t ctx) + int _gr_poly_set_str(gr_ptr res, const char * s, const char * x, slong len, gr_ctx_t ctx) + int gr_poly_set_str(gr_poly_t res, const char * s, const char * x, gr_ctx_t ctx) int gr_poly_randtest(gr_poly_t poly, flint_rand_t state, slong len, gr_ctx_t ctx) truth_t _gr_poly_equal(gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx) truth_t gr_poly_equal(const gr_poly_t poly1, const gr_poly_t poly2, gr_ctx_t ctx) @@ -63,15 +70,28 @@ cdef extern from "flint/gr_poly.h": int _gr_poly_mullow_generic(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, slong len, gr_ctx_t ctx) int _gr_poly_mullow(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, slong len, gr_ctx_t ctx) int gr_poly_mullow(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, slong len, gr_ctx_t ctx) + int _gr_poly_mul_karatsuba(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx) + int gr_poly_mul_karatsuba(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, gr_ctx_t ctx) + int _gr_poly_mul_toom33(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx); + int gr_poly_mul_toom33(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, gr_ctx_t ctx); + int gr_poly_add_scalar(gr_poly_t res, const gr_poly_t poly, gr_srcptr c, gr_ctx_t ctx) + int gr_poly_add_ui(gr_poly_t res, const gr_poly_t poly, ulong c, gr_ctx_t ctx) + int gr_poly_add_si(gr_poly_t res, const gr_poly_t poly, slong c, gr_ctx_t ctx) + int gr_poly_add_fmpz(gr_poly_t res, const gr_poly_t poly, const fmpz_struct c, gr_ctx_t ctx) + int gr_poly_add_fmpq(gr_poly_t res, const gr_poly_t poly, const fmpq_struct c, gr_ctx_t ctx) + int gr_poly_sub_scalar(gr_poly_t res, const gr_poly_t poly, gr_srcptr c, gr_ctx_t ctx) + int gr_poly_sub_ui(gr_poly_t res, const gr_poly_t poly, ulong c, gr_ctx_t ctx) + int gr_poly_sub_si(gr_poly_t res, const gr_poly_t poly, slong c, gr_ctx_t ctx) + int gr_poly_sub_fmpz(gr_poly_t res, const gr_poly_t poly, const fmpz_struct c, gr_ctx_t ctx) + int gr_poly_sub_fmpq(gr_poly_t res, const gr_poly_t poly, const fmpq_struct c, gr_ctx_t ctx) int gr_poly_mul_scalar(gr_poly_t res, const gr_poly_t poly, gr_srcptr c, gr_ctx_t ctx) + int gr_poly_scalar_mul(gr_poly_t res, gr_srcptr c, const gr_poly_t poly, gr_ctx_t ctx) int gr_poly_mul_ui(gr_poly_t res, const gr_poly_t poly, ulong c, gr_ctx_t ctx) int gr_poly_mul_si(gr_poly_t res, const gr_poly_t poly, slong c, gr_ctx_t ctx) int gr_poly_mul_fmpz(gr_poly_t res, const gr_poly_t poly, const fmpz_struct c, gr_ctx_t ctx) int gr_poly_mul_fmpq(gr_poly_t res, const gr_poly_t poly, const fmpq_struct c, gr_ctx_t ctx) - int _gr_poly_mul_karatsuba(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx) - int gr_poly_mul_karatsuba(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, gr_ctx_t ctx) - int _gr_poly_mul_toom33(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx); - int gr_poly_mul_toom33(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, gr_ctx_t ctx); + int gr_poly_addmul_scalar(gr_poly_t res, const gr_poly_t poly, gr_srcptr c, gr_ctx_t ctx) + int gr_poly_submul_scalar(gr_poly_t res, const gr_poly_t poly, gr_srcptr c, gr_ctx_t ctx) int _gr_poly_pow_series_ui_binexp(gr_ptr res, gr_srcptr f, slong flen, ulong exp, slong len, gr_ctx_t ctx) int gr_poly_pow_series_ui_binexp(gr_poly_t res, const gr_poly_t poly, ulong exp, slong len, gr_ctx_t ctx) int _gr_poly_pow_series_ui(gr_ptr res, gr_srcptr f, slong flen, ulong exp, slong len, gr_ctx_t ctx) @@ -114,6 +134,10 @@ cdef extern from "flint/gr_poly.h": int gr_poly_div(gr_poly_t Q, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) int _gr_poly_rem(gr_ptr R, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) int gr_poly_rem(gr_poly_t R, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) + int _gr_poly_div_newton_n_preinv(gr_ptr Q, gr_srcptr A, slong lenA, gr_srcptr FLINT_UNUSED(B), slong lenB, gr_srcptr Binv, slong lenBinv, gr_ctx_t ctx) + int gr_poly_div_newton_n_preinv(gr_poly_t Q, const gr_poly_t A, const gr_poly_t B, const gr_poly_t Binv, gr_ctx_t ctx) + int _gr_poly_divrem_newton_n_preinv(gr_ptr Q, gr_ptr R, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_srcptr Binv, slong lenBinv, gr_ctx_t ctx) + int gr_poly_divrem_newton_n_preinv(gr_poly_t Q, gr_poly_t R, const gr_poly_t A, const gr_poly_t B, const gr_poly_t Binv, gr_ctx_t ctx) int _gr_poly_inv_series_newton(gr_ptr res, gr_srcptr A, slong Alen, slong len, slong cutoff, gr_ctx_t ctx) int gr_poly_inv_series_newton(gr_poly_t res, const gr_poly_t A, slong len, slong cutoff, gr_ctx_t ctx) int _gr_poly_inv_series_basecase_preinv1(gr_ptr res, gr_srcptr A, slong Alen, gr_srcptr Ainv, slong len, gr_ctx_t ctx) @@ -221,11 +245,14 @@ cdef extern from "flint/gr_poly.h": int gr_poly_make_monic(gr_poly_t res, const gr_poly_t src, gr_ctx_t ctx) truth_t _gr_poly_is_monic(gr_srcptr poly, slong len, gr_ctx_t ctx) truth_t gr_poly_is_monic(const gr_poly_t res, gr_ctx_t ctx) + int gr_poly_canonical_associate(gr_poly_t res, gr_poly_t u, const gr_poly_t src, gr_ctx_t ctx) int _gr_poly_hgcd(gr_ptr r, slong * sgn, gr_ptr * M, slong * lenM, gr_ptr A, slong * lenA, gr_ptr B, slong * lenB, gr_srcptr a, slong lena, gr_srcptr b, slong lenb, slong cutoff, gr_ctx_t ctx) int _gr_poly_gcd_hgcd(gr_ptr G, slong * _lenG, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, slong inner_cutoff, slong cutoff, gr_ctx_t ctx) int gr_poly_gcd_hgcd(gr_poly_t G, const gr_poly_t A, const gr_poly_t B, slong inner_cutoff, slong cutoff, gr_ctx_t ctx) int _gr_poly_gcd_euclidean(gr_ptr G, slong * lenG, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) int gr_poly_gcd_euclidean(gr_poly_t G, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) + int _gr_poly_gcd_subresultant(gr_ptr G, slong * lenG, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) + int gr_poly_gcd_subresultant(gr_poly_t G, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) int _gr_poly_gcd_generic(gr_ptr G, slong * lenG, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) int _gr_poly_gcd(gr_ptr G, slong * lenG, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) int gr_poly_gcd(gr_poly_t G, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) @@ -248,6 +275,16 @@ cdef extern from "flint/gr_poly.h": int gr_poly_resultant(gr_ptr res, const gr_poly_t f, const gr_poly_t g, gr_ctx_t ctx) int gr_poly_factor_squarefree(gr_ptr c, gr_vec_t fac, gr_vec_t exp, const gr_poly_t poly, gr_ctx_t ctx) int gr_poly_squarefree_part(gr_poly_t res, const gr_poly_t poly, gr_ctx_t ctx) + truth_t gr_poly_shift_equivalent(fmpz_t shift, const gr_poly_t p, const gr_poly_t q, gr_ctx_t ctx) + int gr_poly_leading_taylor_shift(gr_ptr shift, const gr_poly_t p, const gr_poly_t q, gr_ctx_t ctx) + int gr_poly_dispersion_resultant(fmpz_t disp, gr_vec_t disp_set, const gr_poly_t f, const gr_poly_t g, gr_ctx_t ctx); + int gr_poly_dispersion_factor(fmpz_t disp, gr_vec_t disp_set, const gr_poly_t f, const gr_poly_t g, gr_ctx_t ctx); + int gr_poly_dispersion(fmpz_t disp, gr_vec_t disp_set, const gr_poly_t f, const gr_poly_t g, gr_ctx_t ctx); + int gr_poly_dispersion_from_factors(fmpz_t disp, gr_vec_t disp_set, const gr_vec_t ffac, const gr_vec_t gfac, gr_ctx_t ctx); + int gr_poly_shiftless_decomposition_factor(gr_ptr c, gr_vec_t slfac, gr_vec_t slshifts, gr_vec_t slmult, const gr_poly_t f, gr_ctx_t ctx) + int gr_poly_shiftless_decomposition(gr_ptr c, gr_vec_t slfac, gr_vec_t slshifts, gr_vec_t slmult, const gr_poly_t f, gr_ctx_t ctx) + int _gr_poly_shiftless_decomposition_from_factors(gr_vec_t slfac, gr_vec_t slshifts, gr_vec_t slmult, const gr_vec_t fac, const gr_vec_t mult, gr_ctx_t ctx) + int gr_poly_shiftless_decomposition_from_factors(gr_vec_t slfac, gr_vec_t slshifts, gr_vec_t slmult, const gr_vec_t fac, const gr_vec_t mult, gr_ctx_t ctx) int gr_poly_roots(gr_vec_t roots, gr_vec_t mult, const gr_poly_t poly, int flags, gr_ctx_t ctx) int gr_poly_roots_other(gr_vec_t roots, gr_vec_t mult, const gr_poly_t poly, gr_ctx_t poly_ctx, int flags, gr_ctx_t ctx) int _gr_poly_refine_roots_aberth(gr_ptr w, gr_srcptr f, gr_srcptr f_prime, slong deg, gr_srcptr z, int progressive, gr_ctx_t ctx) @@ -287,6 +324,39 @@ cdef extern from "flint/gr_poly.h": int gr_poly_tan_series_newton(gr_poly_t f, const gr_poly_t h, slong n, slong cutoff, gr_ctx_t ctx) int _gr_poly_tan_series(gr_ptr f, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) int gr_poly_tan_series(gr_poly_t f, const gr_poly_t h, slong n, gr_ctx_t ctx) + int _gr_poly_mulmod(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_srcptr f, slong lenf, gr_ctx_t ctx) + int gr_poly_mulmod(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, const gr_poly_t f, gr_ctx_t ctx) + int _gr_poly_mulmod_preinv(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_srcptr f, slong lenf, gr_srcptr finv, slong lenfinv, gr_ctx_t ctx) + int gr_poly_mulmod_preinv(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, const gr_poly_t f, const gr_poly_t finv, gr_ctx_t ctx) + int _gr_poly_powmod_fmpz_binexp(gr_ptr res, gr_srcptr poly, const fmpz_t e, gr_srcptr f, slong lenf, gr_ctx_t ctx) + int gr_poly_powmod_fmpz_binexp(gr_poly_t res, const gr_poly_t poly, const fmpz_t e, const gr_poly_t f, gr_ctx_t ctx) + int _gr_poly_powmod_fmpz_binexp_preinv(gr_ptr res, gr_srcptr poly, const fmpz_t e, gr_srcptr f, slong lenf, gr_srcptr finv, slong lenfinv, gr_ctx_t ctx) + int gr_poly_powmod_fmpz_binexp_preinv(gr_poly_t res, const gr_poly_t poly, const fmpz_t e, const gr_poly_t f, const gr_poly_t finv, gr_ctx_t ctx) + int _gr_poly_powmod_x_fmpz_preinv(gr_ptr res, const fmpz_t e, gr_srcptr f, slong lenf, gr_srcptr finv, slong lenfinv, gr_ctx_t ctx) + int gr_poly_powmod_x_fmpz_preinv(gr_poly_t res, const fmpz_t e, const gr_poly_t f, const gr_poly_t finv, gr_ctx_t ctx) + int _gr_poly_powmod_ui_binexp(gr_ptr res, gr_srcptr poly, ulong e, gr_srcptr f, slong lenf, gr_ctx_t ctx) + int gr_poly_powmod_ui_binexp(gr_poly_t res, const gr_poly_t poly, ulong e, const gr_poly_t f, gr_ctx_t ctx) + int _gr_poly_powmod_ui_binexp_preinv(gr_ptr res, gr_srcptr poly, ulong e, gr_srcptr f, slong lenf, gr_srcptr finv, slong lenfinv, gr_ctx_t ctx) + int gr_poly_powmod_ui_binexp_preinv(gr_poly_t res, const gr_poly_t poly, ulong e, const gr_poly_t f, const gr_poly_t finv, gr_ctx_t ctx) + int _gr_poly_powmod_fmpz_sliding_preinv(gr_ptr res, gr_srcptr poly, const fmpz_t e, ulong k, gr_srcptr f, slong lenf, gr_srcptr finv, slong lenfinv, gr_ctx_t ctx) + int gr_poly_powmod_fmpz_sliding_preinv(gr_poly_t res, const gr_poly_t poly, const fmpz_t e, ulong k, const gr_poly_t f, const gr_poly_t finv, gr_ctx_t ctx) + int _gr_poly_compose_mod_horner(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, gr_srcptr poly3, slong len3, gr_ctx_t ctx) + int gr_poly_compose_mod_horner(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, const gr_poly_t poly3, gr_ctx_t ctx) + int _gr_poly_compose_mod_brent_kung(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, gr_srcptr poly3, slong len3, gr_ctx_t ctx) + int gr_poly_compose_mod_brent_kung(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, const gr_poly_t poly3, gr_ctx_t ctx) + int _gr_poly_compose_mod(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, gr_srcptr poly3, slong len3, gr_ctx_t ctx) + int gr_poly_compose_mod(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, const gr_poly_t poly3, gr_ctx_t ctx) + int _gr_poly_compose_mod_horner_preinv(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, gr_srcptr poly3, slong len3, gr_srcptr poly3inv, slong inv3len, gr_ctx_t ctx) + int gr_poly_compose_mod_horner_preinv(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, const gr_poly_t poly3, const gr_poly_t poly3inv, gr_ctx_t ctx) + int _gr_poly_compose_mod_brent_kung_preinv(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, gr_srcptr poly3, slong len3, gr_srcptr poly3inv, slong inv3len, gr_ctx_t ctx) + int gr_poly_compose_mod_brent_kung_preinv(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, const gr_poly_t poly3, const gr_poly_t poly3inv, gr_ctx_t ctx) + int _gr_poly_compose_mod_preinv(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, gr_srcptr poly3, slong len3, gr_srcptr poly3inv, slong inv3len, gr_ctx_t ctx) + int gr_poly_compose_mod_preinv(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, const gr_poly_t poly3, const gr_poly_t poly3inv, gr_ctx_t ctx) + int _gr_poly_reduce_matrix_mod_poly(gr_mat_t A, const gr_mat_t B, const gr_poly_t f, gr_ctx_t ctx) + int _gr_poly_precompute_matrix(gr_mat_t A, gr_srcptr f, gr_srcptr g, slong leng, gr_srcptr ginv, slong lenginv, gr_ctx_t ctx) + int gr_poly_precompute_matrix(gr_mat_t A, const gr_poly_t f, const gr_poly_t g, const gr_poly_t ginv, gr_ctx_t ctx) + int _gr_poly_compose_mod_brent_kung_precomp_preinv(gr_ptr res, gr_srcptr f, slong lenf, const gr_mat_t A, gr_srcptr h, slong lenh, gr_srcptr hinv, slong lenhinv, gr_ctx_t ctx) + int gr_poly_compose_mod_brent_kung_precomp_preinv(gr_poly_t res, const gr_poly_t f, const gr_mat_t A, const gr_poly_t h, const gr_poly_t hinv, gr_ctx_t ctx) # void _gr_poly_test_mullow(gr_method_poly_binary_trunc_op mullow_impl, gr_method_poly_binary_trunc_op mullow_ref, flint_rand_t state, slong iters, slong maxn, gr_ctx_t ctx) # void _gr_poly_test_divrem(gr_method_poly_binary_binary_op divrem_impl, flint_rand_t state, slong iters, slong maxn, gr_ctx_t ctx) # void _gr_poly_test_div(gr_method_poly_binary_op div_impl, flint_rand_t state, slong iters, slong maxn, gr_ctx_t ctx) diff --git a/src/flint/flintlib/functions/gr_vec.pxd b/src/flint/flintlib/functions/gr_vec.pxd index 3f876dfa..4132bcf8 100644 --- a/src/flint/flintlib/functions/gr_vec.pxd +++ b/src/flint/flintlib/functions/gr_vec.pxd @@ -10,6 +10,7 @@ cdef extern from "flint/gr_vec.h": void gr_vec_init(gr_vec_t vec, slong len, gr_ctx_t ctx) void gr_vec_clear(gr_vec_t vec, gr_ctx_t ctx) gr_ptr gr_vec_entry_ptr(gr_vec_t vec, slong i, gr_ctx_t ctx) + gr_srcptr gr_vec_entry_srcptr(gr_vec_t vec, slong i, gr_ctx_t ctx) slong gr_vec_length(const gr_vec_t vec, gr_ctx_t ctx) void gr_vec_fit_length(gr_vec_t vec, slong len, gr_ctx_t ctx) void gr_vec_set_length(gr_vec_t vec, slong len, gr_ctx_t ctx) @@ -107,6 +108,13 @@ cdef extern from "flint/gr_vec.h": int _gr_vec_dot_ui(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, const ulong * vec2, slong len, gr_ctx_t ctx) int _gr_vec_dot_fmpz(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, const fmpz_struct * vec2, slong len, gr_ctx_t ctx) int _gr_vec_dot_rev(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, gr_srcptr vec2, slong len, gr_ctx_t ctx) + truth_t _gr_vec_contains(gr_srcptr vec, slong len, gr_srcptr x, gr_ctx_t ctx) + truth_t gr_vec_contains(const gr_vec_t vec, gr_srcptr x, gr_ctx_t ctx); + int _gr_vec_sort(gr_ptr vec, slong len, gr_ctx_t ctx) + int gr_vec_sort(gr_vec_t dest, const gr_vec_t src, gr_ctx_t ctx) + void _gr_vec_permute(gr_ptr vec, slong * perm, slong len, gr_ctx_t ctx) + int gr_vec_permute(gr_vec_t dest, gr_vec_t src, slong * perm, gr_ctx_t ctx) + void _gr_vec_shuffle(gr_ptr vec, flint_rand_t state, slong len, gr_ctx_t ctx) int _gr_vec_step(gr_ptr vec, gr_srcptr start, gr_srcptr step, slong len, gr_ctx_t ctx) int _gr_vec_reciprocals(gr_ptr res, slong len, gr_ctx_t ctx) int _gr_vec_set_powers(gr_ptr res, gr_srcptr x, slong len, gr_ctx_t ctx)