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,509 @@
1
+ # sage_setup: distribution = sagemath-pari
2
+ # sage.doctest: needs sage.libs.pari sage.rings.real_mpfr
3
+ r"""
4
+ Enumeration of primitive totally real fields
5
+
6
+ This module contains functions for enumerating all primitive
7
+ totally real number fields of given degree and small discriminant.
8
+ Here a number field is called *primitive* if it contains no proper
9
+ subfields except `\QQ`.
10
+
11
+ See also :mod:`sage.rings.number_field.totallyreal_rel`, which handles the non-primitive
12
+ case using relative extensions.
13
+
14
+ ALGORITHM:
15
+
16
+ We use Hunter's algorithm ([Coh2000]_, Section 9.3) with modifications
17
+ due to Takeuchi [Tak1999]_ and the author [Voi2008]_.
18
+
19
+ We enumerate polynomials `f(x) = x^n + a_{n-1} x^{n-1} + \dots + a_0`.
20
+ Hunter's theorem gives bounds on `a_{n-1}` and `a_{n-2}`; then given
21
+ `a_{n-1}` and `a_{n-2}`, one can recursively compute bounds on `a_{n-3},
22
+ \dots, a_0`, using the fact that the polynomial is totally real by
23
+ looking at the zeros of successive derivatives and applying
24
+ Rolle's theorem. See [Tak1999]_ for more details.
25
+
26
+ EXAMPLES:
27
+
28
+ In this first simple example, we compute the totally real quadratic
29
+ fields of discriminant `\le 50`. ::
30
+
31
+ sage: enumerate_totallyreal_fields_prim(2,50)
32
+ [[5, x^2 - x - 1],
33
+ [8, x^2 - 2],
34
+ [12, x^2 - 3],
35
+ [13, x^2 - x - 3],
36
+ [17, x^2 - x - 4],
37
+ [21, x^2 - x - 5],
38
+ [24, x^2 - 6],
39
+ [28, x^2 - 7],
40
+ [29, x^2 - x - 7],
41
+ [33, x^2 - x - 8],
42
+ [37, x^2 - x - 9],
43
+ [40, x^2 - 10],
44
+ [41, x^2 - x - 10],
45
+ [44, x^2 - 11]]
46
+ sage: [d for d in range(5,50)
47
+ ....: if (is_squarefree(d) and d%4 == 1) or (d%4 == 0 and is_squarefree(d/4))]
48
+ [5, 8, 12, 13, 17, 20, 21, 24, 28, 29, 33, 37, 40, 41, 44]
49
+
50
+ Next, we compute all totally real quintic fields of discriminant `\le 10^5`::
51
+
52
+ sage: ls = enumerate_totallyreal_fields_prim(5,10^5) ; ls
53
+ [[14641, x^5 - x^4 - 4*x^3 + 3*x^2 + 3*x - 1],
54
+ [24217, x^5 - 5*x^3 - x^2 + 3*x + 1],
55
+ [36497, x^5 - 2*x^4 - 3*x^3 + 5*x^2 + x - 1],
56
+ [38569, x^5 - 5*x^3 + 4*x - 1],
57
+ [65657, x^5 - x^4 - 5*x^3 + 2*x^2 + 5*x + 1],
58
+ [70601, x^5 - x^4 - 5*x^3 + 2*x^2 + 3*x - 1],
59
+ [81509, x^5 - x^4 - 5*x^3 + 3*x^2 + 5*x - 2],
60
+ [81589, x^5 - 6*x^3 + 8*x - 1],
61
+ [89417, x^5 - 6*x^3 - x^2 + 8*x + 3]]
62
+ sage: len(ls)
63
+ 9
64
+
65
+ We see that there are 9 such fields (up to isomorphism!).
66
+
67
+ See also [Mar1980]_.
68
+
69
+ AUTHORS:
70
+
71
+ - John Voight (2007-09-01): initial version; various optimization tweaks
72
+ - John Voight (2007-10-09): added DSage module; added pari functions to avoid
73
+ recomputations; separated DSage component
74
+ - Craig Citro and John Voight (2007-11-04): additional doctests and type checking
75
+ - Craig Citro and John Voight (2008-02-10): final modifications for submission
76
+ """
77
+
78
+ # ****************************************************************************
79
+ # Copyright (C) 2007 William Stein and John Voight
80
+ #
81
+ # This program is free software: you can redistribute it and/or modify
82
+ # it under the terms of the GNU General Public License as published by
83
+ # the Free Software Foundation, either version 2 of the License, or
84
+ # (at your option) any later version.
85
+ # https://www.gnu.org/licenses/
86
+ # ****************************************************************************
87
+
88
+ from cysignals.memory cimport check_calloc, sig_free
89
+
90
+ import math
91
+ import sys
92
+
93
+ from sage.libs.gmp.mpz cimport *
94
+ from sage.libs.pari import pari
95
+ from cypari2.gen cimport Gen as pari_gen
96
+ from sage.libs.pari.misc cimport new_t_POL_from_int_star
97
+
98
+ from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
99
+ from sage.rings.integer import Integer
100
+ from sage.rings.integer cimport Integer
101
+ from sage.rings.integer_ring import ZZ
102
+ from sage.rings.rational_field import QQ
103
+
104
+ from sage.rings.number_field.totallyreal_data import tr_data, int_has_small_square_divisor
105
+ from sage.rings.number_field.totallyreal_data cimport tr_data
106
+
107
+
108
+ cpdef double odlyzko_bound_totallyreal(int n) noexcept:
109
+ r"""
110
+ This function returns the unconditional Odlyzko bound for the root
111
+ discriminant of a totally real number field of degree `n`.
112
+
113
+ .. NOTE::
114
+
115
+ The bounds for `n > 50` are not necessarily optimal.
116
+
117
+ INPUT:
118
+
119
+ - ``n`` -- integer; the degree
120
+
121
+ OUTPUT: a lower bound on the root discriminant (as a real number)
122
+
123
+ EXAMPLES::
124
+
125
+ sage: from sage.rings.number_field.totallyreal import odlyzko_bound_totallyreal
126
+ sage: [odlyzko_bound_totallyreal(n) for n in range(1, 5)]
127
+ [1.0, 2.223, 3.61, 5.067]
128
+
129
+ AUTHORS:
130
+
131
+ - John Voight (2007-09-03)
132
+
133
+ .. NOTE::
134
+
135
+ The values are calculated by Martinet [Mar1980]_.
136
+ """
137
+
138
+ if n <= 10:
139
+ dB = [1.,2.223,3.610,5.067,6.523,7.941,9.301,10.596,11.823,12.985][n-1]
140
+ elif n <= 20:
141
+ dB = [14.0831,15.1217,16.1047,17.0359,17.9192,18.7580,19.5555,20.3148,21.0386,21.7294][n-11]
142
+ elif n <= 30:
143
+ dB = [22.3896,23.0212,23.6261,24.2061,24.7628,25.2976,25.2976,26.3071,26.3071,27.2440][n-21]
144
+ elif n <= 40:
145
+ dB = [27.2440,28.1165,28.1165,28.9315,28.9315,29.6948,29.6948,30.4117,30.4117,31.0865][n-31]
146
+ elif n <= 50:
147
+ dB = [31.0865,31.7232,31.7232,32.3252,32.3252,32.8954,32.8954,33.4365,33.4365,33.9508][n-41]
148
+ else:
149
+ dB = 33.9508
150
+ return dB
151
+
152
+
153
+ def enumerate_totallyreal_fields_prim(n, B, a = [], verbose=0, return_seqs=False,
154
+ phc=False, keep_fields=False, t_2=False,
155
+ just_print=False,
156
+ return_pari_objects=True):
157
+ r"""
158
+ Enumerate primitive totally real fields of degree
159
+ `n>1` with discriminant `d \leq B`; optionally one can specify the
160
+ first few coefficients, where the sequence `a` corresponds to
161
+
162
+ ::
163
+
164
+ a[d]*x^n + ... + a[0]*x^(n-d)
165
+
166
+ where ``length(a) = d+1``, so in particular always ``a[d] = 1``.
167
+
168
+ .. NOTE::
169
+
170
+ This is guaranteed to give all primitive such fields, and
171
+ seems in practice to give many imprimitive ones.
172
+
173
+ INPUT:
174
+
175
+ - ``n`` -- integer; the degree
176
+ - ``B`` -- integer; the discriminant bound
177
+ - ``a`` -- list (default: ``[]``); the coefficient list to begin with
178
+ - ``verbose`` -- (integer or string, default: 0) if ``verbose == 1``
179
+ (or ``2``), then print to the screen (really) verbosely; if verbose is
180
+ a string, then print verbosely to the file specified by verbose.
181
+ - ``return_seqs`` -- boolean (default: ``False``); if ``True``, then return
182
+ the polynomials as sequences (for easier exporting to a file)
183
+ - ``phc`` -- boolean or integer (default: ``False``)
184
+ - ``keep_fields`` -- boolean or integer (default: ``False``); if
185
+ ``keep_fields`` is ``True``, then keep fields up to ``B*log(B)``; if
186
+ ``keep_fields`` is an integer, then keep fields up to that integer.
187
+ - ``t_2`` -- boolean or integer (default: ``False``); if ``t_2 = T``, then
188
+ keep only polynomials with ``t_2 norm >= T``
189
+ - ``just_print`` -- boolean (default: ``False``); if ``just_print`` is not
190
+ ``False``, instead of creating a sorted list of totally real number
191
+ fields, we simply write each totally real field we find to the file
192
+ whose filename is given by ``just_print``. In this case, we don't
193
+ return anything.
194
+ - ``return_pari_objects`` -- boolean (default: ``True``); if
195
+ both ``return_seqs`` and ``return_pari_objects`` are ``False`` then
196
+ it returns the elements as Sage objects. Otherwise it returns PARI
197
+ objects.
198
+
199
+ OUTPUT:
200
+
201
+ the list of fields with entries ``[d,f]``, where ``d`` is the
202
+ discriminant and ``f`` is a defining polynomial, sorted by
203
+ discriminant.
204
+
205
+
206
+ AUTHORS:
207
+
208
+ - John Voight (2007-09-03)
209
+ - Craig Citro (2008-09-19): moved to Cython for speed improvement
210
+
211
+ TESTS::
212
+
213
+ sage: len(enumerate_totallyreal_fields_prim(2,10**4))
214
+ 3043
215
+ sage: len(enumerate_totallyreal_fields_prim(3,3**8))
216
+ 237
217
+ sage: len(enumerate_totallyreal_fields_prim(5,5**7))
218
+ 6
219
+ sage: len(enumerate_totallyreal_fields_prim(2,2**15)) # long time
220
+ 9957
221
+ sage: len(enumerate_totallyreal_fields_prim(3,3**10)) # long time
222
+ 2720
223
+ sage: len(enumerate_totallyreal_fields_prim(5,5**8)) # long time
224
+ 103
225
+
226
+ Each of the outputs must be elements of Sage if ``return_pari_objects``
227
+ is set to ``False``::
228
+
229
+ sage: enumerate_totallyreal_fields_prim(2, 10)
230
+ [[5, x^2 - x - 1], [8, x^2 - 2]]
231
+ sage: type(enumerate_totallyreal_fields_prim(2, 10)[0][1])
232
+ <class 'cypari2.gen.Gen'>
233
+ sage: enumerate_totallyreal_fields_prim(2, 10, return_pari_objects=False)[0][0].parent()
234
+ Integer Ring
235
+ sage: enumerate_totallyreal_fields_prim(2, 10, return_pari_objects=False)[0][1].parent()
236
+ Univariate Polynomial Ring in x over Rational Field
237
+ sage: enumerate_totallyreal_fields_prim(2, 10, return_seqs=True)[1][0][1][0].parent()
238
+ Rational Field
239
+ """
240
+
241
+ cdef pari_gen B_pari, d, d_poly, keepB, nf, t2val, ngt2, ng
242
+ cdef int *f_out
243
+ cdef int counts[4]
244
+ cdef int i, n_int, j, skip_jp
245
+ cdef bint found, use_t2, phc_flag, verb_int, temp_bint
246
+ cdef Py_ssize_t k0, lenS
247
+ cdef tr_data T
248
+ cdef Integer dB
249
+
250
+ if not isinstance(n, Integer):
251
+ try:
252
+ n = Integer(n)
253
+ except TypeError:
254
+ raise TypeError("cannot coerce n (= %s) to an integer" % n)
255
+ if (n < 1):
256
+ raise ValueError("n must be at least 1.")
257
+
258
+ # Initialize
259
+ n_int = int(n)
260
+ S = set() # set of pairs (d, f)
261
+ lenS = 0
262
+
263
+ # This is just to quiet valgrind down
264
+ B_pari = pari(0)
265
+ d = B_pari
266
+ d_poly = B_pari
267
+ keepB = B_pari
268
+ nf = B_pari
269
+ t2val = B_pari
270
+ ngt2 = B_pari
271
+ ng = B_pari
272
+
273
+ dB = Integer.__new__(Integer)
274
+ dB_odlyzko = odlyzko_bound_totallyreal(n_int)
275
+ mpz_set_d(dB.value, dB_odlyzko)
276
+ dB = 40000*((dB+1)**n_int)
277
+ for i from 0 <= i < 4:
278
+ counts[i] = 0
279
+
280
+ B_pari = pari(B)
281
+ f_out = <int *>check_calloc(n_int + 1, sizeof(int))
282
+ f_out[n_int] = 1
283
+
284
+ if keep_fields:
285
+ if isinstance(keep_fields, bool):
286
+ keepB = pari(int(math.floor(B*math.log(B))))
287
+ else:
288
+ keepB = pari(keep_fields)
289
+ else:
290
+ keepB = pari(0)
291
+
292
+ if B > keepB:
293
+ keepB = B_pari
294
+
295
+ if t_2:
296
+ k0 = len(a)
297
+ if isinstance(t_2, Integer):
298
+ t2val = pari(t_2)
299
+ else:
300
+ t2val = pari(a[k0-2]**2-2*a[k0-3])
301
+ use_t2 = 1
302
+ else:
303
+ use_t2 = 0
304
+
305
+ if phc:
306
+ phc_flag = 1
307
+ else:
308
+ phc_flag = 0
309
+
310
+ if just_print:
311
+ skip_jp = 0
312
+ jp_file = open(just_print, "w")
313
+ else:
314
+ skip_jp = 1
315
+
316
+ # Trivial case
317
+ if n == 1:
318
+ sig_free(f_out)
319
+ if return_seqs:
320
+ return [[0,0,0,0],[[1,[-1,1]]]]
321
+ elif return_pari_objects:
322
+ return [[1,pari('x-1')]]
323
+ else:
324
+ Px = PolynomialRing(QQ, 'x')
325
+ return [[ZZ(1), Px.gen()-1]]
326
+
327
+ if verbose:
328
+ verb_int = 1
329
+ saveout = sys.stdout
330
+ if isinstance(verbose, str):
331
+ fsock = open(verbose, 'w')
332
+ sys.stdout = fsock
333
+ # Else, print to screen
334
+ else:
335
+ verb_int = 0
336
+
337
+ T = tr_data(n_int,B,a)
338
+ if verb_int == 2:
339
+ T.incr(f_out,verb_int,0,phc_flag)
340
+ else:
341
+ T.incr(f_out,0,0,phc_flag)
342
+
343
+ while f_out[n]:
344
+ nf = new_t_POL_from_int_star(f_out, n_int+1, 0)
345
+ if verb_int:
346
+ print("==>", nf, "[")
347
+ for j from 0 <= j < n-1:
348
+ print("%s " % f_out[j])
349
+ print("%s]" % f_out[n - 1])
350
+ d_poly = nf.poldisc()
351
+ counts[0] += 1
352
+ if d_poly > 0 and nf.polsturm() == n:
353
+ da = int_has_small_square_divisor(Integer(d_poly))
354
+ if d_poly > dB or d_poly <= B*da:
355
+ counts[1] += 1
356
+ if nf.polisirreducible():
357
+ counts[2] += 1
358
+ zk, d = nf.nfbasis_d()
359
+
360
+ if d <= keepB:
361
+ if verb_int:
362
+ print("has discriminant", d, end='')
363
+
364
+ # Find a minimal lattice element
365
+ counts[3] += 1
366
+ ng = <pari_gen>((<pari_gen>(pari([nf,zk]))).polredabs())
367
+
368
+ dng = (d, ng)
369
+
370
+ if skip_jp:
371
+ # Check if K is contained in the list.
372
+ found = dng in S
373
+ if found and verb_int:
374
+ print("but is not new")
375
+
376
+ ngt2 = <pari_gen>(ng[n_int-1]**2-2*ng[n_int-2])
377
+ if not found:
378
+ temp_bint = ngt2 >= t2val
379
+ if ((not use_t2) or temp_bint):
380
+ if verb_int:
381
+ print("and is new!")
382
+ S.add(dng)
383
+ lenS += 1
384
+ else:
385
+ if ((not use_t2) or ngt2 >= t2val):
386
+ jp_file.write(str([d, ng.Vecrev()]) + "\n")
387
+
388
+ else:
389
+ if verb_int:
390
+ print("has discriminant", abs(d), "> B")
391
+ else:
392
+ if verb_int:
393
+ print("is not irreducible")
394
+ else:
395
+ if verb_int:
396
+ print("has discriminant", abs(d), "with no large enough square divisor")
397
+ else:
398
+ if verb_int:
399
+ if d == 0:
400
+ print("is not squarefree")
401
+ else:
402
+ print("is not totally real")
403
+
404
+ if verb_int == 2:
405
+ T.incr(f_out,verb_int,0,phc_flag)
406
+ else:
407
+ T.incr(f_out,0,0,phc_flag)
408
+
409
+ if not skip_jp:
410
+ if n_int == 2 and B >= 5 and ((not use_t2) or t2val <= 5):
411
+ jp_file.write(str([2,[-1,-1,1]]) + "\n")
412
+ if B >= 8 and B < 32:
413
+ jp_file.write(str([2,[-2,0,1]]) + "\n")
414
+ elif n_int == 3 and B >= 49 and ((not use_t2) or 5 >= t2val):
415
+ jp_file.write(str([3,[1,-2,-1,1]]) + "\n")
416
+ jp_file.close()
417
+ sig_free(f_out)
418
+ return
419
+
420
+ # Convert S to a sorted list of pairs [d, f]
421
+ # we sort only according to d
422
+ # because we cannot compare t_POL objects (PARI polynomials)
423
+ S = sorted([list(s) for s in S], key=lambda x: x[0])
424
+
425
+ # In the application of Smyth's theorem above (and easy
426
+ # irreducibility test), we exclude finitely many possibilities
427
+ # which we must now throw back in.
428
+ if n_int == 2 and B >= 5 and ((not use_t2) or t2val <= 5):
429
+ S = [[5, pari('x^2-x-1')]] + S
430
+ lenS += 1
431
+ if B >= 8 and B < 32:
432
+ S.insert(1, [8, pari('x^2-2')])
433
+ lenS += 1
434
+ elif n_int == 3 and B >= 49 and ((not use_t2) or 5 >= t2val):
435
+ S = [[49, pari('x^3-x^2-2*x+1')]] + S
436
+ lenS += 1
437
+ # The polynomials with n = 4 define imprimitive number fields.
438
+
439
+ # Now check for isomorphic fields
440
+ lenS = weed_fields(S, lenS)
441
+
442
+ # Output.
443
+ if verb_int:
444
+ print("=" * 80)
445
+ print("Polynomials tested:", counts[0])
446
+ print("Polynomials with sssd poldisc:", counts[1])
447
+ print("Irreducible polynomials:", counts[2])
448
+ print("Polynomials with nfdisc <= B:", counts[3])
449
+ for i from 0 <= i < lenS:
450
+ print(S[i])
451
+ if isinstance(verbose, str):
452
+ fsock.close()
453
+ sys.stdout = saveout
454
+
455
+ sig_free(f_out)
456
+ # Make sure to return elements that belong to Sage
457
+ if return_seqs:
458
+ return [[ZZ(counts[i]) for i in range(4)],
459
+ [[ZZ(s[0]), [QQ(x) for x in s[1].polrecip().Vec()]] for s in S]]
460
+ elif return_pari_objects:
461
+ return S
462
+ else:
463
+ Px = PolynomialRing(QQ, 'x')
464
+ return [[ZZ(s[0]), Px([QQ(x) for x in s[1].list()])]
465
+ for s in S]
466
+
467
+
468
+ def weed_fields(S, Py_ssize_t lenS=0):
469
+ r"""
470
+ Function used internally by the :func:`~enumerate_totallyreal_fields_prim`
471
+ routine. (Weeds the fields listed by ``[discriminant, polynomial]``
472
+ for isomorphism classes.) Returns the size of the resulting list.
473
+
474
+ EXAMPLES::
475
+
476
+ sage: from sage.rings.number_field.totallyreal import weed_fields
477
+ sage: ls = [[5,pari('x^2-3*x+1')],[5,pari('x^2-5')]]
478
+ sage: weed_fields(ls)
479
+ 1
480
+ sage: ls
481
+ [[5, x^2 - 3*x + 1]]
482
+ """
483
+ cdef Py_ssize_t i, j, n
484
+ if lenS == 0:
485
+ lenS = len(S)
486
+ i = 0
487
+ if not lenS:
488
+ return lenS
489
+ n = len(S[0][1])-1
490
+ while i < lenS-1:
491
+ j = i+1
492
+ while j < lenS and S[i][0] == S[j][0]:
493
+ if S[i][1].nfisisom(S[j][1]):
494
+ # Keep the one with a smallest T_2
495
+ T_2i = S[i][1][n-1]**2 - 2*S[i][1][n-2]
496
+ T_2j = S[j][1][n-1]**2 - 2*S[j][1][n-2]
497
+ if T_2i <= T_2j:
498
+ S.pop(j)
499
+ lenS -= 1
500
+ else:
501
+ t = S.pop(j)
502
+ S.pop(i)
503
+ S.insert(i, t)
504
+ lenS -= 1
505
+ else:
506
+ j += 1
507
+ i += 1
508
+
509
+ return lenS
@@ -0,0 +1,26 @@
1
+ # sage_setup: distribution = sagemath-pari
2
+ cdef double eval_seq_as_poly(int *f, int n, double x) noexcept
3
+ cdef double newton(int *f, int *df, int n, double x0, double eps) noexcept
4
+ cdef void newton_in_intervals(int *f, int *df, int n, double *beta, double eps, double *rts) noexcept
5
+ cpdef lagrange_degree_3(int n, int an1, int an2, int an3)
6
+
7
+ cimport sage.rings.integer
8
+
9
+ cdef int eval_seq_as_poly_int(int *f, int n, int x) noexcept
10
+
11
+ cdef int easy_is_irreducible(int *a, int n) noexcept
12
+
13
+ cdef class tr_data:
14
+
15
+ cdef int n, k
16
+ cdef double B
17
+ cdef double b_lower, b_upper, gamma
18
+
19
+ cdef int *a
20
+ cdef int *amax
21
+ cdef double *beta
22
+ cdef int *gnk
23
+
24
+ cdef int *df
25
+
26
+ cdef void incr(self, int *f_out, int verbose, int haltk, int phc) noexcept