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,9 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ from sage.rings.polynomial.ore_polynomial_element cimport OrePolynomial_generic_dense
3
+
4
+ cdef class SkewPolynomial_generic_dense(OrePolynomial_generic_dense):
5
+ cdef void _inplace_rmul(self, SkewPolynomial_generic_dense right) noexcept
6
+ cdef void _inplace_pow(self, Py_ssize_t n) noexcept
7
+ cpdef right_power_mod(self, exp, modulus)
8
+ cpdef left_power_mod(self, exp, modulus)
9
+ cpdef operator_eval(self, eval_pt)
@@ -0,0 +1,684 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ # sage.doctest: needs sage.combinat
3
+ r"""
4
+ Univariate skew polynomials
5
+
6
+ This module provides the
7
+ :class:`~sage.rings.polynomial.skew_polynomial_element.SkewPolynomial`.
8
+ In the class hierarchy in Sage, the locution *Skew Polynomial* is used
9
+ for a Ore polynomial without twisting derivation.
10
+
11
+ .. WARNING::
12
+
13
+ The current semantics of
14
+ :meth:`~sage.rings.polynomial.skew_polynomial_element.SkewPolynomial.__call__`
15
+ are experimental, so a warning is thrown when a skew polynomial is evaluated
16
+ for the first time in a session. See the method documentation for details.
17
+
18
+ TESTS::
19
+
20
+ sage: R.<t> = QQ[]
21
+ sage: sigma = R.hom([t+1])
22
+ sage: S.<x> = R['x',sigma]
23
+ sage: a = 2*(t + x) + 1
24
+ sage: a(t^2)
25
+ doctest:...: FutureWarning: This class/method/function is marked as experimental.
26
+ It, its functionality or its interface might change without a formal deprecation.
27
+ See https://github.com/sagemath/sage/issues/13215 for details.
28
+ 2*t^3 + 3*t^2 + 4*t + 2
29
+ sage: a(t)
30
+ 2*t^2 + 3*t + 2
31
+
32
+ AUTHORS:
33
+
34
+ - Xavier Caruso (2012-06-29): initial version
35
+
36
+ - Arpit Merchant (2016-08-04): improved docstrings, fixed doctests and
37
+ refactored classes and methods
38
+
39
+ - Johan Rosenkilde (2016-08-03): changes for bug fixes, docstring and
40
+ doctest errors
41
+ """
42
+
43
+ # ***************************************************************************
44
+ # Copyright (C) 2012 Xavier Caruso <xavier.caruso@normalesup.org>
45
+ #
46
+ # This program is free software: you can redistribute it and/or modify
47
+ # it under the terms of the GNU General Public License as published by
48
+ # the Free Software Foundation, either version 2 of the License, or
49
+ # (at your option) any later version.
50
+ # https://www.gnu.org/licenses/
51
+ #****************************************************************************
52
+ from cysignals.signals cimport sig_check
53
+
54
+ from sage.structure.element cimport Element, RingElement, ModuleElement
55
+ from sage.rings.integer cimport Integer
56
+ from sage.rings.morphism cimport RingHomomorphism
57
+ from sage.misc.superseded import experimental
58
+
59
+ from sage.rings.polynomial.ore_polynomial_element cimport OrePolynomial
60
+ from sage.rings.polynomial.ore_polynomial_element cimport OrePolynomial_generic_dense
61
+
62
+
63
+ cdef class SkewPolynomial_generic_dense(OrePolynomial_generic_dense):
64
+ r"""
65
+ Generic implementation of dense skew polynomial supporting any valid base
66
+ ring and twisting morphism.
67
+ """
68
+ cpdef left_power_mod(self, exp, modulus):
69
+ r"""
70
+ Return the remainder of ``self**exp`` in the left euclidean division
71
+ by ``modulus``.
72
+
73
+ INPUT:
74
+
75
+ - ``exp`` -- an Integer
76
+
77
+ - ``modulus`` -- a skew polynomial in the same ring as ``self``
78
+
79
+ OUTPUT:
80
+
81
+ Remainder of ``self**exp`` in the left euclidean division
82
+ by ``modulus``.
83
+
84
+ REMARK:
85
+
86
+ The quotient of the underlying skew polynomial ring by the
87
+ principal ideal generated by ``modulus`` is in general *not*
88
+ a ring.
89
+
90
+ As a consequence, Sage first computes exactly ``self**exp``
91
+ and then reduce it modulo ``modulus``.
92
+
93
+ EXAMPLES::
94
+
95
+ sage: # needs sage.rings.finite_rings
96
+ sage: k.<t> = GF(5^3)
97
+ sage: Frob = k.frobenius_endomorphism()
98
+ sage: S.<x> = k['x',Frob]
99
+ sage: a = x + t
100
+ sage: modulus = x^3 + t*x^2 + (t+3)*x - 2
101
+ sage: a.left_power_mod(100,modulus)
102
+ (4*t^2 + t + 1)*x^2 + (t^2 + 4*t + 1)*x + 3*t^2 + 3*t
103
+ """
104
+ cdef SkewPolynomial_generic_dense r
105
+ if not isinstance(exp, Integer):
106
+ try:
107
+ exp = Integer(exp)
108
+ except TypeError:
109
+ raise TypeError("non-integral exponents not supported")
110
+
111
+ if len(self._coeffs) <= 1:
112
+ return self.parent()(self._coeffs[0]**exp)
113
+ if exp == 0:
114
+ return self.parent().one()
115
+ if exp < 0:
116
+ return (~self).left_power_mod(-exp, modulus)
117
+
118
+ if self == self.parent().gen():
119
+ P = self.parent()
120
+ R = P.base_ring()
121
+ v = [R.zero()]*exp + [R.one()]
122
+ r = <OrePolynomial_generic_dense>self._parent(v)
123
+ else:
124
+ r = <OrePolynomial_generic_dense>self._new_c(list(self._coeffs), self._parent)
125
+ r._inplace_pow(exp)
126
+
127
+ if modulus:
128
+ _, r = r._left_quo_rem(modulus)
129
+ return r
130
+
131
+ cpdef right_power_mod(self, exp, modulus):
132
+ r"""
133
+ Return the remainder of ``self**exp`` in the right euclidean division
134
+ by ``modulus``.
135
+
136
+ INPUT:
137
+
138
+ - ``exp`` -- integer
139
+
140
+ - ``modulus`` -- a skew polynomial in the same ring as ``self``
141
+
142
+ OUTPUT:
143
+
144
+ Remainder of ``self**exp`` in the right euclidean division
145
+ by ``modulus``.
146
+
147
+ REMARK:
148
+
149
+ The quotient of the underlying skew polynomial ring by the
150
+ principal ideal generated by ``modulus`` is in general *not*
151
+ a ring.
152
+
153
+ As a consequence, Sage first computes exactly ``self**exp``
154
+ and then reduce it modulo ``modulus``.
155
+
156
+ EXAMPLES::
157
+
158
+ sage: # needs sage.rings.finite_rings
159
+ sage: k.<t> = GF(5^3)
160
+ sage: Frob = k.frobenius_endomorphism()
161
+ sage: S.<x> = k['x',Frob]
162
+ sage: a = x + t
163
+ sage: b = a^5 # indirect doctest
164
+ sage: b
165
+ x^5 + (2*t^2 + 4)*x^4 + (t^2 + 2)*x^3 + 2*x^2 + (4*t^2 + 2)*x + 2*t^2 + 4*t + 4
166
+ sage: b == a * a * a * a * a
167
+ True
168
+ sage: modulus = x^3 + t*x^2 + (t+3)*x - 2
169
+ sage: br = a.right_power_mod(5, modulus); br
170
+ (t + 1)*x^2 + (2*t^2 + t + 1)*x + 2*t^2 + 4*t + 2
171
+ sage: br == b % modulus
172
+ True
173
+ sage: a.right_power_mod(100, modulus)
174
+ (2*t^2 + 3)*x^2 + (t^2 + 4*t + 2)*x + t^2 + 2*t + 1
175
+
176
+ Negative exponents are supported:
177
+
178
+ sage: # needs sage.rings.finite_rings
179
+ sage: a^(-5)
180
+ (x^5 + (2*t^2 + 4)*x^4 + (t^2 + 2)*x^3 + 2*x^2 + (4*t^2 + 2)*x + 2*t^2 + 4*t + 4)^(-1)
181
+ sage: b * a^(-5)
182
+ 1
183
+
184
+ However, they cannot be combined with modulus::
185
+
186
+ sage: a.right_power_mod(-10, modulus) # needs sage.rings.finite_rings
187
+ Traceback (most recent call last):
188
+ ...
189
+ ValueError: modulus cannot be combined with negative exponent
190
+ """
191
+ cdef SkewPolynomial_generic_dense r
192
+ if not isinstance(exp, Integer):
193
+ try:
194
+ exp = Integer(exp)
195
+ except TypeError:
196
+ raise TypeError("non-integral exponents not supported")
197
+
198
+ if len(self._coeffs) <= 1:
199
+ return self.parent()(self._coeffs[0]**exp)
200
+ if exp == 0:
201
+ return self.parent().one()
202
+ if exp < 0:
203
+ if modulus:
204
+ raise ValueError("modulus cannot be combined with negative exponent")
205
+ return ~(self.right_power_mod(-exp, None))
206
+
207
+ if self == self.parent().gen():
208
+ P = self.parent()
209
+ R = P.base_ring()
210
+ v = [R.zero()]*exp + [R.one()]
211
+ r = <OrePolynomial_generic_dense>self._parent(v)
212
+ else:
213
+ r = <OrePolynomial_generic_dense>self._new_c(list(self._coeffs), self._parent)
214
+ r._inplace_pow(exp)
215
+
216
+ if modulus:
217
+ _, r = r._right_quo_rem(modulus)
218
+ return r
219
+
220
+ def __pow__(self, exp, modulus):
221
+ r"""
222
+ Return the remainder of ``self**exp`` in the left euclidean
223
+ division by ``modulus``.
224
+
225
+ INPUT:
226
+
227
+ - ``exp`` -- an Integer
228
+
229
+ - ``modulus`` -- a skew polynomial in the same ring as ``self``
230
+
231
+ OUTPUT:
232
+
233
+ Remainder of ``self**exp`` in the right euclidean division
234
+ by ``modulus``.
235
+
236
+ REMARK:
237
+
238
+ The quotient of the underlying skew polynomial ring by the
239
+ principal ideal generated by ``modulus`` is in general *not*
240
+ a ring.
241
+
242
+ As a consequence, Sage first computes exactly ``self**exp``
243
+ and then reduce it modulo ``modulus``.
244
+
245
+ .. SEEALSO::
246
+
247
+ :meth:`~sage.rings.polynomial.skew_polynomial_element._pow_`
248
+
249
+ EXAMPLES::
250
+
251
+ sage: # needs sage.rings.finite_rings
252
+ sage: k.<t> = GF(5^3)
253
+ sage: Frob = k.frobenius_endomorphism()
254
+ sage: S.<x> = k['x',Frob]
255
+ sage: a = x + t
256
+ sage: b = a^10
257
+ sage: b == a*a*a*a*a*a*a*a*a*a
258
+ True
259
+ sage: modulus = x^3 + t*x^2 + (t+3)*x - 2
260
+ sage: bmod = a.right_power_mod(10,modulus); bmod
261
+ (t^2 + t)*x^2 + (3*t^2 + 1)*x + t^2 + t
262
+ sage: rq, rr = b.right_quo_rem(modulus)
263
+ sage: bmod == rr
264
+ True
265
+ """
266
+ return self.right_power_mod(exp, modulus)
267
+
268
+ def __call__(self, eval_pt):
269
+ r"""
270
+ Evaluate ``self`` at ``eval_pt`` using operator evaluation.
271
+
272
+ Given a skew polynomial `p(x) = \sum_{i=0}^d a_i * x^i`, we define
273
+ the evaluation `p(r)` to be `\sum_{i=0}^d a_i * \sigma^i(r)`, where
274
+ `\sigma` is the twisting morphism of the skew polynomial ring.
275
+
276
+ INPUT:
277
+
278
+ - ``eval_pt`` -- element of the base ring of ``self``
279
+
280
+ OUTPUT: the operator evaluation of ``self`` at ``eval_pt``
281
+
282
+ .. TODO::
283
+
284
+ Currently, only "operator evaluation" of skew polynomials is
285
+ implemented (see :meth:`.operator_eval`).
286
+ There are two other notions of evaluation of a skew polynomial
287
+ `p(x)` at some element `a` of the base ring. First, the value
288
+ of the polynomial can be defined as the remainder of the right
289
+ division of `p(x)` by `x-a`. Second, the value can be given by
290
+ the formula, `p(a) = \sum_{i=0}^{m-1} B_{i} * p(\beta_{i})`
291
+ where `m` is the degree of the base ring (`F_{q^m}`) of the skew
292
+ polynomial ring, `B_{i}` is the `i`-th element in the vector
293
+ representation of `a` in `F_{q}` and`\beta_{i}` is the `i`-th
294
+ element of the corresponding basis of `F_{q^m}` over `F_{q}`.
295
+
296
+ The current calling convention might change in the future to
297
+ accommodate these. Therefore, the current method has been
298
+ marked as experimental.
299
+
300
+ EXAMPLES::
301
+
302
+ sage: R.<t> = QQ[]
303
+ sage: sigma = R.hom([t+1])
304
+ sage: S.<x> = R['x',sigma]
305
+ sage: a = t*x + 1
306
+ sage: a(t^2)
307
+ t^3 + 3*t^2 + t
308
+ sage: b = x^2 + t*x^3 + t^2*x + 1
309
+ sage: b(2*t + 3)
310
+ 2*t^3 + 7*t^2 + 13*t + 10
311
+ """
312
+ return self._call(eval_pt)
313
+
314
+ @experimental(issue_number=13215)
315
+ def _call(self, eval_pt):
316
+ r"""
317
+ Helper function for the :meth:`__call__` method to accommodate
318
+ the ``@experimental`` decorator.
319
+
320
+ EXAMPLES::
321
+
322
+ sage: # needs sage.rings.finite_rings
323
+ sage: k.<t> = GF(5^3)
324
+ sage: Frob = k.frobenius_endomorphism()
325
+ sage: T.<x> = k['x',Frob]
326
+ sage: a = 3*t^2*x^2 + (t + 1)*x + 2
327
+ sage: a(t) #indirect test
328
+ 2*t^2 + 2*t + 3
329
+ """
330
+ return self.operator_eval(eval_pt)
331
+
332
+ cpdef operator_eval(self, eval_pt):
333
+ r"""
334
+ Evaluate ``self`` at ``eval_pt`` by the operator evaluation
335
+ method.
336
+
337
+ INPUT:
338
+
339
+ - ``eval_pt`` -- element of the base ring of ``self``
340
+
341
+ OUTPUT: the value of the polynomial at the point specified by the argument
342
+
343
+ EXAMPLES::
344
+
345
+ sage: # needs sage.rings.finite_rings
346
+ sage: k.<t> = GF(5^3)
347
+ sage: Frob = k.frobenius_endomorphism()
348
+ sage: T.<x> = k['x',Frob]
349
+ sage: a = 3*t^2*x^2 + (t + 1)*x + 2
350
+ sage: a(t) #indirect test
351
+ 2*t^2 + 2*t + 3
352
+ sage: a.operator_eval(t)
353
+ 2*t^2 + 2*t + 3
354
+
355
+ Evaluation points outside the base ring is usually not possible
356
+ due to the twisting morphism::
357
+
358
+ sage: R.<t> = QQ[]
359
+ sage: sigma = R.hom([t+1])
360
+ sage: S.<x> = R['x',sigma]
361
+ sage: a = t*x + 1
362
+ sage: a.operator_eval(1/t)
363
+ Traceback (most recent call last):
364
+ ...
365
+ TypeError: 1/t fails to convert into the map's domain
366
+ Univariate Polynomial Ring in t over Rational Field,
367
+ but a `pushforward` method is not properly implemented
368
+ """
369
+ cdef RingHomomorphism sigma = self._parent.twisting_morphism()
370
+ cdef list coefficients = self.list()
371
+ cdef RingElement ret = self.base_ring().zero()
372
+ cdef RingElement a = eval_pt
373
+ for c in coefficients:
374
+ ret += c * a
375
+ a = sigma(a)
376
+ return ret
377
+
378
+ def conjugate(self, n):
379
+ r"""
380
+ Return ``self`` conjugated by `x^n`, where `x` is the
381
+ variable of ``self``.
382
+
383
+ The conjugate is obtained from ``self`` by applying the `n`-th iterate
384
+ of the twisting morphism to each of its coefficients.
385
+
386
+ INPUT:
387
+
388
+ - ``n`` -- integer; the power of conjugation
389
+
390
+ EXAMPLES::
391
+
392
+ sage: R.<t> = QQ[]
393
+ sage: K = R.fraction_field()
394
+ sage: sigma = K.hom([1 + 1/t])
395
+ sage: S.<x> = K['x',sigma]
396
+ sage: a = t*x^3 + (t^2 + 1)*x^2 + 2*t
397
+ sage: b = a.conjugate(2); b
398
+ ((2*t + 1)/(t + 1))*x^3 + ((5*t^2 + 6*t + 2)/(t^2 + 2*t + 1))*x^2 + (4*t + 2)/(t + 1)
399
+ sage: x^2*a == b*x^2
400
+ True
401
+
402
+ In principle, negative values for `n` are allowed, but Sage needs to be
403
+ able to invert the twisting morphism::
404
+
405
+ sage: b = a.conjugate(-1)
406
+ Traceback (most recent call last):
407
+ ...
408
+ NotImplementedError: inverse not implemented for morphisms of
409
+ Fraction Field of Univariate Polynomial Ring in t over Rational Field
410
+
411
+ Here is a working example::
412
+
413
+ sage: # needs sage.rings.finite_rings
414
+ sage: k.<t> = GF(5^3)
415
+ sage: Frob = k.frobenius_endomorphism()
416
+ sage: T.<y> = k['y',Frob]
417
+ sage: u = T.random_element()
418
+ sage: v = u.conjugate(-1)
419
+ sage: u*y == y*v
420
+ True
421
+ """
422
+ r = self._new_c([self._parent.twisting_morphism(n)(x) for x in self.list()],
423
+ self._parent, 0)
424
+ return r
425
+
426
+ def multi_point_evaluation(self, eval_pts):
427
+ r"""
428
+ Evaluate ``self`` at list of evaluation points.
429
+
430
+ INPUT:
431
+
432
+ - ``eval_pts`` -- list of points at which ``self`` is to be evaluated
433
+
434
+ OUTPUT: list of values of ``self`` at the ``eval_pts``
435
+
436
+ .. TODO::
437
+
438
+ This method currently trivially calls the evaluation function
439
+ repeatedly. If fast skew polynomial multiplication is available, an
440
+ asymptotically faster method is possible using standard divide and
441
+ conquer techniques and
442
+ :meth:`~sage.rings.polynomial.skew_polynomial_ring.SkewPolynomialRing.minimal_vanishing_polynomial`.
443
+
444
+ EXAMPLES::
445
+
446
+ sage: # needs sage.rings.finite_rings
447
+ sage: k.<t> = GF(5^3)
448
+ sage: Frob = k.frobenius_endomorphism()
449
+ sage: S.<x> = k['x',Frob]
450
+ sage: a = x + t
451
+ sage: eval_pts = [1, t, t^2]
452
+ sage: c = a.multi_point_evaluation(eval_pts); c
453
+ [t + 1, 3*t^2 + 4*t + 4, 4*t]
454
+ sage: c == [ a(e) for e in eval_pts ]
455
+ True
456
+ """
457
+ return [ self(e) for e in eval_pts ]
458
+
459
+ cpdef ModuleElement _lmul_(self, Element right):
460
+ r"""
461
+ Return the product ``self * right``.
462
+
463
+ INPUT:
464
+
465
+ - ``right`` -- an element of the base ring
466
+
467
+ EXAMPLES::
468
+
469
+ sage: R.<t> = QQ[]
470
+ sage: sigma = R.hom([t+1])
471
+ sage: S.<x> = R['x',sigma]
472
+ sage: a = x + t
473
+ sage: b = t
474
+ sage: a * b
475
+ (t + 1)*x + t^2
476
+ sage: a * b == b * a
477
+ False
478
+ """
479
+ if right == 0:
480
+ return self._parent.zero()
481
+ cdef list x = (<SkewPolynomial_generic_dense>self)._coeffs
482
+ cdef Py_ssize_t i
483
+ twisting_morphism = self._parent._morphism
484
+ r = self._new_c([ (twisting_morphism**i)(right)*x[i] for i from 0 <= i < len(x) ],
485
+ self._parent, 0)
486
+ return r
487
+
488
+ cpdef ModuleElement _rmul_(self, Element left):
489
+ r"""
490
+ Return the product ``left * self``.
491
+
492
+ INPUT:
493
+
494
+ - ``left`` -- an element of the base ring
495
+
496
+ EXAMPLES::
497
+
498
+ sage: R.<t> = QQ[]
499
+ sage: sigma = R.hom([t+1])
500
+ sage: S.<x> = R['x',sigma]
501
+ sage: a = t
502
+ sage: b = x + t
503
+ sage: a * b
504
+ t*x + t^2
505
+ sage: a * b == b * a
506
+ False
507
+ """
508
+ if left == 0:
509
+ return self.parent().zero()
510
+ cdef list x = (<SkewPolynomial_generic_dense>self)._coeffs
511
+ cdef Py_ssize_t i
512
+ r = self._new_c([ left*x[i] for i from 0 <= i < len(x) ], self._parent, 0)
513
+ return r
514
+
515
+ cpdef _mul_(self, right):
516
+ r"""
517
+ Return the product ``self * right``.
518
+
519
+ INPUT:
520
+
521
+ - ``right`` -- a Ore polynomial in the same ring as ``self``
522
+
523
+ EXAMPLES::
524
+
525
+ sage: R.<t> = QQ[]
526
+ sage: sigma = R.hom([t+1])
527
+ sage: S.<x> = R['x',sigma]
528
+ sage: a = x^2 + t; a
529
+ x^2 + t
530
+ sage: b = x^2 + (t + 1)*x; b
531
+ x^2 + (t + 1)*x
532
+ sage: a * b
533
+ x^4 + (t + 3)*x^3 + t*x^2 + (t^2 + t)*x
534
+ sage: a * b == b * a
535
+ False
536
+
537
+ TESTS::
538
+
539
+ sage: S(0)*a, (S(0)*a).list()
540
+ (0, [])
541
+ """
542
+ cdef list x = (<SkewPolynomial_generic_dense>self)._coeffs
543
+ cdef list y = (<SkewPolynomial_generic_dense>right)._coeffs
544
+ cdef Py_ssize_t i, k, start, end
545
+ cdef Py_ssize_t dx = len(x)-1, dy = len(y)-1
546
+ parent = self._parent
547
+ if dx == -1:
548
+ return self # = zero
549
+ elif dy == -1:
550
+ return right # = zero
551
+ elif dx == 0:
552
+ c = x[0]
553
+ r = self._new_c([c*a for a in y], parent, 0)
554
+ return r
555
+ cdef list coeffs = []
556
+ for k from 0 <= k <= dx+dy:
557
+ start = 0 if k <= dy else k-dy
558
+ end = k if k <= dx else dx
559
+ sum = x[start] * parent.twisting_morphism(start)(y[k-start])
560
+ for i from start < i <= end:
561
+ sum += x[i] * parent.twisting_morphism(i)(y[k-i])
562
+ coeffs.append(sum)
563
+ r = self._new_c(coeffs, parent, 0)
564
+ return r
565
+
566
+ cdef void _inplace_rmul(self, SkewPolynomial_generic_dense right) noexcept:
567
+ r"""
568
+ Replace ``self`` by ``self*right`` (only for internal use).
569
+
570
+ TESTS::
571
+
572
+ sage: # needs sage.rings.finite_rings
573
+ sage: k.<t> = GF(5^3)
574
+ sage: Frob = k.frobenius_endomorphism()
575
+ sage: S.<x> = k['x',Frob]
576
+ sage: a = x + t
577
+ sage: modulus = x^3 + t*x^2 + (t+3)*x - 2
578
+ sage: a.left_power_mod(100,modulus) # indirect doctest
579
+ (4*t^2 + t + 1)*x^2 + (t^2 + 4*t + 1)*x + 3*t^2 + 3*t
580
+ """
581
+ cdef list x = self._coeffs
582
+ cdef list y = right._coeffs
583
+ cdef Py_ssize_t i, k, start, end
584
+ cdef Py_ssize_t d1 = len(x)-1, d2 = len(y)-1
585
+ parent = self._parent
586
+ if d2 == -1:
587
+ self._coeffs = [ ]
588
+ elif d1 >= 0:
589
+ for k from d1 < k <= d1+d2:
590
+ start = 0 if k <= d2 else k-d2
591
+ sum = x[start] * parent.twisting_morphism(start)(y[k-start])
592
+ for i from start < i <= d1:
593
+ sum += x[i] * parent.twisting_morphism(i)(y[k-i])
594
+ x.append(sum)
595
+ for k from d1 >= k >= 0:
596
+ start = 0 if k <= d2 else k-d2
597
+ end = k if k <= d1 else d1
598
+ sum = x[start] * parent.twisting_morphism(start)(y[k-start])
599
+ for i from start < i <= end:
600
+ sum += x[i] * parent.twisting_morphism(i)(y[k-i])
601
+ x[k] = sum
602
+
603
+ cdef void _inplace_pow(self, Py_ssize_t n) noexcept:
604
+ r"""
605
+ Replace ``self`` by ``self**n`` (only for internal use).
606
+
607
+ TESTS::
608
+
609
+ sage: # needs sage.rings.finite_rings
610
+ sage: k.<t> = GF(5^3)
611
+ sage: Frob = k.frobenius_endomorphism()
612
+ sage: S.<x> = k['x',Frob]
613
+ sage: a = x + t
614
+ sage: modulus = x^3 + t*x^2 + (t+3)*x - 2
615
+ sage: a.left_power_mod(100,modulus) # indirect doctest
616
+ (4*t^2 + t + 1)*x^2 + (t^2 + 4*t + 1)*x + 3*t^2 + 3*t
617
+ """
618
+ while n & 1 == 0:
619
+ self._inplace_rmul(self)
620
+ n = n >> 1
621
+ cdef SkewPolynomial_generic_dense selfpow = <SkewPolynomial_generic_dense>self._new_c(list(self._coeffs), self._parent)
622
+ n = n >> 1
623
+ while n != 0:
624
+ selfpow._inplace_rmul(selfpow)
625
+ if n&1 == 1:
626
+ self._inplace_rmul(selfpow)
627
+ n = n >> 1
628
+
629
+ cdef _left_quo_rem(self, OrePolynomial other):
630
+ r"""
631
+ Return the quotient and remainder of the left euclidean
632
+ division of ``self`` by ``other`` (C implementation).
633
+ """
634
+ sig_check()
635
+ cdef list a = list(self._coeffs)
636
+ cdef list b = (<SkewPolynomial_generic_dense>other)._coeffs
637
+ cdef Py_ssize_t i, j
638
+ cdef Py_ssize_t da = self.degree(), db = other.degree()
639
+ if da < db:
640
+ return (self._new_c([], self._parent), self)
641
+ try:
642
+ inv = self.base_ring()(~b[db])
643
+ except (ZeroDivisionError, TypeError):
644
+ raise NotImplementedError("the leading coefficient of the divisor is not invertible")
645
+ cdef list q = [ ]
646
+ parent = self._parent
647
+ for i from da-db >= i >= 0:
648
+ try:
649
+ c = parent.twisting_morphism(-db)(inv*a[i+db])
650
+ for j from 0 <= j < db:
651
+ a[i+j] -= b[j] * parent.twisting_morphism(j)(c)
652
+ except Exception:
653
+ raise NotImplementedError("inversion of the twisting morphism %s" % parent.twisting_morphism())
654
+ q.append(c)
655
+ q.reverse()
656
+ return (self._new_c(q, parent), self._new_c(a[:db], parent, 1))
657
+
658
+ cdef _right_quo_rem(self, OrePolynomial other):
659
+ r"""
660
+ Return the quotient and remainder of the right euclidean
661
+ division of ``self`` by ``other`` (C implementation).
662
+ """
663
+ sig_check()
664
+ cdef list a = list(self._coeffs)
665
+ cdef list b = (<SkewPolynomial_generic_dense>other)._coeffs
666
+ cdef Py_ssize_t i, j
667
+ cdef Py_ssize_t da = self.degree(), db = other.degree()
668
+ parent = self._parent
669
+ if da < db:
670
+ return (self._new_c([],parent), self)
671
+ try:
672
+ inv = self.base_ring()(~b[db])
673
+ except (ZeroDivisionError, TypeError):
674
+ raise NotImplementedError("the leading coefficient of the divisor"
675
+ " is not invertible")
676
+ cdef list q = [ ]
677
+ parent = self._parent
678
+ for i from da-db >= i >= 0:
679
+ c = parent.twisting_morphism(i)(inv) * a[i+db]
680
+ for j from 0 <= j < db:
681
+ a[i+j] -= c * parent.twisting_morphism(i)(b[j])
682
+ q.append(c)
683
+ q.reverse()
684
+ return (self._new_c(q, parent), self._new_c(a[:db], parent, 1))