passagemath-flint 10.6.1rc10__cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_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.
Files changed (361) hide show
  1. passagemath_flint-10.6.1rc10.dist-info/METADATA +122 -0
  2. passagemath_flint-10.6.1rc10.dist-info/RECORD +361 -0
  3. passagemath_flint-10.6.1rc10.dist-info/WHEEL +6 -0
  4. passagemath_flint-10.6.1rc10.dist-info/top_level.txt +2 -0
  5. passagemath_flint.libs/libflint-aecb9cc5.so.21.0.0 +0 -0
  6. passagemath_flint.libs/libgf2x-a4cdec90.so.3.0.0 +0 -0
  7. passagemath_flint.libs/libgfortran-8f1e9814.so.5.0.0 +0 -0
  8. passagemath_flint.libs/libgmp-6e109695.so.10.5.0 +0 -0
  9. passagemath_flint.libs/libgsl-cda90e79.so.28.0.0 +0 -0
  10. passagemath_flint.libs/libmpfi-e3c25853.so.0.0.0 +0 -0
  11. passagemath_flint.libs/libmpfr-82690d50.so.6.2.1 +0 -0
  12. passagemath_flint.libs/libntl-74e7d9a3.so.44.0.1 +0 -0
  13. passagemath_flint.libs/libopenblasp-r0-6dcb67f9.3.29.so +0 -0
  14. passagemath_flint.libs/libquadmath-828275a7.so.0.0.0 +0 -0
  15. sage/all__sagemath_flint.py +29 -0
  16. sage/combinat/all__sagemath_flint.py +1 -0
  17. sage/combinat/posets/all__sagemath_flint.py +1 -0
  18. sage/combinat/posets/hasse_cython_flint.cpython-312-x86_64-linux-gnu.so +0 -0
  19. sage/combinat/posets/hasse_cython_flint.pyx +194 -0
  20. sage/data_structures/all__sagemath_flint.py +1 -0
  21. sage/data_structures/bounded_integer_sequences.cpython-312-x86_64-linux-gnu.so +0 -0
  22. sage/data_structures/bounded_integer_sequences.pxd +62 -0
  23. sage/data_structures/bounded_integer_sequences.pyx +1418 -0
  24. sage/graphs/all__sagemath_flint.py +1 -0
  25. sage/graphs/chrompoly.cpython-312-x86_64-linux-gnu.so +0 -0
  26. sage/graphs/chrompoly.pyx +555 -0
  27. sage/graphs/matchpoly.cpython-312-x86_64-linux-gnu.so +0 -0
  28. sage/graphs/matchpoly.pyx +412 -0
  29. sage/libs/all__sagemath_flint.py +17 -0
  30. sage/libs/arb/__init__.py +1 -0
  31. sage/libs/arb/acb.pxd +154 -0
  32. sage/libs/arb/acb_calc.pxd +9 -0
  33. sage/libs/arb/acb_elliptic.pxd +25 -0
  34. sage/libs/arb/acb_hypgeom.pxd +74 -0
  35. sage/libs/arb/acb_mat.pxd +62 -0
  36. sage/libs/arb/acb_modular.pxd +17 -0
  37. sage/libs/arb/acb_poly.pxd +216 -0
  38. sage/libs/arb/arb.pxd +240 -0
  39. sage/libs/arb/arb_fmpz_poly.pxd +21 -0
  40. sage/libs/arb/arb_hypgeom.pxd +83 -0
  41. sage/libs/arb/arb_wrap.h +34 -0
  42. sage/libs/arb/arf.pxd +131 -0
  43. sage/libs/arb/arith.cpython-312-x86_64-linux-gnu.so +0 -0
  44. sage/libs/arb/arith.pyx +87 -0
  45. sage/libs/arb/bernoulli.pxd +6 -0
  46. sage/libs/arb/mag.pxd +77 -0
  47. sage/libs/arb/types.pxd +37 -0
  48. sage/libs/flint/__init__.py +1 -0
  49. sage/libs/flint/acb.pxd +270 -0
  50. sage/libs/flint/acb_calc.pxd +22 -0
  51. sage/libs/flint/acb_dft.pxd +51 -0
  52. sage/libs/flint/acb_dirichlet.pxd +112 -0
  53. sage/libs/flint/acb_elliptic.pxd +42 -0
  54. sage/libs/flint/acb_hypgeom.pxd +169 -0
  55. sage/libs/flint/acb_macros.pxd +9 -0
  56. sage/libs/flint/acb_mat.pxd +136 -0
  57. sage/libs/flint/acb_mat_macros.pxd +10 -0
  58. sage/libs/flint/acb_modular.pxd +62 -0
  59. sage/libs/flint/acb_poly.pxd +251 -0
  60. sage/libs/flint/acb_poly_macros.pxd +8 -0
  61. sage/libs/flint/acb_theta.pxd +124 -0
  62. sage/libs/flint/acf.pxd +32 -0
  63. sage/libs/flint/aprcl.pxd +84 -0
  64. sage/libs/flint/arb.pxd +382 -0
  65. sage/libs/flint/arb_calc.pxd +31 -0
  66. sage/libs/flint/arb_fmpz_poly.pxd +34 -0
  67. sage/libs/flint/arb_fpwrap.pxd +215 -0
  68. sage/libs/flint/arb_hypgeom.pxd +147 -0
  69. sage/libs/flint/arb_macros.pxd +9 -0
  70. sage/libs/flint/arb_mat.pxd +140 -0
  71. sage/libs/flint/arb_mat_macros.pxd +10 -0
  72. sage/libs/flint/arb_poly.pxd +237 -0
  73. sage/libs/flint/arf.pxd +167 -0
  74. sage/libs/flint/arith.cpython-312-x86_64-linux-gnu.so +0 -0
  75. sage/libs/flint/arith.pxd +76 -0
  76. sage/libs/flint/arith.pyx +77 -0
  77. sage/libs/flint/arith_sage.cpython-312-x86_64-linux-gnu.so +0 -0
  78. sage/libs/flint/arith_sage.pyx +308 -0
  79. sage/libs/flint/bernoulli.pxd +28 -0
  80. sage/libs/flint/bool_mat.pxd +52 -0
  81. sage/libs/flint/ca.pxd +203 -0
  82. sage/libs/flint/ca_ext.pxd +34 -0
  83. sage/libs/flint/ca_field.pxd +32 -0
  84. sage/libs/flint/ca_mat.pxd +117 -0
  85. sage/libs/flint/ca_poly.pxd +104 -0
  86. sage/libs/flint/ca_vec.pxd +46 -0
  87. sage/libs/flint/calcium.pxd +27 -0
  88. sage/libs/flint/d_mat.pxd +39 -0
  89. sage/libs/flint/d_vec.pxd +32 -0
  90. sage/libs/flint/dirichlet.pxd +57 -0
  91. sage/libs/flint/dlog.pxd +53 -0
  92. sage/libs/flint/double_extras.pxd +24 -0
  93. sage/libs/flint/double_interval.pxd +36 -0
  94. sage/libs/flint/fexpr.pxd +104 -0
  95. sage/libs/flint/fexpr_builtin.pxd +20 -0
  96. sage/libs/flint/fft.pxd +66 -0
  97. sage/libs/flint/flint.pxd +36 -0
  98. sage/libs/flint/flint_ntl_wrap.h +35 -0
  99. sage/libs/flint/flint_sage.cpython-312-x86_64-linux-gnu.so +0 -0
  100. sage/libs/flint/flint_sage.pyx +163 -0
  101. sage/libs/flint/flint_wrap.h +190 -0
  102. sage/libs/flint/fmpq.pxd +137 -0
  103. sage/libs/flint/fmpq_mat.pxd +105 -0
  104. sage/libs/flint/fmpq_mat_macros.pxd +10 -0
  105. sage/libs/flint/fmpq_mpoly.pxd +165 -0
  106. sage/libs/flint/fmpq_mpoly_factor.pxd +30 -0
  107. sage/libs/flint/fmpq_poly.pxd +241 -0
  108. sage/libs/flint/fmpq_poly_macros.pxd +9 -0
  109. sage/libs/flint/fmpq_poly_sage.cpython-312-x86_64-linux-gnu.so +0 -0
  110. sage/libs/flint/fmpq_poly_sage.pxd +31 -0
  111. sage/libs/flint/fmpq_poly_sage.pyx +48 -0
  112. sage/libs/flint/fmpq_vec.pxd +27 -0
  113. sage/libs/flint/fmpz.pxd +256 -0
  114. sage/libs/flint/fmpz_extras.pxd +32 -0
  115. sage/libs/flint/fmpz_factor.pxd +42 -0
  116. sage/libs/flint/fmpz_factor_sage.cpython-312-x86_64-linux-gnu.so +0 -0
  117. sage/libs/flint/fmpz_factor_sage.pxd +4 -0
  118. sage/libs/flint/fmpz_factor_sage.pyx +29 -0
  119. sage/libs/flint/fmpz_lll.pxd +49 -0
  120. sage/libs/flint/fmpz_macros.pxd +8 -0
  121. sage/libs/flint/fmpz_mat.pxd +184 -0
  122. sage/libs/flint/fmpz_mat_macros.pxd +10 -0
  123. sage/libs/flint/fmpz_mod.pxd +46 -0
  124. sage/libs/flint/fmpz_mod_mat.pxd +71 -0
  125. sage/libs/flint/fmpz_mod_mpoly.pxd +161 -0
  126. sage/libs/flint/fmpz_mod_mpoly_factor.pxd +28 -0
  127. sage/libs/flint/fmpz_mod_poly.pxd +249 -0
  128. sage/libs/flint/fmpz_mod_poly_factor.pxd +46 -0
  129. sage/libs/flint/fmpz_mod_vec.pxd +27 -0
  130. sage/libs/flint/fmpz_mpoly.pxd +224 -0
  131. sage/libs/flint/fmpz_mpoly_factor.pxd +29 -0
  132. sage/libs/flint/fmpz_mpoly_q.pxd +57 -0
  133. sage/libs/flint/fmpz_poly.cpython-312-x86_64-linux-gnu.so +0 -0
  134. sage/libs/flint/fmpz_poly.pxd +407 -0
  135. sage/libs/flint/fmpz_poly.pyx +19 -0
  136. sage/libs/flint/fmpz_poly_factor.pxd +33 -0
  137. sage/libs/flint/fmpz_poly_macros.pxd +8 -0
  138. sage/libs/flint/fmpz_poly_mat.pxd +71 -0
  139. sage/libs/flint/fmpz_poly_q.pxd +55 -0
  140. sage/libs/flint/fmpz_poly_sage.cpython-312-x86_64-linux-gnu.so +0 -0
  141. sage/libs/flint/fmpz_poly_sage.pxd +20 -0
  142. sage/libs/flint/fmpz_poly_sage.pyx +500 -0
  143. sage/libs/flint/fmpz_vec.pxd +80 -0
  144. sage/libs/flint/fmpzi.pxd +52 -0
  145. sage/libs/flint/fq.pxd +97 -0
  146. sage/libs/flint/fq_default.pxd +84 -0
  147. sage/libs/flint/fq_default_mat.pxd +70 -0
  148. sage/libs/flint/fq_default_poly.pxd +97 -0
  149. sage/libs/flint/fq_default_poly_factor.pxd +39 -0
  150. sage/libs/flint/fq_embed.pxd +28 -0
  151. sage/libs/flint/fq_mat.pxd +83 -0
  152. sage/libs/flint/fq_nmod.pxd +95 -0
  153. sage/libs/flint/fq_nmod_embed.pxd +28 -0
  154. sage/libs/flint/fq_nmod_mat.pxd +83 -0
  155. sage/libs/flint/fq_nmod_mpoly.pxd +130 -0
  156. sage/libs/flint/fq_nmod_mpoly_factor.pxd +28 -0
  157. sage/libs/flint/fq_nmod_poly.pxd +202 -0
  158. sage/libs/flint/fq_nmod_poly_factor.pxd +47 -0
  159. sage/libs/flint/fq_nmod_vec.pxd +33 -0
  160. sage/libs/flint/fq_poly.pxd +204 -0
  161. sage/libs/flint/fq_poly_factor.pxd +47 -0
  162. sage/libs/flint/fq_vec.pxd +33 -0
  163. sage/libs/flint/fq_zech.pxd +99 -0
  164. sage/libs/flint/fq_zech_embed.pxd +28 -0
  165. sage/libs/flint/fq_zech_mat.pxd +78 -0
  166. sage/libs/flint/fq_zech_poly.pxd +198 -0
  167. sage/libs/flint/fq_zech_poly_factor.pxd +47 -0
  168. sage/libs/flint/fq_zech_vec.pxd +33 -0
  169. sage/libs/flint/gr.pxd +174 -0
  170. sage/libs/flint/gr_generic.pxd +215 -0
  171. sage/libs/flint/gr_mat.pxd +161 -0
  172. sage/libs/flint/gr_mpoly.pxd +68 -0
  173. sage/libs/flint/gr_poly.pxd +276 -0
  174. sage/libs/flint/gr_special.pxd +237 -0
  175. sage/libs/flint/gr_vec.pxd +120 -0
  176. sage/libs/flint/hypgeom.pxd +24 -0
  177. sage/libs/flint/long_extras.pxd +23 -0
  178. sage/libs/flint/mag.pxd +131 -0
  179. sage/libs/flint/mag_macros.pxd +8 -0
  180. sage/libs/flint/mpf_mat.pxd +36 -0
  181. sage/libs/flint/mpf_vec.pxd +34 -0
  182. sage/libs/flint/mpfr_mat.pxd +27 -0
  183. sage/libs/flint/mpfr_vec.pxd +25 -0
  184. sage/libs/flint/mpn_extras.pxd +41 -0
  185. sage/libs/flint/mpoly.pxd +72 -0
  186. sage/libs/flint/nf.pxd +19 -0
  187. sage/libs/flint/nf_elem.pxd +74 -0
  188. sage/libs/flint/nmod.pxd +35 -0
  189. sage/libs/flint/nmod_mat.pxd +104 -0
  190. sage/libs/flint/nmod_mpoly.pxd +144 -0
  191. sage/libs/flint/nmod_mpoly_factor.pxd +28 -0
  192. sage/libs/flint/nmod_poly.pxd +339 -0
  193. sage/libs/flint/nmod_poly_factor.pxd +44 -0
  194. sage/libs/flint/nmod_poly_linkage.pxi +710 -0
  195. sage/libs/flint/nmod_poly_mat.pxd +76 -0
  196. sage/libs/flint/nmod_vec.pxd +40 -0
  197. sage/libs/flint/ntl_interface.pxd +17 -0
  198. sage/libs/flint/padic.pxd +93 -0
  199. sage/libs/flint/padic_mat.pxd +64 -0
  200. sage/libs/flint/padic_poly.pxd +88 -0
  201. sage/libs/flint/partitions.pxd +23 -0
  202. sage/libs/flint/perm.pxd +26 -0
  203. sage/libs/flint/profiler.pxd +24 -0
  204. sage/libs/flint/qadic.pxd +77 -0
  205. sage/libs/flint/qfb.pxd +44 -0
  206. sage/libs/flint/qqbar.pxd +172 -0
  207. sage/libs/flint/qsieve.cpython-312-x86_64-linux-gnu.so +0 -0
  208. sage/libs/flint/qsieve.pxd +41 -0
  209. sage/libs/flint/qsieve.pyx +21 -0
  210. sage/libs/flint/qsieve_sage.cpython-312-x86_64-linux-gnu.so +0 -0
  211. sage/libs/flint/qsieve_sage.pyx +67 -0
  212. sage/libs/flint/thread_pool.pxd +25 -0
  213. sage/libs/flint/types.pxd +2076 -0
  214. sage/libs/flint/ulong_extras.cpython-312-x86_64-linux-gnu.so +0 -0
  215. sage/libs/flint/ulong_extras.pxd +141 -0
  216. sage/libs/flint/ulong_extras.pyx +21 -0
  217. sage/libs/flint/ulong_extras_sage.cpython-312-x86_64-linux-gnu.so +0 -0
  218. sage/libs/flint/ulong_extras_sage.pyx +21 -0
  219. sage/matrix/all__sagemath_flint.py +1 -0
  220. sage/matrix/change_ring.cpython-312-x86_64-linux-gnu.so +0 -0
  221. sage/matrix/change_ring.pyx +43 -0
  222. sage/matrix/matrix_complex_ball_dense.cpython-312-x86_64-linux-gnu.so +0 -0
  223. sage/matrix/matrix_complex_ball_dense.pxd +14 -0
  224. sage/matrix/matrix_complex_ball_dense.pyx +973 -0
  225. sage/matrix/matrix_cyclo_dense.cpython-312-x86_64-linux-gnu.so +0 -0
  226. sage/matrix/matrix_cyclo_dense.pxd +16 -0
  227. sage/matrix/matrix_cyclo_dense.pyx +1761 -0
  228. sage/matrix/matrix_integer_dense.cpython-312-x86_64-linux-gnu.so +0 -0
  229. sage/matrix/matrix_integer_dense.pxd +32 -0
  230. sage/matrix/matrix_integer_dense.pyx +5801 -0
  231. sage/matrix/matrix_integer_dense_hnf.py +1294 -0
  232. sage/matrix/matrix_integer_dense_saturation.py +346 -0
  233. sage/matrix/matrix_integer_sparse.cpython-312-x86_64-linux-gnu.so +0 -0
  234. sage/matrix/matrix_integer_sparse.pxd +9 -0
  235. sage/matrix/matrix_integer_sparse.pyx +1090 -0
  236. sage/matrix/matrix_rational_dense.cpython-312-x86_64-linux-gnu.so +0 -0
  237. sage/matrix/matrix_rational_dense.pxd +23 -0
  238. sage/matrix/matrix_rational_dense.pyx +2995 -0
  239. sage/matrix/matrix_rational_sparse.cpython-312-x86_64-linux-gnu.so +0 -0
  240. sage/matrix/matrix_rational_sparse.pxd +11 -0
  241. sage/matrix/matrix_rational_sparse.pyx +789 -0
  242. sage/matrix/misc_flint.cpython-312-x86_64-linux-gnu.so +0 -0
  243. sage/matrix/misc_flint.pyx +109 -0
  244. sage/modular/all__sagemath_flint.py +1 -0
  245. sage/modular/modform/all__sagemath_flint.py +1 -0
  246. sage/modular/modform/eis_series_cython.cpython-312-x86_64-linux-gnu.so +0 -0
  247. sage/modular/modform/eis_series_cython.pyx +226 -0
  248. sage/modular/modsym/all__sagemath_flint.py +1 -0
  249. sage/modular/modsym/apply.cpython-312-x86_64-linux-gnu.so +0 -0
  250. sage/modular/modsym/apply.pxd +6 -0
  251. sage/modular/modsym/apply.pyx +113 -0
  252. sage/modular/modsym/heilbronn.cpython-312-x86_64-linux-gnu.so +0 -0
  253. sage/modular/modsym/heilbronn.pyx +966 -0
  254. sage/modular/pollack_stevens/all__sagemath_flint.py +1 -0
  255. sage/modular/pollack_stevens/dist.cpython-312-x86_64-linux-gnu.so +0 -0
  256. sage/modular/pollack_stevens/dist.pxd +38 -0
  257. sage/modular/pollack_stevens/dist.pyx +1439 -0
  258. sage/quivers/algebra.py +691 -0
  259. sage/quivers/algebra_elements.cpython-312-x86_64-linux-gnu.so +0 -0
  260. sage/quivers/algebra_elements.pxd +97 -0
  261. sage/quivers/algebra_elements.pxi +1324 -0
  262. sage/quivers/algebra_elements.pyx +1424 -0
  263. sage/quivers/all.py +1 -0
  264. sage/quivers/ar_quiver.py +917 -0
  265. sage/quivers/homspace.py +640 -0
  266. sage/quivers/morphism.py +1282 -0
  267. sage/quivers/path_semigroup.py +1155 -0
  268. sage/quivers/paths.cpython-312-x86_64-linux-gnu.so +0 -0
  269. sage/quivers/paths.pxd +13 -0
  270. sage/quivers/paths.pyx +809 -0
  271. sage/quivers/representation.py +2975 -0
  272. sage/rings/all__sagemath_flint.py +37 -0
  273. sage/rings/cif.py +4 -0
  274. sage/rings/complex_arb.cpython-312-x86_64-linux-gnu.so +0 -0
  275. sage/rings/complex_arb.pxd +29 -0
  276. sage/rings/complex_arb.pyx +5176 -0
  277. sage/rings/complex_interval.cpython-312-x86_64-linux-gnu.so +0 -0
  278. sage/rings/complex_interval.pxd +30 -0
  279. sage/rings/complex_interval.pyx +2475 -0
  280. sage/rings/complex_interval_field.py +711 -0
  281. sage/rings/convert/all.py +1 -0
  282. sage/rings/convert/mpfi.cpython-312-x86_64-linux-gnu.so +0 -0
  283. sage/rings/convert/mpfi.pxd +6 -0
  284. sage/rings/convert/mpfi.pyx +576 -0
  285. sage/rings/factorint_flint.cpython-312-x86_64-linux-gnu.so +0 -0
  286. sage/rings/factorint_flint.pyx +99 -0
  287. sage/rings/fraction_field_FpT.cpython-312-x86_64-linux-gnu.so +0 -0
  288. sage/rings/fraction_field_FpT.pxd +28 -0
  289. sage/rings/fraction_field_FpT.pyx +2043 -0
  290. sage/rings/imaginary_unit.py +5 -0
  291. sage/rings/monomials.py +73 -0
  292. sage/rings/number_field/S_unit_solver.py +2870 -0
  293. sage/rings/number_field/all__sagemath_flint.py +7 -0
  294. sage/rings/number_field/bdd_height.py +664 -0
  295. sage/rings/number_field/class_group.py +762 -0
  296. sage/rings/number_field/galois_group.py +1307 -0
  297. sage/rings/number_field/homset.py +612 -0
  298. sage/rings/number_field/maps.py +687 -0
  299. sage/rings/number_field/morphism.py +272 -0
  300. sage/rings/number_field/number_field.py +12820 -0
  301. sage/rings/number_field/number_field_element.cpython-312-x86_64-linux-gnu.so +0 -0
  302. sage/rings/number_field/number_field_element.pxd +59 -0
  303. sage/rings/number_field/number_field_element.pyx +5735 -0
  304. sage/rings/number_field/number_field_element_quadratic.cpython-312-x86_64-linux-gnu.so +0 -0
  305. sage/rings/number_field/number_field_element_quadratic.pxd +34 -0
  306. sage/rings/number_field/number_field_element_quadratic.pyx +3185 -0
  307. sage/rings/number_field/number_field_ideal_rel.py +925 -0
  308. sage/rings/number_field/number_field_morphisms.cpython-312-x86_64-linux-gnu.so +0 -0
  309. sage/rings/number_field/number_field_morphisms.pyx +781 -0
  310. sage/rings/number_field/number_field_rel.py +2734 -0
  311. sage/rings/number_field/order.py +2981 -0
  312. sage/rings/number_field/order_ideal.py +804 -0
  313. sage/rings/number_field/selmer_group.py +715 -0
  314. sage/rings/number_field/small_primes_of_degree_one.py +242 -0
  315. sage/rings/number_field/splitting_field.py +606 -0
  316. sage/rings/number_field/structure.py +380 -0
  317. sage/rings/number_field/unit_group.py +721 -0
  318. sage/rings/padics/all__sagemath_flint.py +3 -0
  319. sage/rings/polynomial/all__sagemath_flint.py +1 -0
  320. sage/rings/polynomial/complex_roots.py +312 -0
  321. sage/rings/polynomial/evaluation_flint.cpython-312-x86_64-linux-gnu.so +0 -0
  322. sage/rings/polynomial/evaluation_flint.pxd +7 -0
  323. sage/rings/polynomial/evaluation_flint.pyx +68 -0
  324. sage/rings/polynomial/hilbert.cpython-312-x86_64-linux-gnu.so +0 -0
  325. sage/rings/polynomial/hilbert.pyx +602 -0
  326. sage/rings/polynomial/polynomial_complex_arb.cpython-312-x86_64-linux-gnu.so +0 -0
  327. sage/rings/polynomial/polynomial_complex_arb.pxd +7 -0
  328. sage/rings/polynomial/polynomial_complex_arb.pyx +963 -0
  329. sage/rings/polynomial/polynomial_integer_dense_flint.cpython-312-x86_64-linux-gnu.so +0 -0
  330. sage/rings/polynomial/polynomial_integer_dense_flint.pxd +13 -0
  331. sage/rings/polynomial/polynomial_integer_dense_flint.pyx +1881 -0
  332. sage/rings/polynomial/polynomial_number_field.cpython-312-x86_64-linux-gnu.so +0 -0
  333. sage/rings/polynomial/polynomial_number_field.pyx +345 -0
  334. sage/rings/polynomial/polynomial_rational_flint.cpython-312-x86_64-linux-gnu.so +0 -0
  335. sage/rings/polynomial/polynomial_rational_flint.pxd +20 -0
  336. sage/rings/polynomial/polynomial_rational_flint.pyx +2598 -0
  337. sage/rings/polynomial/polynomial_zmod_flint.cpython-312-x86_64-linux-gnu.so +0 -0
  338. sage/rings/polynomial/polynomial_zmod_flint.pxd +20 -0
  339. sage/rings/polynomial/polynomial_zmod_flint.pyx +1063 -0
  340. sage/rings/polynomial/real_roots.cpython-312-x86_64-linux-gnu.so +0 -0
  341. sage/rings/polynomial/real_roots.pxd +81 -0
  342. sage/rings/polynomial/real_roots.pyx +4704 -0
  343. sage/rings/polynomial/refine_root.cpython-312-x86_64-linux-gnu.so +0 -0
  344. sage/rings/polynomial/refine_root.pyx +142 -0
  345. sage/rings/polynomial/weil/all.py +4 -0
  346. sage/rings/polynomial/weil/power_sums.h +46 -0
  347. sage/rings/polynomial/weil/weil_polynomials.cpython-312-x86_64-linux-gnu.so +0 -0
  348. sage/rings/polynomial/weil/weil_polynomials.pyx +596 -0
  349. sage/rings/qqbar.py +9025 -0
  350. sage/rings/real_arb.cpython-312-x86_64-linux-gnu.so +0 -0
  351. sage/rings/real_arb.pxd +21 -0
  352. sage/rings/real_arb.pyx +4065 -0
  353. sage/rings/real_interval_absolute.cpython-312-x86_64-linux-gnu.so +0 -0
  354. sage/rings/real_interval_absolute.pyx +1073 -0
  355. sage/rings/real_mpfi.cpython-312-x86_64-linux-gnu.so +0 -0
  356. sage/rings/real_mpfi.pyx +5428 -0
  357. sage/schemes/all__sagemath_flint.py +1 -0
  358. sage/schemes/elliptic_curves/all__sagemath_flint.py +1 -0
  359. sage/schemes/elliptic_curves/descent_two_isogeny.cpython-312-x86_64-linux-gnu.so +0 -0
  360. sage/schemes/elliptic_curves/descent_two_isogeny.pyx +1387 -0
  361. sage/schemes/elliptic_curves/descent_two_isogeny_pari.pxd +5 -0
