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.

Files changed (808) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +808 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +5 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgcc_s-0cd532bd.so.1 +0 -0
  6. passagemath_modules.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
  7. passagemath_modules.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
  8. passagemath_modules.libs/libgsl-42cda06f.so.28.0.0 +0 -0
  9. passagemath_modules.libs/libmpc-d8ebe4b5.so.3.3.1 +0 -0
  10. passagemath_modules.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
  11. passagemath_modules.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
  12. passagemath_modules.libs/libquadmath-bb76a5fc.so.0.0.0 +0 -0
  13. sage/algebras/all__sagemath_modules.py +20 -0
  14. sage/algebras/catalog.py +148 -0
  15. sage/algebras/clifford_algebra.py +3107 -0
  16. sage/algebras/clifford_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  17. sage/algebras/clifford_algebra_element.pxd +16 -0
  18. sage/algebras/clifford_algebra_element.pyx +997 -0
  19. sage/algebras/commutative_dga.py +4252 -0
  20. sage/algebras/exterior_algebra_groebner.cpython-314-x86_64-linux-musl.so +0 -0
  21. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  22. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  23. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  28. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  29. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  30. sage/algebras/finite_gca.py +528 -0
  31. sage/algebras/group_algebra.py +232 -0
  32. sage/algebras/lie_algebras/abelian.py +197 -0
  33. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  34. sage/algebras/lie_algebras/all.py +25 -0
  35. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  36. sage/algebras/lie_algebras/bch.py +177 -0
  37. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  38. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  39. sage/algebras/lie_algebras/center_uea.py +767 -0
  40. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  41. sage/algebras/lie_algebras/examples.py +683 -0
  42. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  43. sage/algebras/lie_algebras/heisenberg.py +820 -0
  44. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  46. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  47. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  48. sage/algebras/lie_algebras/morphism.py +661 -0
  49. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  50. sage/algebras/lie_algebras/onsager.py +1324 -0
  51. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  52. sage/algebras/lie_algebras/quotient.py +462 -0
  53. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  54. sage/algebras/lie_algebras/representation.py +1040 -0
  55. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  56. sage/algebras/lie_algebras/subalgebra.py +967 -0
  57. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  58. sage/algebras/lie_algebras/verma_module.py +1630 -0
  59. sage/algebras/lie_algebras/virasoro.py +1186 -0
  60. sage/algebras/octonion_algebra.cpython-314-x86_64-linux-musl.so +0 -0
  61. sage/algebras/octonion_algebra.pxd +20 -0
  62. sage/algebras/octonion_algebra.pyx +987 -0
  63. sage/algebras/orlik_solomon.py +907 -0
  64. sage/algebras/orlik_terao.py +779 -0
  65. sage/algebras/steenrod/all.py +7 -0
  66. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  67. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  68. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  69. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  70. sage/algebras/weyl_algebra.py +1126 -0
  71. sage/all__sagemath_modules.py +62 -0
  72. sage/calculus/all__sagemath_modules.py +19 -0
  73. sage/calculus/expr.py +205 -0
  74. sage/calculus/integration.cpython-314-x86_64-linux-musl.so +0 -0
  75. sage/calculus/integration.pyx +698 -0
  76. sage/calculus/interpolation.cpython-314-x86_64-linux-musl.so +0 -0
  77. sage/calculus/interpolation.pxd +13 -0
  78. sage/calculus/interpolation.pyx +387 -0
  79. sage/calculus/interpolators.cpython-314-x86_64-linux-musl.so +0 -0
  80. sage/calculus/interpolators.pyx +326 -0
  81. sage/calculus/ode.cpython-314-x86_64-linux-musl.so +0 -0
  82. sage/calculus/ode.pxd +5 -0
  83. sage/calculus/ode.pyx +610 -0
  84. sage/calculus/riemann.cpython-314-x86_64-linux-musl.so +0 -0
  85. sage/calculus/riemann.pyx +1521 -0
  86. sage/calculus/test_sympy.py +201 -0
  87. sage/calculus/transforms/all.py +7 -0
  88. sage/calculus/transforms/dft.py +844 -0
  89. sage/calculus/transforms/dwt.cpython-314-x86_64-linux-musl.so +0 -0
  90. sage/calculus/transforms/dwt.pxd +7 -0
  91. sage/calculus/transforms/dwt.pyx +160 -0
  92. sage/calculus/transforms/fft.cpython-314-x86_64-linux-musl.so +0 -0
  93. sage/calculus/transforms/fft.pxd +12 -0
  94. sage/calculus/transforms/fft.pyx +487 -0
  95. sage/calculus/wester.py +662 -0
  96. sage/coding/abstract_code.py +1108 -0
  97. sage/coding/ag_code.py +868 -0
  98. sage/coding/ag_code_decoders.cpython-314-x86_64-linux-musl.so +0 -0
  99. sage/coding/ag_code_decoders.pyx +2639 -0
  100. sage/coding/all.py +15 -0
  101. sage/coding/bch_code.py +494 -0
  102. sage/coding/binary_code.cpython-314-x86_64-linux-musl.so +0 -0
  103. sage/coding/binary_code.pxd +124 -0
  104. sage/coding/binary_code.pyx +4139 -0
  105. sage/coding/bounds_catalog.py +43 -0
  106. sage/coding/channel.py +819 -0
  107. sage/coding/channels_catalog.py +29 -0
  108. sage/coding/code_bounds.py +755 -0
  109. sage/coding/code_constructions.py +804 -0
  110. sage/coding/codes_catalog.py +111 -0
  111. sage/coding/cyclic_code.py +1329 -0
  112. sage/coding/databases.py +316 -0
  113. sage/coding/decoder.py +373 -0
  114. sage/coding/decoders_catalog.py +88 -0
  115. sage/coding/delsarte_bounds.py +709 -0
  116. sage/coding/encoder.py +390 -0
  117. sage/coding/encoders_catalog.py +64 -0
  118. sage/coding/extended_code.py +468 -0
  119. sage/coding/gabidulin_code.py +1058 -0
  120. sage/coding/golay_code.py +404 -0
  121. sage/coding/goppa_code.py +441 -0
  122. sage/coding/grs_code.py +2371 -0
  123. sage/coding/guava.py +107 -0
  124. sage/coding/guruswami_sudan/all.py +1 -0
  125. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  126. sage/coding/guruswami_sudan/interpolation.py +409 -0
  127. sage/coding/guruswami_sudan/utils.py +176 -0
  128. sage/coding/hamming_code.py +176 -0
  129. sage/coding/information_set_decoder.py +1032 -0
  130. sage/coding/kasami_codes.cpython-314-x86_64-linux-musl.so +0 -0
  131. sage/coding/kasami_codes.pyx +351 -0
  132. sage/coding/linear_code.py +3067 -0
  133. sage/coding/linear_code_no_metric.py +1354 -0
  134. sage/coding/linear_rank_metric.py +961 -0
  135. sage/coding/parity_check_code.py +353 -0
  136. sage/coding/punctured_code.py +719 -0
  137. sage/coding/reed_muller_code.py +999 -0
  138. sage/coding/self_dual_codes.py +942 -0
  139. sage/coding/source_coding/all.py +2 -0
  140. sage/coding/source_coding/huffman.py +553 -0
  141. sage/coding/subfield_subcode.py +423 -0
  142. sage/coding/two_weight_db.py +399 -0
  143. sage/combinat/all__sagemath_modules.py +7 -0
  144. sage/combinat/cartesian_product.py +347 -0
  145. sage/combinat/family.py +11 -0
  146. sage/combinat/free_module.py +1977 -0
  147. sage/combinat/root_system/all.py +147 -0
  148. sage/combinat/root_system/ambient_space.py +527 -0
  149. sage/combinat/root_system/associahedron.py +471 -0
  150. sage/combinat/root_system/braid_move_calculator.py +143 -0
  151. sage/combinat/root_system/braid_orbit.cpython-314-x86_64-linux-musl.so +0 -0
  152. sage/combinat/root_system/braid_orbit.pyx +144 -0
  153. sage/combinat/root_system/branching_rules.py +2301 -0
  154. sage/combinat/root_system/cartan_matrix.py +1245 -0
  155. sage/combinat/root_system/cartan_type.py +3069 -0
  156. sage/combinat/root_system/coxeter_group.py +162 -0
  157. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  158. sage/combinat/root_system/coxeter_type.py +681 -0
  159. sage/combinat/root_system/dynkin_diagram.py +900 -0
  160. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  161. sage/combinat/root_system/fundamental_group.py +795 -0
  162. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  163. sage/combinat/root_system/integrable_representations.py +1227 -0
  164. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  165. sage/combinat/root_system/pieri_factors.py +1147 -0
  166. sage/combinat/root_system/plot.py +1615 -0
  167. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  168. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  169. sage/combinat/root_system/root_space.py +487 -0
  170. sage/combinat/root_system/root_system.py +882 -0
  171. sage/combinat/root_system/type_A.py +348 -0
  172. sage/combinat/root_system/type_A_affine.py +227 -0
  173. sage/combinat/root_system/type_A_infinity.py +241 -0
  174. sage/combinat/root_system/type_B.py +347 -0
  175. sage/combinat/root_system/type_BC_affine.py +287 -0
  176. sage/combinat/root_system/type_B_affine.py +216 -0
  177. sage/combinat/root_system/type_C.py +317 -0
  178. sage/combinat/root_system/type_C_affine.py +188 -0
  179. sage/combinat/root_system/type_D.py +357 -0
  180. sage/combinat/root_system/type_D_affine.py +208 -0
  181. sage/combinat/root_system/type_E.py +641 -0
  182. sage/combinat/root_system/type_E_affine.py +231 -0
  183. sage/combinat/root_system/type_F.py +387 -0
  184. sage/combinat/root_system/type_F_affine.py +137 -0
  185. sage/combinat/root_system/type_G.py +293 -0
  186. sage/combinat/root_system/type_G_affine.py +132 -0
  187. sage/combinat/root_system/type_H.py +105 -0
  188. sage/combinat/root_system/type_I.py +110 -0
  189. sage/combinat/root_system/type_Q.py +150 -0
  190. sage/combinat/root_system/type_affine.py +509 -0
  191. sage/combinat/root_system/type_dual.py +704 -0
  192. sage/combinat/root_system/type_folded.py +301 -0
  193. sage/combinat/root_system/type_marked.py +748 -0
  194. sage/combinat/root_system/type_reducible.py +601 -0
  195. sage/combinat/root_system/type_relabel.py +730 -0
  196. sage/combinat/root_system/type_super_A.py +837 -0
  197. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  198. sage/combinat/root_system/weight_space.py +639 -0
  199. sage/combinat/root_system/weyl_characters.py +2238 -0
  200. sage/crypto/__init__.py +4 -0
  201. sage/crypto/all.py +28 -0
  202. sage/crypto/block_cipher/all.py +7 -0
  203. sage/crypto/block_cipher/des.py +1065 -0
  204. sage/crypto/block_cipher/miniaes.py +2171 -0
  205. sage/crypto/block_cipher/present.py +909 -0
  206. sage/crypto/block_cipher/sdes.py +1527 -0
  207. sage/crypto/boolean_function.cpython-314-x86_64-linux-musl.so +0 -0
  208. sage/crypto/boolean_function.pxd +10 -0
  209. sage/crypto/boolean_function.pyx +1487 -0
  210. sage/crypto/cipher.py +78 -0
  211. sage/crypto/classical.py +3668 -0
  212. sage/crypto/classical_cipher.py +569 -0
  213. sage/crypto/cryptosystem.py +387 -0
  214. sage/crypto/key_exchange/all.py +7 -0
  215. sage/crypto/key_exchange/catalog.py +24 -0
  216. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  217. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  218. sage/crypto/lattice.py +312 -0
  219. sage/crypto/lfsr.py +295 -0
  220. sage/crypto/lwe.py +840 -0
  221. sage/crypto/mq/__init__.py +4 -0
  222. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  223. sage/crypto/mq/rijndael_gf.py +2345 -0
  224. sage/crypto/mq/sbox.py +7 -0
  225. sage/crypto/mq/sr.py +3344 -0
  226. sage/crypto/public_key/all.py +5 -0
  227. sage/crypto/public_key/blum_goldwasser.py +776 -0
  228. sage/crypto/sbox.cpython-314-x86_64-linux-musl.so +0 -0
  229. sage/crypto/sbox.pyx +2090 -0
  230. sage/crypto/sboxes.py +2090 -0
  231. sage/crypto/stream.py +390 -0
  232. sage/crypto/stream_cipher.py +297 -0
  233. sage/crypto/util.py +519 -0
  234. sage/ext/all__sagemath_modules.py +1 -0
  235. sage/ext/interpreters/__init__.py +1 -0
  236. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  237. sage/ext/interpreters/wrapper_cc.cpython-314-x86_64-linux-musl.so +0 -0
  238. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  239. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  240. sage/ext/interpreters/wrapper_cdf.cpython-314-x86_64-linux-musl.so +0 -0
  241. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  242. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  243. sage/ext/interpreters/wrapper_rdf.cpython-314-x86_64-linux-musl.so +0 -0
  244. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  245. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  246. sage/ext/interpreters/wrapper_rr.cpython-314-x86_64-linux-musl.so +0 -0
  247. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  248. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  249. sage/geometry/all__sagemath_modules.py +5 -0
  250. sage/geometry/toric_lattice.py +1745 -0
  251. sage/geometry/toric_lattice_element.cpython-314-x86_64-linux-musl.so +0 -0
  252. sage/geometry/toric_lattice_element.pyx +432 -0
  253. sage/groups/abelian_gps/abelian_group.py +1925 -0
  254. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  255. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  256. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  257. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  258. sage/groups/abelian_gps/element_base.py +341 -0
  259. sage/groups/abelian_gps/values.py +488 -0
  260. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  261. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  262. sage/groups/additive_abelian/all.py +4 -0
  263. sage/groups/additive_abelian/qmodnz.py +231 -0
  264. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  265. sage/groups/affine_gps/affine_group.py +535 -0
  266. sage/groups/affine_gps/all.py +1 -0
  267. sage/groups/affine_gps/catalog.py +17 -0
  268. sage/groups/affine_gps/euclidean_group.py +246 -0
  269. sage/groups/affine_gps/group_element.py +562 -0
  270. sage/groups/all__sagemath_modules.py +12 -0
  271. sage/groups/galois_group.py +479 -0
  272. sage/groups/matrix_gps/all.py +4 -0
  273. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  274. sage/groups/matrix_gps/catalog.py +26 -0
  275. sage/groups/matrix_gps/coxeter_group.py +927 -0
  276. sage/groups/matrix_gps/finitely_generated.py +487 -0
  277. sage/groups/matrix_gps/group_element.cpython-314-x86_64-linux-musl.so +0 -0
  278. sage/groups/matrix_gps/group_element.pxd +11 -0
  279. sage/groups/matrix_gps/group_element.pyx +431 -0
  280. sage/groups/matrix_gps/linear.py +440 -0
  281. sage/groups/matrix_gps/matrix_group.py +617 -0
  282. sage/groups/matrix_gps/named_group.py +296 -0
  283. sage/groups/matrix_gps/orthogonal.py +544 -0
  284. sage/groups/matrix_gps/symplectic.py +251 -0
  285. sage/groups/matrix_gps/unitary.py +436 -0
  286. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  287. sage/groups/misc_gps/argument_groups.py +1905 -0
  288. sage/groups/misc_gps/imaginary_groups.py +479 -0
  289. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  290. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-x86_64-linux-musl.so +0 -0
  292. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  293. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-x86_64-linux-musl.so +0 -0
  295. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  296. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  297. sage/homology/algebraic_topological_model.py +595 -0
  298. sage/homology/all.py +2 -0
  299. sage/homology/all__sagemath_modules.py +8 -0
  300. sage/homology/chain_complex.py +2148 -0
  301. sage/homology/chain_complex_homspace.py +165 -0
  302. sage/homology/chain_complex_morphism.py +629 -0
  303. sage/homology/chain_homotopy.py +604 -0
  304. sage/homology/chains.py +653 -0
  305. sage/homology/free_resolution.py +923 -0
  306. sage/homology/graded_resolution.py +567 -0
  307. sage/homology/hochschild_complex.py +756 -0
  308. sage/homology/homology_group.py +188 -0
  309. sage/homology/homology_morphism.py +422 -0
  310. sage/homology/homology_vector_space_with_basis.py +1454 -0
  311. sage/homology/koszul_complex.py +169 -0
  312. sage/homology/matrix_utils.py +205 -0
  313. sage/libs/all__sagemath_modules.py +1 -0
  314. sage/libs/gsl/__init__.py +1 -0
  315. sage/libs/gsl/airy.pxd +56 -0
  316. sage/libs/gsl/all.pxd +66 -0
  317. sage/libs/gsl/array.cpython-314-x86_64-linux-musl.so +0 -0
  318. sage/libs/gsl/array.pxd +5 -0
  319. sage/libs/gsl/array.pyx +102 -0
  320. sage/libs/gsl/bessel.pxd +208 -0
  321. sage/libs/gsl/blas.pxd +116 -0
  322. sage/libs/gsl/blas_types.pxd +34 -0
  323. sage/libs/gsl/block.pxd +52 -0
  324. sage/libs/gsl/chebyshev.pxd +37 -0
  325. sage/libs/gsl/clausen.pxd +12 -0
  326. sage/libs/gsl/combination.pxd +47 -0
  327. sage/libs/gsl/complex.pxd +151 -0
  328. sage/libs/gsl/coulomb.pxd +30 -0
  329. sage/libs/gsl/coupling.pxd +21 -0
  330. sage/libs/gsl/dawson.pxd +12 -0
  331. sage/libs/gsl/debye.pxd +24 -0
  332. sage/libs/gsl/dilog.pxd +14 -0
  333. sage/libs/gsl/eigen.pxd +46 -0
  334. sage/libs/gsl/elementary.pxd +12 -0
  335. sage/libs/gsl/ellint.pxd +48 -0
  336. sage/libs/gsl/elljac.pxd +8 -0
  337. sage/libs/gsl/erf.pxd +32 -0
  338. sage/libs/gsl/errno.pxd +26 -0
  339. sage/libs/gsl/exp.pxd +44 -0
  340. sage/libs/gsl/expint.pxd +44 -0
  341. sage/libs/gsl/fermi_dirac.pxd +44 -0
  342. sage/libs/gsl/fft.pxd +121 -0
  343. sage/libs/gsl/fit.pxd +50 -0
  344. sage/libs/gsl/gamma.pxd +94 -0
  345. sage/libs/gsl/gegenbauer.pxd +26 -0
  346. sage/libs/gsl/histogram.pxd +176 -0
  347. sage/libs/gsl/hyperg.pxd +52 -0
  348. sage/libs/gsl/integration.pxd +69 -0
  349. sage/libs/gsl/interp.pxd +109 -0
  350. sage/libs/gsl/laguerre.pxd +24 -0
  351. sage/libs/gsl/lambert.pxd +16 -0
  352. sage/libs/gsl/legendre.pxd +90 -0
  353. sage/libs/gsl/linalg.pxd +185 -0
  354. sage/libs/gsl/log.pxd +26 -0
  355. sage/libs/gsl/math.pxd +43 -0
  356. sage/libs/gsl/matrix.pxd +143 -0
  357. sage/libs/gsl/matrix_complex.pxd +130 -0
  358. sage/libs/gsl/min.pxd +67 -0
  359. sage/libs/gsl/monte.pxd +56 -0
  360. sage/libs/gsl/ntuple.pxd +32 -0
  361. sage/libs/gsl/odeiv.pxd +70 -0
  362. sage/libs/gsl/permutation.pxd +78 -0
  363. sage/libs/gsl/poly.pxd +40 -0
  364. sage/libs/gsl/pow_int.pxd +12 -0
  365. sage/libs/gsl/psi.pxd +28 -0
  366. sage/libs/gsl/qrng.pxd +29 -0
  367. sage/libs/gsl/random.pxd +257 -0
  368. sage/libs/gsl/rng.pxd +100 -0
  369. sage/libs/gsl/roots.pxd +72 -0
  370. sage/libs/gsl/sort.pxd +36 -0
  371. sage/libs/gsl/statistics.pxd +59 -0
  372. sage/libs/gsl/sum.pxd +55 -0
  373. sage/libs/gsl/synchrotron.pxd +16 -0
  374. sage/libs/gsl/transport.pxd +24 -0
  375. sage/libs/gsl/trig.pxd +58 -0
  376. sage/libs/gsl/types.pxd +137 -0
  377. sage/libs/gsl/vector.pxd +101 -0
  378. sage/libs/gsl/vector_complex.pxd +83 -0
  379. sage/libs/gsl/wavelet.pxd +49 -0
  380. sage/libs/gsl/zeta.pxd +28 -0
  381. sage/libs/mpc/__init__.pxd +114 -0
  382. sage/libs/mpc/types.pxd +28 -0
  383. sage/libs/mpfr/__init__.pxd +299 -0
  384. sage/libs/mpfr/types.pxd +26 -0
  385. sage/libs/mpmath/__init__.py +1 -0
  386. sage/libs/mpmath/all.py +27 -0
  387. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  388. sage/libs/mpmath/utils.cpython-314-x86_64-linux-musl.so +0 -0
  389. sage/libs/mpmath/utils.pxd +4 -0
  390. sage/libs/mpmath/utils.pyx +319 -0
  391. sage/matrix/action.cpython-314-x86_64-linux-musl.so +0 -0
  392. sage/matrix/action.pxd +26 -0
  393. sage/matrix/action.pyx +596 -0
  394. sage/matrix/all.py +9 -0
  395. sage/matrix/args.cpython-314-x86_64-linux-musl.so +0 -0
  396. sage/matrix/args.pxd +144 -0
  397. sage/matrix/args.pyx +1668 -0
  398. sage/matrix/benchmark.py +1258 -0
  399. sage/matrix/berlekamp_massey.py +95 -0
  400. sage/matrix/compute_J_ideal.py +926 -0
  401. sage/matrix/constructor.cpython-314-x86_64-linux-musl.so +0 -0
  402. sage/matrix/constructor.pyx +750 -0
  403. sage/matrix/docs.py +430 -0
  404. sage/matrix/echelon_matrix.cpython-314-x86_64-linux-musl.so +0 -0
  405. sage/matrix/echelon_matrix.pyx +155 -0
  406. sage/matrix/matrix.pxd +2 -0
  407. sage/matrix/matrix0.cpython-314-x86_64-linux-musl.so +0 -0
  408. sage/matrix/matrix0.pxd +68 -0
  409. sage/matrix/matrix0.pyx +6324 -0
  410. sage/matrix/matrix1.cpython-314-x86_64-linux-musl.so +0 -0
  411. sage/matrix/matrix1.pxd +8 -0
  412. sage/matrix/matrix1.pyx +2851 -0
  413. sage/matrix/matrix2.cpython-314-x86_64-linux-musl.so +0 -0
  414. sage/matrix/matrix2.pxd +25 -0
  415. sage/matrix/matrix2.pyx +20181 -0
  416. sage/matrix/matrix_cdv.cpython-314-x86_64-linux-musl.so +0 -0
  417. sage/matrix/matrix_cdv.pxd +4 -0
  418. sage/matrix/matrix_cdv.pyx +93 -0
  419. sage/matrix/matrix_complex_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  420. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  421. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  422. sage/matrix/matrix_dense.cpython-314-x86_64-linux-musl.so +0 -0
  423. sage/matrix/matrix_dense.pxd +5 -0
  424. sage/matrix/matrix_dense.pyx +343 -0
  425. sage/matrix/matrix_domain_dense.pxd +5 -0
  426. sage/matrix/matrix_domain_sparse.pxd +5 -0
  427. sage/matrix/matrix_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  428. sage/matrix/matrix_double_dense.pxd +7 -0
  429. sage/matrix/matrix_double_dense.pyx +3906 -0
  430. sage/matrix/matrix_double_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  431. sage/matrix/matrix_double_sparse.pxd +6 -0
  432. sage/matrix/matrix_double_sparse.pyx +248 -0
  433. sage/matrix/matrix_generic_dense.cpython-314-x86_64-linux-musl.so +0 -0
  434. sage/matrix/matrix_generic_dense.pxd +7 -0
  435. sage/matrix/matrix_generic_dense.pyx +354 -0
  436. sage/matrix/matrix_generic_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  437. sage/matrix/matrix_generic_sparse.pxd +7 -0
  438. sage/matrix/matrix_generic_sparse.pyx +461 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  440. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  441. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  442. sage/matrix/matrix_misc.py +313 -0
  443. sage/matrix/matrix_numpy_dense.cpython-314-x86_64-linux-musl.so +0 -0
  444. sage/matrix/matrix_numpy_dense.pxd +14 -0
  445. sage/matrix/matrix_numpy_dense.pyx +450 -0
  446. sage/matrix/matrix_numpy_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  447. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  448. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  449. sage/matrix/matrix_polynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  450. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  451. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  452. sage/matrix/matrix_real_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  453. sage/matrix/matrix_real_double_dense.pxd +7 -0
  454. sage/matrix/matrix_real_double_dense.pyx +122 -0
  455. sage/matrix/matrix_space.py +2848 -0
  456. sage/matrix/matrix_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  457. sage/matrix/matrix_sparse.pxd +5 -0
  458. sage/matrix/matrix_sparse.pyx +1222 -0
  459. sage/matrix/matrix_window.cpython-314-x86_64-linux-musl.so +0 -0
  460. sage/matrix/matrix_window.pxd +37 -0
  461. sage/matrix/matrix_window.pyx +242 -0
  462. sage/matrix/misc_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  463. sage/matrix/misc_mpfr.pyx +80 -0
  464. sage/matrix/operation_table.py +1182 -0
  465. sage/matrix/special.py +3666 -0
  466. sage/matrix/strassen.cpython-314-x86_64-linux-musl.so +0 -0
  467. sage/matrix/strassen.pyx +851 -0
  468. sage/matrix/symplectic_basis.py +541 -0
  469. sage/matrix/template.pxd +6 -0
  470. sage/matrix/tests.py +71 -0
  471. sage/matroids/advanced.py +77 -0
  472. sage/matroids/all.py +13 -0
  473. sage/matroids/basis_exchange_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  474. sage/matroids/basis_exchange_matroid.pxd +96 -0
  475. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  476. sage/matroids/basis_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  477. sage/matroids/basis_matroid.pxd +45 -0
  478. sage/matroids/basis_matroid.pyx +1217 -0
  479. sage/matroids/catalog.py +44 -0
  480. sage/matroids/chow_ring.py +473 -0
  481. sage/matroids/chow_ring_ideal.py +849 -0
  482. sage/matroids/circuit_closures_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  483. sage/matroids/circuit_closures_matroid.pxd +16 -0
  484. sage/matroids/circuit_closures_matroid.pyx +559 -0
  485. sage/matroids/circuits_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  486. sage/matroids/circuits_matroid.pxd +38 -0
  487. sage/matroids/circuits_matroid.pyx +947 -0
  488. sage/matroids/constructor.py +1086 -0
  489. sage/matroids/database_collections.py +365 -0
  490. sage/matroids/database_matroids.py +5338 -0
  491. sage/matroids/dual_matroid.py +583 -0
  492. sage/matroids/extension.cpython-314-x86_64-linux-musl.so +0 -0
  493. sage/matroids/extension.pxd +34 -0
  494. sage/matroids/extension.pyx +519 -0
  495. sage/matroids/flats_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  496. sage/matroids/flats_matroid.pxd +28 -0
  497. sage/matroids/flats_matroid.pyx +715 -0
  498. sage/matroids/gammoid.py +600 -0
  499. sage/matroids/graphic_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  500. sage/matroids/graphic_matroid.pxd +39 -0
  501. sage/matroids/graphic_matroid.pyx +2024 -0
  502. sage/matroids/lean_matrix.cpython-314-x86_64-linux-musl.so +0 -0
  503. sage/matroids/lean_matrix.pxd +126 -0
  504. sage/matroids/lean_matrix.pyx +3667 -0
  505. sage/matroids/linear_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  506. sage/matroids/linear_matroid.pxd +180 -0
  507. sage/matroids/linear_matroid.pyx +6649 -0
  508. sage/matroids/matroid.cpython-314-x86_64-linux-musl.so +0 -0
  509. sage/matroids/matroid.pxd +243 -0
  510. sage/matroids/matroid.pyx +8759 -0
  511. sage/matroids/matroids_catalog.py +190 -0
  512. sage/matroids/matroids_plot_helpers.py +890 -0
  513. sage/matroids/minor_matroid.py +480 -0
  514. sage/matroids/minorfix.h +9 -0
  515. sage/matroids/named_matroids.py +5 -0
  516. sage/matroids/rank_matroid.py +268 -0
  517. sage/matroids/set_system.cpython-314-x86_64-linux-musl.so +0 -0
  518. sage/matroids/set_system.pxd +38 -0
  519. sage/matroids/set_system.pyx +800 -0
  520. sage/matroids/transversal_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  521. sage/matroids/transversal_matroid.pxd +14 -0
  522. sage/matroids/transversal_matroid.pyx +893 -0
  523. sage/matroids/union_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  524. sage/matroids/union_matroid.pxd +20 -0
  525. sage/matroids/union_matroid.pyx +331 -0
  526. sage/matroids/unpickling.cpython-314-x86_64-linux-musl.so +0 -0
  527. sage/matroids/unpickling.pyx +843 -0
  528. sage/matroids/utilities.py +809 -0
  529. sage/misc/all__sagemath_modules.py +20 -0
  530. sage/misc/c3.cpython-314-x86_64-linux-musl.so +0 -0
  531. sage/misc/c3.pyx +238 -0
  532. sage/misc/compat.py +87 -0
  533. sage/misc/element_with_label.py +173 -0
  534. sage/misc/func_persist.py +79 -0
  535. sage/misc/pickle_old.cpython-314-x86_64-linux-musl.so +0 -0
  536. sage/misc/pickle_old.pyx +19 -0
  537. sage/misc/proof.py +7 -0
  538. sage/misc/replace_dot_all.py +472 -0
  539. sage/misc/sagedoc_conf.py +168 -0
  540. sage/misc/sphinxify.py +167 -0
  541. sage/misc/test_class_pickling.py +85 -0
  542. sage/modules/all.py +42 -0
  543. sage/modules/complex_double_vector.py +25 -0
  544. sage/modules/diamond_cutting.py +380 -0
  545. sage/modules/fg_pid/all.py +1 -0
  546. sage/modules/fg_pid/fgp_element.py +456 -0
  547. sage/modules/fg_pid/fgp_module.py +2091 -0
  548. sage/modules/fg_pid/fgp_morphism.py +550 -0
  549. sage/modules/filtered_vector_space.py +1271 -0
  550. sage/modules/finite_submodule_iter.cpython-314-x86_64-linux-musl.so +0 -0
  551. sage/modules/finite_submodule_iter.pxd +27 -0
  552. sage/modules/finite_submodule_iter.pyx +452 -0
  553. sage/modules/fp_graded/all.py +1 -0
  554. sage/modules/fp_graded/element.py +346 -0
  555. sage/modules/fp_graded/free_element.py +298 -0
  556. sage/modules/fp_graded/free_homspace.py +53 -0
  557. sage/modules/fp_graded/free_module.py +1060 -0
  558. sage/modules/fp_graded/free_morphism.py +217 -0
  559. sage/modules/fp_graded/homspace.py +563 -0
  560. sage/modules/fp_graded/module.py +1340 -0
  561. sage/modules/fp_graded/morphism.py +1990 -0
  562. sage/modules/fp_graded/steenrod/all.py +1 -0
  563. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  564. sage/modules/fp_graded/steenrod/module.py +477 -0
  565. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  566. sage/modules/fp_graded/steenrod/profile.py +241 -0
  567. sage/modules/free_module.py +8447 -0
  568. sage/modules/free_module_element.cpython-314-x86_64-linux-musl.so +0 -0
  569. sage/modules/free_module_element.pxd +22 -0
  570. sage/modules/free_module_element.pyx +5445 -0
  571. sage/modules/free_module_homspace.py +369 -0
  572. sage/modules/free_module_integer.py +896 -0
  573. sage/modules/free_module_morphism.py +823 -0
  574. sage/modules/free_module_pseudohomspace.py +352 -0
  575. sage/modules/free_module_pseudomorphism.py +578 -0
  576. sage/modules/free_quadratic_module.py +1706 -0
  577. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  578. sage/modules/matrix_morphism.py +1745 -0
  579. sage/modules/misc.py +103 -0
  580. sage/modules/module_functors.py +192 -0
  581. sage/modules/multi_filtered_vector_space.py +719 -0
  582. sage/modules/ore_module.py +2208 -0
  583. sage/modules/ore_module_element.py +178 -0
  584. sage/modules/ore_module_homspace.py +147 -0
  585. sage/modules/ore_module_morphism.py +968 -0
  586. sage/modules/quotient_module.py +699 -0
  587. sage/modules/real_double_vector.py +22 -0
  588. sage/modules/submodule.py +255 -0
  589. sage/modules/tensor_operations.py +567 -0
  590. sage/modules/torsion_quadratic_module.py +1352 -0
  591. sage/modules/tutorial_free_modules.py +248 -0
  592. sage/modules/vector_complex_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  593. sage/modules/vector_complex_double_dense.pxd +6 -0
  594. sage/modules/vector_complex_double_dense.pyx +117 -0
  595. sage/modules/vector_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  596. sage/modules/vector_double_dense.pxd +6 -0
  597. sage/modules/vector_double_dense.pyx +604 -0
  598. sage/modules/vector_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  599. sage/modules/vector_integer_dense.pxd +15 -0
  600. sage/modules/vector_integer_dense.pyx +361 -0
  601. sage/modules/vector_integer_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  602. sage/modules/vector_integer_sparse.pxd +29 -0
  603. sage/modules/vector_integer_sparse.pyx +406 -0
  604. sage/modules/vector_modn_dense.cpython-314-x86_64-linux-musl.so +0 -0
  605. sage/modules/vector_modn_dense.pxd +12 -0
  606. sage/modules/vector_modn_dense.pyx +394 -0
  607. sage/modules/vector_modn_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  608. sage/modules/vector_modn_sparse.pxd +21 -0
  609. sage/modules/vector_modn_sparse.pyx +298 -0
  610. sage/modules/vector_numpy_dense.cpython-314-x86_64-linux-musl.so +0 -0
  611. sage/modules/vector_numpy_dense.pxd +15 -0
  612. sage/modules/vector_numpy_dense.pyx +304 -0
  613. sage/modules/vector_numpy_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  614. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  615. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  616. sage/modules/vector_rational_dense.cpython-314-x86_64-linux-musl.so +0 -0
  617. sage/modules/vector_rational_dense.pxd +15 -0
  618. sage/modules/vector_rational_dense.pyx +387 -0
  619. sage/modules/vector_rational_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  620. sage/modules/vector_rational_sparse.pxd +30 -0
  621. sage/modules/vector_rational_sparse.pyx +413 -0
  622. sage/modules/vector_real_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  623. sage/modules/vector_real_double_dense.pxd +6 -0
  624. sage/modules/vector_real_double_dense.pyx +126 -0
  625. sage/modules/vector_space_homspace.py +430 -0
  626. sage/modules/vector_space_morphism.py +989 -0
  627. sage/modules/with_basis/all.py +15 -0
  628. sage/modules/with_basis/cell_module.py +494 -0
  629. sage/modules/with_basis/indexed_element.cpython-314-x86_64-linux-musl.so +0 -0
  630. sage/modules/with_basis/indexed_element.pxd +13 -0
  631. sage/modules/with_basis/indexed_element.pyx +1058 -0
  632. sage/modules/with_basis/invariant.py +1075 -0
  633. sage/modules/with_basis/morphism.py +1636 -0
  634. sage/modules/with_basis/representation.py +2939 -0
  635. sage/modules/with_basis/subquotient.py +685 -0
  636. sage/numerical/all__sagemath_modules.py +6 -0
  637. sage/numerical/gauss_legendre.cpython-314-x86_64-linux-musl.so +0 -0
  638. sage/numerical/gauss_legendre.pyx +381 -0
  639. sage/numerical/optimize.py +910 -0
  640. sage/probability/all.py +10 -0
  641. sage/probability/probability_distribution.cpython-314-x86_64-linux-musl.so +0 -0
  642. sage/probability/probability_distribution.pyx +1242 -0
  643. sage/probability/random_variable.py +411 -0
  644. sage/quadratic_forms/all.py +4 -0
  645. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  646. sage/quadratic_forms/binary_qf.py +2042 -0
  647. sage/quadratic_forms/bqf_class_group.py +748 -0
  648. sage/quadratic_forms/constructions.py +93 -0
  649. sage/quadratic_forms/count_local_2.cpython-314-x86_64-linux-musl.so +0 -0
  650. sage/quadratic_forms/count_local_2.pyx +365 -0
  651. sage/quadratic_forms/extras.py +195 -0
  652. sage/quadratic_forms/quadratic_form.py +1753 -0
  653. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  654. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  655. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-x86_64-linux-musl.so +0 -0
  656. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  657. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  658. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  659. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  660. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  661. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  662. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  663. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  664. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  665. sage/quadratic_forms/random_quadraticform.py +209 -0
  666. sage/quadratic_forms/ternary.cpython-314-x86_64-linux-musl.so +0 -0
  667. sage/quadratic_forms/ternary.pyx +1154 -0
  668. sage/quadratic_forms/ternary_qf.py +2027 -0
  669. sage/rings/all__sagemath_modules.py +28 -0
  670. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  671. sage/rings/asymptotic/misc.py +1252 -0
  672. sage/rings/cc.py +4 -0
  673. sage/rings/cfinite_sequence.py +1306 -0
  674. sage/rings/complex_conversion.cpython-314-x86_64-linux-musl.so +0 -0
  675. sage/rings/complex_conversion.pxd +8 -0
  676. sage/rings/complex_conversion.pyx +23 -0
  677. sage/rings/complex_double.cpython-314-x86_64-linux-musl.so +0 -0
  678. sage/rings/complex_double.pxd +21 -0
  679. sage/rings/complex_double.pyx +2654 -0
  680. sage/rings/complex_mpc.cpython-314-x86_64-linux-musl.so +0 -0
  681. sage/rings/complex_mpc.pxd +21 -0
  682. sage/rings/complex_mpc.pyx +2576 -0
  683. sage/rings/complex_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  684. sage/rings/complex_mpfr.pxd +18 -0
  685. sage/rings/complex_mpfr.pyx +3602 -0
  686. sage/rings/derivation.py +2334 -0
  687. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  688. sage/rings/finite_rings/maps_finite_field.py +191 -0
  689. sage/rings/function_field/all__sagemath_modules.py +8 -0
  690. sage/rings/function_field/derivations.py +102 -0
  691. sage/rings/function_field/derivations_rational.py +132 -0
  692. sage/rings/function_field/differential.py +853 -0
  693. sage/rings/function_field/divisor.py +1107 -0
  694. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  695. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  696. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  697. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  698. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  699. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  700. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  701. sage/rings/function_field/hermite_form_polynomial.cpython-314-x86_64-linux-musl.so +0 -0
  702. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  703. sage/rings/function_field/khuri_makdisi.cpython-314-x86_64-linux-musl.so +0 -0
  704. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  705. sage/rings/invariants/all.py +4 -0
  706. sage/rings/invariants/invariant_theory.py +4597 -0
  707. sage/rings/invariants/reconstruction.py +395 -0
  708. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  709. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-x86_64-linux-musl.so +0 -0
  711. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  712. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  713. sage/rings/polynomial/ore_function_element.py +952 -0
  714. sage/rings/polynomial/ore_function_field.py +1028 -0
  715. sage/rings/polynomial/ore_polynomial_element.cpython-314-x86_64-linux-musl.so +0 -0
  716. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  717. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  718. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  719. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-x86_64-linux-musl.so +0 -0
  720. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  721. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  722. sage/rings/polynomial/skew_polynomial_element.cpython-314-x86_64-linux-musl.so +0 -0
  723. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  724. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-x86_64-linux-musl.so +0 -0
  726. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  727. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-x86_64-linux-musl.so +0 -0
  729. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  730. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  731. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  732. sage/rings/real_double_element_gsl.cpython-314-x86_64-linux-musl.so +0 -0
  733. sage/rings/real_double_element_gsl.pxd +8 -0
  734. sage/rings/real_double_element_gsl.pyx +794 -0
  735. sage/rings/real_field.py +58 -0
  736. sage/rings/real_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  737. sage/rings/real_mpfr.pxd +29 -0
  738. sage/rings/real_mpfr.pyx +6122 -0
  739. sage/rings/ring_extension.cpython-314-x86_64-linux-musl.so +0 -0
  740. sage/rings/ring_extension.pxd +42 -0
  741. sage/rings/ring_extension.pyx +2779 -0
  742. sage/rings/ring_extension_conversion.cpython-314-x86_64-linux-musl.so +0 -0
  743. sage/rings/ring_extension_conversion.pxd +16 -0
  744. sage/rings/ring_extension_conversion.pyx +462 -0
  745. sage/rings/ring_extension_element.cpython-314-x86_64-linux-musl.so +0 -0
  746. sage/rings/ring_extension_element.pxd +21 -0
  747. sage/rings/ring_extension_element.pyx +1635 -0
  748. sage/rings/ring_extension_homset.py +64 -0
  749. sage/rings/ring_extension_morphism.cpython-314-x86_64-linux-musl.so +0 -0
  750. sage/rings/ring_extension_morphism.pxd +35 -0
  751. sage/rings/ring_extension_morphism.pyx +920 -0
  752. sage/schemes/all__sagemath_modules.py +1 -0
  753. sage/schemes/projective/all__sagemath_modules.py +1 -0
  754. sage/schemes/projective/coherent_sheaf.py +300 -0
  755. sage/schemes/projective/cohomology.py +510 -0
  756. sage/stats/all.py +15 -0
  757. sage/stats/basic_stats.py +489 -0
  758. sage/stats/distributions/all.py +7 -0
  759. sage/stats/distributions/catalog.py +34 -0
  760. sage/stats/distributions/dgs.h +50 -0
  761. sage/stats/distributions/dgs.pxd +111 -0
  762. sage/stats/distributions/dgs_bern.h +400 -0
  763. sage/stats/distributions/dgs_gauss.h +614 -0
  764. sage/stats/distributions/dgs_misc.h +104 -0
  765. sage/stats/distributions/discrete_gaussian_integer.cpython-314-x86_64-linux-musl.so +0 -0
  766. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  767. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  768. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  769. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  770. sage/stats/hmm/all.py +15 -0
  771. sage/stats/hmm/chmm.cpython-314-x86_64-linux-musl.so +0 -0
  772. sage/stats/hmm/chmm.pyx +1595 -0
  773. sage/stats/hmm/distributions.cpython-314-x86_64-linux-musl.so +0 -0
  774. sage/stats/hmm/distributions.pxd +29 -0
  775. sage/stats/hmm/distributions.pyx +531 -0
  776. sage/stats/hmm/hmm.cpython-314-x86_64-linux-musl.so +0 -0
  777. sage/stats/hmm/hmm.pxd +17 -0
  778. sage/stats/hmm/hmm.pyx +1388 -0
  779. sage/stats/hmm/util.cpython-314-x86_64-linux-musl.so +0 -0
  780. sage/stats/hmm/util.pxd +7 -0
  781. sage/stats/hmm/util.pyx +165 -0
  782. sage/stats/intlist.cpython-314-x86_64-linux-musl.so +0 -0
  783. sage/stats/intlist.pxd +14 -0
  784. sage/stats/intlist.pyx +588 -0
  785. sage/stats/r.py +49 -0
  786. sage/stats/time_series.cpython-314-x86_64-linux-musl.so +0 -0
  787. sage/stats/time_series.pxd +6 -0
  788. sage/stats/time_series.pyx +2546 -0
  789. sage/tensor/all.py +2 -0
  790. sage/tensor/modules/all.py +8 -0
  791. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  792. sage/tensor/modules/comp.py +5598 -0
  793. sage/tensor/modules/ext_pow_free_module.py +824 -0
  794. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  795. sage/tensor/modules/format_utilities.py +333 -0
  796. sage/tensor/modules/free_module_alt_form.py +858 -0
  797. sage/tensor/modules/free_module_automorphism.py +1207 -0
  798. sage/tensor/modules/free_module_basis.py +1074 -0
  799. sage/tensor/modules/free_module_element.py +284 -0
  800. sage/tensor/modules/free_module_homset.py +652 -0
  801. sage/tensor/modules/free_module_linear_group.py +564 -0
  802. sage/tensor/modules/free_module_morphism.py +1581 -0
  803. sage/tensor/modules/free_module_tensor.py +3289 -0
  804. sage/tensor/modules/reflexive_module.py +386 -0
  805. sage/tensor/modules/tensor_free_module.py +780 -0
  806. sage/tensor/modules/tensor_free_submodule.py +538 -0
  807. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  808. 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