passagemath-pari 10.6.32__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-pari might be problematic. Click here for more details.

Files changed (331) hide show
  1. PARIKernel/__init__.py +2 -0
  2. PARIKernel/__main__.py +5 -0
  3. PARIKernel/io.cpython-314-x86_64-linux-musl.so +0 -0
  4. PARIKernel/io.pxd +7 -0
  5. PARIKernel/io.pyx +84 -0
  6. PARIKernel/kernel.cpython-314-x86_64-linux-musl.so +0 -0
  7. PARIKernel/kernel.pyx +260 -0
  8. PARIKernel/paridecl.pxd +95 -0
  9. PARIKernel/svg.cpython-314-x86_64-linux-musl.so +0 -0
  10. PARIKernel/svg.pyx +52 -0
  11. cypari2/__init__.py +8 -0
  12. cypari2/auto_paridecl.pxd +1070 -0
  13. cypari2/closure.cpython-314-x86_64-linux-musl.so +0 -0
  14. cypari2/closure.pxd +5 -0
  15. cypari2/closure.pyx +246 -0
  16. cypari2/convert.cpython-314-x86_64-linux-musl.so +0 -0
  17. cypari2/convert.pxd +80 -0
  18. cypari2/convert.pyx +613 -0
  19. cypari2/custom_block.cpython-314-x86_64-linux-musl.so +0 -0
  20. cypari2/custom_block.pyx +30 -0
  21. cypari2/cypari.h +13 -0
  22. cypari2/gen.cpython-314-x86_64-linux-musl.so +0 -0
  23. cypari2/gen.pxd +69 -0
  24. cypari2/gen.pyx +4819 -0
  25. cypari2/handle_error.cpython-314-x86_64-linux-musl.so +0 -0
  26. cypari2/handle_error.pxd +7 -0
  27. cypari2/handle_error.pyx +232 -0
  28. cypari2/pari_instance.cpython-314-x86_64-linux-musl.so +0 -0
  29. cypari2/pari_instance.pxd +27 -0
  30. cypari2/pari_instance.pyx +1438 -0
  31. cypari2/paridecl.pxd +5353 -0
  32. cypari2/paripriv.pxd +34 -0
  33. cypari2/pycore_long.h +98 -0
  34. cypari2/pycore_long.pxd +9 -0
  35. cypari2/stack.cpython-314-x86_64-linux-musl.so +0 -0
  36. cypari2/stack.pxd +27 -0
  37. cypari2/stack.pyx +278 -0
  38. cypari2/string_utils.cpython-314-x86_64-linux-musl.so +0 -0
  39. cypari2/string_utils.pxd +29 -0
  40. cypari2/string_utils.pyx +65 -0
  41. cypari2/types.pxd +147 -0
  42. passagemath_pari-10.6.32.data/data/etc/jupyter/nbconfig/notebook.d/gp-mode.json +5 -0
  43. passagemath_pari-10.6.32.data/data/share/jupyter/kernels/pari_jupyter/kernel.js +28 -0
  44. passagemath_pari-10.6.32.data/data/share/jupyter/kernels/pari_jupyter/kernel.json +6 -0
  45. passagemath_pari-10.6.32.data/data/share/jupyter/kernels/pari_jupyter/logo-64x64.png +0 -0
  46. passagemath_pari-10.6.32.data/data/share/jupyter/kernels/xeus-gp/kernel.json +13 -0
  47. passagemath_pari-10.6.32.data/data/share/jupyter/kernels/xeus-gp/logo-32x32.png +0 -0
  48. passagemath_pari-10.6.32.data/data/share/jupyter/kernels/xeus-gp/logo-64x64.png +0 -0
  49. passagemath_pari-10.6.32.data/data/share/jupyter/kernels/xeus-gp/logo-svg.svg +75 -0
  50. passagemath_pari-10.6.32.data/data/share/jupyter/nbextensions/gp-mode/gp.js +284 -0
  51. passagemath_pari-10.6.32.data/data/share/jupyter/nbextensions/gp-mode/main.js +15 -0
  52. passagemath_pari-10.6.32.dist-info/METADATA +209 -0
  53. passagemath_pari-10.6.32.dist-info/RECORD +331 -0
  54. passagemath_pari-10.6.32.dist-info/WHEEL +5 -0
  55. passagemath_pari-10.6.32.dist-info/top_level.txt +4 -0
  56. passagemath_pari.libs/libcrypto-f04afe95.so.3 +0 -0
  57. passagemath_pari.libs/libflint-fd6f12fc.so.21.0.0 +0 -0
  58. passagemath_pari.libs/libgcc_s-0cd532bd.so.1 +0 -0
  59. passagemath_pari.libs/libgf2x-9e30c3e3.so.3.0.0 +0 -0
  60. passagemath_pari.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
  61. passagemath_pari.libs/libgivaro-9a94c711.so.9.2.1 +0 -0
  62. passagemath_pari.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
  63. passagemath_pari.libs/libgmpxx-9e08595c.so.4.7.0 +0 -0
  64. passagemath_pari.libs/libgsl-42cda06f.so.28.0.0 +0 -0
  65. passagemath_pari.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
  66. passagemath_pari.libs/libncursesw-9c9e32c3.so.6.5 +0 -0
  67. passagemath_pari.libs/libntl-26885ca2.so.44.0.1 +0 -0
  68. passagemath_pari.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
  69. passagemath_pari.libs/libpari-gmp-tls-f31f908f.so.2.17.2 +0 -0
  70. passagemath_pari.libs/libquadmath-bb76a5fc.so.0.0.0 +0 -0
  71. passagemath_pari.libs/libreadline-06542304.so.8.2 +0 -0
  72. passagemath_pari.libs/libstdc++-5d72f927.so.6.0.33 +0 -0
  73. passagemath_pari.libs/libuuid-f3770415.so.1.3.0 +0 -0
  74. passagemath_pari.libs/libxeus-735780ff.so.13.1.0 +0 -0
  75. passagemath_pari.libs/libxeus-zmq-c68577b4.so.6.0.1 +0 -0
  76. passagemath_pari.libs/libzmq-1ba9a3da.so.5.2.5 +0 -0
  77. sage/all__sagemath_pari.py +26 -0
  78. sage/databases/all__sagemath_pari.py +7 -0
  79. sage/databases/conway.py +274 -0
  80. sage/ext/all__sagemath_pari.py +1 -0
  81. sage/ext/memory.cpython-314-x86_64-linux-musl.so +0 -0
  82. sage/ext/memory.pyx +98 -0
  83. sage/ext_data/pari/buzzard/DimensionSk.g +286 -0
  84. sage/ext_data/pari/buzzard/Tpprog.g +179 -0
  85. sage/ext_data/pari/buzzard/genusn.g +129 -0
  86. sage/ext_data/pari/dokchitser/computel.gp +740 -0
  87. sage/ext_data/pari/dokchitser/computel.gp.template +740 -0
  88. sage/ext_data/pari/dokchitser/ex-bsw +43 -0
  89. sage/ext_data/pari/dokchitser/ex-chgen +48 -0
  90. sage/ext_data/pari/dokchitser/ex-chqua +37 -0
  91. sage/ext_data/pari/dokchitser/ex-delta +35 -0
  92. sage/ext_data/pari/dokchitser/ex-eisen +30 -0
  93. sage/ext_data/pari/dokchitser/ex-gen2 +38 -0
  94. sage/ext_data/pari/dokchitser/ex-gen3 +49 -0
  95. sage/ext_data/pari/dokchitser/ex-gen4 +54 -0
  96. sage/ext_data/pari/dokchitser/ex-nf +48 -0
  97. sage/ext_data/pari/dokchitser/ex-shin +50 -0
  98. sage/ext_data/pari/dokchitser/ex-tau2 +30 -0
  99. sage/ext_data/pari/dokchitser/ex-zeta +27 -0
  100. sage/ext_data/pari/dokchitser/ex-zeta2 +47 -0
  101. sage/ext_data/pari/dokchitser/testall +13 -0
  102. sage/ext_data/pari/simon/ell.gp +2129 -0
  103. sage/ext_data/pari/simon/ellQ.gp +2151 -0
  104. sage/ext_data/pari/simon/ellcommon.gp +126 -0
  105. sage/ext_data/pari/simon/qfsolve.gp +722 -0
  106. sage/ext_data/pari/simon/resultant3.gp +306 -0
  107. sage/groups/all__sagemath_pari.py +3 -0
  108. sage/groups/pari_group.py +175 -0
  109. sage/interfaces/all__sagemath_pari.py +1 -0
  110. sage/interfaces/genus2reduction.py +464 -0
  111. sage/interfaces/gp.py +1114 -0
  112. sage/libs/all__sagemath_pari.py +2 -0
  113. sage/libs/linkages/__init__.py +1 -0
  114. sage/libs/linkages/padics/API.pxi +617 -0
  115. sage/libs/linkages/padics/Polynomial_ram.pxi +388 -0
  116. sage/libs/linkages/padics/Polynomial_shared.pxi +554 -0
  117. sage/libs/linkages/padics/__init__.py +1 -0
  118. sage/libs/linkages/padics/fmpz_poly_unram.pxi +869 -0
  119. sage/libs/linkages/padics/mpz.pxi +691 -0
  120. sage/libs/linkages/padics/relaxed/API.pxi +518 -0
  121. sage/libs/linkages/padics/relaxed/__init__.py +1 -0
  122. sage/libs/linkages/padics/relaxed/flint.pxi +543 -0
  123. sage/libs/linkages/padics/unram_shared.pxi +247 -0
  124. sage/libs/pari/__init__.py +210 -0
  125. sage/libs/pari/all.py +5 -0
  126. sage/libs/pari/convert_flint.cpython-314-x86_64-linux-musl.so +0 -0
  127. sage/libs/pari/convert_flint.pxd +14 -0
  128. sage/libs/pari/convert_flint.pyx +159 -0
  129. sage/libs/pari/convert_gmp.cpython-314-x86_64-linux-musl.so +0 -0
  130. sage/libs/pari/convert_gmp.pxd +14 -0
  131. sage/libs/pari/convert_gmp.pyx +210 -0
  132. sage/libs/pari/convert_sage.cpython-314-x86_64-linux-musl.so +0 -0
  133. sage/libs/pari/convert_sage.pxd +16 -0
  134. sage/libs/pari/convert_sage.pyx +588 -0
  135. sage/libs/pari/convert_sage_complex_double.cpython-314-x86_64-linux-musl.so +0 -0
  136. sage/libs/pari/convert_sage_complex_double.pxd +14 -0
  137. sage/libs/pari/convert_sage_complex_double.pyx +132 -0
  138. sage/libs/pari/convert_sage_matrix.cpython-314-x86_64-linux-musl.so +0 -0
  139. sage/libs/pari/convert_sage_matrix.pyx +106 -0
  140. sage/libs/pari/convert_sage_real_double.cpython-314-x86_64-linux-musl.so +0 -0
  141. sage/libs/pari/convert_sage_real_double.pxd +5 -0
  142. sage/libs/pari/convert_sage_real_double.pyx +14 -0
  143. sage/libs/pari/convert_sage_real_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  144. sage/libs/pari/convert_sage_real_mpfr.pxd +7 -0
  145. sage/libs/pari/convert_sage_real_mpfr.pyx +108 -0
  146. sage/libs/pari/misc.cpython-314-x86_64-linux-musl.so +0 -0
  147. sage/libs/pari/misc.pxd +4 -0
  148. sage/libs/pari/misc.pyx +26 -0
  149. sage/libs/pari/tests.py +1848 -0
  150. sage/matrix/all__sagemath_pari.py +1 -0
  151. sage/matrix/matrix_integer_pari.cpython-314-x86_64-linux-musl.so +0 -0
  152. sage/matrix/matrix_integer_pari.pyx +187 -0
  153. sage/matrix/matrix_rational_pari.cpython-314-x86_64-linux-musl.so +0 -0
  154. sage/matrix/matrix_rational_pari.pyx +160 -0
  155. sage/quadratic_forms/all__sagemath_pari.py +10 -0
  156. sage/quadratic_forms/genera/all.py +9 -0
  157. sage/quadratic_forms/genera/genus.py +3506 -0
  158. sage/quadratic_forms/genera/normal_form.py +1519 -0
  159. sage/quadratic_forms/genera/spinor_genus.py +243 -0
  160. sage/quadratic_forms/qfsolve.py +255 -0
  161. sage/quadratic_forms/quadratic_form__automorphisms.py +427 -0
  162. sage/quadratic_forms/quadratic_form__genus.py +141 -0
  163. sage/quadratic_forms/quadratic_form__local_density_interfaces.py +140 -0
  164. sage/quadratic_forms/quadratic_form__local_normal_form.py +421 -0
  165. sage/quadratic_forms/quadratic_form__local_representation_conditions.py +889 -0
  166. sage/quadratic_forms/quadratic_form__mass.py +69 -0
  167. sage/quadratic_forms/quadratic_form__mass__Conway_Sloane_masses.py +663 -0
  168. sage/quadratic_forms/quadratic_form__mass__Siegel_densities.py +373 -0
  169. sage/quadratic_forms/quadratic_form__siegel_product.py +198 -0
  170. sage/quadratic_forms/special_values.py +323 -0
  171. sage/rings/all__sagemath_pari.py +15 -0
  172. sage/rings/factorint_pari.cpython-314-x86_64-linux-musl.so +0 -0
  173. sage/rings/factorint_pari.pyx +80 -0
  174. sage/rings/finite_rings/all__sagemath_pari.py +1 -0
  175. sage/rings/finite_rings/element_givaro.cpython-314-x86_64-linux-musl.so +0 -0
  176. sage/rings/finite_rings/element_givaro.pxd +91 -0
  177. sage/rings/finite_rings/element_givaro.pyx +1769 -0
  178. sage/rings/finite_rings/element_ntl_gf2e.cpython-314-x86_64-linux-musl.so +0 -0
  179. sage/rings/finite_rings/element_ntl_gf2e.pxd +22 -0
  180. sage/rings/finite_rings/element_ntl_gf2e.pyx +1333 -0
  181. sage/rings/finite_rings/element_pari_ffelt.cpython-314-x86_64-linux-musl.so +0 -0
  182. sage/rings/finite_rings/element_pari_ffelt.pxd +13 -0
  183. sage/rings/finite_rings/element_pari_ffelt.pyx +1441 -0
  184. sage/rings/finite_rings/finite_field_givaro.py +612 -0
  185. sage/rings/finite_rings/finite_field_pari_ffelt.py +238 -0
  186. sage/rings/finite_rings/hom_finite_field_givaro.cpython-314-x86_64-linux-musl.so +0 -0
  187. sage/rings/finite_rings/hom_finite_field_givaro.pxd +28 -0
  188. sage/rings/finite_rings/hom_finite_field_givaro.pyx +280 -0
  189. sage/rings/finite_rings/residue_field_givaro.cpython-314-x86_64-linux-musl.so +0 -0
  190. sage/rings/finite_rings/residue_field_givaro.pyx +133 -0
  191. sage/rings/finite_rings/residue_field_pari_ffelt.cpython-314-x86_64-linux-musl.so +0 -0
  192. sage/rings/finite_rings/residue_field_pari_ffelt.pyx +128 -0
  193. sage/rings/function_field/all__sagemath_pari.py +1 -0
  194. sage/rings/function_field/valuation.py +1450 -0
  195. sage/rings/function_field/valuation_ring.py +212 -0
  196. sage/rings/number_field/all__sagemath_pari.py +14 -0
  197. sage/rings/number_field/totallyreal.cpython-314-x86_64-linux-musl.so +0 -0
  198. sage/rings/number_field/totallyreal.pyx +509 -0
  199. sage/rings/number_field/totallyreal_data.cpython-314-x86_64-linux-musl.so +0 -0
  200. sage/rings/number_field/totallyreal_data.pxd +26 -0
  201. sage/rings/number_field/totallyreal_data.pyx +928 -0
  202. sage/rings/number_field/totallyreal_phc.py +144 -0
  203. sage/rings/number_field/totallyreal_rel.py +1018 -0
  204. sage/rings/padics/CA_template.pxi +1847 -0
  205. sage/rings/padics/CA_template_header.pxi +50 -0
  206. sage/rings/padics/CR_template.pxi +2563 -0
  207. sage/rings/padics/CR_template_header.pxi +57 -0
  208. sage/rings/padics/FM_template.pxi +1575 -0
  209. sage/rings/padics/FM_template_header.pxi +50 -0
  210. sage/rings/padics/FP_template.pxi +2176 -0
  211. sage/rings/padics/FP_template_header.pxi +57 -0
  212. sage/rings/padics/all.py +3 -0
  213. sage/rings/padics/all__sagemath_pari.py +11 -0
  214. sage/rings/padics/common_conversion.cpython-314-x86_64-linux-musl.so +0 -0
  215. sage/rings/padics/common_conversion.pxd +15 -0
  216. sage/rings/padics/common_conversion.pyx +508 -0
  217. sage/rings/padics/eisenstein_extension_generic.py +232 -0
  218. sage/rings/padics/factory.py +3623 -0
  219. sage/rings/padics/generic_nodes.py +1615 -0
  220. sage/rings/padics/lattice_precision.py +2889 -0
  221. sage/rings/padics/morphism.cpython-314-x86_64-linux-musl.so +0 -0
  222. sage/rings/padics/morphism.pxd +11 -0
  223. sage/rings/padics/morphism.pyx +366 -0
  224. sage/rings/padics/padic_base_generic.py +467 -0
  225. sage/rings/padics/padic_base_leaves.py +1235 -0
  226. sage/rings/padics/padic_capped_absolute_element.cpython-314-x86_64-linux-musl.so +0 -0
  227. sage/rings/padics/padic_capped_absolute_element.pxd +15 -0
  228. sage/rings/padics/padic_capped_absolute_element.pyx +520 -0
  229. sage/rings/padics/padic_capped_relative_element.cpython-314-x86_64-linux-musl.so +0 -0
  230. sage/rings/padics/padic_capped_relative_element.pxd +14 -0
  231. sage/rings/padics/padic_capped_relative_element.pyx +614 -0
  232. sage/rings/padics/padic_extension_generic.py +990 -0
  233. sage/rings/padics/padic_extension_leaves.py +738 -0
  234. sage/rings/padics/padic_fixed_mod_element.cpython-314-x86_64-linux-musl.so +0 -0
  235. sage/rings/padics/padic_fixed_mod_element.pxd +15 -0
  236. sage/rings/padics/padic_fixed_mod_element.pyx +584 -0
  237. sage/rings/padics/padic_floating_point_element.cpython-314-x86_64-linux-musl.so +0 -0
  238. sage/rings/padics/padic_floating_point_element.pxd +14 -0
  239. sage/rings/padics/padic_floating_point_element.pyx +447 -0
  240. sage/rings/padics/padic_generic_element.cpython-314-x86_64-linux-musl.so +0 -0
  241. sage/rings/padics/padic_generic_element.pxd +48 -0
  242. sage/rings/padics/padic_generic_element.pyx +4642 -0
  243. sage/rings/padics/padic_lattice_element.py +1342 -0
  244. sage/rings/padics/padic_printing.cpython-314-x86_64-linux-musl.so +0 -0
  245. sage/rings/padics/padic_printing.pxd +38 -0
  246. sage/rings/padics/padic_printing.pyx +1505 -0
  247. sage/rings/padics/padic_relaxed_element.cpython-314-x86_64-linux-musl.so +0 -0
  248. sage/rings/padics/padic_relaxed_element.pxd +56 -0
  249. sage/rings/padics/padic_relaxed_element.pyx +18 -0
  250. sage/rings/padics/padic_relaxed_errors.cpython-314-x86_64-linux-musl.so +0 -0
  251. sage/rings/padics/padic_relaxed_errors.pxd +11 -0
  252. sage/rings/padics/padic_relaxed_errors.pyx +71 -0
  253. sage/rings/padics/padic_template_element.pxi +1212 -0
  254. sage/rings/padics/padic_template_element_header.pxi +50 -0
  255. sage/rings/padics/padic_valuation.py +1423 -0
  256. sage/rings/padics/pow_computer_flint.cpython-314-x86_64-linux-musl.so +0 -0
  257. sage/rings/padics/pow_computer_flint.pxd +38 -0
  258. sage/rings/padics/pow_computer_flint.pyx +641 -0
  259. sage/rings/padics/pow_computer_relative.cpython-314-x86_64-linux-musl.so +0 -0
  260. sage/rings/padics/pow_computer_relative.pxd +29 -0
  261. sage/rings/padics/pow_computer_relative.pyx +415 -0
  262. sage/rings/padics/qadic_flint_CA.cpython-314-x86_64-linux-musl.so +0 -0
  263. sage/rings/padics/qadic_flint_CA.pxd +21 -0
  264. sage/rings/padics/qadic_flint_CA.pyx +130 -0
  265. sage/rings/padics/qadic_flint_CR.cpython-314-x86_64-linux-musl.so +0 -0
  266. sage/rings/padics/qadic_flint_CR.pxd +13 -0
  267. sage/rings/padics/qadic_flint_CR.pyx +172 -0
  268. sage/rings/padics/qadic_flint_FM.cpython-314-x86_64-linux-musl.so +0 -0
  269. sage/rings/padics/qadic_flint_FM.pxd +14 -0
  270. sage/rings/padics/qadic_flint_FM.pyx +111 -0
  271. sage/rings/padics/qadic_flint_FP.cpython-314-x86_64-linux-musl.so +0 -0
  272. sage/rings/padics/qadic_flint_FP.pxd +12 -0
  273. sage/rings/padics/qadic_flint_FP.pyx +165 -0
  274. sage/rings/padics/relative_extension_leaves.py +429 -0
  275. sage/rings/padics/relative_ramified_CA.cpython-314-x86_64-linux-musl.so +0 -0
  276. sage/rings/padics/relative_ramified_CA.pxd +9 -0
  277. sage/rings/padics/relative_ramified_CA.pyx +33 -0
  278. sage/rings/padics/relative_ramified_CR.cpython-314-x86_64-linux-musl.so +0 -0
  279. sage/rings/padics/relative_ramified_CR.pxd +8 -0
  280. sage/rings/padics/relative_ramified_CR.pyx +33 -0
  281. sage/rings/padics/relative_ramified_FM.cpython-314-x86_64-linux-musl.so +0 -0
  282. sage/rings/padics/relative_ramified_FM.pxd +9 -0
  283. sage/rings/padics/relative_ramified_FM.pyx +33 -0
  284. sage/rings/padics/relative_ramified_FP.cpython-314-x86_64-linux-musl.so +0 -0
  285. sage/rings/padics/relative_ramified_FP.pxd +8 -0
  286. sage/rings/padics/relative_ramified_FP.pyx +33 -0
  287. sage/rings/padics/relaxed_template.pxi +4229 -0
  288. sage/rings/padics/relaxed_template_header.pxi +160 -0
  289. sage/rings/padics/tests.py +35 -0
  290. sage/rings/padics/tutorial.py +341 -0
  291. sage/rings/padics/unramified_extension_generic.py +335 -0
  292. sage/rings/padics/witt_vector.py +917 -0
  293. sage/rings/padics/witt_vector_ring.py +934 -0
  294. sage/rings/pari_ring.py +235 -0
  295. sage/rings/polynomial/all__sagemath_pari.py +1 -0
  296. sage/rings/polynomial/padics/all.py +1 -0
  297. sage/rings/polynomial/padics/polynomial_padic.py +360 -0
  298. sage/rings/polynomial/padics/polynomial_padic_capped_relative_dense.py +1324 -0
  299. sage/rings/polynomial/padics/polynomial_padic_flat.py +72 -0
  300. sage/rings/power_series_pari.cpython-314-x86_64-linux-musl.so +0 -0
  301. sage/rings/power_series_pari.pxd +6 -0
  302. sage/rings/power_series_pari.pyx +934 -0
  303. sage/rings/tate_algebra.py +1282 -0
  304. sage/rings/tate_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  305. sage/rings/tate_algebra_element.pxd +49 -0
  306. sage/rings/tate_algebra_element.pyx +3464 -0
  307. sage/rings/tate_algebra_ideal.cpython-314-x86_64-linux-musl.so +0 -0
  308. sage/rings/tate_algebra_ideal.pxd +7 -0
  309. sage/rings/tate_algebra_ideal.pyx +1307 -0
  310. sage/rings/valuation/all.py +7 -0
  311. sage/rings/valuation/augmented_valuation.py +2118 -0
  312. sage/rings/valuation/developing_valuation.py +362 -0
  313. sage/rings/valuation/gauss_valuation.py +812 -0
  314. sage/rings/valuation/inductive_valuation.py +1686 -0
  315. sage/rings/valuation/limit_valuation.py +946 -0
  316. sage/rings/valuation/mapped_valuation.py +656 -0
  317. sage/rings/valuation/scaled_valuation.py +322 -0
  318. sage/rings/valuation/trivial_valuation.py +382 -0
  319. sage/rings/valuation/valuation.py +1119 -0
  320. sage/rings/valuation/valuation_space.py +1615 -0
  321. sage/rings/valuation/valuations_catalog.py +10 -0
  322. sage/rings/valuation/value_group.py +697 -0
  323. sage/schemes/all__sagemath_pari.py +1 -0
  324. sage/schemes/elliptic_curves/all__sagemath_pari.py +1 -0
  325. sage/schemes/elliptic_curves/descent_two_isogeny_pari.cpython-314-x86_64-linux-musl.so +0 -0
  326. sage/schemes/elliptic_curves/descent_two_isogeny_pari.pyx +46 -0
  327. sage_wheels/bin/gp +0 -0
  328. sage_wheels/bin/gp2c +0 -0
  329. sage_wheels/bin/gp2c-run +57 -0
  330. sage_wheels/bin/xeus-gp +0 -0
  331. sage_wheels/share/gp2c/func.dsc +18414 -0
