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,388 @@
1
+ # sage_setup: distribution = sagemath-pari
2
+ r"""
3
+ This linkage file implements the padics API for ramified extensions using Sage
4
+ Polynomials.
5
+
6
+ It contains the bits that are specific for ramified extensions. Everything that
7
+ is independent of ramification is in Polynomial_shared.pxi.
8
+
9
+ .. NOTE::
10
+
11
+ There are no doctests in this file since the functions here cannot be
12
+ called directly from Python. Testing of this function is necessarily
13
+ indirect and mostly done through arithmetic black-box tests that are part
14
+ of the test suites of the `p`-adic parents.
15
+
16
+ AUTHORS:
17
+
18
+ - David Roe, Julian Rüth (2017-06-11): initial version
19
+ """
20
+ # ****************************************************************************
21
+ # Copyright (C) 2017 David Roe <roed.math@gmail.com>
22
+ # 2017 Julian Rüth <julian.rueth@fsfe.org>
23
+ #
24
+ # Distributed under the terms of the GNU General Public License (GPL)
25
+ # as published by the Free Software Foundation; either version 2 of
26
+ # the License, or (at your option) any later version.
27
+ #
28
+ # https://www.gnu.org/licenses/
29
+ # ****************************************************************************
30
+ from sage.rings.integer cimport Integer
31
+ from sage.ext.stdsage cimport PY_NEW
32
+ from sage.libs.gmp.mpz cimport *
33
+
34
+ include "sage/libs/linkages/padics/Polynomial_shared.pxi"
35
+
36
+ cdef inline bint creduce(celement out, celement a, long prec, PowComputer_ prime_pow) except -1:
37
+ r"""
38
+ Reduce ``a`` modulo a power of the maximal ideal.
39
+
40
+ INPUT:
41
+
42
+ - ``out`` -- a ``celement`` to store the reduction
43
+
44
+ - ``a`` -- the ``celement`` to be reduced
45
+
46
+ - ``prec`` -- a ``long``, the precision to reduce modulo
47
+
48
+ - ``prime_pow`` -- the ``PowComputer`` for the ring
49
+
50
+ OUTPUT: ``True`` if the reduction is zero, ``False`` otherwise
51
+ """
52
+ cdef celement ared = a % prime_pow.modulus
53
+ if ared is a and out is not a:
54
+ out._coeffs = ared._coeffs[:]
55
+ else:
56
+ out._coeffs = ared._coeffs
57
+ cdef long coeff_prec = prec / prime_pow.e + 1
58
+ cdef long break_pt = prec % prime_pow.e
59
+ for i in range(len(out._coeffs)):
60
+ if i == break_pt:
61
+ coeff_prec -= 1
62
+ out._coeffs[i] = out._coeffs[i].add_bigoh(coeff_prec)
63
+ out._normalize()
64
+ return out == 0
65
+
66
+ cdef inline bint creduce_small(celement out, celement a, long prec, PowComputer_ prime_pow) except -1:
67
+ r"""
68
+ Reduce ``a`` modulo a power of the maximal ideal.
69
+
70
+ Similar to ``creduce`` but this function assumes that at most one
71
+ addition/subtraction has happened on reduced inputs. For integral inputs
72
+ this translates to the assumption that `-p^\mathrm{prec} < a < 2p^\mathrm{prec}`.
73
+
74
+ INPUT:
75
+
76
+ - ``out`` -- a ``celement`` to store the reduction
77
+
78
+ - ``a`` -- the ``celement`` to be reduced
79
+
80
+ - ``prec`` -- a ``long``, the precision to reduce modulo
81
+
82
+ - ``prime_pow`` -- the ``PowComputer`` for the ring
83
+
84
+ OUTPUT: ``True`` if the reduction is zero, ``False`` otherwise
85
+ """
86
+ return creduce(out, a, prec, prime_pow)
87
+
88
+ cdef inline long cvaluation(celement a, long prec, PowComputer_ prime_pow) except -1:
89
+ r"""
90
+ Return the maximum power of the uniformizer dividing ``a``.
91
+
92
+ This function differs from :meth:`cremove` in that the unit is discarded.
93
+
94
+ INPUT:
95
+
96
+ - ``a`` -- the element whose valuation is desired
97
+
98
+ - ``prec`` -- a ``long``; if the valuation of ``a`` exceeds ``prec``, this
99
+ function returns ``prec``. In particular, ``prec`` is returned if ``a``
100
+ is zero.
101
+
102
+ - ``prec`` -- a ``long``, the return value if ``a`` is zero
103
+
104
+ - ``prime_pow`` -- the ``PowComputer`` for the ring
105
+
106
+ OUTPUT:
107
+
108
+ The number of times the uniformizer divides ``a``, or ``prec`` if that is
109
+ higher.
110
+ """
111
+ C = a._coeffs
112
+ if not C:
113
+ return prec
114
+ cdef long ret = maxordp
115
+
116
+ for i,c in enumerate(C):
117
+ ret = min(ret, c.valuation()*prime_pow.e + i)
118
+
119
+ return ret
120
+
121
+ cdef inline int cshift(celement shifted, celement rem, celement a, long n, long prec, PowComputer_ prime_pow, bint reduce_afterward) except -1:
122
+ r"""
123
+ Multiply ``a`` by an ``n``-th power of the uniformizer.
124
+
125
+ This function shifts the π-adic expansion of ``a`` by ``n``, i.e., it
126
+ multiplies ``a`` by the `n`-th power of the uniformizer and drops any terms
127
+ with negative powers of the uniformizer in the π-adic expansion.
128
+
129
+ INPUT:
130
+
131
+ - ``shifted`` -- a ``celement`` to store the product with π^n
132
+
133
+ - ``rem`` -- a ``celement`` to store the remainder, when `n < 0`
134
+
135
+ - ``a`` -- the ``celement`` to shift
136
+
137
+ - ``n`` -- a ``long``, the amount to shift by
138
+
139
+ - ``prec`` -- a ``long``, a precision modulo which to reduce if
140
+ ``reduce_afterward`` is set
141
+
142
+ - ``prime_pow`` -- the ``PowComputer`` for the ring
143
+
144
+ - ``reduce_afterward`` -- whether to :meth:`creduce` ``shifted`` before
145
+ returning
146
+ """
147
+ cdef long v
148
+ notrunc = False
149
+ if n >= 0:
150
+ notrunc = True
151
+ else:
152
+ v = cvaluation(a, prec, prime_pow)
153
+ notrunc = (v >= -n)
154
+ if notrunc:
155
+ rem._coeffs = []
156
+ return cshift_notrunc(shifted, a, n, prec, prime_pow, reduce_afterward)
157
+ if v > 0:
158
+ b = prime_pow.poly_ring(0)
159
+ cshift_notrunc(b, a, -v, prec, prime_pow, False)
160
+ a = b
161
+ n += v
162
+ # Because the π-adic and p-adic expansions are different,
163
+ # there isn't an obvious way to translate shift-with-truncation
164
+ # in the π-adic expansion in terms of shifting by p in the base.
165
+ # We thus have to compute the first few terms of the π-adic expansion
166
+ # and subtract them.
167
+ _rem = prime_pow.poly_ring(0)
168
+ for i in range(-n):
169
+ rep = a[0]._modp_rep(return_list=False)
170
+ _rem += rep * prime_pow.uniformizer_pow(i)
171
+ a -= rep
172
+ a *= prime_pow.px_pow(1)
173
+ a %= prime_pow.modulus()
174
+ a = a.map_coefficients(lambda c: c>>1)
175
+ cshift_notrunc(rem, _rem, v, prime_pow.ram_prec_cap, prime_pow, True)
176
+ if reduce_afterward:
177
+ creduce(shifted, a, prec, prime_pow)
178
+ else:
179
+ shifted._coeffs = a._coeffs[:]
180
+
181
+ cdef inline int cshift_notrunc(celement out, celement a, long n, long prec, PowComputer_ prime_pow, bint reduce_afterward) except -1:
182
+ r"""
183
+ Multiply ``a`` with an ``n``-th power of the uniformizer.
184
+
185
+ This method is identical to :meth:`cshift` but assumes that the valuation
186
+ of ``a`` is at least ``-n``.
187
+
188
+ INPUT:
189
+
190
+ - ``out`` -- a ``celement`` to store the result
191
+
192
+ - ``a`` -- the ``celement`` to shift
193
+
194
+ - ``n`` -- a ``long``, the amount to shift by
195
+
196
+ - ``prec`` -- a ``long``, a precision modulo which to reduce if
197
+ ``reduce_afterward`` is set
198
+
199
+ - ``prime_pow`` -- the ``PowComputer`` for the ring
200
+
201
+ - ``reduce_afterward`` -- whether to :meth:`creduce` ``out`` before
202
+ returning
203
+ """
204
+ cdef long q, r
205
+
206
+ if n > 0:
207
+ a *= prime_pow.uniformizer_pow(n)
208
+ elif n < 0:
209
+ q = -n / prime_pow.e # ≥ 0
210
+ r = -n % prime_pow.e # ≥ 0
211
+ # As 0 > n = -q*e - r, π^n = p^-q * (p/π^e)^q * π^-r
212
+ if q:
213
+ # Multiply by p^-q. Important to do first for fixed-mod.
214
+ a = a.map_coefficients(lambda c: c>>q)
215
+ # and adjust to the π-adic expansion by multiplying by (p/π^e)^q.
216
+ a *= prime_pow.pxe_pow(q)
217
+ if r:
218
+ # Note that in fixed mod this operation can cause errors in the last
219
+ # few digits, since we must divide by p afterward.
220
+ # Multiply by (p/π^r).
221
+ a *= prime_pow.px_pow(r)
222
+ a %= prime_pow.modulus()
223
+ # Divide by p. This must happen afterward since not all
224
+ # coefficients were multiples of p before.
225
+ a = a.map_coefficients(lambda c: c>>1)
226
+
227
+ if reduce_afterward:
228
+ creduce(out, a, prec, prime_pow)
229
+ else:
230
+ out._coeffs = a._coeffs[:]
231
+
232
+ cdef inline int cinvert(celement out, celement a, long prec, PowComputer_ prime_pow) except -1:
233
+ r"""
234
+ Compute the inverse of ``a``.
235
+
236
+ INPUT:
237
+
238
+ - ``out`` -- a ``celement`` to store the inverse
239
+
240
+ - ``a`` -- a ``celement``, the element to be inverted
241
+
242
+ - ``prec`` -- a ``long``, ``out`` is reduced to this precision
243
+
244
+ - ``prime_pow`` -- the ``PowComputer`` for the ring
245
+ """
246
+ out._coeffs = prime_pow.invert(a, prec)._coeffs
247
+ creduce(out, out, prec, prime_pow)
248
+
249
+ cdef inline int cdivunit(celement out, celement a, celement b, long prec, PowComputer_ prime_pow) except -1:
250
+ r"""
251
+ Divide ``a`` by ``b``.
252
+
253
+ This function computes ``a*(1/b)`` where the inverse of ``b`` is determined
254
+ to precision ``prec``. No reduction is performed after the product.
255
+
256
+ INPUT:
257
+
258
+ - ``out`` -- a ``celement`` to store the quotient
259
+
260
+ - ``a`` -- a ``celement``, the dividend
261
+
262
+ - ``b`` -- a ``celement``, the divisor, an element of valuation zero
263
+
264
+ - ``prec`` -- a ``long``, the precision to which the inverse of ``b`` is
265
+ determined
266
+
267
+ - ``prime_pow`` -- the ``PowComputer`` for the ring
268
+ """
269
+ binv = prime_pow.invert(b, prec)
270
+ cmul(out, a, binv, prec, prime_pow)
271
+
272
+ cdef inline int cpow(celement out, celement a, mpz_t n, long prec, PowComputer_ prime_pow) except -1:
273
+ r"""
274
+ Raise ``a`` to the ``n``-th power.
275
+
276
+ INPUT:
277
+
278
+ - ``out`` -- a ``celement`` in which to store the result
279
+
280
+ - ``a`` -- a ``celement``, the base
281
+
282
+ - ``n`` -- an ``mpz_t``, the exponent
283
+
284
+ - ``prec`` -- a ``long``, the working absolute precision
285
+
286
+ - ``prime_pow`` -- the ``PowComputer`` for the ring
287
+ """
288
+ cdef Integer zn = PY_NEW(Integer)
289
+ mpz_set(zn.value, n)
290
+
291
+ csetone(out, prime_pow)
292
+ if zn == 0:
293
+ return 0
294
+
295
+ cmul(out, out, a, prec, prime_pow)
296
+
297
+ for digit in zn.binary()[1:]:
298
+ cmul(out, out, out, prec, prime_pow)
299
+ if digit == '1':
300
+ cmul(out, out, a, prec, prime_pow)
301
+ # we should probably not creduce that frequently to increase the performance
302
+ creduce(out, out, prec, prime_pow)
303
+
304
+ # The element is filled in for zero in the p-adic expansion if necessary.
305
+ # This WON'T work if the absolute inertia degree is 1.
306
+ _expansion_zero = []
307
+
308
+ # the expansion_mode enum is defined in padic_template_element_header.pxi
309
+ cdef inline cexpansion_next(celement value, expansion_mode mode, long curpower, PowComputer_ prime_pow):
310
+ if mode == teichmuller_mode:
311
+ raise NotImplementedError
312
+ # This is not very efficient, but there's no clear better way.
313
+ # We assume this is only called on two-step extensions (for more general
314
+ # extensions, convert to the absolute field).
315
+ R = value.base_ring()
316
+ p = R.prime()
317
+ if R.absolute_degree() == 1:
318
+ raise NotImplementedError("Absolute extensions using Sage polynomials not completely supported")
319
+ if R.base_ring().absolute_degree() != 1:
320
+ raise TypeError("cexpansion only allowed on towers of height 2")
321
+ ans = []
322
+ p2 = (p-1)//2
323
+ # the following is specific to the ramified over unramified case.
324
+ modp_rep, term = value[0]._modp_rep(mode == smallest_mode)
325
+ if term:
326
+ value._coeffs[0] -= modp_rep
327
+ cshift_notrunc(value, value, -1, curpower, prime_pow, False)
328
+ return term
329
+
330
+ cdef inline cexpansion_getitem(celement value, long m, PowComputer_ prime_pow):
331
+ """
332
+ Return the `m`-th `p`-adic digit in the ``simple_mode`` expansion.
333
+
334
+ INPUT:
335
+
336
+ - ``value`` -- the `p`-adic element whose expansion is desired
337
+ - ``m`` -- nonnegative integer; which entry in the `p`-adic expansion to return
338
+ - ``prime_pow`` -- a ``PowComputer`` holding `p`-adic data
339
+ """
340
+ R = value.base_ring()
341
+ p = R.prime()
342
+ while m >= 0:
343
+ modp_rep, term = value[0]._modp_rep()
344
+ if m:
345
+ if len(value._coeffs):
346
+ value._coeffs[0] -= modp_rep
347
+ else:
348
+ value._coeffs.append(-modp_rep)
349
+ cshift_notrunc(value, value, -1, 1, prime_pow, False)
350
+ m -= 1
351
+ return term
352
+
353
+ cdef int cteichmuller(celement out, celement value, long prec, PowComputer_ prime_pow) except -1:
354
+ r"""
355
+ Compute a Teichmüller representative congruent to ``value``.
356
+
357
+ INPUT:
358
+
359
+ - ``out`` -- a ``celement`` which is set to a `q-1`-th root of unity
360
+ congruent to ``value`` modulo π; or 0 if `a \equiv 0 \pmod{π}`
361
+
362
+ - ``value`` -- n ``celement``, the element mod π to lift
363
+
364
+ - ``prec`` -- a ``long``, the precision to which to lift
365
+
366
+ - ``prime_pow`` -- the ``PowComputer`` of the ring
367
+ """
368
+ if value[0].valuation() > 0:
369
+ out._coeffs = []
370
+ else:
371
+ out._coeffs = [value[0].parent().teichmuller(value[0])]
372
+
373
+ cdef list ccoefficients(celement x, long valshift, long prec, PowComputer_ prime_pow):
374
+ """
375
+ Return a list of coefficients, as elements that can be converted into the base ring.
376
+
377
+ INPUT:
378
+
379
+ - ``x`` -- a ``celement`` giving the underlying `p`-adic element, or possibly its unit part
380
+ - ``valshift`` -- a long giving the power of the uniformizer to shift `x` by
381
+ - ``prec`` -- a long, the (relative) precision desired, used in rational reconstruction
382
+ - ``prime_pow`` -- the Powcomputer of the ring
383
+ """
384
+ if valshift == 0:
385
+ return x.list()
386
+ else:
387
+ cshift_notrunc(prime_pow.tmp_ccoeffs, x, valshift, valshift+prec, prime_pow, True)
388
+ return prime_pow.tmp_ccoeffs.list()