passagemath-modules 10.6.31rc3__cp314-cp314-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.
Potentially problematic release.
This version of passagemath-modules might be problematic. Click here for more details.
- passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
- passagemath_modules-10.6.31rc3.dist-info/RECORD +807 -0
- passagemath_modules-10.6.31rc3.dist-info/WHEEL +6 -0
- passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
- passagemath_modules.libs/libgfortran-83c28eba.so.5.0.0 +0 -0
- passagemath_modules.libs/libgmp-6e109695.so.10.5.0 +0 -0
- passagemath_modules.libs/libgsl-cda90e79.so.28.0.0 +0 -0
- passagemath_modules.libs/libmpc-7f678fcf.so.3.3.1 +0 -0
- passagemath_modules.libs/libmpfr-82690d50.so.6.2.1 +0 -0
- passagemath_modules.libs/libopenblasp-r0-6dcb67f9.3.29.so +0 -0
- passagemath_modules.libs/libquadmath-2284e583.so.0.0.0 +0 -0
- sage/algebras/all__sagemath_modules.py +20 -0
- sage/algebras/catalog.py +148 -0
- sage/algebras/clifford_algebra.py +3107 -0
- sage/algebras/clifford_algebra_element.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/clifford_algebra_element.pxd +16 -0
- sage/algebras/clifford_algebra_element.pyx +997 -0
- sage/algebras/commutative_dga.py +4252 -0
- sage/algebras/exterior_algebra_groebner.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/exterior_algebra_groebner.pxd +55 -0
- sage/algebras/exterior_algebra_groebner.pyx +727 -0
- sage/algebras/finite_dimensional_algebras/all.py +2 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
- sage/algebras/finite_gca.py +528 -0
- sage/algebras/group_algebra.py +232 -0
- sage/algebras/lie_algebras/abelian.py +197 -0
- sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
- sage/algebras/lie_algebras/all.py +25 -0
- sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
- sage/algebras/lie_algebras/bch.py +177 -0
- sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
- sage/algebras/lie_algebras/bgg_resolution.py +232 -0
- sage/algebras/lie_algebras/center_uea.py +767 -0
- sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
- sage/algebras/lie_algebras/examples.py +683 -0
- sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
- sage/algebras/lie_algebras/heisenberg.py +820 -0
- sage/algebras/lie_algebras/lie_algebra.py +1562 -0
- sage/algebras/lie_algebras/lie_algebra_element.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
- sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
- sage/algebras/lie_algebras/morphism.py +661 -0
- sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
- sage/algebras/lie_algebras/onsager.py +1324 -0
- sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
- sage/algebras/lie_algebras/quotient.py +462 -0
- sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
- sage/algebras/lie_algebras/representation.py +1040 -0
- sage/algebras/lie_algebras/structure_coefficients.py +459 -0
- sage/algebras/lie_algebras/subalgebra.py +967 -0
- sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
- sage/algebras/lie_algebras/verma_module.py +1630 -0
- sage/algebras/lie_algebras/virasoro.py +1186 -0
- sage/algebras/octonion_algebra.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/algebras/octonion_algebra.pxd +20 -0
- sage/algebras/octonion_algebra.pyx +987 -0
- sage/algebras/orlik_solomon.py +907 -0
- sage/algebras/orlik_terao.py +779 -0
- sage/algebras/steenrod/all.py +7 -0
- sage/algebras/steenrod/steenrod_algebra.py +4258 -0
- sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
- sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
- sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
- sage/algebras/weyl_algebra.py +1126 -0
- sage/all__sagemath_modules.py +62 -0
- sage/calculus/all__sagemath_modules.py +19 -0
- sage/calculus/expr.py +205 -0
- sage/calculus/integration.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/calculus/integration.pyx +698 -0
- sage/calculus/interpolation.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/calculus/interpolation.pxd +13 -0
- sage/calculus/interpolation.pyx +387 -0
- sage/calculus/interpolators.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/calculus/interpolators.pyx +326 -0
- sage/calculus/ode.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/calculus/ode.pxd +5 -0
- sage/calculus/ode.pyx +610 -0
- sage/calculus/riemann.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/calculus/riemann.pyx +1521 -0
- sage/calculus/test_sympy.py +201 -0
- sage/calculus/transforms/all.py +7 -0
- sage/calculus/transforms/dft.py +844 -0
- sage/calculus/transforms/dwt.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/calculus/transforms/dwt.pxd +7 -0
- sage/calculus/transforms/dwt.pyx +160 -0
- sage/calculus/transforms/fft.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/calculus/transforms/fft.pxd +12 -0
- sage/calculus/transforms/fft.pyx +487 -0
- sage/calculus/wester.py +662 -0
- sage/coding/abstract_code.py +1108 -0
- sage/coding/ag_code.py +868 -0
- sage/coding/ag_code_decoders.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/coding/ag_code_decoders.pyx +2639 -0
- sage/coding/all.py +15 -0
- sage/coding/bch_code.py +494 -0
- sage/coding/binary_code.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/coding/binary_code.pxd +124 -0
- sage/coding/binary_code.pyx +4139 -0
- sage/coding/bounds_catalog.py +43 -0
- sage/coding/channel.py +819 -0
- sage/coding/channels_catalog.py +29 -0
- sage/coding/code_bounds.py +755 -0
- sage/coding/code_constructions.py +804 -0
- sage/coding/codes_catalog.py +111 -0
- sage/coding/cyclic_code.py +1329 -0
- sage/coding/databases.py +316 -0
- sage/coding/decoder.py +373 -0
- sage/coding/decoders_catalog.py +88 -0
- sage/coding/delsarte_bounds.py +709 -0
- sage/coding/encoder.py +390 -0
- sage/coding/encoders_catalog.py +64 -0
- sage/coding/extended_code.py +468 -0
- sage/coding/gabidulin_code.py +1058 -0
- sage/coding/golay_code.py +404 -0
- sage/coding/goppa_code.py +441 -0
- sage/coding/grs_code.py +2371 -0
- sage/coding/guava.py +107 -0
- sage/coding/guruswami_sudan/all.py +1 -0
- sage/coding/guruswami_sudan/gs_decoder.py +897 -0
- sage/coding/guruswami_sudan/interpolation.py +409 -0
- sage/coding/guruswami_sudan/utils.py +176 -0
- sage/coding/hamming_code.py +176 -0
- sage/coding/information_set_decoder.py +1032 -0
- sage/coding/kasami_codes.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/coding/kasami_codes.pyx +351 -0
- sage/coding/linear_code.py +3067 -0
- sage/coding/linear_code_no_metric.py +1354 -0
- sage/coding/linear_rank_metric.py +961 -0
- sage/coding/parity_check_code.py +353 -0
- sage/coding/punctured_code.py +719 -0
- sage/coding/reed_muller_code.py +999 -0
- sage/coding/self_dual_codes.py +942 -0
- sage/coding/source_coding/all.py +2 -0
- sage/coding/source_coding/huffman.py +553 -0
- sage/coding/subfield_subcode.py +423 -0
- sage/coding/two_weight_db.py +399 -0
- sage/combinat/all__sagemath_modules.py +7 -0
- sage/combinat/cartesian_product.py +347 -0
- sage/combinat/family.py +11 -0
- sage/combinat/free_module.py +1977 -0
- sage/combinat/root_system/all.py +147 -0
- sage/combinat/root_system/ambient_space.py +527 -0
- sage/combinat/root_system/associahedron.py +471 -0
- sage/combinat/root_system/braid_move_calculator.py +143 -0
- sage/combinat/root_system/braid_orbit.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/combinat/root_system/braid_orbit.pyx +144 -0
- sage/combinat/root_system/branching_rules.py +2301 -0
- sage/combinat/root_system/cartan_matrix.py +1245 -0
- sage/combinat/root_system/cartan_type.py +3069 -0
- sage/combinat/root_system/coxeter_group.py +162 -0
- sage/combinat/root_system/coxeter_matrix.py +1261 -0
- sage/combinat/root_system/coxeter_type.py +681 -0
- sage/combinat/root_system/dynkin_diagram.py +900 -0
- sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
- sage/combinat/root_system/fundamental_group.py +795 -0
- sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
- sage/combinat/root_system/integrable_representations.py +1227 -0
- sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
- sage/combinat/root_system/pieri_factors.py +1147 -0
- sage/combinat/root_system/plot.py +1615 -0
- sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
- sage/combinat/root_system/root_lattice_realizations.py +4628 -0
- sage/combinat/root_system/root_space.py +487 -0
- sage/combinat/root_system/root_system.py +882 -0
- sage/combinat/root_system/type_A.py +348 -0
- sage/combinat/root_system/type_A_affine.py +227 -0
- sage/combinat/root_system/type_A_infinity.py +241 -0
- sage/combinat/root_system/type_B.py +347 -0
- sage/combinat/root_system/type_BC_affine.py +287 -0
- sage/combinat/root_system/type_B_affine.py +216 -0
- sage/combinat/root_system/type_C.py +317 -0
- sage/combinat/root_system/type_C_affine.py +188 -0
- sage/combinat/root_system/type_D.py +357 -0
- sage/combinat/root_system/type_D_affine.py +208 -0
- sage/combinat/root_system/type_E.py +641 -0
- sage/combinat/root_system/type_E_affine.py +231 -0
- sage/combinat/root_system/type_F.py +387 -0
- sage/combinat/root_system/type_F_affine.py +137 -0
- sage/combinat/root_system/type_G.py +293 -0
- sage/combinat/root_system/type_G_affine.py +132 -0
- sage/combinat/root_system/type_H.py +105 -0
- sage/combinat/root_system/type_I.py +110 -0
- sage/combinat/root_system/type_Q.py +150 -0
- sage/combinat/root_system/type_affine.py +509 -0
- sage/combinat/root_system/type_dual.py +704 -0
- sage/combinat/root_system/type_folded.py +301 -0
- sage/combinat/root_system/type_marked.py +748 -0
- sage/combinat/root_system/type_reducible.py +601 -0
- sage/combinat/root_system/type_relabel.py +730 -0
- sage/combinat/root_system/type_super_A.py +837 -0
- sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
- sage/combinat/root_system/weight_space.py +639 -0
- sage/combinat/root_system/weyl_characters.py +2238 -0
- sage/crypto/__init__.py +4 -0
- sage/crypto/all.py +28 -0
- sage/crypto/block_cipher/all.py +7 -0
- sage/crypto/block_cipher/des.py +1065 -0
- sage/crypto/block_cipher/miniaes.py +2171 -0
- sage/crypto/block_cipher/present.py +909 -0
- sage/crypto/block_cipher/sdes.py +1527 -0
- sage/crypto/boolean_function.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/crypto/boolean_function.pxd +10 -0
- sage/crypto/boolean_function.pyx +1487 -0
- sage/crypto/cipher.py +78 -0
- sage/crypto/classical.py +3668 -0
- sage/crypto/classical_cipher.py +569 -0
- sage/crypto/cryptosystem.py +387 -0
- sage/crypto/key_exchange/all.py +7 -0
- sage/crypto/key_exchange/catalog.py +24 -0
- sage/crypto/key_exchange/diffie_hellman.py +323 -0
- sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
- sage/crypto/lattice.py +312 -0
- sage/crypto/lfsr.py +295 -0
- sage/crypto/lwe.py +840 -0
- sage/crypto/mq/__init__.py +4 -0
- sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
- sage/crypto/mq/rijndael_gf.py +2345 -0
- sage/crypto/mq/sbox.py +7 -0
- sage/crypto/mq/sr.py +3344 -0
- sage/crypto/public_key/all.py +5 -0
- sage/crypto/public_key/blum_goldwasser.py +776 -0
- sage/crypto/sbox.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/crypto/sbox.pyx +2090 -0
- sage/crypto/sboxes.py +2090 -0
- sage/crypto/stream.py +390 -0
- sage/crypto/stream_cipher.py +297 -0
- sage/crypto/util.py +519 -0
- sage/ext/all__sagemath_modules.py +1 -0
- sage/ext/interpreters/__init__.py +1 -0
- sage/ext/interpreters/all__sagemath_modules.py +2 -0
- sage/ext/interpreters/wrapper_cc.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/ext/interpreters/wrapper_cc.pxd +30 -0
- sage/ext/interpreters/wrapper_cc.pyx +252 -0
- sage/ext/interpreters/wrapper_cdf.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/ext/interpreters/wrapper_cdf.pxd +26 -0
- sage/ext/interpreters/wrapper_cdf.pyx +245 -0
- sage/ext/interpreters/wrapper_rdf.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/ext/interpreters/wrapper_rdf.pxd +23 -0
- sage/ext/interpreters/wrapper_rdf.pyx +221 -0
- sage/ext/interpreters/wrapper_rr.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/ext/interpreters/wrapper_rr.pxd +28 -0
- sage/ext/interpreters/wrapper_rr.pyx +335 -0
- sage/geometry/all__sagemath_modules.py +5 -0
- sage/geometry/toric_lattice.py +1745 -0
- sage/geometry/toric_lattice_element.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/geometry/toric_lattice_element.pyx +432 -0
- sage/groups/abelian_gps/abelian_group.py +1925 -0
- sage/groups/abelian_gps/abelian_group_element.py +164 -0
- sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
- sage/groups/abelian_gps/dual_abelian_group.py +421 -0
- sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
- sage/groups/abelian_gps/element_base.py +341 -0
- sage/groups/abelian_gps/values.py +488 -0
- sage/groups/additive_abelian/additive_abelian_group.py +476 -0
- sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
- sage/groups/additive_abelian/all.py +4 -0
- sage/groups/additive_abelian/qmodnz.py +231 -0
- sage/groups/additive_abelian/qmodnz_element.py +349 -0
- sage/groups/affine_gps/affine_group.py +535 -0
- sage/groups/affine_gps/all.py +1 -0
- sage/groups/affine_gps/catalog.py +17 -0
- sage/groups/affine_gps/euclidean_group.py +246 -0
- sage/groups/affine_gps/group_element.py +562 -0
- sage/groups/all__sagemath_modules.py +12 -0
- sage/groups/galois_group.py +479 -0
- sage/groups/matrix_gps/all.py +4 -0
- sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
- sage/groups/matrix_gps/catalog.py +26 -0
- sage/groups/matrix_gps/coxeter_group.py +927 -0
- sage/groups/matrix_gps/finitely_generated.py +487 -0
- sage/groups/matrix_gps/group_element.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/groups/matrix_gps/group_element.pxd +11 -0
- sage/groups/matrix_gps/group_element.pyx +431 -0
- sage/groups/matrix_gps/linear.py +440 -0
- sage/groups/matrix_gps/matrix_group.py +617 -0
- sage/groups/matrix_gps/named_group.py +296 -0
- sage/groups/matrix_gps/orthogonal.py +544 -0
- sage/groups/matrix_gps/symplectic.py +251 -0
- sage/groups/matrix_gps/unitary.py +436 -0
- sage/groups/misc_gps/all__sagemath_modules.py +1 -0
- sage/groups/misc_gps/argument_groups.py +1905 -0
- sage/groups/misc_gps/imaginary_groups.py +479 -0
- sage/groups/perm_gps/all__sagemath_modules.py +1 -0
- sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
- sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
- sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
- sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
- sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
- sage/homology/algebraic_topological_model.py +595 -0
- sage/homology/all.py +2 -0
- sage/homology/all__sagemath_modules.py +8 -0
- sage/homology/chain_complex.py +2148 -0
- sage/homology/chain_complex_homspace.py +165 -0
- sage/homology/chain_complex_morphism.py +629 -0
- sage/homology/chain_homotopy.py +604 -0
- sage/homology/chains.py +653 -0
- sage/homology/free_resolution.py +923 -0
- sage/homology/graded_resolution.py +567 -0
- sage/homology/hochschild_complex.py +756 -0
- sage/homology/homology_group.py +188 -0
- sage/homology/homology_morphism.py +422 -0
- sage/homology/homology_vector_space_with_basis.py +1454 -0
- sage/homology/koszul_complex.py +169 -0
- sage/homology/matrix_utils.py +205 -0
- sage/libs/all__sagemath_modules.py +1 -0
- sage/libs/gsl/__init__.py +1 -0
- sage/libs/gsl/airy.pxd +56 -0
- sage/libs/gsl/all.pxd +66 -0
- sage/libs/gsl/array.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/libs/gsl/array.pxd +5 -0
- sage/libs/gsl/array.pyx +102 -0
- sage/libs/gsl/bessel.pxd +208 -0
- sage/libs/gsl/blas.pxd +116 -0
- sage/libs/gsl/blas_types.pxd +34 -0
- sage/libs/gsl/block.pxd +52 -0
- sage/libs/gsl/chebyshev.pxd +37 -0
- sage/libs/gsl/clausen.pxd +12 -0
- sage/libs/gsl/combination.pxd +47 -0
- sage/libs/gsl/complex.pxd +151 -0
- sage/libs/gsl/coulomb.pxd +30 -0
- sage/libs/gsl/coupling.pxd +21 -0
- sage/libs/gsl/dawson.pxd +12 -0
- sage/libs/gsl/debye.pxd +24 -0
- sage/libs/gsl/dilog.pxd +14 -0
- sage/libs/gsl/eigen.pxd +46 -0
- sage/libs/gsl/elementary.pxd +12 -0
- sage/libs/gsl/ellint.pxd +48 -0
- sage/libs/gsl/elljac.pxd +8 -0
- sage/libs/gsl/erf.pxd +32 -0
- sage/libs/gsl/errno.pxd +26 -0
- sage/libs/gsl/exp.pxd +44 -0
- sage/libs/gsl/expint.pxd +44 -0
- sage/libs/gsl/fermi_dirac.pxd +44 -0
- sage/libs/gsl/fft.pxd +121 -0
- sage/libs/gsl/fit.pxd +50 -0
- sage/libs/gsl/gamma.pxd +94 -0
- sage/libs/gsl/gegenbauer.pxd +26 -0
- sage/libs/gsl/histogram.pxd +176 -0
- sage/libs/gsl/hyperg.pxd +52 -0
- sage/libs/gsl/integration.pxd +69 -0
- sage/libs/gsl/interp.pxd +109 -0
- sage/libs/gsl/laguerre.pxd +24 -0
- sage/libs/gsl/lambert.pxd +16 -0
- sage/libs/gsl/legendre.pxd +90 -0
- sage/libs/gsl/linalg.pxd +185 -0
- sage/libs/gsl/log.pxd +26 -0
- sage/libs/gsl/math.pxd +43 -0
- sage/libs/gsl/matrix.pxd +143 -0
- sage/libs/gsl/matrix_complex.pxd +130 -0
- sage/libs/gsl/min.pxd +67 -0
- sage/libs/gsl/monte.pxd +56 -0
- sage/libs/gsl/ntuple.pxd +32 -0
- sage/libs/gsl/odeiv.pxd +70 -0
- sage/libs/gsl/permutation.pxd +78 -0
- sage/libs/gsl/poly.pxd +40 -0
- sage/libs/gsl/pow_int.pxd +12 -0
- sage/libs/gsl/psi.pxd +28 -0
- sage/libs/gsl/qrng.pxd +29 -0
- sage/libs/gsl/random.pxd +257 -0
- sage/libs/gsl/rng.pxd +100 -0
- sage/libs/gsl/roots.pxd +72 -0
- sage/libs/gsl/sort.pxd +36 -0
- sage/libs/gsl/statistics.pxd +59 -0
- sage/libs/gsl/sum.pxd +55 -0
- sage/libs/gsl/synchrotron.pxd +16 -0
- sage/libs/gsl/transport.pxd +24 -0
- sage/libs/gsl/trig.pxd +58 -0
- sage/libs/gsl/types.pxd +137 -0
- sage/libs/gsl/vector.pxd +101 -0
- sage/libs/gsl/vector_complex.pxd +83 -0
- sage/libs/gsl/wavelet.pxd +49 -0
- sage/libs/gsl/zeta.pxd +28 -0
- sage/libs/mpc/__init__.pxd +114 -0
- sage/libs/mpc/types.pxd +28 -0
- sage/libs/mpfr/__init__.pxd +299 -0
- sage/libs/mpfr/types.pxd +26 -0
- sage/libs/mpmath/__init__.py +1 -0
- sage/libs/mpmath/all.py +27 -0
- sage/libs/mpmath/all__sagemath_modules.py +1 -0
- sage/libs/mpmath/utils.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/libs/mpmath/utils.pxd +4 -0
- sage/libs/mpmath/utils.pyx +319 -0
- sage/matrix/action.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/action.pxd +26 -0
- sage/matrix/action.pyx +596 -0
- sage/matrix/all.py +9 -0
- sage/matrix/args.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/args.pxd +144 -0
- sage/matrix/args.pyx +1668 -0
- sage/matrix/benchmark.py +1258 -0
- sage/matrix/berlekamp_massey.py +95 -0
- sage/matrix/compute_J_ideal.py +926 -0
- sage/matrix/constructor.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/constructor.pyx +750 -0
- sage/matrix/docs.py +430 -0
- sage/matrix/echelon_matrix.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/echelon_matrix.pyx +155 -0
- sage/matrix/matrix.pxd +2 -0
- sage/matrix/matrix0.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix0.pxd +68 -0
- sage/matrix/matrix0.pyx +6324 -0
- sage/matrix/matrix1.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix1.pxd +8 -0
- sage/matrix/matrix1.pyx +2851 -0
- sage/matrix/matrix2.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix2.pxd +25 -0
- sage/matrix/matrix2.pyx +20181 -0
- sage/matrix/matrix_cdv.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix_cdv.pxd +4 -0
- sage/matrix/matrix_cdv.pyx +93 -0
- sage/matrix/matrix_complex_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix_complex_double_dense.pxd +5 -0
- sage/matrix/matrix_complex_double_dense.pyx +98 -0
- sage/matrix/matrix_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix_dense.pxd +5 -0
- sage/matrix/matrix_dense.pyx +343 -0
- sage/matrix/matrix_domain_dense.pxd +5 -0
- sage/matrix/matrix_domain_sparse.pxd +5 -0
- sage/matrix/matrix_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix_double_dense.pxd +7 -0
- sage/matrix/matrix_double_dense.pyx +3906 -0
- sage/matrix/matrix_double_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix_double_sparse.pxd +6 -0
- sage/matrix/matrix_double_sparse.pyx +248 -0
- sage/matrix/matrix_generic_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix_generic_dense.pxd +7 -0
- sage/matrix/matrix_generic_dense.pyx +354 -0
- sage/matrix/matrix_generic_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix_generic_sparse.pxd +7 -0
- sage/matrix/matrix_generic_sparse.pyx +461 -0
- sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
- sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
- sage/matrix/matrix_misc.py +313 -0
- sage/matrix/matrix_numpy_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix_numpy_dense.pxd +14 -0
- sage/matrix/matrix_numpy_dense.pyx +450 -0
- sage/matrix/matrix_numpy_integer_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
- sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
- sage/matrix/matrix_polynomial_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix_polynomial_dense.pxd +5 -0
- sage/matrix/matrix_polynomial_dense.pyx +5341 -0
- sage/matrix/matrix_real_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix_real_double_dense.pxd +7 -0
- sage/matrix/matrix_real_double_dense.pyx +122 -0
- sage/matrix/matrix_space.py +2848 -0
- sage/matrix/matrix_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix_sparse.pxd +5 -0
- sage/matrix/matrix_sparse.pyx +1222 -0
- sage/matrix/matrix_window.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/matrix_window.pxd +37 -0
- sage/matrix/matrix_window.pyx +242 -0
- sage/matrix/misc_mpfr.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/misc_mpfr.pyx +80 -0
- sage/matrix/operation_table.py +1182 -0
- sage/matrix/special.py +3666 -0
- sage/matrix/strassen.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matrix/strassen.pyx +851 -0
- sage/matrix/symplectic_basis.py +541 -0
- sage/matrix/template.pxd +6 -0
- sage/matrix/tests.py +71 -0
- sage/matroids/advanced.py +77 -0
- sage/matroids/all.py +13 -0
- sage/matroids/basis_exchange_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matroids/basis_exchange_matroid.pxd +96 -0
- sage/matroids/basis_exchange_matroid.pyx +2344 -0
- sage/matroids/basis_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matroids/basis_matroid.pxd +45 -0
- sage/matroids/basis_matroid.pyx +1217 -0
- sage/matroids/catalog.py +44 -0
- sage/matroids/chow_ring.py +473 -0
- sage/matroids/chow_ring_ideal.py +849 -0
- sage/matroids/circuit_closures_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matroids/circuit_closures_matroid.pxd +16 -0
- sage/matroids/circuit_closures_matroid.pyx +559 -0
- sage/matroids/circuits_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matroids/circuits_matroid.pxd +38 -0
- sage/matroids/circuits_matroid.pyx +947 -0
- sage/matroids/constructor.py +1086 -0
- sage/matroids/database_collections.py +365 -0
- sage/matroids/database_matroids.py +5338 -0
- sage/matroids/dual_matroid.py +583 -0
- sage/matroids/extension.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matroids/extension.pxd +34 -0
- sage/matroids/extension.pyx +519 -0
- sage/matroids/flats_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matroids/flats_matroid.pxd +28 -0
- sage/matroids/flats_matroid.pyx +715 -0
- sage/matroids/gammoid.py +600 -0
- sage/matroids/graphic_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matroids/graphic_matroid.pxd +39 -0
- sage/matroids/graphic_matroid.pyx +2024 -0
- sage/matroids/lean_matrix.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matroids/lean_matrix.pxd +126 -0
- sage/matroids/lean_matrix.pyx +3667 -0
- sage/matroids/linear_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matroids/linear_matroid.pxd +180 -0
- sage/matroids/linear_matroid.pyx +6649 -0
- sage/matroids/matroid.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matroids/matroid.pxd +243 -0
- sage/matroids/matroid.pyx +8759 -0
- sage/matroids/matroids_catalog.py +190 -0
- sage/matroids/matroids_plot_helpers.py +890 -0
- sage/matroids/minor_matroid.py +480 -0
- sage/matroids/minorfix.h +9 -0
- sage/matroids/named_matroids.py +5 -0
- sage/matroids/rank_matroid.py +268 -0
- sage/matroids/set_system.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matroids/set_system.pxd +38 -0
- sage/matroids/set_system.pyx +800 -0
- sage/matroids/transversal_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matroids/transversal_matroid.pxd +14 -0
- sage/matroids/transversal_matroid.pyx +893 -0
- sage/matroids/union_matroid.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matroids/union_matroid.pxd +20 -0
- sage/matroids/union_matroid.pyx +331 -0
- sage/matroids/unpickling.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/matroids/unpickling.pyx +843 -0
- sage/matroids/utilities.py +809 -0
- sage/misc/all__sagemath_modules.py +20 -0
- sage/misc/c3.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/misc/c3.pyx +238 -0
- sage/misc/compat.py +87 -0
- sage/misc/element_with_label.py +173 -0
- sage/misc/func_persist.py +79 -0
- sage/misc/pickle_old.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/misc/pickle_old.pyx +19 -0
- sage/misc/proof.py +7 -0
- sage/misc/replace_dot_all.py +472 -0
- sage/misc/sagedoc_conf.py +168 -0
- sage/misc/sphinxify.py +167 -0
- sage/misc/test_class_pickling.py +85 -0
- sage/modules/all.py +42 -0
- sage/modules/complex_double_vector.py +25 -0
- sage/modules/diamond_cutting.py +380 -0
- sage/modules/fg_pid/all.py +1 -0
- sage/modules/fg_pid/fgp_element.py +456 -0
- sage/modules/fg_pid/fgp_module.py +2091 -0
- sage/modules/fg_pid/fgp_morphism.py +550 -0
- sage/modules/filtered_vector_space.py +1271 -0
- sage/modules/finite_submodule_iter.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/modules/finite_submodule_iter.pxd +27 -0
- sage/modules/finite_submodule_iter.pyx +452 -0
- sage/modules/fp_graded/all.py +1 -0
- sage/modules/fp_graded/element.py +346 -0
- sage/modules/fp_graded/free_element.py +298 -0
- sage/modules/fp_graded/free_homspace.py +53 -0
- sage/modules/fp_graded/free_module.py +1060 -0
- sage/modules/fp_graded/free_morphism.py +217 -0
- sage/modules/fp_graded/homspace.py +563 -0
- sage/modules/fp_graded/module.py +1340 -0
- sage/modules/fp_graded/morphism.py +1990 -0
- sage/modules/fp_graded/steenrod/all.py +1 -0
- sage/modules/fp_graded/steenrod/homspace.py +65 -0
- sage/modules/fp_graded/steenrod/module.py +477 -0
- sage/modules/fp_graded/steenrod/morphism.py +404 -0
- sage/modules/fp_graded/steenrod/profile.py +241 -0
- sage/modules/free_module.py +8447 -0
- sage/modules/free_module_element.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/modules/free_module_element.pxd +22 -0
- sage/modules/free_module_element.pyx +5445 -0
- sage/modules/free_module_homspace.py +369 -0
- sage/modules/free_module_integer.py +896 -0
- sage/modules/free_module_morphism.py +823 -0
- sage/modules/free_module_pseudohomspace.py +352 -0
- sage/modules/free_module_pseudomorphism.py +578 -0
- sage/modules/free_quadratic_module.py +1706 -0
- sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
- sage/modules/matrix_morphism.py +1745 -0
- sage/modules/misc.py +103 -0
- sage/modules/module_functors.py +192 -0
- sage/modules/multi_filtered_vector_space.py +719 -0
- sage/modules/ore_module.py +2208 -0
- sage/modules/ore_module_element.py +178 -0
- sage/modules/ore_module_homspace.py +147 -0
- sage/modules/ore_module_morphism.py +968 -0
- sage/modules/quotient_module.py +699 -0
- sage/modules/real_double_vector.py +22 -0
- sage/modules/submodule.py +255 -0
- sage/modules/tensor_operations.py +567 -0
- sage/modules/torsion_quadratic_module.py +1352 -0
- sage/modules/tutorial_free_modules.py +248 -0
- sage/modules/vector_complex_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/modules/vector_complex_double_dense.pxd +6 -0
- sage/modules/vector_complex_double_dense.pyx +117 -0
- sage/modules/vector_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/modules/vector_double_dense.pxd +6 -0
- sage/modules/vector_double_dense.pyx +604 -0
- sage/modules/vector_integer_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/modules/vector_integer_dense.pxd +15 -0
- sage/modules/vector_integer_dense.pyx +361 -0
- sage/modules/vector_integer_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/modules/vector_integer_sparse.pxd +29 -0
- sage/modules/vector_integer_sparse.pyx +406 -0
- sage/modules/vector_modn_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/modules/vector_modn_dense.pxd +12 -0
- sage/modules/vector_modn_dense.pyx +394 -0
- sage/modules/vector_modn_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/modules/vector_modn_sparse.pxd +21 -0
- sage/modules/vector_modn_sparse.pyx +298 -0
- sage/modules/vector_numpy_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/modules/vector_numpy_dense.pxd +15 -0
- sage/modules/vector_numpy_dense.pyx +304 -0
- sage/modules/vector_numpy_integer_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/modules/vector_numpy_integer_dense.pxd +7 -0
- sage/modules/vector_numpy_integer_dense.pyx +54 -0
- sage/modules/vector_rational_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/modules/vector_rational_dense.pxd +15 -0
- sage/modules/vector_rational_dense.pyx +387 -0
- sage/modules/vector_rational_sparse.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/modules/vector_rational_sparse.pxd +30 -0
- sage/modules/vector_rational_sparse.pyx +413 -0
- sage/modules/vector_real_double_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/modules/vector_real_double_dense.pxd +6 -0
- sage/modules/vector_real_double_dense.pyx +126 -0
- sage/modules/vector_space_homspace.py +430 -0
- sage/modules/vector_space_morphism.py +989 -0
- sage/modules/with_basis/all.py +15 -0
- sage/modules/with_basis/cell_module.py +494 -0
- sage/modules/with_basis/indexed_element.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/modules/with_basis/indexed_element.pxd +13 -0
- sage/modules/with_basis/indexed_element.pyx +1058 -0
- sage/modules/with_basis/invariant.py +1075 -0
- sage/modules/with_basis/morphism.py +1636 -0
- sage/modules/with_basis/representation.py +2939 -0
- sage/modules/with_basis/subquotient.py +685 -0
- sage/numerical/all__sagemath_modules.py +6 -0
- sage/numerical/gauss_legendre.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/numerical/gauss_legendre.pyx +381 -0
- sage/numerical/optimize.py +910 -0
- sage/probability/all.py +10 -0
- sage/probability/probability_distribution.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/probability/probability_distribution.pyx +1242 -0
- sage/probability/random_variable.py +411 -0
- sage/quadratic_forms/all.py +4 -0
- sage/quadratic_forms/all__sagemath_modules.py +15 -0
- sage/quadratic_forms/binary_qf.py +2042 -0
- sage/quadratic_forms/bqf_class_group.py +748 -0
- sage/quadratic_forms/constructions.py +93 -0
- sage/quadratic_forms/count_local_2.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/quadratic_forms/count_local_2.pyx +365 -0
- sage/quadratic_forms/extras.py +195 -0
- sage/quadratic_forms/quadratic_form.py +1753 -0
- sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
- sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
- sage/quadratic_forms/quadratic_form__evaluate.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
- sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
- sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
- sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
- sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
- sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
- sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
- sage/quadratic_forms/quadratic_form__theta.py +352 -0
- sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
- sage/quadratic_forms/random_quadraticform.py +209 -0
- sage/quadratic_forms/ternary.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/quadratic_forms/ternary.pyx +1154 -0
- sage/quadratic_forms/ternary_qf.py +2027 -0
- sage/rings/all__sagemath_modules.py +28 -0
- sage/rings/asymptotic/all__sagemath_modules.py +1 -0
- sage/rings/asymptotic/misc.py +1252 -0
- sage/rings/cc.py +4 -0
- sage/rings/cfinite_sequence.py +1306 -0
- sage/rings/complex_conversion.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/complex_conversion.pxd +8 -0
- sage/rings/complex_conversion.pyx +23 -0
- sage/rings/complex_double.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/complex_double.pxd +21 -0
- sage/rings/complex_double.pyx +2654 -0
- sage/rings/complex_mpc.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/complex_mpc.pxd +21 -0
- sage/rings/complex_mpc.pyx +2576 -0
- sage/rings/complex_mpfr.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/complex_mpfr.pxd +18 -0
- sage/rings/complex_mpfr.pyx +3602 -0
- sage/rings/derivation.py +2334 -0
- sage/rings/finite_rings/all__sagemath_modules.py +1 -0
- sage/rings/finite_rings/maps_finite_field.py +191 -0
- sage/rings/function_field/all__sagemath_modules.py +8 -0
- sage/rings/function_field/derivations.py +102 -0
- sage/rings/function_field/derivations_rational.py +132 -0
- sage/rings/function_field/differential.py +853 -0
- sage/rings/function_field/divisor.py +1107 -0
- sage/rings/function_field/drinfeld_modules/action.py +199 -0
- sage/rings/function_field/drinfeld_modules/all.py +1 -0
- sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
- sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
- sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
- sage/rings/function_field/drinfeld_modules/homset.py +420 -0
- sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
- sage/rings/function_field/hermite_form_polynomial.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
- sage/rings/function_field/khuri_makdisi.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/function_field/khuri_makdisi.pyx +935 -0
- sage/rings/invariants/all.py +4 -0
- sage/rings/invariants/invariant_theory.py +4597 -0
- sage/rings/invariants/reconstruction.py +395 -0
- sage/rings/polynomial/all__sagemath_modules.py +17 -0
- sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
- sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
- sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
- sage/rings/polynomial/ore_function_element.py +952 -0
- sage/rings/polynomial/ore_function_field.py +1028 -0
- sage/rings/polynomial/ore_polynomial_element.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
- sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
- sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
- sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
- sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
- sage/rings/polynomial/skew_polynomial_element.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
- sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
- sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
- sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
- sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
- sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
- sage/rings/polynomial/skew_polynomial_ring.py +908 -0
- sage/rings/real_double_element_gsl.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/real_double_element_gsl.pxd +8 -0
- sage/rings/real_double_element_gsl.pyx +794 -0
- sage/rings/real_field.py +58 -0
- sage/rings/real_mpfr.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/real_mpfr.pxd +29 -0
- sage/rings/real_mpfr.pyx +6122 -0
- sage/rings/ring_extension.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/ring_extension.pxd +42 -0
- sage/rings/ring_extension.pyx +2779 -0
- sage/rings/ring_extension_conversion.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/ring_extension_conversion.pxd +16 -0
- sage/rings/ring_extension_conversion.pyx +462 -0
- sage/rings/ring_extension_element.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/ring_extension_element.pxd +21 -0
- sage/rings/ring_extension_element.pyx +1635 -0
- sage/rings/ring_extension_homset.py +64 -0
- sage/rings/ring_extension_morphism.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/rings/ring_extension_morphism.pxd +35 -0
- sage/rings/ring_extension_morphism.pyx +920 -0
- sage/schemes/all__sagemath_modules.py +1 -0
- sage/schemes/projective/all__sagemath_modules.py +1 -0
- sage/schemes/projective/coherent_sheaf.py +300 -0
- sage/schemes/projective/cohomology.py +510 -0
- sage/stats/all.py +15 -0
- sage/stats/basic_stats.py +489 -0
- sage/stats/distributions/all.py +7 -0
- sage/stats/distributions/catalog.py +34 -0
- sage/stats/distributions/dgs.h +50 -0
- sage/stats/distributions/dgs.pxd +111 -0
- sage/stats/distributions/dgs_bern.h +400 -0
- sage/stats/distributions/dgs_gauss.h +614 -0
- sage/stats/distributions/dgs_misc.h +104 -0
- sage/stats/distributions/discrete_gaussian_integer.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
- sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
- sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
- sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
- sage/stats/hmm/all.py +15 -0
- sage/stats/hmm/chmm.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/stats/hmm/chmm.pyx +1595 -0
- sage/stats/hmm/distributions.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/stats/hmm/distributions.pxd +29 -0
- sage/stats/hmm/distributions.pyx +531 -0
- sage/stats/hmm/hmm.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/stats/hmm/hmm.pxd +17 -0
- sage/stats/hmm/hmm.pyx +1388 -0
- sage/stats/hmm/util.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/stats/hmm/util.pxd +7 -0
- sage/stats/hmm/util.pyx +165 -0
- sage/stats/intlist.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/stats/intlist.pxd +14 -0
- sage/stats/intlist.pyx +588 -0
- sage/stats/r.py +49 -0
- sage/stats/time_series.cpython-314-x86_64-linux-gnu.so +0 -0
- sage/stats/time_series.pxd +6 -0
- sage/stats/time_series.pyx +2546 -0
- sage/tensor/all.py +2 -0
- sage/tensor/modules/all.py +8 -0
- sage/tensor/modules/alternating_contr_tensor.py +761 -0
- sage/tensor/modules/comp.py +5598 -0
- sage/tensor/modules/ext_pow_free_module.py +824 -0
- sage/tensor/modules/finite_rank_free_module.py +3589 -0
- sage/tensor/modules/format_utilities.py +333 -0
- sage/tensor/modules/free_module_alt_form.py +858 -0
- sage/tensor/modules/free_module_automorphism.py +1207 -0
- sage/tensor/modules/free_module_basis.py +1074 -0
- sage/tensor/modules/free_module_element.py +284 -0
- sage/tensor/modules/free_module_homset.py +652 -0
- sage/tensor/modules/free_module_linear_group.py +564 -0
- sage/tensor/modules/free_module_morphism.py +1581 -0
- sage/tensor/modules/free_module_tensor.py +3289 -0
- sage/tensor/modules/reflexive_module.py +386 -0
- sage/tensor/modules/tensor_free_module.py +780 -0
- sage/tensor/modules/tensor_free_submodule.py +538 -0
- sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
- sage/tensor/modules/tensor_with_indices.py +1043 -0
|
Binary file
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
from sage.rings.polynomial.skew_polynomial_element cimport SkewPolynomial_generic_dense
|
|
3
|
+
|
|
4
|
+
cdef class SkewPolynomial_finite_order_dense (SkewPolynomial_generic_dense):
|
|
5
|
+
cdef _norm
|
|
6
|
+
cdef _charpoly
|
|
7
|
+
cdef _optbound
|
|
8
|
+
|
|
9
|
+
cdef _matphir_c(self)
|
|
10
|
+
cdef _matmul_c(self)
|
|
@@ -0,0 +1,567 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.rings.finite_rings
|
|
3
|
+
r"""
|
|
4
|
+
Univariate dense skew polynomials over a field with a finite order automorphism
|
|
5
|
+
|
|
6
|
+
AUTHOR::
|
|
7
|
+
|
|
8
|
+
- Xavier Caruso (2012-06-29): initial version
|
|
9
|
+
|
|
10
|
+
- Arpit Merchant (2016-08-04): improved docstrings, fixed doctests
|
|
11
|
+
and refactored classes and methods
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
# ***************************************************************************
|
|
15
|
+
# Copyright (C) 2012 Xavier Caruso <xavier.caruso@normalesup.org>
|
|
16
|
+
#
|
|
17
|
+
# This program is free software: you can redistribute it and/or modify
|
|
18
|
+
# it under the terms of the GNU General Public License as published by
|
|
19
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
20
|
+
# (at your option) any later version.
|
|
21
|
+
# https://www.gnu.org/licenses/
|
|
22
|
+
# ***************************************************************************
|
|
23
|
+
from sage.structure.parent cimport Parent
|
|
24
|
+
from sage.structure.element cimport RingElement
|
|
25
|
+
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
|
|
26
|
+
from sage.rings.polynomial.skew_polynomial_element cimport SkewPolynomial_generic_dense
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
cdef class SkewPolynomial_finite_order_dense(SkewPolynomial_generic_dense):
|
|
30
|
+
def __init__(self, parent, x=None, int check=1, int construct=0, **kwds):
|
|
31
|
+
"""
|
|
32
|
+
This method constructs a generic dense skew polynomial over a field equipped
|
|
33
|
+
with an automorphism of finite order.
|
|
34
|
+
|
|
35
|
+
INPUT:
|
|
36
|
+
|
|
37
|
+
- ``parent`` -- parent of ``self``
|
|
38
|
+
|
|
39
|
+
- ``x`` -- list of coefficients from which ``self`` can be constructed
|
|
40
|
+
|
|
41
|
+
- ``check`` -- flag variable to normalize the polynomial
|
|
42
|
+
|
|
43
|
+
- ``construct`` -- boolean (default: ``False``)
|
|
44
|
+
|
|
45
|
+
TESTS::
|
|
46
|
+
|
|
47
|
+
sage: R.<t> = GF(5^3)
|
|
48
|
+
sage: Frob = R.frobenius_endomorphism()
|
|
49
|
+
sage: S.<x> = R['x', Frob]; S
|
|
50
|
+
Ore Polynomial Ring in x over Finite Field in t of size 5^3 twisted by t |--> t^5
|
|
51
|
+
|
|
52
|
+
We create a skew polynomial from a list::
|
|
53
|
+
|
|
54
|
+
sage: S([t,1])
|
|
55
|
+
x + t
|
|
56
|
+
|
|
57
|
+
from another skew polynomial::
|
|
58
|
+
|
|
59
|
+
sage: S(x^2 + t)
|
|
60
|
+
x^2 + t
|
|
61
|
+
|
|
62
|
+
from a constant::
|
|
63
|
+
|
|
64
|
+
sage: x = S(t^2 + 1); x
|
|
65
|
+
t^2 + 1
|
|
66
|
+
sage: x.parent() is S
|
|
67
|
+
True
|
|
68
|
+
"""
|
|
69
|
+
SkewPolynomial_generic_dense.__init__ (self, parent, x, check, construct, **kwds)
|
|
70
|
+
self._norm = None
|
|
71
|
+
self._charpoly = None
|
|
72
|
+
self._optbound = None
|
|
73
|
+
|
|
74
|
+
cdef _matphir_c(self):
|
|
75
|
+
r"""
|
|
76
|
+
Return the matrix of the multiplication by `X^r` on
|
|
77
|
+
the quotient `K[X,\sigma] / K[X,\sigma]*self`.
|
|
78
|
+
"""
|
|
79
|
+
from sage.matrix.constructor import matrix
|
|
80
|
+
parent = self._parent
|
|
81
|
+
cdef Py_ssize_t i, j, col, exp, n
|
|
82
|
+
cdef Py_ssize_t d = self.degree()
|
|
83
|
+
cdef Py_ssize_t r = parent._order
|
|
84
|
+
cdef k = parent.base_ring()
|
|
85
|
+
cdef RingElement zero = k(0)
|
|
86
|
+
cdef RingElement one = k(1)
|
|
87
|
+
cdef list line, phir = []
|
|
88
|
+
if r < d:
|
|
89
|
+
for i from 0 <= i < d-r:
|
|
90
|
+
line = d * [zero]
|
|
91
|
+
line[r+i] = one
|
|
92
|
+
phir.append(line)
|
|
93
|
+
col = d-r
|
|
94
|
+
exp = d
|
|
95
|
+
else:
|
|
96
|
+
col = 0
|
|
97
|
+
exp = r
|
|
98
|
+
cdef SkewPolynomial_finite_order_dense powx = <SkewPolynomial_finite_order_dense>self._new_c([zero, one], parent)
|
|
99
|
+
cdef SkewPolynomial_finite_order_dense v
|
|
100
|
+
if (exp % 2 == 1):
|
|
101
|
+
v = <SkewPolynomial_finite_order_dense>self._new_c([zero,one], parent)
|
|
102
|
+
if self.degree() == 1:
|
|
103
|
+
v %= self
|
|
104
|
+
else:
|
|
105
|
+
v = <SkewPolynomial_finite_order_dense>self._new_c([one], parent)
|
|
106
|
+
exp = exp >> 1
|
|
107
|
+
n = 1
|
|
108
|
+
while exp != 0:
|
|
109
|
+
powx = (powx.conjugate(n) * powx) % self
|
|
110
|
+
n = n << 1
|
|
111
|
+
if (exp % 2 == 1):
|
|
112
|
+
v = v.conjugate(n)
|
|
113
|
+
v = (v * powx) % self
|
|
114
|
+
exp = exp >> 1
|
|
115
|
+
line = v.list()
|
|
116
|
+
line += (d - len(line)) * [zero]
|
|
117
|
+
phir.append(line)
|
|
118
|
+
for j from col+1 <= j < d:
|
|
119
|
+
v <<= 1
|
|
120
|
+
v = v.conjugate(1) % self
|
|
121
|
+
line = v._coeffs[:] + (d - len(v._coeffs)) * [zero]
|
|
122
|
+
phir.append(line)
|
|
123
|
+
return matrix(k, phir)
|
|
124
|
+
|
|
125
|
+
cdef _matmul_c(self):
|
|
126
|
+
r"""
|
|
127
|
+
Return the matrix of the multiplication by ``self`` on
|
|
128
|
+
`K[X,\sigma]` considered as a free module over `K[X^r]`
|
|
129
|
+
(here `r` is the order of `\sigma`).
|
|
130
|
+
"""
|
|
131
|
+
from sage.matrix.constructor import matrix
|
|
132
|
+
cdef Py_ssize_t i, j, deb, k, r = self.parent()._order
|
|
133
|
+
cdef Py_ssize_t d = self.degree ()
|
|
134
|
+
cdef Parent base_ring = <Parent?>self.parent().base_ring()
|
|
135
|
+
cdef RingElement zero = <RingElement?>base_ring(0)
|
|
136
|
+
cdef Polk = PolynomialRing (base_ring, 'xr')
|
|
137
|
+
cdef list M = []
|
|
138
|
+
cdef list l = self.list()
|
|
139
|
+
for j in range(r):
|
|
140
|
+
for i in range(r):
|
|
141
|
+
if i < j:
|
|
142
|
+
pol = [zero]
|
|
143
|
+
deb = i-j+r
|
|
144
|
+
else:
|
|
145
|
+
pol = []
|
|
146
|
+
deb = i-j
|
|
147
|
+
for k from deb <= k <= d by r:
|
|
148
|
+
pol.append(l[k])
|
|
149
|
+
M.append(Polk(pol))
|
|
150
|
+
for i from 0 <= i <= d:
|
|
151
|
+
l[i] = self._parent.twisting_morphism()(l[i])
|
|
152
|
+
return matrix(Polk, r, r, M)
|
|
153
|
+
|
|
154
|
+
def reduced_trace(self, var=None):
|
|
155
|
+
r"""
|
|
156
|
+
Return the reduced trace of this skew polynomial.
|
|
157
|
+
|
|
158
|
+
INPUT:
|
|
159
|
+
|
|
160
|
+
- ``var`` -- string or ``False`` or ``None`` (default: ``None``);
|
|
161
|
+
the variable name. If ``False``, return the list of coefficients.
|
|
162
|
+
|
|
163
|
+
EXAMPLES::
|
|
164
|
+
|
|
165
|
+
sage: k.<t> = GF(5^3)
|
|
166
|
+
sage: Frob = k.frobenius_endomorphism()
|
|
167
|
+
sage: S.<x> = k['x', Frob]
|
|
168
|
+
sage: a = x^3 + (2*t^2 + 3)*x^2 + (4*t^2 + t + 4)*x + 2*t^2 + 2
|
|
169
|
+
sage: tr = a.reduced_trace(); tr
|
|
170
|
+
3*z + 4
|
|
171
|
+
|
|
172
|
+
The reduced trace lies in the center of `S`, which is a univariate
|
|
173
|
+
polynomial ring in the variable `z = x^3` over `\GF{5}`::
|
|
174
|
+
|
|
175
|
+
sage: tr.parent()
|
|
176
|
+
Univariate Polynomial Ring in z over Finite Field of size 5
|
|
177
|
+
sage: tr.parent() is S.center()
|
|
178
|
+
True
|
|
179
|
+
|
|
180
|
+
We can use explicit conversion to view ``tr`` as a skew polynomial::
|
|
181
|
+
|
|
182
|
+
sage: S(tr)
|
|
183
|
+
3*x^3 + 4
|
|
184
|
+
|
|
185
|
+
By default, the name of the central variable is usually ``z`` (see
|
|
186
|
+
:meth:`~sage.rings.polynomial.skew_polynomial_ring.SkewPolynomialRing_finite_order.center`
|
|
187
|
+
for more details about this).
|
|
188
|
+
However, the user can specify a different variable name if desired::
|
|
189
|
+
|
|
190
|
+
sage: a.reduced_trace(var='u')
|
|
191
|
+
3*u + 4
|
|
192
|
+
|
|
193
|
+
When passing in ``var=False``, a tuple of coefficients (instead of
|
|
194
|
+
an actual polynomial) is returned::
|
|
195
|
+
|
|
196
|
+
sage: a.reduced_trace(var=False)
|
|
197
|
+
(4, 3)
|
|
198
|
+
|
|
199
|
+
TESTS:
|
|
200
|
+
|
|
201
|
+
We check that the reduced trace is additive::
|
|
202
|
+
|
|
203
|
+
sage: a = S.random_element(degree=5)
|
|
204
|
+
sage: b = S.random_element(degree=7)
|
|
205
|
+
sage: a.reduced_trace() + b.reduced_trace() == (a+b).reduced_trace()
|
|
206
|
+
True
|
|
207
|
+
|
|
208
|
+
.. SEEALSO::
|
|
209
|
+
|
|
210
|
+
:meth:`reduced_norm`, :meth:`reduced_charpoly`
|
|
211
|
+
"""
|
|
212
|
+
order = self.parent()._order
|
|
213
|
+
twisting_morphism = self.parent().twisting_morphism()
|
|
214
|
+
coeffs = []
|
|
215
|
+
for i in range(0, self.degree()+1, order):
|
|
216
|
+
tr = c = self._coeffs[i]
|
|
217
|
+
for _ in range(order-1):
|
|
218
|
+
tr = c + twisting_morphism(tr)
|
|
219
|
+
coeffs.append(tr)
|
|
220
|
+
if var is False:
|
|
221
|
+
return tuple(coeffs)
|
|
222
|
+
Z = self.parent().center(name=var)
|
|
223
|
+
return Z(coeffs)
|
|
224
|
+
|
|
225
|
+
def reduced_norm(self, var=None):
|
|
226
|
+
r"""
|
|
227
|
+
Return the reduced norm of this skew polynomial.
|
|
228
|
+
|
|
229
|
+
INPUT:
|
|
230
|
+
|
|
231
|
+
- ``var`` -- string or ``False`` or ``None`` (default: ``None``);
|
|
232
|
+
the variable name. If ``False``, return the list of coefficients.
|
|
233
|
+
|
|
234
|
+
.. NOTE::
|
|
235
|
+
|
|
236
|
+
The result is cached.
|
|
237
|
+
|
|
238
|
+
EXAMPLES::
|
|
239
|
+
|
|
240
|
+
sage: k.<t> = GF(5^3)
|
|
241
|
+
sage: Frob = k.frobenius_endomorphism()
|
|
242
|
+
sage: S.<x> = k['x', Frob]
|
|
243
|
+
sage: a = x^3 + (2*t^2 + 3)*x^2 + (4*t^2 + t + 4)*x + 2*t^2 + 2
|
|
244
|
+
sage: N = a.reduced_norm(); N
|
|
245
|
+
z^3 + 4*z^2 + 4
|
|
246
|
+
|
|
247
|
+
The reduced norm lies in the center of `S`, which is a univariate
|
|
248
|
+
polynomial ring in the variable `z = x^3` over `\GF{5}`::
|
|
249
|
+
|
|
250
|
+
sage: N.parent()
|
|
251
|
+
Univariate Polynomial Ring in z over Finite Field of size 5
|
|
252
|
+
sage: N.parent() is S.center()
|
|
253
|
+
True
|
|
254
|
+
|
|
255
|
+
We can use explicit conversion to view ``N`` as a skew polynomial::
|
|
256
|
+
|
|
257
|
+
sage: S(N)
|
|
258
|
+
x^9 + 4*x^6 + 4
|
|
259
|
+
|
|
260
|
+
By default, the name of the central variable is usually ``z`` (see
|
|
261
|
+
:meth:`~sage.rings.polynomial.skew_polynomial_ring.SkewPolynomialRing_finite_order.center`
|
|
262
|
+
for more details about this).
|
|
263
|
+
However, the user can specify a different variable name if desired::
|
|
264
|
+
|
|
265
|
+
sage: a.reduced_norm(var='u')
|
|
266
|
+
u^3 + 4*u^2 + 4
|
|
267
|
+
|
|
268
|
+
When passing in ``var=False``, a tuple of coefficients (instead of
|
|
269
|
+
an actual polynomial) is returned::
|
|
270
|
+
|
|
271
|
+
sage: a.reduced_norm(var=False)
|
|
272
|
+
(4, 0, 4, 1)
|
|
273
|
+
|
|
274
|
+
TESTS:
|
|
275
|
+
|
|
276
|
+
We check that `N` is a multiple of `a`::
|
|
277
|
+
|
|
278
|
+
sage: S(N).is_right_divisible_by(a)
|
|
279
|
+
True
|
|
280
|
+
sage: S(N).is_left_divisible_by(a)
|
|
281
|
+
True
|
|
282
|
+
|
|
283
|
+
We check that the reduced norm is a multiplicative map::
|
|
284
|
+
|
|
285
|
+
sage: a = S.random_element(degree=5)
|
|
286
|
+
sage: b = S.random_element(degree=7)
|
|
287
|
+
sage: a.reduced_norm() * b.reduced_norm() == (a*b).reduced_norm()
|
|
288
|
+
True
|
|
289
|
+
|
|
290
|
+
We check that the reduced norm is correctly computed for a
|
|
291
|
+
constant polynomial::
|
|
292
|
+
|
|
293
|
+
sage: c = k.random_element()
|
|
294
|
+
sage: S(c).reduced_norm() == c.norm()
|
|
295
|
+
True
|
|
296
|
+
|
|
297
|
+
ALGORITHM:
|
|
298
|
+
|
|
299
|
+
If `r` (= the order of the twist map) is small compared
|
|
300
|
+
to `d` (= the degree of this skew polynomial), the reduced
|
|
301
|
+
norm is computed as the determinant of the multiplication
|
|
302
|
+
by `P` (= this skew polynomial) acting on `K[X,\sigma]`
|
|
303
|
+
(= the underlying skew ring) viewed as a free module of
|
|
304
|
+
rank `r` over `K[X^r]`.
|
|
305
|
+
|
|
306
|
+
Otherwise, the reduced norm is computed as the characteristic
|
|
307
|
+
polynomial of the left multiplication by `X` on the quotient
|
|
308
|
+
`K[X,\sigma] / K[X,\sigma] P` (which is a `K`-vector space
|
|
309
|
+
of dimension `d`).
|
|
310
|
+
|
|
311
|
+
.. SEEALSO::
|
|
312
|
+
|
|
313
|
+
:meth:`reduced_trace`, :meth:`reduced_charpoly`
|
|
314
|
+
"""
|
|
315
|
+
if self._norm is None:
|
|
316
|
+
if self.is_zero():
|
|
317
|
+
self._norm = 0
|
|
318
|
+
else:
|
|
319
|
+
parent = self._parent
|
|
320
|
+
section = parent._embed_constants.section()
|
|
321
|
+
exp = (parent.base_ring().cardinality() - 1) / (parent._constants.cardinality() - 1)
|
|
322
|
+
order = self.parent()._order
|
|
323
|
+
lc = section(self.leading_coefficient()**exp)
|
|
324
|
+
if self.degree() == 0:
|
|
325
|
+
self._norm = (lc,)
|
|
326
|
+
elif order < self.degree():
|
|
327
|
+
M = self._matmul_c()
|
|
328
|
+
self._norm = tuple(lc*section(x) for x in M.determinant().monic().list())
|
|
329
|
+
else:
|
|
330
|
+
charpoly = self._matphir_c().characteristic_polynomial()
|
|
331
|
+
self._norm = tuple(lc*section(x) for x in charpoly.list())
|
|
332
|
+
if var is False:
|
|
333
|
+
return self._norm
|
|
334
|
+
center = self.parent().center(name=var)
|
|
335
|
+
return center(self._norm)
|
|
336
|
+
|
|
337
|
+
def reduced_charpoly(self, var=None):
|
|
338
|
+
r"""
|
|
339
|
+
Return the reduced characteristic polynomial of this
|
|
340
|
+
skew polynomial.
|
|
341
|
+
|
|
342
|
+
INPUT:
|
|
343
|
+
|
|
344
|
+
- ``var`` -- string, a pair of strings or ``None``
|
|
345
|
+
(default: ``None``); the variable names used for the
|
|
346
|
+
characteristic polynomial and the center
|
|
347
|
+
|
|
348
|
+
.. NOTE::
|
|
349
|
+
|
|
350
|
+
The result is cached.
|
|
351
|
+
|
|
352
|
+
EXAMPLES::
|
|
353
|
+
|
|
354
|
+
sage: k.<t> = GF(5^3)
|
|
355
|
+
sage: Frob = k.frobenius_endomorphism()
|
|
356
|
+
sage: S.<u> = k['u', Frob]
|
|
357
|
+
sage: a = u^3 + (2*t^2 + 3)*u^2 + (4*t^2 + t + 4)*u + 2*t^2 + 2
|
|
358
|
+
sage: chi = a.reduced_charpoly()
|
|
359
|
+
sage: chi
|
|
360
|
+
x^3 + (2*z + 1)*x^2 + (3*z^2 + 4*z)*x + 4*z^3 + z^2 + 1
|
|
361
|
+
|
|
362
|
+
The reduced characteristic polynomial has coefficients in the center
|
|
363
|
+
of `S`, which is itself a univariate polynomial ring in the variable
|
|
364
|
+
`z = u^3` over `\GF{5}`. Hence it appears as a bivariate polynomial::
|
|
365
|
+
|
|
366
|
+
sage: chi.parent()
|
|
367
|
+
Univariate Polynomial Ring in x over Univariate Polynomial Ring in z over Finite Field of size 5
|
|
368
|
+
|
|
369
|
+
The constant coefficient of the reduced characteristic polynomial is
|
|
370
|
+
the reduced norm, up to a sign::
|
|
371
|
+
|
|
372
|
+
sage: chi[0] == -a.reduced_norm()
|
|
373
|
+
True
|
|
374
|
+
|
|
375
|
+
Its coefficient of degree `\deg(a) - 1` is the opposite of the reduced
|
|
376
|
+
trace::
|
|
377
|
+
|
|
378
|
+
sage: chi[2] == -a.reduced_trace()
|
|
379
|
+
True
|
|
380
|
+
|
|
381
|
+
By default, the name of the variable of the reduced characteristic
|
|
382
|
+
polynomial is ``x`` and the name of central variable is usually ``z``
|
|
383
|
+
(see :meth:`~sage.rings.polynomial.skew_polynomial_ring.SkewPolynomialRing_finite_order.center`
|
|
384
|
+
for more details about this).
|
|
385
|
+
The user can speciify different names if desired::
|
|
386
|
+
|
|
387
|
+
sage: a.reduced_charpoly(var='T') # variable name for the characteristic polynomial
|
|
388
|
+
T^3 + (2*z + 1)*T^2 + (3*z^2 + 4*z)*T + 4*z^3 + z^2 + 1
|
|
389
|
+
|
|
390
|
+
sage: a.reduced_charpoly(var=('T', 'c'))
|
|
391
|
+
T^3 + (2*c + 1)*T^2 + (3*c^2 + 4*c)*T + 4*c^3 + c^2 + 1
|
|
392
|
+
|
|
393
|
+
.. SEEALSO::
|
|
394
|
+
|
|
395
|
+
:meth:`reduced_trace`, :meth:`reduced_norm`
|
|
396
|
+
"""
|
|
397
|
+
if self._charpoly is None:
|
|
398
|
+
M = self._matmul_c()
|
|
399
|
+
chi = M.charpoly()
|
|
400
|
+
self._charpoly = [tuple(c.list()) for c in chi.list()]
|
|
401
|
+
if self._norm is not None:
|
|
402
|
+
self._norm = self._charpoly[-1]
|
|
403
|
+
varcenter = None
|
|
404
|
+
if var is None:
|
|
405
|
+
varcharpoly = 'x'
|
|
406
|
+
elif isinstance(var, (tuple, list)) and len(var) == 2:
|
|
407
|
+
varcharpoly, varcenter = var
|
|
408
|
+
else:
|
|
409
|
+
varcharpoly = var
|
|
410
|
+
center = self.parent().center(name=varcenter)
|
|
411
|
+
coeffs = [center(c) for c in self._charpoly]
|
|
412
|
+
return PolynomialRing(center, name=varcharpoly)(coeffs)
|
|
413
|
+
|
|
414
|
+
def is_central(self) -> bool:
|
|
415
|
+
r"""
|
|
416
|
+
Return ``True`` if this skew polynomial lies in the center.
|
|
417
|
+
|
|
418
|
+
EXAMPLES::
|
|
419
|
+
|
|
420
|
+
sage: k.<t> = GF(5^3)
|
|
421
|
+
sage: Frob = k.frobenius_endomorphism()
|
|
422
|
+
sage: S.<x> = k['x', Frob]
|
|
423
|
+
|
|
424
|
+
sage: x.is_central()
|
|
425
|
+
False
|
|
426
|
+
sage: (t*x^3).is_central()
|
|
427
|
+
False
|
|
428
|
+
sage: (x^6 + x^3).is_central()
|
|
429
|
+
True
|
|
430
|
+
"""
|
|
431
|
+
center = self.parent()._working_center
|
|
432
|
+
try:
|
|
433
|
+
center(self)
|
|
434
|
+
return True
|
|
435
|
+
except ValueError:
|
|
436
|
+
return False
|
|
437
|
+
|
|
438
|
+
def bound(self):
|
|
439
|
+
r"""
|
|
440
|
+
Return a bound of this skew polynomial (i.e. a multiple
|
|
441
|
+
of this skew polynomial lying in the center).
|
|
442
|
+
|
|
443
|
+
.. NOTE::
|
|
444
|
+
|
|
445
|
+
Since `b` is central, it divides a skew polynomial
|
|
446
|
+
on the left iff it divides it on the right
|
|
447
|
+
|
|
448
|
+
ALGORITHM:
|
|
449
|
+
|
|
450
|
+
#. Sage first checks whether self is itself in the
|
|
451
|
+
center. It if is, it returns ``self``
|
|
452
|
+
|
|
453
|
+
#. If an optimal bound was previously computed and
|
|
454
|
+
cached, Sage returns it
|
|
455
|
+
|
|
456
|
+
#. Otherwise, Sage returns the reduced norm of ``self``
|
|
457
|
+
|
|
458
|
+
As a consequence, the output of this function may depend
|
|
459
|
+
on previous computations (an example is given below).
|
|
460
|
+
|
|
461
|
+
EXAMPLES::
|
|
462
|
+
|
|
463
|
+
sage: k.<t> = GF(5^3)
|
|
464
|
+
sage: Frob = k.frobenius_endomorphism()
|
|
465
|
+
sage: S.<x> = k['x', Frob]
|
|
466
|
+
sage: Z = S.center(); Z
|
|
467
|
+
Univariate Polynomial Ring in z over Finite Field of size 5
|
|
468
|
+
|
|
469
|
+
sage: a = x^2 + (4*t + 2)*x + 4*t^2 + 3
|
|
470
|
+
sage: b = a.bound(); b
|
|
471
|
+
z^2 + z + 4
|
|
472
|
+
|
|
473
|
+
We observe that the bound is explicitly given as an element of the
|
|
474
|
+
center (which is a univariate polynomial ring in the variable `z`).
|
|
475
|
+
We can use conversion to send it in the skew polynomial ring::
|
|
476
|
+
|
|
477
|
+
sage: S(b)
|
|
478
|
+
x^6 + x^3 + 4
|
|
479
|
+
|
|
480
|
+
We check that `b` is divisible by `a`::
|
|
481
|
+
|
|
482
|
+
sage: S(b).is_right_divisible_by(a)
|
|
483
|
+
True
|
|
484
|
+
sage: S(b).is_left_divisible_by(a)
|
|
485
|
+
True
|
|
486
|
+
|
|
487
|
+
Actually, `b` is the reduced norm of `a`::
|
|
488
|
+
|
|
489
|
+
sage: b == a.reduced_norm()
|
|
490
|
+
True
|
|
491
|
+
|
|
492
|
+
Now, we compute the optimal bound of `a` and see that
|
|
493
|
+
it affects the behaviour of ``bound()``::
|
|
494
|
+
|
|
495
|
+
sage: a.optimal_bound()
|
|
496
|
+
z + 3
|
|
497
|
+
sage: a.bound()
|
|
498
|
+
z + 3
|
|
499
|
+
|
|
500
|
+
TESTS:
|
|
501
|
+
|
|
502
|
+
We check that when the input skew polynomial lies in
|
|
503
|
+
the center, the output is the skew polynomial itself::
|
|
504
|
+
|
|
505
|
+
sage: a = Z.random_element(degree=4)
|
|
506
|
+
sage: b = S(a).bound()
|
|
507
|
+
sage: a == b
|
|
508
|
+
True
|
|
509
|
+
"""
|
|
510
|
+
center = self.parent().center()
|
|
511
|
+
try:
|
|
512
|
+
return center(self)
|
|
513
|
+
except ValueError:
|
|
514
|
+
pass
|
|
515
|
+
if self._optbound is not None:
|
|
516
|
+
return center(self._optbound)
|
|
517
|
+
return self.reduced_norm()
|
|
518
|
+
|
|
519
|
+
def optimal_bound(self):
|
|
520
|
+
r"""
|
|
521
|
+
Return the optimal bound of this skew polynomial (i.e.
|
|
522
|
+
the monic multiple of this skew polynomial of minimal
|
|
523
|
+
degree lying in the center).
|
|
524
|
+
|
|
525
|
+
.. NOTE::
|
|
526
|
+
|
|
527
|
+
The result is cached.
|
|
528
|
+
|
|
529
|
+
EXAMPLES::
|
|
530
|
+
|
|
531
|
+
sage: k.<t> = GF(5^3)
|
|
532
|
+
sage: Frob = k.frobenius_endomorphism()
|
|
533
|
+
sage: S.<x> = k['x', Frob]
|
|
534
|
+
sage: Z = S.center(); Z
|
|
535
|
+
Univariate Polynomial Ring in z over Finite Field of size 5
|
|
536
|
+
|
|
537
|
+
sage: a = x^2 + (4*t + 2)*x + 4*t^2 + 3
|
|
538
|
+
sage: b = a.optimal_bound(); b
|
|
539
|
+
z + 3
|
|
540
|
+
|
|
541
|
+
We observe that the bound is explicitly given as an element of the
|
|
542
|
+
center (which is a univariate polynomial ring in the variable `z`).
|
|
543
|
+
We can use conversion to send it in the skew polynomial ring::
|
|
544
|
+
|
|
545
|
+
sage: S(b)
|
|
546
|
+
x^3 + 3
|
|
547
|
+
|
|
548
|
+
We check that `b` is divisible by `a`::
|
|
549
|
+
|
|
550
|
+
sage: S(b).is_right_divisible_by(a)
|
|
551
|
+
True
|
|
552
|
+
sage: S(b).is_left_divisible_by(a)
|
|
553
|
+
True
|
|
554
|
+
"""
|
|
555
|
+
center = self.parent().center()
|
|
556
|
+
if self._optbound is None:
|
|
557
|
+
try:
|
|
558
|
+
self._optbound = center(self).monic()
|
|
559
|
+
except ValueError:
|
|
560
|
+
bound = self._matphir_c().minimal_polynomial()
|
|
561
|
+
section = self._parent._embed_constants.section()
|
|
562
|
+
self._optbound = [section(x) for x in bound.list()]
|
|
563
|
+
return center(self._optbound)
|
|
564
|
+
|
|
565
|
+
# TODO:
|
|
566
|
+
# fast multiplication
|
|
567
|
+
# reduced characteristic polynomial
|