passagemath-modules 10.6.31rc3__cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of passagemath-modules might be problematic. Click here for more details.

Files changed (806) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +806 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +6 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgfortran-e1b7dfc8.so.5.0.0 +0 -0
  6. passagemath_modules.libs/libgmp-93ebf16a.so.10.5.0 +0 -0
  7. passagemath_modules.libs/libgsl-e3525837.so.28.0.0 +0 -0
  8. passagemath_modules.libs/libmpc-c5c421e1.so.3.3.1 +0 -0
  9. passagemath_modules.libs/libmpfr-e0f11cf3.so.6.2.1 +0 -0
  10. passagemath_modules.libs/libopenblasp-r0-4c5b64b1.3.29.so +0 -0
  11. sage/algebras/all__sagemath_modules.py +20 -0
  12. sage/algebras/catalog.py +148 -0
  13. sage/algebras/clifford_algebra.py +3107 -0
  14. sage/algebras/clifford_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  15. sage/algebras/clifford_algebra_element.pxd +16 -0
  16. sage/algebras/clifford_algebra_element.pyx +997 -0
  17. sage/algebras/commutative_dga.py +4252 -0
  18. sage/algebras/exterior_algebra_groebner.cpython-314-aarch64-linux-gnu.so +0 -0
  19. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  20. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  21. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  22. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  23. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  28. sage/algebras/finite_gca.py +528 -0
  29. sage/algebras/group_algebra.py +232 -0
  30. sage/algebras/lie_algebras/abelian.py +197 -0
  31. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  32. sage/algebras/lie_algebras/all.py +25 -0
  33. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  34. sage/algebras/lie_algebras/bch.py +177 -0
  35. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  36. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  37. sage/algebras/lie_algebras/center_uea.py +767 -0
  38. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  39. sage/algebras/lie_algebras/examples.py +683 -0
  40. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  41. sage/algebras/lie_algebras/heisenberg.py +820 -0
  42. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  43. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-aarch64-linux-gnu.so +0 -0
  44. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  46. sage/algebras/lie_algebras/morphism.py +661 -0
  47. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  48. sage/algebras/lie_algebras/onsager.py +1324 -0
  49. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  50. sage/algebras/lie_algebras/quotient.py +462 -0
  51. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  52. sage/algebras/lie_algebras/representation.py +1040 -0
  53. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  54. sage/algebras/lie_algebras/subalgebra.py +967 -0
  55. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  56. sage/algebras/lie_algebras/verma_module.py +1630 -0
  57. sage/algebras/lie_algebras/virasoro.py +1186 -0
  58. sage/algebras/octonion_algebra.cpython-314-aarch64-linux-gnu.so +0 -0
  59. sage/algebras/octonion_algebra.pxd +20 -0
  60. sage/algebras/octonion_algebra.pyx +987 -0
  61. sage/algebras/orlik_solomon.py +907 -0
  62. sage/algebras/orlik_terao.py +779 -0
  63. sage/algebras/steenrod/all.py +7 -0
  64. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  65. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  66. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  67. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  68. sage/algebras/weyl_algebra.py +1126 -0
  69. sage/all__sagemath_modules.py +62 -0
  70. sage/calculus/all__sagemath_modules.py +19 -0
  71. sage/calculus/expr.py +205 -0
  72. sage/calculus/integration.cpython-314-aarch64-linux-gnu.so +0 -0
  73. sage/calculus/integration.pyx +698 -0
  74. sage/calculus/interpolation.cpython-314-aarch64-linux-gnu.so +0 -0
  75. sage/calculus/interpolation.pxd +13 -0
  76. sage/calculus/interpolation.pyx +387 -0
  77. sage/calculus/interpolators.cpython-314-aarch64-linux-gnu.so +0 -0
  78. sage/calculus/interpolators.pyx +326 -0
  79. sage/calculus/ode.cpython-314-aarch64-linux-gnu.so +0 -0
  80. sage/calculus/ode.pxd +5 -0
  81. sage/calculus/ode.pyx +610 -0
  82. sage/calculus/riemann.cpython-314-aarch64-linux-gnu.so +0 -0
  83. sage/calculus/riemann.pyx +1521 -0
  84. sage/calculus/test_sympy.py +201 -0
  85. sage/calculus/transforms/all.py +7 -0
  86. sage/calculus/transforms/dft.py +844 -0
  87. sage/calculus/transforms/dwt.cpython-314-aarch64-linux-gnu.so +0 -0
  88. sage/calculus/transforms/dwt.pxd +7 -0
  89. sage/calculus/transforms/dwt.pyx +160 -0
  90. sage/calculus/transforms/fft.cpython-314-aarch64-linux-gnu.so +0 -0
  91. sage/calculus/transforms/fft.pxd +12 -0
  92. sage/calculus/transforms/fft.pyx +487 -0
  93. sage/calculus/wester.py +662 -0
  94. sage/coding/abstract_code.py +1108 -0
  95. sage/coding/ag_code.py +868 -0
  96. sage/coding/ag_code_decoders.cpython-314-aarch64-linux-gnu.so +0 -0
  97. sage/coding/ag_code_decoders.pyx +2639 -0
  98. sage/coding/all.py +15 -0
  99. sage/coding/bch_code.py +494 -0
  100. sage/coding/binary_code.cpython-314-aarch64-linux-gnu.so +0 -0
  101. sage/coding/binary_code.pxd +124 -0
  102. sage/coding/binary_code.pyx +4139 -0
  103. sage/coding/bounds_catalog.py +43 -0
  104. sage/coding/channel.py +819 -0
  105. sage/coding/channels_catalog.py +29 -0
  106. sage/coding/code_bounds.py +755 -0
  107. sage/coding/code_constructions.py +804 -0
  108. sage/coding/codes_catalog.py +111 -0
  109. sage/coding/cyclic_code.py +1329 -0
  110. sage/coding/databases.py +316 -0
  111. sage/coding/decoder.py +373 -0
  112. sage/coding/decoders_catalog.py +88 -0
  113. sage/coding/delsarte_bounds.py +709 -0
  114. sage/coding/encoder.py +390 -0
  115. sage/coding/encoders_catalog.py +64 -0
  116. sage/coding/extended_code.py +468 -0
  117. sage/coding/gabidulin_code.py +1058 -0
  118. sage/coding/golay_code.py +404 -0
  119. sage/coding/goppa_code.py +441 -0
  120. sage/coding/grs_code.py +2371 -0
  121. sage/coding/guava.py +107 -0
  122. sage/coding/guruswami_sudan/all.py +1 -0
  123. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  124. sage/coding/guruswami_sudan/interpolation.py +409 -0
  125. sage/coding/guruswami_sudan/utils.py +176 -0
  126. sage/coding/hamming_code.py +176 -0
  127. sage/coding/information_set_decoder.py +1032 -0
  128. sage/coding/kasami_codes.cpython-314-aarch64-linux-gnu.so +0 -0
  129. sage/coding/kasami_codes.pyx +351 -0
  130. sage/coding/linear_code.py +3067 -0
  131. sage/coding/linear_code_no_metric.py +1354 -0
  132. sage/coding/linear_rank_metric.py +961 -0
  133. sage/coding/parity_check_code.py +353 -0
  134. sage/coding/punctured_code.py +719 -0
  135. sage/coding/reed_muller_code.py +999 -0
  136. sage/coding/self_dual_codes.py +942 -0
  137. sage/coding/source_coding/all.py +2 -0
  138. sage/coding/source_coding/huffman.py +553 -0
  139. sage/coding/subfield_subcode.py +423 -0
  140. sage/coding/two_weight_db.py +399 -0
  141. sage/combinat/all__sagemath_modules.py +7 -0
  142. sage/combinat/cartesian_product.py +347 -0
  143. sage/combinat/family.py +11 -0
  144. sage/combinat/free_module.py +1977 -0
  145. sage/combinat/root_system/all.py +147 -0
  146. sage/combinat/root_system/ambient_space.py +527 -0
  147. sage/combinat/root_system/associahedron.py +471 -0
  148. sage/combinat/root_system/braid_move_calculator.py +143 -0
  149. sage/combinat/root_system/braid_orbit.cpython-314-aarch64-linux-gnu.so +0 -0
  150. sage/combinat/root_system/braid_orbit.pyx +144 -0
  151. sage/combinat/root_system/branching_rules.py +2301 -0
  152. sage/combinat/root_system/cartan_matrix.py +1245 -0
  153. sage/combinat/root_system/cartan_type.py +3069 -0
  154. sage/combinat/root_system/coxeter_group.py +162 -0
  155. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  156. sage/combinat/root_system/coxeter_type.py +681 -0
  157. sage/combinat/root_system/dynkin_diagram.py +900 -0
  158. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  159. sage/combinat/root_system/fundamental_group.py +795 -0
  160. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  161. sage/combinat/root_system/integrable_representations.py +1227 -0
  162. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  163. sage/combinat/root_system/pieri_factors.py +1147 -0
  164. sage/combinat/root_system/plot.py +1615 -0
  165. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  166. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  167. sage/combinat/root_system/root_space.py +487 -0
  168. sage/combinat/root_system/root_system.py +882 -0
  169. sage/combinat/root_system/type_A.py +348 -0
  170. sage/combinat/root_system/type_A_affine.py +227 -0
  171. sage/combinat/root_system/type_A_infinity.py +241 -0
  172. sage/combinat/root_system/type_B.py +347 -0
  173. sage/combinat/root_system/type_BC_affine.py +287 -0
  174. sage/combinat/root_system/type_B_affine.py +216 -0
  175. sage/combinat/root_system/type_C.py +317 -0
  176. sage/combinat/root_system/type_C_affine.py +188 -0
  177. sage/combinat/root_system/type_D.py +357 -0
  178. sage/combinat/root_system/type_D_affine.py +208 -0
  179. sage/combinat/root_system/type_E.py +641 -0
  180. sage/combinat/root_system/type_E_affine.py +231 -0
  181. sage/combinat/root_system/type_F.py +387 -0
  182. sage/combinat/root_system/type_F_affine.py +137 -0
  183. sage/combinat/root_system/type_G.py +293 -0
  184. sage/combinat/root_system/type_G_affine.py +132 -0
  185. sage/combinat/root_system/type_H.py +105 -0
  186. sage/combinat/root_system/type_I.py +110 -0
  187. sage/combinat/root_system/type_Q.py +150 -0
  188. sage/combinat/root_system/type_affine.py +509 -0
  189. sage/combinat/root_system/type_dual.py +704 -0
  190. sage/combinat/root_system/type_folded.py +301 -0
  191. sage/combinat/root_system/type_marked.py +748 -0
  192. sage/combinat/root_system/type_reducible.py +601 -0
  193. sage/combinat/root_system/type_relabel.py +730 -0
  194. sage/combinat/root_system/type_super_A.py +837 -0
  195. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  196. sage/combinat/root_system/weight_space.py +639 -0
  197. sage/combinat/root_system/weyl_characters.py +2238 -0
  198. sage/crypto/__init__.py +4 -0
  199. sage/crypto/all.py +28 -0
  200. sage/crypto/block_cipher/all.py +7 -0
  201. sage/crypto/block_cipher/des.py +1065 -0
  202. sage/crypto/block_cipher/miniaes.py +2171 -0
  203. sage/crypto/block_cipher/present.py +909 -0
  204. sage/crypto/block_cipher/sdes.py +1527 -0
  205. sage/crypto/boolean_function.cpython-314-aarch64-linux-gnu.so +0 -0
  206. sage/crypto/boolean_function.pxd +10 -0
  207. sage/crypto/boolean_function.pyx +1487 -0
  208. sage/crypto/cipher.py +78 -0
  209. sage/crypto/classical.py +3668 -0
  210. sage/crypto/classical_cipher.py +569 -0
  211. sage/crypto/cryptosystem.py +387 -0
  212. sage/crypto/key_exchange/all.py +7 -0
  213. sage/crypto/key_exchange/catalog.py +24 -0
  214. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  215. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  216. sage/crypto/lattice.py +312 -0
  217. sage/crypto/lfsr.py +295 -0
  218. sage/crypto/lwe.py +840 -0
  219. sage/crypto/mq/__init__.py +4 -0
  220. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  221. sage/crypto/mq/rijndael_gf.py +2345 -0
  222. sage/crypto/mq/sbox.py +7 -0
  223. sage/crypto/mq/sr.py +3344 -0
  224. sage/crypto/public_key/all.py +5 -0
  225. sage/crypto/public_key/blum_goldwasser.py +776 -0
  226. sage/crypto/sbox.cpython-314-aarch64-linux-gnu.so +0 -0
  227. sage/crypto/sbox.pyx +2090 -0
  228. sage/crypto/sboxes.py +2090 -0
  229. sage/crypto/stream.py +390 -0
  230. sage/crypto/stream_cipher.py +297 -0
  231. sage/crypto/util.py +519 -0
  232. sage/ext/all__sagemath_modules.py +1 -0
  233. sage/ext/interpreters/__init__.py +1 -0
  234. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  235. sage/ext/interpreters/wrapper_cc.cpython-314-aarch64-linux-gnu.so +0 -0
  236. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  237. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  238. sage/ext/interpreters/wrapper_cdf.cpython-314-aarch64-linux-gnu.so +0 -0
  239. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  240. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  241. sage/ext/interpreters/wrapper_rdf.cpython-314-aarch64-linux-gnu.so +0 -0
  242. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  243. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  244. sage/ext/interpreters/wrapper_rr.cpython-314-aarch64-linux-gnu.so +0 -0
  245. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  246. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  247. sage/geometry/all__sagemath_modules.py +5 -0
  248. sage/geometry/toric_lattice.py +1745 -0
  249. sage/geometry/toric_lattice_element.cpython-314-aarch64-linux-gnu.so +0 -0
  250. sage/geometry/toric_lattice_element.pyx +432 -0
  251. sage/groups/abelian_gps/abelian_group.py +1925 -0
  252. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  253. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  254. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  255. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  256. sage/groups/abelian_gps/element_base.py +341 -0
  257. sage/groups/abelian_gps/values.py +488 -0
  258. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  259. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  260. sage/groups/additive_abelian/all.py +4 -0
  261. sage/groups/additive_abelian/qmodnz.py +231 -0
  262. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  263. sage/groups/affine_gps/affine_group.py +535 -0
  264. sage/groups/affine_gps/all.py +1 -0
  265. sage/groups/affine_gps/catalog.py +17 -0
  266. sage/groups/affine_gps/euclidean_group.py +246 -0
  267. sage/groups/affine_gps/group_element.py +562 -0
  268. sage/groups/all__sagemath_modules.py +12 -0
  269. sage/groups/galois_group.py +479 -0
  270. sage/groups/matrix_gps/all.py +4 -0
  271. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  272. sage/groups/matrix_gps/catalog.py +26 -0
  273. sage/groups/matrix_gps/coxeter_group.py +927 -0
  274. sage/groups/matrix_gps/finitely_generated.py +487 -0
  275. sage/groups/matrix_gps/group_element.cpython-314-aarch64-linux-gnu.so +0 -0
  276. sage/groups/matrix_gps/group_element.pxd +11 -0
  277. sage/groups/matrix_gps/group_element.pyx +431 -0
  278. sage/groups/matrix_gps/linear.py +440 -0
  279. sage/groups/matrix_gps/matrix_group.py +617 -0
  280. sage/groups/matrix_gps/named_group.py +296 -0
  281. sage/groups/matrix_gps/orthogonal.py +544 -0
  282. sage/groups/matrix_gps/symplectic.py +251 -0
  283. sage/groups/matrix_gps/unitary.py +436 -0
  284. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  285. sage/groups/misc_gps/argument_groups.py +1905 -0
  286. sage/groups/misc_gps/imaginary_groups.py +479 -0
  287. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  288. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  289. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-aarch64-linux-gnu.so +0 -0
  290. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  292. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-aarch64-linux-gnu.so +0 -0
  293. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  295. sage/homology/algebraic_topological_model.py +595 -0
  296. sage/homology/all.py +2 -0
  297. sage/homology/all__sagemath_modules.py +8 -0
  298. sage/homology/chain_complex.py +2148 -0
  299. sage/homology/chain_complex_homspace.py +165 -0
  300. sage/homology/chain_complex_morphism.py +629 -0
  301. sage/homology/chain_homotopy.py +604 -0
  302. sage/homology/chains.py +653 -0
  303. sage/homology/free_resolution.py +923 -0
  304. sage/homology/graded_resolution.py +567 -0
  305. sage/homology/hochschild_complex.py +756 -0
  306. sage/homology/homology_group.py +188 -0
  307. sage/homology/homology_morphism.py +422 -0
  308. sage/homology/homology_vector_space_with_basis.py +1454 -0
  309. sage/homology/koszul_complex.py +169 -0
  310. sage/homology/matrix_utils.py +205 -0
  311. sage/libs/all__sagemath_modules.py +1 -0
  312. sage/libs/gsl/__init__.py +1 -0
  313. sage/libs/gsl/airy.pxd +56 -0
  314. sage/libs/gsl/all.pxd +66 -0
  315. sage/libs/gsl/array.cpython-314-aarch64-linux-gnu.so +0 -0
  316. sage/libs/gsl/array.pxd +5 -0
  317. sage/libs/gsl/array.pyx +102 -0
  318. sage/libs/gsl/bessel.pxd +208 -0
  319. sage/libs/gsl/blas.pxd +116 -0
  320. sage/libs/gsl/blas_types.pxd +34 -0
  321. sage/libs/gsl/block.pxd +52 -0
  322. sage/libs/gsl/chebyshev.pxd +37 -0
  323. sage/libs/gsl/clausen.pxd +12 -0
  324. sage/libs/gsl/combination.pxd +47 -0
  325. sage/libs/gsl/complex.pxd +151 -0
  326. sage/libs/gsl/coulomb.pxd +30 -0
  327. sage/libs/gsl/coupling.pxd +21 -0
  328. sage/libs/gsl/dawson.pxd +12 -0
  329. sage/libs/gsl/debye.pxd +24 -0
  330. sage/libs/gsl/dilog.pxd +14 -0
  331. sage/libs/gsl/eigen.pxd +46 -0
  332. sage/libs/gsl/elementary.pxd +12 -0
  333. sage/libs/gsl/ellint.pxd +48 -0
  334. sage/libs/gsl/elljac.pxd +8 -0
  335. sage/libs/gsl/erf.pxd +32 -0
  336. sage/libs/gsl/errno.pxd +26 -0
  337. sage/libs/gsl/exp.pxd +44 -0
  338. sage/libs/gsl/expint.pxd +44 -0
  339. sage/libs/gsl/fermi_dirac.pxd +44 -0
  340. sage/libs/gsl/fft.pxd +121 -0
  341. sage/libs/gsl/fit.pxd +50 -0
  342. sage/libs/gsl/gamma.pxd +94 -0
  343. sage/libs/gsl/gegenbauer.pxd +26 -0
  344. sage/libs/gsl/histogram.pxd +176 -0
  345. sage/libs/gsl/hyperg.pxd +52 -0
  346. sage/libs/gsl/integration.pxd +69 -0
  347. sage/libs/gsl/interp.pxd +109 -0
  348. sage/libs/gsl/laguerre.pxd +24 -0
  349. sage/libs/gsl/lambert.pxd +16 -0
  350. sage/libs/gsl/legendre.pxd +90 -0
  351. sage/libs/gsl/linalg.pxd +185 -0
  352. sage/libs/gsl/log.pxd +26 -0
  353. sage/libs/gsl/math.pxd +43 -0
  354. sage/libs/gsl/matrix.pxd +143 -0
  355. sage/libs/gsl/matrix_complex.pxd +130 -0
  356. sage/libs/gsl/min.pxd +67 -0
  357. sage/libs/gsl/monte.pxd +56 -0
  358. sage/libs/gsl/ntuple.pxd +32 -0
  359. sage/libs/gsl/odeiv.pxd +70 -0
  360. sage/libs/gsl/permutation.pxd +78 -0
  361. sage/libs/gsl/poly.pxd +40 -0
  362. sage/libs/gsl/pow_int.pxd +12 -0
  363. sage/libs/gsl/psi.pxd +28 -0
  364. sage/libs/gsl/qrng.pxd +29 -0
  365. sage/libs/gsl/random.pxd +257 -0
  366. sage/libs/gsl/rng.pxd +100 -0
  367. sage/libs/gsl/roots.pxd +72 -0
  368. sage/libs/gsl/sort.pxd +36 -0
  369. sage/libs/gsl/statistics.pxd +59 -0
  370. sage/libs/gsl/sum.pxd +55 -0
  371. sage/libs/gsl/synchrotron.pxd +16 -0
  372. sage/libs/gsl/transport.pxd +24 -0
  373. sage/libs/gsl/trig.pxd +58 -0
  374. sage/libs/gsl/types.pxd +137 -0
  375. sage/libs/gsl/vector.pxd +101 -0
  376. sage/libs/gsl/vector_complex.pxd +83 -0
  377. sage/libs/gsl/wavelet.pxd +49 -0
  378. sage/libs/gsl/zeta.pxd +28 -0
  379. sage/libs/mpc/__init__.pxd +114 -0
  380. sage/libs/mpc/types.pxd +28 -0
  381. sage/libs/mpfr/__init__.pxd +299 -0
  382. sage/libs/mpfr/types.pxd +26 -0
  383. sage/libs/mpmath/__init__.py +1 -0
  384. sage/libs/mpmath/all.py +27 -0
  385. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  386. sage/libs/mpmath/utils.cpython-314-aarch64-linux-gnu.so +0 -0
  387. sage/libs/mpmath/utils.pxd +4 -0
  388. sage/libs/mpmath/utils.pyx +319 -0
  389. sage/matrix/action.cpython-314-aarch64-linux-gnu.so +0 -0
  390. sage/matrix/action.pxd +26 -0
  391. sage/matrix/action.pyx +596 -0
  392. sage/matrix/all.py +9 -0
  393. sage/matrix/args.cpython-314-aarch64-linux-gnu.so +0 -0
  394. sage/matrix/args.pxd +144 -0
  395. sage/matrix/args.pyx +1668 -0
  396. sage/matrix/benchmark.py +1258 -0
  397. sage/matrix/berlekamp_massey.py +95 -0
  398. sage/matrix/compute_J_ideal.py +926 -0
  399. sage/matrix/constructor.cpython-314-aarch64-linux-gnu.so +0 -0
  400. sage/matrix/constructor.pyx +750 -0
  401. sage/matrix/docs.py +430 -0
  402. sage/matrix/echelon_matrix.cpython-314-aarch64-linux-gnu.so +0 -0
  403. sage/matrix/echelon_matrix.pyx +155 -0
  404. sage/matrix/matrix.pxd +2 -0
  405. sage/matrix/matrix0.cpython-314-aarch64-linux-gnu.so +0 -0
  406. sage/matrix/matrix0.pxd +68 -0
  407. sage/matrix/matrix0.pyx +6324 -0
  408. sage/matrix/matrix1.cpython-314-aarch64-linux-gnu.so +0 -0
  409. sage/matrix/matrix1.pxd +8 -0
  410. sage/matrix/matrix1.pyx +2851 -0
  411. sage/matrix/matrix2.cpython-314-aarch64-linux-gnu.so +0 -0
  412. sage/matrix/matrix2.pxd +25 -0
  413. sage/matrix/matrix2.pyx +20181 -0
  414. sage/matrix/matrix_cdv.cpython-314-aarch64-linux-gnu.so +0 -0
  415. sage/matrix/matrix_cdv.pxd +4 -0
  416. sage/matrix/matrix_cdv.pyx +93 -0
  417. sage/matrix/matrix_complex_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  418. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  419. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  420. sage/matrix/matrix_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  421. sage/matrix/matrix_dense.pxd +5 -0
  422. sage/matrix/matrix_dense.pyx +343 -0
  423. sage/matrix/matrix_domain_dense.pxd +5 -0
  424. sage/matrix/matrix_domain_sparse.pxd +5 -0
  425. sage/matrix/matrix_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  426. sage/matrix/matrix_double_dense.pxd +7 -0
  427. sage/matrix/matrix_double_dense.pyx +3906 -0
  428. sage/matrix/matrix_double_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  429. sage/matrix/matrix_double_sparse.pxd +6 -0
  430. sage/matrix/matrix_double_sparse.pyx +248 -0
  431. sage/matrix/matrix_generic_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  432. sage/matrix/matrix_generic_dense.pxd +7 -0
  433. sage/matrix/matrix_generic_dense.pyx +354 -0
  434. sage/matrix/matrix_generic_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  435. sage/matrix/matrix_generic_sparse.pxd +7 -0
  436. sage/matrix/matrix_generic_sparse.pyx +461 -0
  437. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  438. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  440. sage/matrix/matrix_misc.py +313 -0
  441. sage/matrix/matrix_numpy_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  442. sage/matrix/matrix_numpy_dense.pxd +14 -0
  443. sage/matrix/matrix_numpy_dense.pyx +450 -0
  444. sage/matrix/matrix_numpy_integer_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  445. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  446. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  447. sage/matrix/matrix_polynomial_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  448. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  449. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  450. sage/matrix/matrix_real_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  451. sage/matrix/matrix_real_double_dense.pxd +7 -0
  452. sage/matrix/matrix_real_double_dense.pyx +122 -0
  453. sage/matrix/matrix_space.py +2848 -0
  454. sage/matrix/matrix_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  455. sage/matrix/matrix_sparse.pxd +5 -0
  456. sage/matrix/matrix_sparse.pyx +1222 -0
  457. sage/matrix/matrix_window.cpython-314-aarch64-linux-gnu.so +0 -0
  458. sage/matrix/matrix_window.pxd +37 -0
  459. sage/matrix/matrix_window.pyx +242 -0
  460. sage/matrix/misc_mpfr.cpython-314-aarch64-linux-gnu.so +0 -0
  461. sage/matrix/misc_mpfr.pyx +80 -0
  462. sage/matrix/operation_table.py +1182 -0
  463. sage/matrix/special.py +3666 -0
  464. sage/matrix/strassen.cpython-314-aarch64-linux-gnu.so +0 -0
  465. sage/matrix/strassen.pyx +851 -0
  466. sage/matrix/symplectic_basis.py +541 -0
  467. sage/matrix/template.pxd +6 -0
  468. sage/matrix/tests.py +71 -0
  469. sage/matroids/advanced.py +77 -0
  470. sage/matroids/all.py +13 -0
  471. sage/matroids/basis_exchange_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  472. sage/matroids/basis_exchange_matroid.pxd +96 -0
  473. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  474. sage/matroids/basis_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  475. sage/matroids/basis_matroid.pxd +45 -0
  476. sage/matroids/basis_matroid.pyx +1217 -0
  477. sage/matroids/catalog.py +44 -0
  478. sage/matroids/chow_ring.py +473 -0
  479. sage/matroids/chow_ring_ideal.py +849 -0
  480. sage/matroids/circuit_closures_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  481. sage/matroids/circuit_closures_matroid.pxd +16 -0
  482. sage/matroids/circuit_closures_matroid.pyx +559 -0
  483. sage/matroids/circuits_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  484. sage/matroids/circuits_matroid.pxd +38 -0
  485. sage/matroids/circuits_matroid.pyx +947 -0
  486. sage/matroids/constructor.py +1086 -0
  487. sage/matroids/database_collections.py +365 -0
  488. sage/matroids/database_matroids.py +5338 -0
  489. sage/matroids/dual_matroid.py +583 -0
  490. sage/matroids/extension.cpython-314-aarch64-linux-gnu.so +0 -0
  491. sage/matroids/extension.pxd +34 -0
  492. sage/matroids/extension.pyx +519 -0
  493. sage/matroids/flats_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  494. sage/matroids/flats_matroid.pxd +28 -0
  495. sage/matroids/flats_matroid.pyx +715 -0
  496. sage/matroids/gammoid.py +600 -0
  497. sage/matroids/graphic_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  498. sage/matroids/graphic_matroid.pxd +39 -0
  499. sage/matroids/graphic_matroid.pyx +2024 -0
  500. sage/matroids/lean_matrix.cpython-314-aarch64-linux-gnu.so +0 -0
  501. sage/matroids/lean_matrix.pxd +126 -0
  502. sage/matroids/lean_matrix.pyx +3667 -0
  503. sage/matroids/linear_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  504. sage/matroids/linear_matroid.pxd +180 -0
  505. sage/matroids/linear_matroid.pyx +6649 -0
  506. sage/matroids/matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  507. sage/matroids/matroid.pxd +243 -0
  508. sage/matroids/matroid.pyx +8759 -0
  509. sage/matroids/matroids_catalog.py +190 -0
  510. sage/matroids/matroids_plot_helpers.py +890 -0
  511. sage/matroids/minor_matroid.py +480 -0
  512. sage/matroids/minorfix.h +9 -0
  513. sage/matroids/named_matroids.py +5 -0
  514. sage/matroids/rank_matroid.py +268 -0
  515. sage/matroids/set_system.cpython-314-aarch64-linux-gnu.so +0 -0
  516. sage/matroids/set_system.pxd +38 -0
  517. sage/matroids/set_system.pyx +800 -0
  518. sage/matroids/transversal_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  519. sage/matroids/transversal_matroid.pxd +14 -0
  520. sage/matroids/transversal_matroid.pyx +893 -0
  521. sage/matroids/union_matroid.cpython-314-aarch64-linux-gnu.so +0 -0
  522. sage/matroids/union_matroid.pxd +20 -0
  523. sage/matroids/union_matroid.pyx +331 -0
  524. sage/matroids/unpickling.cpython-314-aarch64-linux-gnu.so +0 -0
  525. sage/matroids/unpickling.pyx +843 -0
  526. sage/matroids/utilities.py +809 -0
  527. sage/misc/all__sagemath_modules.py +20 -0
  528. sage/misc/c3.cpython-314-aarch64-linux-gnu.so +0 -0
  529. sage/misc/c3.pyx +238 -0
  530. sage/misc/compat.py +87 -0
  531. sage/misc/element_with_label.py +173 -0
  532. sage/misc/func_persist.py +79 -0
  533. sage/misc/pickle_old.cpython-314-aarch64-linux-gnu.so +0 -0
  534. sage/misc/pickle_old.pyx +19 -0
  535. sage/misc/proof.py +7 -0
  536. sage/misc/replace_dot_all.py +472 -0
  537. sage/misc/sagedoc_conf.py +168 -0
  538. sage/misc/sphinxify.py +167 -0
  539. sage/misc/test_class_pickling.py +85 -0
  540. sage/modules/all.py +42 -0
  541. sage/modules/complex_double_vector.py +25 -0
  542. sage/modules/diamond_cutting.py +380 -0
  543. sage/modules/fg_pid/all.py +1 -0
  544. sage/modules/fg_pid/fgp_element.py +456 -0
  545. sage/modules/fg_pid/fgp_module.py +2091 -0
  546. sage/modules/fg_pid/fgp_morphism.py +550 -0
  547. sage/modules/filtered_vector_space.py +1271 -0
  548. sage/modules/finite_submodule_iter.cpython-314-aarch64-linux-gnu.so +0 -0
  549. sage/modules/finite_submodule_iter.pxd +27 -0
  550. sage/modules/finite_submodule_iter.pyx +452 -0
  551. sage/modules/fp_graded/all.py +1 -0
  552. sage/modules/fp_graded/element.py +346 -0
  553. sage/modules/fp_graded/free_element.py +298 -0
  554. sage/modules/fp_graded/free_homspace.py +53 -0
  555. sage/modules/fp_graded/free_module.py +1060 -0
  556. sage/modules/fp_graded/free_morphism.py +217 -0
  557. sage/modules/fp_graded/homspace.py +563 -0
  558. sage/modules/fp_graded/module.py +1340 -0
  559. sage/modules/fp_graded/morphism.py +1990 -0
  560. sage/modules/fp_graded/steenrod/all.py +1 -0
  561. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  562. sage/modules/fp_graded/steenrod/module.py +477 -0
  563. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  564. sage/modules/fp_graded/steenrod/profile.py +241 -0
  565. sage/modules/free_module.py +8447 -0
  566. sage/modules/free_module_element.cpython-314-aarch64-linux-gnu.so +0 -0
  567. sage/modules/free_module_element.pxd +22 -0
  568. sage/modules/free_module_element.pyx +5445 -0
  569. sage/modules/free_module_homspace.py +369 -0
  570. sage/modules/free_module_integer.py +896 -0
  571. sage/modules/free_module_morphism.py +823 -0
  572. sage/modules/free_module_pseudohomspace.py +352 -0
  573. sage/modules/free_module_pseudomorphism.py +578 -0
  574. sage/modules/free_quadratic_module.py +1706 -0
  575. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  576. sage/modules/matrix_morphism.py +1745 -0
  577. sage/modules/misc.py +103 -0
  578. sage/modules/module_functors.py +192 -0
  579. sage/modules/multi_filtered_vector_space.py +719 -0
  580. sage/modules/ore_module.py +2208 -0
  581. sage/modules/ore_module_element.py +178 -0
  582. sage/modules/ore_module_homspace.py +147 -0
  583. sage/modules/ore_module_morphism.py +968 -0
  584. sage/modules/quotient_module.py +699 -0
  585. sage/modules/real_double_vector.py +22 -0
  586. sage/modules/submodule.py +255 -0
  587. sage/modules/tensor_operations.py +567 -0
  588. sage/modules/torsion_quadratic_module.py +1352 -0
  589. sage/modules/tutorial_free_modules.py +248 -0
  590. sage/modules/vector_complex_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  591. sage/modules/vector_complex_double_dense.pxd +6 -0
  592. sage/modules/vector_complex_double_dense.pyx +117 -0
  593. sage/modules/vector_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  594. sage/modules/vector_double_dense.pxd +6 -0
  595. sage/modules/vector_double_dense.pyx +604 -0
  596. sage/modules/vector_integer_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  597. sage/modules/vector_integer_dense.pxd +15 -0
  598. sage/modules/vector_integer_dense.pyx +361 -0
  599. sage/modules/vector_integer_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  600. sage/modules/vector_integer_sparse.pxd +29 -0
  601. sage/modules/vector_integer_sparse.pyx +406 -0
  602. sage/modules/vector_modn_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  603. sage/modules/vector_modn_dense.pxd +12 -0
  604. sage/modules/vector_modn_dense.pyx +394 -0
  605. sage/modules/vector_modn_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  606. sage/modules/vector_modn_sparse.pxd +21 -0
  607. sage/modules/vector_modn_sparse.pyx +298 -0
  608. sage/modules/vector_numpy_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  609. sage/modules/vector_numpy_dense.pxd +15 -0
  610. sage/modules/vector_numpy_dense.pyx +304 -0
  611. sage/modules/vector_numpy_integer_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  612. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  613. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  614. sage/modules/vector_rational_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  615. sage/modules/vector_rational_dense.pxd +15 -0
  616. sage/modules/vector_rational_dense.pyx +387 -0
  617. sage/modules/vector_rational_sparse.cpython-314-aarch64-linux-gnu.so +0 -0
  618. sage/modules/vector_rational_sparse.pxd +30 -0
  619. sage/modules/vector_rational_sparse.pyx +413 -0
  620. sage/modules/vector_real_double_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  621. sage/modules/vector_real_double_dense.pxd +6 -0
  622. sage/modules/vector_real_double_dense.pyx +126 -0
  623. sage/modules/vector_space_homspace.py +430 -0
  624. sage/modules/vector_space_morphism.py +989 -0
  625. sage/modules/with_basis/all.py +15 -0
  626. sage/modules/with_basis/cell_module.py +494 -0
  627. sage/modules/with_basis/indexed_element.cpython-314-aarch64-linux-gnu.so +0 -0
  628. sage/modules/with_basis/indexed_element.pxd +13 -0
  629. sage/modules/with_basis/indexed_element.pyx +1058 -0
  630. sage/modules/with_basis/invariant.py +1075 -0
  631. sage/modules/with_basis/morphism.py +1636 -0
  632. sage/modules/with_basis/representation.py +2939 -0
  633. sage/modules/with_basis/subquotient.py +685 -0
  634. sage/numerical/all__sagemath_modules.py +6 -0
  635. sage/numerical/gauss_legendre.cpython-314-aarch64-linux-gnu.so +0 -0
  636. sage/numerical/gauss_legendre.pyx +381 -0
  637. sage/numerical/optimize.py +910 -0
  638. sage/probability/all.py +10 -0
  639. sage/probability/probability_distribution.cpython-314-aarch64-linux-gnu.so +0 -0
  640. sage/probability/probability_distribution.pyx +1242 -0
  641. sage/probability/random_variable.py +411 -0
  642. sage/quadratic_forms/all.py +4 -0
  643. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  644. sage/quadratic_forms/binary_qf.py +2042 -0
  645. sage/quadratic_forms/bqf_class_group.py +748 -0
  646. sage/quadratic_forms/constructions.py +93 -0
  647. sage/quadratic_forms/count_local_2.cpython-314-aarch64-linux-gnu.so +0 -0
  648. sage/quadratic_forms/count_local_2.pyx +365 -0
  649. sage/quadratic_forms/extras.py +195 -0
  650. sage/quadratic_forms/quadratic_form.py +1753 -0
  651. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  652. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  653. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-aarch64-linux-gnu.so +0 -0
  654. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  655. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  656. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  657. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  658. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  659. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  660. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  661. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  662. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  663. sage/quadratic_forms/random_quadraticform.py +209 -0
  664. sage/quadratic_forms/ternary.cpython-314-aarch64-linux-gnu.so +0 -0
  665. sage/quadratic_forms/ternary.pyx +1154 -0
  666. sage/quadratic_forms/ternary_qf.py +2027 -0
  667. sage/rings/all__sagemath_modules.py +28 -0
  668. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  669. sage/rings/asymptotic/misc.py +1252 -0
  670. sage/rings/cc.py +4 -0
  671. sage/rings/cfinite_sequence.py +1306 -0
  672. sage/rings/complex_conversion.cpython-314-aarch64-linux-gnu.so +0 -0
  673. sage/rings/complex_conversion.pxd +8 -0
  674. sage/rings/complex_conversion.pyx +23 -0
  675. sage/rings/complex_double.cpython-314-aarch64-linux-gnu.so +0 -0
  676. sage/rings/complex_double.pxd +21 -0
  677. sage/rings/complex_double.pyx +2654 -0
  678. sage/rings/complex_mpc.cpython-314-aarch64-linux-gnu.so +0 -0
  679. sage/rings/complex_mpc.pxd +21 -0
  680. sage/rings/complex_mpc.pyx +2576 -0
  681. sage/rings/complex_mpfr.cpython-314-aarch64-linux-gnu.so +0 -0
  682. sage/rings/complex_mpfr.pxd +18 -0
  683. sage/rings/complex_mpfr.pyx +3602 -0
  684. sage/rings/derivation.py +2334 -0
  685. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  686. sage/rings/finite_rings/maps_finite_field.py +191 -0
  687. sage/rings/function_field/all__sagemath_modules.py +8 -0
  688. sage/rings/function_field/derivations.py +102 -0
  689. sage/rings/function_field/derivations_rational.py +132 -0
  690. sage/rings/function_field/differential.py +853 -0
  691. sage/rings/function_field/divisor.py +1107 -0
  692. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  693. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  694. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  695. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  696. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  697. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  698. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  699. sage/rings/function_field/hermite_form_polynomial.cpython-314-aarch64-linux-gnu.so +0 -0
  700. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  701. sage/rings/function_field/khuri_makdisi.cpython-314-aarch64-linux-gnu.so +0 -0
  702. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  703. sage/rings/invariants/all.py +4 -0
  704. sage/rings/invariants/invariant_theory.py +4597 -0
  705. sage/rings/invariants/reconstruction.py +395 -0
  706. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  707. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  708. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-aarch64-linux-gnu.so +0 -0
  709. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  711. sage/rings/polynomial/ore_function_element.py +952 -0
  712. sage/rings/polynomial/ore_function_field.py +1028 -0
  713. sage/rings/polynomial/ore_polynomial_element.cpython-314-aarch64-linux-gnu.so +0 -0
  714. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  715. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  716. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  717. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-aarch64-linux-gnu.so +0 -0
  718. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  719. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  720. sage/rings/polynomial/skew_polynomial_element.cpython-314-aarch64-linux-gnu.so +0 -0
  721. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  722. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  723. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-aarch64-linux-gnu.so +0 -0
  724. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  726. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-aarch64-linux-gnu.so +0 -0
  727. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  729. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  730. sage/rings/real_double_element_gsl.cpython-314-aarch64-linux-gnu.so +0 -0
  731. sage/rings/real_double_element_gsl.pxd +8 -0
  732. sage/rings/real_double_element_gsl.pyx +794 -0
  733. sage/rings/real_field.py +58 -0
  734. sage/rings/real_mpfr.cpython-314-aarch64-linux-gnu.so +0 -0
  735. sage/rings/real_mpfr.pxd +29 -0
  736. sage/rings/real_mpfr.pyx +6122 -0
  737. sage/rings/ring_extension.cpython-314-aarch64-linux-gnu.so +0 -0
  738. sage/rings/ring_extension.pxd +42 -0
  739. sage/rings/ring_extension.pyx +2779 -0
  740. sage/rings/ring_extension_conversion.cpython-314-aarch64-linux-gnu.so +0 -0
  741. sage/rings/ring_extension_conversion.pxd +16 -0
  742. sage/rings/ring_extension_conversion.pyx +462 -0
  743. sage/rings/ring_extension_element.cpython-314-aarch64-linux-gnu.so +0 -0
  744. sage/rings/ring_extension_element.pxd +21 -0
  745. sage/rings/ring_extension_element.pyx +1635 -0
  746. sage/rings/ring_extension_homset.py +64 -0
  747. sage/rings/ring_extension_morphism.cpython-314-aarch64-linux-gnu.so +0 -0
  748. sage/rings/ring_extension_morphism.pxd +35 -0
  749. sage/rings/ring_extension_morphism.pyx +920 -0
  750. sage/schemes/all__sagemath_modules.py +1 -0
  751. sage/schemes/projective/all__sagemath_modules.py +1 -0
  752. sage/schemes/projective/coherent_sheaf.py +300 -0
  753. sage/schemes/projective/cohomology.py +510 -0
  754. sage/stats/all.py +15 -0
  755. sage/stats/basic_stats.py +489 -0
  756. sage/stats/distributions/all.py +7 -0
  757. sage/stats/distributions/catalog.py +34 -0
  758. sage/stats/distributions/dgs.h +50 -0
  759. sage/stats/distributions/dgs.pxd +111 -0
  760. sage/stats/distributions/dgs_bern.h +400 -0
  761. sage/stats/distributions/dgs_gauss.h +614 -0
  762. sage/stats/distributions/dgs_misc.h +104 -0
  763. sage/stats/distributions/discrete_gaussian_integer.cpython-314-aarch64-linux-gnu.so +0 -0
  764. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  765. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  766. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  767. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  768. sage/stats/hmm/all.py +15 -0
  769. sage/stats/hmm/chmm.cpython-314-aarch64-linux-gnu.so +0 -0
  770. sage/stats/hmm/chmm.pyx +1595 -0
  771. sage/stats/hmm/distributions.cpython-314-aarch64-linux-gnu.so +0 -0
  772. sage/stats/hmm/distributions.pxd +29 -0
  773. sage/stats/hmm/distributions.pyx +531 -0
  774. sage/stats/hmm/hmm.cpython-314-aarch64-linux-gnu.so +0 -0
  775. sage/stats/hmm/hmm.pxd +17 -0
  776. sage/stats/hmm/hmm.pyx +1388 -0
  777. sage/stats/hmm/util.cpython-314-aarch64-linux-gnu.so +0 -0
  778. sage/stats/hmm/util.pxd +7 -0
  779. sage/stats/hmm/util.pyx +165 -0
  780. sage/stats/intlist.cpython-314-aarch64-linux-gnu.so +0 -0
  781. sage/stats/intlist.pxd +14 -0
  782. sage/stats/intlist.pyx +588 -0
  783. sage/stats/r.py +49 -0
  784. sage/stats/time_series.cpython-314-aarch64-linux-gnu.so +0 -0
  785. sage/stats/time_series.pxd +6 -0
  786. sage/stats/time_series.pyx +2546 -0
  787. sage/tensor/all.py +2 -0
  788. sage/tensor/modules/all.py +8 -0
  789. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  790. sage/tensor/modules/comp.py +5598 -0
  791. sage/tensor/modules/ext_pow_free_module.py +824 -0
  792. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  793. sage/tensor/modules/format_utilities.py +333 -0
  794. sage/tensor/modules/free_module_alt_form.py +858 -0
  795. sage/tensor/modules/free_module_automorphism.py +1207 -0
  796. sage/tensor/modules/free_module_basis.py +1074 -0
  797. sage/tensor/modules/free_module_element.py +284 -0
  798. sage/tensor/modules/free_module_homset.py +652 -0
  799. sage/tensor/modules/free_module_linear_group.py +564 -0
  800. sage/tensor/modules/free_module_morphism.py +1581 -0
  801. sage/tensor/modules/free_module_tensor.py +3289 -0
  802. sage/tensor/modules/reflexive_module.py +386 -0
  803. sage/tensor/modules/tensor_free_module.py +780 -0
  804. sage/tensor/modules/tensor_free_submodule.py +538 -0
  805. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  806. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,394 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ """
3
+ Vectors with integer mod `n` entries, with small `n`
4
+
5
+ EXAMPLES::
6
+
7
+ sage: v = vector(Integers(8), [1,2,3,4,5])
8
+ sage: type(v)
9
+ <class 'sage.modules.vector_modn_dense.Vector_modn_dense'>
10
+ sage: v
11
+ (1, 2, 3, 4, 5)
12
+ sage: 3*v
13
+ (3, 6, 1, 4, 7)
14
+ sage: v*7
15
+ (7, 6, 5, 4, 3)
16
+ sage: -v
17
+ (7, 6, 5, 4, 3)
18
+ sage: v - v
19
+ (0, 0, 0, 0, 0)
20
+ sage: v + v
21
+ (2, 4, 6, 0, 2)
22
+ sage: v * v
23
+ 7
24
+
25
+ sage: v = vector(Integers(8), [1,2,3,4,5])
26
+ sage: u = vector(Integers(8), [1,2,3,4,4])
27
+ sage: v - u
28
+ (0, 0, 0, 0, 1)
29
+ sage: u - v
30
+ (0, 0, 0, 0, 7)
31
+
32
+ sage: v = vector((Integers(5)(1),2,3,4,4))
33
+ sage: u = vector((Integers(5)(1),2,3,4,3))
34
+ sage: v - u
35
+ (0, 0, 0, 0, 1)
36
+ sage: u - v
37
+ (0, 0, 0, 0, 4)
38
+
39
+ We make a large zero vector::
40
+
41
+ sage: k = Integers(8)^100000; k
42
+ Ambient free module of rank 100000 over Ring of integers modulo 8
43
+ sage: v = k(0)
44
+ sage: v[:10]
45
+ (0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
46
+
47
+ We multiply a vector by a matrix::
48
+
49
+ sage: a = (GF(97)^5)(range(5))
50
+ sage: m = matrix(GF(97), 5, range(25))
51
+ sage: a*m
52
+ (53, 63, 73, 83, 93)
53
+
54
+ TESTS::
55
+
56
+ sage: v = vector(Integers(8), [1,2,3,4,5])
57
+ sage: loads(dumps(v)) == v
58
+ True
59
+ sage: v = vector(Integers(389), [1,2,3,4,5])
60
+ sage: loads(dumps(v)) == v
61
+ True
62
+ sage: v = vector(Integers(next_prime(10^20)), [1,2,3,4,5]) # needs sage.libs.pari
63
+ sage: loads(dumps(v)) == v
64
+ True
65
+
66
+ sage: K = GF(previous_prime(2^31)) # needs sage.rings.finite_rings
67
+ sage: v = vector(K, [42]); type(v[0]) # needs sage.rings.finite_rings
68
+ <class 'sage.rings.finite_rings.integer_mod.IntegerMod_int64'>
69
+ sage: ~v[0] # needs sage.rings.finite_rings
70
+ 2096353084
71
+
72
+ sage: K = GF(next_prime(2^31)) # needs sage.rings.finite_rings
73
+ sage: v = vector(K, [42]); type(v[0]) # needs sage.rings.finite_rings
74
+ <class 'sage.rings.finite_rings.integer_mod.IntegerMod_gmp'>
75
+ sage: ~v[0] # needs sage.rings.finite_rings
76
+ 1482786336
77
+
78
+ sage: w = vector(GF(11), [-1,0,0,0])
79
+ sage: w.set_immutable()
80
+ sage: isinstance(hash(w), int)
81
+ True
82
+
83
+ Test that :issue:`28042` is fixed::
84
+
85
+ sage: # needs sage.rings.finite_rings
86
+ sage: p = 193379
87
+ sage: K = GF(p)
88
+ sage: a = K(1)
89
+ sage: b = K(191495)
90
+ sage: c = K(109320)
91
+ sage: d = K(167667)
92
+ sage: e = 103937
93
+ sage: a*c + b*d - e
94
+ 102041
95
+ sage: vector([a,b]) * vector([c,d]) - e
96
+ 102041
97
+ sage: type(vector([a,b]) * vector([c,d]))
98
+ <class 'sage.rings.finite_rings.integer_mod.IntegerMod_int64'>
99
+
100
+ AUTHOR:
101
+
102
+ - William Stein (2007)
103
+ """
104
+
105
+ # ****************************************************************************
106
+ # Copyright (C) 2007 William Stein <wstein@gmail.com>
107
+ #
108
+ # This program is free software: you can redistribute it and/or modify
109
+ # it under the terms of the GNU General Public License as published by
110
+ # the Free Software Foundation, either version 2 of the License, or
111
+ # (at your option) any later version.
112
+ # https://www.gnu.org/licenses/
113
+ # ****************************************************************************
114
+
115
+ from cysignals.memory cimport check_allocarray, sig_free
116
+ from sage.structure.richcmp cimport rich_to_bool
117
+ from sage.rings.finite_rings.stdint cimport INTEGER_MOD_INT64_LIMIT
118
+
119
+ MAX_MODULUS = INTEGER_MOD_INT64_LIMIT
120
+
121
+ from sage.rings.finite_rings.integer_mod cimport (
122
+ IntegerMod_int, IntegerMod_int64,
123
+ IntegerMod_abstract, use_32bit_type)
124
+
125
+ cdef mod_int ivalue(IntegerMod_abstract x) except -1:
126
+ if type(x) is IntegerMod_int:
127
+ return (<IntegerMod_int>x).ivalue
128
+ elif type(x) is IntegerMod_int64:
129
+ return (<IntegerMod_int64>x).ivalue
130
+ else:
131
+ raise TypeError("non-fixed size integer")
132
+
133
+ from sage.structure.element cimport Element, Vector
134
+
135
+ cimport sage.modules.free_module_element as free_module_element
136
+
137
+
138
+ cdef class Vector_modn_dense(free_module_element.FreeModuleElement):
139
+ cdef _new_c(self):
140
+ cdef Vector_modn_dense y
141
+ y = Vector_modn_dense.__new__(Vector_modn_dense)
142
+ y._init(self._degree, self._parent, self._p)
143
+ return y
144
+
145
+ cdef bint is_dense_c(self) noexcept:
146
+ return 1
147
+
148
+ cdef bint is_sparse_c(self) noexcept:
149
+ return 0
150
+
151
+ def __copy__(self):
152
+ cdef Vector_modn_dense y
153
+ y = self._new_c()
154
+ cdef Py_ssize_t i
155
+ for i from 0 <= i < self._degree:
156
+ y._entries[i] = self._entries[i]
157
+ return y
158
+
159
+ cdef _init(self, Py_ssize_t degree, parent, mod_int p):
160
+ self._degree = degree
161
+ self._parent = parent
162
+ self._p = p
163
+ self._entries = <mod_int *>check_allocarray(degree, sizeof(mod_int))
164
+
165
+ def __cinit__(self, parent=None, x=None, coerce=True, copy=True):
166
+ self._entries = NULL
167
+ self._is_immutable = 0
168
+ if parent is not None:
169
+ self._init(parent.degree(), parent, parent.base_ring().order())
170
+
171
+ def __init__(self, parent, x, coerce=True, copy=True):
172
+ """
173
+ Create an element.
174
+
175
+ TESTS:
176
+
177
+ Note that ``coerce=False`` is dangerous::
178
+
179
+ sage: V = VectorSpace(GF(7), 3)
180
+ sage: v = V([2, 9, -5], coerce=False)
181
+ sage: v[0] == v[1]
182
+ False
183
+ sage: v[0] + 1 == v[1] + 1
184
+ True
185
+ sage: v[0] == v[2]
186
+ False
187
+ """
188
+ cdef Py_ssize_t i
189
+ cdef mod_int a
190
+ if isinstance(x, range):
191
+ x = tuple(x)
192
+ if isinstance(x, (list, tuple)):
193
+ if len(x) != self._degree:
194
+ raise TypeError("x must be a list of the right length")
195
+ if coerce:
196
+ R = parent.base_ring()
197
+ for i from 0 <= i < self._degree:
198
+ a = int(R(x[i]))
199
+ self._entries[i] = a
200
+ else:
201
+ for i from 0 <= i < self._degree:
202
+ self._entries[i] = x[i]
203
+ return
204
+ if x != 0:
205
+ raise TypeError("can't initialize vector from nonzero non-list")
206
+ else:
207
+ for i from 0 <= i < self._degree:
208
+ self._entries[i] = 0
209
+
210
+ def __dealloc__(self):
211
+ sig_free(self._entries)
212
+
213
+ cpdef _richcmp_(left, right, int op):
214
+ """
215
+ EXAMPLES::
216
+
217
+ sage: v = vector(GF(5), [0,0,0,0])
218
+ sage: v == 0
219
+ True
220
+ sage: v == 1
221
+ False
222
+ sage: v == v
223
+ True
224
+ sage: w = vector(GF(11), [-1,0,0,0])
225
+ sage: w == w
226
+ True
227
+ """
228
+ cdef Py_ssize_t i
229
+ cdef mod_int l, r
230
+ for i in range(left.degree()):
231
+ l = left._entries[i]
232
+ r = (<Vector_modn_dense>right)._entries[i]
233
+ if l < r:
234
+ return rich_to_bool(op, -1)
235
+ elif l > r:
236
+ return rich_to_bool(op, 1)
237
+ return rich_to_bool(op, 0)
238
+
239
+ cdef get_unsafe(self, Py_ssize_t i):
240
+ """
241
+ EXAMPLES::
242
+
243
+ sage: R = Integers(7)
244
+ sage: v = vector(R, [1,2,3]); v
245
+ (1, 2, 3)
246
+ sage: v[0]
247
+ 1
248
+ sage: v[2]
249
+ 3
250
+ sage: v[-2]
251
+ 2
252
+ sage: v[0:2]
253
+ (1, 2)
254
+ sage: v[5]
255
+ Traceback (most recent call last):
256
+ ...
257
+ IndexError: vector index out of range
258
+ sage: v[-5]
259
+ Traceback (most recent call last):
260
+ ...
261
+ IndexError: vector index out of range
262
+ """
263
+ cdef IntegerMod_int n
264
+ cdef IntegerMod_int64 m
265
+
266
+ if use_32bit_type(self._p):
267
+ n = IntegerMod_int.__new__(IntegerMod_int)
268
+ IntegerMod_abstract.__init__(n, self.base_ring())
269
+ n.ivalue = self._entries[i]
270
+ return n
271
+ else:
272
+ m = IntegerMod_int64.__new__(IntegerMod_int64)
273
+ IntegerMod_abstract.__init__(m, self.base_ring())
274
+ m.ivalue = self._entries[i]
275
+ return m
276
+
277
+ cdef int set_unsafe(self, Py_ssize_t i, value) except -1:
278
+ """
279
+ EXAMPLES::
280
+
281
+ sage: R = Integers(7)
282
+ sage: v = vector(R, [1,2,3]); v
283
+ (1, 2, 3)
284
+ sage: v[0] = 7^7
285
+ sage: v
286
+ (0, 2, 3)
287
+ """
288
+ self._entries[i] = ivalue(<IntegerMod_abstract>value)
289
+
290
+ def __reduce__(self):
291
+ return unpickle_v1, (self._parent, self.list(), self._degree,
292
+ self._p, not self._is_immutable)
293
+
294
+ cpdef _add_(self, right):
295
+ cdef Vector_modn_dense z, r
296
+ r = right
297
+ z = self._new_c()
298
+ cdef Py_ssize_t i
299
+ for i from 0 <= i < self._degree:
300
+ z._entries[i] = (self._entries[i] + r._entries[i]) % self._p
301
+ return z
302
+
303
+ cpdef _sub_(self, right):
304
+ cdef Vector_modn_dense z, r
305
+ r = right
306
+ z = self._new_c()
307
+ cdef Py_ssize_t i
308
+ for i from 0 <= i < self._degree:
309
+ z._entries[i] = (self._p + self._entries[i] - r._entries[i]) % self._p
310
+ return z
311
+
312
+ cpdef _dot_product_(self, Vector right):
313
+ cdef size_t i
314
+ cdef IntegerMod_int n
315
+ cdef IntegerMod_int64 m
316
+ cdef Vector_modn_dense r = right
317
+
318
+ if use_32bit_type(self._p):
319
+ n = IntegerMod_int.__new__(IntegerMod_int)
320
+ IntegerMod_abstract.__init__(n, self.base_ring())
321
+ n.ivalue = 0
322
+ for i in range(self._degree):
323
+ n.ivalue = (n.ivalue + self._entries[i] * r._entries[i]) % self._p
324
+ return n
325
+ else:
326
+ m = IntegerMod_int64.__new__(IntegerMod_int64)
327
+ IntegerMod_abstract.__init__(m, self.base_ring())
328
+ m.ivalue = 0
329
+ for i in range(self._degree):
330
+ m.ivalue = (m.ivalue + self._entries[i] * r._entries[i]) % self._p
331
+ return m
332
+
333
+ cpdef _pairwise_product_(self, Vector right):
334
+ """
335
+ EXAMPLES::
336
+
337
+ sage: v = vector(Integers(8), [2,3]); w = vector(Integers(8), [2,5])
338
+ sage: v * w
339
+ 3
340
+ sage: w * v
341
+ 3
342
+ """
343
+ cdef Vector_modn_dense z, r
344
+ r = right
345
+ z = self._new_c()
346
+ cdef Py_ssize_t i
347
+ for i from 0 <= i < self._degree:
348
+ z._entries[i] = (self._entries[i] * r._entries[i]) % self._p
349
+ return z
350
+
351
+ cpdef _lmul_(self, Element left):
352
+ cdef Vector_modn_dense z
353
+
354
+ cdef mod_int a = ivalue(left)
355
+ z = self._new_c()
356
+ cdef Py_ssize_t i
357
+
358
+ for i from 0 <= i < self._degree:
359
+ z._entries[i] = (self._entries[i] * a) % self._p
360
+ return z
361
+
362
+ cpdef _neg_(self):
363
+ cdef Vector_modn_dense z
364
+ z = self._new_c()
365
+ cdef Py_ssize_t i
366
+ for i from 0 <= i < self._degree:
367
+ if self._entries[i] > 0:
368
+ z._entries[i] = self._p - self._entries[i]
369
+ else:
370
+ z._entries[i] = 0
371
+ return z
372
+
373
+
374
+ def unpickle_v0(parent, entries, degree, p):
375
+ # If you think you want to change this function, don't.
376
+ # Instead make a new version with a name like
377
+ # make_FreeModuleElement_generic_dense_v1
378
+ # and changed the reduce method below.
379
+ cdef Vector_modn_dense v
380
+ v = Vector_modn_dense.__new__(Vector_modn_dense)
381
+ v._init(degree, parent, p)
382
+ for i from 0 <= i < degree:
383
+ v._entries[i] = entries[i]
384
+ return v
385
+
386
+
387
+ def unpickle_v1(parent, entries, degree, p, is_mutable):
388
+ cdef Vector_modn_dense v
389
+ v = Vector_modn_dense.__new__(Vector_modn_dense)
390
+ v._init(degree, parent, p)
391
+ for i from 0 <= i < degree:
392
+ v._entries[i] = entries[i]
393
+ v._is_immutable = not is_mutable
394
+ return v
@@ -0,0 +1,21 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ from sage.rings.finite_rings.stdint cimport *
3
+
4
+ cdef struct c_vector_modint:
5
+ int_fast64_t *entries
6
+ int p
7
+ Py_ssize_t *positions
8
+ Py_ssize_t degree
9
+ Py_ssize_t num_nonzero
10
+
11
+ cdef int allocate_c_vector_modint(c_vector_modint* v, Py_ssize_t num_nonzero) except -1
12
+ cdef int init_c_vector_modint(c_vector_modint* v, int p, Py_ssize_t degree, Py_ssize_t num_nonzero) except -1
13
+ cdef void clear_c_vector_modint(c_vector_modint* v) noexcept
14
+ cdef Py_ssize_t binary_search0_modn(Py_ssize_t* v, Py_ssize_t n, int_fast64_t x) noexcept
15
+ cdef Py_ssize_t binary_search_modn(Py_ssize_t* v, Py_ssize_t n, int_fast64_t x, Py_ssize_t* ins) noexcept
16
+ cdef int_fast64_t get_entry(c_vector_modint* v, Py_ssize_t n) except -1
17
+ cdef bint is_entry_zero_unsafe(c_vector_modint* v, Py_ssize_t n) noexcept
18
+ cdef object to_list(c_vector_modint* v)
19
+ cdef int set_entry(c_vector_modint* v, Py_ssize_t n, int_fast64_t x) except -1
20
+ cdef int add_c_vector_modint_init(c_vector_modint* sum, c_vector_modint* v, c_vector_modint* w, int multiple) except -1
21
+ cdef int scale_c_vector_modint(c_vector_modint* v, int_fast64_t scalar) except -1
@@ -0,0 +1,298 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ #############################################################################
3
+ # Copyright (C) 2004, 2007 William Stein <wstein@gmail.com>
4
+ # Distributed under the terms of the GNU General Public License (GPL)
5
+ # The full text of the GPL is available at:
6
+ # https://www.gnu.org/licenses/
7
+ #############################################################################
8
+
9
+ from cysignals.memory cimport sig_malloc, sig_free
10
+
11
+
12
+ cdef int allocate_c_vector_modint(c_vector_modint* v, Py_ssize_t num_nonzero) except -1:
13
+ """
14
+ Allocate memory for a c_vector_modint -- most user code won't call this.
15
+ """
16
+ v.entries = <int_fast64_t*>sig_malloc(num_nonzero*sizeof(int_fast64_t))
17
+ if v.entries == NULL:
18
+ raise MemoryError("error allocating memory")
19
+ v.positions = <Py_ssize_t*>sig_malloc(num_nonzero*sizeof(Py_ssize_t))
20
+ if v.positions == NULL:
21
+ sig_free(v.entries)
22
+ raise MemoryError("error allocating memory")
23
+ return 0
24
+
25
+
26
+ cdef int init_c_vector_modint(c_vector_modint* v, int p, Py_ssize_t degree,
27
+ Py_ssize_t num_nonzero) except -1:
28
+ """
29
+ Initialize a c_vector_modint.
30
+ """
31
+ if (allocate_c_vector_modint(v, num_nonzero) == -1):
32
+ raise MemoryError("error allocating memory for sparse vector")
33
+ if p > 46340:
34
+ clear_c_vector_modint(v)
35
+ raise OverflowError("the prime must be <= 46340")
36
+ v.num_nonzero = num_nonzero
37
+ v.degree = degree
38
+ v.p = p
39
+ return 0
40
+
41
+
42
+ cdef void clear_c_vector_modint(c_vector_modint* v) noexcept:
43
+ sig_free(v.entries)
44
+ sig_free(v.positions)
45
+
46
+
47
+ cdef Py_ssize_t binary_search0_modn(Py_ssize_t* v, Py_ssize_t n, int_fast64_t x) noexcept:
48
+ """
49
+ Find the position of the int x in the array v, which has length n.
50
+
51
+ Return -1 if x is not in the array v.
52
+ """
53
+ if n == 0:
54
+ return -1
55
+
56
+ cdef Py_ssize_t i, j, k
57
+ i = 0
58
+ j = n-1
59
+ while i <= j:
60
+ if i == j:
61
+ if v[i] == x:
62
+ return i
63
+ return -1
64
+ k = (i+j)/2
65
+ if v[k] > x:
66
+ j = k-1
67
+ elif v[k] < x:
68
+ i = k+1
69
+ else: # only possibility is that v[k] == x
70
+ return k
71
+ return -1
72
+
73
+
74
+ cdef Py_ssize_t binary_search_modn(Py_ssize_t* v, Py_ssize_t n, int_fast64_t x, Py_ssize_t* ins) noexcept:
75
+ """
76
+ Find the position of the integer x in the array v, which has length n.
77
+
78
+ Return -1 if x is not in the array v, and in this case ins is
79
+ set equal to the position where x should be inserted in order to
80
+ obtain an ordered array.
81
+ """
82
+ if n == 0:
83
+ ins[0] = 0
84
+ return -1
85
+
86
+ cdef Py_ssize_t i, j, k
87
+ i = 0
88
+ j = n-1
89
+ while i <= j:
90
+ if i == j:
91
+ if v[i] == x:
92
+ ins[0] = i
93
+ return i
94
+ if v[i] < x:
95
+ ins[0] = i + 1
96
+ else:
97
+ ins[0] = i
98
+ return -1
99
+ k = (i+j)/2
100
+ if v[k] > x:
101
+ j = k-1
102
+ elif v[k] < x:
103
+ i = k+1
104
+ else: # only possibility is that v[k] == x
105
+ ins[0] = k
106
+ return k
107
+ ins[0] = j+1
108
+ return -1
109
+
110
+
111
+ cdef int_fast64_t get_entry(c_vector_modint* v, Py_ssize_t n) except -1:
112
+ """
113
+ Return the n-th entry of the sparse vector v.
114
+
115
+ This would be v[n] in Python syntax.
116
+ """
117
+ if n >= v.degree or n < 0:
118
+ raise IndexError("index must be between 0 and the degree minus 1")
119
+ cdef Py_ssize_t m
120
+ m = binary_search0_modn(v.positions, v.num_nonzero, n)
121
+ if m == -1:
122
+ return 0
123
+ return v.entries[m]
124
+
125
+ cdef bint is_entry_zero_unsafe(c_vector_modint* v, Py_ssize_t n) noexcept:
126
+ """
127
+ Return if the ``n``-th entry of the sparse vector ``v`` is zero.
128
+
129
+ This is meant for internal use only. If ``n`` is not valid, then
130
+ this might lead to a segfault.
131
+ """
132
+ return binary_search0_modn(v.positions, v.num_nonzero, n) == -1
133
+
134
+ cdef object to_list(c_vector_modint* v):
135
+ """
136
+ Return a Python list of 2-tuples (i,x), where x=v[i] runs
137
+ through the nonzero elements of x, in order.
138
+ """
139
+ cdef object X
140
+ cdef Py_ssize_t i
141
+ X = []
142
+ for i in range(v.num_nonzero):
143
+ X.append((v.positions[i], v.entries[i]))
144
+ return X
145
+
146
+
147
+ cdef int set_entry(c_vector_modint* v, Py_ssize_t n, int_fast64_t x) except -1:
148
+ """
149
+ Set the n-th component of the sparse vector v equal to x.
150
+
151
+ This would be v[n] = x in Python syntax.
152
+ """
153
+ if n < 0 or n >= v.degree:
154
+ raise IndexError("index (=%s) must be between 0 and %s" % (n, v.degree-1))
155
+ cdef Py_ssize_t i, m, ins
156
+ cdef Py_ssize_t *pos
157
+ cdef int_fast64_t *e
158
+
159
+ x = x % v.p
160
+ if x < 0:
161
+ x = x + v.p
162
+ m = binary_search_modn(v.positions, v.num_nonzero, n, &ins)
163
+
164
+ if m != -1:
165
+ # The position n was found in the array of positions.
166
+ # Now there are two cases:
167
+ # 1. x =/= 0, which is easy, and
168
+ # 2. x = 0, in which case we have to recopy
169
+ # positions and entries, without the m-th
170
+ # element, and change num_nonzero.
171
+ if x != 0: # case 1
172
+ v.entries[m] = x
173
+ else: # case 2
174
+ e = v.entries
175
+ pos = v.positions
176
+ allocate_c_vector_modint(v, v.num_nonzero - 1)
177
+ for i in range(m):
178
+ v.entries[i] = e[i]
179
+ v.positions[i] = pos[i]
180
+ for i from m < i < v.num_nonzero:
181
+ v.entries[i-1] = e[i]
182
+ v.positions[i-1] = pos[i]
183
+ sig_free(e)
184
+ sig_free(pos)
185
+ v.num_nonzero = v.num_nonzero - 1
186
+ else:
187
+ # Allocate new memory and copy over elements from the
188
+ # old array. This is similar to case 2 above,
189
+ # except we are inserting a new entry rather than
190
+ # deleting an old one. The new entry should be inserted
191
+ # at position ins, which was computed using binary search.
192
+ #
193
+ # There is one exception -- if the new entry is 0, we
194
+ # do nothing and return.
195
+ if x == 0:
196
+ return 0
197
+ v.num_nonzero = v.num_nonzero + 1
198
+ e = v.entries
199
+ pos = v.positions
200
+ allocate_c_vector_modint(v, v.num_nonzero)
201
+ for i in range(ins):
202
+ v.entries[i] = e[i]
203
+ v.positions[i] = pos[i]
204
+ v.entries[ins] = x
205
+ v.positions[ins] = n
206
+ for i from ins < i < v.num_nonzero:
207
+ v.entries[i] = e[i-1]
208
+ v.positions[i] = pos[i-1]
209
+ sig_free(e)
210
+ sig_free(pos)
211
+
212
+
213
+ cdef int add_c_vector_modint_init(c_vector_modint* sum, c_vector_modint* v,
214
+ c_vector_modint* w, int multiple) except -1:
215
+ """
216
+ Set sum = v + multiple*w.
217
+ """
218
+ if v.p != w.p:
219
+ raise ArithmeticError("the vectors must be modulo the same prime")
220
+ if v.degree != w.degree:
221
+ raise ArithmeticError("the vectors must have the same degree")
222
+
223
+ cdef int s
224
+ cdef Py_ssize_t nz, i, j, k
225
+ cdef c_vector_modint* z
226
+
227
+ multiple = multiple % v.p # need this to avoid overflow.
228
+ if multiple < 0:
229
+ multiple = multiple + v.p
230
+
231
+ z = sum
232
+ # ALGORITHM:
233
+ # 1. Allocate enough memory to hold the union of the two
234
+ # lists of positions. We allocate the sum of the number
235
+ # of positions of both (up to the degree), to avoid
236
+ # having to make two passes. This might be slightly wasteful of
237
+ # memory, but is faster.
238
+ # 2. Move along the entries of v and w, copying them into the
239
+ # new position / entry array. When position are the same,
240
+ # add modulo p.
241
+ # 3. Set num_nonzero and return success code.
242
+
243
+ # 1. Allocate memory:
244
+ nz = v.num_nonzero + w.num_nonzero
245
+ if nz > v.degree:
246
+ nz = v.degree
247
+ init_c_vector_modint(z, v.p, v.degree, nz)
248
+ # 2. Merge entries
249
+ i = 0 # index into entries of v
250
+ j = 0 # index into entries of w
251
+ k = 0 # index into z (the vector we are creating)
252
+ while i < v.num_nonzero or j < w.num_nonzero:
253
+ if i >= v.num_nonzero: # just copy w in
254
+ z.positions[k] = w.positions[j]
255
+ z.entries[k] = (multiple * w.entries[j]) % v.p
256
+ j = j + 1
257
+ k = k + 1
258
+ elif j >= w.num_nonzero: # just copy v in
259
+ z.positions[k] = v.positions[i]
260
+ z.entries[k] = v.entries[i]
261
+ i = i + 1
262
+ k = k + 1
263
+ elif v.positions[i] < w.positions[j]: # copy entry from v in
264
+ z.positions[k] = v.positions[i]
265
+ z.entries[k] = v.entries[i]
266
+ i = i + 1
267
+ k = k + 1
268
+ elif v.positions[i] > w.positions[j]: # copy entry from w in
269
+ s = (multiple * w.entries[j]) % v.p
270
+ if s != 0:
271
+ z.positions[k] = w.positions[j]
272
+ z.entries[k] = s
273
+ k = k + 1
274
+ j = j + 1
275
+ else: # equal, so add and copy
276
+ s = (v.entries[i] + multiple*w.entries[j]) % v.p
277
+ if s != 0:
278
+ z.positions[k] = v.positions[i]
279
+ z.entries[k] = s
280
+ k = k + 1 # only increment if sum is nonzero!
281
+ i = i + 1
282
+ j = j + 1
283
+ z.num_nonzero = k
284
+ return 0
285
+
286
+
287
+ cdef int scale_c_vector_modint(c_vector_modint* v, int_fast64_t scalar) except -1:
288
+ scalar = scalar % v.p
289
+ if scalar == 0:
290
+ clear_c_vector_modint(v)
291
+ init_c_vector_modint(v, v.p, v.degree, 0)
292
+ return 0
293
+ if scalar < 0:
294
+ scalar = scalar + v.p
295
+ cdef Py_ssize_t i
296
+ for i in range(v.num_nonzero):
297
+ v.entries[i] = (v.entries[i] * scalar) % v.p
298
+ return 0