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,612 @@
1
+ # sage_setup: distribution = sagemath-pari
2
+ # sage.doctest: needs sage.rings.finite_rings
3
+ """
4
+ Givaro finite fields
5
+
6
+ Finite fields that are implemented using Zech logs and the
7
+ cardinality must be less than `2^{16}`. By default, Conway polynomials are
8
+ used as minimal polynomial.
9
+ """
10
+
11
+ #*****************************************************************************
12
+ # Copyright (C) 2010-2012 David Roe
13
+ # Copyright (C) 2012 Travis Scrimshaw
14
+ # Copyright (C) 2013 Peter Bruin
15
+ # Copyright (C) 2014 Jeroen Demeyer
16
+ #
17
+ # This program is free software: you can redistribute it and/or modify
18
+ # it under the terms of the GNU General Public License as published by
19
+ # the Free Software Foundation, either version 2 of the License, or
20
+ # (at your option) any later version.
21
+ # http://www.gnu.org/licenses/
22
+ #*****************************************************************************
23
+
24
+ from sage.rings.finite_rings.finite_field_base import FiniteField
25
+ from sage.rings.integer import Integer
26
+ from sage.rings.finite_rings.element_givaro import Cache_givaro
27
+ from sage.libs.pari import pari
28
+
29
+
30
+ class FiniteField_givaro(FiniteField):
31
+ """
32
+ Finite field implemented using Zech logs and the cardinality must be
33
+ less than `2^{16}`. By default, Conway polynomials are used as minimal
34
+ polynomials.
35
+
36
+ INPUT:
37
+
38
+ - ``q`` -- `p^n` (must be prime power)
39
+
40
+ - ``name`` -- (default: ``'a'``) variable used for
41
+ :meth:`~sage.rings.finite_rings.element_givaro.FiniteField_givaroElement.poly_repr()`
42
+
43
+ - ``modulus`` -- a minimal polynomial to use for reduction
44
+
45
+ - ``repr`` -- (default: ``'poly'``) controls the way elements are printed
46
+ to the user:
47
+
48
+ - 'log': repr is
49
+ :meth:`~sage.rings.finite_rings.element_givaro.FiniteField_givaroElement.log_repr()`
50
+ - 'int': repr is
51
+ :meth:`~sage.rings.finite_rings.element_givaro.FiniteField_givaroElement.int_repr()`
52
+ - 'poly': repr is
53
+ :meth:`~sage.rings.finite_rings.element_givaro.FiniteField_givaroElement.poly_repr()`
54
+
55
+ - ``cache`` -- boolean (default: ``False``); if ``True`` a cache of all
56
+ elements of this field is created. Thus, arithmetic does not create new
57
+ elements which speeds calculations up. Also, if many elements are needed
58
+ during a calculation this cache reduces the memory requirement as at most
59
+ :meth:`order` elements are created.
60
+
61
+ OUTPUT: Givaro finite field with characteristic `p` and cardinality `p^n`
62
+
63
+ EXAMPLES:
64
+
65
+ By default, Conway polynomials are used for extension fields::
66
+
67
+ sage: k.<a> = GF(2**8)
68
+ sage: -a ^ k.degree()
69
+ a^4 + a^3 + a^2 + 1
70
+ sage: f = k.modulus(); f
71
+ x^8 + x^4 + x^3 + x^2 + 1
72
+
73
+ You may enforce a modulus::
74
+
75
+ sage: P.<x> = PolynomialRing(GF(2))
76
+ sage: f = x^8 + x^4 + x^3 + x + 1 # Rijndael Polynomial
77
+ sage: k.<a> = GF(2^8, modulus=f)
78
+ sage: k.modulus()
79
+ x^8 + x^4 + x^3 + x + 1
80
+ sage: a^(2^8)
81
+ a
82
+
83
+ You may enforce a random modulus::
84
+
85
+ sage: k = GF(3**5, 'a', modulus='random')
86
+ sage: k.modulus() # random polynomial
87
+ x^5 + 2*x^4 + 2*x^3 + x^2 + 2
88
+
89
+ Three different representations are possible::
90
+
91
+ sage: FiniteField(9, 'a', impl='givaro', repr='poly').gen()
92
+ a
93
+ sage: FiniteField(9, 'a', impl='givaro', repr='int').gen()
94
+ 3
95
+ sage: FiniteField(9, 'a', impl='givaro', repr='log').gen()
96
+ 1
97
+
98
+ For prime fields, the default modulus is the polynomial `x - 1`,
99
+ but you can ask for a different modulus::
100
+
101
+ sage: GF(1009, impl='givaro').modulus()
102
+ x + 1008
103
+ sage: GF(1009, impl='givaro', modulus='conway').modulus()
104
+ x + 998
105
+ """
106
+ def __init__(self, q, name='a', modulus=None, repr='poly', cache=False):
107
+ """
108
+ Initialize ``self``.
109
+
110
+ EXAMPLES::
111
+
112
+ sage: k.<a> = GF(2^3)
113
+ sage: j.<b> = GF(3^4)
114
+ sage: k == j
115
+ False
116
+
117
+ sage: GF(2^3,'a') == copy(GF(2^3,'a'))
118
+ True
119
+ sage: TestSuite(GF(2^3, 'a')).run()
120
+ """
121
+ if repr not in ['int', 'log', 'poly']:
122
+ raise ValueError("Unknown representation %s" % repr)
123
+
124
+ q = Integer(q)
125
+ if q < 2:
126
+ raise ValueError("q must be a prime power")
127
+ F = q.factor()
128
+ if len(F) > 1:
129
+ raise ValueError("q must be a prime power")
130
+ p = F[0][0]
131
+ k = F[0][1]
132
+
133
+ if q >= 1 << 16:
134
+ raise ValueError("q must be < 2^16")
135
+
136
+ from .finite_field_constructor import GF
137
+ FiniteField.__init__(self, GF(p), name, normalize=False)
138
+
139
+ from sage.rings.polynomial.polynomial_element import Polynomial
140
+ if not isinstance(modulus, Polynomial):
141
+ raise TypeError("modulus must be a polynomial")
142
+
143
+ self._cache = Cache_givaro(self, p, k, modulus, repr, cache)
144
+ self._modulus = modulus
145
+
146
+ def characteristic(self):
147
+ """
148
+ Return the characteristic of this field.
149
+
150
+ EXAMPLES::
151
+
152
+ sage: p = GF(19^5,'a').characteristic(); p
153
+ 19
154
+ sage: type(p)
155
+ <class 'sage.rings.integer.Integer'>
156
+ """
157
+ return Integer(self._cache.characteristic())
158
+
159
+ def order(self):
160
+ """
161
+ Return the cardinality of this field.
162
+
163
+ OUTPUT: integer; the number of elements in ``self``
164
+
165
+ EXAMPLES::
166
+
167
+ sage: n = GF(19^5,'a').order(); n
168
+ 2476099
169
+ sage: type(n)
170
+ <class 'sage.rings.integer.Integer'>
171
+ """
172
+ return self._cache.order()
173
+
174
+ def degree(self):
175
+ r"""
176
+ If the cardinality of ``self`` is `p^n`, then this returns `n`.
177
+
178
+ OUTPUT: integer; the degree
179
+
180
+ EXAMPLES::
181
+
182
+ sage: GF(3^4,'a').degree()
183
+ 4
184
+ """
185
+ return Integer(self._cache.exponent())
186
+
187
+ def _repr_option(self, key):
188
+ """
189
+ Metadata about the :meth:`_repr_` output.
190
+
191
+ See :meth:`sage.structure.parent._repr_option` for details.
192
+
193
+ EXAMPLES::
194
+
195
+ sage: GF(23**3, 'a', repr='log')._repr_option('element_is_atomic')
196
+ True
197
+ sage: GF(23**3, 'a', repr='int')._repr_option('element_is_atomic')
198
+ True
199
+ sage: GF(23**3, 'a', repr='poly')._repr_option('element_is_atomic')
200
+ False
201
+ """
202
+ if key == 'element_is_atomic':
203
+ return self._cache.repr != 0 # 0 means repr='poly'
204
+ return super()._repr_option(key)
205
+
206
+ def random_element(self, *args, **kwds):
207
+ """
208
+ Return a random element of ``self``.
209
+
210
+ EXAMPLES::
211
+
212
+ sage: k = GF(23**3, 'a')
213
+ sage: e = k.random_element()
214
+ sage: e.parent() is k
215
+ True
216
+ sage: type(e)
217
+ <class 'sage.rings.finite_rings.element_givaro.FiniteField_givaroElement'>
218
+
219
+ sage: P.<x> = PowerSeriesRing(GF(3^3, 'a'))
220
+ sage: P.random_element(5).parent() is P
221
+ True
222
+ """
223
+ return self._cache.random_element()
224
+
225
+ def _element_constructor_(self, e):
226
+ """
227
+ Coerces several data types to ``self``.
228
+
229
+ INPUT:
230
+
231
+ - ``e`` -- data to coerce
232
+
233
+ EXAMPLES:
234
+
235
+ :class:`FiniteField_givaroElement` are accepted where the parent
236
+ is either ``self``, equals ``self`` or is the prime subfield::
237
+
238
+ sage: k = GF(2**8, 'a')
239
+ sage: k.gen() == k(k.gen())
240
+ True
241
+
242
+ Floats, ints, longs, Integer are interpreted modulo characteristic::
243
+
244
+ sage: k(2) # indirect doctest
245
+ 0
246
+
247
+ Floats are converted like integers::
248
+
249
+ sage: k(float(2.0))
250
+ 0
251
+
252
+ Rational are interpreted as ``self(numerator)/self(denominator)``.
253
+ Both may not be greater than :meth:`characteristic`.
254
+ ::
255
+
256
+ sage: k = GF(3**8, 'a')
257
+ sage: k(1/2) == k(1)/k(2)
258
+ True
259
+
260
+ Free module elements over :meth:`prime_subfield()` are interpreted
261
+ 'little endian'::
262
+
263
+ sage: k = GF(2**8, 'a')
264
+ sage: e = k.vector_space(map=False).gen(1); e # needs sage.modules
265
+ (0, 1, 0, 0, 0, 0, 0, 0)
266
+ sage: k(e) # needs sage.modules
267
+ a
268
+
269
+ ``None`` yields zero::
270
+
271
+ sage: k(None)
272
+ 0
273
+
274
+ Strings are evaluated as polynomial representation of elements in
275
+ ``self``::
276
+
277
+ sage: k('a^2+1')
278
+ a^2 + 1
279
+
280
+ Univariate polynomials coerce into finite fields by evaluating
281
+ the polynomial at the field's generator::
282
+
283
+ sage: R.<x> = QQ[]
284
+ sage: k.<a> = FiniteField(5^2, 'a', impl='givaro')
285
+ sage: k(R(2/3))
286
+ 4
287
+ sage: k(x^2)
288
+ a + 3
289
+ sage: R.<x> = GF(5)[]
290
+ sage: k(x^3-2*x+1)
291
+ 2*a + 4
292
+
293
+ sage: x = polygen(QQ)
294
+ sage: k(x^25)
295
+ a
296
+
297
+ sage: Q.<q> = FiniteField(5^3, 'q', impl='givaro')
298
+ sage: L = GF(5)
299
+ sage: LL.<xx> = L[]
300
+ sage: Q(xx^2 + 2*xx + 4)
301
+ q^2 + 2*q + 4
302
+
303
+ Multivariate polynomials only coerce if constant::
304
+
305
+ sage: R = k['x,y,z']; R
306
+ Multivariate Polynomial Ring in x, y, z over Finite Field in a of size 5^2
307
+ sage: k(R(2))
308
+ 2
309
+ sage: R = QQ['x,y,z']
310
+ sage: k(R(1/5))
311
+ Traceback (most recent call last):
312
+ ...
313
+ ZeroDivisionError: division by zero in finite field
314
+
315
+ PARI elements are interpreted as finite field elements; this PARI
316
+ flexibility is (absurdly!) liberal::
317
+
318
+ sage: k.<a> = GF(2^8)
319
+ sage: k(pari('Mod(1,2)'))
320
+ 1
321
+ sage: k(pari('Mod(2,3)'))
322
+ a
323
+ sage: k(pari('Mod(1,3)*a^20'))
324
+ a^7 + a^5 + a^4 + a^2
325
+ sage: k(pari('O(x)'))
326
+ Traceback (most recent call last):
327
+ ...
328
+ TypeError: unable to convert PARI t_SER to Finite Field in a of size 2^8
329
+
330
+ We can coerce from PARI finite field implementations::
331
+
332
+ sage: K.<a> = GF(3^10, impl='givaro')
333
+ sage: a^20
334
+ 2*a^9 + 2*a^8 + a^7 + 2*a^5 + 2*a^4 + 2*a^3 + 1
335
+ sage: M.<c> = GF(3^10, impl='pari_ffelt')
336
+ sage: K(c^20)
337
+ 2*a^9 + 2*a^8 + a^7 + 2*a^5 + 2*a^4 + 2*a^3 + 1
338
+
339
+ GAP elements need to be finite field elements::
340
+
341
+ sage: # needs sage.libs.gap
342
+ sage: x = gap('Z(13)')
343
+ sage: F = FiniteField(13, impl='givaro')
344
+ sage: F(x)
345
+ 2
346
+ sage: F(gap('0*Z(13)'))
347
+ 0
348
+ sage: F = FiniteField(13^2, 'a', impl='givaro')
349
+ sage: x = gap('Z(13)')
350
+ sage: F(x)
351
+ 2
352
+ sage: x = gap('Z(13^2)^3')
353
+ sage: F(x)
354
+ 12*a + 11
355
+ sage: F.multiplicative_generator()^3
356
+ 12*a + 11
357
+
358
+ sage: k.<a> = GF(29^3)
359
+ sage: k(48771/1225)
360
+ 28
361
+
362
+ sage: F9 = FiniteField(9, impl='givaro', prefix='a')
363
+ sage: F81 = FiniteField(81, impl='givaro', prefix='a')
364
+ sage: F81(F9.gen())
365
+ 2*a4^3 + 2*a4^2 + 1
366
+ """
367
+ return self._cache.element_from_data(e)
368
+
369
+ def gen(self, n=0):
370
+ r"""
371
+ Return a generator of ``self`` over its prime field, which is a
372
+ root of ``self.modulus()``.
373
+
374
+ INPUT:
375
+
376
+ - ``n`` -- must be 0
377
+
378
+ OUTPUT:
379
+
380
+ An element `a` of ``self`` such that ``self.modulus()(a) == 0``.
381
+
382
+ .. WARNING::
383
+
384
+ This generator is not guaranteed to be a generator for the
385
+ multiplicative group. To obtain the latter, use
386
+ :meth:`~sage.rings.finite_rings.finite_field_base.FiniteFields.multiplicative_generator()`
387
+ or use the ``modulus="primitive"`` option when constructing
388
+ the field.
389
+
390
+ EXAMPLES::
391
+
392
+ sage: k = GF(3^4, 'b'); k.gen()
393
+ b
394
+ sage: k.gen(1)
395
+ Traceback (most recent call last):
396
+ ...
397
+ IndexError: only one generator
398
+ sage: F = FiniteField(31, impl='givaro')
399
+ sage: F.gen()
400
+ 1
401
+ """
402
+ if n:
403
+ raise IndexError("only one generator")
404
+ return self._cache.gen()
405
+
406
+ def prime_subfield(self):
407
+ r"""
408
+ Return the prime subfield `\GF{p}` of ``self`` if ``self`` is `\GF{p^n}`.
409
+
410
+ EXAMPLES::
411
+
412
+ sage: GF(3^4, 'b').prime_subfield()
413
+ Finite Field of size 3
414
+
415
+ sage: S.<b> = GF(5^2); S
416
+ Finite Field in b of size 5^2
417
+ sage: S.prime_subfield()
418
+ Finite Field of size 5
419
+ sage: type(S.prime_subfield())
420
+ <class 'sage.rings.finite_rings.finite_field_prime_modn.FiniteField_prime_modn_with_category'>
421
+ """
422
+ try:
423
+ return self._prime_subfield
424
+ except AttributeError:
425
+ from .finite_field_constructor import GF
426
+ self._prime_subfield = GF(self.characteristic())
427
+ return self._prime_subfield
428
+
429
+ def log_to_int(self, n):
430
+ r"""
431
+ Given an integer `n` this method returns ``i`` where ``i``
432
+ satisfies `g^n = i` where `g` is the generator of ``self``; the
433
+ result is interpreted as an integer.
434
+
435
+ INPUT:
436
+
437
+ - ``n`` -- log representation of a finite field element
438
+
439
+ OUTPUT: integer representation of a finite field element
440
+
441
+ EXAMPLES::
442
+
443
+ sage: k = GF(2**8, 'a')
444
+ sage: k.log_to_int(4)
445
+ 16
446
+ sage: k.log_to_int(20)
447
+ 180
448
+ """
449
+ return self._cache.log_to_int(n)
450
+
451
+ def int_to_log(self, n):
452
+ r"""
453
+ Given an integer `n` this method returns `i` where `i` satisfies
454
+ `g^i = n \mod p` where `g` is the generator and `p` is the
455
+ characteristic of ``self``.
456
+
457
+ INPUT:
458
+
459
+ - ``n`` -- integer representation of a finite field element
460
+
461
+ OUTPUT: log representation of ``n``
462
+
463
+ EXAMPLES::
464
+
465
+ sage: k = GF(7**3, 'a')
466
+ sage: k.int_to_log(4)
467
+ 228
468
+ sage: k.int_to_log(3)
469
+ 57
470
+ sage: k.gen()^57
471
+ 3
472
+ """
473
+ return self._cache.int_to_log(n)
474
+
475
+ def from_integer(self, n):
476
+ r"""
477
+ Given an integer `n` return a finite field element in ``self``
478
+ which equals `n` under the condition that :meth:`gen()` is set to
479
+ :meth:`characteristic()`.
480
+
481
+ EXAMPLES::
482
+
483
+ sage: k.<a> = GF(2^8)
484
+ sage: k.from_integer(8)
485
+ a^3
486
+ sage: e = k.from_integer(151); e
487
+ a^7 + a^4 + a^2 + a + 1
488
+ sage: 2^7 + 2^4 + 2^2 + 2 + 1
489
+ 151
490
+ """
491
+ return self._cache.fetch_int(n)
492
+
493
+ def _pari_modulus(self):
494
+ """
495
+ Return the modulus of ``self`` in a format for PARI.
496
+
497
+ EXAMPLES::
498
+
499
+ sage: GF(3^4,'a')._pari_modulus()
500
+ Mod(1, 3)*a^4 + Mod(2, 3)*a^3 + Mod(2, 3)
501
+ """
502
+ f = pari(str(self.modulus()))
503
+ return f.subst('x', 'a') * pari("Mod(1,%s)" % self.characteristic())
504
+
505
+ def __iter__(self):
506
+ """
507
+ Finite fields may be iterated over.
508
+
509
+ EXAMPLES::
510
+
511
+ sage: list(GF(2**2, 'a'))
512
+ [0, a, a + 1, 1]
513
+ """
514
+ from .element_givaro import FiniteField_givaro_iterator
515
+ return FiniteField_givaro_iterator(self._cache)
516
+
517
+ def a_times_b_plus_c(self, a, b, c):
518
+ """
519
+ Return ``a*b + c``. This is faster than multiplying ``a`` and ``b``
520
+ first and adding ``c`` to the result.
521
+
522
+ INPUT:
523
+
524
+ - ``a``, ``b``, ``c`` -- :class:`~~sage.rings.finite_rings.element_givaro.FiniteField_givaroElement`
525
+
526
+ EXAMPLES::
527
+
528
+ sage: k.<a> = GF(2**8)
529
+ sage: k.a_times_b_plus_c(a,a,k(1))
530
+ a^2 + 1
531
+ """
532
+ return self._cache.a_times_b_plus_c(a, b, c)
533
+
534
+ def a_times_b_minus_c(self, a, b, c):
535
+ """
536
+ Return ``a*b - c``.
537
+
538
+ INPUT:
539
+
540
+ - ``a``, ``b``, ``c`` -- :class:`~sage.rings.finite_rings.element_givaro.FiniteField_givaroElement`
541
+
542
+ EXAMPLES::
543
+
544
+ sage: k.<a> = GF(3**3)
545
+ sage: k.a_times_b_minus_c(a,a,k(1))
546
+ a^2 + 2
547
+ """
548
+ return self._cache.a_times_b_minus_c(a, b, c)
549
+
550
+ def c_minus_a_times_b(self, a, b, c):
551
+ """
552
+ Return ``c - a*b``.
553
+
554
+ INPUT:
555
+
556
+ - ``a``, ``b``, ``c`` -- :class:`~sage.rings.finite_rings.element_givaro.FiniteField_givaroElement`
557
+
558
+ EXAMPLES::
559
+
560
+ sage: k.<a> = GF(3**3)
561
+ sage: k.c_minus_a_times_b(a,a,k(1))
562
+ 2*a^2 + 1
563
+ """
564
+ return self._cache.c_minus_a_times_b(a, b, c)
565
+
566
+ def frobenius_endomorphism(self, n=1):
567
+ """
568
+ INPUT:
569
+
570
+ - ``n`` -- integer (default: 1)
571
+
572
+ OUTPUT:
573
+
574
+ The `n`-th power of the absolute arithmetic Frobenius
575
+ endomorphism on this finite field.
576
+
577
+ EXAMPLES::
578
+
579
+ sage: k.<t> = GF(3^5)
580
+ sage: Frob = k.frobenius_endomorphism(); Frob
581
+ Frobenius endomorphism t |--> t^3 on Finite Field in t of size 3^5
582
+
583
+ sage: a = k.random_element()
584
+ sage: Frob(a) == a^3
585
+ True
586
+
587
+ We can specify a power::
588
+
589
+ sage: k.frobenius_endomorphism(2)
590
+ Frobenius endomorphism t |--> t^(3^2) on Finite Field in t of size 3^5
591
+
592
+ The result is simplified if possible::
593
+
594
+ sage: k.frobenius_endomorphism(6)
595
+ Frobenius endomorphism t |--> t^3 on Finite Field in t of size 3^5
596
+ sage: k.frobenius_endomorphism(5)
597
+ Identity endomorphism of Finite Field in t of size 3^5
598
+
599
+ Comparisons work::
600
+
601
+ sage: k.frobenius_endomorphism(6) == Frob
602
+ True
603
+ sage: from sage.categories.morphism import IdentityMorphism
604
+ sage: k.frobenius_endomorphism(5) == IdentityMorphism(k)
605
+ True
606
+
607
+ AUTHOR:
608
+
609
+ - Xavier Caruso (2012-06-29)
610
+ """
611
+ from sage.rings.finite_rings.hom_finite_field_givaro import FrobeniusEndomorphism_givaro
612
+ return FrobeniusEndomorphism_givaro(self, n)