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,380 @@
1
+ # sage_setup: distribution = sagemath-flint
2
+ # sage.doctest: needs sage.rings.number_field
3
+ r"""
4
+ Helper classes for structural embeddings and isomorphisms of number fields
5
+
6
+ Consider the following fields `L` and `M`::
7
+
8
+ sage: L.<a> = QuadraticField(2)
9
+ sage: M.<a> = L.absolute_field()
10
+
11
+ Both produce the same extension of `\QQ`. However, they should not be
12
+ identical because `M` carries additional information::
13
+
14
+ sage: L.structure()
15
+ (Identity endomorphism of
16
+ Number Field in a with defining polynomial x^2 - 2 with a = 1.414213562373095?,
17
+ Identity endomorphism of
18
+ Number Field in a with defining polynomial x^2 - 2 with a = 1.414213562373095?)
19
+ sage: M.structure()
20
+ (Isomorphism given by variable name change map:
21
+ From: Number Field in a with defining polynomial x^2 - 2
22
+ To: Number Field in a with defining polynomial x^2 - 2 with a = 1.414213562373095?,
23
+ Isomorphism given by variable name change map:
24
+ From: Number Field in a with defining polynomial x^2 - 2 with a = 1.414213562373095?
25
+ To: Number Field in a with defining polynomial x^2 - 2)
26
+
27
+ This used to cause trouble with caching and made (absolute) number fields not
28
+ unique when they should have been. The underlying technical problem is that the
29
+ morphisms returned by :meth:`structure` can only be defined once the fields in
30
+ question have been created. Therefore, these morphisms cannot be part of a key
31
+ which uniquely identifies a number field.
32
+
33
+ The classes defined in this file encapsulate information about these structure
34
+ morphisms which can be passed to the factory creating number fields. This makes
35
+ it possible to distinguish number fields which only differ in terms of these
36
+ structure morphisms::
37
+
38
+ sage: L is M
39
+ False
40
+ sage: N.<a> = L.absolute_field()
41
+ sage: M is N
42
+ True
43
+
44
+ AUTHORS:
45
+
46
+ - Julian Rueth (2014-04-03): initial version
47
+ """
48
+ #*****************************************************************************
49
+ # Copyright (C) 2014 Julian Rueth <julian.rueth@fsfe.org>
50
+ #
51
+ # This program is free software: you can redistribute it and/or modify
52
+ # it under the terms of the GNU General Public License as published by
53
+ # the Free Software Foundation, either version 2 of the License, or
54
+ # (at your option) any later version.
55
+ # http://www.gnu.org/licenses/
56
+ #*****************************************************************************
57
+
58
+ from sage.structure.unique_representation import UniqueRepresentation
59
+
60
+
61
+ class NumberFieldStructure(UniqueRepresentation):
62
+ r"""
63
+ Abstract base class encapsulating information about a number fields
64
+ relation to other number fields.
65
+
66
+ TESTS::
67
+
68
+ sage: from sage.rings.number_field.structure import NumberFieldStructure
69
+ sage: NumberFieldStructure(QQ)
70
+ <sage.rings.number_field.structure.NumberFieldStructure object at 0x...>
71
+
72
+ Instances are cached through
73
+ :class:`sage.structure.unique_representation.UniqueRepresentation`::
74
+
75
+ sage: NumberFieldStructure(QQ) is NumberFieldStructure(QQ)
76
+ True
77
+
78
+ sage: R.<x> = QQ[]
79
+ sage: x = polygen(ZZ, 'x')
80
+ sage: K.<i> = NumberField(x^2 + 1)
81
+ sage: L = K.change_names('j').change_names('i')
82
+ sage: K is L # K and L differ in "structure", one is the "name-change" of the other
83
+ False
84
+ sage: NumberFieldStructure(L) is NumberFieldStructure(L)
85
+ True
86
+ sage: NumberFieldStructure(K) is NumberFieldStructure(L)
87
+ False
88
+ sage: from sage.rings.number_field.structure import NameChange
89
+ sage: KK.<j> = NumberField(x^2 + 1, structure=NameChange(K))
90
+ sage: LL.<j> = NumberField(x^2 + 1, structure=NameChange(L))
91
+ sage: KK is LL
92
+ False
93
+ """
94
+ def __init__(self, other):
95
+ """
96
+ Initialization.
97
+
98
+ TESTS::
99
+
100
+ sage: from sage.rings.number_field.structure import NumberFieldStructure
101
+ sage: type(NumberFieldStructure(QQ))
102
+ <class 'sage.rings.number_field.structure.NumberFieldStructure'>
103
+ """
104
+ self.other = other
105
+
106
+ def create_structure(self, field):
107
+ r"""
108
+ Return a tuple encoding structural information about ``field``.
109
+
110
+ OUTPUT:
111
+
112
+ Typically, the output is a pair of morphisms. The first one from
113
+ ``field`` to a field from which ``field`` has been constructed and the
114
+ second one its inverse. In this case, these morphisms are used as
115
+ conversion maps between the two fields.
116
+
117
+ TESTS::
118
+
119
+ sage: from sage.rings.number_field.structure import NumberFieldStructure
120
+ sage: NumberFieldStructure(QQ).create_structure(QQ)
121
+ Traceback (most recent call last):
122
+ ...
123
+ NotImplementedError
124
+
125
+ The morphisms created by this method are used as conversion maps::
126
+
127
+ sage: K.<i> = QuadraticField(-1)
128
+ sage: L.<j> = K.change_names()
129
+ sage: isinstance(L._structure, NumberFieldStructure)
130
+ True
131
+ sage: from_L, to_L = L.structure()
132
+ sage: L._convert_map_from_(K) is to_L
133
+ True
134
+ sage: L(i)
135
+ j
136
+ sage: K(j)
137
+ i
138
+ """
139
+ raise NotImplementedError
140
+
141
+
142
+ class NameChange(NumberFieldStructure):
143
+ r"""
144
+ Structure for a number field created by a change in variable name.
145
+
146
+ INPUT:
147
+
148
+ - ``other`` -- the number field from which this field has been created
149
+
150
+ TESTS::
151
+
152
+ sage: from sage.rings.number_field.structure import NameChange
153
+ sage: K.<i> = QuadraticField(-1)
154
+ sage: NameChange(K)
155
+ <sage.rings.number_field.structure.NameChange object at 0x...>
156
+
157
+ Check for memory leaks::
158
+
159
+ sage: x = polygen(ZZ, 'x')
160
+ sage: u = id(NumberField(x^2 - 5,'a').absolute_field('b'))
161
+ sage: import gc
162
+ sage: gc.collect() #random
163
+ 10
164
+ sage: [id(v) for v in gc.get_objects() if id(v) == u]
165
+ []
166
+ """
167
+ def create_structure(self, field):
168
+ r"""
169
+ Return a pair of isomorphisms which send the generator of ``field`` to
170
+ the generator of ``other`` and vice versa.
171
+
172
+ TESTS::
173
+
174
+ sage: CyclotomicField(5).absolute_field('a').structure() # indirect doctest
175
+ (Isomorphism given by variable name change map:
176
+ From: Number Field in a with defining polynomial x^4 + x^3 + x^2 + x + 1
177
+ To: Cyclotomic Field of order 5 and degree 4,
178
+ Isomorphism given by variable name change map:
179
+ From: Cyclotomic Field of order 5 and degree 4
180
+ To: Number Field in a with defining polynomial x^4 + x^3 + x^2 + x + 1)
181
+ """
182
+ from . import maps
183
+ return maps.NameChangeMap(field, self.other), maps.NameChangeMap(self.other, field)
184
+
185
+
186
+ class AbsoluteFromRelative(NumberFieldStructure):
187
+ r"""
188
+ Structure for an absolute number field created from a relative number
189
+ field.
190
+
191
+ INPUT:
192
+
193
+ - ``other`` -- the number field from which this field has been created
194
+
195
+ TESTS::
196
+
197
+ sage: from sage.rings.number_field.structure import AbsoluteFromRelative
198
+ sage: K.<a> = QuadraticField(2)
199
+ sage: R.<x> = K[]
200
+ sage: L.<b> = K.extension(x^2 - 3)
201
+ sage: AbsoluteFromRelative(L)
202
+ <sage.rings.number_field.structure.AbsoluteFromRelative object at 0x...>
203
+ """
204
+ def create_structure(self, field):
205
+ r"""
206
+ Return a pair of isomorphisms which go from ``field`` to ``other`` and
207
+ vice versa.
208
+
209
+ TESTS::
210
+
211
+ sage: K.<a> = QuadraticField(2)
212
+ sage: R.<x> = K[]
213
+ sage: L.<b> = K.extension(x^2 - 3)
214
+ sage: M.<c> = L.absolute_field()
215
+ sage: M.structure() # indirect doctest
216
+ (Isomorphism map:
217
+ From: Number Field in c with defining polynomial x^4 - 10*x^2 + 1
218
+ To: Number Field in b with defining polynomial x^2 - 3 over its base field, Isomorphism map:
219
+ From: Number Field in b with defining polynomial x^2 - 3 over its base field
220
+ To: Number Field in c with defining polynomial x^4 - 10*x^2 + 1)
221
+ """
222
+ from . import maps
223
+ return maps.MapAbsoluteToRelativeNumberField(field, self.other), maps.MapRelativeToAbsoluteNumberField(self.other, field)
224
+
225
+
226
+ class RelativeFromAbsolute(NumberFieldStructure):
227
+ r"""
228
+ Structure for a relative number field created from an absolute number
229
+ field.
230
+
231
+ INPUT:
232
+
233
+ - ``other`` -- the (absolute) number field from which this field has been
234
+ created
235
+
236
+ - ``gen`` -- the generator of the intermediate field
237
+
238
+ TESTS::
239
+
240
+ sage: from sage.rings.number_field.structure import RelativeFromAbsolute
241
+ sage: RelativeFromAbsolute(QQ, 1/2)
242
+ <sage.rings.number_field.structure.RelativeFromAbsolute object at 0x...>
243
+ """
244
+ def __init__(self, other, gen):
245
+ r"""
246
+ Initialization.
247
+
248
+ TESTS::
249
+
250
+ sage: from sage.rings.number_field.structure import RelativeFromAbsolute
251
+ sage: type(RelativeFromAbsolute(QQ, 1/2))
252
+ <class 'sage.rings.number_field.structure.RelativeFromAbsolute'>
253
+ """
254
+ NumberFieldStructure.__init__(self, other)
255
+ self.gen = gen
256
+
257
+ def create_structure(self, field):
258
+ r"""
259
+ Return a pair of isomorphisms which go from ``field`` to ``other`` and
260
+ vice versa.
261
+
262
+ INPUT:
263
+
264
+ - ``field`` -- a relative number field
265
+
266
+ TESTS::
267
+
268
+ sage: K.<a> = QuadraticField(2)
269
+ sage: M.<b,a_> = K.relativize(-a)
270
+ sage: M.structure() # indirect doctest
271
+ (Relative number field morphism:
272
+ From: Number Field in b with defining polynomial x + a_ over its base field
273
+ To: Number Field in a with defining polynomial x^2 - 2 with a = 1.414213562373095?
274
+ Defn: -a_ |--> a
275
+ a_ |--> -a, Ring morphism:
276
+ From: Number Field in a with defining polynomial x^2 - 2 with a = 1.414213562373095?
277
+ To: Number Field in b with defining polynomial x + a_ over its base field
278
+ Defn: a |--> -a_)
279
+ """
280
+ # other field
281
+ # \ /
282
+ # \ Q(gen)
283
+ # \ /
284
+ # Q
285
+ other = self.other
286
+ gen = self.gen
287
+
288
+ # the isomorphism from left to right is easy since the generators of
289
+ # other and field are the same
290
+ other_to_field = other.hom([field.gen(0)], field, check=True)
291
+ assert other_to_field(gen) == field(field.base_field().gen())
292
+
293
+ # to go from right to left, we first define a map from Q(gen) to other
294
+ base_map = field.base_field().hom([gen], other)
295
+ # and extend it to a map from field
296
+ field_to_other = field.Hom(other)([other.gen()], base_map=base_map, check=True)
297
+
298
+ return field_to_other, other_to_field
299
+
300
+
301
+ class RelativeFromRelative(NumberFieldStructure):
302
+ r"""
303
+ Structure for a relative number field created from another relative number
304
+ field.
305
+
306
+ INPUT:
307
+
308
+ - ``other`` -- the relative number field used in the construction, see
309
+ :meth:`create_structure`; there this field will be called ``field_``
310
+
311
+ TESTS::
312
+
313
+ sage: from sage.rings.number_field.structure import RelativeFromRelative
314
+ sage: K.<i> = QuadraticField(-1)
315
+ sage: R.<x> = K[]
316
+ sage: L.<a> = K.extension(x^2 - 2)
317
+ sage: RelativeFromRelative(L)
318
+ <sage.rings.number_field.structure.RelativeFromRelative object at 0x...>
319
+ """
320
+ def create_structure(self, field):
321
+ r"""
322
+ Return a pair of isomorphisms which go from ``field`` to the relative
323
+ number field (called ``other`` below) from which ``field`` has been
324
+ created and vice versa.
325
+
326
+ The isomorphism is created via the relative number field ``field_``
327
+ which is identical to ``field`` but is equipped with an isomorphism to
328
+ an absolute field which was used in the construction of ``field``.
329
+
330
+ INPUT:
331
+
332
+ - ``field`` -- a relative number field
333
+
334
+ TESTS::
335
+
336
+ sage: K.<i> = QuadraticField(-1)
337
+ sage: R.<x> = K[]
338
+ sage: L.<a> = K.extension(x^2 - 2)
339
+ sage: M.<b,a> = L.relativize(a)
340
+ sage: M.structure() # indirect doctest
341
+ (Relative number field morphism:
342
+ From: Number Field in b with defining polynomial x^2 - 2*a*x + 3 over its base field
343
+ To: Number Field in a with defining polynomial x^2 - 2 over its base field
344
+ Defn: b |--> a - i
345
+ a |--> a, Relative number field morphism:
346
+ From: Number Field in a with defining polynomial x^2 - 2 over its base field
347
+ To: Number Field in b with defining polynomial x^2 - 2*a*x + 3 over its base field
348
+ Defn: a |--> a
349
+ i |--> -b + a)
350
+ """
351
+ # other and field_ are relative number fields which are isomorphic via
352
+ # an absolute number field abs.
353
+ # field and field_ are identical except that field_.structure() returns
354
+ # the isomorphism with abs and field returns an isomorphism with other
355
+ # (which we construct in this method).
356
+ #
357
+ # f g h
358
+ # other -> abs -> field_ -> field
359
+ field_ = self.other
360
+ g_, g = field_.structure()
361
+ abs = g.domain()
362
+ f_, f = abs.structure()
363
+ other = f.domain()
364
+ h = lambda x: field._element_constructor_(x.list())
365
+ h_ = lambda x: field_._element_constructor_(x.list())
366
+
367
+ # First, we construct the isomorphism from other to field by embedding
368
+ # other.base_field() into field.
369
+ gf = g*f
370
+ base = other.base_field()
371
+ base_to_field = base.Hom(field)([h(gf(other.gen(1)))])
372
+ other_to_field = other.Hom(field)([h(gf(other.gen()))], base_map=base_to_field)
373
+
374
+ # And its inverse, essentially the same construction:
375
+ f_g_ = f_*g_
376
+ base = field.base_field()
377
+ base_to_other = base.Hom(other)([f_g_(h_(field.gen(1)))])
378
+ field_to_other = field.Hom(other)([f_g_(h_(field.gen()))], base_map=base_to_other)
379
+
380
+ return field_to_other, other_to_field