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,160 @@
1
+ # sage_setup: distribution = sagemath-pari
2
+ """
3
+ This file provides the declaration for the RelaxedElement class,
4
+ which collects common functionality for the different relaxed `p`-adic
5
+ template classes.
6
+
7
+ It is included in padic_relaxed_element.pxd and should be included
8
+ in any pxd file implementing relaxed `p`-adics.
9
+
10
+ AUTHORS:
11
+
12
+ - Xavier Caruso (2021-02) -- initial version
13
+ """
14
+
15
+ #*****************************************************************************
16
+ # Copyright (C) 2021 Xavier Caruso <xavier.caruso@normalesup.org>
17
+ #
18
+ # Distributed under the terms of the GNU General Public License (GPL)
19
+ # as published by the Free Software Foundation; either version 2 of
20
+ # the License, or (at your option) any later version.
21
+ #
22
+ # http://www.gnu.org/licenses/
23
+ #*****************************************************************************
24
+
25
+ from sage.rings.integer cimport Integer
26
+ from sage.rings.padics.pow_computer cimport PowComputer_class
27
+ from sage.rings.padics.padic_generic_element cimport pAdicGenericElement
28
+
29
+ cdef enum expansion_mode:
30
+ simple_mode, smallest_mode, teichmuller_mode
31
+
32
+ cdef class RelaxedElement(pAdicGenericElement):
33
+ cdef long _valuation
34
+ cdef long _precrel
35
+ cdef long _precbound
36
+ cdef PowComputer_class prime_pow
37
+
38
+ cdef cdigit_ptr _getdigit_relative(self, long i) noexcept
39
+ cdef cdigit_ptr _getdigit_absolute(self, long i) noexcept
40
+ cdef void _getslice_relative(self, celement slice, long start, long length) noexcept
41
+
42
+ cdef int _init_jump(self) except -1
43
+ cdef int _jump_c(self, long prec) noexcept
44
+ cdef int _jump_relative_c(self, long prec, long halt) noexcept
45
+ cdef int _next_c(self) noexcept
46
+
47
+ cdef long valuation_c(self, long halt=*) noexcept
48
+ cdef bint _is_equal(self, RelaxedElement right, long prec, bint permissive) except -1
49
+
50
+ cdef class RelaxedElement_abandon(RelaxedElement):
51
+ pass
52
+ cdef relaxedelement_abandon
53
+
54
+ cdef class RelaxedElementWithDigits(RelaxedElement):
55
+ cdef celement _digits
56
+
57
+
58
+ # Assignment
59
+
60
+ cdef class RelaxedElement_zero(RelaxedElement):
61
+ pass
62
+
63
+ cdef class RelaxedElement_one(RelaxedElementWithDigits):
64
+ pass
65
+
66
+ cdef class RelaxedElement_bound(RelaxedElement):
67
+ cdef RelaxedElement _x
68
+
69
+ cdef class RelaxedElement_value(RelaxedElementWithDigits):
70
+ cdef long _valuebound
71
+ cdef long _shift
72
+ cdef _value
73
+
74
+ cdef class RelaxedElement_random(RelaxedElementWithDigits):
75
+ cdef randgen _generator
76
+ # for pickling
77
+ cdef long _initialvaluation
78
+ cdef long _seed
79
+
80
+
81
+ # Operations
82
+
83
+ cdef class RelaxedElement_slice(RelaxedElement):
84
+ cdef RelaxedElement _x
85
+ cdef long _start
86
+ cdef long _stop
87
+ cdef long _shift
88
+
89
+ cdef class RelaxedElement_add(RelaxedElementWithDigits):
90
+ cdef RelaxedElement _x
91
+ cdef RelaxedElement _y
92
+
93
+ cdef class RelaxedElement_sub(RelaxedElementWithDigits):
94
+ cdef RelaxedElement _x
95
+ cdef RelaxedElement _y
96
+
97
+ cdef class RelaxedElement_mul(RelaxedElementWithDigits):
98
+ cdef RelaxedElement _x
99
+ cdef cdigit _lastdigit_x
100
+ cdef RelaxedElement _y
101
+ cdef cdigit _lastdigit_y
102
+ cdef int _update_last_digit(self) noexcept
103
+
104
+ cdef class RelaxedElement_muldigit(RelaxedElementWithDigits):
105
+ cdef cdigit_ptr _x
106
+ cdef RelaxedElement _y
107
+
108
+ cdef class RelaxedElement_div(RelaxedElementWithDigits):
109
+ cdef long _maxprec
110
+ cdef cdigit _inverse
111
+ cdef RelaxedElement _num
112
+ cdef RelaxedElement _denom
113
+ cdef RelaxedElement _definition
114
+ cdef int _bootstrap_c(self) noexcept
115
+ cdef bint _bootstraping
116
+
117
+ cdef class RelaxedElement_sqrt(RelaxedElementWithDigits):
118
+ cdef RelaxedElement _x
119
+ cdef RelaxedElement _definition
120
+ cdef int _bootstrap_c(self) noexcept
121
+
122
+ cdef class RelaxedElement_teichmuller(RelaxedElementWithDigits):
123
+ cdef bint _ready
124
+ cdef bint _trivial
125
+ cdef list _xns
126
+ cdef RelaxedElement _xbar
127
+ cdef RelaxedElement _xp
128
+
129
+ # Self-referent numbers
130
+
131
+ cdef class RelaxedElement_unknown(RelaxedElementWithDigits):
132
+ cdef RelaxedElement _definition
133
+ cdef long _next
134
+ cpdef set(self, RelaxedElement definition)
135
+ # for pickling
136
+ cdef long _initialvaluation
137
+ cdef long _initialprecrel
138
+
139
+ # Expansion
140
+
141
+ cdef class RelaxedElement_zeroone(RelaxedElementWithDigits):
142
+ cdef void _setdigit_to_zero(self) noexcept
143
+ cdef void _setdigit_to_one(self) noexcept
144
+
145
+ cdef class ExpansionIter():
146
+ cdef RelaxedElement elt
147
+ cdef expansion_mode mode
148
+ cdef long start
149
+ cdef long stop
150
+ cdef long current
151
+ cdef cdigit digit
152
+ # simple mode
153
+ cdef _next_simple(self)
154
+ # smallest mode
155
+ cdef cdigit carry
156
+ cdef _next_smallest(self)
157
+ # teichmuller mode
158
+ cdef RelaxedElement tail
159
+ cdef dict coefficients
160
+ cdef _next_teichmuller(self)
@@ -0,0 +1,35 @@
1
+ # sage_setup: distribution = sagemath-pari
2
+ """
3
+ TESTS::
4
+
5
+ sage: R = Zp(5, prec=5, type='fixed-mod')
6
+ sage: a = random_matrix(R,5) # needs sage.geometry.polyhedron
7
+ sage: a.determinant().parent() is R # needs sage.geometry.polyhedron
8
+ True
9
+ sage: K = Qp(3, 10,'capped-rel'); K.krull_dimension()
10
+ 0
11
+
12
+ Computation of logs::
13
+
14
+ sage: Qp(5)(1).log()
15
+ O(5^20)
16
+ sage: Qp(5)(-1).log()
17
+ O(5^20)
18
+ sage: Qp(5,prec=5)(7).log()
19
+ 4*5^2 + 4*5^3 + 3*5^4 + O(5^5)
20
+ sage: Qp(5,prec=10)(25*8).log(p_branch = 0)
21
+ 5 + 3*5^3 + 3*5^4 + 2*5^5 + 5^6 + 2*5^7 + 3*5^8 + 3*5^9 + O(5^10)
22
+ sage: Zp(5,prec=10)(8).log()
23
+ 5 + 3*5^3 + 3*5^4 + 2*5^5 + 5^6 + 2*5^7 + 3*5^8 + 3*5^9 + O(5^10)
24
+
25
+ Loading and saving elements of various types::
26
+
27
+ sage: a = Zp(5)(-3); loads(dumps(a)) == a
28
+ True
29
+
30
+ sage: M = MatrixSpace(pAdicField(3,100),2) # needs sage.geometry.polyhedron
31
+ sage: (M([1,0,0,90]) - (1+O(3^100)) * M(1)).left_kernel() # needs sage.geometry.polyhedron
32
+ Vector space of degree 2 and dimension 1 over 3-adic Field with capped relative precision 100
33
+ Basis matrix:
34
+ [1 + O(3^100) 0]
35
+ """
@@ -0,0 +1,341 @@
1
+ # sage_setup: distribution = sagemath-pari
2
+ r"""
3
+ Introduction to the `p`-adics
4
+ ==========================================
5
+
6
+ This tutorial outlines what you need to know in order to use
7
+ `p`-adics in Sage effectively.
8
+
9
+ Our goal is to create a rich structure of different options that
10
+ will reflect the mathematical structures of the `p`-adics.
11
+ This is very much a work in progress: some of the classes that we
12
+ eventually intend to include have not yet been written, and some of
13
+ the functionality for classes in existence has not yet been
14
+ implemented. In addition, while we strive for perfect code, bugs
15
+ (both subtle and not-so-subtle) continue to evade our clutches. As
16
+ a user, you serve an important role. By writing non-trivial code
17
+ that uses the `p`-adics, you both give us insight into what
18
+ features are actually used and also expose problems in the code for
19
+ us to fix.
20
+
21
+ Our design philosophy has been to create a robust, usable interface
22
+ working first, with simple-minded implementations underneath. We
23
+ want this interface to stabilize rapidly, so that users' code does
24
+ not have to change. Once we get the framework in place, we can go
25
+ back and work on the algorithms and implementations underneath. All
26
+ of the current `p`-adic code is currently written in pure
27
+ Python, which means that it does not have the speed advantage of
28
+ compiled code. Thus our `p`-adics can be painfully slow at
29
+ times when you're doing real computations. However, finding and
30
+ fixing bugs in Python code is *far* easier than finding and fixing
31
+ errors in the compiled alternative within Sage (Cython), and Python
32
+ code is also faster and easier to write. We thus have significantly
33
+ more functionality implemented and working than we would have if we
34
+ had chosen to focus initially on speed. And at some point in the
35
+ future, we will go back and improve the speed. Any code you have
36
+ written on top of our `p`-adics will then get an immediate
37
+ performance enhancement.
38
+
39
+ If you do find bugs, have feature requests or general comments,
40
+ please email sage-support@groups.google.com or
41
+ roed@math.harvard.edu.
42
+
43
+ Terminology and types of `p`-adics
44
+ ==========================================
45
+
46
+ To write down a general `p`-adic element completely would
47
+ require an infinite amount of data. Since computers do not have
48
+ infinite storage space, we must instead store finite approximations
49
+ to elements. Thus, just as in the case of floating point numbers
50
+ for representing reals, we have to store an element to a finite
51
+ precision level. The different ways of doing this account for the
52
+ different types of `p`-adics.
53
+
54
+ We can think of `p`-adics in two ways. First, as a
55
+ projective limit of finite groups:
56
+
57
+ .. MATH::
58
+
59
+ \ZZ_p = \lim_{\leftarrow n} \ZZ/p^n\ZZ.
60
+
61
+ Secondly, as Cauchy sequences of rationals (or integers, in the
62
+ case of `\ZZ_p`) under the `p`-adic metric.
63
+ Since we only need to consider these sequences up to equivalence,
64
+ this second way of thinking of the `p`-adics is the same as
65
+ considering power series in `p` with integral coefficients
66
+ in the range `0` to `p-1`. If we only allow
67
+ nonnegative powers of `p` then these power series converge
68
+ to elements of `\ZZ_p`, and if we allow bounded
69
+ negative powers of `p` then we get `\QQ_p`.
70
+
71
+ Both of these representations give a natural way of thinking about
72
+ finite approximations to a `p`-adic element. In the first
73
+ representation, we can just stop at some point in the projective
74
+ limit, giving an element of `\ZZ/p^n\ZZ`. As
75
+ `\ZZ_p / p^n\ZZ_p \cong \ZZ/p^n\ZZ`, this
76
+ is equivalent to specifying our element modulo
77
+ `p^n\ZZ_p`.
78
+
79
+ The *absolute precision* of a finite approximation
80
+ `\bar{x} \in \ZZ/p^n\ZZ` to `x \in \ZZ_p`
81
+ is the nonnegative integer `n`.
82
+
83
+ In the second representation, we can achieve the same thing by
84
+ truncating a series
85
+
86
+ .. MATH::
87
+
88
+ a_0 + a_1 p + a_2 p^2 + \cdots
89
+
90
+ at `p^n`, yielding
91
+
92
+ .. MATH::
93
+
94
+ a_0 + a_1 p + \cdots + a_{n-1} p^{n-1} + O(p^n).
95
+
96
+
97
+ As above, we call this `n` the absolute precision of our
98
+ element.
99
+
100
+ Given any `x \in \QQ_p` with `x \ne 0`, we
101
+ can write `x = p^v u` where `v \in \ZZ` and
102
+ `u \in \ZZ_p^{\times}`. We could thus also store an element
103
+ of `\QQ_p` (or `\ZZ_p`) by storing
104
+ `v` and a finite approximation of `u`. This
105
+ motivates the following definition: the *relative precision* of an
106
+ approximation to `x` is defined as the absolute precision
107
+ of the approximation minus the valuation of `x`. For
108
+ example, if
109
+ `x = a_k p^k + a_{k+1} p^{k+1} +
110
+ \cdots + a_{n-1} p^{n-1} + O(p^n)`
111
+ then the absolute precision of `x` is `n`, the
112
+ valuation of `x` is `k` and the relative precision
113
+ of `x` is `n-k`.
114
+
115
+ There are three different representations of `\ZZ_p`
116
+ in Sage and one representation of `\QQ_p`:
117
+
118
+ - the fixed modulus ring
119
+
120
+ - the capped absolute precision ring
121
+
122
+ - the capped relative precision ring, and
123
+
124
+ - the capped relative precision field.
125
+
126
+ Fixed Modulus Rings
127
+ -------------------
128
+
129
+ The first, and simplest, type of `\ZZ_p` is basically
130
+ a wrapper around `\ZZ/p^n\ZZ`, providing a unified
131
+ interface with the rest of the `p`-adics. You specify a
132
+ precision, and all elements are stored to that absolute precision.
133
+ If you perform an operation that would normally lose precision, the
134
+ element does not track that it no longer has full precision.
135
+
136
+ The fixed modulus ring provides the lowest level of convenience,
137
+ but it is also the one that has the lowest computational overhead.
138
+ Once we have ironed out some bugs, the fixed modulus elements will
139
+ be those most optimized for speed.
140
+
141
+ As with all of the implementations of `\ZZ_p`, one
142
+ creates a new ring using the constructor ``Zp``, and passing in
143
+ ``'fixed-mod'`` for the ``type`` parameter. For example,
144
+
145
+ ::
146
+
147
+ sage: R = Zp(5, prec = 10, type = 'fixed-mod', print_mode = 'series')
148
+ sage: R
149
+ 5-adic Ring of fixed modulus 5^10
150
+
151
+ One can create elements as follows::
152
+
153
+ sage: a = R(375)
154
+ sage: a
155
+ 3*5^3
156
+ sage: b = R(105)
157
+ sage: b
158
+ 5 + 4*5^2
159
+
160
+ Now that we have some elements, we can do arithmetic in the ring.
161
+
162
+ ::
163
+
164
+ sage: a + b
165
+ 5 + 4*5^2 + 3*5^3
166
+ sage: a * b
167
+ 3*5^4 + 2*5^5 + 2*5^6
168
+
169
+ Floor division (//) divides even though the result isn't really
170
+ known to the claimed precision; note that division isn't defined::
171
+
172
+ sage: a // 5
173
+ 3*5^2
174
+
175
+ ::
176
+
177
+ sage: a / 5
178
+ Traceback (most recent call last):
179
+ ...
180
+ ValueError: cannot invert non-unit
181
+
182
+ Since elements don't actually store their actual precision, one can
183
+ only divide by units::
184
+
185
+ sage: a / 2
186
+ 4*5^3 + 2*5^4 + 2*5^5 + 2*5^6 + 2*5^7 + 2*5^8 + 2*5^9
187
+ sage: a / b
188
+ Traceback (most recent call last):
189
+ ...
190
+ ValueError: cannot invert non-unit
191
+
192
+ If you want to divide by a non-unit, do it using the ``//``
193
+ operator::
194
+
195
+ sage: a // b
196
+ 3*5^2 + 3*5^3 + 2*5^5 + 5^6 + 4*5^7 + 2*5^8 + 3*5^9
197
+
198
+ Capped Absolute Rings
199
+ ---------------------
200
+
201
+ The second type of implementation of `\ZZ_p` is
202
+ similar to the fixed modulus implementation, except that individual
203
+ elements track their known precision. The absolute precision of
204
+ each element is limited to be less than the precision cap of the
205
+ ring, even if mathematically the precision of the element would be
206
+ known to greater precision (see Appendix A for the reasons for the
207
+ existence of a precision cap).
208
+
209
+ Once again, use ``Zp`` to create a capped absolute `p`-adic
210
+ ring.
211
+
212
+ ::
213
+
214
+ sage: R = Zp(5, prec = 10, type = 'capped-abs', print_mode = 'series')
215
+ sage: R
216
+ 5-adic Ring with capped absolute precision 10
217
+
218
+ We can do similar things as in the fixed modulus case::
219
+
220
+ sage: a = R(375)
221
+ sage: a
222
+ 3*5^3 + O(5^10)
223
+ sage: b = R(105)
224
+ sage: b
225
+ 5 + 4*5^2 + O(5^10)
226
+ sage: a + b
227
+ 5 + 4*5^2 + 3*5^3 + O(5^10)
228
+ sage: a * b
229
+ 3*5^4 + 2*5^5 + 2*5^6 + O(5^10)
230
+ sage: c = a // 5
231
+ sage: c
232
+ 3*5^2 + O(5^9)
233
+
234
+ Note that when we divided by 5, the precision of ``c`` dropped.
235
+ This lower precision is now reflected in arithmetic.
236
+
237
+ ::
238
+
239
+ sage: c + b
240
+ 5 + 2*5^2 + 5^3 + O(5^9)
241
+
242
+ Division is allowed: the element that results is a capped relative
243
+ field element, which is discussed in the next section::
244
+
245
+ sage: 1 / (c + b)
246
+ 5^-1 + 3 + 2*5 + 5^2 + 4*5^3 + 4*5^4 + 3*5^6 + O(5^7)
247
+
248
+ Capped Relative Rings and Fields
249
+ --------------------------------
250
+
251
+ Instead of restricting the absolute precision of elements (which
252
+ doesn't make much sense when elements have negative valuations),
253
+ one can cap the relative precision of elements. This is analogous
254
+ to floating point representations of real numbers. As in the reals,
255
+ multiplication works very well: the valuations add and the relative
256
+ precision of the product is the minimum of the relative precisions
257
+ of the inputs. Addition, however, faces similar issues as floating
258
+ point addition: relative precision is lost when lower order terms
259
+ cancel.
260
+
261
+ To create a capped relative precision ring, use ``Zp`` as before.
262
+ To create capped relative precision fields, use ``Qp``.
263
+
264
+ ::
265
+
266
+ sage: R = Zp(5, prec = 10, type = 'capped-rel', print_mode = 'series')
267
+ sage: R
268
+ 5-adic Ring with capped relative precision 10
269
+ sage: K = Qp(5, prec = 10, type = 'capped-rel', print_mode = 'series')
270
+ sage: K
271
+ 5-adic Field with capped relative precision 10
272
+
273
+ We can do all of the same operations as in the other two cases, but
274
+ precision works a bit differently: the maximum precision of an
275
+ element is limited by the precision cap of the ring.
276
+
277
+ ::
278
+
279
+ sage: a = R(375)
280
+ sage: a
281
+ 3*5^3 + O(5^13)
282
+ sage: b = K(105)
283
+ sage: b
284
+ 5 + 4*5^2 + O(5^11)
285
+ sage: a + b
286
+ 5 + 4*5^2 + 3*5^3 + O(5^11)
287
+ sage: a * b
288
+ 3*5^4 + 2*5^5 + 2*5^6 + O(5^14)
289
+ sage: c = a // 5
290
+ sage: c
291
+ 3*5^2 + O(5^12)
292
+ sage: c + 1
293
+ 1 + 3*5^2 + O(5^10)
294
+
295
+ As with the capped absolute precision rings, we can divide,
296
+ yielding a capped relative precision field element.
297
+
298
+ ::
299
+
300
+ sage: 1 / (c + b)
301
+ 5^-1 + 3 + 2*5 + 5^2 + 4*5^3 + 4*5^4 + 3*5^6 + 2*5^7 + 5^8 + O(5^9)
302
+
303
+ Unramified Extensions
304
+ ---------------------
305
+
306
+ One can create unramified extensions of `\ZZ_p` and
307
+ `\QQ_p` using the functions ``Zq`` and ``Qq``.
308
+
309
+ In addition to requiring a prime power as the first argument,
310
+ ``Zq`` also requires a name for the generator of the residue field.
311
+ One can specify this name as follows::
312
+
313
+ sage: R.<c> = Zq(125, prec=20); R # needs sage.libs.ntl
314
+ 5-adic Unramified Extension Ring in c defined by x^3 + 3*x + 3
315
+
316
+ Eisenstein Extensions
317
+ ---------------------
318
+
319
+ It is also possible to create Eisenstein extensions of `\ZZ_p`
320
+ and `\QQ_p`. In order to do so, create the ground field first::
321
+
322
+ sage: R = Zp(5, 2)
323
+
324
+ Then define the polynomial yielding the desired extension.::
325
+
326
+ sage: S.<x> = ZZ[]
327
+ sage: f = x^5 - 25*x^3 + 15*x - 5
328
+
329
+ Finally, use the ``ext`` function on the ground field to create the
330
+ desired extension.::
331
+
332
+ sage: W.<w> = R.ext(f) # needs sage.libs.ntl sage.rings.padics
333
+
334
+ You can do arithmetic in this Eisenstein extension::
335
+
336
+ sage: (1 + w)^7 # needs sage.libs.ntl sage.rings.padics
337
+ 1 + 2*w + w^2 + w^5 + 3*w^6 + 3*w^7 + 3*w^8 + w^9 + O(w^10)
338
+
339
+ Note that the precision cap increased by a factor of 5, since the
340
+ ramification index of this extension over `\ZZ_p` is 5.
341
+ """