passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_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 +808 -0
- passagemath_modules-10.6.31rc3.dist-info/WHEEL +5 -0
- passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
- passagemath_modules.libs/libgcc_s-0cd532bd.so.1 +0 -0
- passagemath_modules.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
- passagemath_modules.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
- passagemath_modules.libs/libgsl-42cda06f.so.28.0.0 +0 -0
- passagemath_modules.libs/libmpc-d8ebe4b5.so.3.3.1 +0 -0
- passagemath_modules.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
- passagemath_modules.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
- passagemath_modules.libs/libquadmath-bb76a5fc.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.so +0 -0
- sage/calculus/integration.pyx +698 -0
- sage/calculus/interpolation.cpython-314-x86_64-linux-musl.so +0 -0
- sage/calculus/interpolation.pxd +13 -0
- sage/calculus/interpolation.pyx +387 -0
- sage/calculus/interpolators.cpython-314-x86_64-linux-musl.so +0 -0
- sage/calculus/interpolators.pyx +326 -0
- sage/calculus/ode.cpython-314-x86_64-linux-musl.so +0 -0
- sage/calculus/ode.pxd +5 -0
- sage/calculus/ode.pyx +610 -0
- sage/calculus/riemann.cpython-314-x86_64-linux-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.so +0 -0
- sage/matrix/constructor.pyx +750 -0
- sage/matrix/docs.py +430 -0
- sage/matrix/echelon_matrix.cpython-314-x86_64-linux-musl.so +0 -0
- sage/matrix/echelon_matrix.pyx +155 -0
- sage/matrix/matrix.pxd +2 -0
- sage/matrix/matrix0.cpython-314-x86_64-linux-musl.so +0 -0
- sage/matrix/matrix0.pxd +68 -0
- sage/matrix/matrix0.pyx +6324 -0
- sage/matrix/matrix1.cpython-314-x86_64-linux-musl.so +0 -0
- sage/matrix/matrix1.pxd +8 -0
- sage/matrix/matrix1.pyx +2851 -0
- sage/matrix/matrix2.cpython-314-x86_64-linux-musl.so +0 -0
- sage/matrix/matrix2.pxd +25 -0
- sage/matrix/matrix2.pyx +20181 -0
- sage/matrix/matrix_cdv.cpython-314-x86_64-linux-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.so +0 -0
- sage/matroids/extension.pxd +34 -0
- sage/matroids/extension.pyx +519 -0
- sage/matroids/flats_matroid.cpython-314-x86_64-linux-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.so +0 -0
- sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
- sage/rings/function_field/khuri_makdisi.cpython-314-x86_64-linux-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.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-musl.so +0 -0
- sage/stats/hmm/chmm.pyx +1595 -0
- sage/stats/hmm/distributions.cpython-314-x86_64-linux-musl.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-musl.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-musl.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-musl.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-musl.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
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
from sage.rings.polynomial.ore_polynomial_element cimport OrePolynomial_generic_dense
|
|
3
|
+
|
|
4
|
+
cdef class SkewPolynomial_generic_dense(OrePolynomial_generic_dense):
|
|
5
|
+
cdef void _inplace_rmul(self, SkewPolynomial_generic_dense right) noexcept
|
|
6
|
+
cdef void _inplace_pow(self, Py_ssize_t n) noexcept
|
|
7
|
+
cpdef right_power_mod(self, exp, modulus)
|
|
8
|
+
cpdef left_power_mod(self, exp, modulus)
|
|
9
|
+
cpdef operator_eval(self, eval_pt)
|
|
@@ -0,0 +1,684 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
# sage.doctest: needs sage.combinat
|
|
3
|
+
r"""
|
|
4
|
+
Univariate skew polynomials
|
|
5
|
+
|
|
6
|
+
This module provides the
|
|
7
|
+
:class:`~sage.rings.polynomial.skew_polynomial_element.SkewPolynomial`.
|
|
8
|
+
In the class hierarchy in Sage, the locution *Skew Polynomial* is used
|
|
9
|
+
for a Ore polynomial without twisting derivation.
|
|
10
|
+
|
|
11
|
+
.. WARNING::
|
|
12
|
+
|
|
13
|
+
The current semantics of
|
|
14
|
+
:meth:`~sage.rings.polynomial.skew_polynomial_element.SkewPolynomial.__call__`
|
|
15
|
+
are experimental, so a warning is thrown when a skew polynomial is evaluated
|
|
16
|
+
for the first time in a session. See the method documentation for details.
|
|
17
|
+
|
|
18
|
+
TESTS::
|
|
19
|
+
|
|
20
|
+
sage: R.<t> = QQ[]
|
|
21
|
+
sage: sigma = R.hom([t+1])
|
|
22
|
+
sage: S.<x> = R['x',sigma]
|
|
23
|
+
sage: a = 2*(t + x) + 1
|
|
24
|
+
sage: a(t^2)
|
|
25
|
+
doctest:...: FutureWarning: This class/method/function is marked as experimental.
|
|
26
|
+
It, its functionality or its interface might change without a formal deprecation.
|
|
27
|
+
See https://github.com/sagemath/sage/issues/13215 for details.
|
|
28
|
+
2*t^3 + 3*t^2 + 4*t + 2
|
|
29
|
+
sage: a(t)
|
|
30
|
+
2*t^2 + 3*t + 2
|
|
31
|
+
|
|
32
|
+
AUTHORS:
|
|
33
|
+
|
|
34
|
+
- Xavier Caruso (2012-06-29): initial version
|
|
35
|
+
|
|
36
|
+
- Arpit Merchant (2016-08-04): improved docstrings, fixed doctests and
|
|
37
|
+
refactored classes and methods
|
|
38
|
+
|
|
39
|
+
- Johan Rosenkilde (2016-08-03): changes for bug fixes, docstring and
|
|
40
|
+
doctest errors
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
# ***************************************************************************
|
|
44
|
+
# Copyright (C) 2012 Xavier Caruso <xavier.caruso@normalesup.org>
|
|
45
|
+
#
|
|
46
|
+
# This program is free software: you can redistribute it and/or modify
|
|
47
|
+
# it under the terms of the GNU General Public License as published by
|
|
48
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
49
|
+
# (at your option) any later version.
|
|
50
|
+
# https://www.gnu.org/licenses/
|
|
51
|
+
#****************************************************************************
|
|
52
|
+
from cysignals.signals cimport sig_check
|
|
53
|
+
|
|
54
|
+
from sage.structure.element cimport Element, RingElement, ModuleElement
|
|
55
|
+
from sage.rings.integer cimport Integer
|
|
56
|
+
from sage.rings.morphism cimport RingHomomorphism
|
|
57
|
+
from sage.misc.superseded import experimental
|
|
58
|
+
|
|
59
|
+
from sage.rings.polynomial.ore_polynomial_element cimport OrePolynomial
|
|
60
|
+
from sage.rings.polynomial.ore_polynomial_element cimport OrePolynomial_generic_dense
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
cdef class SkewPolynomial_generic_dense(OrePolynomial_generic_dense):
|
|
64
|
+
r"""
|
|
65
|
+
Generic implementation of dense skew polynomial supporting any valid base
|
|
66
|
+
ring and twisting morphism.
|
|
67
|
+
"""
|
|
68
|
+
cpdef left_power_mod(self, exp, modulus):
|
|
69
|
+
r"""
|
|
70
|
+
Return the remainder of ``self**exp`` in the left euclidean division
|
|
71
|
+
by ``modulus``.
|
|
72
|
+
|
|
73
|
+
INPUT:
|
|
74
|
+
|
|
75
|
+
- ``exp`` -- an Integer
|
|
76
|
+
|
|
77
|
+
- ``modulus`` -- a skew polynomial in the same ring as ``self``
|
|
78
|
+
|
|
79
|
+
OUTPUT:
|
|
80
|
+
|
|
81
|
+
Remainder of ``self**exp`` in the left euclidean division
|
|
82
|
+
by ``modulus``.
|
|
83
|
+
|
|
84
|
+
REMARK:
|
|
85
|
+
|
|
86
|
+
The quotient of the underlying skew polynomial ring by the
|
|
87
|
+
principal ideal generated by ``modulus`` is in general *not*
|
|
88
|
+
a ring.
|
|
89
|
+
|
|
90
|
+
As a consequence, Sage first computes exactly ``self**exp``
|
|
91
|
+
and then reduce it modulo ``modulus``.
|
|
92
|
+
|
|
93
|
+
EXAMPLES::
|
|
94
|
+
|
|
95
|
+
sage: # needs sage.rings.finite_rings
|
|
96
|
+
sage: k.<t> = GF(5^3)
|
|
97
|
+
sage: Frob = k.frobenius_endomorphism()
|
|
98
|
+
sage: S.<x> = k['x',Frob]
|
|
99
|
+
sage: a = x + t
|
|
100
|
+
sage: modulus = x^3 + t*x^2 + (t+3)*x - 2
|
|
101
|
+
sage: a.left_power_mod(100,modulus)
|
|
102
|
+
(4*t^2 + t + 1)*x^2 + (t^2 + 4*t + 1)*x + 3*t^2 + 3*t
|
|
103
|
+
"""
|
|
104
|
+
cdef SkewPolynomial_generic_dense r
|
|
105
|
+
if not isinstance(exp, Integer):
|
|
106
|
+
try:
|
|
107
|
+
exp = Integer(exp)
|
|
108
|
+
except TypeError:
|
|
109
|
+
raise TypeError("non-integral exponents not supported")
|
|
110
|
+
|
|
111
|
+
if len(self._coeffs) <= 1:
|
|
112
|
+
return self.parent()(self._coeffs[0]**exp)
|
|
113
|
+
if exp == 0:
|
|
114
|
+
return self.parent().one()
|
|
115
|
+
if exp < 0:
|
|
116
|
+
return (~self).left_power_mod(-exp, modulus)
|
|
117
|
+
|
|
118
|
+
if self == self.parent().gen():
|
|
119
|
+
P = self.parent()
|
|
120
|
+
R = P.base_ring()
|
|
121
|
+
v = [R.zero()]*exp + [R.one()]
|
|
122
|
+
r = <OrePolynomial_generic_dense>self._parent(v)
|
|
123
|
+
else:
|
|
124
|
+
r = <OrePolynomial_generic_dense>self._new_c(list(self._coeffs), self._parent)
|
|
125
|
+
r._inplace_pow(exp)
|
|
126
|
+
|
|
127
|
+
if modulus:
|
|
128
|
+
_, r = r._left_quo_rem(modulus)
|
|
129
|
+
return r
|
|
130
|
+
|
|
131
|
+
cpdef right_power_mod(self, exp, modulus):
|
|
132
|
+
r"""
|
|
133
|
+
Return the remainder of ``self**exp`` in the right euclidean division
|
|
134
|
+
by ``modulus``.
|
|
135
|
+
|
|
136
|
+
INPUT:
|
|
137
|
+
|
|
138
|
+
- ``exp`` -- integer
|
|
139
|
+
|
|
140
|
+
- ``modulus`` -- a skew polynomial in the same ring as ``self``
|
|
141
|
+
|
|
142
|
+
OUTPUT:
|
|
143
|
+
|
|
144
|
+
Remainder of ``self**exp`` in the right euclidean division
|
|
145
|
+
by ``modulus``.
|
|
146
|
+
|
|
147
|
+
REMARK:
|
|
148
|
+
|
|
149
|
+
The quotient of the underlying skew polynomial ring by the
|
|
150
|
+
principal ideal generated by ``modulus`` is in general *not*
|
|
151
|
+
a ring.
|
|
152
|
+
|
|
153
|
+
As a consequence, Sage first computes exactly ``self**exp``
|
|
154
|
+
and then reduce it modulo ``modulus``.
|
|
155
|
+
|
|
156
|
+
EXAMPLES::
|
|
157
|
+
|
|
158
|
+
sage: # needs sage.rings.finite_rings
|
|
159
|
+
sage: k.<t> = GF(5^3)
|
|
160
|
+
sage: Frob = k.frobenius_endomorphism()
|
|
161
|
+
sage: S.<x> = k['x',Frob]
|
|
162
|
+
sage: a = x + t
|
|
163
|
+
sage: b = a^5 # indirect doctest
|
|
164
|
+
sage: b
|
|
165
|
+
x^5 + (2*t^2 + 4)*x^4 + (t^2 + 2)*x^3 + 2*x^2 + (4*t^2 + 2)*x + 2*t^2 + 4*t + 4
|
|
166
|
+
sage: b == a * a * a * a * a
|
|
167
|
+
True
|
|
168
|
+
sage: modulus = x^3 + t*x^2 + (t+3)*x - 2
|
|
169
|
+
sage: br = a.right_power_mod(5, modulus); br
|
|
170
|
+
(t + 1)*x^2 + (2*t^2 + t + 1)*x + 2*t^2 + 4*t + 2
|
|
171
|
+
sage: br == b % modulus
|
|
172
|
+
True
|
|
173
|
+
sage: a.right_power_mod(100, modulus)
|
|
174
|
+
(2*t^2 + 3)*x^2 + (t^2 + 4*t + 2)*x + t^2 + 2*t + 1
|
|
175
|
+
|
|
176
|
+
Negative exponents are supported:
|
|
177
|
+
|
|
178
|
+
sage: # needs sage.rings.finite_rings
|
|
179
|
+
sage: a^(-5)
|
|
180
|
+
(x^5 + (2*t^2 + 4)*x^4 + (t^2 + 2)*x^3 + 2*x^2 + (4*t^2 + 2)*x + 2*t^2 + 4*t + 4)^(-1)
|
|
181
|
+
sage: b * a^(-5)
|
|
182
|
+
1
|
|
183
|
+
|
|
184
|
+
However, they cannot be combined with modulus::
|
|
185
|
+
|
|
186
|
+
sage: a.right_power_mod(-10, modulus) # needs sage.rings.finite_rings
|
|
187
|
+
Traceback (most recent call last):
|
|
188
|
+
...
|
|
189
|
+
ValueError: modulus cannot be combined with negative exponent
|
|
190
|
+
"""
|
|
191
|
+
cdef SkewPolynomial_generic_dense r
|
|
192
|
+
if not isinstance(exp, Integer):
|
|
193
|
+
try:
|
|
194
|
+
exp = Integer(exp)
|
|
195
|
+
except TypeError:
|
|
196
|
+
raise TypeError("non-integral exponents not supported")
|
|
197
|
+
|
|
198
|
+
if len(self._coeffs) <= 1:
|
|
199
|
+
return self.parent()(self._coeffs[0]**exp)
|
|
200
|
+
if exp == 0:
|
|
201
|
+
return self.parent().one()
|
|
202
|
+
if exp < 0:
|
|
203
|
+
if modulus:
|
|
204
|
+
raise ValueError("modulus cannot be combined with negative exponent")
|
|
205
|
+
return ~(self.right_power_mod(-exp, None))
|
|
206
|
+
|
|
207
|
+
if self == self.parent().gen():
|
|
208
|
+
P = self.parent()
|
|
209
|
+
R = P.base_ring()
|
|
210
|
+
v = [R.zero()]*exp + [R.one()]
|
|
211
|
+
r = <OrePolynomial_generic_dense>self._parent(v)
|
|
212
|
+
else:
|
|
213
|
+
r = <OrePolynomial_generic_dense>self._new_c(list(self._coeffs), self._parent)
|
|
214
|
+
r._inplace_pow(exp)
|
|
215
|
+
|
|
216
|
+
if modulus:
|
|
217
|
+
_, r = r._right_quo_rem(modulus)
|
|
218
|
+
return r
|
|
219
|
+
|
|
220
|
+
def __pow__(self, exp, modulus):
|
|
221
|
+
r"""
|
|
222
|
+
Return the remainder of ``self**exp`` in the left euclidean
|
|
223
|
+
division by ``modulus``.
|
|
224
|
+
|
|
225
|
+
INPUT:
|
|
226
|
+
|
|
227
|
+
- ``exp`` -- an Integer
|
|
228
|
+
|
|
229
|
+
- ``modulus`` -- a skew polynomial in the same ring as ``self``
|
|
230
|
+
|
|
231
|
+
OUTPUT:
|
|
232
|
+
|
|
233
|
+
Remainder of ``self**exp`` in the right euclidean division
|
|
234
|
+
by ``modulus``.
|
|
235
|
+
|
|
236
|
+
REMARK:
|
|
237
|
+
|
|
238
|
+
The quotient of the underlying skew polynomial ring by the
|
|
239
|
+
principal ideal generated by ``modulus`` is in general *not*
|
|
240
|
+
a ring.
|
|
241
|
+
|
|
242
|
+
As a consequence, Sage first computes exactly ``self**exp``
|
|
243
|
+
and then reduce it modulo ``modulus``.
|
|
244
|
+
|
|
245
|
+
.. SEEALSO::
|
|
246
|
+
|
|
247
|
+
:meth:`~sage.rings.polynomial.skew_polynomial_element._pow_`
|
|
248
|
+
|
|
249
|
+
EXAMPLES::
|
|
250
|
+
|
|
251
|
+
sage: # needs sage.rings.finite_rings
|
|
252
|
+
sage: k.<t> = GF(5^3)
|
|
253
|
+
sage: Frob = k.frobenius_endomorphism()
|
|
254
|
+
sage: S.<x> = k['x',Frob]
|
|
255
|
+
sage: a = x + t
|
|
256
|
+
sage: b = a^10
|
|
257
|
+
sage: b == a*a*a*a*a*a*a*a*a*a
|
|
258
|
+
True
|
|
259
|
+
sage: modulus = x^3 + t*x^2 + (t+3)*x - 2
|
|
260
|
+
sage: bmod = a.right_power_mod(10,modulus); bmod
|
|
261
|
+
(t^2 + t)*x^2 + (3*t^2 + 1)*x + t^2 + t
|
|
262
|
+
sage: rq, rr = b.right_quo_rem(modulus)
|
|
263
|
+
sage: bmod == rr
|
|
264
|
+
True
|
|
265
|
+
"""
|
|
266
|
+
return self.right_power_mod(exp, modulus)
|
|
267
|
+
|
|
268
|
+
def __call__(self, eval_pt):
|
|
269
|
+
r"""
|
|
270
|
+
Evaluate ``self`` at ``eval_pt`` using operator evaluation.
|
|
271
|
+
|
|
272
|
+
Given a skew polynomial `p(x) = \sum_{i=0}^d a_i * x^i`, we define
|
|
273
|
+
the evaluation `p(r)` to be `\sum_{i=0}^d a_i * \sigma^i(r)`, where
|
|
274
|
+
`\sigma` is the twisting morphism of the skew polynomial ring.
|
|
275
|
+
|
|
276
|
+
INPUT:
|
|
277
|
+
|
|
278
|
+
- ``eval_pt`` -- element of the base ring of ``self``
|
|
279
|
+
|
|
280
|
+
OUTPUT: the operator evaluation of ``self`` at ``eval_pt``
|
|
281
|
+
|
|
282
|
+
.. TODO::
|
|
283
|
+
|
|
284
|
+
Currently, only "operator evaluation" of skew polynomials is
|
|
285
|
+
implemented (see :meth:`.operator_eval`).
|
|
286
|
+
There are two other notions of evaluation of a skew polynomial
|
|
287
|
+
`p(x)` at some element `a` of the base ring. First, the value
|
|
288
|
+
of the polynomial can be defined as the remainder of the right
|
|
289
|
+
division of `p(x)` by `x-a`. Second, the value can be given by
|
|
290
|
+
the formula, `p(a) = \sum_{i=0}^{m-1} B_{i} * p(\beta_{i})`
|
|
291
|
+
where `m` is the degree of the base ring (`F_{q^m}`) of the skew
|
|
292
|
+
polynomial ring, `B_{i}` is the `i`-th element in the vector
|
|
293
|
+
representation of `a` in `F_{q}` and`\beta_{i}` is the `i`-th
|
|
294
|
+
element of the corresponding basis of `F_{q^m}` over `F_{q}`.
|
|
295
|
+
|
|
296
|
+
The current calling convention might change in the future to
|
|
297
|
+
accommodate these. Therefore, the current method has been
|
|
298
|
+
marked as experimental.
|
|
299
|
+
|
|
300
|
+
EXAMPLES::
|
|
301
|
+
|
|
302
|
+
sage: R.<t> = QQ[]
|
|
303
|
+
sage: sigma = R.hom([t+1])
|
|
304
|
+
sage: S.<x> = R['x',sigma]
|
|
305
|
+
sage: a = t*x + 1
|
|
306
|
+
sage: a(t^2)
|
|
307
|
+
t^3 + 3*t^2 + t
|
|
308
|
+
sage: b = x^2 + t*x^3 + t^2*x + 1
|
|
309
|
+
sage: b(2*t + 3)
|
|
310
|
+
2*t^3 + 7*t^2 + 13*t + 10
|
|
311
|
+
"""
|
|
312
|
+
return self._call(eval_pt)
|
|
313
|
+
|
|
314
|
+
@experimental(issue_number=13215)
|
|
315
|
+
def _call(self, eval_pt):
|
|
316
|
+
r"""
|
|
317
|
+
Helper function for the :meth:`__call__` method to accommodate
|
|
318
|
+
the ``@experimental`` decorator.
|
|
319
|
+
|
|
320
|
+
EXAMPLES::
|
|
321
|
+
|
|
322
|
+
sage: # needs sage.rings.finite_rings
|
|
323
|
+
sage: k.<t> = GF(5^3)
|
|
324
|
+
sage: Frob = k.frobenius_endomorphism()
|
|
325
|
+
sage: T.<x> = k['x',Frob]
|
|
326
|
+
sage: a = 3*t^2*x^2 + (t + 1)*x + 2
|
|
327
|
+
sage: a(t) #indirect test
|
|
328
|
+
2*t^2 + 2*t + 3
|
|
329
|
+
"""
|
|
330
|
+
return self.operator_eval(eval_pt)
|
|
331
|
+
|
|
332
|
+
cpdef operator_eval(self, eval_pt):
|
|
333
|
+
r"""
|
|
334
|
+
Evaluate ``self`` at ``eval_pt`` by the operator evaluation
|
|
335
|
+
method.
|
|
336
|
+
|
|
337
|
+
INPUT:
|
|
338
|
+
|
|
339
|
+
- ``eval_pt`` -- element of the base ring of ``self``
|
|
340
|
+
|
|
341
|
+
OUTPUT: the value of the polynomial at the point specified by the argument
|
|
342
|
+
|
|
343
|
+
EXAMPLES::
|
|
344
|
+
|
|
345
|
+
sage: # needs sage.rings.finite_rings
|
|
346
|
+
sage: k.<t> = GF(5^3)
|
|
347
|
+
sage: Frob = k.frobenius_endomorphism()
|
|
348
|
+
sage: T.<x> = k['x',Frob]
|
|
349
|
+
sage: a = 3*t^2*x^2 + (t + 1)*x + 2
|
|
350
|
+
sage: a(t) #indirect test
|
|
351
|
+
2*t^2 + 2*t + 3
|
|
352
|
+
sage: a.operator_eval(t)
|
|
353
|
+
2*t^2 + 2*t + 3
|
|
354
|
+
|
|
355
|
+
Evaluation points outside the base ring is usually not possible
|
|
356
|
+
due to the twisting morphism::
|
|
357
|
+
|
|
358
|
+
sage: R.<t> = QQ[]
|
|
359
|
+
sage: sigma = R.hom([t+1])
|
|
360
|
+
sage: S.<x> = R['x',sigma]
|
|
361
|
+
sage: a = t*x + 1
|
|
362
|
+
sage: a.operator_eval(1/t)
|
|
363
|
+
Traceback (most recent call last):
|
|
364
|
+
...
|
|
365
|
+
TypeError: 1/t fails to convert into the map's domain
|
|
366
|
+
Univariate Polynomial Ring in t over Rational Field,
|
|
367
|
+
but a `pushforward` method is not properly implemented
|
|
368
|
+
"""
|
|
369
|
+
cdef RingHomomorphism sigma = self._parent.twisting_morphism()
|
|
370
|
+
cdef list coefficients = self.list()
|
|
371
|
+
cdef RingElement ret = self.base_ring().zero()
|
|
372
|
+
cdef RingElement a = eval_pt
|
|
373
|
+
for c in coefficients:
|
|
374
|
+
ret += c * a
|
|
375
|
+
a = sigma(a)
|
|
376
|
+
return ret
|
|
377
|
+
|
|
378
|
+
def conjugate(self, n):
|
|
379
|
+
r"""
|
|
380
|
+
Return ``self`` conjugated by `x^n`, where `x` is the
|
|
381
|
+
variable of ``self``.
|
|
382
|
+
|
|
383
|
+
The conjugate is obtained from ``self`` by applying the `n`-th iterate
|
|
384
|
+
of the twisting morphism to each of its coefficients.
|
|
385
|
+
|
|
386
|
+
INPUT:
|
|
387
|
+
|
|
388
|
+
- ``n`` -- integer; the power of conjugation
|
|
389
|
+
|
|
390
|
+
EXAMPLES::
|
|
391
|
+
|
|
392
|
+
sage: R.<t> = QQ[]
|
|
393
|
+
sage: K = R.fraction_field()
|
|
394
|
+
sage: sigma = K.hom([1 + 1/t])
|
|
395
|
+
sage: S.<x> = K['x',sigma]
|
|
396
|
+
sage: a = t*x^3 + (t^2 + 1)*x^2 + 2*t
|
|
397
|
+
sage: b = a.conjugate(2); b
|
|
398
|
+
((2*t + 1)/(t + 1))*x^3 + ((5*t^2 + 6*t + 2)/(t^2 + 2*t + 1))*x^2 + (4*t + 2)/(t + 1)
|
|
399
|
+
sage: x^2*a == b*x^2
|
|
400
|
+
True
|
|
401
|
+
|
|
402
|
+
In principle, negative values for `n` are allowed, but Sage needs to be
|
|
403
|
+
able to invert the twisting morphism::
|
|
404
|
+
|
|
405
|
+
sage: b = a.conjugate(-1)
|
|
406
|
+
Traceback (most recent call last):
|
|
407
|
+
...
|
|
408
|
+
NotImplementedError: inverse not implemented for morphisms of
|
|
409
|
+
Fraction Field of Univariate Polynomial Ring in t over Rational Field
|
|
410
|
+
|
|
411
|
+
Here is a working example::
|
|
412
|
+
|
|
413
|
+
sage: # needs sage.rings.finite_rings
|
|
414
|
+
sage: k.<t> = GF(5^3)
|
|
415
|
+
sage: Frob = k.frobenius_endomorphism()
|
|
416
|
+
sage: T.<y> = k['y',Frob]
|
|
417
|
+
sage: u = T.random_element()
|
|
418
|
+
sage: v = u.conjugate(-1)
|
|
419
|
+
sage: u*y == y*v
|
|
420
|
+
True
|
|
421
|
+
"""
|
|
422
|
+
r = self._new_c([self._parent.twisting_morphism(n)(x) for x in self.list()],
|
|
423
|
+
self._parent, 0)
|
|
424
|
+
return r
|
|
425
|
+
|
|
426
|
+
def multi_point_evaluation(self, eval_pts):
|
|
427
|
+
r"""
|
|
428
|
+
Evaluate ``self`` at list of evaluation points.
|
|
429
|
+
|
|
430
|
+
INPUT:
|
|
431
|
+
|
|
432
|
+
- ``eval_pts`` -- list of points at which ``self`` is to be evaluated
|
|
433
|
+
|
|
434
|
+
OUTPUT: list of values of ``self`` at the ``eval_pts``
|
|
435
|
+
|
|
436
|
+
.. TODO::
|
|
437
|
+
|
|
438
|
+
This method currently trivially calls the evaluation function
|
|
439
|
+
repeatedly. If fast skew polynomial multiplication is available, an
|
|
440
|
+
asymptotically faster method is possible using standard divide and
|
|
441
|
+
conquer techniques and
|
|
442
|
+
:meth:`~sage.rings.polynomial.skew_polynomial_ring.SkewPolynomialRing.minimal_vanishing_polynomial`.
|
|
443
|
+
|
|
444
|
+
EXAMPLES::
|
|
445
|
+
|
|
446
|
+
sage: # needs sage.rings.finite_rings
|
|
447
|
+
sage: k.<t> = GF(5^3)
|
|
448
|
+
sage: Frob = k.frobenius_endomorphism()
|
|
449
|
+
sage: S.<x> = k['x',Frob]
|
|
450
|
+
sage: a = x + t
|
|
451
|
+
sage: eval_pts = [1, t, t^2]
|
|
452
|
+
sage: c = a.multi_point_evaluation(eval_pts); c
|
|
453
|
+
[t + 1, 3*t^2 + 4*t + 4, 4*t]
|
|
454
|
+
sage: c == [ a(e) for e in eval_pts ]
|
|
455
|
+
True
|
|
456
|
+
"""
|
|
457
|
+
return [ self(e) for e in eval_pts ]
|
|
458
|
+
|
|
459
|
+
cpdef ModuleElement _lmul_(self, Element right):
|
|
460
|
+
r"""
|
|
461
|
+
Return the product ``self * right``.
|
|
462
|
+
|
|
463
|
+
INPUT:
|
|
464
|
+
|
|
465
|
+
- ``right`` -- an element of the base ring
|
|
466
|
+
|
|
467
|
+
EXAMPLES::
|
|
468
|
+
|
|
469
|
+
sage: R.<t> = QQ[]
|
|
470
|
+
sage: sigma = R.hom([t+1])
|
|
471
|
+
sage: S.<x> = R['x',sigma]
|
|
472
|
+
sage: a = x + t
|
|
473
|
+
sage: b = t
|
|
474
|
+
sage: a * b
|
|
475
|
+
(t + 1)*x + t^2
|
|
476
|
+
sage: a * b == b * a
|
|
477
|
+
False
|
|
478
|
+
"""
|
|
479
|
+
if right == 0:
|
|
480
|
+
return self._parent.zero()
|
|
481
|
+
cdef list x = (<SkewPolynomial_generic_dense>self)._coeffs
|
|
482
|
+
cdef Py_ssize_t i
|
|
483
|
+
twisting_morphism = self._parent._morphism
|
|
484
|
+
r = self._new_c([ (twisting_morphism**i)(right)*x[i] for i from 0 <= i < len(x) ],
|
|
485
|
+
self._parent, 0)
|
|
486
|
+
return r
|
|
487
|
+
|
|
488
|
+
cpdef ModuleElement _rmul_(self, Element left):
|
|
489
|
+
r"""
|
|
490
|
+
Return the product ``left * self``.
|
|
491
|
+
|
|
492
|
+
INPUT:
|
|
493
|
+
|
|
494
|
+
- ``left`` -- an element of the base ring
|
|
495
|
+
|
|
496
|
+
EXAMPLES::
|
|
497
|
+
|
|
498
|
+
sage: R.<t> = QQ[]
|
|
499
|
+
sage: sigma = R.hom([t+1])
|
|
500
|
+
sage: S.<x> = R['x',sigma]
|
|
501
|
+
sage: a = t
|
|
502
|
+
sage: b = x + t
|
|
503
|
+
sage: a * b
|
|
504
|
+
t*x + t^2
|
|
505
|
+
sage: a * b == b * a
|
|
506
|
+
False
|
|
507
|
+
"""
|
|
508
|
+
if left == 0:
|
|
509
|
+
return self.parent().zero()
|
|
510
|
+
cdef list x = (<SkewPolynomial_generic_dense>self)._coeffs
|
|
511
|
+
cdef Py_ssize_t i
|
|
512
|
+
r = self._new_c([ left*x[i] for i from 0 <= i < len(x) ], self._parent, 0)
|
|
513
|
+
return r
|
|
514
|
+
|
|
515
|
+
cpdef _mul_(self, right):
|
|
516
|
+
r"""
|
|
517
|
+
Return the product ``self * right``.
|
|
518
|
+
|
|
519
|
+
INPUT:
|
|
520
|
+
|
|
521
|
+
- ``right`` -- a Ore polynomial in the same ring as ``self``
|
|
522
|
+
|
|
523
|
+
EXAMPLES::
|
|
524
|
+
|
|
525
|
+
sage: R.<t> = QQ[]
|
|
526
|
+
sage: sigma = R.hom([t+1])
|
|
527
|
+
sage: S.<x> = R['x',sigma]
|
|
528
|
+
sage: a = x^2 + t; a
|
|
529
|
+
x^2 + t
|
|
530
|
+
sage: b = x^2 + (t + 1)*x; b
|
|
531
|
+
x^2 + (t + 1)*x
|
|
532
|
+
sage: a * b
|
|
533
|
+
x^4 + (t + 3)*x^3 + t*x^2 + (t^2 + t)*x
|
|
534
|
+
sage: a * b == b * a
|
|
535
|
+
False
|
|
536
|
+
|
|
537
|
+
TESTS::
|
|
538
|
+
|
|
539
|
+
sage: S(0)*a, (S(0)*a).list()
|
|
540
|
+
(0, [])
|
|
541
|
+
"""
|
|
542
|
+
cdef list x = (<SkewPolynomial_generic_dense>self)._coeffs
|
|
543
|
+
cdef list y = (<SkewPolynomial_generic_dense>right)._coeffs
|
|
544
|
+
cdef Py_ssize_t i, k, start, end
|
|
545
|
+
cdef Py_ssize_t dx = len(x)-1, dy = len(y)-1
|
|
546
|
+
parent = self._parent
|
|
547
|
+
if dx == -1:
|
|
548
|
+
return self # = zero
|
|
549
|
+
elif dy == -1:
|
|
550
|
+
return right # = zero
|
|
551
|
+
elif dx == 0:
|
|
552
|
+
c = x[0]
|
|
553
|
+
r = self._new_c([c*a for a in y], parent, 0)
|
|
554
|
+
return r
|
|
555
|
+
cdef list coeffs = []
|
|
556
|
+
for k from 0 <= k <= dx+dy:
|
|
557
|
+
start = 0 if k <= dy else k-dy
|
|
558
|
+
end = k if k <= dx else dx
|
|
559
|
+
sum = x[start] * parent.twisting_morphism(start)(y[k-start])
|
|
560
|
+
for i from start < i <= end:
|
|
561
|
+
sum += x[i] * parent.twisting_morphism(i)(y[k-i])
|
|
562
|
+
coeffs.append(sum)
|
|
563
|
+
r = self._new_c(coeffs, parent, 0)
|
|
564
|
+
return r
|
|
565
|
+
|
|
566
|
+
cdef void _inplace_rmul(self, SkewPolynomial_generic_dense right) noexcept:
|
|
567
|
+
r"""
|
|
568
|
+
Replace ``self`` by ``self*right`` (only for internal use).
|
|
569
|
+
|
|
570
|
+
TESTS::
|
|
571
|
+
|
|
572
|
+
sage: # needs sage.rings.finite_rings
|
|
573
|
+
sage: k.<t> = GF(5^3)
|
|
574
|
+
sage: Frob = k.frobenius_endomorphism()
|
|
575
|
+
sage: S.<x> = k['x',Frob]
|
|
576
|
+
sage: a = x + t
|
|
577
|
+
sage: modulus = x^3 + t*x^2 + (t+3)*x - 2
|
|
578
|
+
sage: a.left_power_mod(100,modulus) # indirect doctest
|
|
579
|
+
(4*t^2 + t + 1)*x^2 + (t^2 + 4*t + 1)*x + 3*t^2 + 3*t
|
|
580
|
+
"""
|
|
581
|
+
cdef list x = self._coeffs
|
|
582
|
+
cdef list y = right._coeffs
|
|
583
|
+
cdef Py_ssize_t i, k, start, end
|
|
584
|
+
cdef Py_ssize_t d1 = len(x)-1, d2 = len(y)-1
|
|
585
|
+
parent = self._parent
|
|
586
|
+
if d2 == -1:
|
|
587
|
+
self._coeffs = [ ]
|
|
588
|
+
elif d1 >= 0:
|
|
589
|
+
for k from d1 < k <= d1+d2:
|
|
590
|
+
start = 0 if k <= d2 else k-d2
|
|
591
|
+
sum = x[start] * parent.twisting_morphism(start)(y[k-start])
|
|
592
|
+
for i from start < i <= d1:
|
|
593
|
+
sum += x[i] * parent.twisting_morphism(i)(y[k-i])
|
|
594
|
+
x.append(sum)
|
|
595
|
+
for k from d1 >= k >= 0:
|
|
596
|
+
start = 0 if k <= d2 else k-d2
|
|
597
|
+
end = k if k <= d1 else d1
|
|
598
|
+
sum = x[start] * parent.twisting_morphism(start)(y[k-start])
|
|
599
|
+
for i from start < i <= end:
|
|
600
|
+
sum += x[i] * parent.twisting_morphism(i)(y[k-i])
|
|
601
|
+
x[k] = sum
|
|
602
|
+
|
|
603
|
+
cdef void _inplace_pow(self, Py_ssize_t n) noexcept:
|
|
604
|
+
r"""
|
|
605
|
+
Replace ``self`` by ``self**n`` (only for internal use).
|
|
606
|
+
|
|
607
|
+
TESTS::
|
|
608
|
+
|
|
609
|
+
sage: # needs sage.rings.finite_rings
|
|
610
|
+
sage: k.<t> = GF(5^3)
|
|
611
|
+
sage: Frob = k.frobenius_endomorphism()
|
|
612
|
+
sage: S.<x> = k['x',Frob]
|
|
613
|
+
sage: a = x + t
|
|
614
|
+
sage: modulus = x^3 + t*x^2 + (t+3)*x - 2
|
|
615
|
+
sage: a.left_power_mod(100,modulus) # indirect doctest
|
|
616
|
+
(4*t^2 + t + 1)*x^2 + (t^2 + 4*t + 1)*x + 3*t^2 + 3*t
|
|
617
|
+
"""
|
|
618
|
+
while n & 1 == 0:
|
|
619
|
+
self._inplace_rmul(self)
|
|
620
|
+
n = n >> 1
|
|
621
|
+
cdef SkewPolynomial_generic_dense selfpow = <SkewPolynomial_generic_dense>self._new_c(list(self._coeffs), self._parent)
|
|
622
|
+
n = n >> 1
|
|
623
|
+
while n != 0:
|
|
624
|
+
selfpow._inplace_rmul(selfpow)
|
|
625
|
+
if n&1 == 1:
|
|
626
|
+
self._inplace_rmul(selfpow)
|
|
627
|
+
n = n >> 1
|
|
628
|
+
|
|
629
|
+
cdef _left_quo_rem(self, OrePolynomial other):
|
|
630
|
+
r"""
|
|
631
|
+
Return the quotient and remainder of the left euclidean
|
|
632
|
+
division of ``self`` by ``other`` (C implementation).
|
|
633
|
+
"""
|
|
634
|
+
sig_check()
|
|
635
|
+
cdef list a = list(self._coeffs)
|
|
636
|
+
cdef list b = (<SkewPolynomial_generic_dense>other)._coeffs
|
|
637
|
+
cdef Py_ssize_t i, j
|
|
638
|
+
cdef Py_ssize_t da = self.degree(), db = other.degree()
|
|
639
|
+
if da < db:
|
|
640
|
+
return (self._new_c([], self._parent), self)
|
|
641
|
+
try:
|
|
642
|
+
inv = self.base_ring()(~b[db])
|
|
643
|
+
except (ZeroDivisionError, TypeError):
|
|
644
|
+
raise NotImplementedError("the leading coefficient of the divisor is not invertible")
|
|
645
|
+
cdef list q = [ ]
|
|
646
|
+
parent = self._parent
|
|
647
|
+
for i from da-db >= i >= 0:
|
|
648
|
+
try:
|
|
649
|
+
c = parent.twisting_morphism(-db)(inv*a[i+db])
|
|
650
|
+
for j from 0 <= j < db:
|
|
651
|
+
a[i+j] -= b[j] * parent.twisting_morphism(j)(c)
|
|
652
|
+
except Exception:
|
|
653
|
+
raise NotImplementedError("inversion of the twisting morphism %s" % parent.twisting_morphism())
|
|
654
|
+
q.append(c)
|
|
655
|
+
q.reverse()
|
|
656
|
+
return (self._new_c(q, parent), self._new_c(a[:db], parent, 1))
|
|
657
|
+
|
|
658
|
+
cdef _right_quo_rem(self, OrePolynomial other):
|
|
659
|
+
r"""
|
|
660
|
+
Return the quotient and remainder of the right euclidean
|
|
661
|
+
division of ``self`` by ``other`` (C implementation).
|
|
662
|
+
"""
|
|
663
|
+
sig_check()
|
|
664
|
+
cdef list a = list(self._coeffs)
|
|
665
|
+
cdef list b = (<SkewPolynomial_generic_dense>other)._coeffs
|
|
666
|
+
cdef Py_ssize_t i, j
|
|
667
|
+
cdef Py_ssize_t da = self.degree(), db = other.degree()
|
|
668
|
+
parent = self._parent
|
|
669
|
+
if da < db:
|
|
670
|
+
return (self._new_c([],parent), self)
|
|
671
|
+
try:
|
|
672
|
+
inv = self.base_ring()(~b[db])
|
|
673
|
+
except (ZeroDivisionError, TypeError):
|
|
674
|
+
raise NotImplementedError("the leading coefficient of the divisor"
|
|
675
|
+
" is not invertible")
|
|
676
|
+
cdef list q = [ ]
|
|
677
|
+
parent = self._parent
|
|
678
|
+
for i from da-db >= i >= 0:
|
|
679
|
+
c = parent.twisting_morphism(i)(inv) * a[i+db]
|
|
680
|
+
for j from 0 <= j < db:
|
|
681
|
+
a[i+j] -= c * parent.twisting_morphism(i)(b[j])
|
|
682
|
+
q.append(c)
|
|
683
|
+
q.reverse()
|
|
684
|
+
return (self._new_c(q, parent), self._new_c(a[:db], parent, 1))
|