passagemath-schemes 10.6.47__cp312-cp312-macosx_13_0_arm64.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 (311) hide show
  1. passagemath_schemes/.dylibs/libflint.22.0.dylib +0 -0
  2. passagemath_schemes/.dylibs/libgmp.10.dylib +0 -0
  3. passagemath_schemes/.dylibs/libgmpxx.4.dylib +0 -0
  4. passagemath_schemes/.dylibs/libmpfr.6.dylib +0 -0
  5. passagemath_schemes/__init__.py +3 -0
  6. passagemath_schemes-10.6.47.dist-info/METADATA +204 -0
  7. passagemath_schemes-10.6.47.dist-info/METADATA.bak +205 -0
  8. passagemath_schemes-10.6.47.dist-info/RECORD +311 -0
  9. passagemath_schemes-10.6.47.dist-info/WHEEL +6 -0
  10. passagemath_schemes-10.6.47.dist-info/top_level.txt +3 -0
  11. sage/all__sagemath_schemes.py +23 -0
  12. sage/databases/all__sagemath_schemes.py +7 -0
  13. sage/databases/cremona.py +1723 -0
  14. sage/dynamics/all__sagemath_schemes.py +2 -0
  15. sage/dynamics/arithmetic_dynamics/affine_ds.py +1083 -0
  16. sage/dynamics/arithmetic_dynamics/all.py +14 -0
  17. sage/dynamics/arithmetic_dynamics/berkovich_ds.py +1101 -0
  18. sage/dynamics/arithmetic_dynamics/dynamical_semigroup.py +1543 -0
  19. sage/dynamics/arithmetic_dynamics/endPN_automorphism_group.py +2426 -0
  20. sage/dynamics/arithmetic_dynamics/endPN_minimal_model.py +1169 -0
  21. sage/dynamics/arithmetic_dynamics/generic_ds.py +663 -0
  22. sage/dynamics/arithmetic_dynamics/product_projective_ds.py +339 -0
  23. sage/dynamics/arithmetic_dynamics/projective_ds.py +9558 -0
  24. sage/dynamics/arithmetic_dynamics/projective_ds_helper.cpython-312-darwin.so +0 -0
  25. sage/dynamics/arithmetic_dynamics/projective_ds_helper.pyx +301 -0
  26. sage/dynamics/arithmetic_dynamics/wehlerK3.py +2576 -0
  27. sage/lfunctions/all.py +18 -0
  28. sage/lfunctions/dokchitser.py +745 -0
  29. sage/lfunctions/pari.py +818 -0
  30. sage/lfunctions/zero_sums.cpython-312-darwin.so +0 -0
  31. sage/lfunctions/zero_sums.pyx +1847 -0
  32. sage/modular/abvar/abvar.py +5135 -0
  33. sage/modular/abvar/abvar_ambient_jacobian.py +413 -0
  34. sage/modular/abvar/abvar_newform.py +244 -0
  35. sage/modular/abvar/all.py +8 -0
  36. sage/modular/abvar/constructor.py +186 -0
  37. sage/modular/abvar/cuspidal_subgroup.py +371 -0
  38. sage/modular/abvar/finite_subgroup.py +896 -0
  39. sage/modular/abvar/homology.py +720 -0
  40. sage/modular/abvar/homspace.py +998 -0
  41. sage/modular/abvar/lseries.py +415 -0
  42. sage/modular/abvar/morphism.py +935 -0
  43. sage/modular/abvar/torsion_point.py +274 -0
  44. sage/modular/abvar/torsion_subgroup.py +740 -0
  45. sage/modular/all.py +43 -0
  46. sage/modular/arithgroup/all.py +20 -0
  47. sage/modular/arithgroup/arithgroup_element.cpython-312-darwin.so +0 -0
  48. sage/modular/arithgroup/arithgroup_element.pyx +474 -0
  49. sage/modular/arithgroup/arithgroup_generic.py +1402 -0
  50. sage/modular/arithgroup/arithgroup_perm.py +2692 -0
  51. sage/modular/arithgroup/congroup.cpython-312-darwin.so +0 -0
  52. sage/modular/arithgroup/congroup.pyx +334 -0
  53. sage/modular/arithgroup/congroup_gamma.py +363 -0
  54. sage/modular/arithgroup/congroup_gamma0.py +692 -0
  55. sage/modular/arithgroup/congroup_gamma1.py +653 -0
  56. sage/modular/arithgroup/congroup_gammaH.py +1469 -0
  57. sage/modular/arithgroup/congroup_generic.py +628 -0
  58. sage/modular/arithgroup/congroup_sl2z.py +267 -0
  59. sage/modular/arithgroup/farey_symbol.cpython-312-darwin.so +0 -0
  60. sage/modular/arithgroup/farey_symbol.pyx +1066 -0
  61. sage/modular/arithgroup/tests.py +418 -0
  62. sage/modular/btquotients/all.py +4 -0
  63. sage/modular/btquotients/btquotient.py +3753 -0
  64. sage/modular/btquotients/pautomorphicform.py +2570 -0
  65. sage/modular/buzzard.py +100 -0
  66. sage/modular/congroup.py +29 -0
  67. sage/modular/congroup_element.py +13 -0
  68. sage/modular/cusps.py +1109 -0
  69. sage/modular/cusps_nf.py +1270 -0
  70. sage/modular/dims.py +569 -0
  71. sage/modular/dirichlet.py +3310 -0
  72. sage/modular/drinfeld_modform/all.py +2 -0
  73. sage/modular/drinfeld_modform/element.py +446 -0
  74. sage/modular/drinfeld_modform/ring.py +773 -0
  75. sage/modular/drinfeld_modform/tutorial.py +236 -0
  76. sage/modular/etaproducts.py +1065 -0
  77. sage/modular/hecke/algebra.py +746 -0
  78. sage/modular/hecke/all.py +20 -0
  79. sage/modular/hecke/ambient_module.py +1019 -0
  80. sage/modular/hecke/degenmap.py +119 -0
  81. sage/modular/hecke/element.py +325 -0
  82. sage/modular/hecke/hecke_operator.py +780 -0
  83. sage/modular/hecke/homspace.py +206 -0
  84. sage/modular/hecke/module.py +1767 -0
  85. sage/modular/hecke/morphism.py +174 -0
  86. sage/modular/hecke/submodule.py +989 -0
  87. sage/modular/hypergeometric_misc.cpython-312-darwin.so +0 -0
  88. sage/modular/hypergeometric_misc.pxd +4 -0
  89. sage/modular/hypergeometric_misc.pyx +166 -0
  90. sage/modular/hypergeometric_motive.py +2017 -0
  91. sage/modular/local_comp/all.py +2 -0
  92. sage/modular/local_comp/liftings.py +292 -0
  93. sage/modular/local_comp/local_comp.py +1071 -0
  94. sage/modular/local_comp/smoothchar.py +1825 -0
  95. sage/modular/local_comp/type_space.py +748 -0
  96. sage/modular/modform/all.py +30 -0
  97. sage/modular/modform/ambient.py +815 -0
  98. sage/modular/modform/ambient_R.py +177 -0
  99. sage/modular/modform/ambient_eps.py +306 -0
  100. sage/modular/modform/ambient_g0.py +124 -0
  101. sage/modular/modform/ambient_g1.py +204 -0
  102. sage/modular/modform/constructor.py +545 -0
  103. sage/modular/modform/cuspidal_submodule.py +708 -0
  104. sage/modular/modform/defaults.py +14 -0
  105. sage/modular/modform/eis_series.py +505 -0
  106. sage/modular/modform/eisenstein_submodule.py +663 -0
  107. sage/modular/modform/element.py +4131 -0
  108. sage/modular/modform/find_generators.py +59 -0
  109. sage/modular/modform/half_integral.py +154 -0
  110. sage/modular/modform/hecke_operator_on_qexp.py +247 -0
  111. sage/modular/modform/j_invariant.py +47 -0
  112. sage/modular/modform/l_series_gross_zagier.py +133 -0
  113. sage/modular/modform/l_series_gross_zagier_coeffs.cpython-312-darwin.so +0 -0
  114. sage/modular/modform/l_series_gross_zagier_coeffs.pyx +177 -0
  115. sage/modular/modform/notes.py +45 -0
  116. sage/modular/modform/numerical.py +514 -0
  117. sage/modular/modform/periods.py +14 -0
  118. sage/modular/modform/ring.py +1257 -0
  119. sage/modular/modform/space.py +1860 -0
  120. sage/modular/modform/submodule.py +118 -0
  121. sage/modular/modform/tests.py +64 -0
  122. sage/modular/modform/theta.py +110 -0
  123. sage/modular/modform/vm_basis.py +381 -0
  124. sage/modular/modform/weight1.py +220 -0
  125. sage/modular/modform_hecketriangle/abstract_ring.py +1932 -0
  126. sage/modular/modform_hecketriangle/abstract_space.py +2528 -0
  127. sage/modular/modform_hecketriangle/all.py +30 -0
  128. sage/modular/modform_hecketriangle/analytic_type.py +590 -0
  129. sage/modular/modform_hecketriangle/constructor.py +416 -0
  130. sage/modular/modform_hecketriangle/element.py +351 -0
  131. sage/modular/modform_hecketriangle/functors.py +752 -0
  132. sage/modular/modform_hecketriangle/graded_ring.py +541 -0
  133. sage/modular/modform_hecketriangle/graded_ring_element.py +2225 -0
  134. sage/modular/modform_hecketriangle/hecke_triangle_group_element.py +3352 -0
  135. sage/modular/modform_hecketriangle/hecke_triangle_groups.py +1432 -0
  136. sage/modular/modform_hecketriangle/readme.py +1214 -0
  137. sage/modular/modform_hecketriangle/series_constructor.py +580 -0
  138. sage/modular/modform_hecketriangle/space.py +1037 -0
  139. sage/modular/modform_hecketriangle/subspace.py +423 -0
  140. sage/modular/modsym/all.py +17 -0
  141. sage/modular/modsym/ambient.py +3846 -0
  142. sage/modular/modsym/boundary.py +1420 -0
  143. sage/modular/modsym/element.py +336 -0
  144. sage/modular/modsym/g1list.py +178 -0
  145. sage/modular/modsym/ghlist.py +182 -0
  146. sage/modular/modsym/hecke_operator.py +73 -0
  147. sage/modular/modsym/manin_symbol.cpython-312-darwin.so +0 -0
  148. sage/modular/modsym/manin_symbol.pxd +5 -0
  149. sage/modular/modsym/manin_symbol.pyx +497 -0
  150. sage/modular/modsym/manin_symbol_list.py +1295 -0
  151. sage/modular/modsym/modsym.py +400 -0
  152. sage/modular/modsym/modular_symbols.py +384 -0
  153. sage/modular/modsym/p1list_nf.py +1241 -0
  154. sage/modular/modsym/relation_matrix.py +591 -0
  155. sage/modular/modsym/relation_matrix_pyx.cpython-312-darwin.so +0 -0
  156. sage/modular/modsym/relation_matrix_pyx.pyx +108 -0
  157. sage/modular/modsym/space.py +2468 -0
  158. sage/modular/modsym/subspace.py +455 -0
  159. sage/modular/modsym/tests.py +375 -0
  160. sage/modular/multiple_zeta.py +2632 -0
  161. sage/modular/multiple_zeta_F_algebra.py +786 -0
  162. sage/modular/overconvergent/all.py +6 -0
  163. sage/modular/overconvergent/genus0.py +1878 -0
  164. sage/modular/overconvergent/hecke_series.py +1187 -0
  165. sage/modular/overconvergent/weightspace.py +778 -0
  166. sage/modular/pollack_stevens/all.py +4 -0
  167. sage/modular/pollack_stevens/distributions.py +874 -0
  168. sage/modular/pollack_stevens/fund_domain.py +1572 -0
  169. sage/modular/pollack_stevens/manin_map.py +859 -0
  170. sage/modular/pollack_stevens/modsym.py +1593 -0
  171. sage/modular/pollack_stevens/padic_lseries.py +417 -0
  172. sage/modular/pollack_stevens/sigma0.py +534 -0
  173. sage/modular/pollack_stevens/space.py +1076 -0
  174. sage/modular/quasimodform/all.py +3 -0
  175. sage/modular/quasimodform/element.py +845 -0
  176. sage/modular/quasimodform/ring.py +828 -0
  177. sage/modular/quatalg/all.py +3 -0
  178. sage/modular/quatalg/brandt.py +1642 -0
  179. sage/modular/ssmod/all.py +8 -0
  180. sage/modular/ssmod/ssmod.py +827 -0
  181. sage/rings/all__sagemath_schemes.py +1 -0
  182. sage/rings/polynomial/all__sagemath_schemes.py +1 -0
  183. sage/rings/polynomial/binary_form_reduce.py +585 -0
  184. sage/schemes/all.py +41 -0
  185. sage/schemes/berkovich/all.py +6 -0
  186. sage/schemes/berkovich/berkovich_cp_element.py +2582 -0
  187. sage/schemes/berkovich/berkovich_space.py +748 -0
  188. sage/schemes/curves/affine_curve.py +2928 -0
  189. sage/schemes/curves/all.py +33 -0
  190. sage/schemes/curves/closed_point.py +434 -0
  191. sage/schemes/curves/constructor.py +381 -0
  192. sage/schemes/curves/curve.py +542 -0
  193. sage/schemes/curves/plane_curve_arrangement.py +1283 -0
  194. sage/schemes/curves/point.py +463 -0
  195. sage/schemes/curves/projective_curve.py +3026 -0
  196. sage/schemes/curves/zariski_vankampen.py +1932 -0
  197. sage/schemes/cyclic_covers/all.py +2 -0
  198. sage/schemes/cyclic_covers/charpoly_frobenius.py +320 -0
  199. sage/schemes/cyclic_covers/constructor.py +137 -0
  200. sage/schemes/cyclic_covers/cycliccover_finite_field.py +1309 -0
  201. sage/schemes/cyclic_covers/cycliccover_generic.py +310 -0
  202. sage/schemes/elliptic_curves/BSD.py +1036 -0
  203. sage/schemes/elliptic_curves/Qcurves.py +592 -0
  204. sage/schemes/elliptic_curves/addition_formulas_ring.py +94 -0
  205. sage/schemes/elliptic_curves/all.py +49 -0
  206. sage/schemes/elliptic_curves/cardinality.py +609 -0
  207. sage/schemes/elliptic_curves/cm.py +1102 -0
  208. sage/schemes/elliptic_curves/constructor.py +1552 -0
  209. sage/schemes/elliptic_curves/ec_database.py +175 -0
  210. sage/schemes/elliptic_curves/ell_curve_isogeny.py +3972 -0
  211. sage/schemes/elliptic_curves/ell_egros.py +459 -0
  212. sage/schemes/elliptic_curves/ell_field.py +2836 -0
  213. sage/schemes/elliptic_curves/ell_finite_field.py +3359 -0
  214. sage/schemes/elliptic_curves/ell_generic.py +3760 -0
  215. sage/schemes/elliptic_curves/ell_local_data.py +1207 -0
  216. sage/schemes/elliptic_curves/ell_modular_symbols.py +775 -0
  217. sage/schemes/elliptic_curves/ell_number_field.py +4220 -0
  218. sage/schemes/elliptic_curves/ell_padic_field.py +107 -0
  219. sage/schemes/elliptic_curves/ell_point.py +4787 -0
  220. sage/schemes/elliptic_curves/ell_rational_field.py +7368 -0
  221. sage/schemes/elliptic_curves/ell_tate_curve.py +671 -0
  222. sage/schemes/elliptic_curves/ell_torsion.py +436 -0
  223. sage/schemes/elliptic_curves/ell_wp.py +352 -0
  224. sage/schemes/elliptic_curves/formal_group.py +760 -0
  225. sage/schemes/elliptic_curves/gal_reps.py +1459 -0
  226. sage/schemes/elliptic_curves/gal_reps_number_field.py +1669 -0
  227. sage/schemes/elliptic_curves/gp_simon.py +152 -0
  228. sage/schemes/elliptic_curves/heegner.py +7335 -0
  229. sage/schemes/elliptic_curves/height.py +2109 -0
  230. sage/schemes/elliptic_curves/hom.py +1406 -0
  231. sage/schemes/elliptic_curves/hom_composite.py +934 -0
  232. sage/schemes/elliptic_curves/hom_frobenius.py +522 -0
  233. sage/schemes/elliptic_curves/hom_scalar.py +531 -0
  234. sage/schemes/elliptic_curves/hom_sum.py +682 -0
  235. sage/schemes/elliptic_curves/hom_velusqrt.py +1290 -0
  236. sage/schemes/elliptic_curves/homset.py +271 -0
  237. sage/schemes/elliptic_curves/isogeny_class.py +1521 -0
  238. sage/schemes/elliptic_curves/isogeny_small_degree.py +2797 -0
  239. sage/schemes/elliptic_curves/jacobian.py +237 -0
  240. sage/schemes/elliptic_curves/kodaira_symbol.py +344 -0
  241. sage/schemes/elliptic_curves/kraus.py +1014 -0
  242. sage/schemes/elliptic_curves/lseries_ell.py +943 -0
  243. sage/schemes/elliptic_curves/mod5family.py +105 -0
  244. sage/schemes/elliptic_curves/mod_poly.py +197 -0
  245. sage/schemes/elliptic_curves/mod_sym_num.cpython-312-darwin.so +0 -0
  246. sage/schemes/elliptic_curves/mod_sym_num.pyx +3796 -0
  247. sage/schemes/elliptic_curves/modular_parametrization.py +305 -0
  248. sage/schemes/elliptic_curves/padic_lseries.py +1793 -0
  249. sage/schemes/elliptic_curves/padics.py +1816 -0
  250. sage/schemes/elliptic_curves/period_lattice.py +2234 -0
  251. sage/schemes/elliptic_curves/period_lattice_region.cpython-312-darwin.so +0 -0
  252. sage/schemes/elliptic_curves/period_lattice_region.pyx +722 -0
  253. sage/schemes/elliptic_curves/saturation.py +715 -0
  254. sage/schemes/elliptic_curves/sha_tate.py +1158 -0
  255. sage/schemes/elliptic_curves/weierstrass_morphism.py +1117 -0
  256. sage/schemes/elliptic_curves/weierstrass_transform.py +200 -0
  257. sage/schemes/hyperelliptic_curves/all.py +6 -0
  258. sage/schemes/hyperelliptic_curves/constructor.py +291 -0
  259. sage/schemes/hyperelliptic_curves/hyperelliptic_finite_field.py +1914 -0
  260. sage/schemes/hyperelliptic_curves/hyperelliptic_g2.py +192 -0
  261. sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py +954 -0
  262. sage/schemes/hyperelliptic_curves/hyperelliptic_padic_field.py +1332 -0
  263. sage/schemes/hyperelliptic_curves/hyperelliptic_rational_field.py +84 -0
  264. sage/schemes/hyperelliptic_curves/invariants.py +410 -0
  265. sage/schemes/hyperelliptic_curves/jacobian_endomorphism_utils.py +315 -0
  266. sage/schemes/hyperelliptic_curves/jacobian_g2.py +32 -0
  267. sage/schemes/hyperelliptic_curves/jacobian_generic.py +419 -0
  268. sage/schemes/hyperelliptic_curves/jacobian_homset.py +186 -0
  269. sage/schemes/hyperelliptic_curves/jacobian_morphism.py +875 -0
  270. sage/schemes/hyperelliptic_curves/kummer_surface.py +99 -0
  271. sage/schemes/hyperelliptic_curves/mestre.py +302 -0
  272. sage/schemes/hyperelliptic_curves/monsky_washnitzer.py +3871 -0
  273. sage/schemes/jacobians/abstract_jacobian.py +277 -0
  274. sage/schemes/jacobians/all.py +2 -0
  275. sage/schemes/overview.py +161 -0
  276. sage/schemes/plane_conics/all.py +22 -0
  277. sage/schemes/plane_conics/con_field.py +1296 -0
  278. sage/schemes/plane_conics/con_finite_field.py +158 -0
  279. sage/schemes/plane_conics/con_number_field.py +456 -0
  280. sage/schemes/plane_conics/con_rational_field.py +406 -0
  281. sage/schemes/plane_conics/con_rational_function_field.py +580 -0
  282. sage/schemes/plane_conics/constructor.py +249 -0
  283. sage/schemes/plane_quartics/all.py +2 -0
  284. sage/schemes/plane_quartics/quartic_constructor.py +71 -0
  285. sage/schemes/plane_quartics/quartic_generic.py +73 -0
  286. sage/schemes/riemann_surfaces/all.py +1 -0
  287. sage/schemes/riemann_surfaces/riemann_surface.py +4117 -0
  288. sage_wheels/share/cremona/cremona_mini.db +0 -0
  289. sage_wheels/share/ellcurves/rank0 +30427 -0
  290. sage_wheels/share/ellcurves/rank1 +31871 -0
  291. sage_wheels/share/ellcurves/rank10 +6 -0
  292. sage_wheels/share/ellcurves/rank11 +6 -0
  293. sage_wheels/share/ellcurves/rank12 +1 -0
  294. sage_wheels/share/ellcurves/rank14 +1 -0
  295. sage_wheels/share/ellcurves/rank15 +1 -0
  296. sage_wheels/share/ellcurves/rank17 +1 -0
  297. sage_wheels/share/ellcurves/rank19 +1 -0
  298. sage_wheels/share/ellcurves/rank2 +2388 -0
  299. sage_wheels/share/ellcurves/rank20 +1 -0
  300. sage_wheels/share/ellcurves/rank21 +1 -0
  301. sage_wheels/share/ellcurves/rank22 +1 -0
  302. sage_wheels/share/ellcurves/rank23 +1 -0
  303. sage_wheels/share/ellcurves/rank24 +1 -0
  304. sage_wheels/share/ellcurves/rank28 +1 -0
  305. sage_wheels/share/ellcurves/rank3 +836 -0
  306. sage_wheels/share/ellcurves/rank4 +10 -0
  307. sage_wheels/share/ellcurves/rank5 +5 -0
  308. sage_wheels/share/ellcurves/rank6 +5 -0
  309. sage_wheels/share/ellcurves/rank7 +5 -0
  310. sage_wheels/share/ellcurves/rank8 +6 -0
  311. sage_wheels/share/ellcurves/rank9 +7 -0
