passagemath-flint 10.6.1rc10__cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.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 (360) hide show
  1. passagemath_flint-10.6.1rc10.dist-info/METADATA +122 -0
  2. passagemath_flint-10.6.1rc10.dist-info/RECORD +360 -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-3701249d.so.21.0.0 +0 -0
  6. passagemath_flint.libs/libgf2x-fbd36f80.so.3.0.0 +0 -0
  7. passagemath_flint.libs/libgfortran-8a9a71bc.so.5.0.0 +0 -0
  8. passagemath_flint.libs/libgmp-93ebf16a.so.10.5.0 +0 -0
  9. passagemath_flint.libs/libgsl-e3525837.so.28.0.0 +0 -0
  10. passagemath_flint.libs/libmpfi-ad12a86d.so.0.0.0 +0 -0
  11. passagemath_flint.libs/libmpfr-e0f11cf3.so.6.2.1 +0 -0
  12. passagemath_flint.libs/libntl-1004113e.so.44.0.1 +0 -0
  13. passagemath_flint.libs/libopenblasp-r0-4c5b64b1.3.29.so +0 -0
  14. sage/all__sagemath_flint.py +29 -0
  15. sage/combinat/all__sagemath_flint.py +1 -0
  16. sage/combinat/posets/all__sagemath_flint.py +1 -0
  17. sage/combinat/posets/hasse_cython_flint.cpython-312-aarch64-linux-gnu.so +0 -0
  18. sage/combinat/posets/hasse_cython_flint.pyx +194 -0
  19. sage/data_structures/all__sagemath_flint.py +1 -0
  20. sage/data_structures/bounded_integer_sequences.cpython-312-aarch64-linux-gnu.so +0 -0
  21. sage/data_structures/bounded_integer_sequences.pxd +62 -0
  22. sage/data_structures/bounded_integer_sequences.pyx +1418 -0
  23. sage/graphs/all__sagemath_flint.py +1 -0
  24. sage/graphs/chrompoly.cpython-312-aarch64-linux-gnu.so +0 -0
  25. sage/graphs/chrompoly.pyx +555 -0
  26. sage/graphs/matchpoly.cpython-312-aarch64-linux-gnu.so +0 -0
  27. sage/graphs/matchpoly.pyx +412 -0
  28. sage/libs/all__sagemath_flint.py +17 -0
  29. sage/libs/arb/__init__.py +1 -0
  30. sage/libs/arb/acb.pxd +154 -0
  31. sage/libs/arb/acb_calc.pxd +9 -0
  32. sage/libs/arb/acb_elliptic.pxd +25 -0
  33. sage/libs/arb/acb_hypgeom.pxd +74 -0
  34. sage/libs/arb/acb_mat.pxd +62 -0
  35. sage/libs/arb/acb_modular.pxd +17 -0
  36. sage/libs/arb/acb_poly.pxd +216 -0
  37. sage/libs/arb/arb.pxd +240 -0
  38. sage/libs/arb/arb_fmpz_poly.pxd +21 -0
  39. sage/libs/arb/arb_hypgeom.pxd +83 -0
  40. sage/libs/arb/arb_wrap.h +34 -0
  41. sage/libs/arb/arf.pxd +131 -0
  42. sage/libs/arb/arith.cpython-312-aarch64-linux-gnu.so +0 -0
  43. sage/libs/arb/arith.pyx +87 -0
  44. sage/libs/arb/bernoulli.pxd +6 -0
  45. sage/libs/arb/mag.pxd +77 -0
  46. sage/libs/arb/types.pxd +37 -0
  47. sage/libs/flint/__init__.py +1 -0
  48. sage/libs/flint/acb.pxd +270 -0
  49. sage/libs/flint/acb_calc.pxd +22 -0
  50. sage/libs/flint/acb_dft.pxd +51 -0
  51. sage/libs/flint/acb_dirichlet.pxd +112 -0
  52. sage/libs/flint/acb_elliptic.pxd +42 -0
  53. sage/libs/flint/acb_hypgeom.pxd +169 -0
  54. sage/libs/flint/acb_macros.pxd +9 -0
  55. sage/libs/flint/acb_mat.pxd +136 -0
  56. sage/libs/flint/acb_mat_macros.pxd +10 -0
  57. sage/libs/flint/acb_modular.pxd +62 -0
  58. sage/libs/flint/acb_poly.pxd +251 -0
  59. sage/libs/flint/acb_poly_macros.pxd +8 -0
  60. sage/libs/flint/acb_theta.pxd +124 -0
  61. sage/libs/flint/acf.pxd +32 -0
  62. sage/libs/flint/aprcl.pxd +84 -0
  63. sage/libs/flint/arb.pxd +382 -0
  64. sage/libs/flint/arb_calc.pxd +31 -0
  65. sage/libs/flint/arb_fmpz_poly.pxd +34 -0
  66. sage/libs/flint/arb_fpwrap.pxd +215 -0
  67. sage/libs/flint/arb_hypgeom.pxd +147 -0
  68. sage/libs/flint/arb_macros.pxd +9 -0
  69. sage/libs/flint/arb_mat.pxd +140 -0
  70. sage/libs/flint/arb_mat_macros.pxd +10 -0
  71. sage/libs/flint/arb_poly.pxd +237 -0
  72. sage/libs/flint/arf.pxd +167 -0
  73. sage/libs/flint/arith.cpython-312-aarch64-linux-gnu.so +0 -0
  74. sage/libs/flint/arith.pxd +76 -0
  75. sage/libs/flint/arith.pyx +77 -0
  76. sage/libs/flint/arith_sage.cpython-312-aarch64-linux-gnu.so +0 -0
  77. sage/libs/flint/arith_sage.pyx +308 -0
  78. sage/libs/flint/bernoulli.pxd +28 -0
  79. sage/libs/flint/bool_mat.pxd +52 -0
  80. sage/libs/flint/ca.pxd +203 -0
  81. sage/libs/flint/ca_ext.pxd +34 -0
  82. sage/libs/flint/ca_field.pxd +32 -0
  83. sage/libs/flint/ca_mat.pxd +117 -0
  84. sage/libs/flint/ca_poly.pxd +104 -0
  85. sage/libs/flint/ca_vec.pxd +46 -0
  86. sage/libs/flint/calcium.pxd +27 -0
  87. sage/libs/flint/d_mat.pxd +39 -0
  88. sage/libs/flint/d_vec.pxd +32 -0
  89. sage/libs/flint/dirichlet.pxd +57 -0
  90. sage/libs/flint/dlog.pxd +53 -0
  91. sage/libs/flint/double_extras.pxd +24 -0
  92. sage/libs/flint/double_interval.pxd +36 -0
  93. sage/libs/flint/fexpr.pxd +104 -0
  94. sage/libs/flint/fexpr_builtin.pxd +20 -0
  95. sage/libs/flint/fft.pxd +66 -0
  96. sage/libs/flint/flint.pxd +36 -0
  97. sage/libs/flint/flint_ntl_wrap.h +35 -0
  98. sage/libs/flint/flint_sage.cpython-312-aarch64-linux-gnu.so +0 -0
  99. sage/libs/flint/flint_sage.pyx +163 -0
  100. sage/libs/flint/flint_wrap.h +190 -0
  101. sage/libs/flint/fmpq.pxd +137 -0
  102. sage/libs/flint/fmpq_mat.pxd +105 -0
  103. sage/libs/flint/fmpq_mat_macros.pxd +10 -0
  104. sage/libs/flint/fmpq_mpoly.pxd +165 -0
  105. sage/libs/flint/fmpq_mpoly_factor.pxd +30 -0
  106. sage/libs/flint/fmpq_poly.pxd +241 -0
  107. sage/libs/flint/fmpq_poly_macros.pxd +9 -0
  108. sage/libs/flint/fmpq_poly_sage.cpython-312-aarch64-linux-gnu.so +0 -0
  109. sage/libs/flint/fmpq_poly_sage.pxd +31 -0
  110. sage/libs/flint/fmpq_poly_sage.pyx +48 -0
  111. sage/libs/flint/fmpq_vec.pxd +27 -0
  112. sage/libs/flint/fmpz.pxd +256 -0
  113. sage/libs/flint/fmpz_extras.pxd +32 -0
  114. sage/libs/flint/fmpz_factor.pxd +42 -0
  115. sage/libs/flint/fmpz_factor_sage.cpython-312-aarch64-linux-gnu.so +0 -0
  116. sage/libs/flint/fmpz_factor_sage.pxd +4 -0
  117. sage/libs/flint/fmpz_factor_sage.pyx +29 -0
  118. sage/libs/flint/fmpz_lll.pxd +49 -0
  119. sage/libs/flint/fmpz_macros.pxd +8 -0
  120. sage/libs/flint/fmpz_mat.pxd +184 -0
  121. sage/libs/flint/fmpz_mat_macros.pxd +10 -0
  122. sage/libs/flint/fmpz_mod.pxd +46 -0
  123. sage/libs/flint/fmpz_mod_mat.pxd +71 -0
  124. sage/libs/flint/fmpz_mod_mpoly.pxd +161 -0
  125. sage/libs/flint/fmpz_mod_mpoly_factor.pxd +28 -0
  126. sage/libs/flint/fmpz_mod_poly.pxd +249 -0
  127. sage/libs/flint/fmpz_mod_poly_factor.pxd +46 -0
  128. sage/libs/flint/fmpz_mod_vec.pxd +27 -0
  129. sage/libs/flint/fmpz_mpoly.pxd +224 -0
  130. sage/libs/flint/fmpz_mpoly_factor.pxd +29 -0
  131. sage/libs/flint/fmpz_mpoly_q.pxd +57 -0
  132. sage/libs/flint/fmpz_poly.cpython-312-aarch64-linux-gnu.so +0 -0
  133. sage/libs/flint/fmpz_poly.pxd +407 -0
  134. sage/libs/flint/fmpz_poly.pyx +19 -0
  135. sage/libs/flint/fmpz_poly_factor.pxd +33 -0
  136. sage/libs/flint/fmpz_poly_macros.pxd +8 -0
  137. sage/libs/flint/fmpz_poly_mat.pxd +71 -0
  138. sage/libs/flint/fmpz_poly_q.pxd +55 -0
  139. sage/libs/flint/fmpz_poly_sage.cpython-312-aarch64-linux-gnu.so +0 -0
  140. sage/libs/flint/fmpz_poly_sage.pxd +20 -0
  141. sage/libs/flint/fmpz_poly_sage.pyx +500 -0
  142. sage/libs/flint/fmpz_vec.pxd +80 -0
  143. sage/libs/flint/fmpzi.pxd +52 -0
  144. sage/libs/flint/fq.pxd +97 -0
  145. sage/libs/flint/fq_default.pxd +84 -0
  146. sage/libs/flint/fq_default_mat.pxd +70 -0
  147. sage/libs/flint/fq_default_poly.pxd +97 -0
  148. sage/libs/flint/fq_default_poly_factor.pxd +39 -0
  149. sage/libs/flint/fq_embed.pxd +28 -0
  150. sage/libs/flint/fq_mat.pxd +83 -0
  151. sage/libs/flint/fq_nmod.pxd +95 -0
  152. sage/libs/flint/fq_nmod_embed.pxd +28 -0
  153. sage/libs/flint/fq_nmod_mat.pxd +83 -0
  154. sage/libs/flint/fq_nmod_mpoly.pxd +130 -0
  155. sage/libs/flint/fq_nmod_mpoly_factor.pxd +28 -0
  156. sage/libs/flint/fq_nmod_poly.pxd +202 -0
  157. sage/libs/flint/fq_nmod_poly_factor.pxd +47 -0
  158. sage/libs/flint/fq_nmod_vec.pxd +33 -0
  159. sage/libs/flint/fq_poly.pxd +204 -0
  160. sage/libs/flint/fq_poly_factor.pxd +47 -0
  161. sage/libs/flint/fq_vec.pxd +33 -0
  162. sage/libs/flint/fq_zech.pxd +99 -0
  163. sage/libs/flint/fq_zech_embed.pxd +28 -0
  164. sage/libs/flint/fq_zech_mat.pxd +78 -0
  165. sage/libs/flint/fq_zech_poly.pxd +198 -0
  166. sage/libs/flint/fq_zech_poly_factor.pxd +47 -0
  167. sage/libs/flint/fq_zech_vec.pxd +33 -0
  168. sage/libs/flint/gr.pxd +174 -0
  169. sage/libs/flint/gr_generic.pxd +215 -0
  170. sage/libs/flint/gr_mat.pxd +161 -0
  171. sage/libs/flint/gr_mpoly.pxd +68 -0
  172. sage/libs/flint/gr_poly.pxd +276 -0
  173. sage/libs/flint/gr_special.pxd +237 -0
  174. sage/libs/flint/gr_vec.pxd +120 -0
  175. sage/libs/flint/hypgeom.pxd +24 -0
  176. sage/libs/flint/long_extras.pxd +23 -0
  177. sage/libs/flint/mag.pxd +131 -0
  178. sage/libs/flint/mag_macros.pxd +8 -0
  179. sage/libs/flint/mpf_mat.pxd +36 -0
  180. sage/libs/flint/mpf_vec.pxd +34 -0
  181. sage/libs/flint/mpfr_mat.pxd +27 -0
  182. sage/libs/flint/mpfr_vec.pxd +25 -0
  183. sage/libs/flint/mpn_extras.pxd +41 -0
  184. sage/libs/flint/mpoly.pxd +72 -0
  185. sage/libs/flint/nf.pxd +19 -0
  186. sage/libs/flint/nf_elem.pxd +74 -0
  187. sage/libs/flint/nmod.pxd +35 -0
  188. sage/libs/flint/nmod_mat.pxd +104 -0
  189. sage/libs/flint/nmod_mpoly.pxd +144 -0
  190. sage/libs/flint/nmod_mpoly_factor.pxd +28 -0
  191. sage/libs/flint/nmod_poly.pxd +339 -0
  192. sage/libs/flint/nmod_poly_factor.pxd +44 -0
  193. sage/libs/flint/nmod_poly_linkage.pxi +710 -0
  194. sage/libs/flint/nmod_poly_mat.pxd +76 -0
  195. sage/libs/flint/nmod_vec.pxd +40 -0
  196. sage/libs/flint/ntl_interface.pxd +17 -0
  197. sage/libs/flint/padic.pxd +93 -0
  198. sage/libs/flint/padic_mat.pxd +64 -0
  199. sage/libs/flint/padic_poly.pxd +88 -0
  200. sage/libs/flint/partitions.pxd +23 -0
  201. sage/libs/flint/perm.pxd +26 -0
  202. sage/libs/flint/profiler.pxd +24 -0
  203. sage/libs/flint/qadic.pxd +77 -0
  204. sage/libs/flint/qfb.pxd +44 -0
  205. sage/libs/flint/qqbar.pxd +172 -0
  206. sage/libs/flint/qsieve.cpython-312-aarch64-linux-gnu.so +0 -0
  207. sage/libs/flint/qsieve.pxd +41 -0
  208. sage/libs/flint/qsieve.pyx +21 -0
  209. sage/libs/flint/qsieve_sage.cpython-312-aarch64-linux-gnu.so +0 -0
  210. sage/libs/flint/qsieve_sage.pyx +67 -0
  211. sage/libs/flint/thread_pool.pxd +25 -0
  212. sage/libs/flint/types.pxd +2076 -0
  213. sage/libs/flint/ulong_extras.cpython-312-aarch64-linux-gnu.so +0 -0
  214. sage/libs/flint/ulong_extras.pxd +141 -0
  215. sage/libs/flint/ulong_extras.pyx +21 -0
  216. sage/libs/flint/ulong_extras_sage.cpython-312-aarch64-linux-gnu.so +0 -0
  217. sage/libs/flint/ulong_extras_sage.pyx +21 -0
  218. sage/matrix/all__sagemath_flint.py +1 -0
  219. sage/matrix/change_ring.cpython-312-aarch64-linux-gnu.so +0 -0
  220. sage/matrix/change_ring.pyx +43 -0
  221. sage/matrix/matrix_complex_ball_dense.cpython-312-aarch64-linux-gnu.so +0 -0
  222. sage/matrix/matrix_complex_ball_dense.pxd +14 -0
  223. sage/matrix/matrix_complex_ball_dense.pyx +973 -0
  224. sage/matrix/matrix_cyclo_dense.cpython-312-aarch64-linux-gnu.so +0 -0
  225. sage/matrix/matrix_cyclo_dense.pxd +16 -0
  226. sage/matrix/matrix_cyclo_dense.pyx +1761 -0
  227. sage/matrix/matrix_integer_dense.cpython-312-aarch64-linux-gnu.so +0 -0
  228. sage/matrix/matrix_integer_dense.pxd +32 -0
  229. sage/matrix/matrix_integer_dense.pyx +5801 -0
  230. sage/matrix/matrix_integer_dense_hnf.py +1294 -0
  231. sage/matrix/matrix_integer_dense_saturation.py +346 -0
  232. sage/matrix/matrix_integer_sparse.cpython-312-aarch64-linux-gnu.so +0 -0
  233. sage/matrix/matrix_integer_sparse.pxd +9 -0
  234. sage/matrix/matrix_integer_sparse.pyx +1090 -0
  235. sage/matrix/matrix_rational_dense.cpython-312-aarch64-linux-gnu.so +0 -0
  236. sage/matrix/matrix_rational_dense.pxd +23 -0
  237. sage/matrix/matrix_rational_dense.pyx +2995 -0
  238. sage/matrix/matrix_rational_sparse.cpython-312-aarch64-linux-gnu.so +0 -0
  239. sage/matrix/matrix_rational_sparse.pxd +11 -0
  240. sage/matrix/matrix_rational_sparse.pyx +789 -0
  241. sage/matrix/misc_flint.cpython-312-aarch64-linux-gnu.so +0 -0
  242. sage/matrix/misc_flint.pyx +109 -0
  243. sage/modular/all__sagemath_flint.py +1 -0
  244. sage/modular/modform/all__sagemath_flint.py +1 -0
  245. sage/modular/modform/eis_series_cython.cpython-312-aarch64-linux-gnu.so +0 -0
  246. sage/modular/modform/eis_series_cython.pyx +226 -0
  247. sage/modular/modsym/all__sagemath_flint.py +1 -0
  248. sage/modular/modsym/apply.cpython-312-aarch64-linux-gnu.so +0 -0
  249. sage/modular/modsym/apply.pxd +6 -0
  250. sage/modular/modsym/apply.pyx +113 -0
  251. sage/modular/modsym/heilbronn.cpython-312-aarch64-linux-gnu.so +0 -0
  252. sage/modular/modsym/heilbronn.pyx +966 -0
  253. sage/modular/pollack_stevens/all__sagemath_flint.py +1 -0
  254. sage/modular/pollack_stevens/dist.cpython-312-aarch64-linux-gnu.so +0 -0
  255. sage/modular/pollack_stevens/dist.pxd +38 -0
  256. sage/modular/pollack_stevens/dist.pyx +1439 -0
  257. sage/quivers/algebra.py +691 -0
  258. sage/quivers/algebra_elements.cpython-312-aarch64-linux-gnu.so +0 -0
  259. sage/quivers/algebra_elements.pxd +97 -0
  260. sage/quivers/algebra_elements.pxi +1324 -0
  261. sage/quivers/algebra_elements.pyx +1424 -0
  262. sage/quivers/all.py +1 -0
  263. sage/quivers/ar_quiver.py +917 -0
  264. sage/quivers/homspace.py +640 -0
  265. sage/quivers/morphism.py +1282 -0
  266. sage/quivers/path_semigroup.py +1155 -0
  267. sage/quivers/paths.cpython-312-aarch64-linux-gnu.so +0 -0
  268. sage/quivers/paths.pxd +13 -0
  269. sage/quivers/paths.pyx +809 -0
  270. sage/quivers/representation.py +2975 -0
  271. sage/rings/all__sagemath_flint.py +37 -0
  272. sage/rings/cif.py +4 -0
  273. sage/rings/complex_arb.cpython-312-aarch64-linux-gnu.so +0 -0
  274. sage/rings/complex_arb.pxd +29 -0
  275. sage/rings/complex_arb.pyx +5176 -0
  276. sage/rings/complex_interval.cpython-312-aarch64-linux-gnu.so +0 -0
  277. sage/rings/complex_interval.pxd +30 -0
  278. sage/rings/complex_interval.pyx +2475 -0
  279. sage/rings/complex_interval_field.py +711 -0
  280. sage/rings/convert/all.py +1 -0
  281. sage/rings/convert/mpfi.cpython-312-aarch64-linux-gnu.so +0 -0
  282. sage/rings/convert/mpfi.pxd +6 -0
  283. sage/rings/convert/mpfi.pyx +576 -0
  284. sage/rings/factorint_flint.cpython-312-aarch64-linux-gnu.so +0 -0
  285. sage/rings/factorint_flint.pyx +99 -0
  286. sage/rings/fraction_field_FpT.cpython-312-aarch64-linux-gnu.so +0 -0
  287. sage/rings/fraction_field_FpT.pxd +28 -0
  288. sage/rings/fraction_field_FpT.pyx +2043 -0
  289. sage/rings/imaginary_unit.py +5 -0
  290. sage/rings/monomials.py +73 -0
  291. sage/rings/number_field/S_unit_solver.py +2870 -0
  292. sage/rings/number_field/all__sagemath_flint.py +7 -0
  293. sage/rings/number_field/bdd_height.py +664 -0
  294. sage/rings/number_field/class_group.py +762 -0
  295. sage/rings/number_field/galois_group.py +1307 -0
  296. sage/rings/number_field/homset.py +612 -0
  297. sage/rings/number_field/maps.py +687 -0
  298. sage/rings/number_field/morphism.py +272 -0
  299. sage/rings/number_field/number_field.py +12820 -0
  300. sage/rings/number_field/number_field_element.cpython-312-aarch64-linux-gnu.so +0 -0
  301. sage/rings/number_field/number_field_element.pxd +59 -0
  302. sage/rings/number_field/number_field_element.pyx +5735 -0
  303. sage/rings/number_field/number_field_element_quadratic.cpython-312-aarch64-linux-gnu.so +0 -0
  304. sage/rings/number_field/number_field_element_quadratic.pxd +34 -0
  305. sage/rings/number_field/number_field_element_quadratic.pyx +3185 -0
  306. sage/rings/number_field/number_field_ideal_rel.py +925 -0
  307. sage/rings/number_field/number_field_morphisms.cpython-312-aarch64-linux-gnu.so +0 -0
  308. sage/rings/number_field/number_field_morphisms.pyx +781 -0
  309. sage/rings/number_field/number_field_rel.py +2734 -0
  310. sage/rings/number_field/order.py +2981 -0
  311. sage/rings/number_field/order_ideal.py +804 -0
  312. sage/rings/number_field/selmer_group.py +715 -0
  313. sage/rings/number_field/small_primes_of_degree_one.py +242 -0
  314. sage/rings/number_field/splitting_field.py +606 -0
  315. sage/rings/number_field/structure.py +380 -0
  316. sage/rings/number_field/unit_group.py +721 -0
  317. sage/rings/padics/all__sagemath_flint.py +3 -0
  318. sage/rings/polynomial/all__sagemath_flint.py +1 -0
  319. sage/rings/polynomial/complex_roots.py +312 -0
  320. sage/rings/polynomial/evaluation_flint.cpython-312-aarch64-linux-gnu.so +0 -0
  321. sage/rings/polynomial/evaluation_flint.pxd +7 -0
  322. sage/rings/polynomial/evaluation_flint.pyx +68 -0
  323. sage/rings/polynomial/hilbert.cpython-312-aarch64-linux-gnu.so +0 -0
  324. sage/rings/polynomial/hilbert.pyx +602 -0
  325. sage/rings/polynomial/polynomial_complex_arb.cpython-312-aarch64-linux-gnu.so +0 -0
  326. sage/rings/polynomial/polynomial_complex_arb.pxd +7 -0
  327. sage/rings/polynomial/polynomial_complex_arb.pyx +963 -0
  328. sage/rings/polynomial/polynomial_integer_dense_flint.cpython-312-aarch64-linux-gnu.so +0 -0
  329. sage/rings/polynomial/polynomial_integer_dense_flint.pxd +13 -0
  330. sage/rings/polynomial/polynomial_integer_dense_flint.pyx +1881 -0
  331. sage/rings/polynomial/polynomial_number_field.cpython-312-aarch64-linux-gnu.so +0 -0
  332. sage/rings/polynomial/polynomial_number_field.pyx +345 -0
  333. sage/rings/polynomial/polynomial_rational_flint.cpython-312-aarch64-linux-gnu.so +0 -0
  334. sage/rings/polynomial/polynomial_rational_flint.pxd +20 -0
  335. sage/rings/polynomial/polynomial_rational_flint.pyx +2598 -0
  336. sage/rings/polynomial/polynomial_zmod_flint.cpython-312-aarch64-linux-gnu.so +0 -0
  337. sage/rings/polynomial/polynomial_zmod_flint.pxd +20 -0
  338. sage/rings/polynomial/polynomial_zmod_flint.pyx +1063 -0
  339. sage/rings/polynomial/real_roots.cpython-312-aarch64-linux-gnu.so +0 -0
  340. sage/rings/polynomial/real_roots.pxd +81 -0
  341. sage/rings/polynomial/real_roots.pyx +4704 -0
  342. sage/rings/polynomial/refine_root.cpython-312-aarch64-linux-gnu.so +0 -0
  343. sage/rings/polynomial/refine_root.pyx +142 -0
  344. sage/rings/polynomial/weil/all.py +4 -0
  345. sage/rings/polynomial/weil/power_sums.h +46 -0
  346. sage/rings/polynomial/weil/weil_polynomials.cpython-312-aarch64-linux-gnu.so +0 -0
  347. sage/rings/polynomial/weil/weil_polynomials.pyx +596 -0
  348. sage/rings/qqbar.py +9025 -0
  349. sage/rings/real_arb.cpython-312-aarch64-linux-gnu.so +0 -0
  350. sage/rings/real_arb.pxd +21 -0
  351. sage/rings/real_arb.pyx +4065 -0
  352. sage/rings/real_interval_absolute.cpython-312-aarch64-linux-gnu.so +0 -0
  353. sage/rings/real_interval_absolute.pyx +1073 -0
  354. sage/rings/real_mpfi.cpython-312-aarch64-linux-gnu.so +0 -0
  355. sage/rings/real_mpfi.pyx +5428 -0
  356. sage/schemes/all__sagemath_flint.py +1 -0
  357. sage/schemes/elliptic_curves/all__sagemath_flint.py +1 -0
  358. sage/schemes/elliptic_curves/descent_two_isogeny.cpython-312-aarch64-linux-gnu.so +0 -0
  359. sage/schemes/elliptic_curves/descent_two_isogeny.pyx +1387 -0
  360. sage/schemes/elliptic_curves/descent_two_isogeny_pari.pxd +5 -0
