passagemath-modules 10.6.31__cp314-cp314-macosx_13_0_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.31.dist-info/METADATA +281 -0
- passagemath_modules-10.6.31.dist-info/RECORD +807 -0
- passagemath_modules-10.6.31.dist-info/WHEEL +6 -0
- passagemath_modules-10.6.31.dist-info/top_level.txt +2 -0
- passagemath_modules.dylibs/libgfortran.5.dylib +0 -0
- passagemath_modules.dylibs/libgmp.10.dylib +0 -0
- passagemath_modules.dylibs/libgsl.28.dylib +0 -0
- passagemath_modules.dylibs/libmpc.3.dylib +0 -0
- passagemath_modules.dylibs/libmpfr.6.dylib +0 -0
- passagemath_modules.dylibs/libopenblasp-r0.3.29.dylib +0 -0
- passagemath_modules.dylibs/libquadmath.0.dylib +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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.so +0 -0
- sage/calculus/integration.pyx +698 -0
- sage/calculus/interpolation.cpython-314-darwin.so +0 -0
- sage/calculus/interpolation.pxd +13 -0
- sage/calculus/interpolation.pyx +387 -0
- sage/calculus/interpolators.cpython-314-darwin.so +0 -0
- sage/calculus/interpolators.pyx +326 -0
- sage/calculus/ode.cpython-314-darwin.so +0 -0
- sage/calculus/ode.pxd +5 -0
- sage/calculus/ode.pyx +610 -0
- sage/calculus/riemann.cpython-314-darwin.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-darwin.so +0 -0
- sage/calculus/transforms/dwt.pxd +7 -0
- sage/calculus/transforms/dwt.pyx +160 -0
- sage/calculus/transforms/fft.cpython-314-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.so +0 -0
- sage/libs/mpmath/utils.pxd +4 -0
- sage/libs/mpmath/utils.pyx +319 -0
- sage/matrix/action.cpython-314-darwin.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-darwin.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-darwin.so +0 -0
- sage/matrix/constructor.pyx +750 -0
- sage/matrix/docs.py +430 -0
- sage/matrix/echelon_matrix.cpython-314-darwin.so +0 -0
- sage/matrix/echelon_matrix.pyx +155 -0
- sage/matrix/matrix.pxd +2 -0
- sage/matrix/matrix0.cpython-314-darwin.so +0 -0
- sage/matrix/matrix0.pxd +68 -0
- sage/matrix/matrix0.pyx +6324 -0
- sage/matrix/matrix1.cpython-314-darwin.so +0 -0
- sage/matrix/matrix1.pxd +8 -0
- sage/matrix/matrix1.pyx +2851 -0
- sage/matrix/matrix2.cpython-314-darwin.so +0 -0
- sage/matrix/matrix2.pxd +25 -0
- sage/matrix/matrix2.pyx +20181 -0
- sage/matrix/matrix_cdv.cpython-314-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.so +0 -0
- sage/matrix/matrix_sparse.pxd +5 -0
- sage/matrix/matrix_sparse.pyx +1222 -0
- sage/matrix/matrix_window.cpython-314-darwin.so +0 -0
- sage/matrix/matrix_window.pxd +37 -0
- sage/matrix/matrix_window.pyx +242 -0
- sage/matrix/misc_mpfr.cpython-314-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.so +0 -0
- sage/matroids/extension.pxd +34 -0
- sage/matroids/extension.pyx +519 -0
- sage/matroids/flats_matroid.cpython-314-darwin.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-darwin.so +0 -0
- sage/matroids/graphic_matroid.pxd +39 -0
- sage/matroids/graphic_matroid.pyx +2024 -0
- sage/matroids/lean_matrix.cpython-314-darwin.so +0 -0
- sage/matroids/lean_matrix.pxd +126 -0
- sage/matroids/lean_matrix.pyx +3667 -0
- sage/matroids/linear_matroid.cpython-314-darwin.so +0 -0
- sage/matroids/linear_matroid.pxd +180 -0
- sage/matroids/linear_matroid.pyx +6649 -0
- sage/matroids/matroid.cpython-314-darwin.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-darwin.so +0 -0
- sage/matroids/set_system.pxd +38 -0
- sage/matroids/set_system.pyx +800 -0
- sage/matroids/transversal_matroid.cpython-314-darwin.so +0 -0
- sage/matroids/transversal_matroid.pxd +14 -0
- sage/matroids/transversal_matroid.pyx +893 -0
- sage/matroids/union_matroid.cpython-314-darwin.so +0 -0
- sage/matroids/union_matroid.pxd +20 -0
- sage/matroids/union_matroid.pyx +331 -0
- sage/matroids/unpickling.cpython-314-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.so +0 -0
- sage/rings/complex_conversion.pxd +8 -0
- sage/rings/complex_conversion.pyx +23 -0
- sage/rings/complex_double.cpython-314-darwin.so +0 -0
- sage/rings/complex_double.pxd +21 -0
- sage/rings/complex_double.pyx +2654 -0
- sage/rings/complex_mpc.cpython-314-darwin.so +0 -0
- sage/rings/complex_mpc.pxd +21 -0
- sage/rings/complex_mpc.pyx +2576 -0
- sage/rings/complex_mpfr.cpython-314-darwin.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-darwin.so +0 -0
- sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
- sage/rings/function_field/khuri_makdisi.cpython-314-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.so +0 -0
- sage/rings/real_mpfr.pxd +29 -0
- sage/rings/real_mpfr.pyx +6122 -0
- sage/rings/ring_extension.cpython-314-darwin.so +0 -0
- sage/rings/ring_extension.pxd +42 -0
- sage/rings/ring_extension.pyx +2779 -0
- sage/rings/ring_extension_conversion.cpython-314-darwin.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-darwin.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-darwin.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-darwin.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-darwin.so +0 -0
- sage/stats/hmm/chmm.pyx +1595 -0
- sage/stats/hmm/distributions.cpython-314-darwin.so +0 -0
- sage/stats/hmm/distributions.pxd +29 -0
- sage/stats/hmm/distributions.pyx +531 -0
- sage/stats/hmm/hmm.cpython-314-darwin.so +0 -0
- sage/stats/hmm/hmm.pxd +17 -0
- sage/stats/hmm/hmm.pyx +1388 -0
- sage/stats/hmm/util.cpython-314-darwin.so +0 -0
- sage/stats/hmm/util.pxd +7 -0
- sage/stats/hmm/util.pyx +165 -0
- sage/stats/intlist.cpython-314-darwin.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-darwin.so +0 -0
- sage/stats/time_series.pxd +6 -0
- sage/stats/time_series.pyx +2546 -0
- sage/tensor/all.py +2 -0
- sage/tensor/modules/all.py +8 -0
- sage/tensor/modules/alternating_contr_tensor.py +761 -0
- sage/tensor/modules/comp.py +5598 -0
- sage/tensor/modules/ext_pow_free_module.py +824 -0
- sage/tensor/modules/finite_rank_free_module.py +3589 -0
- sage/tensor/modules/format_utilities.py +333 -0
- sage/tensor/modules/free_module_alt_form.py +858 -0
- sage/tensor/modules/free_module_automorphism.py +1207 -0
- sage/tensor/modules/free_module_basis.py +1074 -0
- sage/tensor/modules/free_module_element.py +284 -0
- sage/tensor/modules/free_module_homset.py +652 -0
- sage/tensor/modules/free_module_linear_group.py +564 -0
- sage/tensor/modules/free_module_morphism.py +1581 -0
- sage/tensor/modules/free_module_tensor.py +3289 -0
- sage/tensor/modules/reflexive_module.py +386 -0
- sage/tensor/modules/tensor_free_module.py +780 -0
- sage/tensor/modules/tensor_free_submodule.py +538 -0
- sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
- sage/tensor/modules/tensor_with_indices.py +1043 -0
sage/misc/sphinxify.py
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
# sage.doctest: optional - sphinx
|
|
3
|
+
r"""
|
|
4
|
+
Process docstrings with Sphinx
|
|
5
|
+
|
|
6
|
+
Processes docstrings with Sphinx. Can also be used as a commandline script:
|
|
7
|
+
|
|
8
|
+
``python sphinxify.py <text>``
|
|
9
|
+
|
|
10
|
+
AUTHORS:
|
|
11
|
+
|
|
12
|
+
- Tim Joseph Dumol (2009-09-29): initial version
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
# ****************************************************************************
|
|
16
|
+
# Copyright (C) 2009 Tim Dumol <tim@timdumol.com>
|
|
17
|
+
#
|
|
18
|
+
# This program is free software: you can redistribute it and/or modify
|
|
19
|
+
# it under the terms of the GNU General Public License as published by
|
|
20
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
21
|
+
# (at your option) any later version.
|
|
22
|
+
# https://www.gnu.org/licenses/
|
|
23
|
+
# ****************************************************************************
|
|
24
|
+
|
|
25
|
+
import builtins
|
|
26
|
+
import os
|
|
27
|
+
import re
|
|
28
|
+
import shutil
|
|
29
|
+
import sys
|
|
30
|
+
from tempfile import mkdtemp
|
|
31
|
+
from sphinx.application import Sphinx
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def sphinxify(docstring, format='html'):
|
|
35
|
+
r"""
|
|
36
|
+
Run Sphinx on a ``docstring``, and output the processed documentation.
|
|
37
|
+
|
|
38
|
+
INPUT:
|
|
39
|
+
|
|
40
|
+
- ``docstring`` -- string; a ReST-formatted docstring
|
|
41
|
+
|
|
42
|
+
- ``format`` -- string (default: ``'html'``); either ``'html'`` or
|
|
43
|
+
``'text'``
|
|
44
|
+
|
|
45
|
+
OUTPUT:
|
|
46
|
+
|
|
47
|
+
- ``string`` -- Sphinx-processed documentation, in either HTML or
|
|
48
|
+
plain text format, depending on the value of ``format``
|
|
49
|
+
|
|
50
|
+
EXAMPLES::
|
|
51
|
+
|
|
52
|
+
sage: from sage.misc.sphinxify import sphinxify
|
|
53
|
+
sage: sphinxify('A test')
|
|
54
|
+
'<div class="docstring">\n \n <p>A test</p>\n\n\n</div>'
|
|
55
|
+
sage: sphinxify('**Testing**\n`monospace`')
|
|
56
|
+
'<div class="docstring"...<strong>Testing</strong>\n<span class="math...</p>\n\n\n</div>'
|
|
57
|
+
sage: sphinxify('`x=y`')
|
|
58
|
+
'<div class="docstring">\n \n <p><span class="math notranslate nohighlight">x=y</span></p>\n\n\n</div>'
|
|
59
|
+
sage: sphinxify('`x=y`', format='text')
|
|
60
|
+
'x=y\n'
|
|
61
|
+
sage: sphinxify(':math:`x=y`', format='text')
|
|
62
|
+
'x=y\n'
|
|
63
|
+
|
|
64
|
+
TESTS::
|
|
65
|
+
|
|
66
|
+
sage: n = len(sys.path)
|
|
67
|
+
sage: _ = sphinxify('A test')
|
|
68
|
+
sage: assert n == len(sys.path)
|
|
69
|
+
"""
|
|
70
|
+
srcdir = mkdtemp()
|
|
71
|
+
outdir = mkdtemp()
|
|
72
|
+
src_base_name = os.path.join(srcdir, 'docstring')
|
|
73
|
+
out_base_name = os.path.join(outdir, 'docstring')
|
|
74
|
+
rst_name = src_base_name + '.rst'
|
|
75
|
+
|
|
76
|
+
if format == 'html':
|
|
77
|
+
suffix = '.html'
|
|
78
|
+
else:
|
|
79
|
+
suffix = '.txt'
|
|
80
|
+
output_name = out_base_name + suffix
|
|
81
|
+
|
|
82
|
+
with open(rst_name, 'w') as filed:
|
|
83
|
+
filed.write(docstring)
|
|
84
|
+
|
|
85
|
+
confdir = os.path.join(srcdir, 'en', 'introspect')
|
|
86
|
+
os.makedirs(confdir)
|
|
87
|
+
with open(os.path.join(confdir, 'conf.py'), 'w') as filed:
|
|
88
|
+
filed.write(r"""
|
|
89
|
+
from sage.misc.sagedoc_conf import *
|
|
90
|
+
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.mathjax', 'sphinx.ext.todo', 'sphinx.ext.extlinks']
|
|
91
|
+
|
|
92
|
+
templates_path = ['templates']
|
|
93
|
+
html_static_path = ['static']
|
|
94
|
+
|
|
95
|
+
html_use_modindex = False
|
|
96
|
+
html_use_index = False
|
|
97
|
+
html_split_index = False
|
|
98
|
+
html_copy_source = False
|
|
99
|
+
|
|
100
|
+
todo_include_todos = True""")
|
|
101
|
+
templatesdir = os.path.join(confdir, 'templates')
|
|
102
|
+
os.makedirs(templatesdir)
|
|
103
|
+
with open(os.path.join(templatesdir, 'layout.html'), 'w') as filed:
|
|
104
|
+
filed.write(r"""<div class="docstring">
|
|
105
|
+
{% block body %} {% endblock %}
|
|
106
|
+
</div>""")
|
|
107
|
+
staticdir = os.path.join(confdir, 'static')
|
|
108
|
+
os.makedirs(staticdir)
|
|
109
|
+
with open(os.path.join(staticdir, 'empty'), 'w') as filed:
|
|
110
|
+
pass
|
|
111
|
+
with open(os.path.join(srcdir, 'docutils.conf'), 'w') as filed:
|
|
112
|
+
filed.write(r"""
|
|
113
|
+
[parsers]
|
|
114
|
+
smart_quotes = no""")
|
|
115
|
+
doctreedir = os.path.join(srcdir, 'doctrees')
|
|
116
|
+
confoverrides = {'html_context': {}, 'master_doc': 'docstring'}
|
|
117
|
+
|
|
118
|
+
old_sys_path = list(sys.path) # Sphinx modifies sys.path
|
|
119
|
+
# Sphinx constructor: Sphinx(srcdir, confdir, outdir, doctreedir,
|
|
120
|
+
# buildername, confoverrides, status, warning, freshenv).
|
|
121
|
+
sphinx_app = Sphinx(srcdir, confdir, outdir, doctreedir, format,
|
|
122
|
+
confoverrides, None, None, True)
|
|
123
|
+
sphinx_app.build(None, [rst_name])
|
|
124
|
+
sys.path = old_sys_path
|
|
125
|
+
|
|
126
|
+
# We need to remove "_" from __builtin__ that the gettext module installs
|
|
127
|
+
builtins.__dict__.pop('_', None)
|
|
128
|
+
|
|
129
|
+
if os.path.exists(output_name):
|
|
130
|
+
with open(output_name) as f:
|
|
131
|
+
output = f.read()
|
|
132
|
+
output = output.replace('<pre>', '<pre class="literal-block">')
|
|
133
|
+
|
|
134
|
+
# Translate URLs for media from something like
|
|
135
|
+
# "../../media/...path.../blah.png"
|
|
136
|
+
# or
|
|
137
|
+
# "/media/...path.../blah.png"
|
|
138
|
+
# to
|
|
139
|
+
# "/doc/static/reference/media/...path.../blah.png"
|
|
140
|
+
output = re.sub(r"""src=['"](/?\.\.)*/?media/([^"']*)['"]""",
|
|
141
|
+
'src="/doc/static/reference/media/\\2"',
|
|
142
|
+
output)
|
|
143
|
+
# Remove spurious \(, \), \[, \].
|
|
144
|
+
output = output.replace(r'\(', '').replace(r'\)', '').replace(r'\[', '').replace(r'\]', '')
|
|
145
|
+
else:
|
|
146
|
+
from warnings import warn
|
|
147
|
+
warn("Sphinx did not produce any output", Warning)
|
|
148
|
+
if format == 'html':
|
|
149
|
+
output = '<pre class="introspection">%s</pre>' % docstring
|
|
150
|
+
else:
|
|
151
|
+
output = docstring
|
|
152
|
+
|
|
153
|
+
shutil.rmtree(srcdir, ignore_errors=True)
|
|
154
|
+
shutil.rmtree(outdir, ignore_errors=True)
|
|
155
|
+
|
|
156
|
+
return output
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
if __name__ == '__main__':
|
|
160
|
+
if len(sys.argv) == 2:
|
|
161
|
+
print(sphinxify(sys.argv[1]))
|
|
162
|
+
else:
|
|
163
|
+
print("""Usage:
|
|
164
|
+
%s 'docstring'
|
|
165
|
+
|
|
166
|
+
docstring -- docstring to be processed
|
|
167
|
+
""")
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
|
|
3
|
+
import copyreg
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class bar:
|
|
7
|
+
pass
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def metaclass(name, bases):
|
|
11
|
+
"""
|
|
12
|
+
Create a new class in this metaclass.
|
|
13
|
+
|
|
14
|
+
INPUT:
|
|
15
|
+
|
|
16
|
+
- ``name`` -- string
|
|
17
|
+
- ``bases`` -- tuple of classes
|
|
18
|
+
|
|
19
|
+
EXAMPLES::
|
|
20
|
+
|
|
21
|
+
sage: from sage.misc.test_class_pickling import metaclass, bar
|
|
22
|
+
sage: c = metaclass("foo2", (bar, object))
|
|
23
|
+
constructing class
|
|
24
|
+
sage: c
|
|
25
|
+
<class 'sage.misc.test_class_pickling.foo2'>
|
|
26
|
+
sage: type(c)
|
|
27
|
+
<class 'sage.misc.test_class_pickling.Metaclass'>
|
|
28
|
+
sage: c.__bases__
|
|
29
|
+
(<...sage.misc.test_class_pickling.bar...>, <... 'object'>)
|
|
30
|
+
"""
|
|
31
|
+
print("constructing class")
|
|
32
|
+
result = Metaclass(name, bases, {})
|
|
33
|
+
result.reduce_args = (name, bases)
|
|
34
|
+
return result
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class Metaclass(type):
|
|
38
|
+
"""
|
|
39
|
+
This metaclass illustrates the customization of how a class is pickled.
|
|
40
|
+
It requires a slightly patched version of cPickle.
|
|
41
|
+
|
|
42
|
+
See:
|
|
43
|
+
|
|
44
|
+
- https://docs.python.org/3/library/copyreg.html#module-copyreg
|
|
45
|
+
- http://groups.google.com/group/comp.lang.python/browse_thread/thread/66c282afc04aa39c/
|
|
46
|
+
- http://groups.google.com/group/sage-devel/browse_thread/thread/583048dc7d373d6a/
|
|
47
|
+
|
|
48
|
+
EXAMPLES::
|
|
49
|
+
|
|
50
|
+
sage: from sage.misc.test_class_pickling import metaclass, bar
|
|
51
|
+
sage: c = metaclass("foo", (bar, object))
|
|
52
|
+
constructing class
|
|
53
|
+
sage: import pickle
|
|
54
|
+
sage: s = pickle.dumps(c)
|
|
55
|
+
reducing a class
|
|
56
|
+
sage: c2 = pickle.loads(s)
|
|
57
|
+
constructing class
|
|
58
|
+
sage: c == c2
|
|
59
|
+
calling __eq__ defined in Metaclass
|
|
60
|
+
True
|
|
61
|
+
"""
|
|
62
|
+
def __eq__(self, other):
|
|
63
|
+
print("calling __eq__ defined in Metaclass")
|
|
64
|
+
return (type(self) is type(other)) and (self.reduce_args == other.reduce_args)
|
|
65
|
+
|
|
66
|
+
def __reduce__(self):
|
|
67
|
+
"""
|
|
68
|
+
Implement the pickle protocol for classes in this metaclass
|
|
69
|
+
(not for the instances of this class!!!)
|
|
70
|
+
|
|
71
|
+
EXAMPLES::
|
|
72
|
+
|
|
73
|
+
sage: from sage.misc.test_class_pickling import metaclass, bar
|
|
74
|
+
sage: c = metaclass("foo3", (bar, object))
|
|
75
|
+
constructing class
|
|
76
|
+
sage: c.__class__.__reduce__(c)
|
|
77
|
+
reducing a class
|
|
78
|
+
(<function metaclass at ...>,
|
|
79
|
+
('foo3', (<...sage.misc.test_class_pickling.bar...>, <...'object'>)))
|
|
80
|
+
"""
|
|
81
|
+
print("reducing a class")
|
|
82
|
+
return (metaclass, self.reduce_args)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
copyreg.pickle(Metaclass, Metaclass.__reduce__)
|
sage/modules/all.py
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
# *****************************************************************************
|
|
3
|
+
# Copyright (C) 2005 William Stein <wstein@gmail.com>
|
|
4
|
+
#
|
|
5
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
6
|
+
#
|
|
7
|
+
# This code is distributed in the hope that it will be useful,
|
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
10
|
+
# General Public License for more details.
|
|
11
|
+
#
|
|
12
|
+
# The full text of the GPL is available at:
|
|
13
|
+
#
|
|
14
|
+
# https://www.gnu.org/licenses/
|
|
15
|
+
# *****************************************************************************
|
|
16
|
+
|
|
17
|
+
from sage.modules.free_module import FreeModule, VectorSpace, span
|
|
18
|
+
|
|
19
|
+
from sage.modules.free_quadratic_module import (
|
|
20
|
+
FreeQuadraticModule,
|
|
21
|
+
QuadraticSpace,
|
|
22
|
+
InnerProductSpace,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
from sage.modules.free_module_element import (
|
|
26
|
+
vector,
|
|
27
|
+
free_module_element,
|
|
28
|
+
zero_vector,
|
|
29
|
+
random_vector,
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
from sage.modules.vector_space_morphism import linear_transformation
|
|
33
|
+
|
|
34
|
+
from sage.modules.with_basis.all import *
|
|
35
|
+
|
|
36
|
+
from sage.misc.lazy_import import lazy_import
|
|
37
|
+
|
|
38
|
+
lazy_import("sage.modules.filtered_vector_space", "FilteredVectorSpace")
|
|
39
|
+
lazy_import("sage.modules.multi_filtered_vector_space", "MultiFilteredVectorSpace")
|
|
40
|
+
lazy_import("sage.modules.free_quadratic_module_integer_symmetric", "IntegralLattice")
|
|
41
|
+
lazy_import("sage.modules.torsion_quadratic_module", "TorsionQuadraticForm")
|
|
42
|
+
del lazy_import
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
r"""
|
|
3
|
+
Pickling for the old CDF vector class
|
|
4
|
+
|
|
5
|
+
AUTHORS:
|
|
6
|
+
|
|
7
|
+
- Jason Grout
|
|
8
|
+
|
|
9
|
+
TESTS::
|
|
10
|
+
|
|
11
|
+
sage: v = vector(CDF,[(1,-1), (2,pi), (3,5)]); v # needs sage.symbolic
|
|
12
|
+
(1.0 - 1.0*I, 2.0 + 3.141592653589793*I, 3.0 + 5.0*I)
|
|
13
|
+
sage: loads(dumps(v)) == v # needs sage.symbolic
|
|
14
|
+
True
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
###############################################################################
|
|
18
|
+
# Copyright (C) 2008 Jason Grout <jason-sage@creativetrax.com>
|
|
19
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
20
|
+
# http://www.gnu.org/licenses/
|
|
21
|
+
###############################################################################
|
|
22
|
+
|
|
23
|
+
from sage.modules.vector_complex_double_dense import Vector_complex_double_dense
|
|
24
|
+
|
|
25
|
+
ComplexDoubleVectorSpaceElement = Vector_complex_double_dense
|
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
# sage.doctest: needs sage.geometry.polyhedron
|
|
3
|
+
"""
|
|
4
|
+
Diamond cutting implementation
|
|
5
|
+
|
|
6
|
+
AUTHORS:
|
|
7
|
+
|
|
8
|
+
- Jan Poeschko (2012-07-02): initial version
|
|
9
|
+
"""
|
|
10
|
+
# ****************************************************************************
|
|
11
|
+
# Copyright (C) 2012 Jan Poeschko <jan@poeschko.com>
|
|
12
|
+
#
|
|
13
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
14
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
15
|
+
# the License, or (at your option) any later version.
|
|
16
|
+
# https://www.gnu.org/licenses/
|
|
17
|
+
# ****************************************************************************
|
|
18
|
+
|
|
19
|
+
from sage.geometry.polyhedron.constructor import Polyhedron
|
|
20
|
+
from sage.matrix.constructor import matrix
|
|
21
|
+
from sage.modules.free_module_element import vector
|
|
22
|
+
|
|
23
|
+
from math import sqrt, floor, ceil
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def plane_inequality(v) -> list:
|
|
27
|
+
"""
|
|
28
|
+
Return the inequality for points on the same side as the origin
|
|
29
|
+
with respect to the plane through ``v`` normal to ``v``.
|
|
30
|
+
|
|
31
|
+
EXAMPLES::
|
|
32
|
+
|
|
33
|
+
sage: from sage.modules.diamond_cutting import plane_inequality
|
|
34
|
+
sage: ieq = plane_inequality([1, -1]); ieq
|
|
35
|
+
[2, -1, 1]
|
|
36
|
+
sage: ieq[0] + vector(ieq[1:]) * vector([1, -1])
|
|
37
|
+
0
|
|
38
|
+
"""
|
|
39
|
+
v = vector(v)
|
|
40
|
+
c = -v * v
|
|
41
|
+
if c < 0:
|
|
42
|
+
c, v = -c, -v
|
|
43
|
+
return [c] + list(v)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def jacobi(M):
|
|
47
|
+
r"""
|
|
48
|
+
Compute the upper-triangular part of the Cholesky/Jacobi
|
|
49
|
+
decomposition of the symmetric matrix ``M``.
|
|
50
|
+
|
|
51
|
+
Let `M` be a symmetric `n \times n`-matrix over a field `F`.
|
|
52
|
+
Let `m_{i,j}` denote the `(i,j)`-th entry of `M` for any
|
|
53
|
+
`1 \leq i \leq n` and `1 \leq j \leq n`. Then, the
|
|
54
|
+
upper-triangular part computed by this method is the
|
|
55
|
+
upper-triangular `n \times n`-matrix `Q` whose
|
|
56
|
+
`(i,j)`-th entry `q_{i,j}` satisfies
|
|
57
|
+
|
|
58
|
+
.. MATH::
|
|
59
|
+
|
|
60
|
+
q_{i,j} =
|
|
61
|
+
\begin{cases}
|
|
62
|
+
\frac{1}{q_{i,i}} \left( m_{i,j} - \sum_{r<i} q_{r,r} q_{r,i} q_{r,j} \right) & i < j, \\
|
|
63
|
+
m_{i,j} - \sum_{r<i} q_{r,r} q_{r,i}^2 & i = j, \\
|
|
64
|
+
0 & i > j,
|
|
65
|
+
\end{cases}
|
|
66
|
+
|
|
67
|
+
for all `1 \leq i \leq n` and `1 \leq j \leq n`. (These
|
|
68
|
+
equalities determine the entries of `Q` uniquely by
|
|
69
|
+
recursion.) This matrix `Q` is defined for every invertible
|
|
70
|
+
`n \times n`-matrix `M`. Its definition is taken from (2.3)
|
|
71
|
+
of [FP1985]_.
|
|
72
|
+
|
|
73
|
+
.. NOTE::
|
|
74
|
+
|
|
75
|
+
This should be a method of matrices.
|
|
76
|
+
|
|
77
|
+
EXAMPLES::
|
|
78
|
+
|
|
79
|
+
sage: from sage.modules.diamond_cutting import jacobi
|
|
80
|
+
sage: jacobi(identity_matrix(3) * 4)
|
|
81
|
+
[4 0 0]
|
|
82
|
+
[0 4 0]
|
|
83
|
+
[0 0 4]
|
|
84
|
+
|
|
85
|
+
sage: def testall(M):
|
|
86
|
+
....: Q = jacobi(M)
|
|
87
|
+
....: for j in range(3):
|
|
88
|
+
....: for i in range(j):
|
|
89
|
+
....: if Q[i,j] * Q[i,i] != M[i,j] - sum(Q[r,i] * Q[r,j] * Q[r,r] for r in range(i)):
|
|
90
|
+
....: return False
|
|
91
|
+
....: for i in range(3):
|
|
92
|
+
....: if Q[i,i] != M[i,i] - sum(Q[r,i] ** 2 * Q[r,r] for r in range(i)):
|
|
93
|
+
....: return False
|
|
94
|
+
....: for j in range(i):
|
|
95
|
+
....: if Q[i,j] != 0:
|
|
96
|
+
....: return False
|
|
97
|
+
....: return True
|
|
98
|
+
|
|
99
|
+
sage: M = Matrix(QQ, [[8,1,5], [1,6,0], [5,0,3]])
|
|
100
|
+
sage: Q = jacobi(M); Q
|
|
101
|
+
[ 8 1/8 5/8]
|
|
102
|
+
[ 0 47/8 -5/47]
|
|
103
|
+
[ 0 0 -9/47]
|
|
104
|
+
sage: testall(M)
|
|
105
|
+
True
|
|
106
|
+
|
|
107
|
+
sage: M = Matrix(QQ, [[3,6,-1,7],[6,9,8,5],[-1,8,2,4],[7,5,4,0]])
|
|
108
|
+
sage: testall(M)
|
|
109
|
+
True
|
|
110
|
+
"""
|
|
111
|
+
if not M.is_square():
|
|
112
|
+
raise ValueError("the matrix must be square")
|
|
113
|
+
dim = M.nrows()
|
|
114
|
+
q = [list(row) for row in M]
|
|
115
|
+
for i in range(dim - 1):
|
|
116
|
+
for j in range(i + 1, dim):
|
|
117
|
+
q[j][i] = q[i][j]
|
|
118
|
+
q[i][j] = q[i][j] / q[i][i]
|
|
119
|
+
for k in range(i + 1, dim):
|
|
120
|
+
for l in range(k, dim):
|
|
121
|
+
q[k][l] -= q[k][i] * q[i][l]
|
|
122
|
+
for i in range(1, dim):
|
|
123
|
+
for j in range(i):
|
|
124
|
+
q[i][j] = 0
|
|
125
|
+
return matrix(q)
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def diamond_cut(V, GM, C, verbose=False) -> Polyhedron:
|
|
129
|
+
r"""
|
|
130
|
+
Perform diamond cutting on polyhedron ``V`` with basis matrix ``GM``
|
|
131
|
+
and squared radius ``C``.
|
|
132
|
+
|
|
133
|
+
INPUT:
|
|
134
|
+
|
|
135
|
+
- ``V`` -- polyhedron to cut from
|
|
136
|
+
|
|
137
|
+
- ``GM`` -- half of the basis matrix of the lattice
|
|
138
|
+
|
|
139
|
+
- ``C`` -- square of the radius to use in cutting algorithm
|
|
140
|
+
|
|
141
|
+
- ``verbose`` -- boolean (default: ``False``); whether to print
|
|
142
|
+
debug information
|
|
143
|
+
|
|
144
|
+
OUTPUT: a :class:`Polyhedron` instance
|
|
145
|
+
|
|
146
|
+
ALGORITHM:
|
|
147
|
+
|
|
148
|
+
Use the algorithm in (2.8) of [FP1985]_ to iterate through the nonzero
|
|
149
|
+
vectors ``hv`` of length at most `\sqrt{C}` in the lattice spanned by
|
|
150
|
+
``GM``. (Actually, the algorithm only constructs one vector from each pair
|
|
151
|
+
``{hv, -hv}``.) For each such vector ``hv``, intersect ``V`` with the
|
|
152
|
+
half-spaces defined by ``plane_inequality(hv)`` and
|
|
153
|
+
``plane_inequality(-hv)``.
|
|
154
|
+
|
|
155
|
+
EXAMPLES::
|
|
156
|
+
|
|
157
|
+
sage: from sage.modules.diamond_cutting import diamond_cut
|
|
158
|
+
sage: V = Polyhedron([[0], [2]])
|
|
159
|
+
sage: GM = matrix([2])
|
|
160
|
+
sage: V = diamond_cut(V, GM, 4)
|
|
161
|
+
sage: V.vertices()
|
|
162
|
+
(A vertex at (2), A vertex at (0))
|
|
163
|
+
|
|
164
|
+
TESTS:
|
|
165
|
+
|
|
166
|
+
Verify that code works when no cuts are performed::
|
|
167
|
+
|
|
168
|
+
sage: from sage.modules.free_module_integer import IntegerLattice
|
|
169
|
+
sage: v = vector(ZZ, [1,1,-1])
|
|
170
|
+
sage: L = IntegerLattice([v])
|
|
171
|
+
sage: C = L.voronoi_cell(radius=0.1)
|
|
172
|
+
"""
|
|
173
|
+
if verbose:
|
|
174
|
+
print("Cut\n{}\nwith squared radius {}".format(GM, C))
|
|
175
|
+
|
|
176
|
+
dim = GM.dimensions()
|
|
177
|
+
if dim[0] != dim[1]:
|
|
178
|
+
raise ValueError("the matrix must be square")
|
|
179
|
+
dim = dim[0]
|
|
180
|
+
T = [0] * dim
|
|
181
|
+
U = [0] * dim
|
|
182
|
+
x = [0] * dim
|
|
183
|
+
L = [0] * dim
|
|
184
|
+
|
|
185
|
+
# calculate the Gram matrix
|
|
186
|
+
q = matrix([[sum(GM[i][k] * GM[j][k] for k in range(dim))
|
|
187
|
+
for j in range(dim)] for i in range(dim)])
|
|
188
|
+
if verbose:
|
|
189
|
+
print("q:\n{}".format(q.n()))
|
|
190
|
+
# apply Cholesky/Jacobi decomposition
|
|
191
|
+
q = jacobi(q)
|
|
192
|
+
if verbose:
|
|
193
|
+
print("q:\n{}".format(q.n()))
|
|
194
|
+
|
|
195
|
+
i = dim - 1
|
|
196
|
+
T[i] = C
|
|
197
|
+
U[i] = 0
|
|
198
|
+
|
|
199
|
+
new_dimension = True
|
|
200
|
+
cut_count = 0
|
|
201
|
+
inequalities = []
|
|
202
|
+
while True:
|
|
203
|
+
if verbose:
|
|
204
|
+
print(f"Dimension: {i}")
|
|
205
|
+
if new_dimension:
|
|
206
|
+
Z = sqrt(T[i] / q[i][i])
|
|
207
|
+
if verbose:
|
|
208
|
+
print("Z: {}".format(Z))
|
|
209
|
+
L[i] = int(floor(Z - U[i]))
|
|
210
|
+
if verbose:
|
|
211
|
+
print("L: {}".format(L))
|
|
212
|
+
x[i] = int(ceil(-Z - U[i]) - 1)
|
|
213
|
+
new_dimension = False
|
|
214
|
+
|
|
215
|
+
x[i] += 1
|
|
216
|
+
if verbose:
|
|
217
|
+
print(f"x: {x}")
|
|
218
|
+
if x[i] > L[i]:
|
|
219
|
+
i += 1
|
|
220
|
+
elif i > 0:
|
|
221
|
+
T[i - 1] = T[i] - q[i][i] * (x[i] + U[i]) ** 2
|
|
222
|
+
i -= 1
|
|
223
|
+
U[i] = 0
|
|
224
|
+
for j in range(i + 1, dim):
|
|
225
|
+
U[i] += q[i][j] * x[j]
|
|
226
|
+
new_dimension = True
|
|
227
|
+
else:
|
|
228
|
+
if all(elmt == 0 for elmt in x):
|
|
229
|
+
break
|
|
230
|
+
hv = [0] * dim
|
|
231
|
+
for k in range(dim):
|
|
232
|
+
for j in range(dim):
|
|
233
|
+
hv[k] += x[j] * GM[j][k]
|
|
234
|
+
hv = vector(hv)
|
|
235
|
+
|
|
236
|
+
for hv in [hv, -hv]:
|
|
237
|
+
cut_count += 1
|
|
238
|
+
if verbose:
|
|
239
|
+
print("\n%d) Cut using normal vector %s" % (cut_count, hv))
|
|
240
|
+
inequalities.append(plane_inequality(hv))
|
|
241
|
+
|
|
242
|
+
if verbose:
|
|
243
|
+
print("Final cut")
|
|
244
|
+
if inequalities:
|
|
245
|
+
cut = Polyhedron(ieqs=inequalities)
|
|
246
|
+
V = V.intersection(cut)
|
|
247
|
+
|
|
248
|
+
if verbose:
|
|
249
|
+
print("End")
|
|
250
|
+
|
|
251
|
+
return V
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
def calculate_voronoi_cell(basis, radius=None, verbose=False) -> Polyhedron:
|
|
255
|
+
"""
|
|
256
|
+
Calculate the Voronoi cell of the lattice defined by basis.
|
|
257
|
+
|
|
258
|
+
INPUT:
|
|
259
|
+
|
|
260
|
+
- ``basis`` -- embedded basis matrix of the lattice
|
|
261
|
+
|
|
262
|
+
- ``radius`` -- square of radius of basis vectors to consider
|
|
263
|
+
|
|
264
|
+
- ``verbose`` -- whether to print debug information
|
|
265
|
+
|
|
266
|
+
OUTPUT: a :class:`Polyhedron` instance
|
|
267
|
+
|
|
268
|
+
EXAMPLES::
|
|
269
|
+
|
|
270
|
+
sage: from sage.modules.diamond_cutting import calculate_voronoi_cell
|
|
271
|
+
sage: V = calculate_voronoi_cell(matrix([[1, 0], [0, 1]]))
|
|
272
|
+
sage: V.volume()
|
|
273
|
+
1
|
|
274
|
+
|
|
275
|
+
TESTS:
|
|
276
|
+
|
|
277
|
+
Verify that :issue:`39507` is fixed::
|
|
278
|
+
|
|
279
|
+
sage: from sage.modules.free_module_integer import IntegerLattice
|
|
280
|
+
sage: v = vector(ZZ, [1,1,1,-1])
|
|
281
|
+
sage: L = IntegerLattice([v])
|
|
282
|
+
sage: print(v in L)
|
|
283
|
+
True
|
|
284
|
+
sage: print(L.closest_vector(v))
|
|
285
|
+
(1, 1, 1, -1)
|
|
286
|
+
sage: C = L.voronoi_cell()
|
|
287
|
+
sage: C.Hrepresentation()
|
|
288
|
+
(An inequality (-1, -1, -1, 1) x + 2 >= 0,
|
|
289
|
+
An inequality (1, 1, 1, -1) x + 2 >= 0)
|
|
290
|
+
sage: v = vector(ZZ, [1,1,-1])
|
|
291
|
+
sage: L = IntegerLattice([v])
|
|
292
|
+
sage: C = L.voronoi_cell()
|
|
293
|
+
sage: C.Hrepresentation()
|
|
294
|
+
(An inequality (-2, -2, 2) x + 3 >= 0,
|
|
295
|
+
An inequality (2, 2, -2) x + 3 >= 0)
|
|
296
|
+
sage: C.Vrepresentation()
|
|
297
|
+
(A line in the direction (0, 1, 1),
|
|
298
|
+
A line in the direction (1, 0, 1),
|
|
299
|
+
A vertex at (0, 0, -3/2),
|
|
300
|
+
A vertex at (0, 0, 3/2))
|
|
301
|
+
|
|
302
|
+
Verify that :issue:`37086` is fixed::
|
|
303
|
+
|
|
304
|
+
sage: from sage.modules.free_module_integer import IntegerLattice
|
|
305
|
+
sage: l = [7, 0, -1, -2, -1, -2, 7, -2, 0, 0, -2,
|
|
306
|
+
....: 0, 7, -2, 0, -1, -2, -1, 7, 0 , -1, -1, 0, -2, 7]
|
|
307
|
+
sage: M = matrix(5, 5, l)
|
|
308
|
+
sage: C = IntegerLattice(M).voronoi_cell()
|
|
309
|
+
sage: C
|
|
310
|
+
A 5-dimensional polyhedron in QQ^5 defined as the
|
|
311
|
+
convex hull of 720 vertices
|
|
312
|
+
"""
|
|
313
|
+
dim = basis.dimensions()
|
|
314
|
+
# LLL-reduce for efficiency.
|
|
315
|
+
basis = basis.LLL()
|
|
316
|
+
if radius is None:
|
|
317
|
+
# Convert the basis matrix to use RDF numbers for efficiency when we
|
|
318
|
+
# calculate the triangular matrix of the QR decomposition.
|
|
319
|
+
from sage.rings.real_double import RDF
|
|
320
|
+
transposed_RDF_matrix = (basis.transpose()).change_ring(RDF)
|
|
321
|
+
R = transposed_RDF_matrix.QR()[1]
|
|
322
|
+
# The length of the vector formed by the diagonal entries of R is an
|
|
323
|
+
# upper bound for twice the covering radius, so it is an upper bound
|
|
324
|
+
# on the length of the lattice vectors that need to be considered for
|
|
325
|
+
# diamond cutting. However, the value of the `radius` keyword is
|
|
326
|
+
# actually a squared length, so there is no square root in the
|
|
327
|
+
# following formula.
|
|
328
|
+
radius = sum(R[i, i]**2 for i in range(dim[0]))
|
|
329
|
+
# We then divide by 4 as we will divide the basis by 2 later on.
|
|
330
|
+
radius = ceil(radius / 4)
|
|
331
|
+
artificial_length = None
|
|
332
|
+
if dim[0] < dim[1]:
|
|
333
|
+
F = basis.base_ring().fraction_field()
|
|
334
|
+
# Introduce "artificial" basis points (representing infinity).
|
|
335
|
+
additional_vectors = (F**dim[1]).subspace(basis).complement().basis()
|
|
336
|
+
additional_vectors = matrix(additional_vectors)
|
|
337
|
+
# LLL-reduce for efficiency.
|
|
338
|
+
additional_vectors = additional_vectors.LLL()
|
|
339
|
+
|
|
340
|
+
from sage.rings.real_double import RDF
|
|
341
|
+
# Convert the basis matrix to use RDF numbers for efficiency when we
|
|
342
|
+
# perform the QR decomposition.
|
|
343
|
+
transposed_RDF_matrix = additional_vectors.transpose().change_ring(RDF)
|
|
344
|
+
R = transposed_RDF_matrix.QR()[1]
|
|
345
|
+
# Since R is triangular, its smallest diagonal entry provides a
|
|
346
|
+
# lower bound on the length of the shortest nonzero vector in the
|
|
347
|
+
# lattice spanned by the artificial points. We square it because
|
|
348
|
+
# value of `radius` is a squared length.
|
|
349
|
+
shortest_vector_lower_bound = min(R[i, i]**2
|
|
350
|
+
for i in range(dim[1] - dim[0]))
|
|
351
|
+
# We will multiply our artificial points by the following scalar in
|
|
352
|
+
# order to make sure the squared length of the shortest
|
|
353
|
+
# nonzero vector is greater than radius, even after the vectors
|
|
354
|
+
# are divided by 2.
|
|
355
|
+
artificial_length = ceil(2.001 * sqrt(radius / shortest_vector_lower_bound))
|
|
356
|
+
additional_vectors *= artificial_length
|
|
357
|
+
basis = basis.stack(additional_vectors)
|
|
358
|
+
basis = matrix([v for v in basis if v])
|
|
359
|
+
dim = basis.dimensions()
|
|
360
|
+
if dim[0] != dim[1]:
|
|
361
|
+
raise ValueError("invalid matrix")
|
|
362
|
+
basis = basis / 2
|
|
363
|
+
|
|
364
|
+
ieqs = []
|
|
365
|
+
for v in basis:
|
|
366
|
+
ieqs.append(plane_inequality(v))
|
|
367
|
+
ieqs.append(plane_inequality(-v))
|
|
368
|
+
Q = Polyhedron(ieqs=ieqs)
|
|
369
|
+
|
|
370
|
+
V = diamond_cut(Q, basis, radius, verbose=verbose)
|
|
371
|
+
|
|
372
|
+
if artificial_length is not None:
|
|
373
|
+
# Remove inequalities introduced by artificial basis points.
|
|
374
|
+
H = V.Hrepresentation()
|
|
375
|
+
H = [v for v in H if all(not V._is_zero(v.A() * w / 2 - v.b()) and
|
|
376
|
+
not V._is_zero(v.A() * (-w) / 2 - v.b())
|
|
377
|
+
for w in additional_vectors)]
|
|
378
|
+
V = Polyhedron(ieqs=H)
|
|
379
|
+
|
|
380
|
+
return V
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|