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,370 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
"""
|
|
3
|
+
Variable Substitution, Multiplication, Division, Scaling
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2007 William Stein and Jonathan Hanke
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
#
|
|
10
|
+
# This code is distributed in the hope that it will be useful,
|
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
13
|
+
# General Public License for more details.
|
|
14
|
+
#
|
|
15
|
+
# The full text of the GPL is available at:
|
|
16
|
+
#
|
|
17
|
+
# https://www.gnu.org/licenses/
|
|
18
|
+
# ****************************************************************************
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def swap_variables(self, r, s, in_place=False):
|
|
22
|
+
r"""
|
|
23
|
+
Switch the variables `x_r` and `x_s` in the quadratic form
|
|
24
|
+
(replacing the original form if the ``in_place`` flag is True).
|
|
25
|
+
|
|
26
|
+
INPUT:
|
|
27
|
+
|
|
28
|
+
- ``r``, ``s`` -- integers `\geq 0`
|
|
29
|
+
|
|
30
|
+
OUTPUT:
|
|
31
|
+
|
|
32
|
+
a :class:`QuadraticForm` (by default, otherwise none)
|
|
33
|
+
|
|
34
|
+
EXAMPLES::
|
|
35
|
+
|
|
36
|
+
sage: Q = QuadraticForm(ZZ, 4, range(1,11))
|
|
37
|
+
sage: Q
|
|
38
|
+
Quadratic form in 4 variables over Integer Ring with coefficients:
|
|
39
|
+
[ 1 2 3 4 ]
|
|
40
|
+
[ * 5 6 7 ]
|
|
41
|
+
[ * * 8 9 ]
|
|
42
|
+
[ * * * 10 ]
|
|
43
|
+
|
|
44
|
+
sage: Q.swap_variables(0,2)
|
|
45
|
+
Quadratic form in 4 variables over Integer Ring with coefficients:
|
|
46
|
+
[ 8 6 3 9 ]
|
|
47
|
+
[ * 5 2 7 ]
|
|
48
|
+
[ * * 1 4 ]
|
|
49
|
+
[ * * * 10 ]
|
|
50
|
+
|
|
51
|
+
sage: Q.swap_variables(0,2).swap_variables(0,2)
|
|
52
|
+
Quadratic form in 4 variables over Integer Ring with coefficients:
|
|
53
|
+
[ 1 2 3 4 ]
|
|
54
|
+
[ * 5 6 7 ]
|
|
55
|
+
[ * * 8 9 ]
|
|
56
|
+
[ * * * 10 ]
|
|
57
|
+
"""
|
|
58
|
+
if not in_place:
|
|
59
|
+
Q = self.parent()(self.base_ring(), self.dim(), self.coefficients())
|
|
60
|
+
Q.swap_variables(r, s, in_place=True)
|
|
61
|
+
return Q
|
|
62
|
+
|
|
63
|
+
# Switch diagonal elements
|
|
64
|
+
tmp = self[r, r]
|
|
65
|
+
self[r, r] = self[s, s]
|
|
66
|
+
self[s, s] = tmp
|
|
67
|
+
|
|
68
|
+
# Switch off-diagonal elements
|
|
69
|
+
for i in range(self.dim()):
|
|
70
|
+
if (i != r) and (i != s):
|
|
71
|
+
tmp = self[r, i]
|
|
72
|
+
self[r, i] = self[s, i]
|
|
73
|
+
self[s, i] = tmp
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def multiply_variable(self, c, i, in_place=False):
|
|
77
|
+
r"""
|
|
78
|
+
Replace the variables `x_i` by `c\cdot x_i` in the quadratic form
|
|
79
|
+
(replacing the original form if the ``in_place`` flag is True).
|
|
80
|
+
|
|
81
|
+
Here `c` must be an element of the base ring defining the
|
|
82
|
+
quadratic form.
|
|
83
|
+
|
|
84
|
+
INPUT:
|
|
85
|
+
|
|
86
|
+
- ``c`` -- an element of ``self.base_ring()``
|
|
87
|
+
|
|
88
|
+
- ``i`` -- integer `\geq 0`
|
|
89
|
+
|
|
90
|
+
OUTPUT: a :class:`QuadraticForm` (by default, otherwise none)
|
|
91
|
+
|
|
92
|
+
EXAMPLES::
|
|
93
|
+
|
|
94
|
+
sage: Q = DiagonalQuadraticForm(ZZ, [1,9,5,7])
|
|
95
|
+
sage: Q.multiply_variable(5, 0)
|
|
96
|
+
Quadratic form in 4 variables over Integer Ring with coefficients:
|
|
97
|
+
[ 25 0 0 0 ]
|
|
98
|
+
[ * 9 0 0 ]
|
|
99
|
+
[ * * 5 0 ]
|
|
100
|
+
[ * * * 7 ]
|
|
101
|
+
"""
|
|
102
|
+
if not in_place:
|
|
103
|
+
Q = self.parent()(self.base_ring(), self.dim(), self.coefficients())
|
|
104
|
+
Q.multiply_variable(c, i, in_place=True)
|
|
105
|
+
return Q
|
|
106
|
+
|
|
107
|
+
# Stretch the diagonal element
|
|
108
|
+
tmp = c * c * self[i, i]
|
|
109
|
+
self[i, i] = tmp
|
|
110
|
+
|
|
111
|
+
# Switch off-diagonal elements
|
|
112
|
+
for k in range(self.dim()):
|
|
113
|
+
if (k != i):
|
|
114
|
+
tmp = c * self[k, i]
|
|
115
|
+
self[k, i] = tmp
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def divide_variable(self, c, i, in_place=False):
|
|
119
|
+
r"""
|
|
120
|
+
Replace the variables `x_i` by `(x_i)/c` in the quadratic form
|
|
121
|
+
(replacing the original form if the ``in_place`` flag is True).
|
|
122
|
+
|
|
123
|
+
Here `c` must be an element of the base ring defining the
|
|
124
|
+
quadratic form, and the division must be defined in the base
|
|
125
|
+
ring.
|
|
126
|
+
|
|
127
|
+
INPUT:
|
|
128
|
+
|
|
129
|
+
- ``c`` -- an element of ``self.base_ring()``
|
|
130
|
+
|
|
131
|
+
- ``i`` -- integer `\geq 0`
|
|
132
|
+
|
|
133
|
+
OUTPUT:
|
|
134
|
+
|
|
135
|
+
a :class:`QuadraticForm` (by default, otherwise none)
|
|
136
|
+
|
|
137
|
+
EXAMPLES::
|
|
138
|
+
|
|
139
|
+
sage: Q = DiagonalQuadraticForm(ZZ, [1,9,5,7])
|
|
140
|
+
sage: Q.divide_variable(3, 1)
|
|
141
|
+
Quadratic form in 4 variables over Integer Ring with coefficients:
|
|
142
|
+
[ 1 0 0 0 ]
|
|
143
|
+
[ * 1 0 0 ]
|
|
144
|
+
[ * * 5 0 ]
|
|
145
|
+
[ * * * 7 ]
|
|
146
|
+
"""
|
|
147
|
+
if not in_place:
|
|
148
|
+
Q = self.parent()(self.base_ring(), self.dim(), self.coefficients())
|
|
149
|
+
Q.divide_variable(c, i, in_place=True)
|
|
150
|
+
return Q
|
|
151
|
+
|
|
152
|
+
# Stretch the diagonal element
|
|
153
|
+
tmp = self[i, i] / (c * c)
|
|
154
|
+
self[i, i] = tmp
|
|
155
|
+
|
|
156
|
+
# Switch off-diagonal elements
|
|
157
|
+
for k in range(self.dim()):
|
|
158
|
+
if (k != i):
|
|
159
|
+
tmp = self[k, i] / c
|
|
160
|
+
self[k, i] = tmp
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def scale_by_factor(self, c, change_value_ring_flag=False):
|
|
164
|
+
"""
|
|
165
|
+
Scale the values of the quadratic form by the number `c`, if
|
|
166
|
+
this is possible while still being defined over its base ring.
|
|
167
|
+
|
|
168
|
+
If the flag is set to true, then this will alter the value ring
|
|
169
|
+
to be the field of fractions of the original ring (if necessary).
|
|
170
|
+
|
|
171
|
+
INPUT:
|
|
172
|
+
|
|
173
|
+
- ``c`` -- a scalar in the fraction field of the value ring of the form
|
|
174
|
+
|
|
175
|
+
OUTPUT: a quadratic form of the same dimension
|
|
176
|
+
|
|
177
|
+
EXAMPLES::
|
|
178
|
+
|
|
179
|
+
sage: Q = DiagonalQuadraticForm(ZZ, [3,9,18,27])
|
|
180
|
+
sage: Q.scale_by_factor(3)
|
|
181
|
+
Quadratic form in 4 variables over Integer Ring with coefficients:
|
|
182
|
+
[ 9 0 0 0 ]
|
|
183
|
+
[ * 27 0 0 ]
|
|
184
|
+
[ * * 54 0 ]
|
|
185
|
+
[ * * * 81 ]
|
|
186
|
+
|
|
187
|
+
sage: Q.scale_by_factor(1/3)
|
|
188
|
+
Quadratic form in 4 variables over Integer Ring with coefficients:
|
|
189
|
+
[ 1 0 0 0 ]
|
|
190
|
+
[ * 3 0 0 ]
|
|
191
|
+
[ * * 6 0 ]
|
|
192
|
+
[ * * * 9 ]
|
|
193
|
+
"""
|
|
194
|
+
# Try to scale the coefficients while staying in the ring of values.
|
|
195
|
+
new_coeff_list = [x * c for x in self.coefficients()]
|
|
196
|
+
|
|
197
|
+
# Check if we can preserve the value ring and return result. -- USE THE BASE_RING FOR NOW...
|
|
198
|
+
R = self.base_ring()
|
|
199
|
+
try:
|
|
200
|
+
list2 = [R(x) for x in new_coeff_list]
|
|
201
|
+
Q = self.parent()(R, self.dim(), list2)
|
|
202
|
+
return Q
|
|
203
|
+
except ValueError:
|
|
204
|
+
if not change_value_ring_flag:
|
|
205
|
+
raise TypeError("we could not rescale the lattice in this way and preserve its defining ring")
|
|
206
|
+
else:
|
|
207
|
+
raise RuntimeError("this code is not tested by current doctests")
|
|
208
|
+
F = R.fraction_field()
|
|
209
|
+
list2 = [F(x) for x in new_coeff_list]
|
|
210
|
+
Q = self.parent()(self.dim(), F, list2, R) # DEFINE THIS! IT WANTS TO SET THE EQUIVALENCE RING TO R, BUT WITH COEFFS IN F.
|
|
211
|
+
# Q.set_equivalence_ring(R)
|
|
212
|
+
return Q
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
def extract_variables(QF, var_indices):
|
|
216
|
+
r"""
|
|
217
|
+
Extract the variables (in order) whose indices are listed in
|
|
218
|
+
``var_indices``, to give a new quadratic form.
|
|
219
|
+
|
|
220
|
+
INPUT:
|
|
221
|
+
|
|
222
|
+
- ``var_indices`` -- list of integers `\geq 0`
|
|
223
|
+
|
|
224
|
+
OUTPUT: a :class:`QuadraticForm`
|
|
225
|
+
|
|
226
|
+
EXAMPLES::
|
|
227
|
+
|
|
228
|
+
sage: Q = QuadraticForm(ZZ, 4, range(10)); Q
|
|
229
|
+
Quadratic form in 4 variables over Integer Ring with coefficients:
|
|
230
|
+
[ 0 1 2 3 ]
|
|
231
|
+
[ * 4 5 6 ]
|
|
232
|
+
[ * * 7 8 ]
|
|
233
|
+
[ * * * 9 ]
|
|
234
|
+
sage: Q.extract_variables([1,3])
|
|
235
|
+
Quadratic form in 2 variables over Integer Ring with coefficients:
|
|
236
|
+
[ 4 6 ]
|
|
237
|
+
[ * 9 ]
|
|
238
|
+
"""
|
|
239
|
+
m = len(var_indices)
|
|
240
|
+
return QF.parent()(QF.base_ring(), m,
|
|
241
|
+
[QF[var_indices[i], var_indices[j]]
|
|
242
|
+
for i in range(m)
|
|
243
|
+
for j in range(i, m)])
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
def elementary_substitution(self, c, i, j, in_place=False): # CHECK THIS!!!
|
|
247
|
+
r"""
|
|
248
|
+
Perform the substitution `x_i \longmapsto x_i + c\cdot x_j` (replacing the
|
|
249
|
+
original form if the ``in_place`` flag is True).
|
|
250
|
+
|
|
251
|
+
INPUT:
|
|
252
|
+
|
|
253
|
+
- ``c`` -- an element of ``self.base_ring()``
|
|
254
|
+
|
|
255
|
+
- ``i``, ``j`` -- integers `\geq 0`
|
|
256
|
+
|
|
257
|
+
OUTPUT:
|
|
258
|
+
|
|
259
|
+
a :class:`QuadraticForm` (by default, otherwise none)
|
|
260
|
+
|
|
261
|
+
EXAMPLES::
|
|
262
|
+
|
|
263
|
+
sage: Q = QuadraticForm(ZZ, 4, range(1,11)); Q
|
|
264
|
+
Quadratic form in 4 variables over Integer Ring with coefficients:
|
|
265
|
+
[ 1 2 3 4 ]
|
|
266
|
+
[ * 5 6 7 ]
|
|
267
|
+
[ * * 8 9 ]
|
|
268
|
+
[ * * * 10 ]
|
|
269
|
+
|
|
270
|
+
sage: Q.elementary_substitution(c=1, i=0, j=3)
|
|
271
|
+
Quadratic form in 4 variables over Integer Ring with coefficients:
|
|
272
|
+
[ 1 2 3 6 ]
|
|
273
|
+
[ * 5 6 9 ]
|
|
274
|
+
[ * * 8 12 ]
|
|
275
|
+
[ * * * 15 ]
|
|
276
|
+
|
|
277
|
+
::
|
|
278
|
+
|
|
279
|
+
sage: R = QuadraticForm(ZZ, 4, range(1,11)); R
|
|
280
|
+
Quadratic form in 4 variables over Integer Ring with coefficients:
|
|
281
|
+
[ 1 2 3 4 ]
|
|
282
|
+
[ * 5 6 7 ]
|
|
283
|
+
[ * * 8 9 ]
|
|
284
|
+
[ * * * 10 ]
|
|
285
|
+
|
|
286
|
+
::
|
|
287
|
+
|
|
288
|
+
sage: M = Matrix(ZZ, 4, 4, [1,0,0,1, 0,1,0,0, 0,0,1,0, 0,0,0,1]); M
|
|
289
|
+
[1 0 0 1]
|
|
290
|
+
[0 1 0 0]
|
|
291
|
+
[0 0 1 0]
|
|
292
|
+
[0 0 0 1]
|
|
293
|
+
sage: R(M)
|
|
294
|
+
Quadratic form in 4 variables over Integer Ring with coefficients:
|
|
295
|
+
[ 1 2 3 6 ]
|
|
296
|
+
[ * 5 6 9 ]
|
|
297
|
+
[ * * 8 12 ]
|
|
298
|
+
[ * * * 15 ]
|
|
299
|
+
"""
|
|
300
|
+
if not in_place:
|
|
301
|
+
Q = self.parent()(self.base_ring(), self.dim(), self.coefficients())
|
|
302
|
+
Q.elementary_substitution(c, i, j, True)
|
|
303
|
+
return Q
|
|
304
|
+
|
|
305
|
+
# Adjust the a_{k,j} coefficients
|
|
306
|
+
ij_old = self[i, j] # Store this since it's overwritten, but used in the a_{j,j} computation!
|
|
307
|
+
for k in range(self.dim()):
|
|
308
|
+
if (k != i) and (k != j):
|
|
309
|
+
ans = self[j, k] + c * self[i, k]
|
|
310
|
+
self[j, k] = ans
|
|
311
|
+
elif (k == j):
|
|
312
|
+
ans = self[j, k] + c * ij_old + c * c * self[i, i]
|
|
313
|
+
self[j, k] = ans
|
|
314
|
+
else:
|
|
315
|
+
ans = self[j, k] + 2 * c * self[i, k]
|
|
316
|
+
self[j, k] = ans
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
def add_symmetric(self, c, i, j, in_place=False):
|
|
320
|
+
r"""
|
|
321
|
+
Perform the substitution `x_j \longmapsto x_j + c\cdot x_i`, which has the
|
|
322
|
+
effect (on associated matrices) of symmetrically adding
|
|
323
|
+
`c` times the `j`-th row/column to the `i`-th row/column.
|
|
324
|
+
|
|
325
|
+
NOTE: This is meant for compatibility with previous code,
|
|
326
|
+
which implemented a matrix model for this class. It is used
|
|
327
|
+
in the method :meth:`local_normal_form`.
|
|
328
|
+
|
|
329
|
+
INPUT:
|
|
330
|
+
|
|
331
|
+
- ``c`` -- an element of ``self.base_ring()``
|
|
332
|
+
|
|
333
|
+
- ``i``, ``j`` -- integers `\geq 0`
|
|
334
|
+
|
|
335
|
+
OUTPUT:
|
|
336
|
+
|
|
337
|
+
a :class:`QuadraticForm` (by default, otherwise none)
|
|
338
|
+
|
|
339
|
+
EXAMPLES::
|
|
340
|
+
|
|
341
|
+
sage: Q = QuadraticForm(ZZ, 3, range(1,7)); Q
|
|
342
|
+
Quadratic form in 3 variables over Integer Ring with coefficients:
|
|
343
|
+
[ 1 2 3 ]
|
|
344
|
+
[ * 4 5 ]
|
|
345
|
+
[ * * 6 ]
|
|
346
|
+
sage: Q.add_symmetric(-1, 1, 0)
|
|
347
|
+
Quadratic form in 3 variables over Integer Ring with coefficients:
|
|
348
|
+
[ 1 0 3 ]
|
|
349
|
+
[ * 3 2 ]
|
|
350
|
+
[ * * 6 ]
|
|
351
|
+
sage: Q.add_symmetric(-3/2, 2, 0) # ERROR: -3/2 isn't in the base ring ZZ
|
|
352
|
+
Traceback (most recent call last):
|
|
353
|
+
...
|
|
354
|
+
RuntimeError: this coefficient cannot be coerced
|
|
355
|
+
to an element of the base ring for the quadratic form
|
|
356
|
+
|
|
357
|
+
::
|
|
358
|
+
|
|
359
|
+
sage: Q = QuadraticForm(QQ, 3, range(1,7)); Q
|
|
360
|
+
Quadratic form in 3 variables over Rational Field with coefficients:
|
|
361
|
+
[ 1 2 3 ]
|
|
362
|
+
[ * 4 5 ]
|
|
363
|
+
[ * * 6 ]
|
|
364
|
+
sage: Q.add_symmetric(-3/2, 2, 0)
|
|
365
|
+
Quadratic form in 3 variables over Rational Field with coefficients:
|
|
366
|
+
[ 1 2 0 ]
|
|
367
|
+
[ * 4 2 ]
|
|
368
|
+
[ * * 15/4 ]
|
|
369
|
+
"""
|
|
370
|
+
return self.elementary_substitution(c, j, i, in_place)
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
"""
|
|
3
|
+
Random quadratic forms
|
|
4
|
+
|
|
5
|
+
This file contains a set of routines to create a random quadratic form.
|
|
6
|
+
"""
|
|
7
|
+
from sage.categories.rings import Rings
|
|
8
|
+
from sage.quadratic_forms.quadratic_form import QuadraticForm
|
|
9
|
+
from sage.quadratic_forms.ternary_qf import TernaryQF
|
|
10
|
+
from sage.rings.integer_ring import ZZ
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
################################################
|
|
14
|
+
# Routines to create a random quadratic form ##
|
|
15
|
+
################################################
|
|
16
|
+
|
|
17
|
+
def random_quadraticform(R, n, rand_arg_list=None):
|
|
18
|
+
r"""
|
|
19
|
+
Create a random quadratic form in `n` variables defined over the ring `R`.
|
|
20
|
+
|
|
21
|
+
The last (and optional) argument ``rand_arg_list`` is a list of at most 3
|
|
22
|
+
elements which is passed (as at most 3 separate variables) into the method
|
|
23
|
+
``R.random_element()``.
|
|
24
|
+
|
|
25
|
+
INPUT:
|
|
26
|
+
|
|
27
|
+
- ``R`` -- a ring
|
|
28
|
+
- ``n`` -- integer `\ge 0`
|
|
29
|
+
- ``rand_arg_list`` -- list of at most 3 arguments which can be taken by
|
|
30
|
+
``R.random_element()``
|
|
31
|
+
|
|
32
|
+
OUTPUT: a quadratic form over the ring `R`
|
|
33
|
+
|
|
34
|
+
EXAMPLES::
|
|
35
|
+
|
|
36
|
+
sage: random_quadraticform(ZZ, 3, [1,5]) # random
|
|
37
|
+
Quadratic form in 3 variables over Integer Ring with coefficients:
|
|
38
|
+
[ 3 2 3 ]
|
|
39
|
+
[ * 1 4 ]
|
|
40
|
+
[ * * 3 ]
|
|
41
|
+
|
|
42
|
+
sage: random_quadraticform(ZZ, 3, [-5,5]) # random
|
|
43
|
+
Quadratic form in 3 variables over Integer Ring with coefficients:
|
|
44
|
+
[ 3 2 -5 ]
|
|
45
|
+
[ * 2 -2 ]
|
|
46
|
+
[ * * -5 ]
|
|
47
|
+
|
|
48
|
+
sage: random_quadraticform(ZZ, 3, [-50,50]) # random
|
|
49
|
+
Quadratic form in 3 variables over Integer Ring with coefficients:
|
|
50
|
+
[ 1 8 -23 ]
|
|
51
|
+
[ * 0 0 ]
|
|
52
|
+
[ * * 6 ]
|
|
53
|
+
|
|
54
|
+
TESTS::
|
|
55
|
+
|
|
56
|
+
sage: random_quadraticform(ZZ, 3, [1,2,3,4])
|
|
57
|
+
Traceback (most recent call last):
|
|
58
|
+
...
|
|
59
|
+
TypeError: the list of randomness arguments can have at most 3 elements
|
|
60
|
+
"""
|
|
61
|
+
if rand_arg_list is None:
|
|
62
|
+
rand_arg_list = []
|
|
63
|
+
if len(rand_arg_list) > 3:
|
|
64
|
+
raise TypeError("the list of randomness arguments can have "
|
|
65
|
+
"at most 3 elements")
|
|
66
|
+
if R not in Rings():
|
|
67
|
+
raise TypeError("the first argument must be a ring")
|
|
68
|
+
# Create a list of upper-triangular entries for the quadratic form
|
|
69
|
+
n2 = (n * (n + 1)) // 2
|
|
70
|
+
if not rand_arg_list:
|
|
71
|
+
rand_list = [R.random_element() for _ in range(n2)]
|
|
72
|
+
else:
|
|
73
|
+
rand_list = [R.random_element(*rand_arg_list) for _ in range(n2)]
|
|
74
|
+
return QuadraticForm(R, n, rand_list)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def random_quadraticform_with_conditions(R, n, condition_list=[],
|
|
78
|
+
rand_arg_list=None):
|
|
79
|
+
"""
|
|
80
|
+
Create a random quadratic form in `n` variables defined over the ring `R`
|
|
81
|
+
satisfying a list of boolean (i.e. True/False) conditions.
|
|
82
|
+
|
|
83
|
+
The conditions `c` appearing in the list must be boolean functions which
|
|
84
|
+
can be called either as ``Q.c()`` or ``c(Q)``, where ``Q`` is the random
|
|
85
|
+
quadratic form.
|
|
86
|
+
|
|
87
|
+
The last (and optional) argument ``rand_arg_list`` is a list of at most 3
|
|
88
|
+
elements which is passed (as at most 3 separate variables) into the method
|
|
89
|
+
``R.random_element()``.
|
|
90
|
+
|
|
91
|
+
EXAMPLES::
|
|
92
|
+
|
|
93
|
+
sage: check = QuadraticForm.is_positive_definite
|
|
94
|
+
sage: Q = random_quadraticform_with_conditions(ZZ, 3, [check], [-5, 5])
|
|
95
|
+
sage: Q # random
|
|
96
|
+
Quadratic form in 3 variables over Integer Ring with coefficients:
|
|
97
|
+
[ 3 -2 -5 ]
|
|
98
|
+
[ * 2 2 ]
|
|
99
|
+
[ * * 3 ]
|
|
100
|
+
"""
|
|
101
|
+
if rand_arg_list is None:
|
|
102
|
+
rand_arg_list = []
|
|
103
|
+
|
|
104
|
+
Q = random_quadraticform(R, n, rand_arg_list)
|
|
105
|
+
done_flag = True
|
|
106
|
+
|
|
107
|
+
# Check that all conditions are satisfied
|
|
108
|
+
while done_flag:
|
|
109
|
+
done_flag = False
|
|
110
|
+
for c in condition_list:
|
|
111
|
+
|
|
112
|
+
# Check if condition c is satisfied
|
|
113
|
+
try:
|
|
114
|
+
bool_ans = Q.c()
|
|
115
|
+
except Exception:
|
|
116
|
+
bool_ans = c(Q)
|
|
117
|
+
|
|
118
|
+
# Create a new quadratic form if a condition fails
|
|
119
|
+
if not bool_ans:
|
|
120
|
+
Q = random_quadraticform(R, n, rand_arg_list)
|
|
121
|
+
done_flag = True
|
|
122
|
+
break
|
|
123
|
+
|
|
124
|
+
# Return the quadratic form
|
|
125
|
+
return Q
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def random_ternaryqf(rand_arg_list=None):
|
|
129
|
+
"""
|
|
130
|
+
Create a random ternary quadratic form.
|
|
131
|
+
|
|
132
|
+
The last (and optional) argument ``rand_arg_list`` is a list of at most 3
|
|
133
|
+
elements which is passed (as at most 3 separate variables) into the method
|
|
134
|
+
``R.random_element()``.
|
|
135
|
+
|
|
136
|
+
INPUT:
|
|
137
|
+
|
|
138
|
+
- ``rand_arg_list`` -- list of at most 3 arguments which can be taken by
|
|
139
|
+
``R.random_element()``
|
|
140
|
+
|
|
141
|
+
OUTPUT: a ternary quadratic form
|
|
142
|
+
|
|
143
|
+
EXAMPLES::
|
|
144
|
+
|
|
145
|
+
sage: random_ternaryqf() # random
|
|
146
|
+
Ternary quadratic form with integer coefficients:
|
|
147
|
+
[1 1 4]
|
|
148
|
+
[-1 1 -1]
|
|
149
|
+
sage: random_ternaryqf([-1, 2]) # random
|
|
150
|
+
Ternary quadratic form with integer coefficients:
|
|
151
|
+
[1 0 1]
|
|
152
|
+
[-1 -1 -1]
|
|
153
|
+
sage: random_ternaryqf([-10, 10, "uniform"]) # random
|
|
154
|
+
Ternary quadratic form with integer coefficients:
|
|
155
|
+
[7 -8 2]
|
|
156
|
+
[0 3 -6]
|
|
157
|
+
"""
|
|
158
|
+
if rand_arg_list is None:
|
|
159
|
+
rand_arg_list = []
|
|
160
|
+
if not rand_arg_list:
|
|
161
|
+
rand_list = [ZZ.random_element() for _ in range(6)]
|
|
162
|
+
else:
|
|
163
|
+
rand_list = [ZZ.random_element(*rand_arg_list) for _ in range(6)]
|
|
164
|
+
return TernaryQF(rand_list)
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
def random_ternaryqf_with_conditions(condition_list=[], rand_arg_list=None):
|
|
168
|
+
"""
|
|
169
|
+
Create a random ternary quadratic form satisfying a list of boolean
|
|
170
|
+
(i.e. True/False) conditions.
|
|
171
|
+
|
|
172
|
+
The conditions `c` appearing in the list must be boolean functions which
|
|
173
|
+
can be called either as ``Q.c()`` or ``c(Q)``, where ``Q`` is the random
|
|
174
|
+
ternary quadratic form.
|
|
175
|
+
|
|
176
|
+
The last (and optional) argument ``rand_arg_list`` is a list of at most 3
|
|
177
|
+
elements which is passed (as at most 3 separate variables) into the method
|
|
178
|
+
``R.random_element()``.
|
|
179
|
+
|
|
180
|
+
EXAMPLES::
|
|
181
|
+
|
|
182
|
+
sage: check = TernaryQF.is_positive_definite
|
|
183
|
+
sage: Q = random_ternaryqf_with_conditions([check], [-5, 5])
|
|
184
|
+
sage: Q # random
|
|
185
|
+
Ternary quadratic form with integer coefficients:
|
|
186
|
+
[3 4 2]
|
|
187
|
+
[2 -2 -1]
|
|
188
|
+
"""
|
|
189
|
+
if rand_arg_list is None:
|
|
190
|
+
rand_arg_list = []
|
|
191
|
+
Q = random_ternaryqf(rand_arg_list)
|
|
192
|
+
done_flag = True
|
|
193
|
+
|
|
194
|
+
# Check that all conditions are satisfied
|
|
195
|
+
while done_flag:
|
|
196
|
+
done_flag = False
|
|
197
|
+
for c in condition_list:
|
|
198
|
+
# Check if condition c is satisfied
|
|
199
|
+
try:
|
|
200
|
+
bool_ans = Q.c()
|
|
201
|
+
except Exception:
|
|
202
|
+
bool_ans = c(Q)
|
|
203
|
+
|
|
204
|
+
# Create a new quadratic form if a condition fails
|
|
205
|
+
if not bool_ans:
|
|
206
|
+
Q = random_ternaryqf(rand_arg_list)
|
|
207
|
+
done_flag = True
|
|
208
|
+
break
|
|
209
|
+
return Q
|
|
Binary file
|