passagemath-flint 10.6.1rc10__cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.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 +361 -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-aecb9cc5.so.21.0.0 +0 -0
- passagemath_flint.libs/libgf2x-a4cdec90.so.3.0.0 +0 -0
- passagemath_flint.libs/libgfortran-8f1e9814.so.5.0.0 +0 -0
- passagemath_flint.libs/libgmp-6e109695.so.10.5.0 +0 -0
- passagemath_flint.libs/libgsl-cda90e79.so.28.0.0 +0 -0
- passagemath_flint.libs/libmpfi-e3c25853.so.0.0.0 +0 -0
- passagemath_flint.libs/libmpfr-82690d50.so.6.2.1 +0 -0
- passagemath_flint.libs/libntl-74e7d9a3.so.44.0.1 +0 -0
- passagemath_flint.libs/libopenblasp-r0-6dcb67f9.3.29.so +0 -0
- passagemath_flint.libs/libquadmath-828275a7.so.0.0.0 +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-311-x86_64-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-311-x86_64-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-311-x86_64-linux-gnu.so +0 -0
- sage/graphs/chrompoly.pyx +555 -0
- sage/graphs/matchpoly.cpython-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-linux-gnu.so +0 -0
- sage/matrix/change_ring.pyx +43 -0
- sage/matrix/matrix_complex_ball_dense.cpython-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-linux-gnu.so +0 -0
- sage/modular/modsym/apply.pxd +6 -0
- sage/modular/modsym/apply.pyx +113 -0
- sage/modular/modsym/heilbronn.cpython-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-linux-gnu.so +0 -0
- sage/rings/complex_arb.pxd +29 -0
- sage/rings/complex_arb.pyx +5176 -0
- sage/rings/complex_interval.cpython-311-x86_64-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-311-x86_64-linux-gnu.so +0 -0
- sage/rings/convert/mpfi.pxd +6 -0
- sage/rings/convert/mpfi.pyx +576 -0
- sage/rings/factorint_flint.cpython-311-x86_64-linux-gnu.so +0 -0
- sage/rings/factorint_flint.pyx +99 -0
- sage/rings/fraction_field_FpT.cpython-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-linux-gnu.so +0 -0
- sage/rings/polynomial/hilbert.pyx +602 -0
- sage/rings/polynomial/polynomial_complex_arb.cpython-311-x86_64-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-311-x86_64-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-311-x86_64-linux-gnu.so +0 -0
- sage/rings/polynomial/polynomial_number_field.pyx +345 -0
- sage/rings/polynomial/polynomial_rational_flint.cpython-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-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-311-x86_64-linux-gnu.so +0 -0
- sage/rings/real_interval_absolute.pyx +1073 -0
- sage/rings/real_mpfi.cpython-311-x86_64-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-311-x86_64-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 @@
|
|
1
|
+
# sage_setup: distribution = sagemath-flint
|
@@ -0,0 +1,312 @@
|
|
1
|
+
# sage_setup: distribution = sagemath-flint
|
2
|
+
# sage.doctest: needs sage.libs.pari
|
3
|
+
"""
|
4
|
+
Isolate Complex Roots of Polynomials
|
5
|
+
|
6
|
+
AUTHOR:
|
7
|
+
|
8
|
+
- Carl Witty (2007-11-18): initial version
|
9
|
+
|
10
|
+
This is an implementation of complex root isolation. That is, given a
|
11
|
+
polynomial with exact complex coefficients, we compute isolating
|
12
|
+
intervals for the complex roots of the polynomial. (Polynomials with
|
13
|
+
integer, rational, Gaussian rational, or algebraic coefficients are
|
14
|
+
supported.)
|
15
|
+
|
16
|
+
We use a simple algorithm. First, we compute a squarefree decomposition
|
17
|
+
of the input polynomial; the resulting polynomials have no multiple roots.
|
18
|
+
Then, we find the roots numerically, using NumPy (at low precision) or
|
19
|
+
Pari (at high precision). Then, we verify the roots using interval
|
20
|
+
arithmetic.
|
21
|
+
|
22
|
+
EXAMPLES::
|
23
|
+
|
24
|
+
sage: x = polygen(ZZ)
|
25
|
+
sage: (x^5 - x - 1).roots(ring=CIF)
|
26
|
+
[(1.167303978261419?, 1),
|
27
|
+
(-0.764884433600585? - 0.352471546031727?*I, 1),
|
28
|
+
(-0.764884433600585? + 0.352471546031727?*I, 1),
|
29
|
+
(0.181232444469876? - 1.083954101317711?*I, 1),
|
30
|
+
(0.181232444469876? + 1.083954101317711?*I, 1)]
|
31
|
+
"""
|
32
|
+
|
33
|
+
#*****************************************************************************
|
34
|
+
# Copyright (C) 2007 Carl Witty
|
35
|
+
#
|
36
|
+
# This program is free software: you can redistribute it and/or modify
|
37
|
+
# it under the terms of the GNU General Public License as published by
|
38
|
+
# the Free Software Foundation, either version 2 of the License, or
|
39
|
+
# (at your option) any later version.
|
40
|
+
# http://www.gnu.org/licenses/
|
41
|
+
#*****************************************************************************
|
42
|
+
|
43
|
+
|
44
|
+
from copy import copy
|
45
|
+
|
46
|
+
from sage.rings.complex_mpfr import ComplexField
|
47
|
+
from sage.rings.complex_interval_field import ComplexIntervalField
|
48
|
+
from sage.rings.qqbar import AA, QQbar
|
49
|
+
from sage.arith.misc import sort_complex_numbers_for_display
|
50
|
+
from sage.rings.polynomial.refine_root import refine_root
|
51
|
+
|
52
|
+
|
53
|
+
def interval_roots(p, rts, prec):
|
54
|
+
"""
|
55
|
+
We are given a squarefree polynomial p, a list of estimated roots,
|
56
|
+
and a precision.
|
57
|
+
|
58
|
+
We attempt to verify that the estimated roots are in fact distinct
|
59
|
+
roots of the polynomial, using interval arithmetic of precision ``prec``.
|
60
|
+
If we succeed, we return a list of intervals bounding the roots; if we
|
61
|
+
fail, we return ``None``.
|
62
|
+
|
63
|
+
EXAMPLES::
|
64
|
+
|
65
|
+
sage: x = polygen(ZZ)
|
66
|
+
sage: p = x^3 - 1
|
67
|
+
sage: rts = [CC.zeta(3)^i for i in range(0, 3)]
|
68
|
+
sage: from sage.rings.polynomial.complex_roots import interval_roots
|
69
|
+
sage: interval_roots(p, rts, 53)
|
70
|
+
[1, -0.500000000000000? + 0.866025403784439?*I,
|
71
|
+
-0.500000000000000? - 0.866025403784439?*I]
|
72
|
+
sage: interval_roots(p, rts, 200)
|
73
|
+
[1, -0.500000000000000000000000000000000000000000000000000000000000?
|
74
|
+
+ 0.866025403784438646763723170752936183471402626905190314027904?*I,
|
75
|
+
-0.500000000000000000000000000000000000000000000000000000000000?
|
76
|
+
- 0.866025403784438646763723170752936183471402626905190314027904?*I]
|
77
|
+
"""
|
78
|
+
|
79
|
+
CIF = ComplexIntervalField(prec)
|
80
|
+
CIFX = CIF['x']
|
81
|
+
|
82
|
+
ip = CIFX(p)
|
83
|
+
ipd = CIFX(p.derivative())
|
84
|
+
|
85
|
+
irts = []
|
86
|
+
|
87
|
+
for rt in rts:
|
88
|
+
irt = refine_root(ip, ipd, CIF(rt), CIF)
|
89
|
+
if irt is None:
|
90
|
+
return None
|
91
|
+
irts.append(irt)
|
92
|
+
|
93
|
+
return irts
|
94
|
+
|
95
|
+
|
96
|
+
def intervals_disjoint(intvs):
|
97
|
+
"""
|
98
|
+
Given a list of complex intervals, check whether they are pairwise
|
99
|
+
disjoint.
|
100
|
+
|
101
|
+
EXAMPLES::
|
102
|
+
|
103
|
+
sage: from sage.rings.polynomial.complex_roots import intervals_disjoint
|
104
|
+
sage: a = CIF(RIF(0, 3), 0)
|
105
|
+
sage: b = CIF(0, RIF(1, 3))
|
106
|
+
sage: c = CIF(RIF(1, 2), RIF(1, 2))
|
107
|
+
sage: d = CIF(RIF(2, 3), RIF(2, 3))
|
108
|
+
sage: intervals_disjoint([a,b,c,d])
|
109
|
+
False
|
110
|
+
sage: d2 = CIF(RIF(2, 3), RIF(2.001, 3))
|
111
|
+
sage: intervals_disjoint([a,b,c,d2])
|
112
|
+
True
|
113
|
+
"""
|
114
|
+
|
115
|
+
# This may be quadratic in perverse cases, but will take only
|
116
|
+
# n log(n) time in typical cases.
|
117
|
+
|
118
|
+
intvs = sorted(copy(intvs))
|
119
|
+
|
120
|
+
column = []
|
121
|
+
prev_real = None
|
122
|
+
|
123
|
+
def column_disjoint():
|
124
|
+
column.sort()
|
125
|
+
|
126
|
+
row = []
|
127
|
+
prev_imag = None
|
128
|
+
|
129
|
+
def row_disjoint():
|
130
|
+
for a in range(len(row)):
|
131
|
+
for b in range(a+1, len(row)):
|
132
|
+
if row[a].overlaps(row[b]):
|
133
|
+
return False
|
134
|
+
return True
|
135
|
+
|
136
|
+
for (y_imag, y) in column:
|
137
|
+
if prev_imag is not None and y_imag > prev_imag:
|
138
|
+
if not row_disjoint():
|
139
|
+
return False
|
140
|
+
row = []
|
141
|
+
prev_imag = y_imag
|
142
|
+
row.append(y)
|
143
|
+
if not row_disjoint():
|
144
|
+
return False
|
145
|
+
return True
|
146
|
+
|
147
|
+
for x in intvs:
|
148
|
+
x_real = x.real()
|
149
|
+
if prev_real is not None and x_real > prev_real:
|
150
|
+
if not column_disjoint():
|
151
|
+
return False
|
152
|
+
column = []
|
153
|
+
prev_real = x_real
|
154
|
+
column.append((x.imag(), x))
|
155
|
+
|
156
|
+
if not column_disjoint():
|
157
|
+
return False
|
158
|
+
return True
|
159
|
+
|
160
|
+
|
161
|
+
def complex_roots(p, skip_squarefree=False, retval='interval', min_prec=0):
|
162
|
+
"""
|
163
|
+
Compute the complex roots of a given polynomial with exact
|
164
|
+
coefficients (integer, rational, Gaussian rational, and algebraic
|
165
|
+
coefficients are supported). Returns a list of pairs of a root
|
166
|
+
and its multiplicity.
|
167
|
+
|
168
|
+
Roots are returned as a ComplexIntervalFieldElement; each interval
|
169
|
+
includes exactly one root, and the intervals are disjoint.
|
170
|
+
|
171
|
+
By default, the algorithm will do a squarefree decomposition
|
172
|
+
to get squarefree polynomials. The skip_squarefree parameter
|
173
|
+
lets you skip this step. (If this step is skipped, and the polynomial
|
174
|
+
has a repeated root, then the algorithm will loop forever!)
|
175
|
+
|
176
|
+
You can specify retval='interval' (the default) to get roots as
|
177
|
+
complex intervals. The other options are retval='algebraic' to
|
178
|
+
get elements of QQbar, or retval='algebraic_real' to get only
|
179
|
+
the real roots, and to get them as elements of AA.
|
180
|
+
|
181
|
+
EXAMPLES::
|
182
|
+
|
183
|
+
sage: from sage.rings.polynomial.complex_roots import complex_roots
|
184
|
+
sage: x = polygen(ZZ)
|
185
|
+
sage: complex_roots(x^5 - x - 1)
|
186
|
+
[(1.167303978261419?, 1),
|
187
|
+
(-0.764884433600585? - 0.352471546031727?*I, 1),
|
188
|
+
(-0.764884433600585? + 0.352471546031727?*I, 1),
|
189
|
+
(0.181232444469876? - 1.083954101317711?*I, 1),
|
190
|
+
(0.181232444469876? + 1.083954101317711?*I, 1)]
|
191
|
+
sage: v = complex_roots(x^2 + 27*x + 181)
|
192
|
+
|
193
|
+
Unfortunately due to numerical noise there can be a small imaginary part to each
|
194
|
+
root depending on CPU, compiler, etc, and that affects the printing order. So we
|
195
|
+
verify the real part of each root and check that the imaginary part is small in
|
196
|
+
both cases::
|
197
|
+
|
198
|
+
sage: v # random
|
199
|
+
[(-14.61803398874990?..., 1), (-12.3819660112501...? + 0.?e-27*I, 1)]
|
200
|
+
sage: sorted((v[0][0].real(),v[1][0].real()))
|
201
|
+
[-14.61803398874989?, -12.3819660112501...?]
|
202
|
+
sage: v[0][0].imag().upper() < 1e25
|
203
|
+
True
|
204
|
+
sage: v[1][0].imag().upper() < 1e25
|
205
|
+
True
|
206
|
+
|
207
|
+
sage: K.<im> = QuadraticField(-1)
|
208
|
+
sage: eps = 1/2^100
|
209
|
+
sage: x = polygen(K)
|
210
|
+
sage: p = (x-1)*(x-1-eps)*(x-1+eps)*(x-1-eps*im)*(x-1+eps*im)
|
211
|
+
|
212
|
+
This polynomial actually has all-real coefficients, and is very, very
|
213
|
+
close to (x-1)^5::
|
214
|
+
|
215
|
+
sage: [RR(QQ(a)) for a in list(p - (x-1)^5)]
|
216
|
+
[3.87259191484932e-121, -3.87259191484932e-121]
|
217
|
+
sage: rts = complex_roots(p)
|
218
|
+
sage: [ComplexIntervalField(10)(rt[0] - 1) for rt in rts]
|
219
|
+
[-7.8887?e-31, 0, 7.8887?e-31, -7.8887?e-31*I, 7.8887?e-31*I]
|
220
|
+
|
221
|
+
We can get roots either as intervals, or as elements of QQbar or AA.
|
222
|
+
|
223
|
+
::
|
224
|
+
|
225
|
+
sage: p = (x^2 + x - 1)
|
226
|
+
sage: p = p * p(x*im)
|
227
|
+
sage: p
|
228
|
+
-x^4 + (im - 1)*x^3 + im*x^2 + (-im - 1)*x + 1
|
229
|
+
|
230
|
+
Two of the roots have a zero real component; two have a zero
|
231
|
+
imaginary component. These zero components will be found slightly
|
232
|
+
inaccurately, and the exact values returned are very sensitive to
|
233
|
+
the (non-portable) results of NumPy. So we post-process the roots
|
234
|
+
for printing, to get predictable doctest results.
|
235
|
+
|
236
|
+
::
|
237
|
+
|
238
|
+
sage: def tiny(x):
|
239
|
+
....: return x.contains_zero() and x.absolute_diameter() < 1e-14
|
240
|
+
sage: def smash(x):
|
241
|
+
....: x = CIF(x[0]) # discard multiplicity
|
242
|
+
....: if tiny(x.imag()): return x.real()
|
243
|
+
....: if tiny(x.real()): return CIF(0, x.imag())
|
244
|
+
sage: rts = complex_roots(p); type(rts[0][0]), sorted(map(smash, rts))
|
245
|
+
(<class 'sage.rings.complex_interval.ComplexIntervalFieldElement'>,
|
246
|
+
[-1.618033988749895?, -0.618033988749895?*I,
|
247
|
+
1.618033988749895?*I, 0.618033988749895?])
|
248
|
+
sage: rts = complex_roots(p, retval='algebraic'); type(rts[0][0]), sorted(map(smash, rts))
|
249
|
+
(<class 'sage.rings.qqbar.AlgebraicNumber'>,
|
250
|
+
[-1.618033988749895?, -0.618033988749895?*I,
|
251
|
+
1.618033988749895?*I, 0.618033988749895?])
|
252
|
+
sage: rts = complex_roots(p, retval='algebraic_real'); type(rts[0][0]), rts
|
253
|
+
(<class 'sage.rings.qqbar.AlgebraicReal'>,
|
254
|
+
[(-1.618033988749895?, 1), (0.618033988749895?, 1)])
|
255
|
+
|
256
|
+
TESTS:
|
257
|
+
|
258
|
+
Verify that :issue:`12026` is fixed::
|
259
|
+
|
260
|
+
sage: f = matrix(QQ, 8, lambda i, j: 1/(i + j + 1)).charpoly()
|
261
|
+
sage: from sage.rings.polynomial.complex_roots import complex_roots
|
262
|
+
sage: len(complex_roots(f))
|
263
|
+
8
|
264
|
+
"""
|
265
|
+
|
266
|
+
if skip_squarefree:
|
267
|
+
factors = [(p, 1)]
|
268
|
+
else:
|
269
|
+
factors = p.squarefree_decomposition()
|
270
|
+
|
271
|
+
prec = 53
|
272
|
+
while True:
|
273
|
+
CC = ComplexField(prec)
|
274
|
+
CCX = CC['x']
|
275
|
+
|
276
|
+
all_rts = []
|
277
|
+
ok = True
|
278
|
+
|
279
|
+
for (factor, exp) in factors:
|
280
|
+
cfac = CCX(factor)
|
281
|
+
rts = cfac.roots(multiplicities=False)
|
282
|
+
# Make sure the number of roots we found is the degree. If
|
283
|
+
# we don't find that many roots, it's because the
|
284
|
+
# precision isn't big enough and though the (possibly
|
285
|
+
# exact) polynomial "factor" is squarefree, it is not
|
286
|
+
# squarefree as an element of CCX.
|
287
|
+
if len(rts) < factor.degree():
|
288
|
+
ok = False
|
289
|
+
break
|
290
|
+
irts = interval_roots(factor, rts, max(prec, min_prec))
|
291
|
+
if irts is None:
|
292
|
+
ok = False
|
293
|
+
break
|
294
|
+
if retval != 'interval':
|
295
|
+
factor = QQbar.common_polynomial(factor)
|
296
|
+
all_rts.extend((irt, factor, exp) for irt in irts)
|
297
|
+
|
298
|
+
if ok and intervals_disjoint([rt for (rt, fac, mult) in all_rts]):
|
299
|
+
all_rts = sort_complex_numbers_for_display(all_rts)
|
300
|
+
if retval == 'interval':
|
301
|
+
return [(rt, mult) for (rt, fac, mult) in all_rts]
|
302
|
+
elif retval == 'algebraic':
|
303
|
+
return [(QQbar.polynomial_root(fac, rt), mult) for (rt, fac, mult) in all_rts]
|
304
|
+
elif retval == 'algebraic_real':
|
305
|
+
rts = []
|
306
|
+
for (rt, fac, mult) in all_rts:
|
307
|
+
qqbar_rt = QQbar.polynomial_root(fac, rt)
|
308
|
+
if qqbar_rt.imag().is_zero():
|
309
|
+
rts.append((AA(qqbar_rt), mult))
|
310
|
+
return rts
|
311
|
+
|
312
|
+
prec = prec * 2
|
Binary file
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# sage_setup: distribution = sagemath-flint
|
2
|
+
from sage.libs.flint.types cimport fmpz_poly_t
|
3
|
+
from sage.libs.mpfr.types cimport mpfr_t
|
4
|
+
from sage.libs.mpfi.types cimport mpfi_t
|
5
|
+
|
6
|
+
cdef fmpz_poly_evaluation_mpfr(mpfr_t res, const fmpz_poly_t poly, const mpfr_t a)
|
7
|
+
cdef fmpz_poly_evaluation_mpfi(mpfi_t res, const fmpz_poly_t poly, const mpfi_t a)
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# sage_setup: distribution = sagemath-flint
|
2
|
+
# distutils: libraries = flint
|
3
|
+
r"""
|
4
|
+
Fast evaluation of polynomials (Horner's rule)
|
5
|
+
|
6
|
+
This file provides fast evaluation of integer polynomials with a real value. We
|
7
|
+
consider flint polynomials and values mpfr_t and mpfi_t. If you intend
|
8
|
+
to implement more it would be better to find a template strategy instead of
|
9
|
+
duplicating the code.
|
10
|
+
|
11
|
+
The code in this file is mostly Sage agnostic and only does library calls.
|
12
|
+
|
13
|
+
For appropriate testing see
|
14
|
+
:mod:`~sage.rings.polynomial.polynomial_integer_dense_flint`.
|
15
|
+
|
16
|
+
.. TODO::
|
17
|
+
|
18
|
+
Integrate these functions into
|
19
|
+
:mod:`~sage.rings.polynomial.polynomial_compiled`
|
20
|
+
"""
|
21
|
+
#*****************************************************************************
|
22
|
+
# Copyright (C) 2016 Vincent Delecroix <20100.delecroix@gmail.com>
|
23
|
+
#
|
24
|
+
# This program is free software: you can redistribute it and/or modify
|
25
|
+
# it under the terms of the GNU General Public License as published by
|
26
|
+
# the Free Software Foundation, either version 2 of the License, or
|
27
|
+
# (at your option) any later version.
|
28
|
+
# http://www.gnu.org/licenses/
|
29
|
+
#*****************************************************************************
|
30
|
+
|
31
|
+
from sage.libs.mpfr cimport *
|
32
|
+
from sage.libs.mpfi cimport *
|
33
|
+
from sage.libs.gmp.mpz cimport *
|
34
|
+
from sage.libs.gmp.mpq cimport *
|
35
|
+
from sage.libs.flint.fmpz cimport *
|
36
|
+
from sage.libs.flint.fmpz_poly cimport *
|
37
|
+
from sage.libs.flint.fmpz_poly_sage cimport *
|
38
|
+
|
39
|
+
|
40
|
+
cdef fmpz_poly_evaluation_mpfr(mpfr_t res, const fmpz_poly_t poly, const mpfr_t a):
|
41
|
+
cdef mpz_t c
|
42
|
+
cdef long i
|
43
|
+
|
44
|
+
mpfr_set_ui(res, 0, MPFR_RNDN)
|
45
|
+
mpz_init(c)
|
46
|
+
|
47
|
+
for i in range(fmpz_poly_degree(poly), -1, -1):
|
48
|
+
mpfr_mul(res, res, a, MPFR_RNDN)
|
49
|
+
if not fmpz_is_zero(fmpz_poly_get_coeff_ptr(poly, i)):
|
50
|
+
fmpz_poly_get_coeff_mpz(c, poly, i)
|
51
|
+
mpfr_add_z(res, res, c, MPFR_RNDN)
|
52
|
+
|
53
|
+
mpz_clear(c)
|
54
|
+
|
55
|
+
cdef fmpz_poly_evaluation_mpfi(mpfi_t res, const fmpz_poly_t poly, const mpfi_t a):
|
56
|
+
cdef mpz_t c
|
57
|
+
cdef long i
|
58
|
+
|
59
|
+
mpfi_set_ui(res, 0)
|
60
|
+
mpz_init(c)
|
61
|
+
|
62
|
+
for i in range(fmpz_poly_degree(poly), -1, -1):
|
63
|
+
mpfi_mul(res, res, a)
|
64
|
+
if not fmpz_is_zero(fmpz_poly_get_coeff_ptr(poly, i)):
|
65
|
+
fmpz_poly_get_coeff_mpz(c, poly, i)
|
66
|
+
mpfi_add_z(res, res, c)
|
67
|
+
|
68
|
+
mpz_clear(c)
|
Binary file
|