passagemath-flint 10.6.1rc10__cp310-cp310-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-310-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-310-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-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/chrompoly.pyx +555 -0
- sage/graphs/matchpoly.cpython-310-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-310-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-310-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-310-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-310-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-310-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-310-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-310-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-310-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-310-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-310-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-310-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-310-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-310-aarch64-linux-gnu.so +0 -0
- sage/matrix/change_ring.pyx +43 -0
- sage/matrix/matrix_complex_ball_dense.cpython-310-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-310-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-310-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-310-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-310-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-310-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-310-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-310-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-310-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-310-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-310-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-310-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-310-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-310-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-310-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-310-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-310-aarch64-linux-gnu.so +0 -0
- sage/rings/factorint_flint.pyx +99 -0
- sage/rings/fraction_field_FpT.cpython-310-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-310-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-310-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-310-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-310-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-310-aarch64-linux-gnu.so +0 -0
- sage/rings/polynomial/hilbert.pyx +602 -0
- sage/rings/polynomial/polynomial_complex_arb.cpython-310-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-310-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-310-aarch64-linux-gnu.so +0 -0
- sage/rings/polynomial/polynomial_number_field.pyx +345 -0
- sage/rings/polynomial/polynomial_rational_flint.cpython-310-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-310-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-310-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-310-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-310-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-310-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-310-aarch64-linux-gnu.so +0 -0
- sage/rings/real_interval_absolute.pyx +1073 -0
- sage/rings/real_mpfi.cpython-310-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-310-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,380 @@
|
|
1
|
+
# sage_setup: distribution = sagemath-flint
|
2
|
+
# sage.doctest: needs sage.rings.number_field
|
3
|
+
r"""
|
4
|
+
Helper classes for structural embeddings and isomorphisms of number fields
|
5
|
+
|
6
|
+
Consider the following fields `L` and `M`::
|
7
|
+
|
8
|
+
sage: L.<a> = QuadraticField(2)
|
9
|
+
sage: M.<a> = L.absolute_field()
|
10
|
+
|
11
|
+
Both produce the same extension of `\QQ`. However, they should not be
|
12
|
+
identical because `M` carries additional information::
|
13
|
+
|
14
|
+
sage: L.structure()
|
15
|
+
(Identity endomorphism of
|
16
|
+
Number Field in a with defining polynomial x^2 - 2 with a = 1.414213562373095?,
|
17
|
+
Identity endomorphism of
|
18
|
+
Number Field in a with defining polynomial x^2 - 2 with a = 1.414213562373095?)
|
19
|
+
sage: M.structure()
|
20
|
+
(Isomorphism given by variable name change map:
|
21
|
+
From: Number Field in a with defining polynomial x^2 - 2
|
22
|
+
To: Number Field in a with defining polynomial x^2 - 2 with a = 1.414213562373095?,
|
23
|
+
Isomorphism given by variable name change map:
|
24
|
+
From: Number Field in a with defining polynomial x^2 - 2 with a = 1.414213562373095?
|
25
|
+
To: Number Field in a with defining polynomial x^2 - 2)
|
26
|
+
|
27
|
+
This used to cause trouble with caching and made (absolute) number fields not
|
28
|
+
unique when they should have been. The underlying technical problem is that the
|
29
|
+
morphisms returned by :meth:`structure` can only be defined once the fields in
|
30
|
+
question have been created. Therefore, these morphisms cannot be part of a key
|
31
|
+
which uniquely identifies a number field.
|
32
|
+
|
33
|
+
The classes defined in this file encapsulate information about these structure
|
34
|
+
morphisms which can be passed to the factory creating number fields. This makes
|
35
|
+
it possible to distinguish number fields which only differ in terms of these
|
36
|
+
structure morphisms::
|
37
|
+
|
38
|
+
sage: L is M
|
39
|
+
False
|
40
|
+
sage: N.<a> = L.absolute_field()
|
41
|
+
sage: M is N
|
42
|
+
True
|
43
|
+
|
44
|
+
AUTHORS:
|
45
|
+
|
46
|
+
- Julian Rueth (2014-04-03): initial version
|
47
|
+
"""
|
48
|
+
#*****************************************************************************
|
49
|
+
# Copyright (C) 2014 Julian Rueth <julian.rueth@fsfe.org>
|
50
|
+
#
|
51
|
+
# This program is free software: you can redistribute it and/or modify
|
52
|
+
# it under the terms of the GNU General Public License as published by
|
53
|
+
# the Free Software Foundation, either version 2 of the License, or
|
54
|
+
# (at your option) any later version.
|
55
|
+
# http://www.gnu.org/licenses/
|
56
|
+
#*****************************************************************************
|
57
|
+
|
58
|
+
from sage.structure.unique_representation import UniqueRepresentation
|
59
|
+
|
60
|
+
|
61
|
+
class NumberFieldStructure(UniqueRepresentation):
|
62
|
+
r"""
|
63
|
+
Abstract base class encapsulating information about a number fields
|
64
|
+
relation to other number fields.
|
65
|
+
|
66
|
+
TESTS::
|
67
|
+
|
68
|
+
sage: from sage.rings.number_field.structure import NumberFieldStructure
|
69
|
+
sage: NumberFieldStructure(QQ)
|
70
|
+
<sage.rings.number_field.structure.NumberFieldStructure object at 0x...>
|
71
|
+
|
72
|
+
Instances are cached through
|
73
|
+
:class:`sage.structure.unique_representation.UniqueRepresentation`::
|
74
|
+
|
75
|
+
sage: NumberFieldStructure(QQ) is NumberFieldStructure(QQ)
|
76
|
+
True
|
77
|
+
|
78
|
+
sage: R.<x> = QQ[]
|
79
|
+
sage: x = polygen(ZZ, 'x')
|
80
|
+
sage: K.<i> = NumberField(x^2 + 1)
|
81
|
+
sage: L = K.change_names('j').change_names('i')
|
82
|
+
sage: K is L # K and L differ in "structure", one is the "name-change" of the other
|
83
|
+
False
|
84
|
+
sage: NumberFieldStructure(L) is NumberFieldStructure(L)
|
85
|
+
True
|
86
|
+
sage: NumberFieldStructure(K) is NumberFieldStructure(L)
|
87
|
+
False
|
88
|
+
sage: from sage.rings.number_field.structure import NameChange
|
89
|
+
sage: KK.<j> = NumberField(x^2 + 1, structure=NameChange(K))
|
90
|
+
sage: LL.<j> = NumberField(x^2 + 1, structure=NameChange(L))
|
91
|
+
sage: KK is LL
|
92
|
+
False
|
93
|
+
"""
|
94
|
+
def __init__(self, other):
|
95
|
+
"""
|
96
|
+
Initialization.
|
97
|
+
|
98
|
+
TESTS::
|
99
|
+
|
100
|
+
sage: from sage.rings.number_field.structure import NumberFieldStructure
|
101
|
+
sage: type(NumberFieldStructure(QQ))
|
102
|
+
<class 'sage.rings.number_field.structure.NumberFieldStructure'>
|
103
|
+
"""
|
104
|
+
self.other = other
|
105
|
+
|
106
|
+
def create_structure(self, field):
|
107
|
+
r"""
|
108
|
+
Return a tuple encoding structural information about ``field``.
|
109
|
+
|
110
|
+
OUTPUT:
|
111
|
+
|
112
|
+
Typically, the output is a pair of morphisms. The first one from
|
113
|
+
``field`` to a field from which ``field`` has been constructed and the
|
114
|
+
second one its inverse. In this case, these morphisms are used as
|
115
|
+
conversion maps between the two fields.
|
116
|
+
|
117
|
+
TESTS::
|
118
|
+
|
119
|
+
sage: from sage.rings.number_field.structure import NumberFieldStructure
|
120
|
+
sage: NumberFieldStructure(QQ).create_structure(QQ)
|
121
|
+
Traceback (most recent call last):
|
122
|
+
...
|
123
|
+
NotImplementedError
|
124
|
+
|
125
|
+
The morphisms created by this method are used as conversion maps::
|
126
|
+
|
127
|
+
sage: K.<i> = QuadraticField(-1)
|
128
|
+
sage: L.<j> = K.change_names()
|
129
|
+
sage: isinstance(L._structure, NumberFieldStructure)
|
130
|
+
True
|
131
|
+
sage: from_L, to_L = L.structure()
|
132
|
+
sage: L._convert_map_from_(K) is to_L
|
133
|
+
True
|
134
|
+
sage: L(i)
|
135
|
+
j
|
136
|
+
sage: K(j)
|
137
|
+
i
|
138
|
+
"""
|
139
|
+
raise NotImplementedError
|
140
|
+
|
141
|
+
|
142
|
+
class NameChange(NumberFieldStructure):
|
143
|
+
r"""
|
144
|
+
Structure for a number field created by a change in variable name.
|
145
|
+
|
146
|
+
INPUT:
|
147
|
+
|
148
|
+
- ``other`` -- the number field from which this field has been created
|
149
|
+
|
150
|
+
TESTS::
|
151
|
+
|
152
|
+
sage: from sage.rings.number_field.structure import NameChange
|
153
|
+
sage: K.<i> = QuadraticField(-1)
|
154
|
+
sage: NameChange(K)
|
155
|
+
<sage.rings.number_field.structure.NameChange object at 0x...>
|
156
|
+
|
157
|
+
Check for memory leaks::
|
158
|
+
|
159
|
+
sage: x = polygen(ZZ, 'x')
|
160
|
+
sage: u = id(NumberField(x^2 - 5,'a').absolute_field('b'))
|
161
|
+
sage: import gc
|
162
|
+
sage: gc.collect() #random
|
163
|
+
10
|
164
|
+
sage: [id(v) for v in gc.get_objects() if id(v) == u]
|
165
|
+
[]
|
166
|
+
"""
|
167
|
+
def create_structure(self, field):
|
168
|
+
r"""
|
169
|
+
Return a pair of isomorphisms which send the generator of ``field`` to
|
170
|
+
the generator of ``other`` and vice versa.
|
171
|
+
|
172
|
+
TESTS::
|
173
|
+
|
174
|
+
sage: CyclotomicField(5).absolute_field('a').structure() # indirect doctest
|
175
|
+
(Isomorphism given by variable name change map:
|
176
|
+
From: Number Field in a with defining polynomial x^4 + x^3 + x^2 + x + 1
|
177
|
+
To: Cyclotomic Field of order 5 and degree 4,
|
178
|
+
Isomorphism given by variable name change map:
|
179
|
+
From: Cyclotomic Field of order 5 and degree 4
|
180
|
+
To: Number Field in a with defining polynomial x^4 + x^3 + x^2 + x + 1)
|
181
|
+
"""
|
182
|
+
from . import maps
|
183
|
+
return maps.NameChangeMap(field, self.other), maps.NameChangeMap(self.other, field)
|
184
|
+
|
185
|
+
|
186
|
+
class AbsoluteFromRelative(NumberFieldStructure):
|
187
|
+
r"""
|
188
|
+
Structure for an absolute number field created from a relative number
|
189
|
+
field.
|
190
|
+
|
191
|
+
INPUT:
|
192
|
+
|
193
|
+
- ``other`` -- the number field from which this field has been created
|
194
|
+
|
195
|
+
TESTS::
|
196
|
+
|
197
|
+
sage: from sage.rings.number_field.structure import AbsoluteFromRelative
|
198
|
+
sage: K.<a> = QuadraticField(2)
|
199
|
+
sage: R.<x> = K[]
|
200
|
+
sage: L.<b> = K.extension(x^2 - 3)
|
201
|
+
sage: AbsoluteFromRelative(L)
|
202
|
+
<sage.rings.number_field.structure.AbsoluteFromRelative object at 0x...>
|
203
|
+
"""
|
204
|
+
def create_structure(self, field):
|
205
|
+
r"""
|
206
|
+
Return a pair of isomorphisms which go from ``field`` to ``other`` and
|
207
|
+
vice versa.
|
208
|
+
|
209
|
+
TESTS::
|
210
|
+
|
211
|
+
sage: K.<a> = QuadraticField(2)
|
212
|
+
sage: R.<x> = K[]
|
213
|
+
sage: L.<b> = K.extension(x^2 - 3)
|
214
|
+
sage: M.<c> = L.absolute_field()
|
215
|
+
sage: M.structure() # indirect doctest
|
216
|
+
(Isomorphism map:
|
217
|
+
From: Number Field in c with defining polynomial x^4 - 10*x^2 + 1
|
218
|
+
To: Number Field in b with defining polynomial x^2 - 3 over its base field, Isomorphism map:
|
219
|
+
From: Number Field in b with defining polynomial x^2 - 3 over its base field
|
220
|
+
To: Number Field in c with defining polynomial x^4 - 10*x^2 + 1)
|
221
|
+
"""
|
222
|
+
from . import maps
|
223
|
+
return maps.MapAbsoluteToRelativeNumberField(field, self.other), maps.MapRelativeToAbsoluteNumberField(self.other, field)
|
224
|
+
|
225
|
+
|
226
|
+
class RelativeFromAbsolute(NumberFieldStructure):
|
227
|
+
r"""
|
228
|
+
Structure for a relative number field created from an absolute number
|
229
|
+
field.
|
230
|
+
|
231
|
+
INPUT:
|
232
|
+
|
233
|
+
- ``other`` -- the (absolute) number field from which this field has been
|
234
|
+
created
|
235
|
+
|
236
|
+
- ``gen`` -- the generator of the intermediate field
|
237
|
+
|
238
|
+
TESTS::
|
239
|
+
|
240
|
+
sage: from sage.rings.number_field.structure import RelativeFromAbsolute
|
241
|
+
sage: RelativeFromAbsolute(QQ, 1/2)
|
242
|
+
<sage.rings.number_field.structure.RelativeFromAbsolute object at 0x...>
|
243
|
+
"""
|
244
|
+
def __init__(self, other, gen):
|
245
|
+
r"""
|
246
|
+
Initialization.
|
247
|
+
|
248
|
+
TESTS::
|
249
|
+
|
250
|
+
sage: from sage.rings.number_field.structure import RelativeFromAbsolute
|
251
|
+
sage: type(RelativeFromAbsolute(QQ, 1/2))
|
252
|
+
<class 'sage.rings.number_field.structure.RelativeFromAbsolute'>
|
253
|
+
"""
|
254
|
+
NumberFieldStructure.__init__(self, other)
|
255
|
+
self.gen = gen
|
256
|
+
|
257
|
+
def create_structure(self, field):
|
258
|
+
r"""
|
259
|
+
Return a pair of isomorphisms which go from ``field`` to ``other`` and
|
260
|
+
vice versa.
|
261
|
+
|
262
|
+
INPUT:
|
263
|
+
|
264
|
+
- ``field`` -- a relative number field
|
265
|
+
|
266
|
+
TESTS::
|
267
|
+
|
268
|
+
sage: K.<a> = QuadraticField(2)
|
269
|
+
sage: M.<b,a_> = K.relativize(-a)
|
270
|
+
sage: M.structure() # indirect doctest
|
271
|
+
(Relative number field morphism:
|
272
|
+
From: Number Field in b with defining polynomial x + a_ over its base field
|
273
|
+
To: Number Field in a with defining polynomial x^2 - 2 with a = 1.414213562373095?
|
274
|
+
Defn: -a_ |--> a
|
275
|
+
a_ |--> -a, Ring morphism:
|
276
|
+
From: Number Field in a with defining polynomial x^2 - 2 with a = 1.414213562373095?
|
277
|
+
To: Number Field in b with defining polynomial x + a_ over its base field
|
278
|
+
Defn: a |--> -a_)
|
279
|
+
"""
|
280
|
+
# other field
|
281
|
+
# \ /
|
282
|
+
# \ Q(gen)
|
283
|
+
# \ /
|
284
|
+
# Q
|
285
|
+
other = self.other
|
286
|
+
gen = self.gen
|
287
|
+
|
288
|
+
# the isomorphism from left to right is easy since the generators of
|
289
|
+
# other and field are the same
|
290
|
+
other_to_field = other.hom([field.gen(0)], field, check=True)
|
291
|
+
assert other_to_field(gen) == field(field.base_field().gen())
|
292
|
+
|
293
|
+
# to go from right to left, we first define a map from Q(gen) to other
|
294
|
+
base_map = field.base_field().hom([gen], other)
|
295
|
+
# and extend it to a map from field
|
296
|
+
field_to_other = field.Hom(other)([other.gen()], base_map=base_map, check=True)
|
297
|
+
|
298
|
+
return field_to_other, other_to_field
|
299
|
+
|
300
|
+
|
301
|
+
class RelativeFromRelative(NumberFieldStructure):
|
302
|
+
r"""
|
303
|
+
Structure for a relative number field created from another relative number
|
304
|
+
field.
|
305
|
+
|
306
|
+
INPUT:
|
307
|
+
|
308
|
+
- ``other`` -- the relative number field used in the construction, see
|
309
|
+
:meth:`create_structure`; there this field will be called ``field_``
|
310
|
+
|
311
|
+
TESTS::
|
312
|
+
|
313
|
+
sage: from sage.rings.number_field.structure import RelativeFromRelative
|
314
|
+
sage: K.<i> = QuadraticField(-1)
|
315
|
+
sage: R.<x> = K[]
|
316
|
+
sage: L.<a> = K.extension(x^2 - 2)
|
317
|
+
sage: RelativeFromRelative(L)
|
318
|
+
<sage.rings.number_field.structure.RelativeFromRelative object at 0x...>
|
319
|
+
"""
|
320
|
+
def create_structure(self, field):
|
321
|
+
r"""
|
322
|
+
Return a pair of isomorphisms which go from ``field`` to the relative
|
323
|
+
number field (called ``other`` below) from which ``field`` has been
|
324
|
+
created and vice versa.
|
325
|
+
|
326
|
+
The isomorphism is created via the relative number field ``field_``
|
327
|
+
which is identical to ``field`` but is equipped with an isomorphism to
|
328
|
+
an absolute field which was used in the construction of ``field``.
|
329
|
+
|
330
|
+
INPUT:
|
331
|
+
|
332
|
+
- ``field`` -- a relative number field
|
333
|
+
|
334
|
+
TESTS::
|
335
|
+
|
336
|
+
sage: K.<i> = QuadraticField(-1)
|
337
|
+
sage: R.<x> = K[]
|
338
|
+
sage: L.<a> = K.extension(x^2 - 2)
|
339
|
+
sage: M.<b,a> = L.relativize(a)
|
340
|
+
sage: M.structure() # indirect doctest
|
341
|
+
(Relative number field morphism:
|
342
|
+
From: Number Field in b with defining polynomial x^2 - 2*a*x + 3 over its base field
|
343
|
+
To: Number Field in a with defining polynomial x^2 - 2 over its base field
|
344
|
+
Defn: b |--> a - i
|
345
|
+
a |--> a, Relative number field morphism:
|
346
|
+
From: Number Field in a with defining polynomial x^2 - 2 over its base field
|
347
|
+
To: Number Field in b with defining polynomial x^2 - 2*a*x + 3 over its base field
|
348
|
+
Defn: a |--> a
|
349
|
+
i |--> -b + a)
|
350
|
+
"""
|
351
|
+
# other and field_ are relative number fields which are isomorphic via
|
352
|
+
# an absolute number field abs.
|
353
|
+
# field and field_ are identical except that field_.structure() returns
|
354
|
+
# the isomorphism with abs and field returns an isomorphism with other
|
355
|
+
# (which we construct in this method).
|
356
|
+
#
|
357
|
+
# f g h
|
358
|
+
# other -> abs -> field_ -> field
|
359
|
+
field_ = self.other
|
360
|
+
g_, g = field_.structure()
|
361
|
+
abs = g.domain()
|
362
|
+
f_, f = abs.structure()
|
363
|
+
other = f.domain()
|
364
|
+
h = lambda x: field._element_constructor_(x.list())
|
365
|
+
h_ = lambda x: field_._element_constructor_(x.list())
|
366
|
+
|
367
|
+
# First, we construct the isomorphism from other to field by embedding
|
368
|
+
# other.base_field() into field.
|
369
|
+
gf = g*f
|
370
|
+
base = other.base_field()
|
371
|
+
base_to_field = base.Hom(field)([h(gf(other.gen(1)))])
|
372
|
+
other_to_field = other.Hom(field)([h(gf(other.gen()))], base_map=base_to_field)
|
373
|
+
|
374
|
+
# And its inverse, essentially the same construction:
|
375
|
+
f_g_ = f_*g_
|
376
|
+
base = field.base_field()
|
377
|
+
base_to_other = base.Hom(other)([f_g_(h_(field.gen(1)))])
|
378
|
+
field_to_other = field.Hom(other)([f_g_(h_(field.gen()))], base_map=base_to_other)
|
379
|
+
|
380
|
+
return field_to_other, other_to_field
|