passagemath-modules 10.6.31rc3__cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +806 -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-e1b7dfc8.so.5.0.0 +0 -0
- passagemath_modules.libs/libgmp-93ebf16a.so.10.5.0 +0 -0
- passagemath_modules.libs/libgsl-e3525837.so.28.0.0 +0 -0
- passagemath_modules.libs/libmpc-c5c421e1.so.3.3.1 +0 -0
- passagemath_modules.libs/libmpfr-e0f11cf3.so.6.2.1 +0 -0
- passagemath_modules.libs/libopenblasp-r0-4c5b64b1.3.29.so +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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-linux-gnu.so +0 -0
- sage/calculus/integration.pyx +698 -0
- sage/calculus/interpolation.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/calculus/interpolation.pxd +13 -0
- sage/calculus/interpolation.pyx +387 -0
- sage/calculus/interpolators.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/calculus/interpolators.pyx +326 -0
- sage/calculus/ode.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/calculus/ode.pxd +5 -0
- sage/calculus/ode.pyx +610 -0
- sage/calculus/riemann.cpython-314-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-linux-gnu.so +0 -0
- sage/libs/mpmath/utils.pxd +4 -0
- sage/libs/mpmath/utils.pyx +319 -0
- sage/matrix/action.cpython-314-aarch64-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-aarch64-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-aarch64-linux-gnu.so +0 -0
- sage/matrix/constructor.pyx +750 -0
- sage/matrix/docs.py +430 -0
- sage/matrix/echelon_matrix.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/matrix/echelon_matrix.pyx +155 -0
- sage/matrix/matrix.pxd +2 -0
- sage/matrix/matrix0.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/matrix/matrix0.pxd +68 -0
- sage/matrix/matrix0.pyx +6324 -0
- sage/matrix/matrix1.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/matrix/matrix1.pxd +8 -0
- sage/matrix/matrix1.pyx +2851 -0
- sage/matrix/matrix2.cpython-314-aarch64-linux-gnu.so +0 -0
- sage/matrix/matrix2.pxd +25 -0
- sage/matrix/matrix2.pyx +20181 -0
- sage/matrix/matrix_cdv.cpython-314-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-linux-gnu.so +0 -0
- sage/matroids/extension.pxd +34 -0
- sage/matroids/extension.pyx +519 -0
- sage/matroids/flats_matroid.cpython-314-aarch64-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-aarch64-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-aarch64-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-aarch64-linux-gnu.so +0 -0
- sage/matroids/linear_matroid.pxd +180 -0
- sage/matroids/linear_matroid.pyx +6649 -0
- sage/matroids/matroid.cpython-314-aarch64-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-aarch64-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-aarch64-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-aarch64-linux-gnu.so +0 -0
- sage/matroids/union_matroid.pxd +20 -0
- sage/matroids/union_matroid.pyx +331 -0
- sage/matroids/unpickling.cpython-314-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-linux-gnu.so +0 -0
- sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
- sage/rings/function_field/khuri_makdisi.cpython-314-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-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-aarch64-linux-gnu.so +0 -0
- sage/stats/hmm/chmm.pyx +1595 -0
- sage/stats/hmm/distributions.cpython-314-aarch64-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-aarch64-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-aarch64-linux-gnu.so +0 -0
- sage/stats/hmm/util.pxd +7 -0
- sage/stats/hmm/util.pyx +165 -0
- sage/stats/intlist.cpython-314-aarch64-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-aarch64-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
sage/matrix/action.pyx
ADDED
|
@@ -0,0 +1,596 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
"""
|
|
3
|
+
Actions used by the coercion model for matrix and vector multiplications
|
|
4
|
+
|
|
5
|
+
.. WARNING::
|
|
6
|
+
|
|
7
|
+
The class :class:`MatrixMulAction` and its descendants extends the class
|
|
8
|
+
:class:`Action`. As a consequence objects from these classes only keep weak
|
|
9
|
+
references to the underlying sets which are acted upon. This decision was
|
|
10
|
+
made in :issue:`715` in order to allow garbage collection within the coercion
|
|
11
|
+
framework, where actions are mainly used, and avoid memory leaks.
|
|
12
|
+
|
|
13
|
+
To ensure that the underlying set of such an object does not get garbage
|
|
14
|
+
collected, it is sufficient to explicitly create a strong reference to it
|
|
15
|
+
before creating the action.
|
|
16
|
+
|
|
17
|
+
::
|
|
18
|
+
|
|
19
|
+
sage: MSQ = MatrixSpace(QQ, 2)
|
|
20
|
+
sage: MSZ = MatrixSpace(ZZ['x'], 2)
|
|
21
|
+
sage: A = MSQ.get_action(MSZ)
|
|
22
|
+
sage: A
|
|
23
|
+
Left action by Full MatrixSpace of 2 by 2 dense matrices over Rational Field
|
|
24
|
+
on Full MatrixSpace of 2 by 2 dense matrices
|
|
25
|
+
over Univariate Polynomial Ring in x over Integer Ring
|
|
26
|
+
sage: import gc
|
|
27
|
+
sage: _ = gc.collect()
|
|
28
|
+
sage: A
|
|
29
|
+
Left action by Full MatrixSpace of 2 by 2 dense matrices over Rational Field
|
|
30
|
+
on Full MatrixSpace of 2 by 2 dense matrices
|
|
31
|
+
over Univariate Polynomial Ring in x over Integer Ring
|
|
32
|
+
|
|
33
|
+
.. NOTE::
|
|
34
|
+
|
|
35
|
+
The :func:`MatrixSpace` function caches the objects it creates. Therefore,
|
|
36
|
+
the underlying set ``MSZ`` in the above example will not be garbage
|
|
37
|
+
collected, even if it is not strongly ref'ed. Nonetheless, there is no
|
|
38
|
+
guarantee that the set that is acted upon will always be cached in such a
|
|
39
|
+
way, so that following the above example is good practice.
|
|
40
|
+
|
|
41
|
+
EXAMPLES:
|
|
42
|
+
|
|
43
|
+
An action requires a common parent for the base rings, so the following
|
|
44
|
+
doesn't work (see :issue:`17859`)::
|
|
45
|
+
|
|
46
|
+
sage: vector(QQ, [1]) * matrix(Zmod(2), [[1]])
|
|
47
|
+
Traceback (most recent call last):
|
|
48
|
+
...
|
|
49
|
+
TypeError: unsupported operand parent(s) for *: 'Vector space of
|
|
50
|
+
dimension 1 over Rational Field' and 'Full MatrixSpace of 1 by 1
|
|
51
|
+
dense matrices over Ring of integers modulo 2'
|
|
52
|
+
|
|
53
|
+
AUTHOR:
|
|
54
|
+
|
|
55
|
+
- Robert Bradshaw (2007-09): Initial version.
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
# ****************************************************************************
|
|
59
|
+
# Copyright (C) 2007 Robert Bradshaw <robertwb@math.washington.edu>
|
|
60
|
+
#
|
|
61
|
+
# This program is free software: you can redistribute it and/or modify
|
|
62
|
+
# it under the terms of the GNU General Public License as published by
|
|
63
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
64
|
+
# (at your option) any later version.
|
|
65
|
+
# https://www.gnu.org/licenses/
|
|
66
|
+
# ****************************************************************************
|
|
67
|
+
|
|
68
|
+
import operator
|
|
69
|
+
|
|
70
|
+
from sage.matrix.matrix_space import MatrixSpace
|
|
71
|
+
from sage.modules.free_module import FreeModule, FreeModule_generic
|
|
72
|
+
from sage.structure.coerce cimport coercion_model
|
|
73
|
+
from sage.categories.homset import Hom, End
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
try:
|
|
77
|
+
from sage.schemes.generic.homset import SchemeHomset_generic, SchemeHomset_points
|
|
78
|
+
except ImportError:
|
|
79
|
+
SchemeHomset_generic = SchemeHomset_points = ()
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
cdef class MatrixMulAction(Action):
|
|
83
|
+
"""
|
|
84
|
+
Abstract base class for a matrix space acting on something.
|
|
85
|
+
|
|
86
|
+
EXAMPLES::
|
|
87
|
+
|
|
88
|
+
sage: MSQ = MatrixSpace(QQ, 2)
|
|
89
|
+
sage: MSZ = MatrixSpace(ZZ['x'], 2)
|
|
90
|
+
sage: A = MSQ.get_action(MSZ); A
|
|
91
|
+
Left action by Full MatrixSpace of 2 by 2 dense matrices over Rational Field
|
|
92
|
+
on Full MatrixSpace of 2 by 2 dense matrices
|
|
93
|
+
over Univariate Polynomial Ring in x over Integer Ring
|
|
94
|
+
sage: A.actor()
|
|
95
|
+
Full MatrixSpace of 2 by 2 dense matrices over Rational Field
|
|
96
|
+
sage: A.domain()
|
|
97
|
+
Full MatrixSpace of 2 by 2 dense matrices
|
|
98
|
+
over Univariate Polynomial Ring in x over Integer Ring
|
|
99
|
+
sage: A.codomain()
|
|
100
|
+
Full MatrixSpace of 2 by 2 dense matrices
|
|
101
|
+
over Univariate Polynomial Ring in x over Rational Field
|
|
102
|
+
"""
|
|
103
|
+
def __init__(self, G, S, is_left):
|
|
104
|
+
if not isinstance(G, MatrixSpace):
|
|
105
|
+
raise TypeError("Not a matrix space: %s" % G)
|
|
106
|
+
if isinstance(S, SchemeHomset_generic):
|
|
107
|
+
if G.base_ring() is not S.domain().base_ring():
|
|
108
|
+
base = coercion_model.common_parent(G.base_ring(), S.domain().base_ring())
|
|
109
|
+
else:
|
|
110
|
+
base = G.base_ring()
|
|
111
|
+
else:
|
|
112
|
+
if G.base_ring() is not S.base_ring():
|
|
113
|
+
base = coercion_model.common_parent(G.base_ring(), S.base_ring())
|
|
114
|
+
else:
|
|
115
|
+
base = G.base_ring()
|
|
116
|
+
self.fix_sparseness = G.is_sparse() != S.is_sparse()
|
|
117
|
+
Action.__init__(self, G, S, is_left, operator.mul)
|
|
118
|
+
self._codomain = self._create_codomain(base)
|
|
119
|
+
|
|
120
|
+
def codomain(self):
|
|
121
|
+
return self._codomain
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
cdef class MatrixMatrixAction(MatrixMulAction):
|
|
125
|
+
"""
|
|
126
|
+
Action of a matrix on another matrix.
|
|
127
|
+
|
|
128
|
+
This is always implemented as a left action.
|
|
129
|
+
|
|
130
|
+
EXAMPLES:
|
|
131
|
+
|
|
132
|
+
By :issue:`715`, there only is a weak reference on the underlying set,
|
|
133
|
+
so that it can be garbage collected if only the action itself is
|
|
134
|
+
explicitly referred to. Hence, we first assign the involved matrix
|
|
135
|
+
spaces to a variable::
|
|
136
|
+
|
|
137
|
+
sage: R.<x> = ZZ[]
|
|
138
|
+
sage: MSR = MatrixSpace(R, 3, 3)
|
|
139
|
+
sage: MSQ = MatrixSpace(QQ, 3, 2)
|
|
140
|
+
sage: from sage.matrix.action import MatrixMatrixAction
|
|
141
|
+
sage: A = MatrixMatrixAction(MSR, MSQ); A
|
|
142
|
+
Left action
|
|
143
|
+
by Full MatrixSpace of 3 by 3 dense matrices
|
|
144
|
+
over Univariate Polynomial Ring in x over Integer Ring
|
|
145
|
+
on Full MatrixSpace of 3 by 2 dense matrices over Rational Field
|
|
146
|
+
sage: A.codomain()
|
|
147
|
+
Full MatrixSpace of 3 by 2 dense matrices
|
|
148
|
+
over Univariate Polynomial Ring in x over Rational Field
|
|
149
|
+
sage: A(matrix(R, 3, 3, x), matrix(QQ, 3, 2, range(6)))
|
|
150
|
+
[ 0 x]
|
|
151
|
+
[2*x 3*x]
|
|
152
|
+
[4*x 5*x]
|
|
153
|
+
|
|
154
|
+
.. NOTE::
|
|
155
|
+
|
|
156
|
+
The :func:`MatrixSpace` function caches the object it creates.
|
|
157
|
+
Therefore, the underlying set ``MSZ`` in the above example will not
|
|
158
|
+
be garbage collected, even if it is not strongly ref'ed.
|
|
159
|
+
Nonetheless, there is no guarantee that the set that is acted upon
|
|
160
|
+
will always be cached in such a way, so that following the above
|
|
161
|
+
example is good practice.
|
|
162
|
+
"""
|
|
163
|
+
def __init__(self, G, S):
|
|
164
|
+
if not isinstance(S, MatrixSpace):
|
|
165
|
+
raise TypeError("Not a matrix space: %s" % S)
|
|
166
|
+
|
|
167
|
+
MatrixMulAction.__init__(self, G, S, True)
|
|
168
|
+
|
|
169
|
+
# disallow multiplication on different backends (same size and rings)
|
|
170
|
+
if (G.base_ring() is S.base_ring() and
|
|
171
|
+
G.is_sparse() == S.is_sparse() and
|
|
172
|
+
G.Element is not S.Element):
|
|
173
|
+
raise TypeError("no matrix multiplication between different implementations")
|
|
174
|
+
|
|
175
|
+
# disallow multiplication (sparse) x (dense) when the densification is not the default
|
|
176
|
+
# implementation
|
|
177
|
+
if self.fix_sparseness:
|
|
178
|
+
if G.is_sparse():
|
|
179
|
+
if not S._has_default_implementation():
|
|
180
|
+
raise TypeError("matrix multiplication not allowed")
|
|
181
|
+
else:
|
|
182
|
+
if not G._has_default_implementation():
|
|
183
|
+
raise TypeError("matrix multiplication not allowed")
|
|
184
|
+
|
|
185
|
+
def _create_codomain(self, base):
|
|
186
|
+
"""
|
|
187
|
+
EXAMPLES:
|
|
188
|
+
|
|
189
|
+
By :issue:`715`, there only is a weak reference on the underlying set,
|
|
190
|
+
so that it can be garbage collected if only the action itself is
|
|
191
|
+
explicitly referred to. Hence, we first assign the involved matrix
|
|
192
|
+
spaces to a variable::
|
|
193
|
+
|
|
194
|
+
sage: from sage.matrix.action import MatrixMatrixAction
|
|
195
|
+
sage: R.<x> = ZZ[]
|
|
196
|
+
sage: MSR = MatrixSpace(R, 3, 3)
|
|
197
|
+
sage: MSQ = MatrixSpace(QQ, 3, 2)
|
|
198
|
+
sage: A = MatrixMatrixAction(MSR, MSQ); A
|
|
199
|
+
Left action by Full MatrixSpace of 3 by 3 dense matrices over Univariate Polynomial Ring in x over Integer Ring
|
|
200
|
+
on Full MatrixSpace of 3 by 2 dense matrices over Rational Field
|
|
201
|
+
sage: A.codomain()
|
|
202
|
+
Full MatrixSpace of 3 by 2 dense matrices over Univariate Polynomial Ring in x over Rational Field
|
|
203
|
+
|
|
204
|
+
.. NOTE::
|
|
205
|
+
|
|
206
|
+
The :func:`MatrixSpace` function caches the object it creates.
|
|
207
|
+
Therefore, the underlying set ``MSZ`` in the above example will not
|
|
208
|
+
be garbage collected, even if it is not strongly ref'ed.
|
|
209
|
+
Nonetheless, there is no guarantee that the set that is acted upon
|
|
210
|
+
will always be cached in such a way, so that following the above
|
|
211
|
+
example is good practice.
|
|
212
|
+
"""
|
|
213
|
+
if self.G.ncols() != self.underlying_set().nrows():
|
|
214
|
+
raise TypeError("incompatible dimensions %s, %s" %
|
|
215
|
+
(self.G.ncols(), self.underlying_set().nrows()))
|
|
216
|
+
return MatrixSpace(base, self.G.nrows(), self.underlying_set().ncols(),
|
|
217
|
+
sparse = self.G.is_sparse() and self.underlying_set().is_sparse())
|
|
218
|
+
|
|
219
|
+
cpdef _act_(self, g, s):
|
|
220
|
+
"""
|
|
221
|
+
EXAMPLES:
|
|
222
|
+
|
|
223
|
+
Respects compatible subdivisions::
|
|
224
|
+
|
|
225
|
+
sage: M = matrix(5, 5, prime_range(100)) # needs sage.libs.pari
|
|
226
|
+
sage: M.subdivide(2, 3); M # needs sage.libs.pari
|
|
227
|
+
[ 2 3 5| 7 11]
|
|
228
|
+
[13 17 19|23 29]
|
|
229
|
+
[--------+-----]
|
|
230
|
+
[31 37 41|43 47]
|
|
231
|
+
[53 59 61|67 71]
|
|
232
|
+
[73 79 83|89 97]
|
|
233
|
+
sage: N = matrix(5, 2, [n^2 for n in range(10)])
|
|
234
|
+
sage: N.subdivide(3, 1); N
|
|
235
|
+
[ 0| 1]
|
|
236
|
+
[ 4| 9]
|
|
237
|
+
[16|25]
|
|
238
|
+
[--+--]
|
|
239
|
+
[36|49]
|
|
240
|
+
[64|81]
|
|
241
|
+
sage: M*N # needs sage.libs.pari
|
|
242
|
+
[ 1048| 1388]
|
|
243
|
+
[ 3056| 4117]
|
|
244
|
+
[-----+-----]
|
|
245
|
+
[ 5360| 7303]
|
|
246
|
+
[ 8168|11143]
|
|
247
|
+
[11056|15077]
|
|
248
|
+
|
|
249
|
+
Note that this is just like block matrix multiplication::
|
|
250
|
+
|
|
251
|
+
sage: M.subdivision(0,0) * N.subdivision(0,0) + M.subdivision(0,1) * N.subdivision(1,0) # needs sage.libs.pari
|
|
252
|
+
[1048]
|
|
253
|
+
[3056]
|
|
254
|
+
|
|
255
|
+
If the subdivisions aren't compatible, ignore them.
|
|
256
|
+
::
|
|
257
|
+
|
|
258
|
+
sage: N.subdivide(1,1); N
|
|
259
|
+
[ 0| 1]
|
|
260
|
+
[--+--]
|
|
261
|
+
[ 4| 9]
|
|
262
|
+
[16|25]
|
|
263
|
+
[36|49]
|
|
264
|
+
[64|81]
|
|
265
|
+
sage: M*N # needs sage.libs.pari
|
|
266
|
+
[ 1048 1388]
|
|
267
|
+
[ 3056 4117]
|
|
268
|
+
[ 5360 7303]
|
|
269
|
+
[ 8168 11143]
|
|
270
|
+
[11056 15077]
|
|
271
|
+
"""
|
|
272
|
+
cdef Matrix A = <Matrix>g
|
|
273
|
+
cdef Matrix B = <Matrix>s
|
|
274
|
+
if A._parent._base is not self._codomain._base:
|
|
275
|
+
A = A.change_ring(self._codomain._base)
|
|
276
|
+
if B._parent._base is not self._codomain._base:
|
|
277
|
+
B = B.change_ring(self._codomain._base)
|
|
278
|
+
if self.fix_sparseness:
|
|
279
|
+
if B.is_sparse_c():
|
|
280
|
+
B = B.dense_matrix()
|
|
281
|
+
else:
|
|
282
|
+
A = A.dense_matrix()
|
|
283
|
+
assert type(A) is type(B), (type(A), type(B))
|
|
284
|
+
prod = A._matrix_times_matrix_(B)
|
|
285
|
+
if A._subdivisions is not None or B._subdivisions is not None:
|
|
286
|
+
Asubs = A.subdivisions()
|
|
287
|
+
Bsubs = B.subdivisions()
|
|
288
|
+
if Asubs[1] == Bsubs[0]:
|
|
289
|
+
prod.subdivide(Asubs[0], Bsubs[1])
|
|
290
|
+
return prod
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
cdef class MatrixVectorAction(MatrixMulAction):
|
|
294
|
+
"""
|
|
295
|
+
Left action of a matrix on a vector
|
|
296
|
+
"""
|
|
297
|
+
def __init__(self, G, S):
|
|
298
|
+
"""
|
|
299
|
+
EXAMPLES::
|
|
300
|
+
|
|
301
|
+
sage: from sage.matrix.action import MatrixVectorAction
|
|
302
|
+
sage: A = MatrixVectorAction(MatrixSpace(QQ, 3, 3), VectorSpace(CDF, 4)); A
|
|
303
|
+
Traceback (most recent call last):
|
|
304
|
+
...
|
|
305
|
+
TypeError: incompatible dimensions 3, 4
|
|
306
|
+
"""
|
|
307
|
+
if not isinstance(S, FreeModule_generic):
|
|
308
|
+
raise TypeError("Not a free module: %s" % S)
|
|
309
|
+
MatrixMulAction.__init__(self, G, S, True)
|
|
310
|
+
|
|
311
|
+
def _create_codomain(self, base):
|
|
312
|
+
"""
|
|
313
|
+
EXAMPLES::
|
|
314
|
+
|
|
315
|
+
sage: from sage.matrix.action import MatrixVectorAction
|
|
316
|
+
sage: M = MatrixSpace(QQ, 5, 3)
|
|
317
|
+
sage: V = VectorSpace(CDF, 3) # strong reference prevents garbage collection
|
|
318
|
+
sage: A = MatrixVectorAction(M, V); A
|
|
319
|
+
Left action by Full MatrixSpace of 5 by 3 dense matrices over Rational Field
|
|
320
|
+
on Vector space of dimension 3 over Complex Double Field
|
|
321
|
+
sage: A.codomain()
|
|
322
|
+
Vector space of dimension 5 over Complex Double Field
|
|
323
|
+
"""
|
|
324
|
+
if self.G.ncols() != self.underlying_set().degree():
|
|
325
|
+
raise TypeError("incompatible dimensions %s, %s" % (self.G.ncols(),
|
|
326
|
+
self.underlying_set().degree()))
|
|
327
|
+
return FreeModule(base, self.G.nrows(), sparse = self.G.is_sparse())
|
|
328
|
+
|
|
329
|
+
cpdef _act_(self, g, s):
|
|
330
|
+
cdef Matrix A = <Matrix>g
|
|
331
|
+
cdef Vector v = <Vector>s
|
|
332
|
+
if A._parent._base is not self._codomain._base:
|
|
333
|
+
A = A.change_ring(self._codomain._base)
|
|
334
|
+
if v._parent._base is not self._codomain._base:
|
|
335
|
+
v = v.change_ring(self._codomain._base)
|
|
336
|
+
if self.fix_sparseness:
|
|
337
|
+
if A.is_sparse_c():
|
|
338
|
+
v = v.sparse_vector()
|
|
339
|
+
else:
|
|
340
|
+
v = v.dense_vector()
|
|
341
|
+
return A._matrix_times_vector_(v)
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
cdef class VectorMatrixAction(MatrixMulAction):
|
|
345
|
+
"""
|
|
346
|
+
Right action of a matrix on a vector
|
|
347
|
+
"""
|
|
348
|
+
def __init__(self, G, S):
|
|
349
|
+
"""
|
|
350
|
+
EXAMPLES::
|
|
351
|
+
|
|
352
|
+
sage: from sage.matrix.action import VectorMatrixAction
|
|
353
|
+
sage: A = VectorMatrixAction(MatrixSpace(QQ, 5, 3), VectorSpace(CDF, 3)); A
|
|
354
|
+
Traceback (most recent call last):
|
|
355
|
+
...
|
|
356
|
+
TypeError: incompatible dimensions 5, 3
|
|
357
|
+
"""
|
|
358
|
+
if not isinstance(S, FreeModule_generic):
|
|
359
|
+
raise TypeError("Not a free module: %s" % S)
|
|
360
|
+
MatrixMulAction.__init__(self, G, S, False)
|
|
361
|
+
|
|
362
|
+
def _create_codomain(self, base):
|
|
363
|
+
"""
|
|
364
|
+
EXAMPLES::
|
|
365
|
+
|
|
366
|
+
sage: from sage.matrix.action import VectorMatrixAction
|
|
367
|
+
sage: M = MatrixSpace(QQ, 3, 5)
|
|
368
|
+
sage: V = VectorSpace(CDF, 3)
|
|
369
|
+
sage: A = VectorMatrixAction(M, V)
|
|
370
|
+
sage: A
|
|
371
|
+
Right action by Full MatrixSpace of 3 by 5 dense matrices over Rational Field
|
|
372
|
+
on Vector space of dimension 3 over Complex Double Field
|
|
373
|
+
sage: A.codomain()
|
|
374
|
+
Vector space of dimension 5 over Complex Double Field
|
|
375
|
+
"""
|
|
376
|
+
if self.G.nrows() != self.underlying_set().degree():
|
|
377
|
+
raise TypeError("incompatible dimensions %s, %s" % (self.G.nrows(),
|
|
378
|
+
self.underlying_set().degree()))
|
|
379
|
+
return FreeModule(base, self.G.ncols(), sparse = self.G.is_sparse())
|
|
380
|
+
|
|
381
|
+
cpdef _act_(self, g, s):
|
|
382
|
+
cdef Matrix A = <Matrix>g
|
|
383
|
+
cdef Vector v = <Vector>s
|
|
384
|
+
if A._parent._base is not self._codomain._base:
|
|
385
|
+
A = A.change_ring(self._codomain._base)
|
|
386
|
+
if v._parent._base is not self._codomain._base:
|
|
387
|
+
v = v.change_ring(self._codomain._base)
|
|
388
|
+
if self.fix_sparseness:
|
|
389
|
+
if A.is_sparse_c():
|
|
390
|
+
v = v.sparse_vector()
|
|
391
|
+
else:
|
|
392
|
+
v = v.dense_vector()
|
|
393
|
+
return (<Matrix>A)._vector_times_matrix_(v) # v * A
|
|
394
|
+
|
|
395
|
+
cdef class MatrixPolymapAction(MatrixMulAction):
|
|
396
|
+
"""
|
|
397
|
+
Left action of a matrix on a scheme polynomial morphism
|
|
398
|
+
"""
|
|
399
|
+
def __init__(self, G, S):
|
|
400
|
+
"""
|
|
401
|
+
Initialize the action.
|
|
402
|
+
|
|
403
|
+
EXAMPLES::
|
|
404
|
+
|
|
405
|
+
sage: from sage.matrix.action import MatrixPolymapAction
|
|
406
|
+
sage: M = MatrixSpace(QQ,2,2)
|
|
407
|
+
sage: P.<x,y> = ProjectiveSpace(QQ,1)
|
|
408
|
+
sage: H = Hom(P,P)
|
|
409
|
+
sage: A = MatrixPolymapAction(M,H)
|
|
410
|
+
sage: A
|
|
411
|
+
Left action by Full MatrixSpace of 2 by 2 dense matrices over Rational
|
|
412
|
+
Field on Set of morphisms
|
|
413
|
+
From: Projective Space of dimension 1 over Rational Field
|
|
414
|
+
To: Projective Space of dimension 1 over Rational Field
|
|
415
|
+
"""
|
|
416
|
+
if not isinstance(S, SchemeHomset_generic):
|
|
417
|
+
raise TypeError("not a scheme polynomial morphism: %s"% S)
|
|
418
|
+
MatrixMulAction.__init__(self, G, S, True)
|
|
419
|
+
|
|
420
|
+
def _create_codomain(self, base):
|
|
421
|
+
"""
|
|
422
|
+
EXAMPLES::
|
|
423
|
+
|
|
424
|
+
sage: from sage.matrix.action import MatrixPolymapAction
|
|
425
|
+
sage: M = MatrixSpace(QQ,2,2)
|
|
426
|
+
sage: P.<x,y> = ProjectiveSpace(QQ,1)
|
|
427
|
+
sage: H = End(P)
|
|
428
|
+
sage: A = MatrixPolymapAction(M,H)
|
|
429
|
+
sage: A.codomain()
|
|
430
|
+
Set of morphisms
|
|
431
|
+
From: Projective Space of dimension 1 over Rational Field
|
|
432
|
+
To: Projective Space of dimension 1 over Rational Field
|
|
433
|
+
sage: A.codomain().is_endomorphism_set()
|
|
434
|
+
True
|
|
435
|
+
"""
|
|
436
|
+
if self.underlying_set().is_endomorphism_set():
|
|
437
|
+
return End(self.underlying_set().domain().change_ring(base))
|
|
438
|
+
return Hom(self.underlying_set().domain().change_ring(base), self.underlying_set().codomain().change_ring(base))
|
|
439
|
+
|
|
440
|
+
cpdef _act_(self, mat, f):
|
|
441
|
+
"""
|
|
442
|
+
Call the action.
|
|
443
|
+
|
|
444
|
+
INPUT:
|
|
445
|
+
|
|
446
|
+
- ``mat`` -- a matrix
|
|
447
|
+
|
|
448
|
+
- ``f`` -- a scheme homomorphism
|
|
449
|
+
|
|
450
|
+
EXAMPLES::
|
|
451
|
+
|
|
452
|
+
sage: from sage.matrix.action import MatrixPolymapAction
|
|
453
|
+
sage: M = MatrixSpace(QQ, 2, 2)
|
|
454
|
+
sage: P.<x, y> = ProjectiveSpace(QQ, 1)
|
|
455
|
+
sage: H = Hom(P, P)
|
|
456
|
+
sage: f = H([x^2 + y^2, y^2]) # needs sage.libs.singular
|
|
457
|
+
sage: A = MatrixPolymapAction(M, H)
|
|
458
|
+
sage: m = matrix([[1,1], [0,1]])
|
|
459
|
+
sage: A._act_(m, f) # needs sage.libs.singular
|
|
460
|
+
Scheme endomorphism of Projective Space of dimension 1 over Rational Field
|
|
461
|
+
Defn: Defined on coordinates by sending (x : y) to
|
|
462
|
+
(x^2 + 2*y^2 : y^2)
|
|
463
|
+
"""
|
|
464
|
+
return f._matrix_times_polymap_(mat, self._codomain)
|
|
465
|
+
|
|
466
|
+
cdef class PolymapMatrixAction(MatrixMulAction):
|
|
467
|
+
"""
|
|
468
|
+
Right action of a matrix on a scheme polynomial morphism
|
|
469
|
+
"""
|
|
470
|
+
def __init__(self, G, S):
|
|
471
|
+
"""
|
|
472
|
+
Initialize the action.
|
|
473
|
+
|
|
474
|
+
EXAMPLES::
|
|
475
|
+
|
|
476
|
+
sage: from sage.matrix.action import PolymapMatrixAction
|
|
477
|
+
sage: M = MatrixSpace(QQ,2,2)
|
|
478
|
+
sage: P.<x,y> = ProjectiveSpace(QQ,1)
|
|
479
|
+
sage: H = Hom(P,P)
|
|
480
|
+
sage: A = PolymapMatrixAction(M,H)
|
|
481
|
+
sage: A
|
|
482
|
+
Right action by Full MatrixSpace of 2 by 2 dense matrices over Rational
|
|
483
|
+
Field on Set of morphisms
|
|
484
|
+
From: Projective Space of dimension 1 over Rational Field
|
|
485
|
+
To: Projective Space of dimension 1 over Rational Field
|
|
486
|
+
"""
|
|
487
|
+
if not isinstance(S, SchemeHomset_generic):
|
|
488
|
+
raise TypeError("not a scheme polynomial morphism: %s"% S)
|
|
489
|
+
MatrixMulAction.__init__(self, G, S, False )
|
|
490
|
+
|
|
491
|
+
def _create_codomain(self, base):
|
|
492
|
+
"""
|
|
493
|
+
Create the codomain.
|
|
494
|
+
|
|
495
|
+
EXAMPLES::
|
|
496
|
+
|
|
497
|
+
sage: from sage.matrix.action import PolymapMatrixAction
|
|
498
|
+
sage: M = MatrixSpace(QQ,2,2)
|
|
499
|
+
sage: P.<x,y> = ProjectiveSpace(QQ,1)
|
|
500
|
+
sage: H = End(P)
|
|
501
|
+
sage: A = PolymapMatrixAction(M,H)
|
|
502
|
+
sage: A.codomain()
|
|
503
|
+
Set of morphisms
|
|
504
|
+
From: Projective Space of dimension 1 over Rational Field
|
|
505
|
+
To: Projective Space of dimension 1 over Rational Field
|
|
506
|
+
sage: A.codomain().is_endomorphism_set()
|
|
507
|
+
True
|
|
508
|
+
"""
|
|
509
|
+
if self.underlying_set().is_endomorphism_set():
|
|
510
|
+
return End(self.underlying_set().domain().change_ring(base))
|
|
511
|
+
return Hom(self.underlying_set().domain().change_ring(base), self.underlying_set().codomain().change_ring(base))
|
|
512
|
+
|
|
513
|
+
cpdef _act_(self, mat, f):
|
|
514
|
+
"""
|
|
515
|
+
Call the action.
|
|
516
|
+
|
|
517
|
+
INPUT:
|
|
518
|
+
|
|
519
|
+
- ``mat`` -- a matrix
|
|
520
|
+
|
|
521
|
+
- ``f`` -- a scheme homomorphism
|
|
522
|
+
|
|
523
|
+
EXAMPLES::
|
|
524
|
+
|
|
525
|
+
sage: from sage.matrix.action import PolymapMatrixAction
|
|
526
|
+
sage: M = MatrixSpace(QQ, 2, 2)
|
|
527
|
+
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
|
|
528
|
+
sage: H = Hom(P, P)
|
|
529
|
+
sage: f = H([x^2 + y^2, y^2]) # needs sage.libs.singular
|
|
530
|
+
sage: A = PolymapMatrixAction(M, H)
|
|
531
|
+
sage: m = matrix([[1,1], [0,1]])
|
|
532
|
+
sage: A._act_(m, f) # needs sage.libs.singular
|
|
533
|
+
Scheme endomorphism of Projective Space of dimension 1 over Rational Field
|
|
534
|
+
Defn: Defined on coordinates by sending (x : y) to
|
|
535
|
+
(x^2 + 2*x*y + 2*y^2 : y^2)
|
|
536
|
+
"""
|
|
537
|
+
return f._polymap_times_matrix_(mat, self._codomain)
|
|
538
|
+
|
|
539
|
+
|
|
540
|
+
cdef class MatrixSchemePointAction(MatrixMulAction):
|
|
541
|
+
r"""
|
|
542
|
+
Action class for left multiplication of schemes points by matrices.
|
|
543
|
+
"""
|
|
544
|
+
def __init__(self, G, S):
|
|
545
|
+
"""
|
|
546
|
+
Initialization of action class.
|
|
547
|
+
|
|
548
|
+
EXAMPLES::
|
|
549
|
+
|
|
550
|
+
sage: from sage.matrix.action import MatrixSchemePointAction
|
|
551
|
+
sage: M = MatrixSpace(QQ, 2, 2)
|
|
552
|
+
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
|
|
553
|
+
sage: A = MatrixSchemePointAction(M, P(QQ))
|
|
554
|
+
sage: A
|
|
555
|
+
Left action by Full MatrixSpace of 2 by 2 dense matrices over
|
|
556
|
+
Rational Field on Set of rational points of Projective Space
|
|
557
|
+
of dimension 1 over Rational Field
|
|
558
|
+
"""
|
|
559
|
+
if not isinstance(S, SchemeHomset_points):
|
|
560
|
+
raise TypeError("not a homset of scheme points: %s"% S)
|
|
561
|
+
MatrixMulAction.__init__(self, G, S, True)
|
|
562
|
+
|
|
563
|
+
def _create_codomain(self, base):
|
|
564
|
+
"""
|
|
565
|
+
Create the point homset for the resulting point.
|
|
566
|
+
|
|
567
|
+
EXAMPLES::
|
|
568
|
+
|
|
569
|
+
sage: from sage.matrix.action import MatrixSchemePointAction
|
|
570
|
+
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
|
|
571
|
+
sage: M = MatrixSpace(QQ, 2, 2)
|
|
572
|
+
sage: A = MatrixSchemePointAction(M, P(QQ))
|
|
573
|
+
sage: A.codomain()
|
|
574
|
+
Set of rational points of Projective Space of dimension 1 over Rational Field
|
|
575
|
+
"""
|
|
576
|
+
#need to extend the base of the ambient space
|
|
577
|
+
#and return the set of point over the base
|
|
578
|
+
amb = self.underlying_set().codomain()
|
|
579
|
+
return amb.change_ring(base)(base)
|
|
580
|
+
|
|
581
|
+
cpdef _act_(self, mat, P):
|
|
582
|
+
"""
|
|
583
|
+
Action of matrices on scheme points.
|
|
584
|
+
|
|
585
|
+
EXAMPLES::
|
|
586
|
+
|
|
587
|
+
sage: from sage.matrix.action import MatrixSchemePointAction
|
|
588
|
+
sage: P.<x, y> = ProjectiveSpace(QQ, 1)
|
|
589
|
+
sage: Q = P(1,1)
|
|
590
|
+
sage: M = MatrixSpace(QQ, 2, 2)
|
|
591
|
+
sage: A = MatrixSchemePointAction(M, Q.parent())
|
|
592
|
+
sage: m = matrix([[1,1], [0,1]])
|
|
593
|
+
sage: A._act_(m, Q)
|
|
594
|
+
(2 : 1)
|
|
595
|
+
"""
|
|
596
|
+
return P._matrix_times_point_(mat, self._codomain)
|
sage/matrix/all.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
from sage.misc.lazy_import import lazy_import
|
|
3
|
+
from sage.matrix.matrix_space import MatrixSpace
|
|
4
|
+
from sage.matrix.constructor import (matrix, Matrix, column_matrix, random_matrix,
|
|
5
|
+
diagonal_matrix, identity_matrix, block_matrix,
|
|
6
|
+
block_diagonal_matrix, jordan_block, zero_matrix,
|
|
7
|
+
ones_matrix, elementary_matrix, companion_matrix)
|
|
8
|
+
Mat = MatrixSpace
|
|
9
|
+
del lazy_import
|
|
Binary file
|