@@ -0,0 +1,362 @@
1
+ # sage_setup: distribution = sagemath-pari
2
+ r"""
3
+ Valuations on polynomial rings based on `\phi`-adic expansions
4
+
5
+ This file implements a base class for discrete valuations on polynomial rings,
6
+ defined by a `\phi`-adic expansion.
7
+
8
+ AUTHORS:
9
+
10
+ - Julian Rüth (2013-04-15): initial version
11
+
12
+ EXAMPLES:
13
+
14
+ The :mod:`Gauss valuation <sage.rings.valuation.gauss_valuation>` is a simple example of a valuation that relies on
15
+ `\phi`-adic expansions::
16
+
17
+ sage: R.<x> = QQ[]
18
+ sage: v = GaussValuation(R, QQ.valuation(2))
19
+
20
+ In this case, `\phi = x`, so the expansion simply lists the coefficients of the
21
+ polynomial::
22
+
23
+ sage: f = x^2 + 2*x + 2
24
+ sage: list(v.coefficients(f))
25
+ [2, 2, 1]
26
+
27
+ Often only the first few coefficients are necessary in computations, so for
28
+ performance reasons, coefficients are computed lazily::
29
+
30
+ sage: v.coefficients(f)
31
+ <generator object ...coefficients at 0x...>
32
+
33
+ Another example of a :class:`DevelopingValuation` is an :mod:`augmented
34
+ valuation <sage.rings.valuation.augmented_valuation>`::
35
+
36
+ sage: w = v.augmentation(x^2 + x + 1, 3)
37
+
38
+ Here, the expansion lists the remainders of repeated division by `x^2 + x + 1`::
39
+
40
+ sage: list(w.coefficients(f))
41
+ [x + 1, 1]
42
+ """
43
+ # ****************************************************************************
44
+ # Copyright (C) 2013-2025 Julian Rüth <julian.rueth@fsfe.org>
45
+ #
46
+ # Distributed under the terms of the GNU General Public License (GPL)
47
+ # as published by the Free Software Foundation; either version 2 of
48
+ # the License, or (at your option) any later version.
49
+ # https://www.gnu.org/licenses/
50
+ # ****************************************************************************
51
+
52
+ from .valuation import DiscretePseudoValuation
53
+ from sage.misc.abstract_method import abstract_method
54
+
55
+ from sage.misc.cachefunc import cached_method
56
+
57
+
58
+ class DevelopingValuation(DiscretePseudoValuation):
59
+ r"""
60
+ Abstract base class for a discrete valuation of polynomials defined over
61
+ the polynomial ring ``domain`` by the `\phi`-adic development.
62
+
63
+ EXAMPLES::
64
+
65
+ sage: R.<x> = QQ[]
66
+ sage: v = GaussValuation(R, QQ.valuation(7))
67
+
68
+ TESTS::
69
+
70
+ sage: TestSuite(v).run() # long time # needs sage.geometry.polyhedron
71
+ """
72
+ def __init__(self, parent, phi):
73
+ r"""
74
+ TESTS::
75
+
76
+ sage: R.<x> = QQ[]
77
+ sage: v = GaussValuation(R, QQ.valuation(7))
78
+ sage: from sage.rings.valuation.developing_valuation import DevelopingValuation
79
+ sage: isinstance(v, DevelopingValuation)
80
+ True
81
+ """
82
+ DiscretePseudoValuation.__init__(self, parent)
83
+
84
+ domain = parent.domain()
85
+ from sage.rings.polynomial.polynomial_ring import PolynomialRing_generic
86
+ if not isinstance(domain, PolynomialRing_generic) or not domain.ngens() == 1:
87
+ raise TypeError("domain must be a univariate polynomial ring but %r is not" % (domain,))
88
+
89
+ phi = domain.coerce(phi)
90
+ if phi.is_constant() or not phi.is_monic():
91
+ raise ValueError("phi must be a monic non-constant polynomial but %r is not" % (phi,))
92
+
93
+ self._phi = phi
94
+
95
+ def phi(self):
96
+ r"""
97
+ Return the polynomial `\phi`, the key polynomial of this valuation.
98
+
99
+ EXAMPLES::
100
+
101
+ sage: R = Zp(2,5)
102
+ sage: S.<x> = R[] # needs sage.libs.ntl
103
+ sage: v = GaussValuation(S) # needs sage.libs.ntl
104
+ sage: v.phi() # needs sage.libs.ntl
105
+ (1 + O(2^5))*x
106
+
107
+ Use
108
+ :meth:`~sage.rings.valuation.inductive_valuation.InductiveValuation.augmentation_chain`
109
+ to obtain the sequence of key polynomials of an
110
+ :class:`~sage.rings.valuation.inductive_valuation.InductiveValuation`::
111
+
112
+ sage: R.<x> = QQ[]
113
+ sage: v = GaussValuation(R, QQ.valuation(2))
114
+ sage: v = v.augmentation(x, 1)
115
+ sage: v = v.augmentation(x^2 + 2*x + 4, 3)
116
+
117
+ sage: v
118
+ [ Gauss valuation induced by 2-adic valuation, v(x) = 1, v(x^2 + 2*x + 4) = 3 ]
119
+
120
+ sage: [w.phi() for w in v.augmentation_chain()[:-1]]
121
+ [x^2 + 2*x + 4, x]
122
+
123
+ A similar approach can be used to obtain the key polynomials and their
124
+ corresponding valuations::
125
+
126
+ sage: [(w.phi(), w.mu()) for w in v.augmentation_chain()[:-1]]
127
+ [(x^2 + 2*x + 4, 3), (x, 1)]
128
+
129
+ """
130
+ return self._phi
131
+
132
+ def effective_degree(self, f, valuations=None):
133
+ r"""
134
+ Return the effective degree of ``f`` with respect to this valuation.
135
+
136
+ The effective degree of `f` is the largest `i` such that the valuation
137
+ of `f` and the valuation of `f_i\phi^i` in the development `f=\sum_j
138
+ f_j\phi^j` coincide (see [Mac1936II]_ p.497.)
139
+
140
+ INPUT:
141
+
142
+ - ``f`` -- a nonzero polynomial in the domain of this valuation
143
+
144
+ EXAMPLES::
145
+
146
+ sage: # needs sage.libs.ntl
147
+ sage: R = Zp(2,5)
148
+ sage: S.<x> = R[]
149
+ sage: v = GaussValuation(S)
150
+ sage: v.effective_degree(x)
151
+ 1
152
+ sage: v.effective_degree(2*x + 1)
153
+ 0
154
+ """
155
+ f = self.domain().coerce(f)
156
+
157
+ if f.is_zero():
158
+ raise ValueError("the effective degree is only defined for nonzero polynomials")
159
+
160
+ if valuations is None:
161
+ valuations = list(self.valuations(f))
162
+ v = min(valuations)
163
+ return [i for i, w in enumerate(valuations) if w == v][-1]
164
+
165
+ @cached_method
166
+ def _pow(self, f, e, error, effective_degree):
167
+ r"""
168
+ Return `f^e`.
169
+
170
+ This method does not compute the exact value of `f^e` but only an
171
+ element that differs from the correct result by an error with valuation
172
+ at least ``error``. The output is assumed to have at most
173
+ ``effective_degree``. If the effective degree is higher than
174
+ ``effective_degree``, then the result may not be correct.
175
+
176
+ EXAMPLES::
177
+
178
+ sage: # needs sage.libs.ntl
179
+ sage: R = Zp(2,5)
180
+ sage: S.<x> = R[]
181
+ sage: v = GaussValuation(S)
182
+ sage: v._pow(2*x + 1, 10, effective_degree=0, error=5)
183
+ 1 + O(2^5)
184
+ """
185
+ if e == 0:
186
+ return self.domain().one()
187
+ if e == 1:
188
+ return self.simplify(f, error=error)
189
+ if e % 2 == 0:
190
+ return self._pow(self.simplify(f*f, error=error*2/e, effective_degree=effective_degree*2/e),
191
+ e//2, error=error, effective_degree=effective_degree)
192
+ else:
193
+ return self.simplify(f*self._pow(f, e-1, error=error*(e-1)/e, effective_degree=effective_degree*(e-1)/e),
194
+ error=error, effective_degree=effective_degree)
195
+
196
+ def coefficients(self, f):
197
+ r"""
198
+ Return the `\phi`-adic expansion of ``f``.
199
+
200
+ INPUT:
201
+
202
+ - ``f`` -- a monic polynomial in the domain of this valuation
203
+
204
+ OUTPUT:
205
+
206
+ An iterator `f_0, f_1, \dots, f_n` of polynomials in the domain of this
207
+ valuation such that `f=\sum_i f_i\phi^i`
208
+
209
+ EXAMPLES::
210
+
211
+ sage: # needs sage.libs.ntl
212
+ sage: R = Qp(2,5)
213
+ sage: S.<x> = R[]
214
+ sage: v = GaussValuation(S)
215
+ sage: f = x^2 + 2*x + 3
216
+ sage: list(v.coefficients(f)) # note that these constants are in the polynomial ring
217
+ [1 + 2 + O(2^5), 2 + O(2^6), 1 + O(2^5)]
218
+ sage: v = v.augmentation( x^2 + x + 1, 1)
219
+ sage: list(v.coefficients(f))
220
+ [(1 + O(2^5))*x + 2 + O(2^5), 1 + O(2^5)]
221
+ """
222
+ domain = self.domain()
223
+ f = domain.coerce(f)
224
+
225
+ if f.degree() < self.phi().degree():
226
+ yield f
227
+ elif self.phi().degree() == 1:
228
+ if self.phi() != domain.gen() or not domain.is_exact():
229
+ f = f(domain.gen() - self.phi()[0])
230
+ for c in f.coefficients(sparse=False):
231
+ yield domain(c)
232
+ else:
233
+ while f.degree() >= 0:
234
+ f, r = self._quo_rem(f)
235
+ yield r
236
+
237
+ def _quo_rem(self, f):
238
+ r"""
239
+ Return the quotient and remainder of ``f`` divided by the key
240
+ polynomial :meth:`phi`.
241
+
242
+ EXAMPLES::
243
+
244
+ sage: S.<x> = QQ[]
245
+ sage: v = GaussValuation(S, QQ.valuation(2))
246
+ sage: v._quo_rem(x^2 + 1)
247
+ (x, 1)
248
+ """
249
+ return f.quo_rem(self.phi())
250
+
251
+ def newton_polygon(self, f, valuations=None):
252
+ r"""
253
+ Return the Newton polygon of the `\phi`-adic development of ``f``.
254
+
255
+ INPUT:
256
+
257
+ - ``f`` -- a polynomial in the domain of this valuation
258
+
259
+ EXAMPLES::
260
+
261
+ sage: # needs sage.libs.ntl
262
+ sage: R = Qp(2,5)
263
+ sage: S.<x> = R[]
264
+ sage: v = GaussValuation(S)
265
+ sage: f = x^2 + 2*x + 3
266
+ sage: v.newton_polygon(f) # needs sage.geometry.polyhedron
267
+ Finite Newton polygon with 2 vertices: (0, 0), (2, 0)
268
+ sage: v = v.augmentation( x^2 + x + 1, 1)
269
+ sage: v.newton_polygon(f) # needs sage.geometry.polyhedron
270
+ Finite Newton polygon with 2 vertices: (0, 0), (1, 1)
271
+ sage: v.newton_polygon( f * v.phi()^3 ) # needs sage.geometry.polyhedron
272
+ Finite Newton polygon with 2 vertices: (3, 3), (4, 4)
273
+ """
274
+ f = self.domain().coerce(f)
275
+
276
+ from sage.geometry.newton_polygon import NewtonPolygon
277
+ if valuations is None:
278
+ valuations = self.valuations(f)
279
+ return NewtonPolygon(list(enumerate(valuations)))
280
+
281
+ def _call_(self, f):
282
+ r"""
283
+ Evaluate this valuation at ``f``.
284
+
285
+ INPUT:
286
+
287
+ - ``f`` -- a polynomial in the domain of this valuation
288
+
289
+ EXAMPLES::
290
+
291
+ sage: # needs sage.libs.ntl
292
+ sage: R = Qp(2,5)
293
+ sage: S.<x> = R[]
294
+ sage: v = GaussValuation(S)
295
+ sage: f = x^2 + 2*x + 3
296
+ sage: v(f)
297
+ 0
298
+
299
+ sage: # needs sage.libs.ntl
300
+ sage: v = v.augmentation( x^2 + x + 1, 1)
301
+ sage: v(f)
302
+ 0
303
+ sage: v(f * v.phi()^3 )
304
+ 3
305
+ sage: v(S.zero())
306
+ +Infinity
307
+ """
308
+ f = self.domain().coerce(f)
309
+
310
+ from sage.rings.infinity import infinity
311
+ if f.is_zero():
312
+ return infinity
313
+
314
+ ret = infinity
315
+ for v in self.valuations(f, call_error=True):
316
+ if ret is infinity or (v is not infinity and v < ret):
317
+ # "ret is infinity" is redundant but much faster than < when ret is infinite
318
+ ret = v
319
+ return ret
320
+
321
+ @abstract_method
322
+ def valuations(self, f):
323
+ r"""
324
+ Return the valuations of the `f_i\phi^i` in the expansion `f=\sum f_i\phi^i`.
325
+
326
+ INPUT:
327
+
328
+ - ``f`` -- a polynomial in the domain of this valuation
329
+
330
+ OUTPUT:
331
+
332
+ A list, each entry a rational numbers or infinity, the valuations of
333
+ `f_0, f_1\phi, \dots`
334
+
335
+ EXAMPLES::
336
+
337
+ sage: # needs sage.libs.ntl
338
+ sage: R = Qp(2,5)
339
+ sage: S.<x> = R[]
340
+ sage: v = GaussValuation(S, R.valuation())
341
+ sage: f = x^2 + 2*x + 16
342
+ sage: list(v.valuations(f))
343
+ [4, 1, 0]
344
+ """
345
+
346
+ def _test_effective_degree(self, **options):
347
+ r"""
348
+ Test the correctness of :meth:`effective_degree`.
349
+
350
+ EXAMPLES::
351
+
352
+ sage: R = Zp(2,5)
353
+ sage: S.<x> = R[] # needs sage.libs.ntl
354
+ sage: v = GaussValuation(S) # needs sage.libs.ntl
355
+ sage: v._test_effective_degree() # needs sage.libs.ntl
356
+ """
357
+ tester = self._tester(**options)
358
+ S = tester.some_elements(self.domain().base_ring().some_elements())
359
+ for x in S:
360
+ if x == 0:
361
+ continue
362
+ tester.assertEqual(self.effective_degree(x), 0)