passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_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 (807) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +807 -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-2d945d6c.so.1 +0 -0
  6. passagemath_modules.libs/libgfortran-67378ab2.so.5.0.0 +0 -0
  7. passagemath_modules.libs/libgmp-28992bcb.so.10.5.0 +0 -0
  8. passagemath_modules.libs/libgsl-23768756.so.28.0.0 +0 -0
  9. passagemath_modules.libs/libmpc-7897025b.so.3.3.1 +0 -0
  10. passagemath_modules.libs/libmpfr-e34bb864.so.6.2.1 +0 -0
  11. passagemath_modules.libs/libopenblasp-r0-503f0c35.3.29.so +0 -0
  12. sage/algebras/all__sagemath_modules.py +20 -0
  13. sage/algebras/catalog.py +148 -0
  14. sage/algebras/clifford_algebra.py +3107 -0
  15. sage/algebras/clifford_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
  16. sage/algebras/clifford_algebra_element.pxd +16 -0
  17. sage/algebras/clifford_algebra_element.pyx +997 -0
  18. sage/algebras/commutative_dga.py +4252 -0
  19. sage/algebras/exterior_algebra_groebner.cpython-314-aarch64-linux-musl.so +0 -0
  20. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  21. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  22. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  23. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  28. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  29. sage/algebras/finite_gca.py +528 -0
  30. sage/algebras/group_algebra.py +232 -0
  31. sage/algebras/lie_algebras/abelian.py +197 -0
  32. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  33. sage/algebras/lie_algebras/all.py +25 -0
  34. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  35. sage/algebras/lie_algebras/bch.py +177 -0
  36. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  37. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  38. sage/algebras/lie_algebras/center_uea.py +767 -0
  39. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  40. sage/algebras/lie_algebras/examples.py +683 -0
  41. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  42. sage/algebras/lie_algebras/heisenberg.py +820 -0
  43. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  44. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  46. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  47. sage/algebras/lie_algebras/morphism.py +661 -0
  48. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  49. sage/algebras/lie_algebras/onsager.py +1324 -0
  50. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  51. sage/algebras/lie_algebras/quotient.py +462 -0
  52. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  53. sage/algebras/lie_algebras/representation.py +1040 -0
  54. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  55. sage/algebras/lie_algebras/subalgebra.py +967 -0
  56. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  57. sage/algebras/lie_algebras/verma_module.py +1630 -0
  58. sage/algebras/lie_algebras/virasoro.py +1186 -0
  59. sage/algebras/octonion_algebra.cpython-314-aarch64-linux-musl.so +0 -0
  60. sage/algebras/octonion_algebra.pxd +20 -0
  61. sage/algebras/octonion_algebra.pyx +987 -0
  62. sage/algebras/orlik_solomon.py +907 -0
  63. sage/algebras/orlik_terao.py +779 -0
  64. sage/algebras/steenrod/all.py +7 -0
  65. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  66. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  67. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  68. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  69. sage/algebras/weyl_algebra.py +1126 -0
  70. sage/all__sagemath_modules.py +62 -0
  71. sage/calculus/all__sagemath_modules.py +19 -0
  72. sage/calculus/expr.py +205 -0
  73. sage/calculus/integration.cpython-314-aarch64-linux-musl.so +0 -0
  74. sage/calculus/integration.pyx +698 -0
  75. sage/calculus/interpolation.cpython-314-aarch64-linux-musl.so +0 -0
  76. sage/calculus/interpolation.pxd +13 -0
  77. sage/calculus/interpolation.pyx +387 -0
  78. sage/calculus/interpolators.cpython-314-aarch64-linux-musl.so +0 -0
  79. sage/calculus/interpolators.pyx +326 -0
  80. sage/calculus/ode.cpython-314-aarch64-linux-musl.so +0 -0
  81. sage/calculus/ode.pxd +5 -0
  82. sage/calculus/ode.pyx +610 -0
  83. sage/calculus/riemann.cpython-314-aarch64-linux-musl.so +0 -0
  84. sage/calculus/riemann.pyx +1521 -0
  85. sage/calculus/test_sympy.py +201 -0
  86. sage/calculus/transforms/all.py +7 -0
  87. sage/calculus/transforms/dft.py +844 -0
  88. sage/calculus/transforms/dwt.cpython-314-aarch64-linux-musl.so +0 -0
  89. sage/calculus/transforms/dwt.pxd +7 -0
  90. sage/calculus/transforms/dwt.pyx +160 -0
  91. sage/calculus/transforms/fft.cpython-314-aarch64-linux-musl.so +0 -0
  92. sage/calculus/transforms/fft.pxd +12 -0
  93. sage/calculus/transforms/fft.pyx +487 -0
  94. sage/calculus/wester.py +662 -0
  95. sage/coding/abstract_code.py +1108 -0
  96. sage/coding/ag_code.py +868 -0
  97. sage/coding/ag_code_decoders.cpython-314-aarch64-linux-musl.so +0 -0
  98. sage/coding/ag_code_decoders.pyx +2639 -0
  99. sage/coding/all.py +15 -0
  100. sage/coding/bch_code.py +494 -0
  101. sage/coding/binary_code.cpython-314-aarch64-linux-musl.so +0 -0
  102. sage/coding/binary_code.pxd +124 -0
  103. sage/coding/binary_code.pyx +4139 -0
  104. sage/coding/bounds_catalog.py +43 -0
  105. sage/coding/channel.py +819 -0
  106. sage/coding/channels_catalog.py +29 -0
  107. sage/coding/code_bounds.py +755 -0
  108. sage/coding/code_constructions.py +804 -0
  109. sage/coding/codes_catalog.py +111 -0
  110. sage/coding/cyclic_code.py +1329 -0
  111. sage/coding/databases.py +316 -0
  112. sage/coding/decoder.py +373 -0
  113. sage/coding/decoders_catalog.py +88 -0
  114. sage/coding/delsarte_bounds.py +709 -0
  115. sage/coding/encoder.py +390 -0
  116. sage/coding/encoders_catalog.py +64 -0
  117. sage/coding/extended_code.py +468 -0
  118. sage/coding/gabidulin_code.py +1058 -0
  119. sage/coding/golay_code.py +404 -0
  120. sage/coding/goppa_code.py +441 -0
  121. sage/coding/grs_code.py +2371 -0
  122. sage/coding/guava.py +107 -0
  123. sage/coding/guruswami_sudan/all.py +1 -0
  124. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  125. sage/coding/guruswami_sudan/interpolation.py +409 -0
  126. sage/coding/guruswami_sudan/utils.py +176 -0
  127. sage/coding/hamming_code.py +176 -0
  128. sage/coding/information_set_decoder.py +1032 -0
  129. sage/coding/kasami_codes.cpython-314-aarch64-linux-musl.so +0 -0
  130. sage/coding/kasami_codes.pyx +351 -0
  131. sage/coding/linear_code.py +3067 -0
  132. sage/coding/linear_code_no_metric.py +1354 -0
  133. sage/coding/linear_rank_metric.py +961 -0
  134. sage/coding/parity_check_code.py +353 -0
  135. sage/coding/punctured_code.py +719 -0
  136. sage/coding/reed_muller_code.py +999 -0
  137. sage/coding/self_dual_codes.py +942 -0
  138. sage/coding/source_coding/all.py +2 -0
  139. sage/coding/source_coding/huffman.py +553 -0
  140. sage/coding/subfield_subcode.py +423 -0
  141. sage/coding/two_weight_db.py +399 -0
  142. sage/combinat/all__sagemath_modules.py +7 -0
  143. sage/combinat/cartesian_product.py +347 -0
  144. sage/combinat/family.py +11 -0
  145. sage/combinat/free_module.py +1977 -0
  146. sage/combinat/root_system/all.py +147 -0
  147. sage/combinat/root_system/ambient_space.py +527 -0
  148. sage/combinat/root_system/associahedron.py +471 -0
  149. sage/combinat/root_system/braid_move_calculator.py +143 -0
  150. sage/combinat/root_system/braid_orbit.cpython-314-aarch64-linux-musl.so +0 -0
  151. sage/combinat/root_system/braid_orbit.pyx +144 -0
  152. sage/combinat/root_system/branching_rules.py +2301 -0
  153. sage/combinat/root_system/cartan_matrix.py +1245 -0
  154. sage/combinat/root_system/cartan_type.py +3069 -0
  155. sage/combinat/root_system/coxeter_group.py +162 -0
  156. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  157. sage/combinat/root_system/coxeter_type.py +681 -0
  158. sage/combinat/root_system/dynkin_diagram.py +900 -0
  159. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  160. sage/combinat/root_system/fundamental_group.py +795 -0
  161. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  162. sage/combinat/root_system/integrable_representations.py +1227 -0
  163. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  164. sage/combinat/root_system/pieri_factors.py +1147 -0
  165. sage/combinat/root_system/plot.py +1615 -0
  166. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  167. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  168. sage/combinat/root_system/root_space.py +487 -0
  169. sage/combinat/root_system/root_system.py +882 -0
  170. sage/combinat/root_system/type_A.py +348 -0
  171. sage/combinat/root_system/type_A_affine.py +227 -0
  172. sage/combinat/root_system/type_A_infinity.py +241 -0
  173. sage/combinat/root_system/type_B.py +347 -0
  174. sage/combinat/root_system/type_BC_affine.py +287 -0
  175. sage/combinat/root_system/type_B_affine.py +216 -0
  176. sage/combinat/root_system/type_C.py +317 -0
  177. sage/combinat/root_system/type_C_affine.py +188 -0
  178. sage/combinat/root_system/type_D.py +357 -0
  179. sage/combinat/root_system/type_D_affine.py +208 -0
  180. sage/combinat/root_system/type_E.py +641 -0
  181. sage/combinat/root_system/type_E_affine.py +231 -0
  182. sage/combinat/root_system/type_F.py +387 -0
  183. sage/combinat/root_system/type_F_affine.py +137 -0
  184. sage/combinat/root_system/type_G.py +293 -0
  185. sage/combinat/root_system/type_G_affine.py +132 -0
  186. sage/combinat/root_system/type_H.py +105 -0
  187. sage/combinat/root_system/type_I.py +110 -0
  188. sage/combinat/root_system/type_Q.py +150 -0
  189. sage/combinat/root_system/type_affine.py +509 -0
  190. sage/combinat/root_system/type_dual.py +704 -0
  191. sage/combinat/root_system/type_folded.py +301 -0
  192. sage/combinat/root_system/type_marked.py +748 -0
  193. sage/combinat/root_system/type_reducible.py +601 -0
  194. sage/combinat/root_system/type_relabel.py +730 -0
  195. sage/combinat/root_system/type_super_A.py +837 -0
  196. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  197. sage/combinat/root_system/weight_space.py +639 -0
  198. sage/combinat/root_system/weyl_characters.py +2238 -0
  199. sage/crypto/__init__.py +4 -0
  200. sage/crypto/all.py +28 -0
  201. sage/crypto/block_cipher/all.py +7 -0
  202. sage/crypto/block_cipher/des.py +1065 -0
  203. sage/crypto/block_cipher/miniaes.py +2171 -0
  204. sage/crypto/block_cipher/present.py +909 -0
  205. sage/crypto/block_cipher/sdes.py +1527 -0
  206. sage/crypto/boolean_function.cpython-314-aarch64-linux-musl.so +0 -0
  207. sage/crypto/boolean_function.pxd +10 -0
  208. sage/crypto/boolean_function.pyx +1487 -0
  209. sage/crypto/cipher.py +78 -0
  210. sage/crypto/classical.py +3668 -0
  211. sage/crypto/classical_cipher.py +569 -0
  212. sage/crypto/cryptosystem.py +387 -0
  213. sage/crypto/key_exchange/all.py +7 -0
  214. sage/crypto/key_exchange/catalog.py +24 -0
  215. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  216. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  217. sage/crypto/lattice.py +312 -0
  218. sage/crypto/lfsr.py +295 -0
  219. sage/crypto/lwe.py +840 -0
  220. sage/crypto/mq/__init__.py +4 -0
  221. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  222. sage/crypto/mq/rijndael_gf.py +2345 -0
  223. sage/crypto/mq/sbox.py +7 -0
  224. sage/crypto/mq/sr.py +3344 -0
  225. sage/crypto/public_key/all.py +5 -0
  226. sage/crypto/public_key/blum_goldwasser.py +776 -0
  227. sage/crypto/sbox.cpython-314-aarch64-linux-musl.so +0 -0
  228. sage/crypto/sbox.pyx +2090 -0
  229. sage/crypto/sboxes.py +2090 -0
  230. sage/crypto/stream.py +390 -0
  231. sage/crypto/stream_cipher.py +297 -0
  232. sage/crypto/util.py +519 -0
  233. sage/ext/all__sagemath_modules.py +1 -0
  234. sage/ext/interpreters/__init__.py +1 -0
  235. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  236. sage/ext/interpreters/wrapper_cc.cpython-314-aarch64-linux-musl.so +0 -0
  237. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  238. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  239. sage/ext/interpreters/wrapper_cdf.cpython-314-aarch64-linux-musl.so +0 -0
  240. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  241. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  242. sage/ext/interpreters/wrapper_rdf.cpython-314-aarch64-linux-musl.so +0 -0
  243. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  244. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  245. sage/ext/interpreters/wrapper_rr.cpython-314-aarch64-linux-musl.so +0 -0
  246. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  247. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  248. sage/geometry/all__sagemath_modules.py +5 -0
  249. sage/geometry/toric_lattice.py +1745 -0
  250. sage/geometry/toric_lattice_element.cpython-314-aarch64-linux-musl.so +0 -0
  251. sage/geometry/toric_lattice_element.pyx +432 -0
  252. sage/groups/abelian_gps/abelian_group.py +1925 -0
  253. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  254. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  255. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  256. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  257. sage/groups/abelian_gps/element_base.py +341 -0
  258. sage/groups/abelian_gps/values.py +488 -0
  259. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  260. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  261. sage/groups/additive_abelian/all.py +4 -0
  262. sage/groups/additive_abelian/qmodnz.py +231 -0
  263. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  264. sage/groups/affine_gps/affine_group.py +535 -0
  265. sage/groups/affine_gps/all.py +1 -0
  266. sage/groups/affine_gps/catalog.py +17 -0
  267. sage/groups/affine_gps/euclidean_group.py +246 -0
  268. sage/groups/affine_gps/group_element.py +562 -0
  269. sage/groups/all__sagemath_modules.py +12 -0
  270. sage/groups/galois_group.py +479 -0
  271. sage/groups/matrix_gps/all.py +4 -0
  272. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  273. sage/groups/matrix_gps/catalog.py +26 -0
  274. sage/groups/matrix_gps/coxeter_group.py +927 -0
  275. sage/groups/matrix_gps/finitely_generated.py +487 -0
  276. sage/groups/matrix_gps/group_element.cpython-314-aarch64-linux-musl.so +0 -0
  277. sage/groups/matrix_gps/group_element.pxd +11 -0
  278. sage/groups/matrix_gps/group_element.pyx +431 -0
  279. sage/groups/matrix_gps/linear.py +440 -0
  280. sage/groups/matrix_gps/matrix_group.py +617 -0
  281. sage/groups/matrix_gps/named_group.py +296 -0
  282. sage/groups/matrix_gps/orthogonal.py +544 -0
  283. sage/groups/matrix_gps/symplectic.py +251 -0
  284. sage/groups/matrix_gps/unitary.py +436 -0
  285. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  286. sage/groups/misc_gps/argument_groups.py +1905 -0
  287. sage/groups/misc_gps/imaginary_groups.py +479 -0
  288. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  289. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  290. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-aarch64-linux-musl.so +0 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  292. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  293. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-aarch64-linux-musl.so +0 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  295. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  296. sage/homology/algebraic_topological_model.py +595 -0
  297. sage/homology/all.py +2 -0
  298. sage/homology/all__sagemath_modules.py +8 -0
  299. sage/homology/chain_complex.py +2148 -0
  300. sage/homology/chain_complex_homspace.py +165 -0
  301. sage/homology/chain_complex_morphism.py +629 -0
  302. sage/homology/chain_homotopy.py +604 -0
  303. sage/homology/chains.py +653 -0
  304. sage/homology/free_resolution.py +923 -0
  305. sage/homology/graded_resolution.py +567 -0
  306. sage/homology/hochschild_complex.py +756 -0
  307. sage/homology/homology_group.py +188 -0
  308. sage/homology/homology_morphism.py +422 -0
  309. sage/homology/homology_vector_space_with_basis.py +1454 -0
  310. sage/homology/koszul_complex.py +169 -0
  311. sage/homology/matrix_utils.py +205 -0
  312. sage/libs/all__sagemath_modules.py +1 -0
  313. sage/libs/gsl/__init__.py +1 -0
  314. sage/libs/gsl/airy.pxd +56 -0
  315. sage/libs/gsl/all.pxd +66 -0
  316. sage/libs/gsl/array.cpython-314-aarch64-linux-musl.so +0 -0
  317. sage/libs/gsl/array.pxd +5 -0
  318. sage/libs/gsl/array.pyx +102 -0
  319. sage/libs/gsl/bessel.pxd +208 -0
  320. sage/libs/gsl/blas.pxd +116 -0
  321. sage/libs/gsl/blas_types.pxd +34 -0
  322. sage/libs/gsl/block.pxd +52 -0
  323. sage/libs/gsl/chebyshev.pxd +37 -0
  324. sage/libs/gsl/clausen.pxd +12 -0
  325. sage/libs/gsl/combination.pxd +47 -0
  326. sage/libs/gsl/complex.pxd +151 -0
  327. sage/libs/gsl/coulomb.pxd +30 -0
  328. sage/libs/gsl/coupling.pxd +21 -0
  329. sage/libs/gsl/dawson.pxd +12 -0
  330. sage/libs/gsl/debye.pxd +24 -0
  331. sage/libs/gsl/dilog.pxd +14 -0
  332. sage/libs/gsl/eigen.pxd +46 -0
  333. sage/libs/gsl/elementary.pxd +12 -0
  334. sage/libs/gsl/ellint.pxd +48 -0
  335. sage/libs/gsl/elljac.pxd +8 -0
  336. sage/libs/gsl/erf.pxd +32 -0
  337. sage/libs/gsl/errno.pxd +26 -0
  338. sage/libs/gsl/exp.pxd +44 -0
  339. sage/libs/gsl/expint.pxd +44 -0
  340. sage/libs/gsl/fermi_dirac.pxd +44 -0
  341. sage/libs/gsl/fft.pxd +121 -0
  342. sage/libs/gsl/fit.pxd +50 -0
  343. sage/libs/gsl/gamma.pxd +94 -0
  344. sage/libs/gsl/gegenbauer.pxd +26 -0
  345. sage/libs/gsl/histogram.pxd +176 -0
  346. sage/libs/gsl/hyperg.pxd +52 -0
  347. sage/libs/gsl/integration.pxd +69 -0
  348. sage/libs/gsl/interp.pxd +109 -0
  349. sage/libs/gsl/laguerre.pxd +24 -0
  350. sage/libs/gsl/lambert.pxd +16 -0
  351. sage/libs/gsl/legendre.pxd +90 -0
  352. sage/libs/gsl/linalg.pxd +185 -0
  353. sage/libs/gsl/log.pxd +26 -0
  354. sage/libs/gsl/math.pxd +43 -0
  355. sage/libs/gsl/matrix.pxd +143 -0
  356. sage/libs/gsl/matrix_complex.pxd +130 -0
  357. sage/libs/gsl/min.pxd +67 -0
  358. sage/libs/gsl/monte.pxd +56 -0
  359. sage/libs/gsl/ntuple.pxd +32 -0
  360. sage/libs/gsl/odeiv.pxd +70 -0
  361. sage/libs/gsl/permutation.pxd +78 -0
  362. sage/libs/gsl/poly.pxd +40 -0
  363. sage/libs/gsl/pow_int.pxd +12 -0
  364. sage/libs/gsl/psi.pxd +28 -0
  365. sage/libs/gsl/qrng.pxd +29 -0
  366. sage/libs/gsl/random.pxd +257 -0
  367. sage/libs/gsl/rng.pxd +100 -0
  368. sage/libs/gsl/roots.pxd +72 -0
  369. sage/libs/gsl/sort.pxd +36 -0
  370. sage/libs/gsl/statistics.pxd +59 -0
  371. sage/libs/gsl/sum.pxd +55 -0
  372. sage/libs/gsl/synchrotron.pxd +16 -0
  373. sage/libs/gsl/transport.pxd +24 -0
  374. sage/libs/gsl/trig.pxd +58 -0
  375. sage/libs/gsl/types.pxd +137 -0
  376. sage/libs/gsl/vector.pxd +101 -0
  377. sage/libs/gsl/vector_complex.pxd +83 -0
  378. sage/libs/gsl/wavelet.pxd +49 -0
  379. sage/libs/gsl/zeta.pxd +28 -0
  380. sage/libs/mpc/__init__.pxd +114 -0
  381. sage/libs/mpc/types.pxd +28 -0
  382. sage/libs/mpfr/__init__.pxd +299 -0
  383. sage/libs/mpfr/types.pxd +26 -0
  384. sage/libs/mpmath/__init__.py +1 -0
  385. sage/libs/mpmath/all.py +27 -0
  386. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  387. sage/libs/mpmath/utils.cpython-314-aarch64-linux-musl.so +0 -0
  388. sage/libs/mpmath/utils.pxd +4 -0
  389. sage/libs/mpmath/utils.pyx +319 -0
  390. sage/matrix/action.cpython-314-aarch64-linux-musl.so +0 -0
  391. sage/matrix/action.pxd +26 -0
  392. sage/matrix/action.pyx +596 -0
  393. sage/matrix/all.py +9 -0
  394. sage/matrix/args.cpython-314-aarch64-linux-musl.so +0 -0
  395. sage/matrix/args.pxd +144 -0
  396. sage/matrix/args.pyx +1668 -0
  397. sage/matrix/benchmark.py +1258 -0
  398. sage/matrix/berlekamp_massey.py +95 -0
  399. sage/matrix/compute_J_ideal.py +926 -0
  400. sage/matrix/constructor.cpython-314-aarch64-linux-musl.so +0 -0
  401. sage/matrix/constructor.pyx +750 -0
  402. sage/matrix/docs.py +430 -0
  403. sage/matrix/echelon_matrix.cpython-314-aarch64-linux-musl.so +0 -0
  404. sage/matrix/echelon_matrix.pyx +155 -0
  405. sage/matrix/matrix.pxd +2 -0
  406. sage/matrix/matrix0.cpython-314-aarch64-linux-musl.so +0 -0
  407. sage/matrix/matrix0.pxd +68 -0
  408. sage/matrix/matrix0.pyx +6324 -0
  409. sage/matrix/matrix1.cpython-314-aarch64-linux-musl.so +0 -0
  410. sage/matrix/matrix1.pxd +8 -0
  411. sage/matrix/matrix1.pyx +2851 -0
  412. sage/matrix/matrix2.cpython-314-aarch64-linux-musl.so +0 -0
  413. sage/matrix/matrix2.pxd +25 -0
  414. sage/matrix/matrix2.pyx +20181 -0
  415. sage/matrix/matrix_cdv.cpython-314-aarch64-linux-musl.so +0 -0
  416. sage/matrix/matrix_cdv.pxd +4 -0
  417. sage/matrix/matrix_cdv.pyx +93 -0
  418. sage/matrix/matrix_complex_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  419. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  420. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  421. sage/matrix/matrix_dense.cpython-314-aarch64-linux-musl.so +0 -0
  422. sage/matrix/matrix_dense.pxd +5 -0
  423. sage/matrix/matrix_dense.pyx +343 -0
  424. sage/matrix/matrix_domain_dense.pxd +5 -0
  425. sage/matrix/matrix_domain_sparse.pxd +5 -0
  426. sage/matrix/matrix_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  427. sage/matrix/matrix_double_dense.pxd +7 -0
  428. sage/matrix/matrix_double_dense.pyx +3906 -0
  429. sage/matrix/matrix_double_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  430. sage/matrix/matrix_double_sparse.pxd +6 -0
  431. sage/matrix/matrix_double_sparse.pyx +248 -0
  432. sage/matrix/matrix_generic_dense.cpython-314-aarch64-linux-musl.so +0 -0
  433. sage/matrix/matrix_generic_dense.pxd +7 -0
  434. sage/matrix/matrix_generic_dense.pyx +354 -0
  435. sage/matrix/matrix_generic_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  436. sage/matrix/matrix_generic_sparse.pxd +7 -0
  437. sage/matrix/matrix_generic_sparse.pyx +461 -0
  438. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-aarch64-linux-musl.so +0 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  440. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  441. sage/matrix/matrix_misc.py +313 -0
  442. sage/matrix/matrix_numpy_dense.cpython-314-aarch64-linux-musl.so +0 -0
  443. sage/matrix/matrix_numpy_dense.pxd +14 -0
  444. sage/matrix/matrix_numpy_dense.pyx +450 -0
  445. sage/matrix/matrix_numpy_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
  446. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  447. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  448. sage/matrix/matrix_polynomial_dense.cpython-314-aarch64-linux-musl.so +0 -0
  449. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  450. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  451. sage/matrix/matrix_real_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  452. sage/matrix/matrix_real_double_dense.pxd +7 -0
  453. sage/matrix/matrix_real_double_dense.pyx +122 -0
  454. sage/matrix/matrix_space.py +2848 -0
  455. sage/matrix/matrix_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  456. sage/matrix/matrix_sparse.pxd +5 -0
  457. sage/matrix/matrix_sparse.pyx +1222 -0
  458. sage/matrix/matrix_window.cpython-314-aarch64-linux-musl.so +0 -0
  459. sage/matrix/matrix_window.pxd +37 -0
  460. sage/matrix/matrix_window.pyx +242 -0
  461. sage/matrix/misc_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
  462. sage/matrix/misc_mpfr.pyx +80 -0
  463. sage/matrix/operation_table.py +1182 -0
  464. sage/matrix/special.py +3666 -0
  465. sage/matrix/strassen.cpython-314-aarch64-linux-musl.so +0 -0
  466. sage/matrix/strassen.pyx +851 -0
  467. sage/matrix/symplectic_basis.py +541 -0
  468. sage/matrix/template.pxd +6 -0
  469. sage/matrix/tests.py +71 -0
  470. sage/matroids/advanced.py +77 -0
  471. sage/matroids/all.py +13 -0
  472. sage/matroids/basis_exchange_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  473. sage/matroids/basis_exchange_matroid.pxd +96 -0
  474. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  475. sage/matroids/basis_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  476. sage/matroids/basis_matroid.pxd +45 -0
  477. sage/matroids/basis_matroid.pyx +1217 -0
  478. sage/matroids/catalog.py +44 -0
  479. sage/matroids/chow_ring.py +473 -0
  480. sage/matroids/chow_ring_ideal.py +849 -0
  481. sage/matroids/circuit_closures_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  482. sage/matroids/circuit_closures_matroid.pxd +16 -0
  483. sage/matroids/circuit_closures_matroid.pyx +559 -0
  484. sage/matroids/circuits_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  485. sage/matroids/circuits_matroid.pxd +38 -0
  486. sage/matroids/circuits_matroid.pyx +947 -0
  487. sage/matroids/constructor.py +1086 -0
  488. sage/matroids/database_collections.py +365 -0
  489. sage/matroids/database_matroids.py +5338 -0
  490. sage/matroids/dual_matroid.py +583 -0
  491. sage/matroids/extension.cpython-314-aarch64-linux-musl.so +0 -0
  492. sage/matroids/extension.pxd +34 -0
  493. sage/matroids/extension.pyx +519 -0
  494. sage/matroids/flats_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  495. sage/matroids/flats_matroid.pxd +28 -0
  496. sage/matroids/flats_matroid.pyx +715 -0
  497. sage/matroids/gammoid.py +600 -0
  498. sage/matroids/graphic_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  499. sage/matroids/graphic_matroid.pxd +39 -0
  500. sage/matroids/graphic_matroid.pyx +2024 -0
  501. sage/matroids/lean_matrix.cpython-314-aarch64-linux-musl.so +0 -0
  502. sage/matroids/lean_matrix.pxd +126 -0
  503. sage/matroids/lean_matrix.pyx +3667 -0
  504. sage/matroids/linear_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  505. sage/matroids/linear_matroid.pxd +180 -0
  506. sage/matroids/linear_matroid.pyx +6649 -0
  507. sage/matroids/matroid.cpython-314-aarch64-linux-musl.so +0 -0
  508. sage/matroids/matroid.pxd +243 -0
  509. sage/matroids/matroid.pyx +8759 -0
  510. sage/matroids/matroids_catalog.py +190 -0
  511. sage/matroids/matroids_plot_helpers.py +890 -0
  512. sage/matroids/minor_matroid.py +480 -0
  513. sage/matroids/minorfix.h +9 -0
  514. sage/matroids/named_matroids.py +5 -0
  515. sage/matroids/rank_matroid.py +268 -0
  516. sage/matroids/set_system.cpython-314-aarch64-linux-musl.so +0 -0
  517. sage/matroids/set_system.pxd +38 -0
  518. sage/matroids/set_system.pyx +800 -0
  519. sage/matroids/transversal_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  520. sage/matroids/transversal_matroid.pxd +14 -0
  521. sage/matroids/transversal_matroid.pyx +893 -0
  522. sage/matroids/union_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  523. sage/matroids/union_matroid.pxd +20 -0
  524. sage/matroids/union_matroid.pyx +331 -0
  525. sage/matroids/unpickling.cpython-314-aarch64-linux-musl.so +0 -0
  526. sage/matroids/unpickling.pyx +843 -0
  527. sage/matroids/utilities.py +809 -0
  528. sage/misc/all__sagemath_modules.py +20 -0
  529. sage/misc/c3.cpython-314-aarch64-linux-musl.so +0 -0
  530. sage/misc/c3.pyx +238 -0
  531. sage/misc/compat.py +87 -0
  532. sage/misc/element_with_label.py +173 -0
  533. sage/misc/func_persist.py +79 -0
  534. sage/misc/pickle_old.cpython-314-aarch64-linux-musl.so +0 -0
  535. sage/misc/pickle_old.pyx +19 -0
  536. sage/misc/proof.py +7 -0
  537. sage/misc/replace_dot_all.py +472 -0
  538. sage/misc/sagedoc_conf.py +168 -0
  539. sage/misc/sphinxify.py +167 -0
  540. sage/misc/test_class_pickling.py +85 -0
  541. sage/modules/all.py +42 -0
  542. sage/modules/complex_double_vector.py +25 -0
  543. sage/modules/diamond_cutting.py +380 -0
  544. sage/modules/fg_pid/all.py +1 -0
  545. sage/modules/fg_pid/fgp_element.py +456 -0
  546. sage/modules/fg_pid/fgp_module.py +2091 -0
  547. sage/modules/fg_pid/fgp_morphism.py +550 -0
  548. sage/modules/filtered_vector_space.py +1271 -0
  549. sage/modules/finite_submodule_iter.cpython-314-aarch64-linux-musl.so +0 -0
  550. sage/modules/finite_submodule_iter.pxd +27 -0
  551. sage/modules/finite_submodule_iter.pyx +452 -0
  552. sage/modules/fp_graded/all.py +1 -0
  553. sage/modules/fp_graded/element.py +346 -0
  554. sage/modules/fp_graded/free_element.py +298 -0
  555. sage/modules/fp_graded/free_homspace.py +53 -0
  556. sage/modules/fp_graded/free_module.py +1060 -0
  557. sage/modules/fp_graded/free_morphism.py +217 -0
  558. sage/modules/fp_graded/homspace.py +563 -0
  559. sage/modules/fp_graded/module.py +1340 -0
  560. sage/modules/fp_graded/morphism.py +1990 -0
  561. sage/modules/fp_graded/steenrod/all.py +1 -0
  562. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  563. sage/modules/fp_graded/steenrod/module.py +477 -0
  564. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  565. sage/modules/fp_graded/steenrod/profile.py +241 -0
  566. sage/modules/free_module.py +8447 -0
  567. sage/modules/free_module_element.cpython-314-aarch64-linux-musl.so +0 -0
  568. sage/modules/free_module_element.pxd +22 -0
  569. sage/modules/free_module_element.pyx +5445 -0
  570. sage/modules/free_module_homspace.py +369 -0
  571. sage/modules/free_module_integer.py +896 -0
  572. sage/modules/free_module_morphism.py +823 -0
  573. sage/modules/free_module_pseudohomspace.py +352 -0
  574. sage/modules/free_module_pseudomorphism.py +578 -0
  575. sage/modules/free_quadratic_module.py +1706 -0
  576. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  577. sage/modules/matrix_morphism.py +1745 -0
  578. sage/modules/misc.py +103 -0
  579. sage/modules/module_functors.py +192 -0
  580. sage/modules/multi_filtered_vector_space.py +719 -0
  581. sage/modules/ore_module.py +2208 -0
  582. sage/modules/ore_module_element.py +178 -0
  583. sage/modules/ore_module_homspace.py +147 -0
  584. sage/modules/ore_module_morphism.py +968 -0
  585. sage/modules/quotient_module.py +699 -0
  586. sage/modules/real_double_vector.py +22 -0
  587. sage/modules/submodule.py +255 -0
  588. sage/modules/tensor_operations.py +567 -0
  589. sage/modules/torsion_quadratic_module.py +1352 -0
  590. sage/modules/tutorial_free_modules.py +248 -0
  591. sage/modules/vector_complex_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  592. sage/modules/vector_complex_double_dense.pxd +6 -0
  593. sage/modules/vector_complex_double_dense.pyx +117 -0
  594. sage/modules/vector_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  595. sage/modules/vector_double_dense.pxd +6 -0
  596. sage/modules/vector_double_dense.pyx +604 -0
  597. sage/modules/vector_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
  598. sage/modules/vector_integer_dense.pxd +15 -0
  599. sage/modules/vector_integer_dense.pyx +361 -0
  600. sage/modules/vector_integer_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  601. sage/modules/vector_integer_sparse.pxd +29 -0
  602. sage/modules/vector_integer_sparse.pyx +406 -0
  603. sage/modules/vector_modn_dense.cpython-314-aarch64-linux-musl.so +0 -0
  604. sage/modules/vector_modn_dense.pxd +12 -0
  605. sage/modules/vector_modn_dense.pyx +394 -0
  606. sage/modules/vector_modn_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  607. sage/modules/vector_modn_sparse.pxd +21 -0
  608. sage/modules/vector_modn_sparse.pyx +298 -0
  609. sage/modules/vector_numpy_dense.cpython-314-aarch64-linux-musl.so +0 -0
  610. sage/modules/vector_numpy_dense.pxd +15 -0
  611. sage/modules/vector_numpy_dense.pyx +304 -0
  612. sage/modules/vector_numpy_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
  613. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  614. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  615. sage/modules/vector_rational_dense.cpython-314-aarch64-linux-musl.so +0 -0
  616. sage/modules/vector_rational_dense.pxd +15 -0
  617. sage/modules/vector_rational_dense.pyx +387 -0
  618. sage/modules/vector_rational_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  619. sage/modules/vector_rational_sparse.pxd +30 -0
  620. sage/modules/vector_rational_sparse.pyx +413 -0
  621. sage/modules/vector_real_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  622. sage/modules/vector_real_double_dense.pxd +6 -0
  623. sage/modules/vector_real_double_dense.pyx +126 -0
  624. sage/modules/vector_space_homspace.py +430 -0
  625. sage/modules/vector_space_morphism.py +989 -0
  626. sage/modules/with_basis/all.py +15 -0
  627. sage/modules/with_basis/cell_module.py +494 -0
  628. sage/modules/with_basis/indexed_element.cpython-314-aarch64-linux-musl.so +0 -0
  629. sage/modules/with_basis/indexed_element.pxd +13 -0
  630. sage/modules/with_basis/indexed_element.pyx +1058 -0
  631. sage/modules/with_basis/invariant.py +1075 -0
  632. sage/modules/with_basis/morphism.py +1636 -0
  633. sage/modules/with_basis/representation.py +2939 -0
  634. sage/modules/with_basis/subquotient.py +685 -0
  635. sage/numerical/all__sagemath_modules.py +6 -0
  636. sage/numerical/gauss_legendre.cpython-314-aarch64-linux-musl.so +0 -0
  637. sage/numerical/gauss_legendre.pyx +381 -0
  638. sage/numerical/optimize.py +910 -0
  639. sage/probability/all.py +10 -0
  640. sage/probability/probability_distribution.cpython-314-aarch64-linux-musl.so +0 -0
  641. sage/probability/probability_distribution.pyx +1242 -0
  642. sage/probability/random_variable.py +411 -0
  643. sage/quadratic_forms/all.py +4 -0
  644. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  645. sage/quadratic_forms/binary_qf.py +2042 -0
  646. sage/quadratic_forms/bqf_class_group.py +748 -0
  647. sage/quadratic_forms/constructions.py +93 -0
  648. sage/quadratic_forms/count_local_2.cpython-314-aarch64-linux-musl.so +0 -0
  649. sage/quadratic_forms/count_local_2.pyx +365 -0
  650. sage/quadratic_forms/extras.py +195 -0
  651. sage/quadratic_forms/quadratic_form.py +1753 -0
  652. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  653. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  654. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-aarch64-linux-musl.so +0 -0
  655. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  656. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  657. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  658. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  659. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  660. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  661. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  662. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  663. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  664. sage/quadratic_forms/random_quadraticform.py +209 -0
  665. sage/quadratic_forms/ternary.cpython-314-aarch64-linux-musl.so +0 -0
  666. sage/quadratic_forms/ternary.pyx +1154 -0
  667. sage/quadratic_forms/ternary_qf.py +2027 -0
  668. sage/rings/all__sagemath_modules.py +28 -0
  669. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  670. sage/rings/asymptotic/misc.py +1252 -0
  671. sage/rings/cc.py +4 -0
  672. sage/rings/cfinite_sequence.py +1306 -0
  673. sage/rings/complex_conversion.cpython-314-aarch64-linux-musl.so +0 -0
  674. sage/rings/complex_conversion.pxd +8 -0
  675. sage/rings/complex_conversion.pyx +23 -0
  676. sage/rings/complex_double.cpython-314-aarch64-linux-musl.so +0 -0
  677. sage/rings/complex_double.pxd +21 -0
  678. sage/rings/complex_double.pyx +2654 -0
  679. sage/rings/complex_mpc.cpython-314-aarch64-linux-musl.so +0 -0
  680. sage/rings/complex_mpc.pxd +21 -0
  681. sage/rings/complex_mpc.pyx +2576 -0
  682. sage/rings/complex_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
  683. sage/rings/complex_mpfr.pxd +18 -0
  684. sage/rings/complex_mpfr.pyx +3602 -0
  685. sage/rings/derivation.py +2334 -0
  686. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  687. sage/rings/finite_rings/maps_finite_field.py +191 -0
  688. sage/rings/function_field/all__sagemath_modules.py +8 -0
  689. sage/rings/function_field/derivations.py +102 -0
  690. sage/rings/function_field/derivations_rational.py +132 -0
  691. sage/rings/function_field/differential.py +853 -0
  692. sage/rings/function_field/divisor.py +1107 -0
  693. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  694. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  695. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  696. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  697. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  698. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  699. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  700. sage/rings/function_field/hermite_form_polynomial.cpython-314-aarch64-linux-musl.so +0 -0
  701. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  702. sage/rings/function_field/khuri_makdisi.cpython-314-aarch64-linux-musl.so +0 -0
  703. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  704. sage/rings/invariants/all.py +4 -0
  705. sage/rings/invariants/invariant_theory.py +4597 -0
  706. sage/rings/invariants/reconstruction.py +395 -0
  707. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  708. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  709. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-aarch64-linux-musl.so +0 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  711. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  712. sage/rings/polynomial/ore_function_element.py +952 -0
  713. sage/rings/polynomial/ore_function_field.py +1028 -0
  714. sage/rings/polynomial/ore_polynomial_element.cpython-314-aarch64-linux-musl.so +0 -0
  715. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  716. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  717. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  718. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-aarch64-linux-musl.so +0 -0
  719. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  720. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  721. sage/rings/polynomial/skew_polynomial_element.cpython-314-aarch64-linux-musl.so +0 -0
  722. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  723. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  724. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-aarch64-linux-musl.so +0 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  726. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  727. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-aarch64-linux-musl.so +0 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  729. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  730. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  731. sage/rings/real_double_element_gsl.cpython-314-aarch64-linux-musl.so +0 -0
  732. sage/rings/real_double_element_gsl.pxd +8 -0
  733. sage/rings/real_double_element_gsl.pyx +794 -0
  734. sage/rings/real_field.py +58 -0
  735. sage/rings/real_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
  736. sage/rings/real_mpfr.pxd +29 -0
  737. sage/rings/real_mpfr.pyx +6122 -0
  738. sage/rings/ring_extension.cpython-314-aarch64-linux-musl.so +0 -0
  739. sage/rings/ring_extension.pxd +42 -0
  740. sage/rings/ring_extension.pyx +2779 -0
  741. sage/rings/ring_extension_conversion.cpython-314-aarch64-linux-musl.so +0 -0
  742. sage/rings/ring_extension_conversion.pxd +16 -0
  743. sage/rings/ring_extension_conversion.pyx +462 -0
  744. sage/rings/ring_extension_element.cpython-314-aarch64-linux-musl.so +0 -0
  745. sage/rings/ring_extension_element.pxd +21 -0
  746. sage/rings/ring_extension_element.pyx +1635 -0
  747. sage/rings/ring_extension_homset.py +64 -0
  748. sage/rings/ring_extension_morphism.cpython-314-aarch64-linux-musl.so +0 -0
  749. sage/rings/ring_extension_morphism.pxd +35 -0
  750. sage/rings/ring_extension_morphism.pyx +920 -0
  751. sage/schemes/all__sagemath_modules.py +1 -0
  752. sage/schemes/projective/all__sagemath_modules.py +1 -0
  753. sage/schemes/projective/coherent_sheaf.py +300 -0
  754. sage/schemes/projective/cohomology.py +510 -0
  755. sage/stats/all.py +15 -0
  756. sage/stats/basic_stats.py +489 -0
  757. sage/stats/distributions/all.py +7 -0
  758. sage/stats/distributions/catalog.py +34 -0
  759. sage/stats/distributions/dgs.h +50 -0
  760. sage/stats/distributions/dgs.pxd +111 -0
  761. sage/stats/distributions/dgs_bern.h +400 -0
  762. sage/stats/distributions/dgs_gauss.h +614 -0
  763. sage/stats/distributions/dgs_misc.h +104 -0
  764. sage/stats/distributions/discrete_gaussian_integer.cpython-314-aarch64-linux-musl.so +0 -0
  765. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  766. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  767. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  768. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  769. sage/stats/hmm/all.py +15 -0
  770. sage/stats/hmm/chmm.cpython-314-aarch64-linux-musl.so +0 -0
  771. sage/stats/hmm/chmm.pyx +1595 -0
  772. sage/stats/hmm/distributions.cpython-314-aarch64-linux-musl.so +0 -0
  773. sage/stats/hmm/distributions.pxd +29 -0
  774. sage/stats/hmm/distributions.pyx +531 -0
  775. sage/stats/hmm/hmm.cpython-314-aarch64-linux-musl.so +0 -0
  776. sage/stats/hmm/hmm.pxd +17 -0
  777. sage/stats/hmm/hmm.pyx +1388 -0
  778. sage/stats/hmm/util.cpython-314-aarch64-linux-musl.so +0 -0
  779. sage/stats/hmm/util.pxd +7 -0
  780. sage/stats/hmm/util.pyx +165 -0
  781. sage/stats/intlist.cpython-314-aarch64-linux-musl.so +0 -0
  782. sage/stats/intlist.pxd +14 -0
  783. sage/stats/intlist.pyx +588 -0
  784. sage/stats/r.py +49 -0
  785. sage/stats/time_series.cpython-314-aarch64-linux-musl.so +0 -0
  786. sage/stats/time_series.pxd +6 -0
  787. sage/stats/time_series.pyx +2546 -0
  788. sage/tensor/all.py +2 -0
  789. sage/tensor/modules/all.py +8 -0
  790. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  791. sage/tensor/modules/comp.py +5598 -0
  792. sage/tensor/modules/ext_pow_free_module.py +824 -0
  793. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  794. sage/tensor/modules/format_utilities.py +333 -0
  795. sage/tensor/modules/free_module_alt_form.py +858 -0
  796. sage/tensor/modules/free_module_automorphism.py +1207 -0
  797. sage/tensor/modules/free_module_basis.py +1074 -0
  798. sage/tensor/modules/free_module_element.py +284 -0
  799. sage/tensor/modules/free_module_homset.py +652 -0
  800. sage/tensor/modules/free_module_linear_group.py +564 -0
  801. sage/tensor/modules/free_module_morphism.py +1581 -0
  802. sage/tensor/modules/free_module_tensor.py +3289 -0
  803. sage/tensor/modules/reflexive_module.py +386 -0
  804. sage/tensor/modules/tensor_free_module.py +780 -0
  805. sage/tensor/modules/tensor_free_submodule.py +538 -0
  806. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  807. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,788 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ r"""
3
+ Dense univariate polynomials over `\RR`, implemented using MPFR
4
+
5
+ TESTS:
6
+
7
+ Check that operations with numpy elements work well (see :issue:`18076` and
8
+ :issue:`8426`)::
9
+
10
+ sage: # needs numpy
11
+ sage: import numpy
12
+ sage: x = polygen(RR)
13
+ sage: x * numpy.int32('1')
14
+ x
15
+ sage: numpy.int32('1') * x
16
+ x
17
+ sage: x * numpy.int64('1')
18
+ x
19
+ sage: numpy.int64('1') * x
20
+ x
21
+ sage: x * numpy.float32('1.5')
22
+ 1.50000000000000*x
23
+ sage: numpy.float32('1.5') * x
24
+ 1.50000000000000*x
25
+ """
26
+
27
+ from cysignals.memory cimport check_allocarray, check_reallocarray, sig_free
28
+ from cysignals.signals cimport sig_on, sig_off
29
+
30
+ from cpython.long cimport PyLong_AsLong
31
+ from cpython.float cimport PyFloat_AS_DOUBLE
32
+
33
+ from sage.structure.parent cimport Parent
34
+ from sage.rings.polynomial.polynomial_element cimport Polynomial, _dict_to_list
35
+ from sage.rings.real_mpfr cimport RealField_class, RealNumber
36
+ from sage.rings.integer cimport Integer, smallInteger
37
+ from sage.rings.rational cimport Rational
38
+
39
+ from sage.structure.element cimport Element
40
+ from sage.structure.element cimport parent
41
+ from sage.structure.element import coerce_binop
42
+ from sage.libs.mpfr cimport *
43
+
44
+ try:
45
+ from cypari2.gen import Gen as pari_gen
46
+ except ImportError:
47
+ pari_gen = ()
48
+
49
+
50
+ cdef class PolynomialRealDense(Polynomial):
51
+ r"""
52
+
53
+ TESTS::
54
+
55
+ sage: f = RR['x'].random_element()
56
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
57
+ sage: isinstance(f, PolynomialRealDense)
58
+ True
59
+ """
60
+
61
+ cdef Py_ssize_t _degree
62
+ cdef mpfr_t* _coeffs
63
+ cdef RealField_class _base_ring
64
+
65
+ def __cinit__(self):
66
+ """
67
+ TESTS::
68
+
69
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
70
+ sage: PolynomialRealDense(RR['x'])
71
+ 0
72
+ """
73
+ self._coeffs = NULL
74
+
75
+ def __init__(self, Parent parent, x=0, check=None, bint is_gen=False, construct=None):
76
+ """
77
+ EXAMPLES::
78
+
79
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
80
+ sage: PolynomialRealDense(RR['x'], [1, int(2), RR(3), 4/1, pi]) # needs sage.symbolic
81
+ 3.14159265358979*x^4 + 4.00000000000000*x^3 + 3.00000000000000*x^2 + 2.00000000000000*x + 1.00000000000000
82
+ sage: PolynomialRealDense(RR['x'], None)
83
+ 0
84
+
85
+ TESTS:
86
+
87
+ Check that errors and interrupts are handled properly (see :issue:`10100`)::
88
+
89
+ sage: a = var('a') # needs sage.symbolic
90
+ sage: PolynomialRealDense(RR['x'], [1,a]) # needs sage.symbolic
91
+ Traceback (most recent call last):
92
+ ...
93
+ TypeError: cannot evaluate symbolic expression to a numeric value
94
+ sage: R.<x> = SR[] # needs sage.symbolic
95
+ sage: (x-a).change_ring(RR) # needs sage.symbolic
96
+ Traceback (most recent call last):
97
+ ...
98
+ TypeError: cannot evaluate symbolic expression to a numeric value
99
+ sage: sig_on_count()
100
+ 0
101
+
102
+ Test that we don't clean up uninitialized coefficients (:issue:`9826`)::
103
+
104
+ sage: k.<a> = GF(7^3) # needs sage.rings.finite_rings
105
+ sage: P.<x> = PolynomialRing(k) # needs sage.rings.finite_rings
106
+ sage: (a*x).complex_roots() # needs sage.rings.finite_rings
107
+ Traceback (most recent call last):
108
+ ...
109
+ TypeError: unable to convert 'a' to a real number
110
+
111
+ Check that :issue:`17190` is fixed::
112
+
113
+ sage: RR['x']({})
114
+ 0
115
+ """
116
+ Polynomial.__init__(self, parent, is_gen=is_gen)
117
+ self._base_ring = parent._base
118
+ cdef Py_ssize_t i, degree
119
+ cdef int prec = self._base_ring._prec
120
+ cdef mpfr_rnd_t rnd = self._base_ring.rnd
121
+ if x is None:
122
+ self._coeffs = <mpfr_t*>check_allocarray(1, sizeof(mpfr_t)) # degree zero
123
+ mpfr_init2(self._coeffs[0], prec)
124
+ mpfr_set_si(self._coeffs[0], 0, rnd)
125
+ self._normalize()
126
+ return
127
+ if is_gen:
128
+ x = [0, 1]
129
+ elif isinstance(x, (int, float, Integer, Rational, RealNumber)):
130
+ x = [x]
131
+ elif isinstance(x, dict):
132
+ x = _dict_to_list(x, self._base_ring.zero())
133
+ elif isinstance(x, pari_gen):
134
+ x = [self._base_ring(w) for w in x.list()]
135
+ elif not isinstance(x, list):
136
+ try:
137
+ x = list(x)
138
+ except TypeError: # x is not iterable
139
+ x = [self._base_ring(x)]
140
+
141
+ sig_on()
142
+ degree = len(x) - 1
143
+ self._degree = -1
144
+ cdef mpfr_t* coeffs
145
+ coeffs = <mpfr_t*>check_allocarray(degree+1, sizeof(mpfr_t))
146
+ try: # We might get Python exceptions here
147
+ for i from 0 <= i <= degree:
148
+ mpfr_init2(coeffs[i], prec)
149
+ self._degree += 1
150
+ a = x[i]
151
+ if type(a) is RealNumber:
152
+ mpfr_set(coeffs[i], (<RealNumber>a).value, rnd)
153
+ elif type(a) is int:
154
+ mpfr_set_si(coeffs[i], PyLong_AsLong(a), rnd)
155
+ elif type(a) is float:
156
+ mpfr_set_d(coeffs[i], PyFloat_AS_DOUBLE(a), rnd)
157
+ elif type(a) is Integer:
158
+ mpfr_set_z(coeffs[i], (<Integer>a).value, rnd)
159
+ elif type(a) is Rational:
160
+ mpfr_set_q(coeffs[i], (<Rational>a).value, rnd)
161
+ else:
162
+ a = self._base_ring(a)
163
+ mpfr_set(coeffs[i], (<RealNumber>a).value, rnd)
164
+ finally:
165
+ sig_off()
166
+ self._coeffs = coeffs
167
+ self._normalize()
168
+
169
+ def __dealloc__(self):
170
+ cdef Py_ssize_t i
171
+ if self._coeffs != NULL:
172
+ for i from 0 <= i <= self._degree:
173
+ mpfr_clear(self._coeffs[i])
174
+ sig_free(self._coeffs)
175
+
176
+ def __reduce__(self):
177
+ """
178
+ EXAMPLES::
179
+
180
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
181
+ sage: f = PolynomialRealDense(RR['x'], [-2, 0, 1])
182
+ sage: loads(dumps(f)) == f
183
+ True
184
+ """
185
+ return make_PolynomialRealDense, (self._parent, self.list())
186
+
187
+ cdef _normalize(self):
188
+ """
189
+ Remove all leading 0's.
190
+ """
191
+ cdef Py_ssize_t i
192
+ if self._degree >= 0 and mpfr_zero_p(self._coeffs[self._degree]):
193
+ i = self._degree
194
+ while i >= 0 and mpfr_zero_p(self._coeffs[i]):
195
+ mpfr_clear(self._coeffs[i])
196
+ i -= 1
197
+ self._coeffs = <mpfr_t*>check_reallocarray(self._coeffs, i+1, sizeof(mpfr_t))
198
+ self._degree = i
199
+
200
+ cdef get_unsafe(self, Py_ssize_t i):
201
+ """
202
+ Return the `i`-th coefficient of ``self``.
203
+
204
+ EXAMPLES::
205
+
206
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
207
+ sage: f = PolynomialRealDense(RR['x'], range(5)); f
208
+ 4.00000000000000*x^4 + 3.00000000000000*x^3 + 2.00000000000000*x^2 + x
209
+ sage: f[0]
210
+ 0.000000000000000
211
+ sage: f[3]
212
+ 3.00000000000000
213
+ sage: f[5]
214
+ 0.000000000000000
215
+
216
+ Test slices::
217
+
218
+ sage: R.<x> = RealField(10)[]
219
+ sage: f = (x+1)^5; f
220
+ x^5 + 5.0*x^4 + 10.*x^3 + 10.*x^2 + 5.0*x + 1.0
221
+ sage: f[:3]
222
+ 10.*x^2 + 5.0*x + 1.0
223
+ """
224
+ cdef RealNumber r = <RealNumber>RealNumber.__new__(RealNumber, self._base_ring)
225
+ mpfr_set(r.value, self._coeffs[i], self._base_ring.rnd)
226
+ return r
227
+
228
+ cdef PolynomialRealDense _new(self, Py_ssize_t degree):
229
+ cdef Py_ssize_t i
230
+ cdef int prec = self._base_ring._prec
231
+ cdef PolynomialRealDense f = <PolynomialRealDense>PolynomialRealDense.__new__(PolynomialRealDense)
232
+ f._parent = self._parent
233
+ f._base_ring = self._base_ring
234
+ f._degree = degree
235
+ if degree >= 0:
236
+ f._coeffs = <mpfr_t*>check_allocarray(degree+1, sizeof(mpfr_t))
237
+ for i from 0 <= i <= degree:
238
+ mpfr_init2(f._coeffs[i], prec)
239
+ return f
240
+
241
+ def degree(self):
242
+ """
243
+ Return the degree of the polynomial.
244
+
245
+ EXAMPLES::
246
+
247
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
248
+ sage: f = PolynomialRealDense(RR['x'], [1, 2, 3]); f
249
+ 3.00000000000000*x^2 + 2.00000000000000*x + 1.00000000000000
250
+ sage: f.degree()
251
+ 2
252
+
253
+ TESTS::
254
+
255
+ sage: type(f.degree())
256
+ <class 'sage.rings.integer.Integer'>
257
+ """
258
+ return smallInteger(self._degree)
259
+
260
+ cpdef Polynomial truncate(self, long n):
261
+ r"""
262
+ Return the polynomial of degree `< n` which is equivalent to ``self``
263
+ modulo `x^n`.
264
+
265
+ EXAMPLES::
266
+
267
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
268
+ sage: f = PolynomialRealDense(RealField(10)['x'], [1, 2, 4, 8])
269
+ sage: f.truncate(3)
270
+ 4.0*x^2 + 2.0*x + 1.0
271
+ sage: f.truncate(100)
272
+ 8.0*x^3 + 4.0*x^2 + 2.0*x + 1.0
273
+ sage: f.truncate(1)
274
+ 1.0
275
+ sage: f.truncate(0)
276
+ 0
277
+ """
278
+ if n <= 0:
279
+ return self._new(-1)
280
+ if n > self._degree:
281
+ return self
282
+ cdef PolynomialRealDense f = self._new(n-1)
283
+ cdef Py_ssize_t i
284
+ for i from 0 <= i < n:
285
+ mpfr_set(f._coeffs[i], self._coeffs[i], self._base_ring.rnd)
286
+ f._normalize()
287
+ return f
288
+
289
+ def truncate_abs(self, RealNumber bound):
290
+ """
291
+ Truncate all high order coefficients below ``bound``.
292
+
293
+ EXAMPLES::
294
+
295
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
296
+ sage: f = PolynomialRealDense(RealField(10)['x'], [10^-k for k in range(10)])
297
+ sage: f
298
+ 1.0e-9*x^9 + 1.0e-8*x^8 + 1.0e-7*x^7 + 1.0e-6*x^6 + 0.000010*x^5
299
+ + 0.00010*x^4 + 0.0010*x^3 + 0.010*x^2 + 0.10*x + 1.0
300
+ sage: f.truncate_abs(0.5e-6)
301
+ 1.0e-6*x^6 + 0.000010*x^5 + 0.00010*x^4 + 0.0010*x^3 + 0.010*x^2 + 0.10*x + 1.0
302
+ sage: f.truncate_abs(10.0)
303
+ 0
304
+ sage: f.truncate_abs(1e-100) == f
305
+ True
306
+ """
307
+ cdef Py_ssize_t i
308
+ for i from self._degree >= i >= 0:
309
+ if mpfr_cmpabs(self._coeffs[i], bound.value) >= 0:
310
+ return self.truncate(i+1)
311
+ return self._new(-1)
312
+
313
+ cpdef shift(self, Py_ssize_t n):
314
+ r"""
315
+ Return this polynomial multiplied by the power `x^n`. If `n`
316
+ is negative, terms below `x^n` will be discarded. Does not
317
+ change this polynomial.
318
+
319
+ EXAMPLES::
320
+
321
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
322
+ sage: f = PolynomialRealDense(RR['x'], [1, 2, 3]); f
323
+ 3.00000000000000*x^2 + 2.00000000000000*x + 1.00000000000000
324
+ sage: f.shift(10)
325
+ 3.00000000000000*x^12 + 2.00000000000000*x^11 + x^10
326
+ sage: f.shift(-1)
327
+ 3.00000000000000*x + 2.00000000000000
328
+ sage: f.shift(-10)
329
+ 0
330
+
331
+ TESTS::
332
+
333
+ sage: f = RR['x'](0)
334
+ sage: f.shift(3).is_zero()
335
+ True
336
+ sage: f.shift(-3).is_zero()
337
+ True
338
+ """
339
+ cdef Py_ssize_t i
340
+ cdef Py_ssize_t nn = 0 if n < 0 else n
341
+ cdef PolynomialRealDense f
342
+ if n == 0 or self._degree < 0:
343
+ return self
344
+ elif self._degree < -n:
345
+ return self._new(-1)
346
+ else:
347
+ f = self._new(self._degree + n)
348
+ for i from 0 <= i < n:
349
+ mpfr_set_ui(f._coeffs[i], 0, self._base_ring.rnd)
350
+ for i from nn <= i <= self._degree + n:
351
+ mpfr_set(f._coeffs[i], self._coeffs[i-n], self._base_ring.rnd)
352
+ return f
353
+
354
+ cpdef list list(self, bint copy=True):
355
+ """
356
+ EXAMPLES::
357
+
358
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
359
+ sage: f = PolynomialRealDense(RR['x'], [1, 0, -2]); f
360
+ -2.00000000000000*x^2 + 1.00000000000000
361
+ sage: f.list()
362
+ [1.00000000000000, 0.000000000000000, -2.00000000000000]
363
+ """
364
+ cdef RealNumber r
365
+ cdef Py_ssize_t i
366
+ cdef list L = []
367
+ for i from 0 <= i <= self._degree:
368
+ r = <RealNumber>RealNumber(self._base_ring)
369
+ mpfr_set(r.value, self._coeffs[i], self._base_ring.rnd)
370
+ L.append(r)
371
+ return L
372
+
373
+ def __neg__(self):
374
+ """
375
+ EXAMPLES::
376
+
377
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
378
+ sage: f = PolynomialRealDense(RR['x'], [-2,0,1])
379
+ sage: -f
380
+ -x^2 + 2.00000000000000
381
+ """
382
+ cdef Py_ssize_t i
383
+ cdef mpfr_rnd_t rnd = self._base_ring.rnd
384
+ cdef PolynomialRealDense f = self._new(self._degree)
385
+ for i from 0 <= i <= f._degree:
386
+ mpfr_neg(f._coeffs[i], self._coeffs[i], rnd)
387
+ return f
388
+
389
+ cpdef _add_(left, _right):
390
+ """
391
+ EXAMPLES::
392
+
393
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
394
+ sage: f = PolynomialRealDense(RR['x'], [-2,0,1]); f
395
+ x^2 - 2.00000000000000
396
+ sage: g = PolynomialRealDense(RR['x'], range(5)); g
397
+ 4.00000000000000*x^4 + 3.00000000000000*x^3 + 2.00000000000000*x^2 + x
398
+ sage: f+g
399
+ 4.00000000000000*x^4 + 3.00000000000000*x^3 + 3.00000000000000*x^2 + x - 2.00000000000000
400
+ sage: g + f == f + g
401
+ True
402
+ sage: f + (-f)
403
+ 0
404
+ """
405
+ cdef Py_ssize_t i
406
+ cdef mpfr_rnd_t rnd = left._base_ring.rnd
407
+ cdef PolynomialRealDense right = _right
408
+ cdef Py_ssize_t min = left._degree if left._degree < right._degree else right._degree
409
+ cdef Py_ssize_t max = left._degree if left._degree > right._degree else right._degree
410
+ cdef PolynomialRealDense f = left._new(max)
411
+ for i from 0 <= i <= min:
412
+ mpfr_add(f._coeffs[i], left._coeffs[i], right._coeffs[i], rnd)
413
+ if left._degree < right._degree:
414
+ for i from min < i <= max:
415
+ mpfr_set(f._coeffs[i], right._coeffs[i], rnd)
416
+ else:
417
+ for i from min < i <= max:
418
+ mpfr_set(f._coeffs[i], left._coeffs[i], rnd)
419
+ f._normalize()
420
+ return f
421
+
422
+ cpdef _sub_(left, _right):
423
+ """
424
+ EXAMPLES::
425
+
426
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
427
+ sage: f = PolynomialRealDense(RR['x'], [-3,0,1]); f
428
+ x^2 - 3.00000000000000
429
+ sage: g = PolynomialRealDense(RR['x'], range(4)); g
430
+ 3.00000000000000*x^3 + 2.00000000000000*x^2 + x
431
+ sage: f-g
432
+ -3.00000000000000*x^3 - x^2 - x - 3.00000000000000
433
+ sage: (f-g) == -(g-f)
434
+ True
435
+ """
436
+ cdef Py_ssize_t i
437
+ cdef mpfr_rnd_t rnd = left._base_ring.rnd
438
+ cdef PolynomialRealDense right = _right
439
+ cdef Py_ssize_t min = left._degree if left._degree < right._degree else right._degree
440
+ cdef Py_ssize_t max = left._degree if left._degree > right._degree else right._degree
441
+ cdef PolynomialRealDense f = left._new(max)
442
+ for i from 0 <= i <= min:
443
+ mpfr_sub(f._coeffs[i], left._coeffs[i], right._coeffs[i], rnd)
444
+ if left._degree < right._degree:
445
+ for i from min < i <= max:
446
+ mpfr_neg(f._coeffs[i], right._coeffs[i], rnd)
447
+ else:
448
+ for i from min < i <= max:
449
+ mpfr_set(f._coeffs[i], left._coeffs[i], rnd)
450
+ f._normalize()
451
+ return f
452
+
453
+ cpdef _lmul_(self, Element c):
454
+ """
455
+ EXAMPLES::
456
+
457
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
458
+ sage: f = PolynomialRealDense(RR['x'], [-5,0,0,1]); f
459
+ x^3 - 5.00000000000000
460
+ sage: 4.0 * f
461
+ 4.00000000000000*x^3 - 20.0000000000000
462
+ sage: f * -0.2
463
+ -0.200000000000000*x^3 + 1.00000000000000
464
+ """
465
+ cdef Py_ssize_t i
466
+ cdef RealNumber a = c
467
+ if mpfr_zero_p(a.value):
468
+ return self._new(-1)
469
+ cdef mpfr_rnd_t rnd = self._base_ring.rnd
470
+ cdef PolynomialRealDense f = self._new(self._degree)
471
+ for i from 0 <= i <= self._degree:
472
+ mpfr_mul(f._coeffs[i], self._coeffs[i], a.value, rnd)
473
+ return f
474
+
475
+ cpdef _mul_(left, _right):
476
+ """
477
+ Here we use the naive `O(n^2)` algorithm, as asymptotically faster algorithms such
478
+ as Karatsuba can have very inaccurate results due to intermediate rounding errors.
479
+
480
+ EXAMPLES::
481
+
482
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
483
+ sage: f = PolynomialRealDense(RR['x'], [1e20, 1])
484
+ sage: g = PolynomialRealDense(RR['x'], [1e30, 1])
485
+ sage: f*g
486
+ x^2 + 1.00000000010000e30*x + 1.00000000000000e50
487
+ sage: f._mul_karatsuba(g,0)
488
+ x^2 + 1.00000000000000e50
489
+ sage: f = PolynomialRealDense(RR['x'], range(5))
490
+ sage: g = PolynomialRealDense(RR['x'], range(3))
491
+ sage: f*g
492
+ 8.00000000000000*x^6 + 10.0000000000000*x^5 + 7.00000000000000*x^4 + 4.00000000000000*x^3 + x^2
493
+ """
494
+ cdef Py_ssize_t i, j
495
+ cdef mpfr_rnd_t rnd = left._base_ring.rnd
496
+ cdef PolynomialRealDense right = _right
497
+ cdef PolynomialRealDense f
498
+ cdef mpfr_t tmp
499
+ if left._degree < 0 or right._degree < 0:
500
+ f = left._new(-1)
501
+ else:
502
+ f = left._new(left._degree + right._degree)
503
+ sig_on()
504
+ mpfr_init2(tmp, left._base_ring._prec)
505
+ for i from 0 <= i <= f._degree:
506
+ # Yes, we could make this more efficient by initializing with
507
+ # a multiple of left rather than all zeros...
508
+ mpfr_set_ui(f._coeffs[i], 0, rnd)
509
+ for i from 0 <= i <= left._degree:
510
+ for j from 0 <= j <= right._degree:
511
+ mpfr_mul(tmp, left._coeffs[i], right._coeffs[j], rnd)
512
+ mpfr_add(f._coeffs[i+j], f._coeffs[i+j], tmp, rnd)
513
+ mpfr_clear(tmp)
514
+ sig_off()
515
+ return f
516
+
517
+ def _derivative(self, var=None):
518
+ """
519
+ EXAMPLES::
520
+
521
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
522
+ sage: f = PolynomialRealDense(RR['x'], [pi, 0, 2, 1]) # needs sage.symbolic
523
+ sage: f.derivative() # needs sage.symbolic
524
+ 3.00000000000000*x^2 + 4.00000000000000*x
525
+
526
+ TESTS::
527
+
528
+ sage: x, y = var('x,y') # needs sage.symbolic
529
+ sage: f.derivative(x) # needs sage.symbolic
530
+ 3.00000000000000*x^2 + 4.00000000000000*x
531
+ sage: f.derivative(y) # needs sage.symbolic
532
+ Traceback (most recent call last):
533
+ ...
534
+ ValueError: cannot differentiate with respect to y
535
+ """
536
+ if var is not None and var != self._parent.gen():
537
+ raise ValueError("cannot differentiate with respect to {}".format(var))
538
+
539
+ cdef mpfr_rnd_t rnd = self._base_ring.rnd
540
+ cdef PolynomialRealDense f = self._new(self._degree-1)
541
+ for i from 0 <= i < self._degree:
542
+ mpfr_mul_ui(f._coeffs[i], self._coeffs[i+1], i+1, rnd)
543
+ return f
544
+
545
+ def integral(self):
546
+ """
547
+ EXAMPLES::
548
+
549
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
550
+ sage: f = PolynomialRealDense(RR['x'], [3, pi, 1]) # needs sage.symbolic
551
+ sage: f.integral() # needs sage.symbolic
552
+ 0.333333333333333*x^3 + 1.57079632679490*x^2 + 3.00000000000000*x
553
+ """
554
+ cdef mpfr_rnd_t rnd = self._base_ring.rnd
555
+ cdef PolynomialRealDense f = self._new(self._degree+1)
556
+ mpfr_set_ui(f._coeffs[0], 0, rnd)
557
+ for i from 0 <= i <= self._degree:
558
+ mpfr_div_ui(f._coeffs[i+1], self._coeffs[i], i+1, rnd)
559
+ return f
560
+
561
+ def reverse(self, degree=None):
562
+ """
563
+ Return reverse of the input polynomial thought as a polynomial of
564
+ degree ``degree``.
565
+
566
+ If `f` is a degree-`d` polynomial, its reverse is `x^d f(1/x)`.
567
+
568
+ INPUT:
569
+
570
+ - ``degree`` -- ``None`` or an integer; if specified, truncate or zero
571
+ pad the list of coefficients to this degree before reversing it
572
+
573
+ EXAMPLES::
574
+
575
+ sage: # needs sage.symbolic
576
+ sage: f = RR['x']([-3, pi, 0, 1])
577
+ sage: f.reverse()
578
+ -3.00000000000000*x^3 + 3.14159265358979*x^2 + 1.00000000000000
579
+ sage: f.reverse(2)
580
+ -3.00000000000000*x^2 + 3.14159265358979*x
581
+ sage: f.reverse(5)
582
+ -3.00000000000000*x^5 + 3.14159265358979*x^4 + x^2
583
+
584
+ TESTS:
585
+
586
+ We check that this implementation is compatible with the generic one::
587
+
588
+ sage: all(f.reverse(d) == Polynomial.reverse(f, d) # needs sage.symbolic
589
+ ....: for d in [None, 0, 1, 2, 3, 4, 5])
590
+ True
591
+ """
592
+ if degree is None: degree = self._degree
593
+
594
+ cdef mpfr_rnd_t rnd = self._base_ring.rnd
595
+ cdef PolynomialRealDense f = self._new(degree)
596
+
597
+ cdef int i
598
+ for i in range(1+min(degree, self._degree)):
599
+ mpfr_set(f._coeffs[degree-i], self._coeffs[i], rnd)
600
+ for i in range(1 + self._degree, 1 + degree):
601
+ mpfr_set_si(f._coeffs[degree-i], 0, rnd)
602
+ f._normalize()
603
+ return f
604
+
605
+ @coerce_binop
606
+ def quo_rem(self, PolynomialRealDense other):
607
+ """
608
+ Return the quotient with remainder of ``self`` by ``other``.
609
+
610
+ EXAMPLES::
611
+
612
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
613
+ sage: f = PolynomialRealDense(RR['x'], [-2, 0, 1])
614
+ sage: g = PolynomialRealDense(RR['x'], [5, 1])
615
+ sage: q, r = f.quo_rem(g)
616
+ sage: q
617
+ x - 5.00000000000000
618
+ sage: r
619
+ 23.0000000000000
620
+ sage: q*g + r == f
621
+ True
622
+ sage: fg = f*g
623
+ sage: fg.quo_rem(f)
624
+ (x + 5.00000000000000, 0)
625
+ sage: fg.quo_rem(g)
626
+ (x^2 - 2.00000000000000, 0)
627
+
628
+ sage: # needs sage.symbolic
629
+ sage: f = PolynomialRealDense(RR['x'], range(5))
630
+ sage: g = PolynomialRealDense(RR['x'], [pi,3000,4])
631
+ sage: q, r = f.quo_rem(g)
632
+ sage: g*q + r == f
633
+ True
634
+
635
+ TESTS:
636
+
637
+ Check that :issue:`18467` is fixed::
638
+
639
+ sage: S.<x> = RR[]
640
+ sage: z = S.zero()
641
+ sage: z.degree()
642
+ -1
643
+ sage: q, r = z.quo_rem(x)
644
+ sage: q.degree()
645
+ -1
646
+ """
647
+ if other._degree < 0:
648
+ raise ZeroDivisionError("other must be nonzero")
649
+ elif other._degree == 0:
650
+ return self * ~other[0], self._parent.zero()
651
+ elif other._degree > self._degree:
652
+ return self._parent.zero(), self
653
+ cdef mpfr_rnd_t rnd = self._base_ring.rnd
654
+ cdef PolynomialRealDense q, r
655
+ cdef Py_ssize_t i, j
656
+ cdef mpfr_t tmp
657
+ # Make divisor monic for simplicity
658
+ leading = other[other._degree]
659
+ other = other * ~leading
660
+ r = self * ~leading
661
+ q = self._new(self._degree - other._degree)
662
+ # This is the standard division algorithm
663
+ sig_on()
664
+ mpfr_init2(tmp, self._base_ring._prec)
665
+ for i from self._degree >= i >= other._degree:
666
+ mpfr_set(q._coeffs[i-other._degree], r._coeffs[i], rnd)
667
+ for j from 0 <= j < other._degree:
668
+ mpfr_mul(tmp, r._coeffs[i], other._coeffs[j], rnd)
669
+ mpfr_sub(r._coeffs[i-other._degree+j], r._coeffs[i-other._degree+j], tmp, rnd)
670
+ r._degree -= 1
671
+ mpfr_clear(r._coeffs[i])
672
+ mpfr_clear(tmp)
673
+ sig_off()
674
+ r._normalize()
675
+ return q, r * leading
676
+
677
+ def __call__(self, *args, **kwds):
678
+ """
679
+ EXAMPLES::
680
+
681
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
682
+ sage: f = PolynomialRealDense(RR['x'], [-2, 0, 1])
683
+ sage: f(10)
684
+ 98.0000000000000
685
+ sage: f(CC.0)
686
+ -3.00000000000000
687
+ sage: f(2.0000000000000000000000000000000000000000000)
688
+ 2.00000000000000
689
+ sage: f(RealField(10)(2))
690
+ 2.0
691
+ sage: f(pi) # needs sage.symbolic
692
+ 1.00000000000000*pi^2 - 2.00000000000000
693
+
694
+
695
+ sage: f = PolynomialRealDense(RR['x'], range(5))
696
+ sage: f(1)
697
+ 10.0000000000000
698
+ sage: f(-1)
699
+ 2.00000000000000
700
+ sage: f(0)
701
+ 0.000000000000000
702
+ sage: f = PolynomialRealDense(RR['x'])
703
+ sage: f(12)
704
+ 0.000000000000000
705
+
706
+ TESTS::
707
+
708
+ sage: R.<x> = RR[] # Issue #17311
709
+ sage: (x^2+1)(x=5)
710
+ 26.0000000000000
711
+ """
712
+ if len(args) == 1:
713
+ xx = args[0]
714
+ else:
715
+ return Polynomial.__call__(self, *args, **kwds)
716
+
717
+ if not isinstance(xx, RealNumber):
718
+ if self._base_ring.has_coerce_map_from(parent(xx)):
719
+ xx = self._base_ring(xx)
720
+ else:
721
+ return Polynomial.__call__(self, xx)
722
+
723
+ cdef Py_ssize_t i
724
+ cdef mpfr_rnd_t rnd = self._base_ring.rnd
725
+ cdef RealNumber x = <RealNumber>xx
726
+ cdef RealNumber res
727
+
728
+ if (<RealField_class>x._parent)._prec < self._base_ring._prec:
729
+ res = RealNumber(x._parent)
730
+ else:
731
+ res = RealNumber(self._base_ring)
732
+ # Optimize some very useful and common cases:
733
+ if self._degree < 0:
734
+ mpfr_set_ui(res.value, 0, rnd)
735
+ elif mpfr_zero_p(x.value):
736
+ mpfr_set(res.value, self._coeffs[0], rnd)
737
+ elif mpfr_cmp_ui(x.value, 1) == 0:
738
+ mpfr_set(res.value, self._coeffs[0], rnd)
739
+ for i from 0 < i <= self._degree:
740
+ mpfr_add(res.value, res.value, self._coeffs[i], rnd)
741
+ elif mpfr_cmp_si(x.value, -1) == 0:
742
+ mpfr_set(res.value, self._coeffs[0], rnd)
743
+ for i from 2 <= i <= self._degree by 2:
744
+ mpfr_add(res.value, res.value, self._coeffs[i], rnd)
745
+ for i from 1 <= i <= self._degree by 2:
746
+ mpfr_sub(res.value, res.value, self._coeffs[i], rnd)
747
+ else:
748
+ mpfr_set(res.value, self._coeffs[self._degree], rnd)
749
+ for i from self._degree > i >= 0:
750
+ mpfr_mul(res.value, res.value, x.value, rnd)
751
+ mpfr_add(res.value, res.value, self._coeffs[i], rnd)
752
+ return res
753
+
754
+ def change_ring(self, R):
755
+ """
756
+ EXAMPLES::
757
+
758
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import PolynomialRealDense
759
+ sage: f = PolynomialRealDense(RR['x'], [-2, 0, 1.5])
760
+ sage: f.change_ring(QQ)
761
+ 3/2*x^2 - 2
762
+ sage: f.change_ring(RealField(10))
763
+ 1.5*x^2 - 2.0
764
+ sage: f.change_ring(RealField(100))
765
+ 1.5000000000000000000000000000*x^2 - 2.0000000000000000000000000000
766
+ """
767
+ cdef Py_ssize_t i
768
+ cdef mpfr_rnd_t rnd = self._base_ring.rnd
769
+ cdef PolynomialRealDense f
770
+ if isinstance(R, RealField_class):
771
+ f = PolynomialRealDense(R[self.variable_name()])
772
+ f = f._new(self._degree)
773
+ for i from 0 <= i <= self._degree:
774
+ mpfr_set(f._coeffs[i], self._coeffs[i], rnd)
775
+ return f
776
+ else:
777
+ return Polynomial.change_ring(self, R)
778
+
779
+
780
+ def make_PolynomialRealDense(parent, data):
781
+ """
782
+ EXAMPLES::
783
+
784
+ sage: from sage.rings.polynomial.polynomial_real_mpfr_dense import make_PolynomialRealDense
785
+ sage: make_PolynomialRealDense(RR['x'], [1,2,3])
786
+ 3.00000000000000*x^2 + 2.00000000000000*x + 1.00000000000000
787
+ """
788
+ return PolynomialRealDense(parent, data)