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,429 @@
1
+ # sage_setup: distribution = sagemath-pari
2
+ """
3
+ Relative extensions of `p`-adic rings
4
+
5
+ We represent general extensions of `p`-adic rings as a two-step extension:
6
+ first an unramified extension of Qp, followed by an Eisenstein extension
7
+ of the result.
8
+
9
+ This file contains the parent classes for such extensions.
10
+ """
11
+
12
+ #*****************************************************************************
13
+ # Copyright (C) 2017 David Roe <roed.math@gmail.com>
14
+ #
15
+ # Distributed under the terms of the GNU General Public License (GPL)
16
+ # as published by the Free Software Foundation; either version 2 of
17
+ # the License, or (at your option) any later version.
18
+ #
19
+ # http://www.gnu.org/licenses/
20
+ #*****************************************************************************
21
+
22
+ from sage.categories.morphism import Morphism
23
+ from sage.categories.homset import Hom
24
+ from .generic_nodes import pAdicFixedModRingGeneric, pAdicCappedAbsoluteRingGeneric, pAdicCappedRelativeRingGeneric, pAdicCappedRelativeFieldGeneric, pAdicFloatingPointRingGeneric, pAdicFloatingPointFieldGeneric
25
+ from .eisenstein_extension_generic import EisensteinExtensionGeneric
26
+ from .relative_ramified_FM import RelativeRamifiedFixedModElement
27
+ from .relative_ramified_CA import RelativeRamifiedCappedAbsoluteElement
28
+ from .relative_ramified_CR import RelativeRamifiedCappedRelativeElement
29
+ from .relative_ramified_FP import RelativeRamifiedFloatingPointElement
30
+ from .pow_computer_relative import PowComputer_relative_maker
31
+
32
+
33
+ class pAdicRelativeBaseringInjection(Morphism):
34
+ """
35
+ The injection of the unramified base into the two-step extension.
36
+
37
+ INPUT:
38
+
39
+ - ``R`` -- an unramified `p`-adic ring or field
40
+ - ``S`` -- an eisenstein extension of ``R``
41
+
42
+ EXAMPLES::
43
+
44
+ sage: # needs sage.libs.ntl
45
+ sage: K.<a> = Qq(125)
46
+ sage: R.<x> = K[]
47
+ sage: W.<w> = K.extension(x^3 + 15*a*x - 5*(1+a^2))
48
+ sage: f = W.coerce_map_from(K); f
49
+ Generic morphism:
50
+ From: 5-adic Unramified Extension Field in a defined by x^3 + 3*x + 3
51
+ To: 5-adic Eisenstein Extension Field in w defined by x^3 + 15*a*x - 5*a^2 - 5 over its base field
52
+ """
53
+ def __init__(self, R, S):
54
+ """
55
+ Initialization.
56
+
57
+ EXAMPLES::
58
+
59
+ sage: # needs sage.libs.ntl
60
+ sage: K.<a> = Qq(125)
61
+ sage: R.<x> = K[]
62
+ sage: W.<w> = K.extension(x^3 + 15*a*x - 5*(1+a^2))
63
+ sage: f = W.coerce_map_from(K)
64
+ sage: type(f)
65
+ <class 'sage.rings.padics.relative_extension_leaves.pAdicRelativeBaseringInjection'>
66
+ """
67
+ if not R.is_field() or S.is_field():
68
+ Morphism.__init__(self, Hom(R, S))
69
+ else:
70
+ from sage.categories.sets_with_partial_maps import SetsWithPartialMaps
71
+ Morphism.__init__(self, Hom(R, S, SetsWithPartialMaps()))
72
+
73
+ def _call_(self, x):
74
+ """
75
+ Evaluation.
76
+
77
+ EXAMPLES::
78
+
79
+ sage: # needs sage.libs.ntl
80
+ sage: K.<a> = Qq(125,2)
81
+ sage: R.<x> = K[]
82
+ sage: W.<w> = K.extension(x^3 + 15*a*x - 5*(1+a^2))
83
+ sage: f = W.coerce_map_from(K)
84
+ sage: f(a+5) # indirect doctest
85
+ a + (4*a^2 + 4*a + 3)*w^3 + (a + 2)*w^4 + (2*a^2 + 4*a + 2)*w^5 + O(w^6)
86
+ """
87
+ if x.is_zero():
88
+ return self.codomain()(0,x.precision_absolute())
89
+ else:
90
+ return self.codomain()([x])
91
+
92
+ def _call_with_args(self, x, args=(), kwds={}):
93
+ """
94
+ This function is used when some precision cap is passed in
95
+ (relative or absolute or both).
96
+
97
+ EXAMPLES::
98
+
99
+ sage: # needs sage.libs.ntl
100
+ sage: K.<a> = Qq(125,2)
101
+ sage: R.<x> = K[]
102
+ sage: W.<w> = K.extension(x^3 + 15*a*x - 5*(1+a^2))
103
+ sage: f = W.coerce_map_from(K)
104
+ sage: f(5*a,5)
105
+ (4*a^2 + a + 3)*w^3 + (a^2 + 2*a)*w^4 + O(w^5)
106
+ sage: f(5*a,8,2) # indirect doctest
107
+ (4*a^2 + a + 3)*w^3 + (a^2 + 2*a)*w^4 + O(w^5)
108
+ """
109
+ return self.codomain()([x], *args, **kwds)
110
+
111
+ def section(self):
112
+ """
113
+ Map back to the base ring.
114
+
115
+ EXAMPLES::
116
+
117
+ sage: # needs sage.libs.ntl
118
+ sage: K.<a> = Qq(125,2)
119
+ sage: R.<x> = K[]
120
+ sage: W.<w> = K.extension(x^3 + 15*a*x - 5*(1+a^2))
121
+ sage: f = W.coerce_map_from(K)
122
+ sage: g = f.section()
123
+ sage: g(a + w - w)
124
+ a + O(5^2)
125
+ """
126
+ return pAdicRelativeBaseringSection(self.codomain(), self.domain())
127
+
128
+
129
+ class pAdicRelativeBaseringSection(Morphism):
130
+ """
131
+ The map from a two-step extension back to its maximal unramified subextension.
132
+
133
+ EXAMPLES::
134
+
135
+ sage: # needs sage.libs.ntl
136
+ sage: K.<a> = Qq(2^10)
137
+ sage: R.<x> = K[]
138
+ sage: W.<w> = K.extension(x^4 + 2*a*x^2 - 16*x - 6)
139
+ sage: f = K.convert_map_from(W); f
140
+ Generic morphism:
141
+ From: 2-adic Eisenstein Extension Field in w defined by x^4 + 2*a*x^2 - 16*x - 6 over its base field
142
+ To: 2-adic Unramified Extension Field in a defined by x^10 + x^6 + x^5 + x^3 + x^2 + x + 1
143
+ """
144
+ def __init__(self, S, R):
145
+ """
146
+ Initialization.
147
+
148
+ EXAMPLES::
149
+
150
+ sage: # needs sage.libs.ntl
151
+ sage: K.<a> = Qq(2^10)
152
+ sage: R.<x> = K[]
153
+ sage: W.<w> = K.extension(x^4 + 2*a*x^2 - 16*x - 6*a)
154
+ sage: f = K.convert_map_from(W); type(f)
155
+ <class 'sage.rings.padics.relative_extension_leaves.pAdicRelativeBaseringSection'>
156
+ """
157
+ from sage.categories.sets_with_partial_maps import SetsWithPartialMaps
158
+ Morphism.__init__(self, Hom(S, R, SetsWithPartialMaps()))
159
+
160
+ def _call_(self, x):
161
+ """
162
+ Evaluation.
163
+
164
+ EXAMPLES::
165
+
166
+ sage: # needs sage.libs.ntl
167
+ sage: K.<a> = Qq(2^10)
168
+ sage: R.<x> = K[]
169
+ sage: W.<w> = K.extension(x^4 + 2*a*x^2 - 16*x - 6*a)
170
+ sage: f = K.convert_map_from(W)
171
+ sage: f(a + w - w) # indirect doctest
172
+ a + O(2^20)
173
+ sage: f(w)
174
+ Traceback (most recent call last):
175
+ ...
176
+ ValueError: Element not contained in base ring
177
+ """
178
+ f = x.polynomial()
179
+ if f.degree() > 0:
180
+ raise ValueError("Element not contained in base ring")
181
+ return f[0]
182
+
183
+ def _call_with_args(self, x, args=(), kwds={}):
184
+ """
185
+ Used when specifying absolute or relative precision.
186
+
187
+ EXAMPLES::
188
+
189
+ sage: # needs sage.libs.ntl
190
+ sage: K.<a> = Qq(2^10)
191
+ sage: R.<x> = K[]
192
+ sage: W.<w> = K.extension(x^4 + 2*a*x^2 - 16*x - 6*a)
193
+ sage: f = K.convert_map_from(W)
194
+ sage: f(a, 5) # indirect doctest
195
+ a + O(2^5)
196
+ """
197
+ return self.codomain()(self._call_(x), *args, **kwds)
198
+
199
+
200
+ class RelativeRamifiedExtensionRingFixedMod(EisensteinExtensionGeneric, pAdicFixedModRingGeneric):
201
+ """
202
+ Two-step extension ring with fixed-mod precision.
203
+
204
+ EXAMPLES::
205
+
206
+ sage: # needs sage.libs.flint
207
+ sage: A.<a> = ZqFM(2^10)
208
+ sage: R.<x> = A[]
209
+ sage: W.<w> = A.extension(x^4 + 2*a*x^2 - 16*x - 6*a); W
210
+ 2-adic Eisenstein Extension Ring in w defined by x^4 + 2*a*x^2 - 16*x - 6*a over its base ring
211
+ sage: w^4 + 2*a*w^2 - 16*w - 6*a == 0
212
+ True
213
+ """
214
+ def __init__(self, exact_modulus, approx_modulus, prec, print_mode, shift_seed, names, implementation):
215
+ """
216
+ Initialization.
217
+
218
+ EXAMPLES::
219
+
220
+ sage: # needs sage.libs.flint
221
+ sage: A.<a> = ZqFM(5^4)
222
+ sage: R.<x> = A[]
223
+ sage: W.<w> = A.extension(x^3 - 25*(a+1)*x + 10*(a^2+2))
224
+ sage: TestSuite(W).run(max_samples=16) # long time
225
+ """
226
+ self._exact_modulus = exact_modulus
227
+ unram_prec = (prec + approx_modulus.degree() - 1) // approx_modulus.degree()
228
+ KFP = approx_modulus.base_ring().change(prec=unram_prec+1)
229
+ self.prime_pow = PowComputer_relative_maker(approx_modulus.base_ring().prime(), max(min(unram_prec - 1, 30), 1), unram_prec, prec, False, exact_modulus.change_ring(KFP), shift_seed.change_ring(KFP), 'fixed-mod')
230
+ self._implementation = 'Polynomial'
231
+ EisensteinExtensionGeneric.__init__(self, approx_modulus, prec, print_mode, names, RelativeRamifiedFixedModElement)
232
+ from .relative_ramified_FM import pAdicCoercion_ZZ_FM, pAdicConvert_QQ_FM
233
+ self.register_coercion(pAdicCoercion_ZZ_FM(self))
234
+ self.register_coercion(pAdicRelativeBaseringInjection(approx_modulus.base_ring(), self))
235
+ self.register_conversion(pAdicConvert_QQ_FM(self))
236
+
237
+
238
+ class RelativeRamifiedExtensionRingCappedAbsolute(EisensteinExtensionGeneric, pAdicCappedAbsoluteRingGeneric):
239
+ """
240
+ Two-step extension ring with capped absolute precision.
241
+
242
+ EXAMPLES::
243
+
244
+ sage: # needs sage.libs.flint
245
+ sage: A.<a> = ZqCA(2^10)
246
+ sage: R.<x> = A[]
247
+ sage: W.<w> = A.extension(x^4 + 2*a*x^2 - 16*x - 6*a); W
248
+ 2-adic Eisenstein Extension Ring in w defined by x^4 + 2*a*x^2 - 16*x - 6*a over its base ring
249
+ sage: w^4 + 2*a*w^2 - 16*w - 6*a == 0
250
+ True
251
+ """
252
+ def __init__(self, exact_modulus, approx_modulus, prec, print_mode, shift_seed, names, implementation):
253
+ """
254
+ Initialization.
255
+
256
+ EXAMPLES::
257
+
258
+ sage: # needs sage.libs.flint
259
+ sage: A.<a> = ZqCA(5^4)
260
+ sage: R.<x> = A[]
261
+ sage: W.<w> = A.extension(x^3 - 25*(a+1)*x + 10*(a^2+2))
262
+ sage: TestSuite(W).run(max_samples=16) # long time
263
+ """
264
+ self._exact_modulus = exact_modulus
265
+ unram_prec = (prec + approx_modulus.degree() - 1) // approx_modulus.degree()
266
+ KFP = approx_modulus.base_ring().change(show_prec=False, type='floating-point')
267
+ self.prime_pow = PowComputer_relative_maker(approx_modulus.base_ring().prime(), max(min(unram_prec - 1, 30), 1), unram_prec, prec, False, exact_modulus.change_ring(KFP), shift_seed.change_ring(KFP), 'capped-abs')
268
+ self._implementation = 'Polynomial'
269
+ EisensteinExtensionGeneric.__init__(self, approx_modulus, prec, print_mode, names, RelativeRamifiedCappedAbsoluteElement)
270
+ from .relative_ramified_CA import pAdicCoercion_ZZ_CA, pAdicConvert_QQ_CA
271
+ self.register_coercion(pAdicCoercion_ZZ_CA(self))
272
+ self.register_coercion(pAdicRelativeBaseringInjection(approx_modulus.base_ring(), self))
273
+ self.register_conversion(pAdicConvert_QQ_CA(self))
274
+
275
+
276
+ class RelativeRamifiedExtensionRingCappedRelative(EisensteinExtensionGeneric, pAdicCappedRelativeRingGeneric):
277
+ """
278
+ Two-step extension ring with capped relative precision.
279
+
280
+ EXAMPLES::
281
+
282
+ sage: # needs sage.libs.ntl
283
+ sage: A.<a> = ZqCR(2^10)
284
+ sage: R.<x> = A[]
285
+ sage: W.<w> = A.extension(x^4 + 2*a*x^2 - 16*x - 6*a); W
286
+ 2-adic Eisenstein Extension Ring in w defined by x^4 + 2*a*x^2 - 16*x - 6*a over its base ring
287
+ sage: w^4 + 2*a*w^2 - 16*w - 6*a == 0
288
+ True
289
+ """
290
+ def __init__(self, exact_modulus, approx_modulus, prec, print_mode, shift_seed, names, implementation):
291
+ """
292
+ Initialization.
293
+
294
+ EXAMPLES::
295
+
296
+ sage: # needs sage.libs.ntl
297
+ sage: A.<a> = ZqCR(5^4)
298
+ sage: R.<x> = A[]
299
+ sage: W.<w> = A.extension(x^3 - 25*(a+1)*x + 10*(a^2+2))
300
+ sage: TestSuite(W).run(max_samples=16) # long time
301
+ """
302
+ self._exact_modulus = exact_modulus
303
+ unram_prec = (prec + approx_modulus.degree() - 1) // approx_modulus.degree()
304
+ KFP = approx_modulus.base_ring().change(show_prec=False, type='floating-point')
305
+ self.prime_pow = PowComputer_relative_maker(approx_modulus.base_ring().prime(), max(min(unram_prec - 1, 30), 1), unram_prec, prec, False, exact_modulus.change_ring(KFP), shift_seed.change_ring(KFP), 'capped-rel')
306
+ self._implementation = 'Polynomial'
307
+ EisensteinExtensionGeneric.__init__(self, approx_modulus, prec, print_mode, names, RelativeRamifiedCappedRelativeElement)
308
+ from .relative_ramified_CR import pAdicCoercion_ZZ_CR, pAdicConvert_QQ_CR
309
+ self.register_coercion(pAdicCoercion_ZZ_CR(self))
310
+ self.register_coercion(pAdicRelativeBaseringInjection(approx_modulus.base_ring(), self))
311
+ self.register_conversion(pAdicConvert_QQ_CR(self))
312
+
313
+
314
+ class RelativeRamifiedExtensionFieldCappedRelative(EisensteinExtensionGeneric, pAdicCappedRelativeFieldGeneric):
315
+ """
316
+ Two-step extension field with capped relative precision.
317
+
318
+ EXAMPLES::
319
+
320
+ sage: # needs sage.libs.ntl
321
+ sage: A.<a> = QqCR(2^10)
322
+ sage: R.<x> = A[]
323
+ sage: W.<w> = A.extension(x^4 + 2*a*x^2 - 16*x - 6*a); W
324
+ 2-adic Eisenstein Extension Field in w defined by x^4 + 2*a*x^2 - 16*x - 6*a over its base field
325
+ sage: w^4 + 2*a*w^2 - 16*w - 6*a == 0
326
+ True
327
+ """
328
+ def __init__(self, exact_modulus, approx_modulus, prec, print_mode, shift_seed, names, implementation):
329
+ """
330
+ Initialization.
331
+
332
+ EXAMPLES::
333
+
334
+ sage: # needs sage.libs.ntl
335
+ sage: A.<a> = QqCR(5^4)
336
+ sage: R.<x> = A[]
337
+ sage: W.<w> = A.extension(x^3 - 25*(a+1)*x + 10*(a^2+2))
338
+ sage: TestSuite(W).run(max_samples=16) # long time
339
+ """
340
+ self._exact_modulus = exact_modulus
341
+ unram_prec = (prec + approx_modulus.degree() - 1) // approx_modulus.degree()
342
+ KFP = approx_modulus.base_ring().change(show_prec=False, type='floating-point')
343
+ self.prime_pow = PowComputer_relative_maker(approx_modulus.base_ring().prime(), max(min(unram_prec - 1, 30), 1), unram_prec, prec, True, exact_modulus.change_ring(KFP), shift_seed.change_ring(KFP), 'capped-rel')
344
+ self._implementation = 'Polynomial'
345
+ EisensteinExtensionGeneric.__init__(self, approx_modulus, prec, print_mode, names, RelativeRamifiedCappedRelativeElement)
346
+ from .relative_ramified_CR import pAdicCoercion_ZZ_CR, pAdicCoercion_QQ_CR
347
+ self.register_coercion(pAdicCoercion_ZZ_CR(self))
348
+ self.register_coercion(pAdicRelativeBaseringInjection(approx_modulus.base_ring(), self))
349
+ # We also want to convert down to the ring of integers: this is used in teichmuller expansion
350
+ self.register_coercion(pAdicRelativeBaseringInjection(approx_modulus.base_ring().integer_ring(), self))
351
+ self.register_coercion(pAdicCoercion_QQ_CR(self))
352
+
353
+
354
+ class RelativeRamifiedExtensionRingFloatingPoint(EisensteinExtensionGeneric, pAdicFloatingPointRingGeneric):
355
+ """
356
+ Two-step extension ring with floating point precision.
357
+
358
+ EXAMPLES::
359
+
360
+ sage: # needs sage.libs.flint
361
+ sage: A.<a> = ZqFP(2^10)
362
+ sage: R.<x> = A[]
363
+ sage: W.<w> = A.extension(x^4 + 2*a*x^2 - 16*x - 6*a); W
364
+ 2-adic Eisenstein Extension Ring in w defined by x^4 + 2*a*x^2 - 16*x - 6*a over its base ring
365
+ sage: w^4 + 2*a*w^2 - 16*w - 6*a == 0
366
+ True
367
+ """
368
+ def __init__(self, exact_modulus, approx_modulus, prec, print_mode, shift_seed, names, implementation):
369
+ """
370
+ Initialization.
371
+
372
+ EXAMPLES::
373
+
374
+ sage: # needs sage.libs.flint
375
+ sage: A.<a> = ZqFP(5^4)
376
+ sage: R.<x> = A[]
377
+ sage: W.<w> = A.extension(x^3 - 25*(a+1)*x + 10*(a^2+2))
378
+ sage: TestSuite(W).run(max_samples=16) # long time
379
+ """
380
+ self._exact_modulus = exact_modulus
381
+ unram_prec = (prec + approx_modulus.degree() - 1) // approx_modulus.degree()
382
+ KFP = approx_modulus.base_ring() # .change(field=False, show_prec=False)
383
+ self.prime_pow = PowComputer_relative_maker(approx_modulus.base_ring().prime(), max(min(unram_prec - 1, 30), 1), unram_prec, prec, False, exact_modulus.change_ring(KFP), shift_seed.change_ring(KFP), 'floating-point')
384
+ self._implementation = 'Polynomial'
385
+ EisensteinExtensionGeneric.__init__(self, approx_modulus, prec, print_mode, names, RelativeRamifiedFloatingPointElement)
386
+ from .relative_ramified_FP import pAdicCoercion_ZZ_FP, pAdicConvert_QQ_FP
387
+ self.register_coercion(pAdicCoercion_ZZ_FP(self))
388
+ self.register_coercion(pAdicRelativeBaseringInjection(approx_modulus.base_ring(), self))
389
+ self.register_conversion(pAdicConvert_QQ_FP(self))
390
+
391
+
392
+ class RelativeRamifiedExtensionFieldFloatingPoint(EisensteinExtensionGeneric, pAdicFloatingPointFieldGeneric):
393
+ """
394
+ Two-step extension field with floating point precision.
395
+
396
+ EXAMPLES::
397
+
398
+ sage: # needs sage.libs.flint
399
+ sage: A.<a> = QqFP(2^10)
400
+ sage: R.<x> = A[]
401
+ sage: W.<w> = A.extension(x^4 + 2*a*x^2 - 16*x - 6*a); W
402
+ 2-adic Eisenstein Extension Field in w defined by x^4 + 2*a*x^2 - 16*x - 6*a over its base field
403
+ sage: w^4 + 2*a*w^2 - 16*w - 6*a == 0
404
+ True
405
+ """
406
+ def __init__(self, exact_modulus, approx_modulus, prec, print_mode, shift_seed, names, implementation):
407
+ """
408
+ Initialization.
409
+
410
+ EXAMPLES::
411
+
412
+ sage: # needs sage.libs.flint
413
+ sage: A.<a> = QqFP(5^4)
414
+ sage: R.<x> = A[]
415
+ sage: W.<w> = A.extension(x^3 - 25*(a+1)*x + 10*(a^2+2))
416
+ sage: TestSuite(W).run(max_samples=16) # long time
417
+ """
418
+ self._exact_modulus = exact_modulus
419
+ unram_prec = (prec + approx_modulus.degree() - 1) // approx_modulus.degree()
420
+ KFP = approx_modulus.base_ring() # .change(field=False, show_prec=False)
421
+ self.prime_pow = PowComputer_relative_maker(approx_modulus.base_ring().prime(), max(min(unram_prec - 1, 30), 1), unram_prec, prec, True, exact_modulus.change_ring(KFP), shift_seed.change_ring(KFP), 'floating-point')
422
+ self._implementation = 'Polynomial'
423
+ EisensteinExtensionGeneric.__init__(self, approx_modulus, prec, print_mode, names, RelativeRamifiedFloatingPointElement)
424
+ from .relative_ramified_FP import pAdicCoercion_ZZ_FP, pAdicCoercion_QQ_FP
425
+ self.register_coercion(pAdicCoercion_ZZ_FP(self))
426
+ self.register_coercion(pAdicRelativeBaseringInjection(approx_modulus.base_ring(), self))
427
+ # We also want to convert down to the ring of integers: this is used in teichmuller expansion
428
+ self.register_coercion(pAdicRelativeBaseringInjection(approx_modulus.base_ring().integer_ring(), self))
429
+ self.register_coercion(pAdicCoercion_QQ_FP(self))
@@ -0,0 +1,9 @@
1
+ # sage_setup: distribution = sagemath-pari
2
+ from sage.rings.polynomial.polynomial_element cimport Polynomial_generic_dense_inexact as celement
3
+ from sage.rings.padics.pow_computer_relative cimport PowComputer_relative_eis as PowComputer_
4
+ from sage.rings.padics.relative_ramified_CR cimport CRElement
5
+
6
+ include "CA_template_header.pxi"
7
+
8
+ cdef class RelativeRamifiedCappedAbsoluteElement(CAElement):
9
+ pass
@@ -0,0 +1,33 @@
1
+ # sage_setup: distribution = sagemath-pari
2
+ # sage.doctest: needs sage.libs.flint
3
+ include "sage/libs/linkages/padics/Polynomial_ram.pxi"
4
+ include "CA_template.pxi"
5
+
6
+ cdef class RelativeRamifiedCappedAbsoluteElement(CAElement):
7
+ def _poly_rep(self):
8
+ """
9
+ Return the underlying polynomial representation of this element
10
+ (which is used for computations).
11
+
12
+ For debugging and printing purpose.
13
+
14
+ EXAMPLES::
15
+
16
+ sage: K.<a> = ZqCA(125)
17
+ sage: S.<x> = PolynomialRing(K)
18
+ sage: W.<w> = K.extension(x^3 - 25*x^2 - 5*a*x + 5)
19
+ sage: w._poly_rep()
20
+ x
21
+ sage: W(5)._poly_rep()
22
+ 5
23
+
24
+ The coefficients of P are floating point `p`-adics::
25
+
26
+ sage: P = W.random_element()._poly_rep()
27
+ sage: ring = P.parent().base_ring()
28
+ sage: ring
29
+ 5-adic Unramified Extension Ring in a defined by x^3 + 3*x + 3
30
+ sage: ring._prec_type()
31
+ 'floating-point'
32
+ """
33
+ return self.value
@@ -0,0 +1,8 @@
1
+ # sage_setup: distribution = sagemath-pari
2
+ from sage.rings.polynomial.polynomial_element cimport Polynomial_generic_dense_inexact as celement
3
+ from sage.rings.padics.pow_computer_relative cimport PowComputer_relative_eis as PowComputer_
4
+
5
+ include "CR_template_header.pxi"
6
+
7
+ cdef class RelativeRamifiedCappedRelativeElement(CRElement):
8
+ pass
@@ -0,0 +1,33 @@
1
+ # sage_setup: distribution = sagemath-pari
2
+ # sage.doctest: needs sage.libs.ntl
3
+ include "sage/libs/linkages/padics/Polynomial_ram.pxi"
4
+ include "CR_template.pxi"
5
+
6
+ cdef class RelativeRamifiedCappedRelativeElement(CRElement):
7
+ def _poly_rep(self):
8
+ """
9
+ Return the underlying polynomial representation of the element
10
+ (which is used for computations).
11
+
12
+ For debugging and printing purpose.
13
+
14
+ EXAMPLES::
15
+
16
+ sage: K.<a> = Zq(125)
17
+ sage: S.<x> = PolynomialRing(K)
18
+ sage: W.<w> = K.extension(x^3 - 25*x^2 - 5*a*x + 5)
19
+ sage: w._poly_rep()
20
+ x
21
+ sage: W(5)._poly_rep()
22
+ 5
23
+
24
+ The coefficients of P are floating point `p`-adics::
25
+
26
+ sage: P = W.random_element()._poly_rep()
27
+ sage: ring = P.parent().base_ring()
28
+ sage: ring
29
+ 5-adic Unramified Extension Ring in a defined by x^3 + 3*x + 3
30
+ sage: ring._prec_type()
31
+ 'floating-point'
32
+ """
33
+ return self.unit.parent()(ccoefficients(self.unit, self.ordp, self.relprec, self.prime_pow))
@@ -0,0 +1,9 @@
1
+ # sage_setup: distribution = sagemath-pari
2
+ from sage.rings.polynomial.polynomial_element cimport Polynomial_generic_dense_inexact as celement
3
+ from sage.rings.padics.pow_computer_relative cimport PowComputer_relative_eis as PowComputer_
4
+ from sage.rings.padics.relative_ramified_FP cimport FPElement
5
+
6
+ include "FM_template_header.pxi"
7
+
8
+ cdef class RelativeRamifiedFixedModElement(FMElement):
9
+ pass
@@ -0,0 +1,33 @@
1
+ # sage_setup: distribution = sagemath-pari
2
+ # sage.doctest: needs sage.libs.flint
3
+ include "sage/libs/linkages/padics/Polynomial_ram.pxi"
4
+ include "FM_template.pxi"
5
+
6
+ cdef class RelativeRamifiedFixedModElement(FMElement):
7
+ def _poly_rep(self):
8
+ """
9
+ Return the underlying polynomial representation of the element
10
+ (which is used for computations).
11
+
12
+ For debugging and printing purpose.
13
+
14
+ EXAMPLES::
15
+
16
+ sage: K.<a> = ZqFM(125)
17
+ sage: S.<x> = PolynomialRing(K)
18
+ sage: W.<w> = K.extension(x^3 - 25*x^2 - 5*a*x + 5)
19
+ sage: w._poly_rep()
20
+ x
21
+ sage: W(5)._poly_rep()
22
+ 5
23
+
24
+ The coefficients of P are fixed-mod `p`-adics::
25
+
26
+ sage: P = W.random_element()._poly_rep()
27
+ sage: ring = P.parent().base_ring()
28
+ sage: ring
29
+ 5-adic Unramified Extension Ring in a defined by x^3 + 3*x + 3
30
+ sage: ring._prec_type()
31
+ 'fixed-mod'
32
+ """
33
+ return self.value
@@ -0,0 +1,8 @@
1
+ # sage_setup: distribution = sagemath-pari
2
+ from sage.rings.polynomial.polynomial_element cimport Polynomial_generic_dense_inexact as celement
3
+ from sage.rings.padics.pow_computer_relative cimport PowComputer_relative_eis as PowComputer_
4
+
5
+ include "FP_template_header.pxi"
6
+
7
+ cdef class RelativeRamifiedFloatingPointElement(FPElement):
8
+ pass
@@ -0,0 +1,33 @@
1
+ # sage_setup: distribution = sagemath-pari
2
+ # sage.doctest: needs sage.libs.flint
3
+ include "sage/libs/linkages/padics/Polynomial_ram.pxi"
4
+ include "FP_template.pxi"
5
+
6
+ cdef class RelativeRamifiedFloatingPointElement(FPElement):
7
+ def _poly_rep(self):
8
+ """
9
+ Return the underlying polynomial representation of the element
10
+ (which is used for computations).
11
+
12
+ For debugging and printing purpose.
13
+
14
+ EXAMPLES::
15
+
16
+ sage: K.<a> = QqFP(125)
17
+ sage: S.<x> = PolynomialRing(K)
18
+ sage: W.<w> = K.extension(x^3 - 25*x^2 - 5*a*x + 5)
19
+ sage: w._poly_rep()
20
+ x
21
+ sage: W(5)._poly_rep()
22
+ 5
23
+
24
+ The coefficients of P are floating point `p`-adics::
25
+
26
+ sage: P = W.random_element()._poly_rep()
27
+ sage: ring = P.parent().base_ring()
28
+ sage: ring
29
+ 5-adic Unramified Extension Field in a defined by x^3 + 3*x + 3
30
+ sage: ring._prec_type()
31
+ 'floating-point'
32
+ """
33
+ return self.unit.parent()(ccoefficients(self.unit, self.ordp, self.prime_pow.ram_prec_cap, self.prime_pow))