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,20 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
# All of sage.misc.all except for development tools, session management,
|
|
3
|
+
# and deprecated functionality
|
|
4
|
+
|
|
5
|
+
from sage.misc.lazy_attribute import lazy_attribute, lazy_class_attribute
|
|
6
|
+
|
|
7
|
+
from sage.misc.all__sagemath_categories import *
|
|
8
|
+
|
|
9
|
+
from sage.misc.misc import (BackslashOperator, # Depends on sage.env -- can lower to sagemath-objects after splitting this module
|
|
10
|
+
exists, forall, is_iterator,
|
|
11
|
+
random_sublist,
|
|
12
|
+
pad_zeros,
|
|
13
|
+
newton_method_sizes, compose,
|
|
14
|
+
nest)
|
|
15
|
+
|
|
16
|
+
from sage.misc.temporary_file import tmp_dir, tmp_filename # Depends on sage.env
|
|
17
|
+
|
|
18
|
+
from sage.misc.mathml import mathml
|
|
19
|
+
|
|
20
|
+
from sage.misc.func_persist import func_persist
|
|
Binary file
|
sage/misc/c3.pyx
ADDED
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
"""
|
|
3
|
+
The C3 algorithm
|
|
4
|
+
|
|
5
|
+
The C3 algorithm is used as method resolution order for new style
|
|
6
|
+
classes in Python. The implementation here is used to order the list
|
|
7
|
+
of super categories of a category.
|
|
8
|
+
|
|
9
|
+
AUTHOR:
|
|
10
|
+
|
|
11
|
+
- Simon King (2011-11): initial version.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
# ****************************************************************************
|
|
15
|
+
# Copyright (C) 2011 Simon King <simon.king@uni-jena.de>
|
|
16
|
+
#
|
|
17
|
+
# This program is free software: you can redistribute it and/or modify
|
|
18
|
+
# it under the terms of the GNU General Public License as published by
|
|
19
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
20
|
+
# (at your option) any later version.
|
|
21
|
+
# https://www.gnu.org/licenses/
|
|
22
|
+
# ****************************************************************************
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
cpdef list C3_algorithm(object start, str bases, str attribute, bint proper):
|
|
26
|
+
"""
|
|
27
|
+
An implementation of the C3 algorithm.
|
|
28
|
+
|
|
29
|
+
C3 is the algorithm used by Python to construct the method
|
|
30
|
+
resolution order for new style classes involving multiple
|
|
31
|
+
inheritance.
|
|
32
|
+
|
|
33
|
+
After :issue:`11943` this implementation was used to compute the
|
|
34
|
+
list of super categories of a category; see
|
|
35
|
+
:meth:`~sage.categories.category.Category.all_super_categories`.
|
|
36
|
+
The purpose is to ensure that list of super categories matches
|
|
37
|
+
with the method resolution order of the parent or element classes
|
|
38
|
+
of a category.
|
|
39
|
+
|
|
40
|
+
Since :issue:`13589`, this implementation is superseded by that in
|
|
41
|
+
:mod:`sage.misc.c3_controlled`, that puts the ``C3`` algorithm
|
|
42
|
+
under control of some total order on categories. This guarantees
|
|
43
|
+
that ``C3`` always finds a consistent Method Resolution Order. For
|
|
44
|
+
background, see :mod:`sage.misc.c3_controlled`.
|
|
45
|
+
|
|
46
|
+
INPUT:
|
|
47
|
+
|
|
48
|
+
- ``start`` -- an object; the returned list is built upon data
|
|
49
|
+
provided by certain attributes of ``start``
|
|
50
|
+
- ``bases`` -- string; the name of an attribute of ``start``
|
|
51
|
+
providing a list of objects
|
|
52
|
+
- ``attribute`` -- string; the name of an attribute of the
|
|
53
|
+
objects provided in ``getattr(start,bases)``. That attribute is
|
|
54
|
+
supposed to provide a list.
|
|
55
|
+
|
|
56
|
+
ASSUMPTIONS:
|
|
57
|
+
|
|
58
|
+
Our implementation of the algorithm only works on lists of
|
|
59
|
+
objects that compare equal if and only if they are identical.
|
|
60
|
+
|
|
61
|
+
OUTPUT:
|
|
62
|
+
|
|
63
|
+
A list, the result of the C3 algorithm applied to the list
|
|
64
|
+
``[getattr(X,attribute) for X in getattr(start,bases)]``.
|
|
65
|
+
|
|
66
|
+
EXAMPLES:
|
|
67
|
+
|
|
68
|
+
We create a class for elements in a hierarchy that uses the ``C3``
|
|
69
|
+
algorithm to compute, for each element, a linear extension of the
|
|
70
|
+
elements above it::
|
|
71
|
+
|
|
72
|
+
.. TODO:: Move back the __init__ at the beginning
|
|
73
|
+
|
|
74
|
+
sage: from sage.misc.c3 import C3_algorithm
|
|
75
|
+
sage: class HierarchyElement(UniqueRepresentation):
|
|
76
|
+
....: @lazy_attribute
|
|
77
|
+
....: def _all_bases(self):
|
|
78
|
+
....: return C3_algorithm(self, '_bases', '_all_bases', False)
|
|
79
|
+
....: def __repr__(self):
|
|
80
|
+
....: return self._name
|
|
81
|
+
....: def __init__(self, name, bases):
|
|
82
|
+
....: self._name = name
|
|
83
|
+
....: self._bases = list(bases)
|
|
84
|
+
|
|
85
|
+
We construct a little hierarchy::
|
|
86
|
+
|
|
87
|
+
sage: T = HierarchyElement("T", ())
|
|
88
|
+
sage: X = HierarchyElement("X", (T,))
|
|
89
|
+
sage: Y = HierarchyElement("Y", (T,))
|
|
90
|
+
sage: A = HierarchyElement("A", (X, Y))
|
|
91
|
+
sage: B = HierarchyElement("B", (Y, X))
|
|
92
|
+
sage: Foo = HierarchyElement("Foo", (A, B))
|
|
93
|
+
|
|
94
|
+
And inspect the linear extensions associated to each element::
|
|
95
|
+
|
|
96
|
+
sage: T._all_bases
|
|
97
|
+
[T]
|
|
98
|
+
sage: X._all_bases
|
|
99
|
+
[X, T]
|
|
100
|
+
sage: Y._all_bases
|
|
101
|
+
[Y, T]
|
|
102
|
+
sage: A._all_bases
|
|
103
|
+
[A, X, Y, T]
|
|
104
|
+
sage: B._all_bases
|
|
105
|
+
[B, Y, X, T]
|
|
106
|
+
|
|
107
|
+
So far so good. However::
|
|
108
|
+
|
|
109
|
+
sage: Foo._all_bases
|
|
110
|
+
Traceback (most recent call last):
|
|
111
|
+
...
|
|
112
|
+
ValueError: Cannot merge the items X, Y.
|
|
113
|
+
|
|
114
|
+
The ``C3`` algorithm is not able to create a consistent linear
|
|
115
|
+
extension. Indeed, its specifications impose that, if ``X`` and
|
|
116
|
+
``Y`` appear in a certain order in the linear extension for an
|
|
117
|
+
element of the hierarchy, then they should appear in the same
|
|
118
|
+
order for any lower element. This is clearly not possibly for
|
|
119
|
+
``Foo``, since ``A`` and ``B`` impose incompatible orders. If the
|
|
120
|
+
above was a hierarchy of classes, Python would complain that it
|
|
121
|
+
cannot calculate a consistent Method Resolution Order.
|
|
122
|
+
|
|
123
|
+
TESTS:
|
|
124
|
+
|
|
125
|
+
Regression test for bug #1 of :issue:`13501`::
|
|
126
|
+
|
|
127
|
+
sage: class C(): pass
|
|
128
|
+
sage: class F(): pass
|
|
129
|
+
sage: class G(): pass
|
|
130
|
+
sage: class B(C,F): pass
|
|
131
|
+
sage: class D(F,G): pass
|
|
132
|
+
sage: class E(F): pass
|
|
133
|
+
sage: class A(B,D,E): pass
|
|
134
|
+
sage: [cls.__name__ for cls in A.mro()]
|
|
135
|
+
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'object']
|
|
136
|
+
|
|
137
|
+
sage: C = HierarchyElement("C", ())
|
|
138
|
+
sage: F = HierarchyElement("F", ())
|
|
139
|
+
sage: G = HierarchyElement("G", ())
|
|
140
|
+
sage: B = HierarchyElement("B", (C, F))
|
|
141
|
+
sage: D = HierarchyElement("D", (F, G))
|
|
142
|
+
sage: E = HierarchyElement("E", (F,))
|
|
143
|
+
sage: A = HierarchyElement("A", (B, D, E))
|
|
144
|
+
sage: A._all_bases
|
|
145
|
+
[A, B, C, D, E, F, G]
|
|
146
|
+
|
|
147
|
+
Regression test for bug #2 of :issue:`13501`. The following should
|
|
148
|
+
fail since ``A`` asks for ``B`` to come before ``C``, where as
|
|
149
|
+
``B`` is a super class of ``C``::
|
|
150
|
+
|
|
151
|
+
sage: class B(): pass
|
|
152
|
+
sage: class C(B): pass
|
|
153
|
+
sage: class A(B, C): pass
|
|
154
|
+
Traceback (most recent call last):
|
|
155
|
+
...
|
|
156
|
+
TypeError: ...Cannot create a consistent method resolution order (MRO)
|
|
157
|
+
for bases ...
|
|
158
|
+
|
|
159
|
+
sage: B = HierarchyElement("B", ())
|
|
160
|
+
sage: C = HierarchyElement("C", (B,))
|
|
161
|
+
sage: A = HierarchyElement("A", (B,C))
|
|
162
|
+
sage: A._all_bases
|
|
163
|
+
Traceback (most recent call last):
|
|
164
|
+
...
|
|
165
|
+
ValueError: Cannot merge the items B, C, B.
|
|
166
|
+
|
|
167
|
+
Since :issue:`11943`, the following consistency tests are part
|
|
168
|
+
of the test suites of categories (except for hom categories)::
|
|
169
|
+
|
|
170
|
+
sage: C = Category.join([HopfAlgebrasWithBasis(QQ), FiniteEnumeratedSets()])
|
|
171
|
+
sage: C.parent_class.mro() == [x.parent_class for x in C.all_super_categories()]+[object]
|
|
172
|
+
True
|
|
173
|
+
sage: C.element_class.mro() == [x.element_class for x in C.all_super_categories()]+[object]
|
|
174
|
+
True
|
|
175
|
+
"""
|
|
176
|
+
cdef list out
|
|
177
|
+
if proper:
|
|
178
|
+
out = []
|
|
179
|
+
else:
|
|
180
|
+
out = [start]
|
|
181
|
+
cdef list args = getattr(start, bases)
|
|
182
|
+
if not args:
|
|
183
|
+
return out
|
|
184
|
+
# Data structure / invariants:
|
|
185
|
+
# We will be working with the MRO's of the super objects
|
|
186
|
+
# together with the list of bases of ``self``.
|
|
187
|
+
# Each list is split between its head (in ``heads``) and tail (in
|
|
188
|
+
# ``tails'') . Each tail is stored reversed, so that we can use a
|
|
189
|
+
# cheap pop() in lieue of pop(0). A duplicate of the tail is
|
|
190
|
+
# stored as a set in ``tailsets`` for cheap membership testing.
|
|
191
|
+
# Since we actually want comparison by identity, not equality,
|
|
192
|
+
# what we store is the set of memory locations of objects
|
|
193
|
+
cdef object O, X
|
|
194
|
+
cdef list tails = [getattr(obj, attribute) for obj in args]
|
|
195
|
+
tails.append(args)
|
|
196
|
+
tails = [list(reversed(tail)) for tail in tails]
|
|
197
|
+
cdef list heads = [tail.pop() for tail in tails]
|
|
198
|
+
cdef list tailsets = [set([<size_t><void *>O for O in tail])
|
|
199
|
+
for tail in tails]
|
|
200
|
+
|
|
201
|
+
cdef int i, j, nbheads
|
|
202
|
+
nbheads = len(heads)
|
|
203
|
+
cdef bint next_item_found
|
|
204
|
+
cdef list tail_list
|
|
205
|
+
|
|
206
|
+
while nbheads:
|
|
207
|
+
for i from 0 <= i < nbheads:
|
|
208
|
+
O = heads[i]
|
|
209
|
+
# Does O appear in none of the tails? ``all(O not in tail for tail in tailsets)``
|
|
210
|
+
next_item_found = True
|
|
211
|
+
for j from 0 <= j < nbheads:
|
|
212
|
+
if j == i:
|
|
213
|
+
continue
|
|
214
|
+
if <size_t><void *>O in <set>tailsets[j]:
|
|
215
|
+
next_item_found = False
|
|
216
|
+
break
|
|
217
|
+
if next_item_found:
|
|
218
|
+
out.append(O)
|
|
219
|
+
# Clear O from other heads, removing the line altogether
|
|
220
|
+
# if the tail is already empty.
|
|
221
|
+
# j goes down so that ``del heads[j]`` does not screw up the numbering
|
|
222
|
+
for j from nbheads > j >= 0:
|
|
223
|
+
if heads[j] is O:
|
|
224
|
+
tail_list = tails[j]
|
|
225
|
+
if tail_list:
|
|
226
|
+
X = tail_list.pop()
|
|
227
|
+
heads[j] = X
|
|
228
|
+
<set>tailsets[j].remove(<size_t><void *>X)
|
|
229
|
+
else:
|
|
230
|
+
del heads[j]
|
|
231
|
+
del tails[j]
|
|
232
|
+
del tailsets[j]
|
|
233
|
+
nbheads -= 1
|
|
234
|
+
break
|
|
235
|
+
if not next_item_found:
|
|
236
|
+
# No head is available
|
|
237
|
+
raise ValueError("Cannot merge the items {}.".format(', '.join([repr(head) for head in heads])))
|
|
238
|
+
return out
|
sage/misc/compat.py
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
"""Cross-platform compatibility routines and wrappers."""
|
|
3
|
+
|
|
4
|
+
# *****************************************************************************
|
|
5
|
+
# Copyright (C) 2017 William Stein <wstein@gmail.com>
|
|
6
|
+
#
|
|
7
|
+
# This program is free software: you can redistribute it and/or modify
|
|
8
|
+
# it under the terms of the GNU General Public License as published by
|
|
9
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
10
|
+
# (at your option) any later version.
|
|
11
|
+
# https://www.gnu.org/licenses/
|
|
12
|
+
# *****************************************************************************
|
|
13
|
+
|
|
14
|
+
import os
|
|
15
|
+
import sys
|
|
16
|
+
|
|
17
|
+
from sage.env import SAGE_LOCAL
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
#################################################################
|
|
21
|
+
# Replacements (as needed) for Python stdlib functions to provide
|
|
22
|
+
# better platform compatibility
|
|
23
|
+
#################################################################
|
|
24
|
+
if sys.platform == 'darwin':
|
|
25
|
+
# On OSX non-standard library paths are not automatically found by the
|
|
26
|
+
# find_library implementation without setting DYLD_LIBRARY_PATH; see
|
|
27
|
+
# https://github.com/sagemath/sage/issues/21399#comment:25
|
|
28
|
+
from ctypes.util import find_library as _orig_find_library
|
|
29
|
+
|
|
30
|
+
def _find_library(name):
|
|
31
|
+
libdirs = []
|
|
32
|
+
if SAGE_LOCAL:
|
|
33
|
+
libdirs.append(os.path.join(SAGE_LOCAL, 'lib'))
|
|
34
|
+
orig_dyld_library_path = os.environ.get('DYLD_LIBRARY_PATH')
|
|
35
|
+
try:
|
|
36
|
+
if libdirs:
|
|
37
|
+
colon_sep_path = ':'.join(libdirs)
|
|
38
|
+
if orig_dyld_library_path:
|
|
39
|
+
colon_sep_path += ":" + orig_dyld_library_path
|
|
40
|
+
os.environ['DYLD_LIBRARY_PATH'] = colon_sep_path
|
|
41
|
+
|
|
42
|
+
return _orig_find_library(name)
|
|
43
|
+
finally:
|
|
44
|
+
if libdirs:
|
|
45
|
+
# Set os.environ back to what it was
|
|
46
|
+
if orig_dyld_library_path is not None:
|
|
47
|
+
os.environ['DYLD_LIBRARY_PATH'] = orig_dyld_library_path
|
|
48
|
+
else:
|
|
49
|
+
os.environ.pop('DYLD_LIBRARY_PATH', None)
|
|
50
|
+
else:
|
|
51
|
+
# On other Unix-like platforms, at least where gcc is available,
|
|
52
|
+
# ctypes.util.find_library works, because it takes into account where gcc
|
|
53
|
+
# finds the library as if were being linked with
|
|
54
|
+
from ctypes.util import find_library as _find_library
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def find_library(name):
|
|
58
|
+
"""
|
|
59
|
+
Return the shared library filename for a given library.
|
|
60
|
+
|
|
61
|
+
The library name is given without any prefixes or suffixes--(e.g.
|
|
62
|
+
just "Singular", not "libSingular", as shared library naming is
|
|
63
|
+
platform-specific.
|
|
64
|
+
|
|
65
|
+
This does ''not'' currently return the absolute path of the file on most
|
|
66
|
+
platforms; see https://bugs.python.org/issue21042
|
|
67
|
+
|
|
68
|
+
EXAMPLES::
|
|
69
|
+
|
|
70
|
+
sage: from sage.misc.compat import find_library
|
|
71
|
+
sage: find_library('giac') # needs sage.libs.giac
|
|
72
|
+
'...giac...'
|
|
73
|
+
"""
|
|
74
|
+
|
|
75
|
+
result = _find_library(name)
|
|
76
|
+
if result:
|
|
77
|
+
return result
|
|
78
|
+
|
|
79
|
+
# if no result found, check DYLD_LIBRARY_PATH
|
|
80
|
+
LDPATH_STR = os.environ.get('DYLD_LIBRARY_PATH')
|
|
81
|
+
lib_dirs = (LDPATH_STR.split(':') if LDPATH_STR else []) + [os.path.join(SAGE_LOCAL, 'lib')]
|
|
82
|
+
for libdir in lib_dirs:
|
|
83
|
+
for libext in ['so', 'a']:
|
|
84
|
+
implib = os.path.join(libdir,
|
|
85
|
+
'lib{0}.{1}'.format(name, libext))
|
|
86
|
+
if os.path.exists(implib):
|
|
87
|
+
return implib
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
r"""
|
|
3
|
+
Elements with labels.
|
|
4
|
+
|
|
5
|
+
This module implements a simple wrapper class for pairs consisting of
|
|
6
|
+
an "element" and a "label".
|
|
7
|
+
For representation purposes (``repr``, ``str``, ``latex``), this pair
|
|
8
|
+
behaves like its label, while the element is "silent".
|
|
9
|
+
However, these pairs compare like usual pairs (i.e., both element and
|
|
10
|
+
label have to be equal for two such pairs to be equal).
|
|
11
|
+
This is used for visual representations of graphs and posets
|
|
12
|
+
with vertex labels.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from sage.misc.latex import latex
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class ElementWithLabel:
|
|
19
|
+
"""
|
|
20
|
+
Auxiliary class for showing/viewing :class:`Poset`s with
|
|
21
|
+
non-injective labelings.
|
|
22
|
+
For hashing and equality testing the resulting object behaves
|
|
23
|
+
like a tuple ``(element, label)``.
|
|
24
|
+
For any presentation purposes it appears just as ``label`` would.
|
|
25
|
+
|
|
26
|
+
EXAMPLES::
|
|
27
|
+
|
|
28
|
+
sage: # needs sage.combinat sage.graphs
|
|
29
|
+
sage: P = Poset({1: [2,3]})
|
|
30
|
+
sage: labs = {i: P.rank(i) for i in range(1, 4)}
|
|
31
|
+
sage: print(labs)
|
|
32
|
+
{1: 0, 2: 1, 3: 1}
|
|
33
|
+
sage: print(P.plot(element_labels=labs)) # needs sage.plot
|
|
34
|
+
Graphics object consisting of 6 graphics primitives
|
|
35
|
+
|
|
36
|
+
sage: # needs sage.combinat sage.graphs sage.modules
|
|
37
|
+
sage: from sage.misc.element_with_label import ElementWithLabel
|
|
38
|
+
sage: W = WeylGroup("A1")
|
|
39
|
+
sage: P = W.bruhat_poset(facade=True)
|
|
40
|
+
sage: D = W.domain()
|
|
41
|
+
sage: v = D.rho() - D.fundamental_weight(1)
|
|
42
|
+
sage: nP = P.relabel(lambda w: ElementWithLabel(w, w.action(v)))
|
|
43
|
+
sage: list(nP)
|
|
44
|
+
[(0, 0), (0, 0)]
|
|
45
|
+
"""
|
|
46
|
+
def __init__(self, element, label):
|
|
47
|
+
"""
|
|
48
|
+
Construct an object that wraps ``element`` but presents itself
|
|
49
|
+
as ``label``.
|
|
50
|
+
|
|
51
|
+
TESTS::
|
|
52
|
+
|
|
53
|
+
sage: from sage.misc.element_with_label import ElementWithLabel
|
|
54
|
+
sage: e = ElementWithLabel(1, 'a')
|
|
55
|
+
sage: e
|
|
56
|
+
'a'
|
|
57
|
+
sage: e.element
|
|
58
|
+
1
|
|
59
|
+
"""
|
|
60
|
+
self.element = element
|
|
61
|
+
self.label = label
|
|
62
|
+
|
|
63
|
+
def _latex_(self):
|
|
64
|
+
"""
|
|
65
|
+
Return the latex representation of ``self``,
|
|
66
|
+
which is just the latex representation of the label.
|
|
67
|
+
|
|
68
|
+
TESTS::
|
|
69
|
+
|
|
70
|
+
sage: var('a_1') # needs sage.symbolic
|
|
71
|
+
a_1
|
|
72
|
+
sage: from sage.misc.element_with_label import ElementWithLabel
|
|
73
|
+
sage: e = ElementWithLabel(1, a_1) # needs sage.symbolic
|
|
74
|
+
sage: latex(e) # needs sage.symbolic
|
|
75
|
+
a_{1}
|
|
76
|
+
"""
|
|
77
|
+
return latex(self.label)
|
|
78
|
+
|
|
79
|
+
def __str__(self):
|
|
80
|
+
"""
|
|
81
|
+
Return the string representation of ``self``, which is just
|
|
82
|
+
the string representation of the label.
|
|
83
|
+
|
|
84
|
+
TESTS::
|
|
85
|
+
|
|
86
|
+
sage: var('a_1') # needs sage.symbolic
|
|
87
|
+
a_1
|
|
88
|
+
sage: from sage.misc.element_with_label import ElementWithLabel
|
|
89
|
+
sage: e = ElementWithLabel(1, a_1) # needs sage.symbolic
|
|
90
|
+
sage: str(e) # needs sage.symbolic
|
|
91
|
+
'a_1'
|
|
92
|
+
"""
|
|
93
|
+
return str(self.label)
|
|
94
|
+
|
|
95
|
+
def __repr__(self):
|
|
96
|
+
"""
|
|
97
|
+
Return the representation of ``self``, which is just
|
|
98
|
+
the representation of the label.
|
|
99
|
+
|
|
100
|
+
TESTS::
|
|
101
|
+
|
|
102
|
+
sage: var('a_1') # needs sage.symbolic
|
|
103
|
+
a_1
|
|
104
|
+
sage: from sage.misc.element_with_label import ElementWithLabel
|
|
105
|
+
sage: e = ElementWithLabel(1, a_1) # needs sage.symbolic
|
|
106
|
+
sage: repr(e) # needs sage.symbolic
|
|
107
|
+
'a_1'
|
|
108
|
+
"""
|
|
109
|
+
return repr(self.label)
|
|
110
|
+
|
|
111
|
+
def __hash__(self):
|
|
112
|
+
"""
|
|
113
|
+
Return the hash of the labeled element ``self``,
|
|
114
|
+
which is just the hash of ``self.element``.
|
|
115
|
+
|
|
116
|
+
TESTS::
|
|
117
|
+
|
|
118
|
+
sage: from sage.misc.element_with_label import ElementWithLabel
|
|
119
|
+
sage: a = ElementWithLabel(1, 'a')
|
|
120
|
+
sage: b = ElementWithLabel(1, 'b')
|
|
121
|
+
sage: d = {}
|
|
122
|
+
sage: d[a] = 'element 1'
|
|
123
|
+
sage: d[b] = 'element 2'
|
|
124
|
+
sage: print(d)
|
|
125
|
+
{'a': 'element 1', 'b': 'element 2'}
|
|
126
|
+
sage: a = ElementWithLabel("a", [2,3])
|
|
127
|
+
sage: hash(a) == hash(a.element)
|
|
128
|
+
True
|
|
129
|
+
"""
|
|
130
|
+
return hash(self.element)
|
|
131
|
+
|
|
132
|
+
def __eq__(self, other):
|
|
133
|
+
"""
|
|
134
|
+
Two labeled elements are equal if and only if both of their
|
|
135
|
+
constituents are equal.
|
|
136
|
+
|
|
137
|
+
TESTS::
|
|
138
|
+
|
|
139
|
+
sage: from sage.misc.element_with_label import ElementWithLabel
|
|
140
|
+
sage: a = ElementWithLabel(1, 'a')
|
|
141
|
+
sage: b = ElementWithLabel(1, 'b')
|
|
142
|
+
sage: x = ElementWithLabel(1, 'a')
|
|
143
|
+
sage: a == b
|
|
144
|
+
False
|
|
145
|
+
sage: a == x
|
|
146
|
+
True
|
|
147
|
+
sage: 1 == a
|
|
148
|
+
False
|
|
149
|
+
sage: b == 1
|
|
150
|
+
False
|
|
151
|
+
"""
|
|
152
|
+
if not (isinstance(self, ElementWithLabel) and
|
|
153
|
+
isinstance(other, ElementWithLabel)):
|
|
154
|
+
return False
|
|
155
|
+
return self.element == other.element and self.label == other.label
|
|
156
|
+
|
|
157
|
+
def __ne__(self, other):
|
|
158
|
+
"""
|
|
159
|
+
Two labeled elements are not equal if and only if first or second
|
|
160
|
+
constituents are not equal.
|
|
161
|
+
|
|
162
|
+
TESTS::
|
|
163
|
+
|
|
164
|
+
sage: from sage.misc.element_with_label import ElementWithLabel
|
|
165
|
+
sage: a = ElementWithLabel(1, 'a')
|
|
166
|
+
sage: b = ElementWithLabel(1, 'b')
|
|
167
|
+
sage: x = ElementWithLabel(1, 'a')
|
|
168
|
+
sage: a != b
|
|
169
|
+
True
|
|
170
|
+
sage: a != x
|
|
171
|
+
False
|
|
172
|
+
"""
|
|
173
|
+
return not (self == other)
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
r"""
|
|
3
|
+
Support for persistent functions in .sage files
|
|
4
|
+
|
|
5
|
+
Persistent functions are functions whose values are stored on disk
|
|
6
|
+
so they do not have to be recomputed.
|
|
7
|
+
|
|
8
|
+
The inputs to the function must be hashable (so lists are not
|
|
9
|
+
allowed). Though a hash is used, in the incredibly unlikely event
|
|
10
|
+
that a hash collision occurs, your function will not return an
|
|
11
|
+
incorrect result because of this (though the cache might not be
|
|
12
|
+
used either).
|
|
13
|
+
|
|
14
|
+
This is meant to be used from ``.sage`` files, not from
|
|
15
|
+
library ``.py`` files.
|
|
16
|
+
|
|
17
|
+
To use this disk caching mechanism, just put
|
|
18
|
+
``@func_persist`` right before your function
|
|
19
|
+
definition. For example,
|
|
20
|
+
|
|
21
|
+
::
|
|
22
|
+
|
|
23
|
+
@func_persist
|
|
24
|
+
def bern(n):
|
|
25
|
+
"Return the n-th Bernoulli number, caching the result to disk."
|
|
26
|
+
return bernoulli(n)
|
|
27
|
+
|
|
28
|
+
You can then use the function ``bern`` as usual, except
|
|
29
|
+
it will almost instantly return values that have already been
|
|
30
|
+
computed, even if you quit and restart.
|
|
31
|
+
|
|
32
|
+
The disk cache files are stored by default in the subdirectory
|
|
33
|
+
``func_persist`` of the current working directory,
|
|
34
|
+
with one file for each evaluation of the function.
|
|
35
|
+
"""
|
|
36
|
+
########################################################################
|
|
37
|
+
# Copyright (C) 2006 William Stein <wstein@gmail.com>
|
|
38
|
+
#
|
|
39
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
40
|
+
#
|
|
41
|
+
# https://www.gnu.org/licenses/
|
|
42
|
+
########################################################################
|
|
43
|
+
|
|
44
|
+
import inspect
|
|
45
|
+
import os
|
|
46
|
+
|
|
47
|
+
from sage.misc import persist
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class func_persist:
|
|
51
|
+
r"""
|
|
52
|
+
Put ``@func_persist`` right before your function
|
|
53
|
+
definition to cache values it computes to disk.
|
|
54
|
+
"""
|
|
55
|
+
def __init__(self, f, dir='func_persist'):
|
|
56
|
+
self.__func = f
|
|
57
|
+
self.__dir = dir
|
|
58
|
+
os.makedirs(dir, exist_ok=True)
|
|
59
|
+
self.__doc__ = '%s%s%s' % (
|
|
60
|
+
f.__name__,
|
|
61
|
+
inspect.signature(f),
|
|
62
|
+
f.__doc__)
|
|
63
|
+
|
|
64
|
+
def __call__(self, *args, **kwds):
|
|
65
|
+
key = (tuple(args), tuple(kwds.items()))
|
|
66
|
+
h = hash(key)
|
|
67
|
+
name = '%s/%s_%s.sobj' % (self.__dir, self.__func.__name__, h)
|
|
68
|
+
|
|
69
|
+
if os.path.exists(name):
|
|
70
|
+
key2, val = persist.load(name)
|
|
71
|
+
if key == key2:
|
|
72
|
+
# We save and test equality of keys to avoid
|
|
73
|
+
# the (extremely remote) possibility of a hash
|
|
74
|
+
# collision. Correctness is crucial in mathematics.
|
|
75
|
+
return val
|
|
76
|
+
|
|
77
|
+
val = self.__func(*args, **kwds)
|
|
78
|
+
persist.save((key, val), name)
|
|
79
|
+
return val
|
|
Binary file
|
sage/misc/pickle_old.pyx
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
|
|
3
|
+
from sage.misc.superseded import deprecation_cython as deprecation
|
|
4
|
+
import sage.rings.fraction_field_element
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def make_element_old(_class, _dict, parent):
|
|
8
|
+
"""
|
|
9
|
+
Used for unpickling old pickles of Element objects (and subclasses).
|
|
10
|
+
|
|
11
|
+
This function is deprecated and is kept only to support old pickles.
|
|
12
|
+
"""
|
|
13
|
+
deprecation(4698, "Your data is stored in an old format. Please use the save() function to store your data in a more recent format.")
|
|
14
|
+
if _class is sage.rings.fraction_field_element.FractionFieldElement:
|
|
15
|
+
return sage.rings.fraction_field_element.make_element_old(parent, _dict)
|
|
16
|
+
new_object = _class.__new__(_class)
|
|
17
|
+
new_object._set_parent(parent)
|
|
18
|
+
new_object.__dict__ = _dict
|
|
19
|
+
return new_object
|