@@ -0,0 +1,351 @@
1
+ # sage_setup: distribution = sagemath-schemes
2
+ # sage.doctest: needs sage.combinat sage.graphs
3
+ r"""
4
+ Elements of Hecke modular forms spaces
5
+
6
+ AUTHORS:
7
+
8
+ - Jonas Jermann (2013): initial version
9
+ """
10
+
11
+ # ****************************************************************************
12
+ # Copyright (C) 2013-2014 Jonas Jermann <jjermann2@gmail.com>
13
+ #
14
+ # Distributed under the terms of the GNU General Public License (GPL)
15
+ # as published by the Free Software Foundation; either version 2 of
16
+ # the License, or (at your option) any later version.
17
+ # https://www.gnu.org/licenses/
18
+ # ****************************************************************************
19
+
20
+ from .graded_ring_element import FormsRingElement
21
+
22
+
23
+ class FormsElement(FormsRingElement):
24
+ """
25
+ (Hecke) modular forms.
26
+ """
27
+
28
+ def __init__(self, parent, rat):
29
+ r"""
30
+ An element of a space of (Hecke) modular forms.
31
+
32
+ INPUT:
33
+
34
+ - ``parent`` -- a modular form space
35
+
36
+ - ``rat`` -- a rational function which corresponds to a
37
+ modular form in the modular form space
38
+
39
+ OUTPUT:
40
+
41
+ A (Hecke) modular form element corresponding to the given rational function
42
+ with the given parent space.
43
+
44
+ EXAMPLES::
45
+
46
+ sage: # needs sage.symbolic
47
+ sage: from sage.modular.modform_hecketriangle.space import ModularForms
48
+ sage: x,y,z,d = var("x,y,z,d")
49
+ sage: MF = ModularForms(n=5, k=20/3, ep=1)
50
+ sage: MF.default_prec(3)
51
+ sage: el = MF(x^5*d - y^2*d)
52
+ sage: el
53
+ q - 9/(200*d)*q^2 + O(q^3)
54
+ sage: el.rat()
55
+ x^5*d - y^2*d
56
+ sage: el.parent()
57
+ ModularForms(n=5, k=20/3, ep=1) over Integer Ring
58
+ sage: el.rat().parent()
59
+ Fraction Field of Multivariate Polynomial Ring in x, y, z, d over Integer Ring
60
+ sage: subspace = MF.subspace([MF.gen(1)])
61
+ sage: ss_el = subspace(x^5*d - y^2*d)
62
+ sage: ss_el == el
63
+ True
64
+ sage: ss_el.parent()
65
+ Subspace of dimension 1 of ModularForms(n=5, k=20/3, ep=1) over Integer Ring
66
+ """
67
+ super().__init__(parent, rat)
68
+
69
+ if self.AT(["quasi"]) >= self._analytic_type:
70
+ pass
71
+ elif not (self.is_homogeneous() and
72
+ self._weight == parent.weight() and
73
+ self._ep == parent.ep()):
74
+ raise ValueError("{} does not correspond to an element of {}.".format(rat, parent))
75
+
76
+ from .subspace import SubSpaceForms
77
+ if isinstance(parent, SubSpaceForms) and (parent._module is not None):
78
+ try:
79
+ self.coordinate_vector()
80
+ except TypeError:
81
+ raise ValueError("{} does not correspond to an element of {}.".format(rat, parent))
82
+
83
+ def _repr_(self):
84
+ """
85
+ Return the string representation of ``self``.
86
+
87
+ EXAMPLES::
88
+
89
+ sage: # needs sage.symbolic
90
+ sage: from sage.modular.modform_hecketriangle.space import QuasiModularForms
91
+ sage: x,y,z,d = var("x,y,z,d")
92
+ sage: QuasiModularForms(n=5, k=10, ep=-1)(x^3*z^3 - y^3)
93
+ 21/(20*d)*q - 4977/(16000*d^2)*q^2 + 297829/(12800000*d^3)*q^3 + 27209679/(20480000000*d^4)*q^4 + O(q^5)
94
+ sage: QuasiModularForms(n=infinity, k=8, ep=1)(x*(x-y^2))
95
+ 64*q + 512*q^2 + 768*q^3 - 4096*q^4 + O(q^5)
96
+ """
97
+
98
+ return self._qexp_repr()
99
+
100
+ # This function is just listed here to emphasize the choice used
101
+ # for the latex representation of ``self``
102
+ def _latex_(self):
103
+ r"""
104
+ Return the LaTeX representation of ``self``.
105
+
106
+ EXAMPLES::
107
+
108
+ sage: # needs sage.symbolic
109
+ sage: from sage.modular.modform_hecketriangle.space import QuasiModularForms
110
+ sage: x,y,z,d = var("x,y,z,d")
111
+ sage: latex(QuasiModularForms(n=5, k=10, ep=-1)(x^3*z^3 - y^3))
112
+ f_{\rho}^{3} E_{2}^{3} - f_{i}^{3}
113
+ sage: latex(QuasiModularForms(n=infinity, k=8, ep=1)(x*(x-y^2)))
114
+ -E_{4} f_{i}^{2} + E_{4}^{2}
115
+ """
116
+ return super()._latex_()
117
+
118
+ def coordinate_vector(self):
119
+ r"""
120
+ Return the coordinate vector of ``self`` with
121
+ respect to ``self.parent().gens()``.
122
+
123
+ .. NOTE::
124
+
125
+ This uses the corresponding function of the
126
+ parent. If the parent has not defined a coordinate
127
+ vector function or a module for coordinate vectors
128
+ then an exception is raised by the parent
129
+ (default implementation).
130
+
131
+ EXAMPLES::
132
+
133
+ sage: from sage.modular.modform_hecketriangle.space import ModularForms
134
+ sage: MF = ModularForms(n=4, k=24, ep=-1)
135
+ sage: MF.gen(0).coordinate_vector().parent()
136
+ Vector space of dimension 3 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring
137
+ sage: MF.gen(0).coordinate_vector()
138
+ (1, 0, 0)
139
+ sage: subspace = MF.subspace([MF.gen(0), MF.gen(2)])
140
+ sage: subspace.gen(0).coordinate_vector().parent()
141
+ Vector space of dimension 2 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring
142
+ sage: subspace.gen(0).coordinate_vector()
143
+ (1, 0)
144
+ sage: subspace.gen(0).coordinate_vector() == subspace.coordinate_vector(subspace.gen(0))
145
+ True
146
+ """
147
+ return self.parent().coordinate_vector(self)
148
+
149
+ def ambient_coordinate_vector(self):
150
+ r"""
151
+ Return the coordinate vector of ``self`` with
152
+ respect to ``self.parent().ambient_space().gens()``.
153
+
154
+ The returned coordinate vector is an element
155
+ of ``self.parent().module()``.
156
+
157
+ .. NOTE::
158
+
159
+ This uses the corresponding function of the
160
+ parent. If the parent has not defined a coordinate
161
+ vector function or an ambient module for
162
+ coordinate vectors then an exception is raised
163
+ by the parent (default implementation).
164
+
165
+ EXAMPLES::
166
+
167
+ sage: from sage.modular.modform_hecketriangle.space import ModularForms
168
+ sage: MF = ModularForms(n=4, k=24, ep=-1)
169
+ sage: MF.gen(0).ambient_coordinate_vector().parent()
170
+ Vector space of dimension 3 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring
171
+ sage: MF.gen(0).ambient_coordinate_vector()
172
+ (1, 0, 0)
173
+ sage: subspace = MF.subspace([MF.gen(0), MF.gen(2)])
174
+ sage: subspace.gen(0).ambient_coordinate_vector().parent()
175
+ Vector space of degree 3 and dimension 2 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring
176
+ Basis matrix:
177
+ [1 0 0]
178
+ [0 0 1]
179
+ sage: subspace.gen(0).ambient_coordinate_vector()
180
+ (1, 0, 0)
181
+ sage: subspace.gen(0).ambient_coordinate_vector() == subspace.ambient_coordinate_vector(subspace.gen(0))
182
+ True
183
+ """
184
+ return self.parent().ambient_coordinate_vector(self)
185
+
186
+ def lseries(self, num_prec=None, max_imaginary_part=0, max_asymp_coeffs=40):
187
+ r"""
188
+ Return the `L`-series of ``self`` if ``self`` is modular and holomorphic.
189
+
190
+ This relies on the (pari) based function ``Dokchitser``.
191
+
192
+ INPUT:
193
+
194
+ - ``num_prec`` -- integer denoting the to-be-used numerical precision.
195
+ If integer ``num_prec=None`` (default) the default
196
+ numerical precision of the parent of ``self`` is used.
197
+
198
+ - ``max_imaginary_part`` -- a real number (default: 0), indicating up
199
+ to which imaginary part the `L`-series is going to be studied
200
+
201
+ - ``max_asymp_coeffs`` -- integer (default: 40)
202
+
203
+ OUTPUT:
204
+
205
+ An interface to Tim Dokchitser's program for computing `L`-series, namely
206
+ the series given by the Fourier coefficients of ``self``.
207
+
208
+ EXAMPLES::
209
+
210
+ sage: from sage.modular.modform.eis_series import eisenstein_series_lseries
211
+ sage: from sage.modular.modform_hecketriangle.space import ModularForms
212
+ sage: f = ModularForms(n=3, k=4).E4()/240
213
+ sage: L = f.lseries()
214
+ sage: L
215
+ L-series associated to the modular form 1/240 + q + 9*q^2 + 28*q^3 + 73*q^4 + O(q^5)
216
+ sage: L.conductor
217
+ 1
218
+ sage: L(1).prec()
219
+ 53
220
+ sage: L.check_functional_equation() < 2^(-50)
221
+ True
222
+ sage: L(1)
223
+ -0.0304484570583...
224
+ sage: abs(L(1) - eisenstein_series_lseries(4)(1)) < 2^(-53)
225
+ True
226
+ sage: L.derivative(1, 1)
227
+ -0.0504570844798...
228
+ sage: L.derivative(1, 2)/2
229
+ -0.0350657360354...
230
+ sage: L.taylor_series(1, 3)
231
+ -0.0304484570583... - 0.0504570844798...*z - 0.0350657360354...*z^2 + O(z^3)
232
+ sage: coeffs = f.q_expansion_vector(min_exp=0, max_exp=20, fix_d=True)
233
+ sage: sum([coeffs[k] * ZZ(k)^(-10) for k in range(1,len(coeffs))]).n(53)
234
+ 1.00935215408...
235
+ sage: L(10)
236
+ 1.00935215649...
237
+
238
+ sage: f = ModularForms(n=6, k=4).E4()
239
+ sage: L = f.lseries(num_prec=200)
240
+ sage: L.conductor
241
+ 3
242
+ sage: L.check_functional_equation() < 2^(-180)
243
+ True
244
+ sage: L(1)
245
+ -2.92305187760575399490414692523085855811204642031749788...
246
+ sage: L(1).prec()
247
+ 200
248
+ sage: coeffs = f.q_expansion_vector(min_exp=0, max_exp=20, fix_d=True)
249
+ sage: sum([coeffs[k] * ZZ(k)^(-10) for k in range(1,len(coeffs))]).n(53)
250
+ 24.2281438789...
251
+ sage: L(10).n(53)
252
+ 24.2281439447...
253
+
254
+ sage: f = ModularForms(n=8, k=6, ep=-1).E6()
255
+ sage: L = f.lseries()
256
+ sage: L.check_functional_equation() < 2^(-45)
257
+ True
258
+ sage: L.taylor_series(3, 3)
259
+ 0.000000000000... + 0.867197036668...*z + 0.261129628199...*z^2 + O(z^3)
260
+ sage: coeffs = f.q_expansion_vector(min_exp=0, max_exp=20, fix_d=True)
261
+ sage: sum([coeffs[k]*k^(-10) for k in range(1,len(coeffs))]).n(53)
262
+ -13.0290002560...
263
+ sage: L(10).n(53)
264
+ -13.0290184579...
265
+
266
+ sage: # long time
267
+ sage: f = (ModularForms(n=17, k=24).Delta()^2)
268
+ sage: L = f.lseries()
269
+ sage: L.check_functional_equation() < 2^(-50)
270
+ True
271
+ sage: L.taylor_series(12, 3)
272
+ 0.000683924755280... - 0.000875942285963...*z + 0.000647618966023...*z^2 + O(z^3)
273
+ sage: coeffs = f.q_expansion_vector(min_exp=0, max_exp=20, fix_d=True)
274
+ sage: sum([coeffs[k]*k^(-30) for k in range(1,len(coeffs))]).n(53)
275
+ 9.31562890589...e-10
276
+ sage: L(30).n(53)
277
+ 9.31562890589...e-10
278
+
279
+ sage: f = ModularForms(n=infinity, k=2, ep=-1).f_i()
280
+ sage: L = f.lseries()
281
+ sage: L.check_functional_equation() < 2^(-50)
282
+ True
283
+ sage: L.taylor_series(1, 3)
284
+ 0.000000000000... + 5.76543616701...*z + 9.92776715593...*z^2 + O(z^3)
285
+ sage: coeffs = f.q_expansion_vector(min_exp=0, max_exp=20, fix_d=True)
286
+ sage: sum([coeffs[k] * ZZ(k)^(-10) for k in range(1,len(coeffs))]).n(53)
287
+ -23.9781792831...
288
+ sage: L(10).n(53)
289
+ -23.9781792831...
290
+ """
291
+ from sage.rings.integer_ring import ZZ
292
+ from sage.symbolic.constants import pi
293
+ from sage.misc.functional import sqrt
294
+ from sage.lfunctions.dokchitser import Dokchitser
295
+
296
+ if (not (self.is_modular() and self.is_holomorphic()) or self.weight() == 0):
297
+ raise NotImplementedError("L-series are only implemented for non-trivial holomorphic modular forms.")
298
+
299
+ if num_prec is None:
300
+ num_prec = self.parent().default_num_prec()
301
+
302
+ conductor = self.group().lam()**2
303
+ if self.group().is_arithmetic():
304
+ conductor = ZZ(conductor)
305
+ else:
306
+ conductor = conductor.n(num_prec)
307
+
308
+ gammaV = [0, 1]
309
+ weight = self.weight()
310
+ eps = self.ep()
311
+
312
+ # L^*(s) = cor_factor * (2*pi)^(-s)gamma(s)*L(f,s),
313
+ cor_factor = (2 * sqrt(pi)).n(num_prec)
314
+
315
+ if self.is_cuspidal():
316
+ poles = []
317
+ residues = []
318
+ else:
319
+ poles = [weight]
320
+ val_inf = self.q_expansion_fixed_d(prec=1, d_num_prec=num_prec)[0]
321
+ residue = eps * val_inf * cor_factor
322
+
323
+ # (pari) BUG?
324
+ # The residue of the above L^*(s) differs by a factor -1 from
325
+ # the residue pari expects (?!?).
326
+ residue *= -1
327
+
328
+ residues = [residue]
329
+
330
+ L = Dokchitser(conductor=conductor,
331
+ gammaV=gammaV,
332
+ weight=weight,
333
+ eps=eps,
334
+ poles=poles,
335
+ residues=residues,
336
+ prec=num_prec)
337
+
338
+ # TODO for later: Figure out the correct coefficient growth and do L.set_coeff_growth(...)
339
+
340
+ # num_coeffs = L.num_coeffs()
341
+ num_coeffs = L.num_coeffs(1.2)
342
+ coeff_vector = list(self.q_expansion_vector(min_exp=0, max_exp=num_coeffs + 1, fix_d=True))
343
+ pari_precode = "coeff = {};".format(coeff_vector)
344
+
345
+ L.init_coeffs(v="coeff[k+1]", pari_precode=pari_precode,
346
+ max_imaginary_part=max_imaginary_part,
347
+ max_asymp_coeffs=max_asymp_coeffs)
348
+ L.check_functional_equation()
349
+ L.rename("L-series associated to the {} form {}".format("cusp" if self.is_cuspidal() else "modular", self))
350
+
351
+ return L