passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_x86_64.whl

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

Potentially problematic release.


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

Files changed (808) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +808 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +5 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgcc_s-0cd532bd.so.1 +0 -0
  6. passagemath_modules.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
  7. passagemath_modules.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
  8. passagemath_modules.libs/libgsl-42cda06f.so.28.0.0 +0 -0
  9. passagemath_modules.libs/libmpc-d8ebe4b5.so.3.3.1 +0 -0
  10. passagemath_modules.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
  11. passagemath_modules.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
  12. passagemath_modules.libs/libquadmath-bb76a5fc.so.0.0.0 +0 -0
  13. sage/algebras/all__sagemath_modules.py +20 -0
  14. sage/algebras/catalog.py +148 -0
  15. sage/algebras/clifford_algebra.py +3107 -0
  16. sage/algebras/clifford_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  17. sage/algebras/clifford_algebra_element.pxd +16 -0
  18. sage/algebras/clifford_algebra_element.pyx +997 -0
  19. sage/algebras/commutative_dga.py +4252 -0
  20. sage/algebras/exterior_algebra_groebner.cpython-314-x86_64-linux-musl.so +0 -0
  21. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  22. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  23. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  28. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  29. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  30. sage/algebras/finite_gca.py +528 -0
  31. sage/algebras/group_algebra.py +232 -0
  32. sage/algebras/lie_algebras/abelian.py +197 -0
  33. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  34. sage/algebras/lie_algebras/all.py +25 -0
  35. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  36. sage/algebras/lie_algebras/bch.py +177 -0
  37. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  38. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  39. sage/algebras/lie_algebras/center_uea.py +767 -0
  40. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  41. sage/algebras/lie_algebras/examples.py +683 -0
  42. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  43. sage/algebras/lie_algebras/heisenberg.py +820 -0
  44. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  46. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  47. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  48. sage/algebras/lie_algebras/morphism.py +661 -0
  49. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  50. sage/algebras/lie_algebras/onsager.py +1324 -0
  51. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  52. sage/algebras/lie_algebras/quotient.py +462 -0
  53. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  54. sage/algebras/lie_algebras/representation.py +1040 -0
  55. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  56. sage/algebras/lie_algebras/subalgebra.py +967 -0
  57. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  58. sage/algebras/lie_algebras/verma_module.py +1630 -0
  59. sage/algebras/lie_algebras/virasoro.py +1186 -0
  60. sage/algebras/octonion_algebra.cpython-314-x86_64-linux-musl.so +0 -0
  61. sage/algebras/octonion_algebra.pxd +20 -0
  62. sage/algebras/octonion_algebra.pyx +987 -0
  63. sage/algebras/orlik_solomon.py +907 -0
  64. sage/algebras/orlik_terao.py +779 -0
  65. sage/algebras/steenrod/all.py +7 -0
  66. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  67. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  68. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  69. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  70. sage/algebras/weyl_algebra.py +1126 -0
  71. sage/all__sagemath_modules.py +62 -0
  72. sage/calculus/all__sagemath_modules.py +19 -0
  73. sage/calculus/expr.py +205 -0
  74. sage/calculus/integration.cpython-314-x86_64-linux-musl.so +0 -0
  75. sage/calculus/integration.pyx +698 -0
  76. sage/calculus/interpolation.cpython-314-x86_64-linux-musl.so +0 -0
  77. sage/calculus/interpolation.pxd +13 -0
  78. sage/calculus/interpolation.pyx +387 -0
  79. sage/calculus/interpolators.cpython-314-x86_64-linux-musl.so +0 -0
  80. sage/calculus/interpolators.pyx +326 -0
  81. sage/calculus/ode.cpython-314-x86_64-linux-musl.so +0 -0
  82. sage/calculus/ode.pxd +5 -0
  83. sage/calculus/ode.pyx +610 -0
  84. sage/calculus/riemann.cpython-314-x86_64-linux-musl.so +0 -0
  85. sage/calculus/riemann.pyx +1521 -0
  86. sage/calculus/test_sympy.py +201 -0
  87. sage/calculus/transforms/all.py +7 -0
  88. sage/calculus/transforms/dft.py +844 -0
  89. sage/calculus/transforms/dwt.cpython-314-x86_64-linux-musl.so +0 -0
  90. sage/calculus/transforms/dwt.pxd +7 -0
  91. sage/calculus/transforms/dwt.pyx +160 -0
  92. sage/calculus/transforms/fft.cpython-314-x86_64-linux-musl.so +0 -0
  93. sage/calculus/transforms/fft.pxd +12 -0
  94. sage/calculus/transforms/fft.pyx +487 -0
  95. sage/calculus/wester.py +662 -0
  96. sage/coding/abstract_code.py +1108 -0
  97. sage/coding/ag_code.py +868 -0
  98. sage/coding/ag_code_decoders.cpython-314-x86_64-linux-musl.so +0 -0
  99. sage/coding/ag_code_decoders.pyx +2639 -0
  100. sage/coding/all.py +15 -0
  101. sage/coding/bch_code.py +494 -0
  102. sage/coding/binary_code.cpython-314-x86_64-linux-musl.so +0 -0
  103. sage/coding/binary_code.pxd +124 -0
  104. sage/coding/binary_code.pyx +4139 -0
  105. sage/coding/bounds_catalog.py +43 -0
  106. sage/coding/channel.py +819 -0
  107. sage/coding/channels_catalog.py +29 -0
  108. sage/coding/code_bounds.py +755 -0
  109. sage/coding/code_constructions.py +804 -0
  110. sage/coding/codes_catalog.py +111 -0
  111. sage/coding/cyclic_code.py +1329 -0
  112. sage/coding/databases.py +316 -0
  113. sage/coding/decoder.py +373 -0
  114. sage/coding/decoders_catalog.py +88 -0
  115. sage/coding/delsarte_bounds.py +709 -0
  116. sage/coding/encoder.py +390 -0
  117. sage/coding/encoders_catalog.py +64 -0
  118. sage/coding/extended_code.py +468 -0
  119. sage/coding/gabidulin_code.py +1058 -0
  120. sage/coding/golay_code.py +404 -0
  121. sage/coding/goppa_code.py +441 -0
  122. sage/coding/grs_code.py +2371 -0
  123. sage/coding/guava.py +107 -0
  124. sage/coding/guruswami_sudan/all.py +1 -0
  125. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  126. sage/coding/guruswami_sudan/interpolation.py +409 -0
  127. sage/coding/guruswami_sudan/utils.py +176 -0
  128. sage/coding/hamming_code.py +176 -0
  129. sage/coding/information_set_decoder.py +1032 -0
  130. sage/coding/kasami_codes.cpython-314-x86_64-linux-musl.so +0 -0
  131. sage/coding/kasami_codes.pyx +351 -0
  132. sage/coding/linear_code.py +3067 -0
  133. sage/coding/linear_code_no_metric.py +1354 -0
  134. sage/coding/linear_rank_metric.py +961 -0
  135. sage/coding/parity_check_code.py +353 -0
  136. sage/coding/punctured_code.py +719 -0
  137. sage/coding/reed_muller_code.py +999 -0
  138. sage/coding/self_dual_codes.py +942 -0
  139. sage/coding/source_coding/all.py +2 -0
  140. sage/coding/source_coding/huffman.py +553 -0
  141. sage/coding/subfield_subcode.py +423 -0
  142. sage/coding/two_weight_db.py +399 -0
  143. sage/combinat/all__sagemath_modules.py +7 -0
  144. sage/combinat/cartesian_product.py +347 -0
  145. sage/combinat/family.py +11 -0
  146. sage/combinat/free_module.py +1977 -0
  147. sage/combinat/root_system/all.py +147 -0
  148. sage/combinat/root_system/ambient_space.py +527 -0
  149. sage/combinat/root_system/associahedron.py +471 -0
  150. sage/combinat/root_system/braid_move_calculator.py +143 -0
  151. sage/combinat/root_system/braid_orbit.cpython-314-x86_64-linux-musl.so +0 -0
  152. sage/combinat/root_system/braid_orbit.pyx +144 -0
  153. sage/combinat/root_system/branching_rules.py +2301 -0
  154. sage/combinat/root_system/cartan_matrix.py +1245 -0
  155. sage/combinat/root_system/cartan_type.py +3069 -0
  156. sage/combinat/root_system/coxeter_group.py +162 -0
  157. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  158. sage/combinat/root_system/coxeter_type.py +681 -0
  159. sage/combinat/root_system/dynkin_diagram.py +900 -0
  160. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  161. sage/combinat/root_system/fundamental_group.py +795 -0
  162. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  163. sage/combinat/root_system/integrable_representations.py +1227 -0
  164. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  165. sage/combinat/root_system/pieri_factors.py +1147 -0
  166. sage/combinat/root_system/plot.py +1615 -0
  167. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  168. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  169. sage/combinat/root_system/root_space.py +487 -0
  170. sage/combinat/root_system/root_system.py +882 -0
  171. sage/combinat/root_system/type_A.py +348 -0
  172. sage/combinat/root_system/type_A_affine.py +227 -0
  173. sage/combinat/root_system/type_A_infinity.py +241 -0
  174. sage/combinat/root_system/type_B.py +347 -0
  175. sage/combinat/root_system/type_BC_affine.py +287 -0
  176. sage/combinat/root_system/type_B_affine.py +216 -0
  177. sage/combinat/root_system/type_C.py +317 -0
  178. sage/combinat/root_system/type_C_affine.py +188 -0
  179. sage/combinat/root_system/type_D.py +357 -0
  180. sage/combinat/root_system/type_D_affine.py +208 -0
  181. sage/combinat/root_system/type_E.py +641 -0
  182. sage/combinat/root_system/type_E_affine.py +231 -0
  183. sage/combinat/root_system/type_F.py +387 -0
  184. sage/combinat/root_system/type_F_affine.py +137 -0
  185. sage/combinat/root_system/type_G.py +293 -0
  186. sage/combinat/root_system/type_G_affine.py +132 -0
  187. sage/combinat/root_system/type_H.py +105 -0
  188. sage/combinat/root_system/type_I.py +110 -0
  189. sage/combinat/root_system/type_Q.py +150 -0
  190. sage/combinat/root_system/type_affine.py +509 -0
  191. sage/combinat/root_system/type_dual.py +704 -0
  192. sage/combinat/root_system/type_folded.py +301 -0
  193. sage/combinat/root_system/type_marked.py +748 -0
  194. sage/combinat/root_system/type_reducible.py +601 -0
  195. sage/combinat/root_system/type_relabel.py +730 -0
  196. sage/combinat/root_system/type_super_A.py +837 -0
  197. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  198. sage/combinat/root_system/weight_space.py +639 -0
  199. sage/combinat/root_system/weyl_characters.py +2238 -0
  200. sage/crypto/__init__.py +4 -0
  201. sage/crypto/all.py +28 -0
  202. sage/crypto/block_cipher/all.py +7 -0
  203. sage/crypto/block_cipher/des.py +1065 -0
  204. sage/crypto/block_cipher/miniaes.py +2171 -0
  205. sage/crypto/block_cipher/present.py +909 -0
  206. sage/crypto/block_cipher/sdes.py +1527 -0
  207. sage/crypto/boolean_function.cpython-314-x86_64-linux-musl.so +0 -0
  208. sage/crypto/boolean_function.pxd +10 -0
  209. sage/crypto/boolean_function.pyx +1487 -0
  210. sage/crypto/cipher.py +78 -0
  211. sage/crypto/classical.py +3668 -0
  212. sage/crypto/classical_cipher.py +569 -0
  213. sage/crypto/cryptosystem.py +387 -0
  214. sage/crypto/key_exchange/all.py +7 -0
  215. sage/crypto/key_exchange/catalog.py +24 -0
  216. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  217. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  218. sage/crypto/lattice.py +312 -0
  219. sage/crypto/lfsr.py +295 -0
  220. sage/crypto/lwe.py +840 -0
  221. sage/crypto/mq/__init__.py +4 -0
  222. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  223. sage/crypto/mq/rijndael_gf.py +2345 -0
  224. sage/crypto/mq/sbox.py +7 -0
  225. sage/crypto/mq/sr.py +3344 -0
  226. sage/crypto/public_key/all.py +5 -0
  227. sage/crypto/public_key/blum_goldwasser.py +776 -0
  228. sage/crypto/sbox.cpython-314-x86_64-linux-musl.so +0 -0
  229. sage/crypto/sbox.pyx +2090 -0
  230. sage/crypto/sboxes.py +2090 -0
  231. sage/crypto/stream.py +390 -0
  232. sage/crypto/stream_cipher.py +297 -0
  233. sage/crypto/util.py +519 -0
  234. sage/ext/all__sagemath_modules.py +1 -0
  235. sage/ext/interpreters/__init__.py +1 -0
  236. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  237. sage/ext/interpreters/wrapper_cc.cpython-314-x86_64-linux-musl.so +0 -0
  238. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  239. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  240. sage/ext/interpreters/wrapper_cdf.cpython-314-x86_64-linux-musl.so +0 -0
  241. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  242. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  243. sage/ext/interpreters/wrapper_rdf.cpython-314-x86_64-linux-musl.so +0 -0
  244. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  245. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  246. sage/ext/interpreters/wrapper_rr.cpython-314-x86_64-linux-musl.so +0 -0
  247. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  248. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  249. sage/geometry/all__sagemath_modules.py +5 -0
  250. sage/geometry/toric_lattice.py +1745 -0
  251. sage/geometry/toric_lattice_element.cpython-314-x86_64-linux-musl.so +0 -0
  252. sage/geometry/toric_lattice_element.pyx +432 -0
  253. sage/groups/abelian_gps/abelian_group.py +1925 -0
  254. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  255. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  256. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  257. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  258. sage/groups/abelian_gps/element_base.py +341 -0
  259. sage/groups/abelian_gps/values.py +488 -0
  260. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  261. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  262. sage/groups/additive_abelian/all.py +4 -0
  263. sage/groups/additive_abelian/qmodnz.py +231 -0
  264. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  265. sage/groups/affine_gps/affine_group.py +535 -0
  266. sage/groups/affine_gps/all.py +1 -0
  267. sage/groups/affine_gps/catalog.py +17 -0
  268. sage/groups/affine_gps/euclidean_group.py +246 -0
  269. sage/groups/affine_gps/group_element.py +562 -0
  270. sage/groups/all__sagemath_modules.py +12 -0
  271. sage/groups/galois_group.py +479 -0
  272. sage/groups/matrix_gps/all.py +4 -0
  273. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  274. sage/groups/matrix_gps/catalog.py +26 -0
  275. sage/groups/matrix_gps/coxeter_group.py +927 -0
  276. sage/groups/matrix_gps/finitely_generated.py +487 -0
  277. sage/groups/matrix_gps/group_element.cpython-314-x86_64-linux-musl.so +0 -0
  278. sage/groups/matrix_gps/group_element.pxd +11 -0
  279. sage/groups/matrix_gps/group_element.pyx +431 -0
  280. sage/groups/matrix_gps/linear.py +440 -0
  281. sage/groups/matrix_gps/matrix_group.py +617 -0
  282. sage/groups/matrix_gps/named_group.py +296 -0
  283. sage/groups/matrix_gps/orthogonal.py +544 -0
  284. sage/groups/matrix_gps/symplectic.py +251 -0
  285. sage/groups/matrix_gps/unitary.py +436 -0
  286. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  287. sage/groups/misc_gps/argument_groups.py +1905 -0
  288. sage/groups/misc_gps/imaginary_groups.py +479 -0
  289. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  290. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-x86_64-linux-musl.so +0 -0
  292. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  293. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-x86_64-linux-musl.so +0 -0
  295. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  296. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  297. sage/homology/algebraic_topological_model.py +595 -0
  298. sage/homology/all.py +2 -0
  299. sage/homology/all__sagemath_modules.py +8 -0
  300. sage/homology/chain_complex.py +2148 -0
  301. sage/homology/chain_complex_homspace.py +165 -0
  302. sage/homology/chain_complex_morphism.py +629 -0
  303. sage/homology/chain_homotopy.py +604 -0
  304. sage/homology/chains.py +653 -0
  305. sage/homology/free_resolution.py +923 -0
  306. sage/homology/graded_resolution.py +567 -0
  307. sage/homology/hochschild_complex.py +756 -0
  308. sage/homology/homology_group.py +188 -0
  309. sage/homology/homology_morphism.py +422 -0
  310. sage/homology/homology_vector_space_with_basis.py +1454 -0
  311. sage/homology/koszul_complex.py +169 -0
  312. sage/homology/matrix_utils.py +205 -0
  313. sage/libs/all__sagemath_modules.py +1 -0
  314. sage/libs/gsl/__init__.py +1 -0
  315. sage/libs/gsl/airy.pxd +56 -0
  316. sage/libs/gsl/all.pxd +66 -0
  317. sage/libs/gsl/array.cpython-314-x86_64-linux-musl.so +0 -0
  318. sage/libs/gsl/array.pxd +5 -0
  319. sage/libs/gsl/array.pyx +102 -0
  320. sage/libs/gsl/bessel.pxd +208 -0
  321. sage/libs/gsl/blas.pxd +116 -0
  322. sage/libs/gsl/blas_types.pxd +34 -0
  323. sage/libs/gsl/block.pxd +52 -0
  324. sage/libs/gsl/chebyshev.pxd +37 -0
  325. sage/libs/gsl/clausen.pxd +12 -0
  326. sage/libs/gsl/combination.pxd +47 -0
  327. sage/libs/gsl/complex.pxd +151 -0
  328. sage/libs/gsl/coulomb.pxd +30 -0
  329. sage/libs/gsl/coupling.pxd +21 -0
  330. sage/libs/gsl/dawson.pxd +12 -0
  331. sage/libs/gsl/debye.pxd +24 -0
  332. sage/libs/gsl/dilog.pxd +14 -0
  333. sage/libs/gsl/eigen.pxd +46 -0
  334. sage/libs/gsl/elementary.pxd +12 -0
  335. sage/libs/gsl/ellint.pxd +48 -0
  336. sage/libs/gsl/elljac.pxd +8 -0
  337. sage/libs/gsl/erf.pxd +32 -0
  338. sage/libs/gsl/errno.pxd +26 -0
  339. sage/libs/gsl/exp.pxd +44 -0
  340. sage/libs/gsl/expint.pxd +44 -0
  341. sage/libs/gsl/fermi_dirac.pxd +44 -0
  342. sage/libs/gsl/fft.pxd +121 -0
  343. sage/libs/gsl/fit.pxd +50 -0
  344. sage/libs/gsl/gamma.pxd +94 -0
  345. sage/libs/gsl/gegenbauer.pxd +26 -0
  346. sage/libs/gsl/histogram.pxd +176 -0
  347. sage/libs/gsl/hyperg.pxd +52 -0
  348. sage/libs/gsl/integration.pxd +69 -0
  349. sage/libs/gsl/interp.pxd +109 -0
  350. sage/libs/gsl/laguerre.pxd +24 -0
  351. sage/libs/gsl/lambert.pxd +16 -0
  352. sage/libs/gsl/legendre.pxd +90 -0
  353. sage/libs/gsl/linalg.pxd +185 -0
  354. sage/libs/gsl/log.pxd +26 -0
  355. sage/libs/gsl/math.pxd +43 -0
  356. sage/libs/gsl/matrix.pxd +143 -0
  357. sage/libs/gsl/matrix_complex.pxd +130 -0
  358. sage/libs/gsl/min.pxd +67 -0
  359. sage/libs/gsl/monte.pxd +56 -0
  360. sage/libs/gsl/ntuple.pxd +32 -0
  361. sage/libs/gsl/odeiv.pxd +70 -0
  362. sage/libs/gsl/permutation.pxd +78 -0
  363. sage/libs/gsl/poly.pxd +40 -0
  364. sage/libs/gsl/pow_int.pxd +12 -0
  365. sage/libs/gsl/psi.pxd +28 -0
  366. sage/libs/gsl/qrng.pxd +29 -0
  367. sage/libs/gsl/random.pxd +257 -0
  368. sage/libs/gsl/rng.pxd +100 -0
  369. sage/libs/gsl/roots.pxd +72 -0
  370. sage/libs/gsl/sort.pxd +36 -0
  371. sage/libs/gsl/statistics.pxd +59 -0
  372. sage/libs/gsl/sum.pxd +55 -0
  373. sage/libs/gsl/synchrotron.pxd +16 -0
  374. sage/libs/gsl/transport.pxd +24 -0
  375. sage/libs/gsl/trig.pxd +58 -0
  376. sage/libs/gsl/types.pxd +137 -0
  377. sage/libs/gsl/vector.pxd +101 -0
  378. sage/libs/gsl/vector_complex.pxd +83 -0
  379. sage/libs/gsl/wavelet.pxd +49 -0
  380. sage/libs/gsl/zeta.pxd +28 -0
  381. sage/libs/mpc/__init__.pxd +114 -0
  382. sage/libs/mpc/types.pxd +28 -0
  383. sage/libs/mpfr/__init__.pxd +299 -0
  384. sage/libs/mpfr/types.pxd +26 -0
  385. sage/libs/mpmath/__init__.py +1 -0
  386. sage/libs/mpmath/all.py +27 -0
  387. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  388. sage/libs/mpmath/utils.cpython-314-x86_64-linux-musl.so +0 -0
  389. sage/libs/mpmath/utils.pxd +4 -0
  390. sage/libs/mpmath/utils.pyx +319 -0
  391. sage/matrix/action.cpython-314-x86_64-linux-musl.so +0 -0
  392. sage/matrix/action.pxd +26 -0
  393. sage/matrix/action.pyx +596 -0
  394. sage/matrix/all.py +9 -0
  395. sage/matrix/args.cpython-314-x86_64-linux-musl.so +0 -0
  396. sage/matrix/args.pxd +144 -0
  397. sage/matrix/args.pyx +1668 -0
  398. sage/matrix/benchmark.py +1258 -0
  399. sage/matrix/berlekamp_massey.py +95 -0
  400. sage/matrix/compute_J_ideal.py +926 -0
  401. sage/matrix/constructor.cpython-314-x86_64-linux-musl.so +0 -0
  402. sage/matrix/constructor.pyx +750 -0
  403. sage/matrix/docs.py +430 -0
  404. sage/matrix/echelon_matrix.cpython-314-x86_64-linux-musl.so +0 -0
  405. sage/matrix/echelon_matrix.pyx +155 -0
  406. sage/matrix/matrix.pxd +2 -0
  407. sage/matrix/matrix0.cpython-314-x86_64-linux-musl.so +0 -0
  408. sage/matrix/matrix0.pxd +68 -0
  409. sage/matrix/matrix0.pyx +6324 -0
  410. sage/matrix/matrix1.cpython-314-x86_64-linux-musl.so +0 -0
  411. sage/matrix/matrix1.pxd +8 -0
  412. sage/matrix/matrix1.pyx +2851 -0
  413. sage/matrix/matrix2.cpython-314-x86_64-linux-musl.so +0 -0
  414. sage/matrix/matrix2.pxd +25 -0
  415. sage/matrix/matrix2.pyx +20181 -0
  416. sage/matrix/matrix_cdv.cpython-314-x86_64-linux-musl.so +0 -0
  417. sage/matrix/matrix_cdv.pxd +4 -0
  418. sage/matrix/matrix_cdv.pyx +93 -0
  419. sage/matrix/matrix_complex_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  420. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  421. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  422. sage/matrix/matrix_dense.cpython-314-x86_64-linux-musl.so +0 -0
  423. sage/matrix/matrix_dense.pxd +5 -0
  424. sage/matrix/matrix_dense.pyx +343 -0
  425. sage/matrix/matrix_domain_dense.pxd +5 -0
  426. sage/matrix/matrix_domain_sparse.pxd +5 -0
  427. sage/matrix/matrix_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  428. sage/matrix/matrix_double_dense.pxd +7 -0
  429. sage/matrix/matrix_double_dense.pyx +3906 -0
  430. sage/matrix/matrix_double_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  431. sage/matrix/matrix_double_sparse.pxd +6 -0
  432. sage/matrix/matrix_double_sparse.pyx +248 -0
  433. sage/matrix/matrix_generic_dense.cpython-314-x86_64-linux-musl.so +0 -0
  434. sage/matrix/matrix_generic_dense.pxd +7 -0
  435. sage/matrix/matrix_generic_dense.pyx +354 -0
  436. sage/matrix/matrix_generic_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  437. sage/matrix/matrix_generic_sparse.pxd +7 -0
  438. sage/matrix/matrix_generic_sparse.pyx +461 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  440. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  441. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  442. sage/matrix/matrix_misc.py +313 -0
  443. sage/matrix/matrix_numpy_dense.cpython-314-x86_64-linux-musl.so +0 -0
  444. sage/matrix/matrix_numpy_dense.pxd +14 -0
  445. sage/matrix/matrix_numpy_dense.pyx +450 -0
  446. sage/matrix/matrix_numpy_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  447. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  448. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  449. sage/matrix/matrix_polynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  450. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  451. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  452. sage/matrix/matrix_real_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  453. sage/matrix/matrix_real_double_dense.pxd +7 -0
  454. sage/matrix/matrix_real_double_dense.pyx +122 -0
  455. sage/matrix/matrix_space.py +2848 -0
  456. sage/matrix/matrix_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  457. sage/matrix/matrix_sparse.pxd +5 -0
  458. sage/matrix/matrix_sparse.pyx +1222 -0
  459. sage/matrix/matrix_window.cpython-314-x86_64-linux-musl.so +0 -0
  460. sage/matrix/matrix_window.pxd +37 -0
  461. sage/matrix/matrix_window.pyx +242 -0
  462. sage/matrix/misc_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  463. sage/matrix/misc_mpfr.pyx +80 -0
  464. sage/matrix/operation_table.py +1182 -0
  465. sage/matrix/special.py +3666 -0
  466. sage/matrix/strassen.cpython-314-x86_64-linux-musl.so +0 -0
  467. sage/matrix/strassen.pyx +851 -0
  468. sage/matrix/symplectic_basis.py +541 -0
  469. sage/matrix/template.pxd +6 -0
  470. sage/matrix/tests.py +71 -0
  471. sage/matroids/advanced.py +77 -0
  472. sage/matroids/all.py +13 -0
  473. sage/matroids/basis_exchange_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  474. sage/matroids/basis_exchange_matroid.pxd +96 -0
  475. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  476. sage/matroids/basis_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  477. sage/matroids/basis_matroid.pxd +45 -0
  478. sage/matroids/basis_matroid.pyx +1217 -0
  479. sage/matroids/catalog.py +44 -0
  480. sage/matroids/chow_ring.py +473 -0
  481. sage/matroids/chow_ring_ideal.py +849 -0
  482. sage/matroids/circuit_closures_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  483. sage/matroids/circuit_closures_matroid.pxd +16 -0
  484. sage/matroids/circuit_closures_matroid.pyx +559 -0
  485. sage/matroids/circuits_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  486. sage/matroids/circuits_matroid.pxd +38 -0
  487. sage/matroids/circuits_matroid.pyx +947 -0
  488. sage/matroids/constructor.py +1086 -0
  489. sage/matroids/database_collections.py +365 -0
  490. sage/matroids/database_matroids.py +5338 -0
  491. sage/matroids/dual_matroid.py +583 -0
  492. sage/matroids/extension.cpython-314-x86_64-linux-musl.so +0 -0
  493. sage/matroids/extension.pxd +34 -0
  494. sage/matroids/extension.pyx +519 -0
  495. sage/matroids/flats_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  496. sage/matroids/flats_matroid.pxd +28 -0
  497. sage/matroids/flats_matroid.pyx +715 -0
  498. sage/matroids/gammoid.py +600 -0
  499. sage/matroids/graphic_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  500. sage/matroids/graphic_matroid.pxd +39 -0
  501. sage/matroids/graphic_matroid.pyx +2024 -0
  502. sage/matroids/lean_matrix.cpython-314-x86_64-linux-musl.so +0 -0
  503. sage/matroids/lean_matrix.pxd +126 -0
  504. sage/matroids/lean_matrix.pyx +3667 -0
  505. sage/matroids/linear_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  506. sage/matroids/linear_matroid.pxd +180 -0
  507. sage/matroids/linear_matroid.pyx +6649 -0
  508. sage/matroids/matroid.cpython-314-x86_64-linux-musl.so +0 -0
  509. sage/matroids/matroid.pxd +243 -0
  510. sage/matroids/matroid.pyx +8759 -0
  511. sage/matroids/matroids_catalog.py +190 -0
  512. sage/matroids/matroids_plot_helpers.py +890 -0
  513. sage/matroids/minor_matroid.py +480 -0
  514. sage/matroids/minorfix.h +9 -0
  515. sage/matroids/named_matroids.py +5 -0
  516. sage/matroids/rank_matroid.py +268 -0
  517. sage/matroids/set_system.cpython-314-x86_64-linux-musl.so +0 -0
  518. sage/matroids/set_system.pxd +38 -0
  519. sage/matroids/set_system.pyx +800 -0
  520. sage/matroids/transversal_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  521. sage/matroids/transversal_matroid.pxd +14 -0
  522. sage/matroids/transversal_matroid.pyx +893 -0
  523. sage/matroids/union_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  524. sage/matroids/union_matroid.pxd +20 -0
  525. sage/matroids/union_matroid.pyx +331 -0
  526. sage/matroids/unpickling.cpython-314-x86_64-linux-musl.so +0 -0
  527. sage/matroids/unpickling.pyx +843 -0
  528. sage/matroids/utilities.py +809 -0
  529. sage/misc/all__sagemath_modules.py +20 -0
  530. sage/misc/c3.cpython-314-x86_64-linux-musl.so +0 -0
  531. sage/misc/c3.pyx +238 -0
  532. sage/misc/compat.py +87 -0
  533. sage/misc/element_with_label.py +173 -0
  534. sage/misc/func_persist.py +79 -0
  535. sage/misc/pickle_old.cpython-314-x86_64-linux-musl.so +0 -0
  536. sage/misc/pickle_old.pyx +19 -0
  537. sage/misc/proof.py +7 -0
  538. sage/misc/replace_dot_all.py +472 -0
  539. sage/misc/sagedoc_conf.py +168 -0
  540. sage/misc/sphinxify.py +167 -0
  541. sage/misc/test_class_pickling.py +85 -0
  542. sage/modules/all.py +42 -0
  543. sage/modules/complex_double_vector.py +25 -0
  544. sage/modules/diamond_cutting.py +380 -0
  545. sage/modules/fg_pid/all.py +1 -0
  546. sage/modules/fg_pid/fgp_element.py +456 -0
  547. sage/modules/fg_pid/fgp_module.py +2091 -0
  548. sage/modules/fg_pid/fgp_morphism.py +550 -0
  549. sage/modules/filtered_vector_space.py +1271 -0
  550. sage/modules/finite_submodule_iter.cpython-314-x86_64-linux-musl.so +0 -0
  551. sage/modules/finite_submodule_iter.pxd +27 -0
  552. sage/modules/finite_submodule_iter.pyx +452 -0
  553. sage/modules/fp_graded/all.py +1 -0
  554. sage/modules/fp_graded/element.py +346 -0
  555. sage/modules/fp_graded/free_element.py +298 -0
  556. sage/modules/fp_graded/free_homspace.py +53 -0
  557. sage/modules/fp_graded/free_module.py +1060 -0
  558. sage/modules/fp_graded/free_morphism.py +217 -0
  559. sage/modules/fp_graded/homspace.py +563 -0
  560. sage/modules/fp_graded/module.py +1340 -0
  561. sage/modules/fp_graded/morphism.py +1990 -0
  562. sage/modules/fp_graded/steenrod/all.py +1 -0
  563. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  564. sage/modules/fp_graded/steenrod/module.py +477 -0
  565. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  566. sage/modules/fp_graded/steenrod/profile.py +241 -0
  567. sage/modules/free_module.py +8447 -0
  568. sage/modules/free_module_element.cpython-314-x86_64-linux-musl.so +0 -0
  569. sage/modules/free_module_element.pxd +22 -0
  570. sage/modules/free_module_element.pyx +5445 -0
  571. sage/modules/free_module_homspace.py +369 -0
  572. sage/modules/free_module_integer.py +896 -0
  573. sage/modules/free_module_morphism.py +823 -0
  574. sage/modules/free_module_pseudohomspace.py +352 -0
  575. sage/modules/free_module_pseudomorphism.py +578 -0
  576. sage/modules/free_quadratic_module.py +1706 -0
  577. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  578. sage/modules/matrix_morphism.py +1745 -0
  579. sage/modules/misc.py +103 -0
  580. sage/modules/module_functors.py +192 -0
  581. sage/modules/multi_filtered_vector_space.py +719 -0
  582. sage/modules/ore_module.py +2208 -0
  583. sage/modules/ore_module_element.py +178 -0
  584. sage/modules/ore_module_homspace.py +147 -0
  585. sage/modules/ore_module_morphism.py +968 -0
  586. sage/modules/quotient_module.py +699 -0
  587. sage/modules/real_double_vector.py +22 -0
  588. sage/modules/submodule.py +255 -0
  589. sage/modules/tensor_operations.py +567 -0
  590. sage/modules/torsion_quadratic_module.py +1352 -0
  591. sage/modules/tutorial_free_modules.py +248 -0
  592. sage/modules/vector_complex_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  593. sage/modules/vector_complex_double_dense.pxd +6 -0
  594. sage/modules/vector_complex_double_dense.pyx +117 -0
  595. sage/modules/vector_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  596. sage/modules/vector_double_dense.pxd +6 -0
  597. sage/modules/vector_double_dense.pyx +604 -0
  598. sage/modules/vector_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  599. sage/modules/vector_integer_dense.pxd +15 -0
  600. sage/modules/vector_integer_dense.pyx +361 -0
  601. sage/modules/vector_integer_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  602. sage/modules/vector_integer_sparse.pxd +29 -0
  603. sage/modules/vector_integer_sparse.pyx +406 -0
  604. sage/modules/vector_modn_dense.cpython-314-x86_64-linux-musl.so +0 -0
  605. sage/modules/vector_modn_dense.pxd +12 -0
  606. sage/modules/vector_modn_dense.pyx +394 -0
  607. sage/modules/vector_modn_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  608. sage/modules/vector_modn_sparse.pxd +21 -0
  609. sage/modules/vector_modn_sparse.pyx +298 -0
  610. sage/modules/vector_numpy_dense.cpython-314-x86_64-linux-musl.so +0 -0
  611. sage/modules/vector_numpy_dense.pxd +15 -0
  612. sage/modules/vector_numpy_dense.pyx +304 -0
  613. sage/modules/vector_numpy_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  614. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  615. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  616. sage/modules/vector_rational_dense.cpython-314-x86_64-linux-musl.so +0 -0
  617. sage/modules/vector_rational_dense.pxd +15 -0
  618. sage/modules/vector_rational_dense.pyx +387 -0
  619. sage/modules/vector_rational_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  620. sage/modules/vector_rational_sparse.pxd +30 -0
  621. sage/modules/vector_rational_sparse.pyx +413 -0
  622. sage/modules/vector_real_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  623. sage/modules/vector_real_double_dense.pxd +6 -0
  624. sage/modules/vector_real_double_dense.pyx +126 -0
  625. sage/modules/vector_space_homspace.py +430 -0
  626. sage/modules/vector_space_morphism.py +989 -0
  627. sage/modules/with_basis/all.py +15 -0
  628. sage/modules/with_basis/cell_module.py +494 -0
  629. sage/modules/with_basis/indexed_element.cpython-314-x86_64-linux-musl.so +0 -0
  630. sage/modules/with_basis/indexed_element.pxd +13 -0
  631. sage/modules/with_basis/indexed_element.pyx +1058 -0
  632. sage/modules/with_basis/invariant.py +1075 -0
  633. sage/modules/with_basis/morphism.py +1636 -0
  634. sage/modules/with_basis/representation.py +2939 -0
  635. sage/modules/with_basis/subquotient.py +685 -0
  636. sage/numerical/all__sagemath_modules.py +6 -0
  637. sage/numerical/gauss_legendre.cpython-314-x86_64-linux-musl.so +0 -0
  638. sage/numerical/gauss_legendre.pyx +381 -0
  639. sage/numerical/optimize.py +910 -0
  640. sage/probability/all.py +10 -0
  641. sage/probability/probability_distribution.cpython-314-x86_64-linux-musl.so +0 -0
  642. sage/probability/probability_distribution.pyx +1242 -0
  643. sage/probability/random_variable.py +411 -0
  644. sage/quadratic_forms/all.py +4 -0
  645. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  646. sage/quadratic_forms/binary_qf.py +2042 -0
  647. sage/quadratic_forms/bqf_class_group.py +748 -0
  648. sage/quadratic_forms/constructions.py +93 -0
  649. sage/quadratic_forms/count_local_2.cpython-314-x86_64-linux-musl.so +0 -0
  650. sage/quadratic_forms/count_local_2.pyx +365 -0
  651. sage/quadratic_forms/extras.py +195 -0
  652. sage/quadratic_forms/quadratic_form.py +1753 -0
  653. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  654. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  655. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-x86_64-linux-musl.so +0 -0
  656. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  657. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  658. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  659. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  660. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  661. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  662. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  663. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  664. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  665. sage/quadratic_forms/random_quadraticform.py +209 -0
  666. sage/quadratic_forms/ternary.cpython-314-x86_64-linux-musl.so +0 -0
  667. sage/quadratic_forms/ternary.pyx +1154 -0
  668. sage/quadratic_forms/ternary_qf.py +2027 -0
  669. sage/rings/all__sagemath_modules.py +28 -0
  670. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  671. sage/rings/asymptotic/misc.py +1252 -0
  672. sage/rings/cc.py +4 -0
  673. sage/rings/cfinite_sequence.py +1306 -0
  674. sage/rings/complex_conversion.cpython-314-x86_64-linux-musl.so +0 -0
  675. sage/rings/complex_conversion.pxd +8 -0
  676. sage/rings/complex_conversion.pyx +23 -0
  677. sage/rings/complex_double.cpython-314-x86_64-linux-musl.so +0 -0
  678. sage/rings/complex_double.pxd +21 -0
  679. sage/rings/complex_double.pyx +2654 -0
  680. sage/rings/complex_mpc.cpython-314-x86_64-linux-musl.so +0 -0
  681. sage/rings/complex_mpc.pxd +21 -0
  682. sage/rings/complex_mpc.pyx +2576 -0
  683. sage/rings/complex_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  684. sage/rings/complex_mpfr.pxd +18 -0
  685. sage/rings/complex_mpfr.pyx +3602 -0
  686. sage/rings/derivation.py +2334 -0
  687. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  688. sage/rings/finite_rings/maps_finite_field.py +191 -0
  689. sage/rings/function_field/all__sagemath_modules.py +8 -0
  690. sage/rings/function_field/derivations.py +102 -0
  691. sage/rings/function_field/derivations_rational.py +132 -0
  692. sage/rings/function_field/differential.py +853 -0
  693. sage/rings/function_field/divisor.py +1107 -0
  694. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  695. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  696. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  697. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  698. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  699. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  700. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  701. sage/rings/function_field/hermite_form_polynomial.cpython-314-x86_64-linux-musl.so +0 -0
  702. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  703. sage/rings/function_field/khuri_makdisi.cpython-314-x86_64-linux-musl.so +0 -0
  704. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  705. sage/rings/invariants/all.py +4 -0
  706. sage/rings/invariants/invariant_theory.py +4597 -0
  707. sage/rings/invariants/reconstruction.py +395 -0
  708. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  709. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-x86_64-linux-musl.so +0 -0
  711. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  712. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  713. sage/rings/polynomial/ore_function_element.py +952 -0
  714. sage/rings/polynomial/ore_function_field.py +1028 -0
  715. sage/rings/polynomial/ore_polynomial_element.cpython-314-x86_64-linux-musl.so +0 -0
  716. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  717. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  718. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  719. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-x86_64-linux-musl.so +0 -0
  720. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  721. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  722. sage/rings/polynomial/skew_polynomial_element.cpython-314-x86_64-linux-musl.so +0 -0
  723. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  724. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-x86_64-linux-musl.so +0 -0
  726. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  727. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-x86_64-linux-musl.so +0 -0
  729. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  730. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  731. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  732. sage/rings/real_double_element_gsl.cpython-314-x86_64-linux-musl.so +0 -0
  733. sage/rings/real_double_element_gsl.pxd +8 -0
  734. sage/rings/real_double_element_gsl.pyx +794 -0
  735. sage/rings/real_field.py +58 -0
  736. sage/rings/real_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  737. sage/rings/real_mpfr.pxd +29 -0
  738. sage/rings/real_mpfr.pyx +6122 -0
  739. sage/rings/ring_extension.cpython-314-x86_64-linux-musl.so +0 -0
  740. sage/rings/ring_extension.pxd +42 -0
  741. sage/rings/ring_extension.pyx +2779 -0
  742. sage/rings/ring_extension_conversion.cpython-314-x86_64-linux-musl.so +0 -0
  743. sage/rings/ring_extension_conversion.pxd +16 -0
  744. sage/rings/ring_extension_conversion.pyx +462 -0
  745. sage/rings/ring_extension_element.cpython-314-x86_64-linux-musl.so +0 -0
  746. sage/rings/ring_extension_element.pxd +21 -0
  747. sage/rings/ring_extension_element.pyx +1635 -0
  748. sage/rings/ring_extension_homset.py +64 -0
  749. sage/rings/ring_extension_morphism.cpython-314-x86_64-linux-musl.so +0 -0
  750. sage/rings/ring_extension_morphism.pxd +35 -0
  751. sage/rings/ring_extension_morphism.pyx +920 -0
  752. sage/schemes/all__sagemath_modules.py +1 -0
  753. sage/schemes/projective/all__sagemath_modules.py +1 -0
  754. sage/schemes/projective/coherent_sheaf.py +300 -0
  755. sage/schemes/projective/cohomology.py +510 -0
  756. sage/stats/all.py +15 -0
  757. sage/stats/basic_stats.py +489 -0
  758. sage/stats/distributions/all.py +7 -0
  759. sage/stats/distributions/catalog.py +34 -0
  760. sage/stats/distributions/dgs.h +50 -0
  761. sage/stats/distributions/dgs.pxd +111 -0
  762. sage/stats/distributions/dgs_bern.h +400 -0
  763. sage/stats/distributions/dgs_gauss.h +614 -0
  764. sage/stats/distributions/dgs_misc.h +104 -0
  765. sage/stats/distributions/discrete_gaussian_integer.cpython-314-x86_64-linux-musl.so +0 -0
  766. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  767. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  768. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  769. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  770. sage/stats/hmm/all.py +15 -0
  771. sage/stats/hmm/chmm.cpython-314-x86_64-linux-musl.so +0 -0
  772. sage/stats/hmm/chmm.pyx +1595 -0
  773. sage/stats/hmm/distributions.cpython-314-x86_64-linux-musl.so +0 -0
  774. sage/stats/hmm/distributions.pxd +29 -0
  775. sage/stats/hmm/distributions.pyx +531 -0
  776. sage/stats/hmm/hmm.cpython-314-x86_64-linux-musl.so +0 -0
  777. sage/stats/hmm/hmm.pxd +17 -0
  778. sage/stats/hmm/hmm.pyx +1388 -0
  779. sage/stats/hmm/util.cpython-314-x86_64-linux-musl.so +0 -0
  780. sage/stats/hmm/util.pxd +7 -0
  781. sage/stats/hmm/util.pyx +165 -0
  782. sage/stats/intlist.cpython-314-x86_64-linux-musl.so +0 -0
  783. sage/stats/intlist.pxd +14 -0
  784. sage/stats/intlist.pyx +588 -0
  785. sage/stats/r.py +49 -0
  786. sage/stats/time_series.cpython-314-x86_64-linux-musl.so +0 -0
  787. sage/stats/time_series.pxd +6 -0
  788. sage/stats/time_series.pyx +2546 -0
  789. sage/tensor/all.py +2 -0
  790. sage/tensor/modules/all.py +8 -0
  791. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  792. sage/tensor/modules/comp.py +5598 -0
  793. sage/tensor/modules/ext_pow_free_module.py +824 -0
  794. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  795. sage/tensor/modules/format_utilities.py +333 -0
  796. sage/tensor/modules/free_module_alt_form.py +858 -0
  797. sage/tensor/modules/free_module_automorphism.py +1207 -0
  798. sage/tensor/modules/free_module_basis.py +1074 -0
  799. sage/tensor/modules/free_module_element.py +284 -0
  800. sage/tensor/modules/free_module_homset.py +652 -0
  801. sage/tensor/modules/free_module_linear_group.py +564 -0
  802. sage/tensor/modules/free_module_morphism.py +1581 -0
  803. sage/tensor/modules/free_module_tensor.py +3289 -0
  804. sage/tensor/modules/reflexive_module.py +386 -0
  805. sage/tensor/modules/tensor_free_module.py +780 -0
  806. sage/tensor/modules/tensor_free_submodule.py +538 -0
  807. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  808. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,952 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ r"""
3
+ Fraction field elements of Ore polynomial rings
4
+
5
+ AUTHOR:
6
+
7
+ - Xavier Caruso (2020-05)
8
+ """
9
+
10
+ # ***************************************************************************
11
+ # Copyright (C) 2020 Xavier Caruso <xavier.caruso@normalesup.org>
12
+ #
13
+ # This program is free software: you can redistribute it and/or modify
14
+ # it under the terms of the GNU General Public License as published by
15
+ # the Free Software Foundation, either version 2 of the License, or
16
+ # (at your option) any later version.
17
+ # https://www.gnu.org/licenses/
18
+ # ***************************************************************************
19
+
20
+ from sage.categories.homset import Hom
21
+ from sage.categories.map import Map
22
+ from sage.categories.morphism import Morphism
23
+ from sage.misc.cachefunc import cached_method
24
+ from sage.misc.latex import latex
25
+ from sage.structure.element import AlgebraElement
26
+ from sage.structure.richcmp import op_EQ, op_NE, richcmp
27
+
28
+
29
+ class OreFunction(AlgebraElement):
30
+ r"""
31
+ An element in a Ore function field.
32
+ """
33
+ def __init__(self, parent, numerator, denominator=None, simplify=True):
34
+ r"""
35
+ Initialize this element.
36
+
37
+ TESTS::
38
+
39
+ sage: R.<t> = GF(5)[]
40
+ sage: der = R.derivation()
41
+ sage: A.<d> = R['d', der]
42
+ sage: K = A.fraction_field()
43
+ sage: f = K.random_element()
44
+
45
+ sage: # TestSuite(f).run()
46
+ """
47
+ AlgebraElement.__init__(self, parent)
48
+ ring = parent._ring
49
+ numerator = ring(numerator)
50
+ if denominator is None:
51
+ denominator = ring.one()
52
+ else:
53
+ denominator = ring(denominator)
54
+ if not denominator:
55
+ raise ZeroDivisionError("denominator must be nonzero")
56
+ # We normalize the fraction
57
+ if numerator:
58
+ if simplify and parent._simplification:
59
+ D = numerator.left_gcd(denominator, monic=False)
60
+ numerator, _ = numerator.left_quo_rem(D)
61
+ denominator, _ = denominator.left_quo_rem(D)
62
+ s = denominator.leading_coefficient()
63
+ if s != 1:
64
+ s = ~s
65
+ numerator = s*numerator
66
+ denominator = s*denominator
67
+ self._numerator = numerator
68
+ self._denominator = denominator
69
+ else:
70
+ self._numerator = ring.zero()
71
+ self._denominator = ring.one()
72
+
73
+ def _repr_(self):
74
+ r"""
75
+ Return a string representation of this element.
76
+
77
+ EXAMPLES::
78
+
79
+ sage: # needs sage.rings.finite_rings
80
+ sage: k.<a> = GF(5^3)
81
+ sage: Frob = k.frobenius_endomorphism()
82
+ sage: S.<x> = k['x', Frob]
83
+ sage: f = (x+a)^(-1) * (x^2 + a^2)
84
+ sage: f
85
+ (x + a)^(-1) * (x^2 + a^2)
86
+
87
+ TESTS::
88
+
89
+ sage: # needs sage.rings.finite_rings
90
+ sage: f = 1/x^3; f
91
+ x^(-3)
92
+ sage: f * x^5
93
+ x^2
94
+ """
95
+ if not self._numerator:
96
+ return "0"
97
+ if self._denominator == 1:
98
+ return str(self._numerator)
99
+ if self._denominator.is_monomial():
100
+ s = "%s^(-%s)" % (self.parent().variable_name(), self._denominator.degree())
101
+ else:
102
+ s = "(%s)^(-1)" % self._denominator
103
+ if self._numerator == 1:
104
+ return s
105
+ if self._numerator._is_atomic():
106
+ return "%s * %s" % (s, self._numerator)
107
+ else:
108
+ return "%s * (%s)" % (s, self._numerator)
109
+
110
+ def _latex_(self):
111
+ r"""
112
+ Return a LaTeX representation of this element.
113
+
114
+ EXAMPLES::
115
+
116
+ sage: R.<t> = GF(5)[]
117
+ sage: der = R.derivation()
118
+ sage: S.<d> = R['d', der]
119
+ sage: f = (d+t)^(-1) * (d^2 + t^2)
120
+ sage: latex(f)
121
+ \left(d + t\right)^{-1} \cdot \left(d^{2} + t^{2}\right)
122
+ """
123
+ if not self._numerator:
124
+ return "0"
125
+ if self._denominator == 1:
126
+ return latex(self._numerator)
127
+ if self._denominator.is_monomial():
128
+ s = "%s^{-%s}" % (self.parent().latex_variable_names()[0], self._denominator.degree())
129
+ else:
130
+ s = "\\left(%s\\right)^{-1}" % self._denominator
131
+ if self._numerator == 1:
132
+ return s
133
+ if self._numerator._is_atomic():
134
+ return "%s \\cdot %s" % (s, latex(self._numerator))
135
+ else:
136
+ return "%s \\cdot \\left(%s\\right)" % (s, latex(self._numerator))
137
+
138
+ def __hash__(self):
139
+ r"""
140
+ Return a hash of this element.
141
+
142
+ TESTS::
143
+
144
+ sage: # needs sage.rings.finite_rings
145
+ sage: k.<a> = GF(5^3)
146
+ sage: Frob = k.frobenius_endomorphism()
147
+ sage: S.<x> = k['x', Frob]
148
+ sage: K = S.fraction_field()
149
+ sage: f = K.random_element()
150
+ sage: hash(f) # random
151
+ 1700763101013238501
152
+ """
153
+ return hash((self._numerator, self._denominator))
154
+
155
+ def _richcmp_(self, other, op):
156
+ r"""
157
+ Compare this element with ``other`` for the comparison
158
+ operator ``op``.
159
+
160
+ TESTS::
161
+
162
+ sage: # needs sage.rings.function_field
163
+ sage: R.<t> = QQ[]
164
+ sage: sigma = R.hom([t+1])
165
+ sage: der = R.derivation(1, twist=sigma)
166
+ sage: S.<delta> = R['delta', der]
167
+ sage: K = S.fraction_field()
168
+ sage: P = K.random_element()
169
+ sage: Q = K.random_element()
170
+ sage: D = K.random_element()
171
+ sage: Q == 0 or D == 0 or (P*D) / (Q*D) == P/Q # long time
172
+ True
173
+ """
174
+ if self.parent()._simplification:
175
+ return richcmp((self._numerator, self._denominator), (other._numerator, other._denominator), op)
176
+ if op == op_EQ or op == op_NE:
177
+ _, U, V = self._denominator.left_xlcm(other._denominator)
178
+ return richcmp(U * self._numerator, V * other._numerator, op)
179
+ return NotImplemented
180
+
181
+ def left_denominator(self):
182
+ r"""
183
+ Return `s` if this element reads `s^{-1} t`.
184
+
185
+ WARNING:
186
+
187
+ When the twisting morphism is bijective, there is a unique
188
+ irreducible fraction of the form `s^{-1} t` representing this
189
+ element. Here irreducible means that `s` and `t` have no
190
+ nontrivial common left divisor.
191
+ Under this additional assumption, this method always returns
192
+ this distinguished denominator `s`.
193
+
194
+ On the contrary, when the twisting morphism is not bijective,
195
+ this method returns the denominator of *some* fraction
196
+ representing the input element.
197
+ However, the software guarantees that the method :meth:`right_numerator`
198
+ outputs the numerator of the *same* fraction.
199
+
200
+ EXAMPLES::
201
+
202
+ sage: # needs sage.rings.finite_rings
203
+ sage: k.<a> = GF(5^3)
204
+ sage: Frob = k.frobenius_endomorphism()
205
+ sage: S.<x> = k['x', Frob]
206
+ sage: s = x + a
207
+ sage: t = x^2 + a*x + a^2
208
+ sage: f = s^(-1) * t
209
+ sage: f.left_denominator()
210
+ x + a
211
+
212
+ In the example below, a simplification occurs::
213
+
214
+ sage: # needs sage.rings.finite_rings
215
+ sage: u = S.random_element(degree=2)
216
+ sage: g = (u*s)^(-1) * (u*t)
217
+ sage: g.left_denominator()
218
+ x + a
219
+
220
+ When the twisting morphism is not invertible, simplifications
221
+ do not occur in general::
222
+
223
+ sage: R.<z> = GF(11)[]
224
+ sage: sigma = R.hom([z^2])
225
+ sage: S.<x> = R['x', sigma]
226
+ sage: s = (x + z)^2
227
+ sage: t = (x + z) * (x^2 + z^2)
228
+ sage: f = s^(-1) * t # needs sage.rings.function_field
229
+ sage: f.left_denominator() # needs sage.rings.function_field
230
+ x^2 + (z^2 + z)*x + z^2
231
+
232
+ However, the following always holds true::
233
+
234
+ sage: f == f.left_denominator()^(-1) * f.right_numerator() # needs sage.rings.function_field
235
+ True
236
+
237
+ .. SEEALSO::
238
+
239
+ :meth:`right_numerator`, :meth:`left_numerator`, :meth:`right_denominator`
240
+ """
241
+ return self._denominator
242
+
243
+ def right_numerator(self):
244
+ r"""
245
+ Return `t` if this element reads `s^{-1} t`.
246
+
247
+ WARNING:
248
+
249
+ When the twisting morphism is bijective, there is a unique
250
+ irreducible fraction of the form `s^{-1} t` representing this
251
+ element. Here irreducible means that `s` and `t` have no
252
+ nontrivial common left divisor.
253
+ Under this additional assumption, this method always returns
254
+ this distinguished numerator `t`.
255
+
256
+ On the contrary, when the twisting morphism is not bijective,
257
+ this method returns the numerator of *some* fraction
258
+ representing the input element.
259
+ However, the software guarantees that the method :meth:`left_denominator`
260
+ outputs the numerator of the *same* fraction.
261
+
262
+ EXAMPLES::
263
+
264
+ sage: # needs sage.rings.finite_rings
265
+ sage: k.<a> = GF(5^3)
266
+ sage: Frob = k.frobenius_endomorphism()
267
+ sage: S.<x> = k['x', Frob]
268
+ sage: s = x + a
269
+ sage: t = x^2 + a*x + a^2
270
+ sage: f = s^(-1) * t
271
+ sage: f.right_numerator()
272
+ x^2 + a*x + a^2
273
+
274
+ In the example below, a simplification occurs::
275
+
276
+ sage: # needs sage.rings.finite_rings
277
+ sage: u = S.random_element(degree=2)
278
+ sage: g = (u*s)^(-1) * (u*t)
279
+ sage: g.right_numerator()
280
+ x^2 + a*x + a^2
281
+
282
+ .. SEEALSO::
283
+
284
+ :meth:`left_denominator`, :meth:`left_numerator`, :meth:`right_denominator`
285
+ """
286
+ return self._numerator
287
+
288
+ @cached_method
289
+ def _reverse_fraction(self):
290
+ r"""
291
+ Return the pair `(s,t)` if this element reads `t s^{-1}`.
292
+
293
+ This is a helper function. Do not call it directly.
294
+
295
+ TESTS::
296
+
297
+ sage: # needs sage.rings.finite_rings
298
+ sage: k.<a> = GF(11^3)
299
+ sage: Frob = k.frobenius_endomorphism()
300
+ sage: der = k.derivation(a+1, twist=Frob)
301
+ sage: S.<x> = k['x', der]
302
+ sage: P = S.random_element(degree=5)
303
+ sage: Q = S.random_element(degree=5)
304
+ sage: f = P / Q
305
+ sage: f == f.left_numerator() / f.right_denominator() # indirect doctest
306
+ True
307
+ """
308
+ _, denominator, numerator = self._numerator.right_xlcm(self._denominator, monic=False)
309
+ d = denominator.degree()
310
+ s = ~(denominator.leading_coefficient())
311
+ morphism = self.parent().twisting_morphism(-d)
312
+ if morphism is not None:
313
+ s = morphism(s)
314
+ numerator = numerator * s
315
+ denominator = denominator * s
316
+ return numerator, denominator
317
+
318
+ def right_denominator(self):
319
+ r"""
320
+ Return `s` if this element reads `t s^{-1}`.
321
+
322
+ WARNING:
323
+
324
+ When the twisting morphism is bijective, there is a unique
325
+ irreducible fraction of the form `t s^{-1}` representing this
326
+ element. Here irreducible means that `s` and `t` have no
327
+ nontrivial common right divisor.
328
+ Under this additional assumption, this method always returns
329
+ this distinguished denominator `s`.
330
+
331
+ On the contrary, when the twisting morphism is not bijective,
332
+ the existence of the writing `t s^{-1}` is not guaranteed in
333
+ general. In this case, this method raises an error.
334
+
335
+ EXAMPLES::
336
+
337
+ sage: # needs sage.rings.finite_rings
338
+ sage: k.<a> = GF(5^3)
339
+ sage: Frob = k.frobenius_endomorphism()
340
+ sage: S.<x> = k['x', Frob]
341
+ sage: s = x + a
342
+ sage: t = x^2 + a*x + a^2
343
+ sage: f = t/s
344
+ sage: f.right_denominator()
345
+ x + a
346
+
347
+ In the example below, a simplification occurs::
348
+
349
+ sage: # needs sage.rings.finite_rings
350
+ sage: u = S.random_element(degree=2)
351
+ sage: g = (t*u) / (s*u)
352
+ sage: g.right_denominator()
353
+ x + a
354
+
355
+ .. SEEALSO::
356
+
357
+ :meth:`left_numerator`, :meth:`left_denominator`, :meth:`right_numerator`
358
+
359
+ TESTS::
360
+
361
+ sage: R.<z> = GF(11)[]
362
+ sage: sigma = R.hom([z^2])
363
+ sage: S.<x> = R['x', sigma]
364
+ sage: f = (x + z) / (x - z) # needs sage.rings.function_field
365
+ sage: f.right_denominator() # needs sage.rings.function_field
366
+ Traceback (most recent call last):
367
+ ...
368
+ NotImplementedError: inversion of the twisting morphism Ring endomorphism
369
+ of Fraction Field of Univariate Polynomial Ring in z over Finite Field of size 11
370
+ Defn: z |--> z^2
371
+ """
372
+ return self._reverse_fraction()[1]
373
+
374
+ def left_numerator(self):
375
+ r"""
376
+ Return `t` if this element reads `t s^{-1}`.
377
+
378
+ WARNING:
379
+
380
+ When the twisting morphism is bijective, there is a unique
381
+ irreducible fraction of the form `t s^{-1}` representing this
382
+ element. Here irreducible means that `s` and `t` have no
383
+ nontrivial common right divisor.
384
+ Under this additional assumption, this method always returns
385
+ this distinguished numerator `t`.
386
+
387
+ On the contrary, when the twisting morphism is not bijective,
388
+ the existence of the writing `t s^{-1}` is not guaranteed in
389
+ general. In this case, this method raises an error.
390
+
391
+ EXAMPLES::
392
+
393
+ sage: # needs sage.rings.finite_rings
394
+ sage: k.<a> = GF(5^3)
395
+ sage: Frob = k.frobenius_endomorphism()
396
+ sage: S.<x> = k['x', Frob]
397
+ sage: s = x + a
398
+ sage: t = x^2 + a*x + a^2
399
+ sage: f = t/s
400
+ sage: f.left_numerator()
401
+ x^2 + a*x + a^2
402
+
403
+ In the example below, a simplification occurs::
404
+
405
+ sage: # needs sage.rings.finite_rings
406
+ sage: u = S.random_element(degree=2)
407
+ sage: g = (t*u) / (s*u)
408
+ sage: g.left_numerator()
409
+ x^2 + a*x + a^2
410
+ """
411
+ return self._reverse_fraction()[0]
412
+
413
+ def is_zero(self):
414
+ r"""
415
+ Return ``True`` if this element is equal to zero.
416
+
417
+ EXAMPLES::
418
+
419
+ sage: R.<t> = GF(3)[]
420
+ sage: der = R.derivation()
421
+ sage: A.<d> = R['x', der]
422
+ sage: f = t/d
423
+ sage: f.is_zero()
424
+ False
425
+ sage: (f-f).is_zero()
426
+ True
427
+ """
428
+ return self._numerator.is_zero()
429
+
430
+ def _add_(self, other):
431
+ r"""
432
+ Return the sum of this element and ``other``.
433
+
434
+ INPUT:
435
+
436
+ - ``other`` -- a Ore function
437
+
438
+ TESTS::
439
+
440
+ sage: # needs sage.rings.finite_rings
441
+ sage: k.<a> = GF(5^2)
442
+ sage: Frob = k.frobenius_endomorphism()
443
+ sage: der = k.derivation(a, twist=Frob)
444
+ sage: S.<x> = k['x', der]
445
+ sage: K = S.fraction_field()
446
+ sage: f = K.random_element()
447
+ sage: g = K.random_element()
448
+ sage: h = K.random_element()
449
+ sage: f + g == g + f
450
+ True
451
+ sage: f + (g + h) == (f + g) + h
452
+ True
453
+ """
454
+ denominator, U, V = self._denominator.left_xlcm(other._denominator)
455
+ numerator = U * self._numerator + V * other._numerator
456
+ return self.parent()(numerator, denominator)
457
+
458
+ def _sub_(self, other):
459
+ r"""
460
+ Return the subtraction of this element and ``other``.
461
+
462
+ INPUT:
463
+
464
+ - ``other`` -- a Ore function
465
+
466
+ TESTS::
467
+
468
+ sage: # needs sage.rings.finite_rings
469
+ sage: k.<a> = GF(5^2)
470
+ sage: Frob = k.frobenius_endomorphism()
471
+ sage: der = k.derivation(a, twist=Frob)
472
+ sage: S.<x> = k['x', der]
473
+ sage: K = S.fraction_field()
474
+ sage: f = K.random_element()
475
+ sage: g = K.random_element()
476
+ sage: h = K.random_element()
477
+ sage: f - (g - h) == (f - g) + h
478
+ True
479
+ """
480
+ denominator, U, V = self._denominator.left_xlcm(other._denominator)
481
+ numerator = U * self._numerator - V * other._numerator
482
+ return self.parent()(numerator, denominator)
483
+
484
+ def _neg_(self):
485
+ r"""
486
+ Return the opposite of this element.
487
+
488
+ TESTS::
489
+
490
+ sage: # needs sage.rings.finite_rings
491
+ sage: k.<a> = GF(5^2)
492
+ sage: Frob = k.frobenius_endomorphism()
493
+ sage: der = k.derivation(a, twist=Frob)
494
+ sage: S.<x> = k['x', der]
495
+ sage: K = S.fraction_field()
496
+ sage: f = K.random_element()
497
+ sage: g = -f
498
+ sage: (f+g).is_zero()
499
+ True
500
+ """
501
+ return self.parent()(-self._numerator, self._denominator, simplify=False)
502
+
503
+ def _mul_(self, other):
504
+ r"""
505
+ Return the product of this element and ``other``.
506
+
507
+ INPUT:
508
+
509
+ - ``other`` -- a Ore function
510
+
511
+ TESTS::
512
+
513
+ sage: # needs sage.rings.finite_rings
514
+ sage: k.<a> = GF(5^2)
515
+ sage: Frob = k.frobenius_endomorphism()
516
+ sage: der = k.derivation(a, twist=Frob)
517
+ sage: S.<x> = k['x', der]
518
+ sage: K = S.fraction_field()
519
+ sage: f = K.random_element()
520
+ sage: g = K.random_element()
521
+ sage: h = K.random_element()
522
+ sage: (f * g) * h == f * (g * h)
523
+ True
524
+ sage: f * (g + h) == f*g + f*h
525
+ True
526
+ sage: (f + g) * h == f*h + g*h
527
+ True
528
+ """
529
+ if self.is_zero():
530
+ return self
531
+ if other.is_zero():
532
+ return other
533
+ L, U, V = self._numerator.left_xlcm(other._denominator, monic=False)
534
+ denominator = U * self._denominator
535
+ numerator = V * other._numerator
536
+ return self.parent()(numerator, denominator)
537
+
538
+ def _div_(self, other):
539
+ r"""
540
+ Return the division of this element by ``other``.
541
+
542
+ INPUT:
543
+
544
+ - ``other`` -- a Ore function
545
+
546
+ TESTS::
547
+
548
+ sage: # needs sage.rings.finite_rings
549
+ sage: k.<a> = GF(5^2)
550
+ sage: Frob = k.frobenius_endomorphism()
551
+ sage: der = k.derivation(a, twist=Frob)
552
+ sage: S.<x> = k['x', der]
553
+ sage: K = S.fraction_field()
554
+ sage: f = K.random_element()
555
+ sage: g = K.random_element()
556
+ sage: h = K.random_element()
557
+ sage: g == 0 or h == 0 or f / (g / h) == f*h / g
558
+ True
559
+ sage: 0/f
560
+ 0
561
+ sage: f/0
562
+ Traceback (most recent call last):
563
+ ...
564
+ ZeroDivisionError: cannot divide by zero
565
+
566
+ We check that :issue:`32109` is fixed::
567
+
568
+ sage: K(0)/K(0) # needs sage.rings.finite_rings
569
+ Traceback (most recent call last):
570
+ ...
571
+ ZeroDivisionError: cannot divide by zero
572
+ """
573
+ if not other._numerator:
574
+ raise ZeroDivisionError("cannot divide by zero")
575
+ if not self._numerator:
576
+ return self
577
+ L, U, V = self._numerator.left_xlcm(other._numerator, monic=False)
578
+ denominator = U * self._denominator
579
+ numerator = V * other._denominator
580
+ return self.parent()(numerator, denominator)
581
+
582
+ def __invert__(self):
583
+ r"""
584
+ Return the inverse of this element.
585
+
586
+ TESTS::
587
+
588
+ sage: # needs sage.rings.finite_rings
589
+ sage: k.<a> = GF(5^2)
590
+ sage: Frob = k.frobenius_endomorphism()
591
+ sage: der = k.derivation(a, twist=Frob)
592
+ sage: S.<x> = k['x', der]
593
+ sage: K = S.fraction_field()
594
+ sage: f = K.random_element()
595
+ sage: g = ~f
596
+ sage: f * g
597
+ 1
598
+ sage: ~K(0)
599
+ Traceback (most recent call last):
600
+ ...
601
+ ZeroDivisionError: cannot divide by zero
602
+ """
603
+ if not self._numerator:
604
+ raise ZeroDivisionError("cannot divide by zero")
605
+ return self.parent()(self._denominator, self._numerator)
606
+
607
+ def hilbert_shift(self, s, var=None):
608
+ r"""
609
+ Return this Ore function with variable shifted by `s`,
610
+ i.e. if this Ore function is `f(x)`, return `f(x+s)`.
611
+
612
+ INPUT:
613
+
614
+ - ``s`` -- an element in the base ring
615
+
616
+ - ``var`` -- string; the variable name
617
+
618
+ EXAMPLES::
619
+
620
+ sage: R.<t> = GF(7)[]
621
+ sage: der = R.derivation()
622
+ sage: A.<d> = R['d', der]
623
+ sage: K = A.fraction_field()
624
+
625
+ sage: f = 1 / (d-t)
626
+ sage: f.hilbert_shift(t)
627
+ d^(-1)
628
+
629
+ One can specify another variable name::
630
+
631
+ sage: f.hilbert_shift(t, var='x')
632
+ x^(-1)
633
+
634
+ When the twisting morphism is not trivial, the output lies
635
+ in a different Ore polynomial ring::
636
+
637
+ sage: # needs sage.rings.finite_rings
638
+ sage: k.<a> = GF(5^3)
639
+ sage: Frob = k.frobenius_endomorphism()
640
+ sage: S.<x> = k['x', Frob]
641
+ sage: K = S.fraction_field()
642
+ sage: f = (x-a)^(-2)
643
+ sage: g = f.hilbert_shift(a); g
644
+ x^(-2)
645
+ sage: g.parent()
646
+ Ore Function Field in x over Finite Field in a of size 5^3
647
+ twisted by a |--> a^5 and a*([a |--> a^5] - id)
648
+ sage: g.parent() is S
649
+ False
650
+
651
+ This behavior ensures that the Hilbert shift by a fixed element
652
+ defines a homomorphism of fields::
653
+
654
+ sage: # needs sage.rings.finite_rings
655
+ sage: U = K.random_element(degree=5)
656
+ sage: V = K.random_element(degree=5)
657
+ sage: s = k.random_element()
658
+ sage: (U+V).hilbert_shift(s) == U.hilbert_shift(s) + V.hilbert_shift(s)
659
+ True
660
+ sage: (U*V).hilbert_shift(s) == U.hilbert_shift(s) * V.hilbert_shift(s)
661
+ True
662
+ """
663
+ numerator = self._numerator.hilbert_shift(s, var)
664
+ denominator = self._denominator.hilbert_shift(s, var)
665
+ parent = numerator.parent().fraction_field()
666
+ return parent(numerator, denominator, simplify=False)
667
+
668
+
669
+ class ConstantOreFunctionSection(Map):
670
+ r"""
671
+ Representation of the canonical homomorphism from the constants of a Ore
672
+ function field to the base field.
673
+
674
+ This class is needed by the coercion system.
675
+
676
+ EXAMPLES::
677
+
678
+ sage: # needs sage.rings.finite_rings
679
+ sage: from sage.rings.polynomial.ore_polynomial_element import ConstantOrePolynomialSection
680
+ sage: k.<a> = GF(5^3)
681
+ sage: Frob = k.frobenius_endomorphism()
682
+ sage: S.<x> = k['x', Frob]
683
+ sage: K = S.fraction_field()
684
+ sage: iota = K.coerce_map_from(k)
685
+ sage: sigma = iota.section(); sigma
686
+ Generic map:
687
+ From: Ore Function Field in x over Finite Field in a of size 5^3
688
+ twisted by a |--> a^5
689
+ To: Finite Field in a of size 5^3
690
+ """
691
+ def _call_(self, x):
692
+ r"""
693
+ Return `x` viewed in the base field,
694
+ or raise an error if `x` is not a constant Ore function.
695
+
696
+ TESTS::
697
+
698
+ sage: R.<t> = QQ[]
699
+ sage: F = R.fraction_field()
700
+ sage: sigma = R.hom([t^2])
701
+ sage: S.<x> = R['x', sigma]
702
+ sage: P = S._random_nonzero_element()
703
+ sage: f = (t*P) / P # needs sage.rings.function_field
704
+ sage: F(f) # needs sage.rings.function_field
705
+ t
706
+ sage: g = x / (x+t) # needs sage.rings.function_field
707
+ sage: F(g) # needs sage.rings.function_field
708
+ Traceback (most recent call last):
709
+ ...
710
+ TypeError: (x + t^2)^(-1) * x is not a constant function
711
+ """
712
+ numerator = x._numerator
713
+ denominator = x._denominator
714
+ if numerator.degree() == denominator.degree() and denominator.right_divides(numerator):
715
+ return numerator.leading_coefficient() / denominator.leading_coefficient()
716
+ raise TypeError(f"{x} is not a constant function")
717
+
718
+
719
+ class OreFunctionBaseringInjection(Morphism):
720
+ r"""
721
+ Representation of the canonical homomorphism from a field `k` into a Ore
722
+ function field over `k`.
723
+
724
+ This class is needed by the coercion system.
725
+ """
726
+ def __init__(self, domain, codomain):
727
+ r"""
728
+ Initialize this morphism.
729
+
730
+ EXAMPLES::
731
+
732
+ sage: R.<t> = QQ[]
733
+ sage: sigma = R.hom([t+1])
734
+ sage: S.<x> = R['x',sigma]
735
+ sage: K = S.fraction_field() # needs sage.rings.function_field
736
+ sage: K.coerce_map_from(K.base_ring()) # indirect doctest # needs sage.rings.function_field
737
+ Ore Function base injection morphism:
738
+ From: Fraction Field of Univariate Polynomial Ring in t over Rational Field
739
+ To: Ore Function Field in x over Fraction Field of Univariate Polynomial Ring in t over Rational Field twisted by t |--> t + 1
740
+ """
741
+ assert codomain.base_ring() is domain, \
742
+ "the domain of the injection must be the base ring of the Ore function field"
743
+ Morphism.__init__(self, Hom(domain,codomain))
744
+ self._an_element = codomain.gen()
745
+ self._repr_type_str = "Ore Function base injection"
746
+
747
+ def an_element(self):
748
+ r"""
749
+ Return an element of the codomain of the ring homomorphism.
750
+
751
+ EXAMPLES::
752
+
753
+ sage: # needs sage.rings.finite_rings
754
+ sage: k.<t> = GF(5^3)
755
+ sage: Frob = k.frobenius_endomorphism()
756
+ sage: S.<x> = k['x',Frob]
757
+ sage: K = S.fraction_field()
758
+ sage: m = K.coerce_map_from(k)
759
+ sage: m.an_element()
760
+ x
761
+ """
762
+ return self._an_element
763
+
764
+ def _call_(self, x):
765
+ r"""
766
+ Return the constant Ore function equal to `x`.
767
+
768
+ INPUT:
769
+
770
+ - ``e`` -- element in the base ring
771
+
772
+ TESTS::
773
+
774
+ sage: # needs sage.rings.finite_rings
775
+ sage: k.<t> = GF(5^3)
776
+ sage: Frob = k.frobenius_endomorphism()
777
+ sage: S.<x> = k['x',Frob]
778
+ sage: K = S.fraction_field()
779
+ sage: m = K.coerce_map_from(k)
780
+ sage: m(t)
781
+ t
782
+ sage: m(t).parent()
783
+ Ore Function Field in x over Finite Field in t of size 5^3 twisted by t |--> t^5
784
+ """
785
+ codomain = self.codomain()
786
+ try:
787
+ return codomain._element_constructor_(x)
788
+ except AttributeError:
789
+ return codomain(x)
790
+
791
+ def section(self):
792
+ r"""
793
+ Return the canonical homomorphism from the constants of a Ore
794
+ function filed to its base field.
795
+
796
+ TESTS::
797
+
798
+ sage: # needs sage.rings.finite_rings
799
+ sage: k.<t> = GF(5^3)
800
+ sage: Frob = k.frobenius_endomorphism()
801
+ sage: S.<x> = k['x',Frob]
802
+ sage: K = S.fraction_field()
803
+ sage: m = K.coerce_map_from(k)
804
+ sage: m.section()
805
+ Generic map:
806
+ From: Ore Function Field in x over Finite Field in t of size 5^3
807
+ twisted by t |--> t^5
808
+ To: Finite Field in t of size 5^3
809
+ """
810
+ return ConstantOreFunctionSection(self.codomain(), self.domain())
811
+
812
+
813
+ # Ore functions over Ore function field with finite index center
814
+ ################################################################
815
+
816
+ class OreFunction_with_large_center(OreFunction):
817
+ r"""
818
+ A special class for elements of Ore function fields whose
819
+ center has finite index.
820
+
821
+ TESTS::
822
+
823
+ sage: # needs sage.rings.finite_rings
824
+ sage: k.<a> = GF(5^3)
825
+ sage: Frob = k.frobenius_endomorphism()
826
+ sage: S.<x> = k['x', Frob]
827
+ sage: K = S.fraction_field()
828
+ sage: f = K.random_element()
829
+ sage: from sage.rings.polynomial.ore_function_element import OreFunction_with_large_center
830
+ sage: isinstance(f, OreFunction_with_large_center)
831
+ True
832
+
833
+ sage: # TestSuite(f).run()
834
+ """
835
+ def reduced_trace(self, var=None):
836
+ r"""
837
+ Return the reduced trace of this element.
838
+
839
+ INPUT:
840
+
841
+ - ``var`` -- string or ``None`` (default: ``None``);
842
+ the name of the central variable
843
+
844
+ EXAMPLES::
845
+
846
+ sage: # needs sage.rings.finite_rings
847
+ sage: k.<t> = GF(5^3)
848
+ sage: Frob = k.frobenius_endomorphism()
849
+ sage: S.<x> = k['x', Frob]
850
+ sage: K = S.fraction_field()
851
+ sage: a = 1 / (x^2 + t)
852
+ sage: tr = a.reduced_trace(); tr
853
+ 3/(z^2 + 2)
854
+
855
+ The reduced trace lies in the center of `S`, which is the fraction field
856
+ of a univariate polynomial ring in the variable `z = x^3` over `GF(5)`::
857
+
858
+ sage: # needs sage.rings.finite_rings
859
+ sage: tr.parent()
860
+ Fraction Field of Univariate Polynomial Ring in z over Finite Field of size 5
861
+ sage: tr.parent() is K.center()
862
+ True
863
+
864
+ We can use explicit conversion to view ``tr`` as a Ore function::
865
+
866
+ sage: K(tr) # needs sage.rings.finite_rings
867
+ (x^6 + 2)^(-1) * 3
868
+
869
+ By default, the name of the central variable is usually ``z`` (see
870
+ :meth:`sage.rings.polynomial.skew_polynomial_ring.OreFunctionField_with_large_center.center`
871
+ for more details about this).
872
+ However, the user can specify a different variable name if desired::
873
+
874
+ sage: a.reduced_trace(var='u') # needs sage.rings.finite_rings
875
+ 3/(u^2 + 2)
876
+
877
+ TESTS:
878
+
879
+ We check that the reduced trace is additive::
880
+
881
+ sage: # needs sage.rings.finite_rings
882
+ sage: a = K.random_element(degree=5)
883
+ sage: b = K.random_element(degree=7)
884
+ sage: a.reduced_trace() + b.reduced_trace() == (a+b).reduced_trace()
885
+ True
886
+
887
+ ::
888
+
889
+ sage: (a*b).reduced_trace() == (b*a).reduced_trace() # needs sage.rings.finite_rings
890
+ True
891
+ """
892
+ ring = self.parent()._ring
893
+ denominator = self._denominator.reduced_norm(var)
894
+ cofactor, _ = ring(denominator).right_quo_rem(self._denominator)
895
+ numerator = (cofactor * self._numerator).reduced_trace(var)
896
+ return numerator/denominator
897
+
898
+ def reduced_norm(self, var=None):
899
+ r"""
900
+ Return the reduced norm of this Ore function.
901
+
902
+ INPUT:
903
+
904
+ - ``var`` -- string or ``None`` (default: ``None``);
905
+ the name of the central variable
906
+
907
+ EXAMPLES::
908
+
909
+ sage: # needs sage.rings.finite_rings
910
+ sage: k.<t> = GF(5^3)
911
+ sage: Frob = k.frobenius_endomorphism()
912
+ sage: S.<x> = k['x', Frob]
913
+ sage: K = S.fraction_field()
914
+ sage: a = (x + t) / (x^2 + t^2)
915
+ sage: N = a.reduced_norm(); N
916
+ (z + 2)/(z^2 + 4)
917
+
918
+ The reduced norm lies in the center of `S`, which is the fraction field
919
+ of a univariate polynomial ring in the variable `z = x^3` over `GF(5)`. ::
920
+
921
+ sage: # needs sage.rings.finite_rings
922
+ sage: N.parent()
923
+ Fraction Field of Univariate Polynomial Ring in z over Finite Field of size 5
924
+ sage: N.parent() is K.center()
925
+ True
926
+
927
+ We can use explicit conversion to view ``N`` as a skew polynomial::
928
+
929
+ sage: K(N) # needs sage.rings.finite_rings
930
+ (x^6 + 4)^(-1) * (x^3 + 2)
931
+
932
+ By default, the name of the central variable is usually ``z`` (see
933
+ :meth:`sage.rings.polynomial.skew_polynomial_ring.SkewPolynomialRing_finite_order.center`
934
+ for more details about this).
935
+ However, the user can specify a different variable name if desired::
936
+
937
+ sage: a.reduced_norm(var='u') # needs sage.rings.finite_rings
938
+ (u + 2)/(u^2 + 4)
939
+
940
+ TESTS:
941
+
942
+ We check that the reduced norm is a multiplicative map::
943
+
944
+ sage: # needs sage.rings.finite_rings
945
+ sage: a = K.random_element()
946
+ sage: b = K.random_element()
947
+ sage: a.reduced_norm() * b.reduced_norm() == (a*b).reduced_norm()
948
+ True
949
+ """
950
+ numerator = self._numerator.reduced_norm(var)
951
+ denominator = self._denominator.reduced_norm(var)
952
+ return numerator/denominator