@@ -0,0 +1,346 @@
1
+ # sage_setup: distribution = sagemath-flint
2
+ """
3
+ Saturation over ZZ
4
+ """
5
+
6
+ from copy import copy
7
+
8
+ from sage.arith.misc import binomial, GCD as gcd
9
+ from sage.matrix import matrix_integer_dense_hnf
10
+ from sage.matrix.constructor import identity_matrix, random_matrix
11
+ from sage.misc.randstate import current_randstate
12
+ from sage.misc.verbose import verbose
13
+ from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF
14
+ from sage.rings.integer_ring import ZZ
15
+
16
+
17
+ def p_saturation(A, p, proof=True):
18
+ """
19
+ INPUT:
20
+
21
+ - ``A`` -- a matrix over ZZ
22
+ - ``p`` -- a prime
23
+ - ``proof`` -- boolean (default: ``True``)
24
+
25
+ OUTPUT:
26
+
27
+ The p-saturation of the matrix A, i.e., a new matrix in Hermite form
28
+ whose row span a ZZ-module that is p-saturated.
29
+
30
+ EXAMPLES::
31
+
32
+ sage: from sage.matrix.matrix_integer_dense_saturation import p_saturation
33
+ sage: A = matrix(ZZ, 2, 2, [3,2,3,4]); B = matrix(ZZ, 2,3,[1,2,3,4,5,6])
34
+ sage: A.det()
35
+ 6
36
+ sage: C = A*B; C
37
+ [11 16 21]
38
+ [19 26 33]
39
+ sage: C2 = p_saturation(C, 2); C2
40
+ [ 1 8 15]
41
+ [ 0 9 18]
42
+ sage: C2.index_in_saturation()
43
+ 9
44
+ sage: C3 = p_saturation(C, 3); C3
45
+ [ 1 0 -1]
46
+ [ 0 2 4]
47
+ sage: C3.index_in_saturation()
48
+ 2
49
+ """
50
+ tm = verbose("%s-saturating a %sx%s matrix" % (p, A.nrows(), A.ncols()))
51
+ H = A.hermite_form(include_zero_rows=False, proof=proof)
52
+ while True:
53
+ if p == 2:
54
+ A = H.change_ring(GF(p))
55
+ else:
56
+ try:
57
+ # Faster than change_ring
58
+ A = H._reduce(p)
59
+ except (OverflowError, ImportError):
60
+ # fall back to generic GF(p) matrices
61
+ A = H.change_ring(GF(p))
62
+ assert A.nrows() <= A.ncols()
63
+ K = A.kernel()
64
+ if K.dimension() == 0:
65
+ verbose("done saturating", tm)
66
+ return H
67
+ B = K.basis_matrix().lift()
68
+ C = ((B * H) / p).change_ring(ZZ)
69
+ H = H.stack(C).hermite_form(include_zero_rows=False, proof=proof)
70
+ verbose("done saturating", tm)
71
+
72
+
73
+ def random_sublist_of_size(k, n):
74
+ """
75
+ INPUT:
76
+
77
+ - ``k`` -- integer
78
+ - ``n`` -- integer
79
+
80
+ OUTPUT: a randomly chosen sublist of ``range(k)`` of size `n`
81
+
82
+ EXAMPLES::
83
+
84
+ sage: import sage.matrix.matrix_integer_dense_saturation as s
85
+ sage: l = s.random_sublist_of_size(10, 3)
86
+ sage: len(l)
87
+ 3
88
+ sage: l_check = [-1] + l + [10]
89
+ sage: all(l_check[i] < l_check[i+1] for i in range(4))
90
+ True
91
+ sage: l = s.random_sublist_of_size(10, 7)
92
+ sage: len(l)
93
+ 7
94
+ sage: l_check = [-1] + l + [10]
95
+ sage: all(l_check[i] < l_check[i+1] for i in range(8))
96
+ True
97
+ """
98
+ if n > k:
99
+ raise ValueError("n must be <= len(v)")
100
+ if n == k:
101
+ return list(range(k))
102
+ if n >= k // 2 + 5:
103
+ # use complement
104
+ w = random_sublist_of_size(k, k - n)
105
+ m = set(w)
106
+ w = [z for z in range(k) if z not in m]
107
+ assert len(w) == n
108
+ return w
109
+
110
+ randrange = current_randstate().python_random().randrange
111
+
112
+ w = set()
113
+ while len(w) < n:
114
+ z = randrange(k)
115
+ if z not in w:
116
+ w.add(z)
117
+ return sorted(w)
118
+
119
+
120
+ def solve_system_with_difficult_last_row(B, A):
121
+ """
122
+ Solve the matrix equation ``B*Z = A`` when the last row of `B`
123
+ contains huge entries.
124
+
125
+ INPUT:
126
+
127
+ - ``B`` -- a square n x n nonsingular matrix with painful big bottom row
128
+ - ``A`` -- an n x k matrix
129
+
130
+ OUTPUT: the unique solution to ``B*Z = As``
131
+
132
+ EXAMPLES::
133
+
134
+ sage: from sage.matrix.matrix_integer_dense_saturation import solve_system_with_difficult_last_row
135
+ sage: B = matrix(ZZ, 3, [1,2,3, 3,-1,2,939239082,39202803080,2939028038402834]); A = matrix(ZZ,3,2,[1,2,4,3,-1,0])
136
+ sage: X = solve_system_with_difficult_last_row(B, A); X
137
+ [ 290668794698843/226075992027744 468068726971/409557956572]
138
+ [-226078357385539/1582531944194208 1228691305937/2866905696004]
139
+ [ 2365357795/1582531944194208 -17436221/2866905696004]
140
+ sage: B*X == A
141
+ True
142
+ """
143
+ # See the comments in the function of the same name in matrix_integer_dense_hnf.py.
144
+ # This function is just a generalization of that one to A a matrix.
145
+ C = copy(B)
146
+ while True:
147
+ C[C.nrows()-1] = random_matrix(ZZ,1,C.ncols()).row(0)
148
+ try:
149
+ X = C.solve_right(A)
150
+ except ValueError:
151
+ verbose("Try difficult solve again with different random vector")
152
+ else:
153
+ break
154
+ D = B.matrix_from_rows(range(C.nrows()-1))
155
+ N = D._rational_kernel_flint()
156
+ if N.ncols() != 1:
157
+ verbose("Difficult solve quickly failed. Using direct approach.")
158
+ return B.solve_right(A)
159
+
160
+ tm = verbose("Recover correct linear combinations")
161
+ k = N.matrix_from_columns([0])
162
+
163
+ # The sought for solution Z to B*Z = A is some linear combination
164
+ # Z = X + alpha*k
165
+ # Let w be the last row of B; then Z satisfies
166
+ # w * Z = A'
167
+ # where A' is the last row of A. Thus
168
+ # w * (X + alpha*k) = A'
169
+ # so w * X + alpha*w*k = A'
170
+ # so alpha*w*k = A' - w*X.
171
+ w = B[-1] # last row of B
172
+ A_prime = A[-1] # last row of A
173
+ lhs = w*k
174
+ rhs = A_prime - w * X
175
+
176
+ if lhs[0] == 0:
177
+ verbose("Difficult solve quickly failed. Using direct approach.")
178
+ return B.solve_right(A)
179
+
180
+ for i in range(X.ncols()):
181
+ alpha = rhs[i] / lhs[0]
182
+ X.set_column(i, (X.matrix_from_columns([i]) + alpha*k).list())
183
+ verbose("Done getting linear combinations.", tm)
184
+ return X
185
+
186
+
187
+ def saturation(A, proof=True, p=0, max_dets=5):
188
+ r"""
189
+ Compute a saturation matrix of `A`.
190
+
191
+ INPUT:
192
+
193
+ - ``A`` -- a matrix over `\ZZ`
194
+ - ``proof`` -- boolean (default: ``True``)
195
+ - ``p`` -- integer (default: 0); if not 0 only guarantees that output is
196
+ `p`-saturated
197
+ - ``max_dets`` -- integer (default: 4); max number of dets of submatrices to
198
+ compute
199
+
200
+ OUTPUT: matrix; saturation of the matrix `A`
201
+
202
+ EXAMPLES::
203
+
204
+ sage: from sage.matrix.matrix_integer_dense_saturation import saturation
205
+ sage: A = matrix(ZZ, 2, 2, [3,2,3,4]); B = matrix(ZZ, 2,3,[1,2,3,4,5,6]); C = A*B
206
+ sage: C
207
+ [11 16 21]
208
+ [19 26 33]
209
+ sage: C.index_in_saturation()
210
+ 18
211
+ sage: S = saturation(C); S
212
+ [11 16 21]
213
+ [-2 -3 -4]
214
+ sage: S.index_in_saturation()
215
+ 1
216
+ sage: saturation(C, proof=False)
217
+ [11 16 21]
218
+ [-2 -3 -4]
219
+ sage: saturation(C, p=2)
220
+ [11 16 21]
221
+ [-2 -3 -4]
222
+ sage: saturation(C, p=2, max_dets=1)
223
+ [11 16 21]
224
+ [-2 -3 -4]
225
+ """
226
+ # Find a submatrix of full rank and instead saturate that matrix.
227
+ r = A.rank()
228
+ if A.is_square() and r == A.nrows():
229
+ return identity_matrix(ZZ, r)
230
+ if A.nrows() > r:
231
+ P = []
232
+ while len(P) < r:
233
+ P = matrix_integer_dense_hnf.probable_pivot_rows(A)
234
+ A = A.matrix_from_rows(P)
235
+
236
+ # Factor out all common factors from all rows, just in case.
237
+ A = copy(A)
238
+ A._factor_out_common_factors_from_each_row()
239
+
240
+ if A.nrows() <= 1:
241
+ return A
242
+
243
+ A, zero_cols = A._delete_zero_columns()
244
+
245
+ if max_dets > 0:
246
+ # Take the GCD of at most num_dets randomly chosen determinants.
247
+ nr = A.nrows()
248
+ nc = A.ncols()
249
+ d = 0
250
+ trials = min(binomial(nc, nr), max_dets)
251
+ already_tried = []
252
+ while len(already_tried) < trials:
253
+ v = random_sublist_of_size(nc, nr)
254
+ tm = verbose('saturation -- checking det condition on submatrix')
255
+ d = gcd(d, A.matrix_from_columns(v).determinant(proof=proof))
256
+ verbose('saturation -- got det down to %s' % d, tm)
257
+ if gcd(d, p) == 1:
258
+ return A._insert_zero_columns(zero_cols)
259
+ already_tried.append(v)
260
+
261
+ if gcd(d, p) == 1:
262
+ # already p-saturated
263
+ return A._insert_zero_columns(zero_cols)
264
+
265
+ # Factor and p-saturate at each p.
266
+ # This is not a good algorithm, because all the HNF's in it are really slow!
267
+ #
268
+ #tm = verbose('factoring gcd %s of determinants'%d)
269
+ #limit = 2**31-1
270
+ #F = d.factor(limit = limit)
271
+ #D = [p for p, e in F if p <= limit]
272
+ #B = [n for n, e in F if n > limit] # all big factors -- there will only be at most one
273
+ #assert len(B) <= 1
274
+ #C = B[0]
275
+ #for p in D:
276
+ # A = p_saturation(A, p=p, proof=proof)
277
+
278
+ # This is a really simple but powerful algorithm.
279
+ # FACT: If A is a matrix of full rank, then hnf(transpose(A))^(-1)*A is a saturation of A.
280
+ # To make this practical we use solve_system_with_difficult_last_row, since the
281
+ # last column of HNF's are typically the only really big ones.
282
+ B = A.transpose().hermite_form(include_zero_rows=False, proof=proof)
283
+ B = B.transpose()
284
+
285
+ # Now compute B^(-1) * A
286
+ C = solve_system_with_difficult_last_row(B, A)
287
+ return C.change_ring(ZZ)._insert_zero_columns(zero_cols)
288
+
289
+
290
+ def index_in_saturation(A, proof=True):
291
+ r"""
292
+ The index of A in its saturation.
293
+
294
+ INPUT:
295
+
296
+ - ``A`` -- matrix over `\ZZ`
297
+
298
+ - ``proof`` -- boolean (``True`` or ``False``)
299
+
300
+ OUTPUT: integer
301
+
302
+ EXAMPLES::
303
+
304
+ sage: from sage.matrix.matrix_integer_dense_saturation import index_in_saturation
305
+ sage: A = matrix(ZZ, 2, 2, [3,2,3,4]); B = matrix(ZZ, 2,3,[1,2,3,4,5,6]); C = A*B; C
306
+ [11 16 21]
307
+ [19 26 33]
308
+ sage: index_in_saturation(C)
309
+ 18
310
+ sage: W = C.row_space()
311
+ sage: S = W.saturation()
312
+ sage: W.index_in(S)
313
+ 18
314
+
315
+ For any zero matrix the index in its saturation is 1 (see :issue:`13034`)::
316
+
317
+ sage: m = matrix(ZZ, 3)
318
+ sage: m
319
+ [0 0 0]
320
+ [0 0 0]
321
+ [0 0 0]
322
+ sage: m.index_in_saturation()
323
+ 1
324
+ sage: m = matrix(ZZ, 2, 3)
325
+ sage: m
326
+ [0 0 0]
327
+ [0 0 0]
328
+ sage: m.index_in_saturation()
329
+ 1
330
+
331
+ TESTS::
332
+
333
+ sage: zero = matrix(ZZ, [[]])
334
+ sage: zero.index_in_saturation()
335
+ 1
336
+ """
337
+ r = A.rank()
338
+ if r == 0:
339
+ return ZZ.one()
340
+ if r < A.nrows():
341
+ A = A.hermite_form(proof=proof, include_zero_rows=False)
342
+ if A.is_square():
343
+ return abs(A.determinant(proof=proof))
344
+ A = A.transpose()
345
+ A = A.hermite_form(proof=proof, include_zero_rows=False)
346
+ return abs(A.determinant(proof=proof))
@@ -0,0 +1,9 @@
1
+ # sage_setup: distribution = sagemath-flint
2
+ from sage.modules.vector_integer_sparse cimport mpz_vector
3
+ from sage.ext.mod_int cimport mod_int
4
+ from sage.matrix.matrix_sparse cimport Matrix_sparse
5
+
6
+ cdef class Matrix_integer_sparse(Matrix_sparse):
7
+ cdef mpz_vector* _matrix
8
+
9
+ cdef _mod_int_c(self, mod_int p)