passagemath-flint 10.6.1rc10__cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- passagemath_flint-10.6.1rc10.dist-info/METADATA +122 -0
- passagemath_flint-10.6.1rc10.dist-info/RECORD +360 -0
- passagemath_flint-10.6.1rc10.dist-info/WHEEL +6 -0
- passagemath_flint-10.6.1rc10.dist-info/top_level.txt +2 -0
- passagemath_flint.libs/libflint-3701249d.so.21.0.0 +0 -0
- passagemath_flint.libs/libgf2x-fbd36f80.so.3.0.0 +0 -0
- passagemath_flint.libs/libgfortran-8a9a71bc.so.5.0.0 +0 -0
- passagemath_flint.libs/libgmp-93ebf16a.so.10.5.0 +0 -0
- passagemath_flint.libs/libgsl-e3525837.so.28.0.0 +0 -0
- passagemath_flint.libs/libmpfi-ad12a86d.so.0.0.0 +0 -0
- passagemath_flint.libs/libmpfr-e0f11cf3.so.6.2.1 +0 -0
- passagemath_flint.libs/libntl-1004113e.so.44.0.1 +0 -0
- passagemath_flint.libs/libopenblasp-r0-4c5b64b1.3.29.so +0 -0
- sage/all__sagemath_flint.py +29 -0
- sage/combinat/all__sagemath_flint.py +1 -0
- sage/combinat/posets/all__sagemath_flint.py +1 -0
- sage/combinat/posets/hasse_cython_flint.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/combinat/posets/hasse_cython_flint.pyx +194 -0
- sage/data_structures/all__sagemath_flint.py +1 -0
- sage/data_structures/bounded_integer_sequences.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/data_structures/bounded_integer_sequences.pxd +62 -0
- sage/data_structures/bounded_integer_sequences.pyx +1418 -0
- sage/graphs/all__sagemath_flint.py +1 -0
- sage/graphs/chrompoly.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/graphs/chrompoly.pyx +555 -0
- sage/graphs/matchpoly.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/graphs/matchpoly.pyx +412 -0
- sage/libs/all__sagemath_flint.py +17 -0
- sage/libs/arb/__init__.py +1 -0
- sage/libs/arb/acb.pxd +154 -0
- sage/libs/arb/acb_calc.pxd +9 -0
- sage/libs/arb/acb_elliptic.pxd +25 -0
- sage/libs/arb/acb_hypgeom.pxd +74 -0
- sage/libs/arb/acb_mat.pxd +62 -0
- sage/libs/arb/acb_modular.pxd +17 -0
- sage/libs/arb/acb_poly.pxd +216 -0
- sage/libs/arb/arb.pxd +240 -0
- sage/libs/arb/arb_fmpz_poly.pxd +21 -0
- sage/libs/arb/arb_hypgeom.pxd +83 -0
- sage/libs/arb/arb_wrap.h +34 -0
- sage/libs/arb/arf.pxd +131 -0
- sage/libs/arb/arith.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/libs/arb/arith.pyx +87 -0
- sage/libs/arb/bernoulli.pxd +6 -0
- sage/libs/arb/mag.pxd +77 -0
- sage/libs/arb/types.pxd +37 -0
- sage/libs/flint/__init__.py +1 -0
- sage/libs/flint/acb.pxd +270 -0
- sage/libs/flint/acb_calc.pxd +22 -0
- sage/libs/flint/acb_dft.pxd +51 -0
- sage/libs/flint/acb_dirichlet.pxd +112 -0
- sage/libs/flint/acb_elliptic.pxd +42 -0
- sage/libs/flint/acb_hypgeom.pxd +169 -0
- sage/libs/flint/acb_macros.pxd +9 -0
- sage/libs/flint/acb_mat.pxd +136 -0
- sage/libs/flint/acb_mat_macros.pxd +10 -0
- sage/libs/flint/acb_modular.pxd +62 -0
- sage/libs/flint/acb_poly.pxd +251 -0
- sage/libs/flint/acb_poly_macros.pxd +8 -0
- sage/libs/flint/acb_theta.pxd +124 -0
- sage/libs/flint/acf.pxd +32 -0
- sage/libs/flint/aprcl.pxd +84 -0
- sage/libs/flint/arb.pxd +382 -0
- sage/libs/flint/arb_calc.pxd +31 -0
- sage/libs/flint/arb_fmpz_poly.pxd +34 -0
- sage/libs/flint/arb_fpwrap.pxd +215 -0
- sage/libs/flint/arb_hypgeom.pxd +147 -0
- sage/libs/flint/arb_macros.pxd +9 -0
- sage/libs/flint/arb_mat.pxd +140 -0
- sage/libs/flint/arb_mat_macros.pxd +10 -0
- sage/libs/flint/arb_poly.pxd +237 -0
- sage/libs/flint/arf.pxd +167 -0
- sage/libs/flint/arith.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/libs/flint/arith.pxd +76 -0
- sage/libs/flint/arith.pyx +77 -0
- sage/libs/flint/arith_sage.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/libs/flint/arith_sage.pyx +308 -0
- sage/libs/flint/bernoulli.pxd +28 -0
- sage/libs/flint/bool_mat.pxd +52 -0
- sage/libs/flint/ca.pxd +203 -0
- sage/libs/flint/ca_ext.pxd +34 -0
- sage/libs/flint/ca_field.pxd +32 -0
- sage/libs/flint/ca_mat.pxd +117 -0
- sage/libs/flint/ca_poly.pxd +104 -0
- sage/libs/flint/ca_vec.pxd +46 -0
- sage/libs/flint/calcium.pxd +27 -0
- sage/libs/flint/d_mat.pxd +39 -0
- sage/libs/flint/d_vec.pxd +32 -0
- sage/libs/flint/dirichlet.pxd +57 -0
- sage/libs/flint/dlog.pxd +53 -0
- sage/libs/flint/double_extras.pxd +24 -0
- sage/libs/flint/double_interval.pxd +36 -0
- sage/libs/flint/fexpr.pxd +104 -0
- sage/libs/flint/fexpr_builtin.pxd +20 -0
- sage/libs/flint/fft.pxd +66 -0
- sage/libs/flint/flint.pxd +36 -0
- sage/libs/flint/flint_ntl_wrap.h +35 -0
- sage/libs/flint/flint_sage.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/libs/flint/flint_sage.pyx +163 -0
- sage/libs/flint/flint_wrap.h +190 -0
- sage/libs/flint/fmpq.pxd +137 -0
- sage/libs/flint/fmpq_mat.pxd +105 -0
- sage/libs/flint/fmpq_mat_macros.pxd +10 -0
- sage/libs/flint/fmpq_mpoly.pxd +165 -0
- sage/libs/flint/fmpq_mpoly_factor.pxd +30 -0
- sage/libs/flint/fmpq_poly.pxd +241 -0
- sage/libs/flint/fmpq_poly_macros.pxd +9 -0
- sage/libs/flint/fmpq_poly_sage.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/libs/flint/fmpq_poly_sage.pxd +31 -0
- sage/libs/flint/fmpq_poly_sage.pyx +48 -0
- sage/libs/flint/fmpq_vec.pxd +27 -0
- sage/libs/flint/fmpz.pxd +256 -0
- sage/libs/flint/fmpz_extras.pxd +32 -0
- sage/libs/flint/fmpz_factor.pxd +42 -0
- sage/libs/flint/fmpz_factor_sage.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/libs/flint/fmpz_factor_sage.pxd +4 -0
- sage/libs/flint/fmpz_factor_sage.pyx +29 -0
- sage/libs/flint/fmpz_lll.pxd +49 -0
- sage/libs/flint/fmpz_macros.pxd +8 -0
- sage/libs/flint/fmpz_mat.pxd +184 -0
- sage/libs/flint/fmpz_mat_macros.pxd +10 -0
- sage/libs/flint/fmpz_mod.pxd +46 -0
- sage/libs/flint/fmpz_mod_mat.pxd +71 -0
- sage/libs/flint/fmpz_mod_mpoly.pxd +161 -0
- sage/libs/flint/fmpz_mod_mpoly_factor.pxd +28 -0
- sage/libs/flint/fmpz_mod_poly.pxd +249 -0
- sage/libs/flint/fmpz_mod_poly_factor.pxd +46 -0
- sage/libs/flint/fmpz_mod_vec.pxd +27 -0
- sage/libs/flint/fmpz_mpoly.pxd +224 -0
- sage/libs/flint/fmpz_mpoly_factor.pxd +29 -0
- sage/libs/flint/fmpz_mpoly_q.pxd +57 -0
- sage/libs/flint/fmpz_poly.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/libs/flint/fmpz_poly.pxd +407 -0
- sage/libs/flint/fmpz_poly.pyx +19 -0
- sage/libs/flint/fmpz_poly_factor.pxd +33 -0
- sage/libs/flint/fmpz_poly_macros.pxd +8 -0
- sage/libs/flint/fmpz_poly_mat.pxd +71 -0
- sage/libs/flint/fmpz_poly_q.pxd +55 -0
- sage/libs/flint/fmpz_poly_sage.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/libs/flint/fmpz_poly_sage.pxd +20 -0
- sage/libs/flint/fmpz_poly_sage.pyx +500 -0
- sage/libs/flint/fmpz_vec.pxd +80 -0
- sage/libs/flint/fmpzi.pxd +52 -0
- sage/libs/flint/fq.pxd +97 -0
- sage/libs/flint/fq_default.pxd +84 -0
- sage/libs/flint/fq_default_mat.pxd +70 -0
- sage/libs/flint/fq_default_poly.pxd +97 -0
- sage/libs/flint/fq_default_poly_factor.pxd +39 -0
- sage/libs/flint/fq_embed.pxd +28 -0
- sage/libs/flint/fq_mat.pxd +83 -0
- sage/libs/flint/fq_nmod.pxd +95 -0
- sage/libs/flint/fq_nmod_embed.pxd +28 -0
- sage/libs/flint/fq_nmod_mat.pxd +83 -0
- sage/libs/flint/fq_nmod_mpoly.pxd +130 -0
- sage/libs/flint/fq_nmod_mpoly_factor.pxd +28 -0
- sage/libs/flint/fq_nmod_poly.pxd +202 -0
- sage/libs/flint/fq_nmod_poly_factor.pxd +47 -0
- sage/libs/flint/fq_nmod_vec.pxd +33 -0
- sage/libs/flint/fq_poly.pxd +204 -0
- sage/libs/flint/fq_poly_factor.pxd +47 -0
- sage/libs/flint/fq_vec.pxd +33 -0
- sage/libs/flint/fq_zech.pxd +99 -0
- sage/libs/flint/fq_zech_embed.pxd +28 -0
- sage/libs/flint/fq_zech_mat.pxd +78 -0
- sage/libs/flint/fq_zech_poly.pxd +198 -0
- sage/libs/flint/fq_zech_poly_factor.pxd +47 -0
- sage/libs/flint/fq_zech_vec.pxd +33 -0
- sage/libs/flint/gr.pxd +174 -0
- sage/libs/flint/gr_generic.pxd +215 -0
- sage/libs/flint/gr_mat.pxd +161 -0
- sage/libs/flint/gr_mpoly.pxd +68 -0
- sage/libs/flint/gr_poly.pxd +276 -0
- sage/libs/flint/gr_special.pxd +237 -0
- sage/libs/flint/gr_vec.pxd +120 -0
- sage/libs/flint/hypgeom.pxd +24 -0
- sage/libs/flint/long_extras.pxd +23 -0
- sage/libs/flint/mag.pxd +131 -0
- sage/libs/flint/mag_macros.pxd +8 -0
- sage/libs/flint/mpf_mat.pxd +36 -0
- sage/libs/flint/mpf_vec.pxd +34 -0
- sage/libs/flint/mpfr_mat.pxd +27 -0
- sage/libs/flint/mpfr_vec.pxd +25 -0
- sage/libs/flint/mpn_extras.pxd +41 -0
- sage/libs/flint/mpoly.pxd +72 -0
- sage/libs/flint/nf.pxd +19 -0
- sage/libs/flint/nf_elem.pxd +74 -0
- sage/libs/flint/nmod.pxd +35 -0
- sage/libs/flint/nmod_mat.pxd +104 -0
- sage/libs/flint/nmod_mpoly.pxd +144 -0
- sage/libs/flint/nmod_mpoly_factor.pxd +28 -0
- sage/libs/flint/nmod_poly.pxd +339 -0
- sage/libs/flint/nmod_poly_factor.pxd +44 -0
- sage/libs/flint/nmod_poly_linkage.pxi +710 -0
- sage/libs/flint/nmod_poly_mat.pxd +76 -0
- sage/libs/flint/nmod_vec.pxd +40 -0
- sage/libs/flint/ntl_interface.pxd +17 -0
- sage/libs/flint/padic.pxd +93 -0
- sage/libs/flint/padic_mat.pxd +64 -0
- sage/libs/flint/padic_poly.pxd +88 -0
- sage/libs/flint/partitions.pxd +23 -0
- sage/libs/flint/perm.pxd +26 -0
- sage/libs/flint/profiler.pxd +24 -0
- sage/libs/flint/qadic.pxd +77 -0
- sage/libs/flint/qfb.pxd +44 -0
- sage/libs/flint/qqbar.pxd +172 -0
- sage/libs/flint/qsieve.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/libs/flint/qsieve.pxd +41 -0
- sage/libs/flint/qsieve.pyx +21 -0
- sage/libs/flint/qsieve_sage.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/libs/flint/qsieve_sage.pyx +67 -0
- sage/libs/flint/thread_pool.pxd +25 -0
- sage/libs/flint/types.pxd +2076 -0
- sage/libs/flint/ulong_extras.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/libs/flint/ulong_extras.pxd +141 -0
- sage/libs/flint/ulong_extras.pyx +21 -0
- sage/libs/flint/ulong_extras_sage.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/libs/flint/ulong_extras_sage.pyx +21 -0
- sage/matrix/all__sagemath_flint.py +1 -0
- sage/matrix/change_ring.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/matrix/change_ring.pyx +43 -0
- sage/matrix/matrix_complex_ball_dense.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/matrix/matrix_complex_ball_dense.pxd +14 -0
- sage/matrix/matrix_complex_ball_dense.pyx +973 -0
- sage/matrix/matrix_cyclo_dense.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/matrix/matrix_cyclo_dense.pxd +16 -0
- sage/matrix/matrix_cyclo_dense.pyx +1761 -0
- sage/matrix/matrix_integer_dense.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/matrix/matrix_integer_dense.pxd +32 -0
- sage/matrix/matrix_integer_dense.pyx +5801 -0
- sage/matrix/matrix_integer_dense_hnf.py +1294 -0
- sage/matrix/matrix_integer_dense_saturation.py +346 -0
- sage/matrix/matrix_integer_sparse.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/matrix/matrix_integer_sparse.pxd +9 -0
- sage/matrix/matrix_integer_sparse.pyx +1090 -0
- sage/matrix/matrix_rational_dense.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/matrix/matrix_rational_dense.pxd +23 -0
- sage/matrix/matrix_rational_dense.pyx +2995 -0
- sage/matrix/matrix_rational_sparse.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/matrix/matrix_rational_sparse.pxd +11 -0
- sage/matrix/matrix_rational_sparse.pyx +789 -0
- sage/matrix/misc_flint.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/matrix/misc_flint.pyx +109 -0
- sage/modular/all__sagemath_flint.py +1 -0
- sage/modular/modform/all__sagemath_flint.py +1 -0
- sage/modular/modform/eis_series_cython.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/modular/modform/eis_series_cython.pyx +226 -0
- sage/modular/modsym/all__sagemath_flint.py +1 -0
- sage/modular/modsym/apply.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/modular/modsym/apply.pxd +6 -0
- sage/modular/modsym/apply.pyx +113 -0
- sage/modular/modsym/heilbronn.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/modular/modsym/heilbronn.pyx +966 -0
- sage/modular/pollack_stevens/all__sagemath_flint.py +1 -0
- sage/modular/pollack_stevens/dist.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/modular/pollack_stevens/dist.pxd +38 -0
- sage/modular/pollack_stevens/dist.pyx +1439 -0
- sage/quivers/algebra.py +691 -0
- sage/quivers/algebra_elements.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/quivers/algebra_elements.pxd +97 -0
- sage/quivers/algebra_elements.pxi +1324 -0
- sage/quivers/algebra_elements.pyx +1424 -0
- sage/quivers/all.py +1 -0
- sage/quivers/ar_quiver.py +917 -0
- sage/quivers/homspace.py +640 -0
- sage/quivers/morphism.py +1282 -0
- sage/quivers/path_semigroup.py +1155 -0
- sage/quivers/paths.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/quivers/paths.pxd +13 -0
- sage/quivers/paths.pyx +809 -0
- sage/quivers/representation.py +2975 -0
- sage/rings/all__sagemath_flint.py +37 -0
- sage/rings/cif.py +4 -0
- sage/rings/complex_arb.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/complex_arb.pxd +29 -0
- sage/rings/complex_arb.pyx +5176 -0
- sage/rings/complex_interval.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/complex_interval.pxd +30 -0
- sage/rings/complex_interval.pyx +2475 -0
- sage/rings/complex_interval_field.py +711 -0
- sage/rings/convert/all.py +1 -0
- sage/rings/convert/mpfi.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/convert/mpfi.pxd +6 -0
- sage/rings/convert/mpfi.pyx +576 -0
- sage/rings/factorint_flint.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/factorint_flint.pyx +99 -0
- sage/rings/fraction_field_FpT.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/fraction_field_FpT.pxd +28 -0
- sage/rings/fraction_field_FpT.pyx +2043 -0
- sage/rings/imaginary_unit.py +5 -0
- sage/rings/monomials.py +73 -0
- sage/rings/number_field/S_unit_solver.py +2870 -0
- sage/rings/number_field/all__sagemath_flint.py +7 -0
- sage/rings/number_field/bdd_height.py +664 -0
- sage/rings/number_field/class_group.py +762 -0
- sage/rings/number_field/galois_group.py +1307 -0
- sage/rings/number_field/homset.py +612 -0
- sage/rings/number_field/maps.py +687 -0
- sage/rings/number_field/morphism.py +272 -0
- sage/rings/number_field/number_field.py +12820 -0
- sage/rings/number_field/number_field_element.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/number_field/number_field_element.pxd +59 -0
- sage/rings/number_field/number_field_element.pyx +5735 -0
- sage/rings/number_field/number_field_element_quadratic.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/number_field/number_field_element_quadratic.pxd +34 -0
- sage/rings/number_field/number_field_element_quadratic.pyx +3185 -0
- sage/rings/number_field/number_field_ideal_rel.py +925 -0
- sage/rings/number_field/number_field_morphisms.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/number_field/number_field_morphisms.pyx +781 -0
- sage/rings/number_field/number_field_rel.py +2734 -0
- sage/rings/number_field/order.py +2981 -0
- sage/rings/number_field/order_ideal.py +804 -0
- sage/rings/number_field/selmer_group.py +715 -0
- sage/rings/number_field/small_primes_of_degree_one.py +242 -0
- sage/rings/number_field/splitting_field.py +606 -0
- sage/rings/number_field/structure.py +380 -0
- sage/rings/number_field/unit_group.py +721 -0
- sage/rings/padics/all__sagemath_flint.py +3 -0
- sage/rings/polynomial/all__sagemath_flint.py +1 -0
- sage/rings/polynomial/complex_roots.py +312 -0
- sage/rings/polynomial/evaluation_flint.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/polynomial/evaluation_flint.pxd +7 -0
- sage/rings/polynomial/evaluation_flint.pyx +68 -0
- sage/rings/polynomial/hilbert.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/polynomial/hilbert.pyx +602 -0
- sage/rings/polynomial/polynomial_complex_arb.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/polynomial/polynomial_complex_arb.pxd +7 -0
- sage/rings/polynomial/polynomial_complex_arb.pyx +963 -0
- sage/rings/polynomial/polynomial_integer_dense_flint.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/polynomial/polynomial_integer_dense_flint.pxd +13 -0
- sage/rings/polynomial/polynomial_integer_dense_flint.pyx +1881 -0
- sage/rings/polynomial/polynomial_number_field.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/polynomial/polynomial_number_field.pyx +345 -0
- sage/rings/polynomial/polynomial_rational_flint.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/polynomial/polynomial_rational_flint.pxd +20 -0
- sage/rings/polynomial/polynomial_rational_flint.pyx +2598 -0
- sage/rings/polynomial/polynomial_zmod_flint.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/polynomial/polynomial_zmod_flint.pxd +20 -0
- sage/rings/polynomial/polynomial_zmod_flint.pyx +1063 -0
- sage/rings/polynomial/real_roots.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/polynomial/real_roots.pxd +81 -0
- sage/rings/polynomial/real_roots.pyx +4704 -0
- sage/rings/polynomial/refine_root.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/polynomial/refine_root.pyx +142 -0
- sage/rings/polynomial/weil/all.py +4 -0
- sage/rings/polynomial/weil/power_sums.h +46 -0
- sage/rings/polynomial/weil/weil_polynomials.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/polynomial/weil/weil_polynomials.pyx +596 -0
- sage/rings/qqbar.py +9025 -0
- sage/rings/real_arb.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/real_arb.pxd +21 -0
- sage/rings/real_arb.pyx +4065 -0
- sage/rings/real_interval_absolute.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/real_interval_absolute.pyx +1073 -0
- sage/rings/real_mpfi.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/rings/real_mpfi.pyx +5428 -0
- sage/schemes/all__sagemath_flint.py +1 -0
- sage/schemes/elliptic_curves/all__sagemath_flint.py +1 -0
- sage/schemes/elliptic_curves/descent_two_isogeny.cpython-313-aarch64-linux-gnu.so +0 -0
- sage/schemes/elliptic_curves/descent_two_isogeny.pyx +1387 -0
- sage/schemes/elliptic_curves/descent_two_isogeny_pari.pxd +5 -0
@@ -0,0 +1,500 @@
|
|
1
|
+
# sage_setup: distribution = sagemath-flint
|
2
|
+
# distutils: extra_compile_args = -D_XPG6
|
3
|
+
"""
|
4
|
+
FLINT fmpz_poly class wrapper
|
5
|
+
|
6
|
+
AUTHORS:
|
7
|
+
|
8
|
+
- Robert Bradshaw (2007-09-15) Initial version.
|
9
|
+
- William Stein (2007-10-02) update for new flint; add arithmetic and creation
|
10
|
+
of coefficients of arbitrary size.
|
11
|
+
"""
|
12
|
+
|
13
|
+
#*****************************************************************************
|
14
|
+
# Copyright (C) 2007 Robert Bradshaw <robertwb@math.washington.edu>
|
15
|
+
#
|
16
|
+
# This program is free software: you can redistribute it and/or modify
|
17
|
+
# it under the terms of the GNU General Public License as published by
|
18
|
+
# the Free Software Foundation, either version 2 of the License, or
|
19
|
+
# (at your option) any later version.
|
20
|
+
# http://www.gnu.org/licenses/
|
21
|
+
#*****************************************************************************
|
22
|
+
|
23
|
+
from cpython.sequence cimport *
|
24
|
+
|
25
|
+
from cysignals.memory cimport sig_free
|
26
|
+
|
27
|
+
from sage.arith.long cimport pyobject_to_long
|
28
|
+
from sage.cpython.string cimport char_to_str, str_to_bytes
|
29
|
+
from sage.libs.flint.fmpz cimport *
|
30
|
+
from sage.libs.flint.fmpz_poly cimport *
|
31
|
+
from sage.structure.sage_object cimport SageObject
|
32
|
+
from sage.rings.integer cimport Integer
|
33
|
+
|
34
|
+
cdef class Fmpz_poly(SageObject):
|
35
|
+
|
36
|
+
def __cinit__(self):
|
37
|
+
fmpz_poly_init(self.poly)
|
38
|
+
|
39
|
+
def __init__(self, v):
|
40
|
+
"""
|
41
|
+
Construct a new fmpz_poly from a sequence, constant coefficient,
|
42
|
+
or string (in the same format as it prints).
|
43
|
+
|
44
|
+
EXAMPLES::
|
45
|
+
|
46
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
47
|
+
sage: Fmpz_poly([1,2,3])
|
48
|
+
3 1 2 3
|
49
|
+
sage: Fmpz_poly(5)
|
50
|
+
1 5
|
51
|
+
sage: Fmpz_poly(str(Fmpz_poly([3,5,7])))
|
52
|
+
3 3 5 7
|
53
|
+
"""
|
54
|
+
cdef Py_ssize_t i
|
55
|
+
cdef long c
|
56
|
+
cdef Integer w
|
57
|
+
if isinstance(v, str):
|
58
|
+
if not fmpz_poly_set_str(self.poly, str_to_bytes(v)):
|
59
|
+
return
|
60
|
+
else:
|
61
|
+
raise ValueError("Unable to create Fmpz_poly from that string.")
|
62
|
+
if not PySequence_Check(v):
|
63
|
+
v = [v]
|
64
|
+
try:
|
65
|
+
fmpz_poly_set_coeff_si(self.poly, 0, 1)
|
66
|
+
fmpz_poly_set_coeff_si(self.poly, 0, 0)
|
67
|
+
for i from 0 <= i < len(v):
|
68
|
+
#fmpz_poly_set_coeff_si(self.poly, i, v[i])
|
69
|
+
w = Integer(v[i])
|
70
|
+
fmpz_poly_set_coeff_mpz(self.poly, i, w.value)
|
71
|
+
except OverflowError:
|
72
|
+
raise ValueError("No fmpz_poly_set_coeff_mpz() method.")
|
73
|
+
|
74
|
+
def __dealloc__(self):
|
75
|
+
fmpz_poly_clear(self.poly)
|
76
|
+
|
77
|
+
def __setitem__(self, i, value):
|
78
|
+
"""
|
79
|
+
Set the `i`-th item of self, which is the coefficient of the `x^i` term.
|
80
|
+
|
81
|
+
EXAMPLES::
|
82
|
+
|
83
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
84
|
+
sage: f = Fmpz_poly(range(10))
|
85
|
+
sage: f[7] = 100; f
|
86
|
+
10 0 1 2 3 4 5 6 100 8 9
|
87
|
+
sage: f[2] = 10**100000
|
88
|
+
sage: f[2] == 10**100000
|
89
|
+
True
|
90
|
+
"""
|
91
|
+
if isinstance(value, Integer):
|
92
|
+
fmpz_poly_set_coeff_mpz(self.poly, i, (<Integer>value).value)
|
93
|
+
else:
|
94
|
+
fmpz_poly_set_coeff_si(self.poly, i, value)
|
95
|
+
|
96
|
+
def __getitem__(self, i):
|
97
|
+
"""
|
98
|
+
Return the `i`-th item of self, which is the coefficient of the `x^i` term.
|
99
|
+
|
100
|
+
EXAMPLES::
|
101
|
+
|
102
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
103
|
+
sage: f = Fmpz_poly(range(100))
|
104
|
+
sage: f[13]
|
105
|
+
13
|
106
|
+
sage: f[200]
|
107
|
+
0
|
108
|
+
"""
|
109
|
+
cdef Integer res = Integer.__new__(Integer)
|
110
|
+
fmpz_poly_get_coeff_mpz(res.value, self.poly, i)
|
111
|
+
return res
|
112
|
+
|
113
|
+
def __repr__(self):
|
114
|
+
"""
|
115
|
+
Print ``self`` according to the native FLINT format.
|
116
|
+
|
117
|
+
EXAMPLES::
|
118
|
+
|
119
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
120
|
+
sage: f = Fmpz_poly([0,1]); f^7
|
121
|
+
8 0 0 0 0 0 0 0 1
|
122
|
+
"""
|
123
|
+
cdef char* ss = fmpz_poly_get_str(self.poly)
|
124
|
+
cdef object s = char_to_str(ss)
|
125
|
+
sig_free(ss)
|
126
|
+
return s
|
127
|
+
|
128
|
+
def degree(self):
|
129
|
+
"""
|
130
|
+
The degree of ``self``.
|
131
|
+
|
132
|
+
EXAMPLES::
|
133
|
+
|
134
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
135
|
+
sage: f = Fmpz_poly([1,2,3]); f
|
136
|
+
3 1 2 3
|
137
|
+
sage: f.degree()
|
138
|
+
2
|
139
|
+
sage: Fmpz_poly(range(1000)).degree()
|
140
|
+
999
|
141
|
+
sage: Fmpz_poly([2,0]).degree()
|
142
|
+
0
|
143
|
+
"""
|
144
|
+
return fmpz_poly_degree(self.poly)
|
145
|
+
|
146
|
+
def list(self):
|
147
|
+
"""
|
148
|
+
Return ``self`` as a list of coefficients, lowest terms first.
|
149
|
+
|
150
|
+
EXAMPLES::
|
151
|
+
|
152
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
153
|
+
sage: f = Fmpz_poly([2,1,0,-1])
|
154
|
+
sage: f.list()
|
155
|
+
[2, 1, 0, -1]
|
156
|
+
"""
|
157
|
+
return [self[i] for i in range(self.degree() + 1)]
|
158
|
+
|
159
|
+
def __add__(left, right):
|
160
|
+
"""
|
161
|
+
Add together two Flint polynomials.
|
162
|
+
|
163
|
+
EXAMPLES::
|
164
|
+
|
165
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
166
|
+
sage: Fmpz_poly([1,2,3]) + Fmpz_poly(range(6))
|
167
|
+
6 1 3 5 3 4 5
|
168
|
+
"""
|
169
|
+
if not isinstance(left, Fmpz_poly) or not isinstance(right, Fmpz_poly):
|
170
|
+
raise TypeError
|
171
|
+
cdef Fmpz_poly res = <Fmpz_poly>Fmpz_poly.__new__(Fmpz_poly)
|
172
|
+
fmpz_poly_add(res.poly, (<Fmpz_poly>left).poly, (<Fmpz_poly>right).poly)
|
173
|
+
return res
|
174
|
+
|
175
|
+
def __sub__(left, right):
|
176
|
+
"""
|
177
|
+
Subtract two Flint polynomials.
|
178
|
+
|
179
|
+
EXAMPLES::
|
180
|
+
|
181
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
182
|
+
sage: Fmpz_poly([10,2,3]) - Fmpz_poly([4,-2,1])
|
183
|
+
3 6 4 2
|
184
|
+
"""
|
185
|
+
if not isinstance(left, Fmpz_poly) or not isinstance(right, Fmpz_poly):
|
186
|
+
raise TypeError
|
187
|
+
cdef Fmpz_poly res = <Fmpz_poly>Fmpz_poly.__new__(Fmpz_poly)
|
188
|
+
fmpz_poly_sub(res.poly, (<Fmpz_poly>left).poly, (<Fmpz_poly>right).poly)
|
189
|
+
return res
|
190
|
+
|
191
|
+
def __neg__(self):
|
192
|
+
"""
|
193
|
+
Return the negative of ``self``.
|
194
|
+
|
195
|
+
EXAMPLES::
|
196
|
+
|
197
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
198
|
+
sage: -Fmpz_poly([2,10,2,3,18,-5])
|
199
|
+
6 -2 -10 -2 -3 -18 5
|
200
|
+
"""
|
201
|
+
cdef Fmpz_poly res = <Fmpz_poly>Fmpz_poly.__new__(Fmpz_poly)
|
202
|
+
fmpz_poly_neg(res.poly, self.poly)
|
203
|
+
return res
|
204
|
+
|
205
|
+
def __mul__(left, right):
|
206
|
+
"""
|
207
|
+
Return the product of left and right.
|
208
|
+
|
209
|
+
EXAMPLES::
|
210
|
+
|
211
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
212
|
+
sage: f = Fmpz_poly([0,1]); g = Fmpz_poly([2,3,4])
|
213
|
+
sage: f*g
|
214
|
+
4 0 2 3 4
|
215
|
+
sage: f = Fmpz_poly([1,0,-1]); g = Fmpz_poly([2,3,4])
|
216
|
+
sage: f*g
|
217
|
+
5 2 3 2 -3 -4
|
218
|
+
|
219
|
+
Scalar multiplication
|
220
|
+
sage: f * 3
|
221
|
+
3 3 0 -3
|
222
|
+
sage: f * 5r
|
223
|
+
3 5 0 -5
|
224
|
+
"""
|
225
|
+
cdef Fmpz_poly res = <Fmpz_poly>Fmpz_poly.__new__(Fmpz_poly)
|
226
|
+
if not isinstance(left, Fmpz_poly) or not isinstance(right, Fmpz_poly):
|
227
|
+
if isinstance(left, int):
|
228
|
+
fmpz_poly_scalar_mul_si(res.poly, (<Fmpz_poly>right).poly, left)
|
229
|
+
elif isinstance(left, Integer):
|
230
|
+
fmpz_poly_scalar_mul_mpz(res.poly, (<Fmpz_poly>right).poly, (<Integer>left).value)
|
231
|
+
elif isinstance(right, int):
|
232
|
+
fmpz_poly_scalar_mul_si(res.poly, (<Fmpz_poly>left).poly, right)
|
233
|
+
elif isinstance(right, Integer):
|
234
|
+
fmpz_poly_scalar_mul_mpz(res.poly, (<Fmpz_poly>left).poly, (<Integer>right).value)
|
235
|
+
else:
|
236
|
+
raise TypeError
|
237
|
+
else:
|
238
|
+
fmpz_poly_mul(res.poly, (<Fmpz_poly>left).poly, (<Fmpz_poly>right).poly)
|
239
|
+
return res
|
240
|
+
|
241
|
+
def __pow__(self, n, dummy):
|
242
|
+
"""
|
243
|
+
Return ``self`` raised to the power of `n`.
|
244
|
+
|
245
|
+
EXAMPLES::
|
246
|
+
|
247
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
248
|
+
sage: f = Fmpz_poly([1,1])
|
249
|
+
sage: f**6
|
250
|
+
7 1 6 15 20 15 6 1
|
251
|
+
sage: f = Fmpz_poly([2])
|
252
|
+
sage: f^150
|
253
|
+
1 1427247692705959881058285969449495136382746624
|
254
|
+
sage: 2^150
|
255
|
+
1427247692705959881058285969449495136382746624
|
256
|
+
|
257
|
+
sage: f**(3/2)
|
258
|
+
Traceback (most recent call last):
|
259
|
+
...
|
260
|
+
TypeError: unable to convert rational 3/2 to an integer
|
261
|
+
"""
|
262
|
+
cdef long nn = pyobject_to_long(n)
|
263
|
+
if not isinstance(self, Fmpz_poly):
|
264
|
+
raise TypeError
|
265
|
+
cdef Fmpz_poly res = <Fmpz_poly>Fmpz_poly.__new__(Fmpz_poly)
|
266
|
+
fmpz_poly_pow(res.poly, (<Fmpz_poly>self).poly, nn)
|
267
|
+
return res
|
268
|
+
|
269
|
+
def pow_truncate(self, exp, n):
|
270
|
+
"""
|
271
|
+
Return ``self`` raised to the power of ``exp`` mod `x^n`.
|
272
|
+
|
273
|
+
EXAMPLES::
|
274
|
+
|
275
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
276
|
+
sage: f = Fmpz_poly([1,2])
|
277
|
+
sage: f.pow_truncate(10,3)
|
278
|
+
3 1 20 180
|
279
|
+
sage: f.pow_truncate(1000,3)
|
280
|
+
3 1 2000 1998000
|
281
|
+
"""
|
282
|
+
if exp < 0:
|
283
|
+
raise ValueError("Exponent must be at least 0")
|
284
|
+
if n < 0:
|
285
|
+
raise ValueError("Exponent must be at least 0")
|
286
|
+
cdef long exp_c = exp, nn = n
|
287
|
+
cdef Fmpz_poly res = <Fmpz_poly>Fmpz_poly.__new__(Fmpz_poly)
|
288
|
+
fmpz_poly_pow_trunc(res.poly, (<Fmpz_poly>self).poly, exp_c, nn)
|
289
|
+
return res
|
290
|
+
|
291
|
+
def __floordiv__(left, right):
|
292
|
+
"""
|
293
|
+
Return left // right, truncated.
|
294
|
+
|
295
|
+
EXAMPLES::
|
296
|
+
|
297
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
298
|
+
sage: f = Fmpz_poly([3,4,5])
|
299
|
+
sage: g = f^5; g
|
300
|
+
11 243 1620 6345 16560 32190 47224 53650 46000 29375 12500 3125
|
301
|
+
sage: g // f
|
302
|
+
9 81 432 1404 2928 4486 4880 3900 2000 625
|
303
|
+
sage: f^4
|
304
|
+
9 81 432 1404 2928 4486 4880 3900 2000 625
|
305
|
+
"""
|
306
|
+
if not isinstance(left, Fmpz_poly) or not isinstance(right, Fmpz_poly):
|
307
|
+
raise TypeError
|
308
|
+
cdef Fmpz_poly res = <Fmpz_poly>Fmpz_poly.__new__(Fmpz_poly)
|
309
|
+
fmpz_poly_div(res.poly, (<Fmpz_poly>left).poly, (<Fmpz_poly>right).poly)
|
310
|
+
return res
|
311
|
+
|
312
|
+
def div_rem(self, Fmpz_poly other):
|
313
|
+
"""
|
314
|
+
Return ``self / other, self % other``.
|
315
|
+
|
316
|
+
EXAMPLES::
|
317
|
+
|
318
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
319
|
+
sage: f = Fmpz_poly([1,3,4,5])
|
320
|
+
sage: g = f^23
|
321
|
+
sage: g.div_rem(f)[1]
|
322
|
+
0
|
323
|
+
sage: g.div_rem(f)[0] - f^22
|
324
|
+
0
|
325
|
+
sage: f = Fmpz_poly([1..10])
|
326
|
+
sage: g = Fmpz_poly([1,3,5])
|
327
|
+
sage: q, r = f.div_rem(g)
|
328
|
+
sage: q*f+r
|
329
|
+
17 1 2 3 4 4 4 10 11 17 18 22 26 30 23 26 18 20
|
330
|
+
sage: g
|
331
|
+
3 1 3 5
|
332
|
+
sage: q*g+r
|
333
|
+
10 1 2 3 4 5 6 7 8 9 10
|
334
|
+
"""
|
335
|
+
cdef Fmpz_poly Q = <Fmpz_poly>Fmpz_poly.__new__(Fmpz_poly)
|
336
|
+
cdef Fmpz_poly R = <Fmpz_poly>Fmpz_poly.__new__(Fmpz_poly)
|
337
|
+
fmpz_poly_divrem(Q.poly, R.poly, self.poly, other.poly)
|
338
|
+
return Q, R
|
339
|
+
|
340
|
+
def left_shift(self, unsigned long n):
|
341
|
+
"""
|
342
|
+
Left shift ``self`` by `n`.
|
343
|
+
|
344
|
+
EXAMPLES::
|
345
|
+
|
346
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
347
|
+
sage: f = Fmpz_poly([1,2])
|
348
|
+
sage: f.left_shift(1).list() == [0,1,2]
|
349
|
+
True
|
350
|
+
"""
|
351
|
+
cdef Fmpz_poly res = <Fmpz_poly>Fmpz_poly.__new__(Fmpz_poly)
|
352
|
+
|
353
|
+
fmpz_poly_shift_left(res.poly, self.poly, n)
|
354
|
+
|
355
|
+
return res
|
356
|
+
|
357
|
+
def right_shift(self, unsigned long n):
|
358
|
+
"""
|
359
|
+
Right shift ``self`` by `n`.
|
360
|
+
|
361
|
+
EXAMPLES::
|
362
|
+
|
363
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
364
|
+
sage: f = Fmpz_poly([1,2])
|
365
|
+
sage: f.right_shift(1).list() == [2]
|
366
|
+
True
|
367
|
+
"""
|
368
|
+
cdef Fmpz_poly res = <Fmpz_poly>Fmpz_poly.__new__(Fmpz_poly)
|
369
|
+
|
370
|
+
fmpz_poly_shift_right(res.poly, self.poly, n)
|
371
|
+
|
372
|
+
return res
|
373
|
+
|
374
|
+
def pseudo_div(self, Fmpz_poly other):
|
375
|
+
cdef ulong d
|
376
|
+
cdef Fmpz_poly Q = <Fmpz_poly>Fmpz_poly.__new__(Fmpz_poly)
|
377
|
+
fmpz_poly_pseudo_div(Q.poly, &d, self.poly, other.poly)
|
378
|
+
return Q, d
|
379
|
+
|
380
|
+
def pseudo_div_rem(self, Fmpz_poly other):
|
381
|
+
cdef ulong d
|
382
|
+
cdef Fmpz_poly Q = <Fmpz_poly>Fmpz_poly.__new__(Fmpz_poly)
|
383
|
+
cdef Fmpz_poly R = <Fmpz_poly>Fmpz_poly.__new__(Fmpz_poly)
|
384
|
+
fmpz_poly_pseudo_divrem(Q.poly, R.poly, &d, self.poly, other.poly)
|
385
|
+
return Q, R, d
|
386
|
+
|
387
|
+
def derivative(self):
|
388
|
+
"""
|
389
|
+
Return the derivative of ``self``.
|
390
|
+
|
391
|
+
EXAMPLES::
|
392
|
+
|
393
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
394
|
+
sage: f = Fmpz_poly([1,2,6])
|
395
|
+
sage: f.derivative().list() == [2, 12]
|
396
|
+
True
|
397
|
+
"""
|
398
|
+
cdef Fmpz_poly res = <Fmpz_poly>Fmpz_poly.__new__(Fmpz_poly)
|
399
|
+
|
400
|
+
fmpz_poly_derivative(res.poly, self.poly)
|
401
|
+
|
402
|
+
return res
|
403
|
+
|
404
|
+
def __copy__(self):
|
405
|
+
cdef Fmpz_poly res = <Fmpz_poly>Fmpz_poly.__new__(Fmpz_poly)
|
406
|
+
fmpz_poly_set(res.poly, self.poly)
|
407
|
+
return res
|
408
|
+
|
409
|
+
def truncate(self, n):
|
410
|
+
"""
|
411
|
+
Return the truncation of ``self`` at degree `n`.
|
412
|
+
|
413
|
+
EXAMPLES::
|
414
|
+
|
415
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
416
|
+
sage: f = Fmpz_poly([1,1])
|
417
|
+
sage: g = f**10; g
|
418
|
+
11 1 10 45 120 210 252 210 120 45 10 1
|
419
|
+
sage: g.truncate(5)
|
420
|
+
5 1 10 45 120 210
|
421
|
+
"""
|
422
|
+
cdef Fmpz_poly g = self.__copy__()
|
423
|
+
fmpz_poly_truncate(g.poly, n)
|
424
|
+
return g
|
425
|
+
|
426
|
+
def _unsafe_mutate_truncate(self, n):
|
427
|
+
"""
|
428
|
+
Return the truncation of ``self`` at degree `n`.
|
429
|
+
|
430
|
+
Don't do this unless you know there are no other references to
|
431
|
+
this polynomial!!!!!
|
432
|
+
|
433
|
+
EXAMPLES::
|
434
|
+
|
435
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
436
|
+
sage: f = Fmpz_poly([1,1])
|
437
|
+
sage: g = f**10; g
|
438
|
+
11 1 10 45 120 210 252 210 120 45 10 1
|
439
|
+
sage: g._unsafe_mutate_truncate(5); g
|
440
|
+
5 1 10 45 120 210
|
441
|
+
"""
|
442
|
+
cdef long nn = n
|
443
|
+
fmpz_poly_truncate(self.poly, nn) # mutating!
|
444
|
+
|
445
|
+
def _sage_(self, var='x'):
|
446
|
+
"""
|
447
|
+
Return ``self`` as an element of the sage ``ZZ[var]``.
|
448
|
+
|
449
|
+
EXAMPLES::
|
450
|
+
|
451
|
+
sage: from sage.libs.flint.fmpz_poly_sage import Fmpz_poly
|
452
|
+
sage: f = Fmpz_poly([1,1])
|
453
|
+
sage: f._sage_('t')
|
454
|
+
t + 1
|
455
|
+
sage: Fmpz_poly([-1,0,0,1])._sage_()
|
456
|
+
x^3 - 1
|
457
|
+
"""
|
458
|
+
from sage.rings.integer_ring import ZZ
|
459
|
+
return ZZ[var](self.list())
|
460
|
+
|
461
|
+
|
462
|
+
# Functions removed from flint but still needed in Sage. Code adapted from
|
463
|
+
# earlier versions of flint.
|
464
|
+
|
465
|
+
cdef void fmpz_poly_scalar_mul_mpz(fmpz_poly_t rop, const fmpz_poly_t op, const mpz_t c) noexcept:
|
466
|
+
cdef fmpz_t f
|
467
|
+
fmpz_init_set_readonly(f, c)
|
468
|
+
fmpz_poly_scalar_mul_fmpz(rop, op, f)
|
469
|
+
fmpz_clear_readonly(f)
|
470
|
+
|
471
|
+
cdef void fmpz_poly_scalar_divexact_mpz(fmpz_poly_t rop, const fmpz_poly_t op, const mpz_t c) noexcept:
|
472
|
+
cdef fmpz_t f
|
473
|
+
fmpz_init_set_readonly(f, c)
|
474
|
+
fmpz_poly_scalar_divexact_fmpz(rop, op, f)
|
475
|
+
fmpz_clear_readonly(f)
|
476
|
+
|
477
|
+
cdef void fmpz_poly_scalar_fdiv_mpz(fmpz_poly_t rop, const fmpz_poly_t op, const mpz_t c) noexcept:
|
478
|
+
cdef fmpz_t f
|
479
|
+
fmpz_init_set_readonly(f, c)
|
480
|
+
fmpz_poly_scalar_fdiv_fmpz(rop, op, f)
|
481
|
+
fmpz_clear_readonly(f)
|
482
|
+
|
483
|
+
cdef void fmpz_poly_set_coeff_mpz(fmpz_poly_t poly, slong n, const mpz_t x) noexcept:
|
484
|
+
cdef fmpz_t t
|
485
|
+
fmpz_init_set_readonly(t, x)
|
486
|
+
fmpz_poly_set_coeff_fmpz(poly, n, t)
|
487
|
+
fmpz_clear_readonly(t)
|
488
|
+
|
489
|
+
cdef void fmpz_poly_get_coeff_mpz(mpz_t x, const fmpz_poly_t poly, slong n) noexcept:
|
490
|
+
cdef fmpz_t t
|
491
|
+
fmpz_init(t)
|
492
|
+
fmpz_poly_get_coeff_fmpz(t, poly, n)
|
493
|
+
fmpz_get_mpz(x, t)
|
494
|
+
fmpz_clear(t)
|
495
|
+
|
496
|
+
cdef void fmpz_poly_set_mpz(fmpz_poly_t poly, const mpz_t x) noexcept:
|
497
|
+
fmpz_poly_fit_length(poly, 1)
|
498
|
+
fmpz_set_mpz(poly.coeffs, x)
|
499
|
+
_fmpz_poly_set_length(poly, 1)
|
500
|
+
_fmpz_poly_normalise(poly)
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# sage_setup: distribution = sagemath-flint
|
2
|
+
# distutils: libraries = flint
|
3
|
+
# distutils: depends = flint/fmpz_vec.h
|
4
|
+
|
5
|
+
################################################################################
|
6
|
+
# This file is auto-generated by the script
|
7
|
+
# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py.
|
8
|
+
# From the commit 3e2c3a3e091106a25ca9c6fba28e02f2cbcd654a
|
9
|
+
# Do not modify by hand! Fix and rerun the script instead.
|
10
|
+
################################################################################
|
11
|
+
|
12
|
+
from libc.stdio cimport FILE
|
13
|
+
from sage.libs.gmp.types cimport *
|
14
|
+
from sage.libs.mpfr.types cimport *
|
15
|
+
from sage.libs.flint.types cimport *
|
16
|
+
|
17
|
+
cdef extern from "flint_wrap.h":
|
18
|
+
fmpz * _fmpz_vec_init(slong len) noexcept
|
19
|
+
void _fmpz_vec_clear(fmpz * vec, slong len) noexcept
|
20
|
+
void _fmpz_vec_randtest(fmpz * f, flint_rand_t state, slong len, flint_bitcnt_t bits) noexcept
|
21
|
+
void _fmpz_vec_randtest_unsigned(fmpz * f, flint_rand_t state, slong len, flint_bitcnt_t bits) noexcept
|
22
|
+
slong _fmpz_vec_max_bits(const fmpz * vec, slong len) noexcept
|
23
|
+
slong _fmpz_vec_max_bits_ref(const fmpz * vec, slong len) noexcept
|
24
|
+
void _fmpz_vec_sum_max_bits(slong * sumabs, slong * maxabs, const fmpz * vec, slong len) noexcept
|
25
|
+
mp_size_t _fmpz_vec_max_limbs(const fmpz * vec, slong len) noexcept
|
26
|
+
void _fmpz_vec_height(fmpz_t height, const fmpz * vec, slong len) noexcept
|
27
|
+
slong _fmpz_vec_height_index(const fmpz * vec, slong len) noexcept
|
28
|
+
int _fmpz_vec_fread(FILE * file, fmpz ** vec, slong * len) noexcept
|
29
|
+
int _fmpz_vec_read(fmpz ** vec, slong * len) noexcept
|
30
|
+
int _fmpz_vec_fprint(FILE * file, const fmpz * vec, slong len) noexcept
|
31
|
+
int _fmpz_vec_print(const fmpz * vec, slong len) noexcept
|
32
|
+
void _fmpz_vec_get_nmod_vec(mp_ptr res, const fmpz * poly, slong len, nmod_t mod) noexcept
|
33
|
+
void _fmpz_vec_set_nmod_vec(fmpz * res, mp_srcptr poly, slong len, nmod_t mod) noexcept
|
34
|
+
void _fmpz_vec_get_fft(mp_limb_t ** coeffs_f, const fmpz * coeffs_m, slong l, slong length) noexcept
|
35
|
+
void _fmpz_vec_set_fft(fmpz * coeffs_m, slong length, const mp_ptr * coeffs_f, slong limbs, slong sign) noexcept
|
36
|
+
slong _fmpz_vec_get_d_vec_2exp(double * appv, const fmpz * vec, slong len) noexcept
|
37
|
+
void _fmpz_vec_set(fmpz * vec1, const fmpz * vec2, slong len2) noexcept
|
38
|
+
void _fmpz_vec_swap(fmpz * vec1, fmpz * vec2, slong len2) noexcept
|
39
|
+
void _fmpz_vec_zero(fmpz * vec, slong len) noexcept
|
40
|
+
void _fmpz_vec_neg(fmpz * vec1, const fmpz * vec2, slong len2) noexcept
|
41
|
+
void _fmpz_vec_scalar_abs(fmpz * vec1, const fmpz * vec2, slong len2) noexcept
|
42
|
+
bint _fmpz_vec_equal(const fmpz * vec1, const fmpz * vec2, slong len) noexcept
|
43
|
+
bint _fmpz_vec_is_zero(const fmpz * vec, slong len) noexcept
|
44
|
+
void _fmpz_vec_max(fmpz * vec1, const fmpz * vec2, const fmpz * vec3, slong len) noexcept
|
45
|
+
void _fmpz_vec_max_inplace(fmpz * vec1, const fmpz * vec2, slong len) noexcept
|
46
|
+
void _fmpz_vec_sort(fmpz * vec, slong len) noexcept
|
47
|
+
void _fmpz_vec_add(fmpz * res, const fmpz * vec1, const fmpz * vec2, slong len2) noexcept
|
48
|
+
void _fmpz_vec_sub(fmpz * res, const fmpz * vec1, const fmpz * vec2, slong len2) noexcept
|
49
|
+
void _fmpz_vec_scalar_mul_fmpz(fmpz * vec1, const fmpz * vec2, slong len2, const fmpz_t x) noexcept
|
50
|
+
void _fmpz_vec_scalar_mul_si(fmpz * vec1, const fmpz * vec2, slong len2, slong c) noexcept
|
51
|
+
void _fmpz_vec_scalar_mul_ui(fmpz * vec1, const fmpz * vec2, slong len2, ulong c) noexcept
|
52
|
+
void _fmpz_vec_scalar_mul_2exp(fmpz * vec1, const fmpz * vec2, slong len2, ulong exp) noexcept
|
53
|
+
void _fmpz_vec_scalar_divexact_fmpz(fmpz * vec1, const fmpz * vec2, slong len2, const fmpz_t x) noexcept
|
54
|
+
void _fmpz_vec_scalar_divexact_si(fmpz * vec1, const fmpz * vec2, slong len2, slong c) noexcept
|
55
|
+
void _fmpz_vec_scalar_divexact_ui(fmpz * vec1, const fmpz * vec2, slong len2, ulong c) noexcept
|
56
|
+
void _fmpz_vec_scalar_fdiv_q_fmpz(fmpz * vec1, const fmpz * vec2, slong len2, const fmpz_t c) noexcept
|
57
|
+
void _fmpz_vec_scalar_fdiv_q_si(fmpz * vec1, const fmpz * vec2, slong len2, slong c) noexcept
|
58
|
+
void _fmpz_vec_scalar_fdiv_q_ui(fmpz * vec1, const fmpz * vec2, slong len2, ulong c) noexcept
|
59
|
+
void _fmpz_vec_scalar_fdiv_q_2exp(fmpz * vec1, const fmpz * vec2, slong len2, ulong exp) noexcept
|
60
|
+
void _fmpz_vec_scalar_fdiv_r_2exp(fmpz * vec1, const fmpz * vec2, slong len2, ulong exp) noexcept
|
61
|
+
void _fmpz_vec_scalar_tdiv_q_fmpz(fmpz * vec1, const fmpz * vec2, slong len2, const fmpz_t c) noexcept
|
62
|
+
void _fmpz_vec_scalar_tdiv_q_si(fmpz * vec1, const fmpz * vec2, slong len2, slong c) noexcept
|
63
|
+
void _fmpz_vec_scalar_tdiv_q_ui(fmpz * vec1, const fmpz * vec2, slong len2, ulong c) noexcept
|
64
|
+
void _fmpz_vec_scalar_tdiv_q_2exp(fmpz * vec1, const fmpz * vec2, slong len2, ulong exp) noexcept
|
65
|
+
void _fmpz_vec_scalar_addmul_si(fmpz * vec1, const fmpz * vec2, slong len2, slong c) noexcept
|
66
|
+
void _fmpz_vec_scalar_addmul_ui(fmpz * vec1, const fmpz * vec2, slong len2, ulong c) noexcept
|
67
|
+
void _fmpz_vec_scalar_addmul_fmpz(fmpz * vec1, const fmpz * vec2, slong len2, const fmpz_t c) noexcept
|
68
|
+
void _fmpz_vec_scalar_addmul_si_2exp(fmpz * vec1, const fmpz * vec2, slong len2, slong c, ulong exp) noexcept
|
69
|
+
void _fmpz_vec_scalar_submul_fmpz(fmpz * vec1, const fmpz * vec2, slong len2, const fmpz_t x) noexcept
|
70
|
+
void _fmpz_vec_scalar_submul_si(fmpz * vec1, const fmpz * vec2, slong len2, slong c) noexcept
|
71
|
+
void _fmpz_vec_scalar_submul_si_2exp(fmpz * vec1, const fmpz * vec2, slong len2, slong c, ulong e) noexcept
|
72
|
+
void _fmpz_vec_sum(fmpz_t res, const fmpz * vec, slong len) noexcept
|
73
|
+
void _fmpz_vec_prod(fmpz_t res, const fmpz * vec, slong len) noexcept
|
74
|
+
void _fmpz_vec_scalar_mod_fmpz(fmpz * res, const fmpz * vec, slong len, const fmpz_t p) noexcept
|
75
|
+
void _fmpz_vec_scalar_smod_fmpz(fmpz * res, const fmpz * vec, slong len, const fmpz_t p) noexcept
|
76
|
+
void _fmpz_vec_content(fmpz_t res, const fmpz * vec, slong len) noexcept
|
77
|
+
void _fmpz_vec_content_chained(fmpz_t res, const fmpz * vec, slong len, const fmpz_t input) noexcept
|
78
|
+
void _fmpz_vec_lcm(fmpz_t res, const fmpz * vec, slong len) noexcept
|
79
|
+
void _fmpz_vec_dot(fmpz_t res, const fmpz * vec1, const fmpz * vec2, slong len2) noexcept
|
80
|
+
void _fmpz_vec_dot_ptr(fmpz_t res, const fmpz * vec1, fmpz ** const vec2, slong offset, slong len) noexcept
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# sage_setup: distribution = sagemath-flint
|
2
|
+
# distutils: libraries = flint
|
3
|
+
# distutils: depends = flint/fmpzi.h
|
4
|
+
|
5
|
+
################################################################################
|
6
|
+
# This file is auto-generated by the script
|
7
|
+
# SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py.
|
8
|
+
# From the commit 3e2c3a3e091106a25ca9c6fba28e02f2cbcd654a
|
9
|
+
# Do not modify by hand! Fix and rerun the script instead.
|
10
|
+
################################################################################
|
11
|
+
|
12
|
+
from libc.stdio cimport FILE
|
13
|
+
from sage.libs.gmp.types cimport *
|
14
|
+
from sage.libs.mpfr.types cimport *
|
15
|
+
from sage.libs.flint.types cimport *
|
16
|
+
|
17
|
+
cdef extern from "flint_wrap.h":
|
18
|
+
void fmpzi_init(fmpzi_t x) noexcept
|
19
|
+
void fmpzi_clear(fmpzi_t x) noexcept
|
20
|
+
void fmpzi_swap(fmpzi_t x, fmpzi_t y) noexcept
|
21
|
+
void fmpzi_zero(fmpzi_t x) noexcept
|
22
|
+
void fmpzi_one(fmpzi_t x) noexcept
|
23
|
+
void fmpzi_set(fmpzi_t res, const fmpzi_t x) noexcept
|
24
|
+
void fmpzi_set_si_si(fmpzi_t res, slong a, slong b) noexcept
|
25
|
+
void fmpzi_print(const fmpzi_t x) noexcept
|
26
|
+
void fmpzi_randtest(fmpzi_t res, flint_rand_t state, mp_bitcnt_t bits) noexcept
|
27
|
+
bint fmpzi_equal(const fmpzi_t x, const fmpzi_t y) noexcept
|
28
|
+
bint fmpzi_is_zero(const fmpzi_t x) noexcept
|
29
|
+
bint fmpzi_is_one(const fmpzi_t x) noexcept
|
30
|
+
bint fmpzi_is_unit(const fmpzi_t x) noexcept
|
31
|
+
slong fmpzi_canonical_unit_i_pow(const fmpzi_t x) noexcept
|
32
|
+
void fmpzi_canonicalise_unit(fmpzi_t res, const fmpzi_t x) noexcept
|
33
|
+
slong fmpzi_bits(const fmpzi_t x) noexcept
|
34
|
+
void fmpzi_norm(fmpz_t res, const fmpzi_t x) noexcept
|
35
|
+
void fmpzi_conj(fmpzi_t res, const fmpzi_t x) noexcept
|
36
|
+
void fmpzi_neg(fmpzi_t res, const fmpzi_t x) noexcept
|
37
|
+
void fmpzi_add(fmpzi_t res, const fmpzi_t x, const fmpzi_t y) noexcept
|
38
|
+
void fmpzi_sub(fmpzi_t res, const fmpzi_t x, const fmpzi_t y) noexcept
|
39
|
+
void fmpzi_sqr(fmpzi_t res, const fmpzi_t x) noexcept
|
40
|
+
void fmpzi_mul(fmpzi_t res, const fmpzi_t x, const fmpzi_t y) noexcept
|
41
|
+
void fmpzi_pow_ui(fmpzi_t res, const fmpzi_t x, ulong exp) noexcept
|
42
|
+
void fmpzi_divexact(fmpzi_t q, const fmpzi_t x, const fmpzi_t y) noexcept
|
43
|
+
void fmpzi_divrem(fmpzi_t q, fmpzi_t r, const fmpzi_t x, const fmpzi_t y) noexcept
|
44
|
+
void fmpzi_divrem_approx(fmpzi_t q, fmpzi_t r, const fmpzi_t x, const fmpzi_t y) noexcept
|
45
|
+
slong fmpzi_remove_one_plus_i(fmpzi_t res, const fmpzi_t x) noexcept
|
46
|
+
void fmpzi_gcd_euclidean(fmpzi_t res, const fmpzi_t x, const fmpzi_t y) noexcept
|
47
|
+
void fmpzi_gcd_euclidean_improved(fmpzi_t res, const fmpzi_t x, const fmpzi_t y) noexcept
|
48
|
+
void fmpzi_gcd_binary(fmpzi_t res, const fmpzi_t x, const fmpzi_t y) noexcept
|
49
|
+
void fmpzi_gcd_shortest(fmpzi_t res, const fmpzi_t x, const fmpzi_t y) noexcept
|
50
|
+
void fmpzi_gcd(fmpzi_t res, const fmpzi_t x, const fmpzi_t y) noexcept
|
51
|
+
bint fmpzi_is_prime(const fmpzi_t n) noexcept
|
52
|
+
bint fmpzi_is_probabprime(const fmpzi_t n) noexcept
|