@@ -0,0 +1,3 @@
1
+ # sage_setup: distribution = sagemath-flint
2
+
3
+ from sage.rings.padics.all__sagemath_ntl import *
@@ -0,0 +1 @@
1
+ # sage_setup: distribution = sagemath-flint
@@ -0,0 +1,312 @@
1
+ # sage_setup: distribution = sagemath-flint
2
+ # sage.doctest: needs sage.libs.pari
3
+ """
4
+ Isolate Complex Roots of Polynomials
5
+
6
+ AUTHOR:
7
+
8
+ - Carl Witty (2007-11-18): initial version
9
+
10
+ This is an implementation of complex root isolation. That is, given a
11
+ polynomial with exact complex coefficients, we compute isolating
12
+ intervals for the complex roots of the polynomial. (Polynomials with
13
+ integer, rational, Gaussian rational, or algebraic coefficients are
14
+ supported.)
15
+
16
+ We use a simple algorithm. First, we compute a squarefree decomposition
17
+ of the input polynomial; the resulting polynomials have no multiple roots.
18
+ Then, we find the roots numerically, using NumPy (at low precision) or
19
+ Pari (at high precision). Then, we verify the roots using interval
20
+ arithmetic.
21
+
22
+ EXAMPLES::
23
+
24
+ sage: x = polygen(ZZ)
25
+ sage: (x^5 - x - 1).roots(ring=CIF)
26
+ [(1.167303978261419?, 1),
27
+ (-0.764884433600585? - 0.352471546031727?*I, 1),
28
+ (-0.764884433600585? + 0.352471546031727?*I, 1),
29
+ (0.181232444469876? - 1.083954101317711?*I, 1),
30
+ (0.181232444469876? + 1.083954101317711?*I, 1)]
31
+ """
32
+
33
+ #*****************************************************************************
34
+ # Copyright (C) 2007 Carl Witty
35
+ #
36
+ # This program is free software: you can redistribute it and/or modify
37
+ # it under the terms of the GNU General Public License as published by
38
+ # the Free Software Foundation, either version 2 of the License, or
39
+ # (at your option) any later version.
40
+ # http://www.gnu.org/licenses/
41
+ #*****************************************************************************
42
+
43
+
44
+ from copy import copy
45
+
46
+ from sage.rings.complex_mpfr import ComplexField
47
+ from sage.rings.complex_interval_field import ComplexIntervalField
48
+ from sage.rings.qqbar import AA, QQbar
49
+ from sage.arith.misc import sort_complex_numbers_for_display
50
+ from sage.rings.polynomial.refine_root import refine_root
51
+
52
+
53
+ def interval_roots(p, rts, prec):
54
+ """
55
+ We are given a squarefree polynomial p, a list of estimated roots,
56
+ and a precision.
57
+
58
+ We attempt to verify that the estimated roots are in fact distinct
59
+ roots of the polynomial, using interval arithmetic of precision ``prec``.
60
+ If we succeed, we return a list of intervals bounding the roots; if we
61
+ fail, we return ``None``.
62
+
63
+ EXAMPLES::
64
+
65
+ sage: x = polygen(ZZ)
66
+ sage: p = x^3 - 1
67
+ sage: rts = [CC.zeta(3)^i for i in range(0, 3)]
68
+ sage: from sage.rings.polynomial.complex_roots import interval_roots
69
+ sage: interval_roots(p, rts, 53)
70
+ [1, -0.500000000000000? + 0.866025403784439?*I,
71
+ -0.500000000000000? - 0.866025403784439?*I]
72
+ sage: interval_roots(p, rts, 200)
73
+ [1, -0.500000000000000000000000000000000000000000000000000000000000?
74
+ + 0.866025403784438646763723170752936183471402626905190314027904?*I,
75
+ -0.500000000000000000000000000000000000000000000000000000000000?
76
+ - 0.866025403784438646763723170752936183471402626905190314027904?*I]
77
+ """
78
+
79
+ CIF = ComplexIntervalField(prec)
80
+ CIFX = CIF['x']
81
+
82
+ ip = CIFX(p)
83
+ ipd = CIFX(p.derivative())
84
+
85
+ irts = []
86
+
87
+ for rt in rts:
88
+ irt = refine_root(ip, ipd, CIF(rt), CIF)
89
+ if irt is None:
90
+ return None
91
+ irts.append(irt)
92
+
93
+ return irts
94
+
95
+
96
+ def intervals_disjoint(intvs):
97
+ """
98
+ Given a list of complex intervals, check whether they are pairwise
99
+ disjoint.
100
+
101
+ EXAMPLES::
102
+
103
+ sage: from sage.rings.polynomial.complex_roots import intervals_disjoint
104
+ sage: a = CIF(RIF(0, 3), 0)
105
+ sage: b = CIF(0, RIF(1, 3))
106
+ sage: c = CIF(RIF(1, 2), RIF(1, 2))
107
+ sage: d = CIF(RIF(2, 3), RIF(2, 3))
108
+ sage: intervals_disjoint([a,b,c,d])
109
+ False
110
+ sage: d2 = CIF(RIF(2, 3), RIF(2.001, 3))
111
+ sage: intervals_disjoint([a,b,c,d2])
112
+ True
113
+ """
114
+
115
+ # This may be quadratic in perverse cases, but will take only
116
+ # n log(n) time in typical cases.
117
+
118
+ intvs = sorted(copy(intvs))
119
+
120
+ column = []
121
+ prev_real = None
122
+
123
+ def column_disjoint():
124
+ column.sort()
125
+
126
+ row = []
127
+ prev_imag = None
128
+
129
+ def row_disjoint():
130
+ for a in range(len(row)):
131
+ for b in range(a+1, len(row)):
132
+ if row[a].overlaps(row[b]):
133
+ return False
134
+ return True
135
+
136
+ for (y_imag, y) in column:
137
+ if prev_imag is not None and y_imag > prev_imag:
138
+ if not row_disjoint():
139
+ return False
140
+ row = []
141
+ prev_imag = y_imag
142
+ row.append(y)
143
+ if not row_disjoint():
144
+ return False
145
+ return True
146
+
147
+ for x in intvs:
148
+ x_real = x.real()
149
+ if prev_real is not None and x_real > prev_real:
150
+ if not column_disjoint():
151
+ return False
152
+ column = []
153
+ prev_real = x_real
154
+ column.append((x.imag(), x))
155
+
156
+ if not column_disjoint():
157
+ return False
158
+ return True
159
+
160
+
161
+ def complex_roots(p, skip_squarefree=False, retval='interval', min_prec=0):
162
+ """
163
+ Compute the complex roots of a given polynomial with exact
164
+ coefficients (integer, rational, Gaussian rational, and algebraic
165
+ coefficients are supported). Returns a list of pairs of a root
166
+ and its multiplicity.
167
+
168
+ Roots are returned as a ComplexIntervalFieldElement; each interval
169
+ includes exactly one root, and the intervals are disjoint.
170
+
171
+ By default, the algorithm will do a squarefree decomposition
172
+ to get squarefree polynomials. The skip_squarefree parameter
173
+ lets you skip this step. (If this step is skipped, and the polynomial
174
+ has a repeated root, then the algorithm will loop forever!)
175
+
176
+ You can specify retval='interval' (the default) to get roots as
177
+ complex intervals. The other options are retval='algebraic' to
178
+ get elements of QQbar, or retval='algebraic_real' to get only
179
+ the real roots, and to get them as elements of AA.
180
+
181
+ EXAMPLES::
182
+
183
+ sage: from sage.rings.polynomial.complex_roots import complex_roots
184
+ sage: x = polygen(ZZ)
185
+ sage: complex_roots(x^5 - x - 1)
186
+ [(1.167303978261419?, 1),
187
+ (-0.764884433600585? - 0.352471546031727?*I, 1),
188
+ (-0.764884433600585? + 0.352471546031727?*I, 1),
189
+ (0.181232444469876? - 1.083954101317711?*I, 1),
190
+ (0.181232444469876? + 1.083954101317711?*I, 1)]
191
+ sage: v = complex_roots(x^2 + 27*x + 181)
192
+
193
+ Unfortunately due to numerical noise there can be a small imaginary part to each
194
+ root depending on CPU, compiler, etc, and that affects the printing order. So we
195
+ verify the real part of each root and check that the imaginary part is small in
196
+ both cases::
197
+
198
+ sage: v # random
199
+ [(-14.61803398874990?..., 1), (-12.3819660112501...? + 0.?e-27*I, 1)]
200
+ sage: sorted((v[0][0].real(),v[1][0].real()))
201
+ [-14.61803398874989?, -12.3819660112501...?]
202
+ sage: v[0][0].imag().upper() < 1e25
203
+ True
204
+ sage: v[1][0].imag().upper() < 1e25
205
+ True
206
+
207
+ sage: K.<im> = QuadraticField(-1)
208
+ sage: eps = 1/2^100
209
+ sage: x = polygen(K)
210
+ sage: p = (x-1)*(x-1-eps)*(x-1+eps)*(x-1-eps*im)*(x-1+eps*im)
211
+
212
+ This polynomial actually has all-real coefficients, and is very, very
213
+ close to (x-1)^5::
214
+
215
+ sage: [RR(QQ(a)) for a in list(p - (x-1)^5)]
216
+ [3.87259191484932e-121, -3.87259191484932e-121]
217
+ sage: rts = complex_roots(p)
218
+ sage: [ComplexIntervalField(10)(rt[0] - 1) for rt in rts]
219
+ [-7.8887?e-31, 0, 7.8887?e-31, -7.8887?e-31*I, 7.8887?e-31*I]
220
+
221
+ We can get roots either as intervals, or as elements of QQbar or AA.
222
+
223
+ ::
224
+
225
+ sage: p = (x^2 + x - 1)
226
+ sage: p = p * p(x*im)
227
+ sage: p
228
+ -x^4 + (im - 1)*x^3 + im*x^2 + (-im - 1)*x + 1
229
+
230
+ Two of the roots have a zero real component; two have a zero
231
+ imaginary component. These zero components will be found slightly
232
+ inaccurately, and the exact values returned are very sensitive to
233
+ the (non-portable) results of NumPy. So we post-process the roots
234
+ for printing, to get predictable doctest results.
235
+
236
+ ::
237
+
238
+ sage: def tiny(x):
239
+ ....: return x.contains_zero() and x.absolute_diameter() < 1e-14
240
+ sage: def smash(x):
241
+ ....: x = CIF(x[0]) # discard multiplicity
242
+ ....: if tiny(x.imag()): return x.real()
243
+ ....: if tiny(x.real()): return CIF(0, x.imag())
244
+ sage: rts = complex_roots(p); type(rts[0][0]), sorted(map(smash, rts))
245
+ (<class 'sage.rings.complex_interval.ComplexIntervalFieldElement'>,
246
+ [-1.618033988749895?, -0.618033988749895?*I,
247
+ 1.618033988749895?*I, 0.618033988749895?])
248
+ sage: rts = complex_roots(p, retval='algebraic'); type(rts[0][0]), sorted(map(smash, rts))
249
+ (<class 'sage.rings.qqbar.AlgebraicNumber'>,
250
+ [-1.618033988749895?, -0.618033988749895?*I,
251
+ 1.618033988749895?*I, 0.618033988749895?])
252
+ sage: rts = complex_roots(p, retval='algebraic_real'); type(rts[0][0]), rts
253
+ (<class 'sage.rings.qqbar.AlgebraicReal'>,
254
+ [(-1.618033988749895?, 1), (0.618033988749895?, 1)])
255
+
256
+ TESTS:
257
+
258
+ Verify that :issue:`12026` is fixed::
259
+
260
+ sage: f = matrix(QQ, 8, lambda i, j: 1/(i + j + 1)).charpoly()
261
+ sage: from sage.rings.polynomial.complex_roots import complex_roots
262
+ sage: len(complex_roots(f))
263
+ 8
264
+ """
265
+
266
+ if skip_squarefree:
267
+ factors = [(p, 1)]
268
+ else:
269
+ factors = p.squarefree_decomposition()
270
+
271
+ prec = 53
272
+ while True:
273
+ CC = ComplexField(prec)
274
+ CCX = CC['x']
275
+
276
+ all_rts = []
277
+ ok = True
278
+
279
+ for (factor, exp) in factors:
280
+ cfac = CCX(factor)
281
+ rts = cfac.roots(multiplicities=False)
282
+ # Make sure the number of roots we found is the degree. If
283
+ # we don't find that many roots, it's because the
284
+ # precision isn't big enough and though the (possibly
285
+ # exact) polynomial "factor" is squarefree, it is not
286
+ # squarefree as an element of CCX.
287
+ if len(rts) < factor.degree():
288
+ ok = False
289
+ break
290
+ irts = interval_roots(factor, rts, max(prec, min_prec))
291
+ if irts is None:
292
+ ok = False
293
+ break
294
+ if retval != 'interval':
295
+ factor = QQbar.common_polynomial(factor)
296
+ all_rts.extend((irt, factor, exp) for irt in irts)
297
+
298
+ if ok and intervals_disjoint([rt for (rt, fac, mult) in all_rts]):
299
+ all_rts = sort_complex_numbers_for_display(all_rts)
300
+ if retval == 'interval':
301
+ return [(rt, mult) for (rt, fac, mult) in all_rts]
302
+ elif retval == 'algebraic':
303
+ return [(QQbar.polynomial_root(fac, rt), mult) for (rt, fac, mult) in all_rts]
304
+ elif retval == 'algebraic_real':
305
+ rts = []
306
+ for (rt, fac, mult) in all_rts:
307
+ qqbar_rt = QQbar.polynomial_root(fac, rt)
308
+ if qqbar_rt.imag().is_zero():
309
+ rts.append((AA(qqbar_rt), mult))
310
+ return rts
311
+
312
+ prec = prec * 2
@@ -0,0 +1,7 @@
1
+ # sage_setup: distribution = sagemath-flint
2
+ from sage.libs.flint.types cimport fmpz_poly_t
3
+ from sage.libs.mpfr.types cimport mpfr_t
4
+ from sage.libs.mpfi.types cimport mpfi_t
5
+
6
+ cdef fmpz_poly_evaluation_mpfr(mpfr_t res, const fmpz_poly_t poly, const mpfr_t a)
7
+ cdef fmpz_poly_evaluation_mpfi(mpfi_t res, const fmpz_poly_t poly, const mpfi_t a)
@@ -0,0 +1,68 @@
1
+ # sage_setup: distribution = sagemath-flint
2
+ # distutils: libraries = flint
3
+ r"""
4
+ Fast evaluation of polynomials (Horner's rule)
5
+
6
+ This file provides fast evaluation of integer polynomials with a real value. We
7
+ consider flint polynomials and values mpfr_t and mpfi_t. If you intend
8
+ to implement more it would be better to find a template strategy instead of
9
+ duplicating the code.
10
+
11
+ The code in this file is mostly Sage agnostic and only does library calls.
12
+
13
+ For appropriate testing see
14
+ :mod:`~sage.rings.polynomial.polynomial_integer_dense_flint`.
15
+
16
+ .. TODO::
17
+
18
+ Integrate these functions into
19
+ :mod:`~sage.rings.polynomial.polynomial_compiled`
20
+ """
21
+ #*****************************************************************************
22
+ # Copyright (C) 2016 Vincent Delecroix <20100.delecroix@gmail.com>
23
+ #
24
+ # This program is free software: you can redistribute it and/or modify
25
+ # it under the terms of the GNU General Public License as published by
26
+ # the Free Software Foundation, either version 2 of the License, or
27
+ # (at your option) any later version.
28
+ # http://www.gnu.org/licenses/
29
+ #*****************************************************************************
30
+
31
+ from sage.libs.mpfr cimport *
32
+ from sage.libs.mpfi cimport *
33
+ from sage.libs.gmp.mpz cimport *
34
+ from sage.libs.gmp.mpq cimport *
35
+ from sage.libs.flint.fmpz cimport *
36
+ from sage.libs.flint.fmpz_poly cimport *
37
+ from sage.libs.flint.fmpz_poly_sage cimport *
38
+
39
+
40
+ cdef fmpz_poly_evaluation_mpfr(mpfr_t res, const fmpz_poly_t poly, const mpfr_t a):
41
+ cdef mpz_t c
42
+ cdef long i
43
+
44
+ mpfr_set_ui(res, 0, MPFR_RNDN)
45
+ mpz_init(c)
46
+
47
+ for i in range(fmpz_poly_degree(poly), -1, -1):
48
+ mpfr_mul(res, res, a, MPFR_RNDN)
49
+ if not fmpz_is_zero(fmpz_poly_get_coeff_ptr(poly, i)):
50
+ fmpz_poly_get_coeff_mpz(c, poly, i)
51
+ mpfr_add_z(res, res, c, MPFR_RNDN)
52
+
53
+ mpz_clear(c)
54
+
55
+ cdef fmpz_poly_evaluation_mpfi(mpfi_t res, const fmpz_poly_t poly, const mpfi_t a):
56
+ cdef mpz_t c
57
+ cdef long i
58
+
59
+ mpfi_set_ui(res, 0)
60
+ mpz_init(c)
61
+
62
+ for i in range(fmpz_poly_degree(poly), -1, -1):
63
+ mpfi_mul(res, res, a)
64
+ if not fmpz_is_zero(fmpz_poly_get_coeff_ptr(poly, i)):
65
+ fmpz_poly_get_coeff_mpz(c, poly, i)
66
+ mpfi_add_z(res, res, c)
67
+
68
+ mpz_clear(c)