diff --git a/.github/workflows/buildwheel.yml b/.github/workflows/buildwheel.yml index 5d2ff042..0134b6ae 100644 --- a/.github/workflows/buildwheel.yml +++ b/.github/workflows/buildwheel.yml @@ -302,6 +302,7 @@ jobs: 'v3.2.2', 'v3.3.1', 'v3.4.0', + 'v3.5.0', ] steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 diff --git a/README.md b/README.md index 9d9d4be1..db71dfae 100644 --- a/README.md +++ b/README.md @@ -144,7 +144,7 @@ Compatible versions: | python-flint | Release date | CPython | FLINT | Cython | |--------------|---------------|-------------|------------|------------------| -| `0.9.0` | ??? | `3.11-3.14` | `3.0-3.5` | `3.1-3.2?` | +| `0.9.0` | ??? | `3.11-3.14` | `3.0-3.6` | `3.1-3.2?` | | `0.8.0` | 29th Aug 2025 | `3.11-3.14` | `3.0-3.3` | `3.1` only | | `0.7.0` | 16th Mar 2025 | `3.11-3.13` | `3.0-3.2` | `3.0.11-3.1.0a1` | | `0.6.0` | 1st Feb 2024 | `3.9-3.12` | `3.0` only | `3.0` only | @@ -197,10 +197,41 @@ Changes (0.9.0): work. (OB) - [gh-324](https://github.com/flintlib/python-flint/pull/324), Faster conversion from `int` to `fmpz` and back. (RO). +- [gh-326](https://github.com/flintlib/python-flint/pull/326), + Add support for building with the Python stable ABI. (OB) +- [gh-341](https://github.com/flintlib/python-flint/pull/341), + Disable hashing for inexact `arb` values. (DSM) +- [gh-347](https://github.com/flintlib/python-flint/pull/347), + Fix storing the variable name for `fq_default`. (OB) +- [gh-350](https://github.com/flintlib/python-flint/pull/350), + Add support for Cython 3.2. (OB) +- [gh-352](https://github.com/flintlib/python-flint/pull/352), + Fix a crash in `fmpz_mat.lll()` for empty matrices. (OB) - [gh-359](https://github.com/flintlib/python-flint/pull/359), Sort factorisations of all mpoly types. (OB) -- [gh-374](https://github.com/flintlib/python-flint/pull/374), Fixed a bug in `nmod.__hash__`. (FH) -- [gh-392](https://github.com/flintlib/python-flint/pull/392), Add interface to `acb_theta_jet` (JH, SS) +- [gh-367](https://github.com/flintlib/python-flint/pull/367), + Add type stubs and tests for many more classes. (OB) +- [gh-370](https://github.com/flintlib/python-flint/pull/370), + Fix `unused_gens()` for the zero polynomial. (OB) +- [gh-374](https://github.com/flintlib/python-flint/pull/374), + Fixed a bug in `nmod.__hash__`. (FH) +- [gh-378](https://github.com/flintlib/python-flint/pull/378), + Build Windows extension modules with MSVC. (OB) +- [gh-379](https://github.com/flintlib/python-flint/pull/379), + Add Windows ARM64 wheels. (OB) +- [gh-380](https://github.com/flintlib/python-flint/pull/380), + Support building against FLINT 3.4.0. (OB) +- [gh-393](https://github.com/flintlib/python-flint/pull/393), + Use `fmpz_mod_mat_det()` when building against FLINT 3.1 or newer. (OB) +- [gh-401](https://github.com/flintlib/python-flint/pull/401), + Upload Pyodide wheels to PyPI. (OB) +- [gh-389](https://github.com/flintlib/python-flint/pull/389), + [gh-402](https://github.com/flintlib/python-flint/pull/402), + Support building against FLINT 3.5.0. (OB) +- [gh-392](https://github.com/flintlib/python-flint/pull/392), + Add interface to `acb_theta_jet` (JH, SS) +- [gh-409](https://github.com/flintlib/python-flint/pull/409), + Support building against FLINT 3.6.0. (OB) 0.8.0 ----- diff --git a/bin/build_variables.sh b/bin/build_variables.sh index bb21c9fc..7616aa53 100644 --- a/bin/build_variables.sh +++ b/bin/build_variables.sh @@ -19,4 +19,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.5.0 +FLINTVER=3.6.0 diff --git a/bin/patch-flint-windows-arm64-link-3.6.0.diff b/bin/patch-flint-windows-arm64-link-3.6.0.diff new file mode 100644 index 00000000..950757a0 --- /dev/null +++ b/bin/patch-flint-windows-arm64-link-3.6.0.diff @@ -0,0 +1,32 @@ +diff --git a/Makefile.in b/Makefile.in +index 8185fa609..a3822f53b 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -424,22 +424,16 @@ endif + + ifneq ($(SHARED), 0) + shared: $(FLINT_DIR)/$(FLINT_LIB_FULL) +-# The following is to avoid reaching the maximum length of command line +-# arguments, mainly present on MinGW. +-define xxx_merged_lobj_rule +-$(BUILD_DIR)/$(1)_merged.lo: $($(1)_LOBJS) | $(BUILD_DIR) +- @$(LD) -r $($(1)_LOBJS) -o $(BUILD_DIR)/$(1)_merged.lo +-endef +-$(foreach dir, $(DIRS), $(eval $(call xxx_merged_lobj_rule,$(dir)))) +-MERGED_LOBJS:=$(foreach dir, $(DIRS),$(BUILD_DIR)/$(dir)_merged.lo) + ifeq ($(WANT_LTO),1) + SHARED_LIB_DEPS:=$(LOBJS) + else +-SHARED_LIB_DEPS:=$(MERGED_LOBJS) ++SHARED_LINK_RSP := $(BUILD_DIR)/libflint-shared.rsp ++SHARED_LIB_DEPS:=$(LOBJS) + endif +-$(FLINT_DIR)/$(FLINT_LIB_FULL): $(SHARED_LIB_DEPS) ++$(FLINT_DIR)/$(FLINT_LIB_FULL): $(SHARED_LIB_DEPS) | $(BUILD_DIR) + @echo "Building $(FLINT_LIB_FULL)" +- $(CMD) $(CC) $(CFLAGS) -shared $(EXTRA_SHARED_FLAGS) $(SHARED_LIB_DEPS) -o $(FLINT_LIB_FULL) $(LDFLAGS) $(LIBS) ++ @: $(file >$(SHARED_LINK_RSP))$(foreach obj,$(LOBJS),$(file >>$(SHARED_LINK_RSP),$(obj))) ++ $(CMD) $(CC) $(CFLAGS) -shared $(EXTRA_SHARED_FLAGS) @$(SHARED_LINK_RSP) -o $(FLINT_LIB_FULL) $(LDFLAGS) $(LIBS) + @$(RM_F) $(FLINT_LIB) + @$(RM_F) $(FLINT_LIB_MAJOR) + @$(LN_S) $(FLINT_LIB_FULL) $(FLINT_LIB) diff --git a/doc/source/build.rst b/doc/source/build.rst index c2a8ca6b..356bb925 100644 --- a/doc/source/build.rst +++ b/doc/source/build.rst @@ -87,7 +87,7 @@ Compatible versions: * - 0.9.0 - Not yet - 3.11-3.14 - - 3.0-3.5 + - 3.0-3.6 - 3.1-3.2? * - 0.8.0 - 29th Aug 2025 diff --git a/meson.build b/meson.build index a9ab5bc1..3392cdf7 100644 --- a/meson.build +++ b/meson.build @@ -16,7 +16,7 @@ project( # then we can consider not using a speculative upper version cap here. # flint_lower = '>=3.0' -flint_upper = '<3.6' +flint_upper = '<3.7' cython_lower = '>=3.0.11' cython_upper = '<3.3' diff --git a/src/flint/flintlib/functions/acb.pxd b/src/flint/flintlib/functions/acb.pxd index e33491a4..e74a0441 100644 --- a/src/flint/flintlib/functions/acb.pxd +++ b/src/flint/flintlib/functions/acb.pxd @@ -106,6 +106,7 @@ cdef extern from "flint/acb.h": 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_arf(acb_t z, const acb_t x, const arf_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) @@ -242,14 +243,16 @@ cdef extern from "flint/acb.h": 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_arb(acb_ptr res, acb_srcptr vec, slong len, const arb_t c, slong prec) + void _acb_vec_scalar_mul_arf(acb_ptr res, acb_srcptr vec, slong len, const arf_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_si(acb_ptr res, acb_srcptr vec, slong len, slong 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_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) void _acb_vec_sqr(acb_ptr res, acb_srcptr vec, slong len, slong prec) slong _acb_vec_bits(acb_srcptr vec, slong len) diff --git a/src/flint/flintlib/functions/acb_dft.pxd b/src/flint/flintlib/functions/acb_dft.pxd index 51d8a32a..223564c1 100644 --- a/src/flint/flintlib/functions/acb_dft.pxd +++ b/src/flint/flintlib/functions/acb_dft.pxd @@ -17,10 +17,10 @@ cdef extern from "flint/acb_dft.h": # void acb_dft_precomp_clear(acb_dft_pre_t pre) # void acb_dft_precomp(acb_ptr w, acb_srcptr v, const acb_dft_pre_t pre, slong prec) # void acb_dft_inverse_precomp(acb_ptr w, acb_srcptr v, const acb_dft_pre_t pre, slong prec) - void acb_dirichlet_dft_prod(acb_ptr w, acb_srcptr v, slong * cyc, slong num, slong prec) + void acb_dft_prod(acb_ptr w, acb_srcptr v, slong * cyc, slong num, slong prec) # void acb_dft_prod_init(acb_dft_prod_t t, slong * cyc, slong num, slong prec) # void acb_dft_prod_clear(acb_dft_prod_t t) - # void acb_dirichlet_dft_prod_precomp(acb_ptr w, acb_srcptr v, const acb_dft_prod_t prod, slong prec) + # void acb_dft_prod_precomp(acb_ptr w, acb_srcptr v, const acb_dft_prod_t prod, slong prec) void acb_dft_convol_naive(acb_ptr w, acb_srcptr f, acb_srcptr g, slong len, slong prec) void acb_dft_convol_rad2(acb_ptr w, acb_srcptr f, acb_srcptr g, slong len, slong prec) void acb_dft_convol(acb_ptr w, acb_srcptr f, acb_srcptr g, slong len, slong prec) @@ -37,7 +37,7 @@ cdef extern from "flint/acb_dft.h": # void acb_dft_cyc_clear(acb_dft_cyc_t t) # void acb_dft_cyc_precomp(acb_ptr w, acb_srcptr v, const acb_dft_cyc_t t, slong prec) void acb_dft_rad2(acb_ptr w, acb_srcptr v, int e, slong prec) - void acb_dft_inverse_rad2(acb_ptr w, acb_srcptr v, int e, slong prec) + # void acb_dft_inverse_rad2_precomp_inplace(acb_ptr v, const acb_dft_rad2_t t, slong prec) # void acb_dft_rad2_init(acb_dft_rad2_t t, int e, slong prec) # void acb_dft_rad2_clear(acb_dft_rad2_t t) # void acb_dft_rad2_precomp(acb_ptr w, acb_srcptr v, const acb_dft_rad2_t t, slong prec) diff --git a/src/flint/flintlib/functions/acb_dirichlet.pxd b/src/flint/flintlib/functions/acb_dirichlet.pxd index 9cf7e840..970a99a7 100644 --- a/src/flint/flintlib/functions/acb_dirichlet.pxd +++ b/src/flint/flintlib/functions/acb_dirichlet.pxd @@ -95,6 +95,7 @@ cdef extern from "flint/acb_dirichlet.h": 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_secondary_zeta(acb_t res, const acb_t s, slong prec) 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) diff --git a/src/flint/flintlib/functions/acb_hypgeom.pxd b/src/flint/flintlib/functions/acb_hypgeom.pxd index 9fa16412..95cb23fd 100644 --- a/src/flint/flintlib/functions/acb_hypgeom.pxd +++ b/src/flint/flintlib/functions/acb_hypgeom.pxd @@ -72,6 +72,8 @@ cdef extern from "flint/acb_hypgeom.h": 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_j_series(acb_ptr res, const acb_t nu, acb_srcptr z, slong zlen, slong len, slong prec) + void acb_hypgeom_bessel_j_series(acb_poly_t res, const acb_t nu, const acb_poly_t z, slong len, 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) diff --git a/src/flint/flintlib/functions/acb_poly.pxd b/src/flint/flintlib/functions/acb_poly.pxd index 95d80d88..f79e7cf9 100644 --- a/src/flint/flintlib/functions/acb_poly.pxd +++ b/src/flint/flintlib/functions/acb_poly.pxd @@ -67,6 +67,7 @@ cdef extern from "flint/acb_poly.h": 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_mul_si(acb_poly_t C, const acb_poly_t A, slong 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) @@ -167,6 +168,16 @@ cdef extern from "flint/acb_poly.h": 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_asin_series(acb_ptr res, acb_srcptr f, slong flen, slong n, slong prec) + void acb_poly_asin_series(acb_poly_t res, const acb_poly_t f, slong n, slong prec) + void _acb_poly_acos_series(acb_ptr res, acb_srcptr f, slong flen, slong n, slong prec) + void acb_poly_acos_series(acb_poly_t res, const acb_poly_t f, slong n, slong prec) + void _acb_poly_atanh_series(acb_ptr res, acb_srcptr f, slong flen, slong n, slong prec) + void acb_poly_atanh_series(acb_poly_t res, const acb_poly_t f, slong n, slong prec) + void _acb_poly_asinh_series(acb_ptr res, acb_srcptr f, slong flen, slong n, slong prec) + void acb_poly_asinh_series(acb_poly_t res, const acb_poly_t f, slong n, slong prec) + void _acb_poly_acosh_series(acb_ptr res, acb_srcptr f, slong flen, slong n, slong prec) + void acb_poly_acosh_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) @@ -181,12 +192,16 @@ cdef extern from "flint/acb_poly.h": 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_cot_series(acb_ptr g, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_cot_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_tan_pi_series(acb_ptr g, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_tan_pi_series(acb_poly_t g, 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) @@ -199,6 +214,10 @@ cdef extern from "flint/acb_poly.h": 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_tanh_series(acb_ptr g, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_tanh_series(acb_poly_t g, const acb_poly_t h, slong n, slong prec) + void _acb_poly_coth_series(acb_ptr g, acb_srcptr h, slong hlen, slong n, slong prec) + void acb_poly_coth_series(acb_poly_t g, 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_sinc_pi_series(acb_ptr s, acb_srcptr h, slong hlen, slong n, slong prec) diff --git a/src/flint/flintlib/functions/arb.pxd b/src/flint/flintlib/functions/arb.pxd index c2003820..f9f4df0c 100644 --- a/src/flint/flintlib/functions/arb.pxd +++ b/src/flint/flintlib/functions/arb.pxd @@ -91,6 +91,7 @@ cdef extern from "flint/arb.h": slong arb_bits(const arb_t x) void arb_trim(arb_t y, const arb_t x) int arb_get_unique_fmpz(fmpz_t z, const arb_t x) + int arb_get_simplest_fmpq(fmpq_t res, const arb_t x) void arb_floor(arb_t y, const arb_t x, slong prec) void arb_ceil(arb_t y, const arb_t x, slong prec) void arb_trunc(arb_t y, const arb_t x, slong prec) @@ -364,9 +365,12 @@ cdef extern from "flint/arb.h": void _arb_vec_sub(arb_ptr C, arb_srcptr A, arb_srcptr B, slong n, slong prec) void _arb_vec_add(arb_ptr C, arb_srcptr A, arb_srcptr B, slong n, slong prec) void _arb_vec_scalar_mul(arb_ptr res, arb_srcptr vec, slong len, const arb_t c, slong prec) - void _arb_vec_scalar_div(arb_ptr res, arb_srcptr vec, slong len, const arb_t c, slong prec) + void _arb_vec_scalar_mul_arf(arb_ptr res, arb_srcptr vec, slong len, const arf_t c, slong prec) + void _arb_vec_scalar_mul_ui(arb_ptr res, arb_srcptr vec, slong len, ulong c, slong prec) + void _arb_vec_scalar_mul_si(arb_ptr res, arb_srcptr vec, slong len, slong c, slong prec) void _arb_vec_scalar_mul_fmpz(arb_ptr res, arb_srcptr vec, slong len, const fmpz_t c, slong prec) void _arb_vec_scalar_mul_2exp_si(arb_ptr res, arb_srcptr src, slong len, slong c) + void _arb_vec_scalar_div(arb_ptr res, arb_srcptr vec, slong len, const arb_t c, slong prec) void _arb_vec_scalar_addmul(arb_ptr res, arb_srcptr vec, slong len, const arb_t c, slong prec) void _arb_vec_get_mag(mag_t bound, arb_srcptr vec, slong len) slong _arb_vec_bits(arb_srcptr x, slong len) diff --git a/src/flint/flintlib/functions/arb_fmpz_poly.pxd b/src/flint/flintlib/functions/arb_fmpz_poly.pxd index e35204bb..5438db25 100644 --- a/src/flint/flintlib/functions/arb_fmpz_poly.pxd +++ b/src/flint/flintlib/functions/arb_fmpz_poly.pxd @@ -1,5 +1,5 @@ from flint.flintlib.types.acb cimport acb_ptr, acb_t -from flint.flintlib.types.arb cimport arb_t +from flint.flintlib.types.arb cimport arb_ptr, arb_t from flint.flintlib.types.flint cimport fmpz_struct, slong, ulong from flint.flintlib.types.fmpz cimport fmpz_poly_t @@ -20,5 +20,7 @@ cdef extern from "flint/arb_fmpz_poly.h": 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_refine_root_arb(arb_t res, const fmpz_poly_t poly, const arb_t initial, slong prec) + slong arb_fmpz_poly_real_roots(arb_ptr roots, const fmpz_poly_t poly, int flags, slong prec) void arb_fmpz_poly_complex_roots(acb_ptr roots, const fmpz_poly_t poly, int flags, slong prec) void arb_fmpz_poly_gauss_period_minpoly(fmpz_poly_t res, ulong q, ulong n) diff --git a/src/flint/flintlib/functions/arb_hypgeom.pxd b/src/flint/flintlib/functions/arb_hypgeom.pxd index a00c931e..f99add89 100644 --- a/src/flint/flintlib/functions/arb_hypgeom.pxd +++ b/src/flint/flintlib/functions/arb_hypgeom.pxd @@ -95,6 +95,8 @@ cdef extern from "flint/arb_hypgeom.h": 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_j_series(arb_ptr res, const arb_t nu, arb_srcptr z, slong zlen, slong len, slong prec) + void arb_hypgeom_bessel_j_series(arb_poly_t res, const arb_t nu, const arb_poly_t z, slong len, 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) diff --git a/src/flint/flintlib/functions/arb_poly.pxd b/src/flint/flintlib/functions/arb_poly.pxd index eb7b390c..c96596ac 100644 --- a/src/flint/flintlib/functions/arb_poly.pxd +++ b/src/flint/flintlib/functions/arb_poly.pxd @@ -61,6 +61,7 @@ cdef extern from "flint/arb_poly.h": 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_mul_si(arb_poly_t C, const arb_poly_t A, slong 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) @@ -177,6 +178,12 @@ cdef extern from "flint/arb_poly.h": 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_atanh_series(arb_ptr res, arb_srcptr f, slong flen, slong n, slong prec) + void arb_poly_atanh_series(arb_poly_t res, const arb_poly_t f, slong n, slong prec) + void _arb_poly_asinh_series(arb_ptr res, arb_srcptr f, slong flen, slong n, slong prec) + void arb_poly_asinh_series(arb_poly_t res, const arb_poly_t f, slong n, slong prec) + void _arb_poly_acosh_series(arb_ptr res, arb_srcptr f, slong flen, slong n, slong prec) + void arb_poly_acosh_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) @@ -189,12 +196,16 @@ cdef extern from "flint/arb_poly.h": 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_cot_series(arb_ptr g, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_cot_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_tan_pi_series(arb_ptr g, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_tan_pi_series(arb_poly_t g, 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) @@ -207,6 +218,10 @@ cdef extern from "flint/arb_poly.h": 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_tanh_series(arb_ptr g, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_tanh_series(arb_poly_t g, const arb_poly_t h, slong n, slong prec) + void _arb_poly_coth_series(arb_ptr g, arb_srcptr h, slong hlen, slong n, slong prec) + void arb_poly_coth_series(arb_poly_t g, 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) diff --git a/src/flint/flintlib/functions/compat.pxd b/src/flint/flintlib/functions/compat.pxd index a060cbb6..a1e3abda 100644 --- a/src/flint/flintlib/functions/compat.pxd +++ b/src/flint/flintlib/functions/compat.pxd @@ -1,6 +1,6 @@ from flint.flintlib.types.flint cimport slong from flint.flintlib.types.fmpz_mod cimport fmpz_mod_mpoly_ctx_t, fmpz_mod_mpoly_t -from flint.flintlib.types.gr cimport gr_ctx_t +from flint.flintlib.types.gr cimport gr_ctx_t, gr_ptr, gr_srcptr, gr_vec_t cdef extern from *: @@ -30,8 +30,19 @@ cdef extern from *: #define compat_fmpz_mod_mpoly_compose_fmpz_mod_mpoly_gen(...) fmpz_mod_mpoly_compose_fmpz_mod_mpoly_gen(__VA_ARGS__) + #endif + + #if __FLINT_RELEASE >= 30600 /* Flint 3.6.0 or later */ + + #define compat_gr_factor(c, factors, exponents, x, flags, ctx) gr_factor(c, factors, (fmpz_vec_struct *) exponents, x, flags, ctx) + + #else + + #define compat_gr_factor(c, factors, exponents, x, flags, ctx) gr_factor(c, factors, exponents, x, flags, ctx) + #endif """ void compat_gr_ctx_init_gr_series(gr_ctx_t ctx, gr_ctx_t base_ring, slong prec) void compat_gr_ctx_init_series_mod_gr_poly(gr_ctx_t ctx, gr_ctx_t base_ring, slong n) void compat_fmpz_mod_mpoly_compose_fmpz_mod_mpoly_gen(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const slong * c, const fmpz_mod_mpoly_ctx_t ctxB, const fmpz_mod_mpoly_ctx_t ctxAC) + int compat_gr_factor(gr_ptr c, gr_vec_t factors, gr_vec_t exponents, gr_srcptr x, int flags, gr_ctx_t ctx) diff --git a/src/flint/flintlib/functions/fmpq_mat.pxd b/src/flint/flintlib/functions/fmpq_mat.pxd index 5f999a56..54be1ce2 100644 --- a/src/flint/flintlib/functions/fmpq_mat.pxd +++ b/src/flint/flintlib/functions/fmpq_mat.pxd @@ -1,4 +1,4 @@ -from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, slong +from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, slong, ulong from flint.flintlib.types.fmpq cimport fmpq_mat_t, fmpq_poly_t, fmpq_struct, fmpq_t from flint.flintlib.types.fmpz cimport fmpz_mat_t @@ -28,7 +28,11 @@ cdef extern from "flint/fmpq_mat.h": 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_mul_si(fmpq_mat_t rop, const fmpq_mat_t op, slong x) + void fmpq_mat_scalar_mul_ui(fmpq_mat_t rop, const fmpq_mat_t op, ulong x) void fmpq_mat_scalar_div_fmpz(fmpq_mat_t rop, const fmpq_mat_t op, const fmpz_t x) + void fmpq_mat_scalar_div_si(fmpq_mat_t rop, const fmpq_mat_t op, const fmpz_t x) + void fmpq_mat_scalar_div_ui(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) diff --git a/src/flint/flintlib/functions/fmpq_poly.pxd b/src/flint/flintlib/functions/fmpq_poly.pxd index a84321af..05f8f49c 100644 --- a/src/flint/flintlib/functions/fmpq_poly.pxd +++ b/src/flint/flintlib/functions/fmpq_poly.pxd @@ -146,6 +146,7 @@ cdef extern from "flint/fmpq_poly.h": 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_integral_offset(fmpz_struct * rpoly, fmpz_t rden, const fmpz_struct * poly, const fmpz_t den, slong len, slong m) 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) @@ -185,6 +186,8 @@ cdef extern from "flint/fmpq_poly.h": void fmpq_poly_sinh_cosh_series(fmpq_poly_t res1, fmpq_poly_t res2, const fmpq_poly_t f, slong n) void _fmpq_poly_tanh_series(fmpz_struct * g, fmpz_t gden, const fmpz_struct * f, const fmpz_t fden, slong flen, slong n) void fmpq_poly_tanh_series(fmpq_poly_t res, const fmpq_poly_t f, slong n) + void _fmpq_poly_sin_cos_series_basecase(fmpz_struct * S, fmpz_t Sden, fmpz_struct * C, fmpz_t Cden, const fmpz_struct * A, const fmpz_t Aden, slong Alen, slong n) + void _fmpq_poly_sin_cos_series_newton(fmpz_struct * S, fmpz_t Sden, fmpz_struct * C, fmpz_t Cden, const fmpz_struct * h, const fmpz_t hden, slong hlen, slong cutoff, slong n) void _fmpq_poly_legendre_p(fmpz_struct * coeffs, fmpz_t den, ulong n) void fmpq_poly_legendre_p(fmpq_poly_t poly, ulong n) void _fmpq_poly_laguerre_l(fmpz_struct * coeffs, fmpz_t den, ulong n) @@ -215,6 +218,8 @@ cdef extern from "flint/fmpq_poly.h": 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_kinoshita_li(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_kinoshita_li(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) diff --git a/src/flint/flintlib/functions/fmpq_vec.pxd b/src/flint/flintlib/functions/fmpq_vec.pxd index b183bde9..5dd91964 100644 --- a/src/flint/flintlib/functions/fmpq_vec.pxd +++ b/src/flint/flintlib/functions/fmpq_vec.pxd @@ -9,8 +9,8 @@ cdef extern from "flint/fmpq_vec.h": void _fmpq_vec_clear(fmpq_struct * vec, slong n) void _fmpq_vec_randtest(fmpq_struct * f, flint_rand_t state, slong len, flint_bitcnt_t bits) void _fmpq_vec_randtest_uniq_sorted(fmpq_struct * vec, flint_rand_t state, slong len, flint_bitcnt_t bits) - void _fmpq_vec_max_height(fmpz_t height, const fmpq_struct * vec, slong len); - flint_bitcnt_t _fmpq_vec_max_height_bits(const fmpq_struct * vec, slong len); + void _fmpq_vec_max_height(fmpz_t height, const fmpq_struct * vec, slong len) + flint_bitcnt_t _fmpq_vec_max_height_bits(const fmpq_struct * vec, slong len) int _fmpq_vec_equal(const fmpq_struct * vec1, const fmpq_struct * vec2, slong len) void _fmpq_vec_sort(fmpq_struct * vec, slong len) void _fmpq_vec_set_fmpz_vec(fmpq_struct * res, const fmpz_struct * vec, slong len) diff --git a/src/flint/flintlib/functions/fmpz_mat.pxd b/src/flint/flintlib/functions/fmpz_mat.pxd index 7a1fda7a..dda53285 100644 --- a/src/flint/flintlib/functions/fmpz_mat.pxd +++ b/src/flint/flintlib/functions/fmpz_mat.pxd @@ -6,7 +6,6 @@ from flint.flintlib.types.nmod cimport nmod_mat_t # unknown type FILE # unknown type d_mat_t # unknown type fmpz_comb_t -# unknown type fmpz_comb_temp_t cdef extern from "flint/fmpz_mat.h": @@ -59,9 +58,9 @@ cdef extern from "flint/fmpz_mat.h": void fmpz_mat_set_nmod_mat(fmpz_mat_t A, const nmod_mat_t Amod) void fmpz_mat_set_nmod_mat_unsigned(fmpz_mat_t A, const nmod_mat_t Amod) void fmpz_mat_CRT_ui(fmpz_mat_t res, const fmpz_mat_t mat1, const fmpz_t m1, const nmod_mat_t mat2, int sign) - # void fmpz_mat_multi_mod_ui_precomp(nmod_mat_t * residues, slong nres, const fmpz_mat_t mat, const fmpz_comb_t comb, fmpz_comb_temp_t temp) + # void fmpz_mat_multi_mod_ui_precomp(nmod_mat_t * residues, slong nres, const fmpz_mat_t mat, const fmpz_comb_t comb) 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, const fmpz_comb_t comb, fmpz_comb_temp_t temp, int sign) + # void fmpz_mat_multi_CRT_ui_precomp(fmpz_mat_t mat, nmod_mat_t * const residues, slong nres, const fmpz_comb_t comb, 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) @@ -111,10 +110,11 @@ cdef extern from "flint/fmpz_mat.h": void fmpz_mat_det_modular_accelerated(fmpz_t det, const fmpz_mat_t A, int proved) void fmpz_mat_det_modular_given_divisor(fmpz_t det, const fmpz_mat_t A, const fmpz_t d, int proved) void fmpz_mat_det_bound(fmpz_t bound, const fmpz_mat_t A) - void fmpz_mat_det_bound_nonzero(fmpz_t bound, const fmpz_mat_t A) + void fmpz_mat_det_bound_submatrix(fmpz_t bound, const fmpz_mat_t A) void fmpz_mat_det_divisor(fmpz_t d, const fmpz_mat_t A) int fmpz_mat_permanent(fmpz_t res, const fmpz_mat_t A) void fmpz_mat_similarity(fmpz_mat_t A, slong r, fmpz_t d) + void fmpz_mat_charpoly_bound(fmpz_t bound, const fmpz_mat_t A) 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) @@ -145,10 +145,11 @@ cdef extern from "flint/fmpz_mat.h": slong fmpz_mat_rref_fflu(fmpz_mat_t B, fmpz_t den, const fmpz_mat_t A) slong fmpz_mat_rref_mul(fmpz_mat_t B, fmpz_t den, const fmpz_mat_t A) int fmpz_mat_is_in_rref_with_rank(const fmpz_mat_t A, const fmpz_t den, slong rank) + int fmpz_mat_rref_upper_certify_lu_mod_p(fmpz_mat_t E, fmpz_t den, const fmpz_mat_t A, slong rank, const slong * P, const slong * pivs) + int fmpz_mat_rank_certify_lu_mod_p(const fmpz_mat_t A, slong rank, const slong * P, const slong * pivs) void fmpz_mat_strong_echelon_form_mod(fmpz_mat_t A, const fmpz_t mod) slong fmpz_mat_howell_form_mod(fmpz_mat_t A, const fmpz_t mod) slong fmpz_mat_nullspace(fmpz_mat_t B, const fmpz_mat_t A) - slong fmpz_mat_rref_fraction_free(slong * perm, fmpz_mat_t B, fmpz_t den, const fmpz_mat_t A) void fmpz_mat_hnf(fmpz_mat_t H, const fmpz_mat_t A) 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) diff --git a/src/flint/flintlib/functions/fmpz_mod_vec.pxd b/src/flint/flintlib/functions/fmpz_mod_vec.pxd index 4df28a52..16076229 100644 --- a/src/flint/flintlib/functions/fmpz_mod_vec.pxd +++ b/src/flint/flintlib/functions/fmpz_mod_vec.pxd @@ -5,6 +5,7 @@ from flint.flintlib.types.fmpz_mod cimport fmpz_mod_ctx_t cdef extern from "flint/fmpz_mod_vec.h": void _fmpz_mod_vec_set_fmpz_vec(fmpz_struct * A, const fmpz_struct * B, slong len, const fmpz_mod_ctx_t ctx) + void _fmpz_mod_vec_get_fmpz_vec_smod(fmpz_struct * res, const fmpz_struct * vec, slong len, const fmpz_mod_ctx_t ctx) void _fmpz_mod_vec_neg(fmpz_struct * A, const fmpz_struct * B, slong len, const fmpz_mod_ctx_t ctx) void _fmpz_mod_vec_add(fmpz_struct * a, const fmpz_struct * b, const fmpz_struct * c, slong n, const fmpz_mod_ctx_t ctx) void _fmpz_mod_vec_sub(fmpz_struct * a, const fmpz_struct * b, const fmpz_struct * c, slong n, const fmpz_mod_ctx_t ctx) diff --git a/src/flint/flintlib/functions/fmpz_poly.pxd b/src/flint/flintlib/functions/fmpz_poly.pxd index 6d31b419..a55cdedf 100644 --- a/src/flint/flintlib/functions/fmpz_poly.pxd +++ b/src/flint/flintlib/functions/fmpz_poly.pxd @@ -195,6 +195,7 @@ cdef extern from "flint/fmpz_poly.h": 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_squarefree_part(fmpz_poly_t res, const fmpz_poly_t poly) 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) @@ -390,10 +391,24 @@ cdef extern from "flint/fmpz_poly.h": void _fmpz_poly_tree_build_fmpq_vec(fmpz_struct ** tree, const fmpq_struct * roots, slong len) 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) + slong _fmpz_poly_positive_root_upper_bound_2exp_local_max(const fmpz_struct * pol, slong len) + slong _fmpz_poly_positive_root_upper_bound_2exp(const fmpz_struct * pol, slong len) + slong fmpz_poly_positive_root_upper_bound_2exp(const fmpz_poly_t pol) + slong _fmpz_poly_descartes_bound_0_1(const fmpz_struct * p, slong len, slong bound) 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_vca(const fmpz_struct * pol, slong len) + slong fmpz_poly_num_real_roots_vca(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) + slong fmpz_poly_num_real_roots_0_1_sturm(const fmpz_poly_t pol) + slong fmpz_poly_num_real_roots_0_1_vca(const fmpz_poly_t pol) + slong fmpz_poly_num_real_roots_0_1(const fmpz_poly_t pol) + int _fmpz_poly_has_real_root(const fmpz_struct * p, slong len) + int fmpz_poly_has_real_root(const fmpz_poly_t pol) + void _fmpz_poly_isolate_real_roots_0_1_vca(fmpq_struct * exact_roots, slong * n_exact_roots, fmpz_struct * c_array, slong * k_array, slong * n_intervals, const fmpz_struct * pol, slong len) + void fmpz_poly_isolate_real_roots(fmpq_struct * exact_roots, slong * n_exact, fmpz_struct * c_array, slong * k_array, slong * n_interval, const fmpz_poly_t pol) + void fmpz_poly_isolate_positive_roots(fmpq_struct * exact_roots, slong * n_exact, fmpz_struct * c_array, slong * k_array, slong * n_interval, const fmpz_poly_t pol) void _fmpz_poly_cyclotomic(fmpz_struct * a, ulong n, nn_ptr factors, slong num_factors, ulong phi) void fmpz_poly_cyclotomic(fmpz_poly_t poly, ulong n) ulong _fmpz_poly_is_cyclotomic(const fmpz_struct * poly, slong len) diff --git a/src/flint/flintlib/functions/fmpz_vec.pxd b/src/flint/flintlib/functions/fmpz_vec.pxd index 231b634c..65cf8980 100644 --- a/src/flint/flintlib/functions/fmpz_vec.pxd +++ b/src/flint/flintlib/functions/fmpz_vec.pxd @@ -1,11 +1,22 @@ from flint.flintlib.types.flint cimport flint_bitcnt_t, flint_rand_t, fmpz_struct, fmpz_t, nmod_t, nn_ptr, nn_srcptr, slong, ulong # unknown type FILE +# unknown type fmpz_vec_t cdef extern from "flint/fmpz_vec.h": fmpz_struct * _fmpz_vec_init(slong len) void _fmpz_vec_clear(fmpz_struct * vec, slong len) + # void fmpz_vec_init(fmpz_vec_t vec, slong len) + # void fmpz_vec_clear(fmpz_vec_t vec) + # fmpz_struct * fmpz_vec_entry_ptr(fmpz_vec_t vec, slong i) + # const fmpz_struct * fmpz_vec_entry_srcptr(const fmpz_vec_t vec, slong i) + # slong fmpz_vec_length(const fmpz_vec_t vec) + # void fmpz_vec_fit_length(fmpz_vec_t vec, slong len) + # void fmpz_vec_set_length(fmpz_vec_t vec, slong len) + # void fmpz_vec_set(fmpz_vec_t res, const fmpz_vec_t src) + # void fmpz_vec_append(fmpz_vec_t vec, const fmpz_t f) + # void fmpz_vec_append_ui(fmpz_vec_t vec, ulong f) void _fmpz_vec_randtest(fmpz_struct * f, flint_rand_t state, slong len, flint_bitcnt_t bits) void _fmpz_vec_randtest_unsigned(fmpz_struct * f, flint_rand_t state, slong len, flint_bitcnt_t bits) slong _fmpz_vec_max_bits(const fmpz_struct * vec, slong len) @@ -63,6 +74,7 @@ cdef extern from "flint/fmpz_vec.h": void _fmpz_vec_prod(fmpz_t res, const fmpz_struct * vec, slong len) void _fmpz_vec_scalar_mod_fmpz(fmpz_struct * res, const fmpz_struct * vec, slong len, const fmpz_t p) void _fmpz_vec_scalar_smod_fmpz(fmpz_struct * res, const fmpz_struct * vec, slong len, const fmpz_t p) + void _fmpz_vec_multi_CRT_ui(fmpz_struct * res, nn_srcptr * residues, slong len, nn_srcptr primes, slong num_primes, int sign) void _fmpz_vec_content(fmpz_t res, const fmpz_struct * vec, slong len) void _fmpz_vec_content_chained(fmpz_t res, const fmpz_struct * vec, slong len, const fmpz_t input) void _fmpz_vec_lcm(fmpz_t res, const fmpz_struct * vec, slong len) diff --git a/src/flint/flintlib/functions/fq_default_mat.pxd b/src/flint/flintlib/functions/fq_default_mat.pxd index 563ab910..6c603a88 100644 --- a/src/flint/flintlib/functions/fq_default_mat.pxd +++ b/src/flint/flintlib/functions/fq_default_mat.pxd @@ -1,4 +1,4 @@ -from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, slong +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, slong, ulong from flint.flintlib.types.fmpz cimport fmpz_mat_t from flint.flintlib.types.fmpz_mod cimport fmpz_mod_mat_t from flint.flintlib.types.fq cimport fq_ctx_t, fq_mat_t, fq_struct @@ -51,6 +51,10 @@ cdef extern from "flint/fq_default_mat.h": 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) + void fq_default_mat_scalar_mul(fq_default_mat_t B, const fq_default_mat_t A, const fq_default_t c, const fq_default_ctx_t ctx) + void fq_default_mat_scalar_mul_fmpz(fq_default_mat_t B, const fq_default_mat_t A, const fmpz_t c, const fq_default_ctx_t ctx) + void fq_default_mat_scalar_mul_si(fq_default_mat_t B, const fq_default_mat_t A, const slong c, const fq_default_ctx_t ctx) + void fq_default_mat_scalar_mul_ui(fq_default_mat_t B, const fq_default_mat_t A, const ulong c, const fq_default_ctx_t ctx) void fq_default_mat_mul(fq_default_mat_t C, const fq_default_mat_t A, const fq_default_mat_t B, const fq_default_ctx_t ctx) void fq_default_mat_submul(fq_default_mat_t D, const fq_default_mat_t C, const fq_default_mat_t A, const fq_default_mat_t B, const fq_default_ctx_t ctx) int fq_default_mat_inv(fq_default_mat_t B, fq_default_mat_t A, 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 85da9617..68bd9a8e 100644 --- a/src/flint/flintlib/functions/fq_mat.pxd +++ b/src/flint/flintlib/functions/fq_mat.pxd @@ -1,4 +1,4 @@ -from flint.flintlib.types.flint cimport flint_rand_t, slong +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, slong, ulong from flint.flintlib.types.fmpz_mod cimport fmpz_mod_mat_t from flint.flintlib.types.fq cimport fq_ctx_t, fq_mat_t, fq_poly_t, fq_struct, fq_t from flint.flintlib.types.nmod cimport nmod_mat_t @@ -48,6 +48,10 @@ cdef extern from "flint/fq_mat.h": 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) + void fq_mat_scalar_mul(fq_mat_t B, const fq_mat_t A, const fq_t c, const fq_ctx_t ctx) + void fq_mat_scalar_mul_fmpz(fq_mat_t B, const fq_mat_t A, const fmpz_t c, const fq_ctx_t ctx) + void fq_mat_scalar_mul_si(fq_mat_t B, const fq_mat_t A, const slong c, const fq_ctx_t ctx) + void fq_mat_scalar_mul_ui(fq_mat_t B, const fq_mat_t A, const ulong c, const fq_ctx_t ctx) void fq_mat_mul(fq_mat_t C, const fq_mat_t A, const fq_mat_t B, const fq_ctx_t ctx) void fq_mat_mul_classical(fq_mat_t C, const fq_mat_t A, const fq_mat_t B, const fq_ctx_t ctx) void fq_mat_mul_KS(fq_mat_t C, const fq_mat_t A, const fq_mat_t B, 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 8f61e459..17a084d1 100644 --- a/src/flint/flintlib/functions/fq_nmod_mat.pxd +++ b/src/flint/flintlib/functions/fq_nmod_mat.pxd @@ -1,4 +1,4 @@ -from flint.flintlib.types.flint cimport flint_rand_t, slong +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, slong, ulong from flint.flintlib.types.fmpz_mod cimport fmpz_mod_mat_t from flint.flintlib.types.fq_nmod cimport fq_nmod_ctx_t, fq_nmod_mat_t, fq_nmod_poly_t, fq_nmod_struct, fq_nmod_t from flint.flintlib.types.nmod cimport nmod_mat_t @@ -48,6 +48,10 @@ cdef extern from "flint/fq_nmod_mat.h": 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) + void fq_nmod_mat_scalar_mul(fq_nmod_mat_t B, const fq_nmod_mat_t A, const fq_nmod_t c, const fq_nmod_ctx_t ctx) + void fq_nmod_mat_scalar_mul_fmpz(fq_nmod_mat_t B, const fq_nmod_mat_t A, const fmpz_t c, const fq_nmod_ctx_t ctx) + void fq_nmod_mat_scalar_mul_si(fq_nmod_mat_t B, const fq_nmod_mat_t A, const slong c, const fq_nmod_ctx_t ctx) + void fq_nmod_mat_scalar_mul_ui(fq_nmod_mat_t B, const fq_nmod_mat_t A, const ulong c, const fq_nmod_ctx_t ctx) void fq_nmod_mat_mul(fq_nmod_mat_t C, const fq_nmod_mat_t A, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) void fq_nmod_mat_mul_classical(fq_nmod_mat_t C, const fq_nmod_mat_t A, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) void fq_nmod_mat_mul_KS(fq_nmod_mat_t C, const fq_nmod_mat_t A, const fq_nmod_mat_t B, const fq_nmod_ctx_t ctx) diff --git a/src/flint/flintlib/functions/fq_zech_mat.pxd b/src/flint/flintlib/functions/fq_zech_mat.pxd index b72e6058..5022d491 100644 --- a/src/flint/flintlib/functions/fq_zech_mat.pxd +++ b/src/flint/flintlib/functions/fq_zech_mat.pxd @@ -1,4 +1,4 @@ -from flint.flintlib.types.flint cimport flint_rand_t, slong +from flint.flintlib.types.flint cimport flint_rand_t, fmpz_t, slong, ulong from flint.flintlib.types.fmpz_mod cimport fmpz_mod_mat_t from flint.flintlib.types.fq_zech cimport fq_zech_ctx_t, fq_zech_mat_t, fq_zech_poly_t, fq_zech_struct, fq_zech_t from flint.flintlib.types.nmod cimport nmod_mat_t @@ -44,6 +44,10 @@ cdef extern from "flint/fq_zech_mat.h": 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) + void fq_zech_mat_scalar_mul(fq_zech_mat_t B, const fq_zech_mat_t A, const fq_zech_t c, const fq_zech_ctx_t ctx) + void fq_zech_mat_scalar_mul_fmpz(fq_zech_mat_t B, const fq_zech_mat_t A, const fmpz_t c, const fq_zech_ctx_t ctx) + void fq_zech_mat_scalar_mul_si(fq_zech_mat_t B, const fq_zech_mat_t A, const slong c, const fq_zech_ctx_t ctx) + void fq_zech_mat_scalar_mul_ui(fq_zech_mat_t B, const fq_zech_mat_t A, const ulong c, const fq_zech_ctx_t ctx) void fq_zech_mat_mul(fq_zech_mat_t C, const fq_zech_mat_t A, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) void fq_zech_mat_mul_classical(fq_zech_mat_t C, const fq_zech_mat_t A, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) void fq_zech_mat_mul_KS(fq_zech_mat_t C, const fq_zech_mat_t A, const fq_zech_mat_t B, const fq_zech_ctx_t ctx) diff --git a/src/flint/flintlib/functions/gr.pxd b/src/flint/flintlib/functions/gr.pxd index 61f983de..6c6efd8d 100644 --- a/src/flint/flintlib/functions/gr.pxd +++ b/src/flint/flintlib/functions/gr.pxd @@ -4,6 +4,7 @@ from flint.flintlib.types.gr cimport gr_ctx_t, gr_ptr, gr_srcptr, gr_stream_t, g # unknown type fexpr_t # unknown type fexpr_vec_t +# unknown type fmpz_vec_t # .. macro:: GR_SUCCESS # .. macro:: GR_DOMAIN @@ -155,7 +156,7 @@ cdef extern from "flint/gr.h": 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_factor(gr_ptr c, gr_vec_t factors, fmpz_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) int gr_floor(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) @@ -189,6 +190,7 @@ cdef extern from "flint/gr.h": truth_t gr_abs_gt(gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) int gr_min(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) int gr_max(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) + int gr_big_o_base_fmpz(gr_ptr res, gr_srcptr x, const fmpz_t n, gr_ctx_t ctx) int gr_set_interval_mid_rad(gr_ptr res, gr_srcptr m, gr_srcptr r, gr_ctx_t ctx) int gr_ctx_fq_prime(fmpz_t p, gr_ctx_t ctx) int gr_ctx_fq_degree(slong * deg, gr_ctx_t ctx) diff --git a/src/flint/flintlib/functions/gr_domains.pxd b/src/flint/flintlib/functions/gr_domains.pxd index 6555ffdb..ce2feb43 100644 --- a/src/flint/flintlib/functions/gr_domains.pxd +++ b/src/flint/flintlib/functions/gr_domains.pxd @@ -36,6 +36,7 @@ cdef extern from "flint/gr.h": void gr_ctx_init_random(gr_ctx_t ctx, flint_rand_t state) void gr_ctx_init_random_commutative_ring(gr_ctx_t ctx, flint_rand_t state) void gr_ctx_init_random_field(gr_ctx_t ctx, flint_rand_t state) + void gr_ctx_init_random_finite_field(gr_ctx_t ctx, flint_rand_t state) void gr_ctx_init_fmpz(gr_ctx_t ctx) void gr_ctx_init_fmpq(gr_ctx_t ctx) void gr_ctx_init_fmpzi(gr_ctx_t ctx) diff --git a/src/flint/flintlib/functions/gr_generic.pxd b/src/flint/flintlib/functions/gr_generic.pxd index 5a05cab2..edb6f359 100644 --- a/src/flint/flintlib/functions/gr_generic.pxd +++ b/src/flint/flintlib/functions/gr_generic.pxd @@ -3,6 +3,7 @@ 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, gr_vec_t, truth_t +# unknown type fmpz_vec_t # .. macro :: GR_PARSE_BALANCE_ADDITIONS # .. macro :: GR_PARSE_RING_EXPONENTS @@ -141,6 +142,7 @@ cdef extern from "flint/gr_generic.h": int gr_generic_vec_is_zero(gr_srcptr vec, slong len, gr_ctx_t ctx) int gr_generic_vec_dot(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, gr_srcptr vec2, slong len, gr_ctx_t ctx) int gr_generic_vec_dot_rev(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, gr_srcptr vec2, slong len, gr_ctx_t ctx) + int gr_generic_vec_dot_strided(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, slong stride1, gr_srcptr vec2, slong stride2, slong len, gr_ctx_t ctx) int gr_generic_vec_dot_ui(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, const ulong * vec2, slong len, gr_ctx_t ctx) int gr_generic_vec_dot_si(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, const slong * vec2, slong len, gr_ctx_t ctx) int gr_generic_vec_dot_fmpz(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, const fmpz_struct * vec2, slong len, gr_ctx_t ctx) @@ -212,4 +214,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) + # int gr_generic_poly_factor_roots( gr_ptr c, gr_vec_t fac, fmpz_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 e5d5fd9c..517b769f 100644 --- a/src/flint/flintlib/functions/gr_mat.pxd +++ b/src/flint/flintlib/functions/gr_mat.pxd @@ -3,6 +3,7 @@ from flint.flintlib.types.fmpq cimport fmpq_mat_t, fmpq_t from flint.flintlib.types.fmpz cimport fmpz_mat_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 fmpz_vec_t # unknown type gr_method_binary_op # unknown type gr_method_binary_predicate # unknown type gr_method_mat_binary_op @@ -32,6 +33,7 @@ cdef extern from "flint/gr_mat.h": void gr_mat_window_clear(gr_mat_t window, gr_ctx_t ctx) int gr_mat_write(gr_stream_t out, const gr_mat_t mat, gr_ctx_t ctx) int gr_mat_print(const gr_mat_t mat, gr_ctx_t ctx) + int gr_mat_set_str(gr_mat_t mat, const char * s, int resize, gr_ctx_t ctx) truth_t gr_mat_equal(const gr_mat_t mat1, const gr_mat_t mat2, gr_ctx_t ctx) truth_t gr_mat_is_zero(const gr_mat_t mat, gr_ctx_t ctx) truth_t gr_mat_is_one(const gr_mat_t mat, gr_ctx_t ctx) @@ -52,9 +54,15 @@ cdef extern from "flint/gr_mat.h": 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 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) + void _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) + void _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) int gr_mat_invert_cols(gr_mat_t mat, slong * perm, gr_ctx_t ctx) + int gr_mat_permute_rows(gr_mat_t mat, slong * perm_store, const slong * perm_act, gr_ctx_t ctx) + int gr_mat_permute_rows_inv(gr_mat_t mat, slong * perm_store, const slong * perm_act, gr_ctx_t ctx) + int gr_mat_permute_cols(gr_mat_t mat, slong * perm_store, const slong * perm_act, gr_ctx_t ctx) + int gr_mat_permute_cols_inv(gr_mat_t mat, slong * perm_store, const slong * perm_act, gr_ctx_t ctx) int gr_mat_move_row(gr_mat_t A, slong i, slong new_i, gr_ctx_t ctx) truth_t gr_mat_is_empty(const gr_mat_t mat, gr_ctx_t ctx) truth_t gr_mat_is_square(const gr_mat_t mat, gr_ctx_t ctx) @@ -199,9 +207,9 @@ cdef extern from "flint/gr_mat.h": 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) - int gr_mat_diagonalization_precomp(gr_vec_t D, gr_mat_t L, gr_mat_t R, const gr_mat_t A, const gr_vec_t eigenvalues, const gr_vec_t mult, gr_ctx_t ctx) + # int gr_mat_eigenvalues(gr_vec_t lambda_, fmpz_vec_t mult, const gr_mat_t mat, int flags, gr_ctx_t ctx) + # int gr_mat_eigenvalues_other(gr_vec_t lambda_, fmpz_vec_t mult, const gr_mat_t mat, gr_ctx_t mat_ctx, int flags, gr_ctx_t ctx) + # int gr_mat_diagonalization_precomp(gr_vec_t D, gr_mat_t L, gr_mat_t R, const gr_mat_t A, const gr_vec_t eigenvalues, const fmpz_vec_t mult, gr_ctx_t ctx) int gr_mat_diagonalization_generic(gr_vec_t D, gr_mat_t L, gr_mat_t R, const gr_mat_t A, int flags, gr_ctx_t ctx) int gr_mat_diagonalization(gr_vec_t D, gr_mat_t L, gr_mat_t R, const gr_mat_t A, int flags, gr_ctx_t ctx) int gr_mat_set_jordan_blocks(gr_mat_t mat, const gr_vec_t lambda_, slong num_blocks, slong * block_lambda, slong * block_size, gr_ctx_t ctx) diff --git a/src/flint/flintlib/functions/gr_poly.pxd b/src/flint/flintlib/functions/gr_poly.pxd index 6ffdc7f8..21c53e83 100644 --- a/src/flint/flintlib/functions/gr_poly.pxd +++ b/src/flint/flintlib/functions/gr_poly.pxd @@ -1,8 +1,9 @@ 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_mat_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_struct, gr_poly_t, gr_ptr, gr_srcptr, gr_stream_t, gr_vec_t, truth_t +# unknown type fmpz_vec_t # unknown type gr_method_poly_binary_binary_op # unknown type gr_method_poly_binary_op # unknown type gr_method_poly_binary_trunc2_op @@ -10,6 +11,7 @@ from flint.flintlib.types.gr cimport gr_ctx_t, gr_mat_t, gr_poly_t, gr_ptr, gr_s # unknown type gr_method_poly_gcd_op # unknown type gr_method_poly_unary_trunc_op # unknown type gr_method_poly_xgcd_op +# unknown type gr_poly_vec_t cdef extern from "flint/gr_poly.h": @@ -24,6 +26,15 @@ cdef extern from "flint/gr_poly.h": void gr_poly_swap(gr_poly_t poly1, gr_poly_t poly2, gr_ctx_t ctx) void gr_poly_fit_length(gr_poly_t poly, slong len, gr_ctx_t ctx) void _gr_poly_set_length(gr_poly_t poly, slong len, gr_ctx_t ctx) + # void gr_poly_vec_init(gr_poly_vec_t vec, slong len, gr_ctx_t ctx) + # void gr_poly_vec_clear(gr_poly_vec_t vec, gr_ctx_t ctx) + # gr_poly_struct * gr_poly_vec_entry_ptr(gr_poly_vec_t vec, slong i, gr_ctx_t ctx) + # const gr_poly_struct * gr_poly_vec_entry_srcptr(const gr_poly_vec_t vec, slong i, gr_ctx_t ctx) + # slong gr_poly_vec_length(const gr_poly_vec_t vec, gr_ctx_t ctx) + # void gr_poly_vec_fit_length(gr_poly_vec_t vec, slong len, gr_ctx_t ctx) + # void gr_poly_vec_set_length(gr_poly_vec_t vec, slong len, gr_ctx_t ctx) + # int gr_poly_vec_set(gr_poly_vec_t res, const gr_poly_vec_t src, gr_ctx_t ctx) + # int gr_poly_vec_append(gr_poly_vec_t vec, const gr_poly_t f, gr_ctx_t ctx) void _gr_poly_normalise(gr_poly_t poly, gr_ctx_t ctx) int gr_poly_set(gr_poly_t res, const gr_poly_t src, gr_ctx_t ctx) int gr_poly_get_fmpz_poly(gr_poly_t res, const fmpz_poly_t src, gr_ctx_t ctx) @@ -88,8 +99,8 @@ cdef extern from "flint/gr_poly.h": int gr_poly_mullow_complex_reorder(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, slong n, int karatsuba, gr_ctx_t ctx, gr_ctx_t real_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_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_mullow_toom_serial(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, slong trunc, slong num_points, slong splitting_degree, gr_ctx_t ctx) int gr_poly_mullow_toom_serial(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, slong n, slong num_points, slong splitting_degree, 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) @@ -126,6 +137,7 @@ cdef extern from "flint/gr_poly.h": int _gr_poly_shift_right(gr_ptr res, gr_srcptr poly, slong len, slong n, gr_ctx_t ctx) int gr_poly_shift_right(gr_poly_t res, const gr_poly_t poly, slong n, gr_ctx_t ctx) int gr_poly_div_scalar(gr_poly_t res, const gr_poly_t poly, gr_srcptr c, gr_ctx_t ctx) + int gr_poly_divexact_scalar(gr_poly_t res, const gr_poly_t poly, gr_srcptr c, gr_ctx_t ctx) int _gr_poly_divrem_divconquer_preinv1(gr_ptr Q, gr_ptr R, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_srcptr invB, slong cutoff, gr_ctx_t ctx) int _gr_poly_divrem_divconquer_noinv(gr_ptr Q, gr_ptr R, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, slong cutoff, gr_ctx_t ctx) int _gr_poly_divrem_divconquer(gr_ptr Q, gr_ptr R, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, slong cutoff, gr_ctx_t ctx) @@ -263,6 +275,8 @@ cdef extern from "flint/gr_poly.h": int gr_poly_compose_series_brent_kung(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, slong n, gr_ctx_t ctx) int _gr_poly_compose_series_divconquer(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, slong n, gr_ctx_t ctx) int gr_poly_compose_series_divconquer(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, slong n, gr_ctx_t ctx) + int _gr_poly_compose_series_kinoshita_li(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, slong n, gr_ctx_t ctx) + int gr_poly_compose_series_kinoshita_li(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, slong n, gr_ctx_t ctx) int _gr_poly_compose_series(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, slong n, gr_ctx_t ctx) int gr_poly_compose_series(gr_poly_t res, const gr_poly_t poly1, const gr_poly_t poly2, slong n, gr_ctx_t ctx) int _gr_poly_revert_series_lagrange(gr_ptr res, gr_srcptr f, slong flen, slong n, gr_ctx_t ctx) @@ -296,8 +310,10 @@ cdef extern from "flint/gr_poly.h": int gr_poly_gcd(gr_poly_t G, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) int _gr_poly_xgcd_euclidean(slong * lenG, gr_ptr G, gr_ptr S, gr_ptr T, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) int gr_poly_xgcd_euclidean(gr_poly_t G, gr_poly_t S, gr_poly_t T, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) - int _gr_poly_xgcd_hgcd(slong * Glen, gr_ptr G, gr_ptr S, gr_ptr T, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, slong hgcd_cutoff, slong cutoff, gr_ctx_t ctx) + int _gr_poly_xgcd_hgcd(slong * lenG, gr_ptr G, gr_ptr S, gr_ptr T, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, slong hgcd_cutoff, slong cutoff, gr_ctx_t ctx) int gr_poly_xgcd_hgcd(gr_poly_t G, gr_poly_t S, gr_poly_t T, const gr_poly_t A, const gr_poly_t B, slong hgcd_cutoff, slong cutoff, gr_ctx_t ctx) + int _gr_poly_xgcd_subresultant(slong * lenG, gr_ptr G, gr_ptr S, gr_ptr T, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) + int gr_poly_xgcd_subresultant(gr_poly_t G, gr_poly_t S, gr_poly_t T, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) int _gr_poly_xgcd_generic(slong * lenG, gr_ptr G, gr_ptr S, gr_ptr T, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) int _gr_poly_xgcd(slong * lenG, gr_ptr G, gr_ptr S, gr_ptr T, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) int gr_poly_xgcd(gr_poly_t G, gr_poly_t S, gr_poly_t T, const gr_poly_t A, const gr_poly_t B, gr_ctx_t ctx) @@ -305,26 +321,28 @@ cdef extern from "flint/gr_poly.h": int gr_poly_resultant_euclidean(gr_ptr res, const gr_poly_t f, const gr_poly_t g, gr_ctx_t ctx) int _gr_poly_resultant_hgcd(gr_ptr res, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, slong inner_cutoff, slong cutoff, gr_ctx_t ctx) int gr_poly_resultant_hgcd(gr_ptr res, const gr_poly_t f, const gr_poly_t g, slong inner_cutoff, slong cutoff, gr_ctx_t ctx) + int _gr_poly_resultant_subresultant(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx) + int gr_poly_resultant_subresultant(gr_ptr res, const gr_poly_t f, const gr_poly_t g, gr_ctx_t ctx) int _gr_poly_resultant_sylvester(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx) int gr_poly_resultant_sylvester(gr_ptr res, const gr_poly_t f, const gr_poly_t g, gr_ctx_t ctx) int _gr_poly_resultant_small(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx) int gr_poly_resultant_small(gr_ptr res, const gr_poly_t f, const gr_poly_t g, gr_ctx_t ctx) int _gr_poly_resultant(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, gr_ctx_t ctx) 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_factor_squarefree(gr_ptr c, gr_poly_vec_t fac, fmpz_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_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_poly_vec_t ffac, const gr_poly_vec_t gfac, gr_ctx_t ctx) + # int gr_poly_shiftless_decomposition_factor(gr_ptr c, gr_poly_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_poly_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_poly_vec_t slfac, gr_vec_t slshifts, gr_vec_t slmult, const gr_poly_vec_t fac, const fmpz_vec_t mult, gr_ctx_t ctx) + # int gr_poly_shiftless_decomposition_from_factors(gr_poly_vec_t slfac, gr_vec_t slshifts, gr_vec_t slmult, const gr_poly_vec_t fac, const fmpz_vec_t mult, gr_ctx_t ctx) + # int gr_poly_roots(gr_vec_t roots, fmpz_vec_t mult, const gr_poly_t poly, int flags, gr_ctx_t ctx) + # int gr_poly_roots_other(gr_vec_t roots, fmpz_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) int _gr_poly_refine_roots_wdk(gr_ptr w, gr_srcptr f, slong deg, gr_srcptr z, int progressive, gr_ctx_t ctx) int _gr_poly_asin_series(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) @@ -352,16 +370,46 @@ cdef extern from "flint/gr_poly.h": int _gr_poly_exp_series_generic(gr_ptr f, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) int _gr_poly_exp_series(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) int gr_poly_exp_series(gr_poly_t f, const gr_poly_t h, slong n, gr_ctx_t ctx) + int _gr_poly_sin_cos_series(gr_ptr s, gr_ptr c, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) + int _gr_poly_sin_cos_pi_series(gr_ptr s, gr_ptr c, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) + int gr_poly_sin_cos_series(gr_poly_t s, gr_poly_t c, const gr_poly_t h, slong n, gr_ctx_t ctx) + int gr_poly_sin_cos_pi_series(gr_poly_t s, gr_poly_t c, const gr_poly_t h, slong n, gr_ctx_t ctx) + int _gr_poly_sin_series(gr_ptr s, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) + int gr_poly_sin_series(gr_poly_t s, const gr_poly_t h, slong n, gr_ctx_t ctx) + int _gr_poly_sin_pi_series(gr_ptr s, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) + int gr_poly_sin_pi_series(gr_poly_t s, const gr_poly_t h, slong n, gr_ctx_t ctx) + int _gr_poly_cos_series(gr_ptr c, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) + int gr_poly_cos_series(gr_poly_t c, const gr_poly_t h, slong n, gr_ctx_t ctx) + int _gr_poly_cos_pi_series(gr_ptr c, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) + int gr_poly_cos_pi_series(gr_poly_t c, const gr_poly_t h, slong n, 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_tanh_series(gr_ptr f, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) + int gr_poly_tanh_series(gr_poly_t f, const gr_poly_t h, slong n, gr_ctx_t ctx) + int _gr_poly_cot_series(gr_ptr f, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) + int gr_poly_cot_series(gr_poly_t f, const gr_poly_t h, slong n, gr_ctx_t ctx) + int _gr_poly_coth_series(gr_ptr f, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) + int gr_poly_coth_series(gr_poly_t f, const gr_poly_t h, slong n, gr_ctx_t ctx) + int _gr_poly_tan_pi_series(gr_ptr f, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) + int gr_poly_tan_pi_series(gr_poly_t f, const gr_poly_t h, slong n, gr_ctx_t ctx) + int _gr_poly_cot_pi_series(gr_ptr f, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) + int gr_poly_cot_pi_series(gr_poly_t f, const gr_poly_t h, slong n, gr_ctx_t ctx) int _gr_poly_sin_cos_series_basecase(gr_ptr s, gr_ptr c, gr_srcptr h, slong hlen, slong n, int times_pi, gr_ctx_t ctx) int gr_poly_sin_cos_series_basecase(gr_poly_t s, gr_poly_t c, const gr_poly_t h, slong n, int times_pi, gr_ctx_t ctx) int _gr_poly_sin_cos_series_tangent(gr_ptr s, gr_ptr c, gr_srcptr h, slong hlen, slong n, int times_pi, gr_ctx_t ctx) int gr_poly_sin_cos_series_tangent(gr_poly_t s, gr_poly_t c, const gr_poly_t h, slong n, int times_pi, gr_ctx_t ctx) - int _gr_poly_tan_series_basecase(gr_ptr f, gr_srcptr h, slong hlen, slong n, gr_ctx_t ctx) - int gr_poly_tan_series_basecase(gr_poly_t f, const gr_poly_t h, slong n, gr_ctx_t ctx) - int _gr_poly_tan_series_newton(gr_ptr f, gr_srcptr h, slong hlen, slong n, slong cutoff, gr_ctx_t ctx) - 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_sin_cos_series_newton(gr_ptr s, gr_ptr c, gr_srcptr h, slong hlen, slong n, slong cutoff, int times_pi, gr_ctx_t ctx) + int gr_poly_sin_cos_series_newton(gr_poly_t s, gr_poly_t c, const gr_poly_t h, slong n, slong cutoff, int times_pi, gr_ctx_t ctx) + int _gr_poly_tan_series_basecase(gr_ptr f, gr_srcptr h, slong hlen, slong n, int func, gr_ctx_t ctx) + int gr_poly_tan_series_basecase(gr_poly_t f, const gr_poly_t h, slong n, int func, gr_ctx_t ctx) + int _gr_poly_tan_series_newton(gr_ptr f, gr_srcptr h, slong hlen, slong n, slong cutoff, int func, gr_ctx_t ctx) + int gr_poly_tan_series_newton(gr_poly_t f, const gr_poly_t h, slong n, slong cutoff, int func, gr_ctx_t ctx) + int _gr_poly_tan_series_sine_cosine(gr_ptr f, gr_srcptr h, slong hlen, slong n, int func, gr_ctx_t ctx) + int gr_poly_tan_series_sine_cosine(gr_poly_t res, const gr_poly_t h, slong len, int func, gr_ctx_t ctx) + int _gr_poly_tan_series_exponential(gr_ptr f, gr_srcptr h, slong hlen, slong n, int func, gr_ctx_t ctx) + int gr_poly_tan_series_exponential(gr_poly_t res, const gr_poly_t h, slong len, int func, gr_ctx_t ctx) + int _gr_poly_bessel_j_series(gr_ptr res, gr_srcptr nu, gr_srcptr z, slong zlen, slong len, gr_ctx_t ctx) + int gr_poly_bessel_j_series(gr_poly_t res, gr_srcptr nu, const gr_poly_t z, slong len, 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) @@ -402,5 +450,5 @@ cdef extern from "flint/gr_poly.h": # void _gr_poly_test_inv_series(gr_method_poly_unary_trunc_op inv_series_impl, flint_rand_t state, slong iters, slong maxn, gr_ctx_t ctx) # void _gr_poly_test_div_series(gr_method_poly_binary_trunc_op div_series_impl, flint_rand_t state, slong iters, slong maxn, gr_ctx_t ctx) # void _gr_poly_test_gcd(gr_method_poly_gcd_op gcd_impl, flint_rand_t state, slong iters, slong maxn, gr_ctx_t ctx) - # void _gr_poly_test_xgcd(gr_method_poly_xgcd_op xgcd_impl, flint_rand_t state, slong iters, slong maxn, gr_ctx_t ctx) + # void _gr_poly_test_xgcd(gr_method_poly_xgcd_op xgcd_impl, flint_rand_t state, slong iters, slong maxn, int flags, gr_ctx_t ctx) # void _gr_poly_test_approx_mulmid_pos_entrywise_accurate(gr_method_poly_binary_trunc2_op mulmid_impl, gr_method_poly_binary_trunc2_op mulmid_ref, gr_srcptr rel_tol, flint_rand_t state, slong iters, slong maxn, gr_ctx_t ctx) diff --git a/src/flint/flintlib/functions/gr_special.pxd b/src/flint/flintlib/functions/gr_special.pxd index caa12236..945efc08 100644 --- a/src/flint/flintlib/functions/gr_special.pxd +++ b/src/flint/flintlib/functions/gr_special.pxd @@ -155,6 +155,7 @@ cdef extern from "flint/gr_special.h": int gr_bessel_j_y(gr_ptr res1, gr_ptr res2, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) int gr_bessel_i_scaled(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) int gr_bessel_k_scaled(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) + int gr_bessel_j_jet(gr_ptr res, gr_srcptr nu, gr_srcptr z, slong len, gr_ctx_t ctx) int gr_airy(gr_ptr res1, gr_ptr res2, gr_ptr res3, gr_ptr res4, gr_srcptr x, gr_ctx_t ctx) int gr_airy_ai(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) int gr_airy_bi(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) diff --git a/src/flint/flintlib/functions/gr_vec.pxd b/src/flint/flintlib/functions/gr_vec.pxd index c5d327f0..dfbb573e 100644 --- a/src/flint/flintlib/functions/gr_vec.pxd +++ b/src/flint/flintlib/functions/gr_vec.pxd @@ -19,6 +19,9 @@ cdef extern from "flint/gr_vec.h": int _gr_vec_write(gr_stream_t out, gr_srcptr vec, slong len, gr_ctx_t ctx) int gr_vec_write(gr_stream_t out, const gr_vec_t vec, gr_ctx_t ctx) int gr_vec_print(const gr_vec_t vec, gr_ctx_t ctx) + int gr_vec_set_str(gr_vec_t vec, const char * s, int resize, gr_ctx_t ctx) + int gr_vec_str_count_entries(slong * count, const char * s, gr_ctx_t ctx) + int _gr_vec_set_str(gr_ptr res, const char * s, slong len, gr_ctx_t ctx) void _gr_vec_init(gr_ptr vec, slong len, gr_ctx_t ctx) void _gr_vec_clear(gr_ptr vec, slong len, gr_ctx_t ctx) void _gr_vec_swap(gr_ptr vec1, gr_ptr vec2, slong len, gr_ctx_t ctx) @@ -108,13 +111,16 @@ cdef extern from "flint/gr_vec.h": int _gr_vec_dot_si(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, const slong * vec2, slong len, gr_ctx_t ctx) 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_strided(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, slong stride1, gr_srcptr vec2, slong stride2, 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); + 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_permute_inv(gr_ptr vec, slong * perm, slong len, gr_ctx_t ctx) + int gr_vec_permute_inv(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) diff --git a/src/flint/flintlib/functions/nmod_mat.pxd b/src/flint/flintlib/functions/nmod_mat.pxd index 691b8d9a..7fb3e30c 100644 --- a/src/flint/flintlib/functions/nmod_mat.pxd +++ b/src/flint/flintlib/functions/nmod_mat.pxd @@ -87,13 +87,14 @@ cdef extern from "flint/nmod_mat.h": 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_lu_with_pivots(slong * P, slong * pivots_nonpivots, nmod_mat_t A) 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) slong nmod_mat_left_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) + int 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) diff --git a/src/flint/flintlib/functions/nmod_poly.pxd b/src/flint/flintlib/functions/nmod_poly.pxd index 79367449..6a8ed5be 100644 --- a/src/flint/flintlib/functions/nmod_poly.pxd +++ b/src/flint/flintlib/functions/nmod_poly.pxd @@ -111,7 +111,7 @@ cdef extern from "flint/nmod_poly.h": void _nmod_poly_mullow(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, slong n, nmod_t mod) void nmod_poly_mullow(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong trunc) void _nmod_poly_mulmid(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, slong nlo, slong nhi, nmod_t mod) - void nmod_poly_mulmid(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, slong nlo, slong nhi, nmod_t mod) + void nmod_poly_mulmid(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2, slong nlo, slong nhi) void _nmod_poly_mulmid_classical(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, slong nlo, slong nhi, nmod_t mod) void nmod_poly_mulmid_classical(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, slong nlo, slong nhi, nmod_t mod) void _nmod_poly_mulmid_KS(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, slong nlo, slong nhi, nmod_t mod) @@ -196,36 +196,40 @@ cdef extern from "flint/nmod_poly.h": void nmod_poly_integral(nmod_poly_t x_int, const nmod_poly_t x) ulong _nmod_poly_evaluate_nmod_precomp(nn_srcptr poly, slong len, ulong c, ulong c_precomp, ulong n) ulong _nmod_poly_evaluate_nmod_precomp_lazy(nn_srcptr poly, slong len, ulong c, ulong c_precomp, ulong n) + ulong _nmod_poly_evaluate_nmod_horner(nn_srcptr poly, slong len, ulong c, nmod_t mod) + ulong _nmod_poly_evaluate_nmod_rectangular(nn_srcptr poly, slong len, ulong c, nmod_t mod) ulong _nmod_poly_evaluate_nmod(nn_srcptr poly, slong len, ulong c, nmod_t mod) ulong nmod_poly_evaluate_nmod(const nmod_poly_t poly, ulong c) void nmod_poly_evaluate_mat_horner(nmod_mat_t dest, const nmod_poly_t poly, const nmod_mat_t c) void nmod_poly_evaluate_mat_paterson_stockmeyer(nmod_mat_t dest, const nmod_poly_t poly, const nmod_mat_t c) void nmod_poly_evaluate_mat(nmod_mat_t dest, const nmod_poly_t poly, const nmod_mat_t c) - void _nmod_poly_evaluate_nmod_vec_iter(nn_ptr ys, nn_srcptr poly, slong len, nn_srcptr xs, slong n, nmod_t mod) - void nmod_poly_evaluate_nmod_vec_iter(nn_ptr ys, const nmod_poly_t poly, nn_srcptr xs, slong n) - void _nmod_poly_evaluate_nmod_vec_fast_precomp(nn_ptr vs, nn_srcptr poly, slong plen, const nn_ptr * tree, slong len, nmod_t mod) - void _nmod_poly_evaluate_nmod_vec_fast(nn_ptr ys, nn_srcptr poly, slong len, nn_srcptr xs, slong n, nmod_t mod) - void nmod_poly_evaluate_nmod_vec_fast(nn_ptr ys, const nmod_poly_t poly, nn_srcptr xs, slong n) - void _nmod_poly_evaluate_nmod_vec(nn_ptr ys, nn_srcptr poly, slong len, nn_srcptr xs, slong n, nmod_t mod) - void nmod_poly_evaluate_nmod_vec(nn_ptr ys, const nmod_poly_t poly, nn_srcptr xs, slong n) - void _nmod_poly_evaluate_geometric_nmod_vec_iter(nn_ptr ys, nn_srcptr coeffs, slong len, ulong r, slong n, nmod_t mod) - void nmod_poly_evaluate_geometric_nmod_vec_iter(nn_ptr ys, const nmod_poly_t poly, ulong r, slong n) - # void _nmod_poly_evaluate_geometric_nmod_vec_fast_precomp(nn_ptr vs, nn_srcptr poly, slong plen, const nmod_geometric_progression_t G, slong len, nmod_t mod) - void _nmod_poly_evaluate_geometric_nmod_vec_fast(nn_ptr ys, nn_srcptr coeffs, slong len, ulong r, slong n, nmod_t mod) - void nmod_poly_evaluate_geometric_nmod_vec_fast(nn_ptr ys, const nmod_poly_t poly, ulong r, slong n) - void _nmod_poly_interpolate_nmod_vec(nn_ptr poly, nn_srcptr xs, nn_srcptr ys, slong n, nmod_t mod) - void nmod_poly_interpolate_nmod_vec(nmod_poly_t poly, nn_srcptr xs, nn_srcptr ys, slong n) + void _nmod_poly_evaluate_nmod_vec_iter(nn_ptr ys, nn_srcptr poly, slong ilen, nn_srcptr xs, slong olen, nmod_t mod) + void nmod_poly_evaluate_nmod_vec_iter(nn_ptr ys, const nmod_poly_t poly, nn_srcptr xs, slong olen) + void _nmod_poly_evaluate_nmod_vec_fast_precomp(nn_ptr vs, nn_srcptr poly, slong ilen, const nn_ptr * tree, slong olen, nmod_t mod) + void _nmod_poly_evaluate_nmod_vec_fast(nn_ptr ys, nn_srcptr poly, slong ilen, nn_srcptr xs, slong olen, nmod_t mod) + void nmod_poly_evaluate_nmod_vec_fast(nn_ptr ys, const nmod_poly_t poly, nn_srcptr xs, slong olen) + void _nmod_poly_evaluate_nmod_vec(nn_ptr ys, nn_srcptr poly, slong ilen, nn_srcptr xs, slong olen, nmod_t mod) + void nmod_poly_evaluate_nmod_vec(nn_ptr ys, const nmod_poly_t poly, nn_srcptr xs, slong olen) + void _nmod_poly_evaluate_geometric_nmod_vec_iter(nn_ptr ys, nn_srcptr coeffs, slong ilen, ulong r, slong olen, nmod_t mod) + void nmod_poly_evaluate_geometric_nmod_vec_iter(nn_ptr ys, const nmod_poly_t poly, ulong r, slong olen) + # void _nmod_poly_evaluate_geometric_nmod_vec_fast_precomp(nn_ptr vs, nn_srcptr poly, slong ilen, const nmod_geometric_progression_t G, slong olen, nmod_t mod) + void _nmod_poly_evaluate_geometric_nmod_vec_fast(nn_ptr ys, nn_srcptr coeffs, slong ilen, ulong r, slong olen, nmod_t mod) + void nmod_poly_evaluate_geometric_nmod_vec_fast(nn_ptr ys, const nmod_poly_t poly, ulong r, slong olen) + void _nmod_poly_interpolate_nmod_vec(nn_ptr poly, nn_srcptr xs, nn_srcptr ys, slong len, nmod_t mod) + void nmod_poly_interpolate_nmod_vec(nmod_poly_t poly, nn_srcptr xs, nn_srcptr ys, slong len) void _nmod_poly_interpolation_weights(nn_ptr w, const nn_ptr * tree, slong len, nmod_t mod) void _nmod_poly_interpolate_nmod_vec_fast_precomp(nn_ptr poly, nn_srcptr ys, const nn_ptr * tree, nn_srcptr weights, slong len, nmod_t mod) - void _nmod_poly_interpolate_nmod_vec_fast(nn_ptr poly, nn_srcptr xs, nn_srcptr ys, slong n, nmod_t mod) - void nmod_poly_interpolate_nmod_vec_fast(nmod_poly_t poly, nn_srcptr xs, nn_srcptr ys, slong n) - void _nmod_poly_interpolate_nmod_vec_newton(nn_ptr poly, nn_srcptr xs, nn_srcptr ys, slong n, nmod_t mod) - void nmod_poly_interpolate_nmod_vec_newton(nmod_poly_t poly, nn_srcptr xs, nn_srcptr ys, slong n) - void _nmod_poly_interpolate_nmod_vec_barycentric(nn_ptr poly, nn_srcptr xs, nn_srcptr ys, slong n, nmod_t mod) - void nmod_poly_interpolate_nmod_vec_barycentric(nmod_poly_t poly, nn_srcptr xs, nn_srcptr ys, slong n) + void _nmod_poly_interpolate_nmod_vec_fast(nn_ptr poly, nn_srcptr xs, nn_srcptr ys, slong len, nmod_t mod) + void nmod_poly_interpolate_nmod_vec_fast(nmod_poly_t poly, nn_srcptr xs, nn_srcptr ys, slong len) + void _nmod_poly_interpolate_nmod_vec_newton(nn_ptr poly, nn_srcptr xs, nn_srcptr ys, slong len, nmod_t mod) + void nmod_poly_interpolate_nmod_vec_newton(nmod_poly_t poly, nn_srcptr xs, nn_srcptr ys, slong len) + void _nmod_poly_interpolate_nmod_vec_barycentric(nn_ptr poly, nn_srcptr xs, nn_srcptr ys, slong len, nmod_t mod) + void nmod_poly_interpolate_nmod_vec_barycentric(nmod_poly_t poly, nn_srcptr xs, nn_srcptr ys, slong len) # void _nmod_poly_interpolate_geometric_nmod_vec_fast_precomp(nn_ptr poly, nn_srcptr v, const nmod_geometric_progression_t G, slong len, nmod_t mod) # void nmod_poly_interpolate_geometric_nmod_vec_fast_precomp(nmod_poly_t poly, nn_srcptr v, const nmod_geometric_progression_t G, slong len) - void nmod_poly_interpolate_geometric_nmod_vec_fast(nmod_poly_t poly, ulong r, nn_srcptr ys, slong n) + void nmod_poly_interpolate_geometric_nmod_vec_fast(nmod_poly_t poly, ulong r, nn_srcptr ys, slong len) + # void nmod_poly_extrapolate_geometric_precomp(nn_ptr oval, slong olen, nn_srcptr ival, slong ilen, slong offset, const nmod_geometric_progression_t G) + void nmod_poly_extrapolate_geometric(nn_ptr oval, slong olen, nn_srcptr ival, slong ilen, slong offset, ulong r, nmod_t mod) void _nmod_poly_compose_horner(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, nmod_t mod) void nmod_poly_compose_horner(nmod_poly_t res, const nmod_poly_t poly1, const nmod_poly_t poly2) void _nmod_poly_compose_divconquer(nn_ptr res, nn_srcptr poly1, slong len1, nn_srcptr poly2, slong len2, nmod_t mod) @@ -321,9 +325,9 @@ cdef extern from "flint/nmod_poly.h": void nmod_poly_asin_series(nmod_poly_t g, const nmod_poly_t h, slong n) void _nmod_poly_asinh_series(nn_ptr g, nn_srcptr h, slong hlen, slong n, nmod_t mod) void nmod_poly_asinh_series(nmod_poly_t g, const nmod_poly_t h, slong n) - void _nmod_poly_sin_series(nn_ptr g, nn_srcptr h, slong n, nmod_t mod) + void _nmod_poly_sin_series(nn_ptr g, nn_srcptr h, slong hlen, slong n, nmod_t mod) void nmod_poly_sin_series(nmod_poly_t g, const nmod_poly_t h, slong n) - void _nmod_poly_cos_series(nn_ptr g, nn_srcptr h, slong n, nmod_t mod) + void _nmod_poly_cos_series(nn_ptr g, nn_srcptr h, slong hlen, slong n, nmod_t mod) void nmod_poly_cos_series(nmod_poly_t g, const nmod_poly_t h, slong n) void _nmod_poly_tan_series(nn_ptr g, nn_srcptr h, slong hlen, slong n, nmod_t mod) void nmod_poly_tan_series(nmod_poly_t g, const nmod_poly_t h, slong n) @@ -331,7 +335,7 @@ cdef extern from "flint/nmod_poly.h": void nmod_poly_sinh_series(nmod_poly_t g, const nmod_poly_t h, slong n) void _nmod_poly_cosh_series(nn_ptr g, nn_srcptr h, slong n, nmod_t mod) void nmod_poly_cosh_series(nmod_poly_t g, const nmod_poly_t h, slong n) - void _nmod_poly_tanh_series(nn_ptr g, nn_srcptr h, slong n, nmod_t mod) + void _nmod_poly_tanh_series(nn_ptr g, nn_srcptr h, slong hlen, slong n, nmod_t mod) void nmod_poly_tanh_series(nmod_poly_t g, const nmod_poly_t h, slong n) int _nmod_poly_conway(nn_ptr op, ulong prime, slong deg) ulong _nmod_poly_conway_rand(slong * degree, flint_rand_t state, int type) @@ -341,6 +345,7 @@ cdef extern from "flint/nmod_poly.h": nn_ptr * _nmod_poly_tree_alloc(slong len) void _nmod_poly_tree_free(nn_ptr * tree, slong len) void _nmod_poly_tree_build(nn_ptr * tree, nn_srcptr roots, slong len, nmod_t mod) + # void _nmod_geometric_progression_init_function(nmod_geometric_progression_t G, ulong r, slong len, nmod_t mod, ulong function) # void nmod_geometric_progression_init(nmod_geometric_progression_t G, ulong r, slong len, nmod_t mod) # void nmod_geometric_progression_clear(nmod_geometric_progression_t G) void nmod_poly_inflate(nmod_poly_t result, const nmod_poly_t input, slong inflation) diff --git a/src/flint/flintlib/functions/nmod_vec.pxd b/src/flint/flintlib/functions/nmod_vec.pxd index 48d44518..b71d810b 100644 --- a/src/flint/flintlib/functions/nmod_vec.pxd +++ b/src/flint/flintlib/functions/nmod_vec.pxd @@ -35,6 +35,7 @@ cdef extern from "flint/nmod_vec.h": # dot_params_t _nmod_vec_dot_params(slong len, nmod_t mod) # ulong _nmod_vec_dot(nn_srcptr vec1, nn_srcptr vec2, slong len, nmod_t mod, dot_params_t params) # ulong _nmod_vec_dot_rev(nn_srcptr vec1, nn_srcptr vec2, slong len, nmod_t mod, dot_params_t params) + # ulong _nmod_vec_dot_strided(nn_srcptr vec1, slong stride1, nn_srcptr vec2, slong stride2, slong len, nmod_t mod, dot_params_t params) # ulong _nmod_vec_dot_ptr(nn_srcptr vec1, const nn_ptr * vec2, slong offset, slong len, nmod_t mod, dot_params_t params) int _nmod_vec_dot_bound_limbs(slong len, nmod_t mod) # int _nmod_vec_dot_bound_limbs_from_params(slong len, nmod_t mod, dot_params_t params) diff --git a/src/flint/flintlib/functions/ulong_extras.pxd b/src/flint/flintlib/functions/ulong_extras.pxd index cebd88dc..e860093f 100644 --- a/src/flint/flintlib/functions/ulong_extras.pxd +++ b/src/flint/flintlib/functions/ulong_extras.pxd @@ -137,6 +137,7 @@ cdef extern from "flint/ulong_extras.h": 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_quadratic_nonresidue(ulong n) # 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) diff --git a/src/flint/types/_gr.pxd b/src/flint/types/_gr.pxd index 70a589e1..8ead1bee 100644 --- a/src/flint/types/_gr.pxd +++ b/src/flint/types/_gr.pxd @@ -33,6 +33,7 @@ from flint.flintlib.functions.fmpq_poly cimport ( fmpq_poly_set, ) from flint.flintlib.functions.compat cimport ( + compat_gr_factor, compat_gr_ctx_init_gr_series, # compat_gr_ctx_init_series_mod_gr_poly, ) @@ -159,7 +160,6 @@ from flint.flintlib.functions.gr cimport ( gr_gcd, gr_lcm, - gr_factor, gr_floor, gr_ceil, @@ -782,7 +782,7 @@ cdef class gr_ctx(flint_ctx): c = self.new_gr() gr_vec_init(factors, 0, self.ctx_t) gr_vec_init(exponents, 0, gr_fmpz_ctx_c.ctx_t) - err = gr_factor(c.pval, factors, exponents, x.pval, flags, self.ctx_t) + err = compat_gr_factor(c.pval, factors, exponents, x.pval, flags, self.ctx_t) if err != GR_SUCCESS: raise self._error(err, "Failed to factor gr object") length = gr_vec_length(factors, self.ctx_t) @@ -1716,7 +1716,7 @@ cdef class gr(flint_scalar): c = self.ctx.new_gr() gr_vec_init(factors, 0, self.ctx.ctx_t) gr_vec_init(exponents, 0, gr_fmpz_ctx_c.ctx_t) - err = gr_factor(c.pval, factors, exponents, self.pval, flags, self.ctx.ctx_t) + err = compat_gr_factor(c.pval, factors, exponents, self.pval, flags, self.ctx.ctx_t) if err != GR_SUCCESS: raise self._error(err, "Failed to factor gr object") length = gr_vec_length(factors, self.ctx.ctx_t)