passagemath-schemes 10.6.40__cp314-cp314-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.
Potentially problematic release.
This version of passagemath-schemes might be problematic. Click here for more details.
- passagemath_schemes/.dylibs/libflint.22.0.dylib +0 -0
- passagemath_schemes/.dylibs/libgmp.10.dylib +0 -0
- passagemath_schemes/.dylibs/libgmpxx.4.dylib +0 -0
- passagemath_schemes/.dylibs/libmpfr.6.dylib +0 -0
- passagemath_schemes/__init__.py +3 -0
- passagemath_schemes-10.6.40.dist-info/METADATA +204 -0
- passagemath_schemes-10.6.40.dist-info/METADATA.bak +205 -0
- passagemath_schemes-10.6.40.dist-info/RECORD +314 -0
- passagemath_schemes-10.6.40.dist-info/WHEEL +6 -0
- passagemath_schemes-10.6.40.dist-info/top_level.txt +3 -0
- sage/all__sagemath_schemes.py +23 -0
- sage/databases/all__sagemath_schemes.py +7 -0
- sage/databases/cremona.py +1723 -0
- sage/dynamics/all__sagemath_schemes.py +2 -0
- sage/dynamics/arithmetic_dynamics/affine_ds.py +1083 -0
- sage/dynamics/arithmetic_dynamics/all.py +14 -0
- sage/dynamics/arithmetic_dynamics/berkovich_ds.py +1101 -0
- sage/dynamics/arithmetic_dynamics/dynamical_semigroup.py +1543 -0
- sage/dynamics/arithmetic_dynamics/endPN_automorphism_group.py +2426 -0
- sage/dynamics/arithmetic_dynamics/endPN_minimal_model.py +1169 -0
- sage/dynamics/arithmetic_dynamics/generic_ds.py +663 -0
- sage/dynamics/arithmetic_dynamics/product_projective_ds.py +339 -0
- sage/dynamics/arithmetic_dynamics/projective_ds.py +9558 -0
- sage/dynamics/arithmetic_dynamics/projective_ds_helper.cpython-314-darwin.so +0 -0
- sage/dynamics/arithmetic_dynamics/projective_ds_helper.pyx +301 -0
- sage/dynamics/arithmetic_dynamics/wehlerK3.py +2576 -0
- sage/lfunctions/all.py +18 -0
- sage/lfunctions/dokchitser.py +745 -0
- sage/lfunctions/pari.py +818 -0
- sage/lfunctions/zero_sums.cpython-314-darwin.so +0 -0
- sage/lfunctions/zero_sums.pyx +1847 -0
- sage/modular/abvar/abvar.py +5135 -0
- sage/modular/abvar/abvar_ambient_jacobian.py +413 -0
- sage/modular/abvar/abvar_newform.py +244 -0
- sage/modular/abvar/all.py +8 -0
- sage/modular/abvar/constructor.py +186 -0
- sage/modular/abvar/cuspidal_subgroup.py +371 -0
- sage/modular/abvar/finite_subgroup.py +896 -0
- sage/modular/abvar/homology.py +720 -0
- sage/modular/abvar/homspace.py +998 -0
- sage/modular/abvar/lseries.py +415 -0
- sage/modular/abvar/morphism.py +935 -0
- sage/modular/abvar/torsion_point.py +274 -0
- sage/modular/abvar/torsion_subgroup.py +740 -0
- sage/modular/all.py +43 -0
- sage/modular/arithgroup/all.py +20 -0
- sage/modular/arithgroup/arithgroup_element.cpython-314-darwin.so +0 -0
- sage/modular/arithgroup/arithgroup_element.pyx +474 -0
- sage/modular/arithgroup/arithgroup_generic.py +1402 -0
- sage/modular/arithgroup/arithgroup_perm.py +2692 -0
- sage/modular/arithgroup/congroup.cpython-314-darwin.so +0 -0
- sage/modular/arithgroup/congroup.pyx +334 -0
- sage/modular/arithgroup/congroup_gamma.py +363 -0
- sage/modular/arithgroup/congroup_gamma0.py +692 -0
- sage/modular/arithgroup/congroup_gamma1.py +653 -0
- sage/modular/arithgroup/congroup_gammaH.py +1469 -0
- sage/modular/arithgroup/congroup_generic.py +628 -0
- sage/modular/arithgroup/congroup_sl2z.py +267 -0
- sage/modular/arithgroup/farey_symbol.cpython-314-darwin.so +0 -0
- sage/modular/arithgroup/farey_symbol.pyx +1066 -0
- sage/modular/arithgroup/tests.py +418 -0
- sage/modular/btquotients/all.py +4 -0
- sage/modular/btquotients/btquotient.py +3753 -0
- sage/modular/btquotients/pautomorphicform.py +2570 -0
- sage/modular/buzzard.py +100 -0
- sage/modular/congroup.py +29 -0
- sage/modular/congroup_element.py +13 -0
- sage/modular/cusps.py +1109 -0
- sage/modular/cusps_nf.py +1270 -0
- sage/modular/dims.py +569 -0
- sage/modular/dirichlet.py +3310 -0
- sage/modular/drinfeld_modform/all.py +2 -0
- sage/modular/drinfeld_modform/element.py +446 -0
- sage/modular/drinfeld_modform/ring.py +773 -0
- sage/modular/drinfeld_modform/tutorial.py +236 -0
- sage/modular/etaproducts.py +1065 -0
- sage/modular/hecke/algebra.py +746 -0
- sage/modular/hecke/all.py +20 -0
- sage/modular/hecke/ambient_module.py +1019 -0
- sage/modular/hecke/degenmap.py +119 -0
- sage/modular/hecke/element.py +325 -0
- sage/modular/hecke/hecke_operator.py +780 -0
- sage/modular/hecke/homspace.py +206 -0
- sage/modular/hecke/module.py +1767 -0
- sage/modular/hecke/morphism.py +174 -0
- sage/modular/hecke/submodule.py +989 -0
- sage/modular/hypergeometric_misc.cpython-314-darwin.so +0 -0
- sage/modular/hypergeometric_misc.pxd +4 -0
- sage/modular/hypergeometric_misc.pyx +166 -0
- sage/modular/hypergeometric_motive.py +2017 -0
- sage/modular/local_comp/all.py +2 -0
- sage/modular/local_comp/liftings.py +292 -0
- sage/modular/local_comp/local_comp.py +1071 -0
- sage/modular/local_comp/smoothchar.py +1825 -0
- sage/modular/local_comp/type_space.py +748 -0
- sage/modular/modform/all.py +30 -0
- sage/modular/modform/ambient.py +815 -0
- sage/modular/modform/ambient_R.py +177 -0
- sage/modular/modform/ambient_eps.py +306 -0
- sage/modular/modform/ambient_g0.py +124 -0
- sage/modular/modform/ambient_g1.py +204 -0
- sage/modular/modform/constructor.py +545 -0
- sage/modular/modform/cuspidal_submodule.py +708 -0
- sage/modular/modform/defaults.py +14 -0
- sage/modular/modform/eis_series.py +505 -0
- sage/modular/modform/eisenstein_submodule.py +663 -0
- sage/modular/modform/element.py +4131 -0
- sage/modular/modform/find_generators.py +59 -0
- sage/modular/modform/half_integral.py +154 -0
- sage/modular/modform/hecke_operator_on_qexp.py +247 -0
- sage/modular/modform/j_invariant.py +47 -0
- sage/modular/modform/l_series_gross_zagier.py +133 -0
- sage/modular/modform/l_series_gross_zagier_coeffs.cpython-314-darwin.so +0 -0
- sage/modular/modform/l_series_gross_zagier_coeffs.pyx +177 -0
- sage/modular/modform/notes.py +45 -0
- sage/modular/modform/numerical.py +514 -0
- sage/modular/modform/periods.py +14 -0
- sage/modular/modform/ring.py +1257 -0
- sage/modular/modform/space.py +1860 -0
- sage/modular/modform/submodule.py +118 -0
- sage/modular/modform/tests.py +64 -0
- sage/modular/modform/theta.py +110 -0
- sage/modular/modform/vm_basis.py +381 -0
- sage/modular/modform/weight1.py +220 -0
- sage/modular/modform_hecketriangle/abstract_ring.py +1932 -0
- sage/modular/modform_hecketriangle/abstract_space.py +2528 -0
- sage/modular/modform_hecketriangle/all.py +30 -0
- sage/modular/modform_hecketriangle/analytic_type.py +590 -0
- sage/modular/modform_hecketriangle/constructor.py +416 -0
- sage/modular/modform_hecketriangle/element.py +351 -0
- sage/modular/modform_hecketriangle/functors.py +752 -0
- sage/modular/modform_hecketriangle/graded_ring.py +541 -0
- sage/modular/modform_hecketriangle/graded_ring_element.py +2225 -0
- sage/modular/modform_hecketriangle/hecke_triangle_group_element.py +3352 -0
- sage/modular/modform_hecketriangle/hecke_triangle_groups.py +1432 -0
- sage/modular/modform_hecketriangle/readme.py +1214 -0
- sage/modular/modform_hecketriangle/series_constructor.py +580 -0
- sage/modular/modform_hecketriangle/space.py +1037 -0
- sage/modular/modform_hecketriangle/subspace.py +423 -0
- sage/modular/modsym/all.py +17 -0
- sage/modular/modsym/ambient.py +3846 -0
- sage/modular/modsym/boundary.py +1420 -0
- sage/modular/modsym/element.py +336 -0
- sage/modular/modsym/g1list.py +178 -0
- sage/modular/modsym/ghlist.py +182 -0
- sage/modular/modsym/hecke_operator.py +73 -0
- sage/modular/modsym/manin_symbol.cpython-314-darwin.so +0 -0
- sage/modular/modsym/manin_symbol.pxd +5 -0
- sage/modular/modsym/manin_symbol.pyx +497 -0
- sage/modular/modsym/manin_symbol_list.py +1295 -0
- sage/modular/modsym/modsym.py +400 -0
- sage/modular/modsym/modular_symbols.py +384 -0
- sage/modular/modsym/p1list.cpython-314-darwin.so +0 -0
- sage/modular/modsym/p1list.pxd +29 -0
- sage/modular/modsym/p1list.pyx +1372 -0
- sage/modular/modsym/p1list_nf.py +1241 -0
- sage/modular/modsym/relation_matrix.py +591 -0
- sage/modular/modsym/relation_matrix_pyx.cpython-314-darwin.so +0 -0
- sage/modular/modsym/relation_matrix_pyx.pyx +108 -0
- sage/modular/modsym/space.py +2468 -0
- sage/modular/modsym/subspace.py +455 -0
- sage/modular/modsym/tests.py +375 -0
- sage/modular/multiple_zeta.py +2632 -0
- sage/modular/multiple_zeta_F_algebra.py +786 -0
- sage/modular/overconvergent/all.py +6 -0
- sage/modular/overconvergent/genus0.py +1878 -0
- sage/modular/overconvergent/hecke_series.py +1187 -0
- sage/modular/overconvergent/weightspace.py +778 -0
- sage/modular/pollack_stevens/all.py +4 -0
- sage/modular/pollack_stevens/distributions.py +874 -0
- sage/modular/pollack_stevens/fund_domain.py +1572 -0
- sage/modular/pollack_stevens/manin_map.py +859 -0
- sage/modular/pollack_stevens/modsym.py +1593 -0
- sage/modular/pollack_stevens/padic_lseries.py +417 -0
- sage/modular/pollack_stevens/sigma0.py +534 -0
- sage/modular/pollack_stevens/space.py +1076 -0
- sage/modular/quasimodform/all.py +3 -0
- sage/modular/quasimodform/element.py +845 -0
- sage/modular/quasimodform/ring.py +828 -0
- sage/modular/quatalg/all.py +3 -0
- sage/modular/quatalg/brandt.py +1642 -0
- sage/modular/ssmod/all.py +8 -0
- sage/modular/ssmod/ssmod.py +827 -0
- sage/rings/all__sagemath_schemes.py +1 -0
- sage/rings/polynomial/all__sagemath_schemes.py +1 -0
- sage/rings/polynomial/binary_form_reduce.py +585 -0
- sage/schemes/all.py +41 -0
- sage/schemes/berkovich/all.py +6 -0
- sage/schemes/berkovich/berkovich_cp_element.py +2582 -0
- sage/schemes/berkovich/berkovich_space.py +748 -0
- sage/schemes/curves/affine_curve.py +2928 -0
- sage/schemes/curves/all.py +33 -0
- sage/schemes/curves/closed_point.py +434 -0
- sage/schemes/curves/constructor.py +381 -0
- sage/schemes/curves/curve.py +542 -0
- sage/schemes/curves/plane_curve_arrangement.py +1283 -0
- sage/schemes/curves/point.py +463 -0
- sage/schemes/curves/projective_curve.py +3026 -0
- sage/schemes/curves/zariski_vankampen.py +1932 -0
- sage/schemes/cyclic_covers/all.py +2 -0
- sage/schemes/cyclic_covers/charpoly_frobenius.py +320 -0
- sage/schemes/cyclic_covers/constructor.py +137 -0
- sage/schemes/cyclic_covers/cycliccover_finite_field.py +1309 -0
- sage/schemes/cyclic_covers/cycliccover_generic.py +310 -0
- sage/schemes/elliptic_curves/BSD.py +1036 -0
- sage/schemes/elliptic_curves/Qcurves.py +592 -0
- sage/schemes/elliptic_curves/addition_formulas_ring.py +94 -0
- sage/schemes/elliptic_curves/all.py +49 -0
- sage/schemes/elliptic_curves/cardinality.py +609 -0
- sage/schemes/elliptic_curves/cm.py +1102 -0
- sage/schemes/elliptic_curves/constructor.py +1552 -0
- sage/schemes/elliptic_curves/ec_database.py +175 -0
- sage/schemes/elliptic_curves/ell_curve_isogeny.py +3972 -0
- sage/schemes/elliptic_curves/ell_egros.py +459 -0
- sage/schemes/elliptic_curves/ell_field.py +2836 -0
- sage/schemes/elliptic_curves/ell_finite_field.py +3359 -0
- sage/schemes/elliptic_curves/ell_generic.py +3760 -0
- sage/schemes/elliptic_curves/ell_local_data.py +1207 -0
- sage/schemes/elliptic_curves/ell_modular_symbols.py +775 -0
- sage/schemes/elliptic_curves/ell_number_field.py +4220 -0
- sage/schemes/elliptic_curves/ell_padic_field.py +107 -0
- sage/schemes/elliptic_curves/ell_point.py +4787 -0
- sage/schemes/elliptic_curves/ell_rational_field.py +7368 -0
- sage/schemes/elliptic_curves/ell_tate_curve.py +671 -0
- sage/schemes/elliptic_curves/ell_torsion.py +436 -0
- sage/schemes/elliptic_curves/ell_wp.py +352 -0
- sage/schemes/elliptic_curves/formal_group.py +760 -0
- sage/schemes/elliptic_curves/gal_reps.py +1459 -0
- sage/schemes/elliptic_curves/gal_reps_number_field.py +1669 -0
- sage/schemes/elliptic_curves/gp_simon.py +152 -0
- sage/schemes/elliptic_curves/heegner.py +7335 -0
- sage/schemes/elliptic_curves/height.py +2109 -0
- sage/schemes/elliptic_curves/hom.py +1406 -0
- sage/schemes/elliptic_curves/hom_composite.py +934 -0
- sage/schemes/elliptic_curves/hom_frobenius.py +522 -0
- sage/schemes/elliptic_curves/hom_scalar.py +531 -0
- sage/schemes/elliptic_curves/hom_sum.py +682 -0
- sage/schemes/elliptic_curves/hom_velusqrt.py +1290 -0
- sage/schemes/elliptic_curves/homset.py +271 -0
- sage/schemes/elliptic_curves/isogeny_class.py +1521 -0
- sage/schemes/elliptic_curves/isogeny_small_degree.py +2797 -0
- sage/schemes/elliptic_curves/jacobian.py +237 -0
- sage/schemes/elliptic_curves/kodaira_symbol.py +344 -0
- sage/schemes/elliptic_curves/kraus.py +1014 -0
- sage/schemes/elliptic_curves/lseries_ell.py +943 -0
- sage/schemes/elliptic_curves/mod5family.py +105 -0
- sage/schemes/elliptic_curves/mod_poly.py +197 -0
- sage/schemes/elliptic_curves/mod_sym_num.cpython-314-darwin.so +0 -0
- sage/schemes/elliptic_curves/mod_sym_num.pyx +3796 -0
- sage/schemes/elliptic_curves/modular_parametrization.py +305 -0
- sage/schemes/elliptic_curves/padic_lseries.py +1793 -0
- sage/schemes/elliptic_curves/padics.py +1816 -0
- sage/schemes/elliptic_curves/period_lattice.py +2234 -0
- sage/schemes/elliptic_curves/period_lattice_region.cpython-314-darwin.so +0 -0
- sage/schemes/elliptic_curves/period_lattice_region.pyx +722 -0
- sage/schemes/elliptic_curves/saturation.py +715 -0
- sage/schemes/elliptic_curves/sha_tate.py +1158 -0
- sage/schemes/elliptic_curves/weierstrass_morphism.py +1117 -0
- sage/schemes/elliptic_curves/weierstrass_transform.py +200 -0
- sage/schemes/hyperelliptic_curves/all.py +6 -0
- sage/schemes/hyperelliptic_curves/constructor.py +291 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_finite_field.py +1914 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_g2.py +192 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py +954 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_padic_field.py +1332 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_rational_field.py +84 -0
- sage/schemes/hyperelliptic_curves/invariants.py +410 -0
- sage/schemes/hyperelliptic_curves/jacobian_endomorphism_utils.py +315 -0
- sage/schemes/hyperelliptic_curves/jacobian_g2.py +32 -0
- sage/schemes/hyperelliptic_curves/jacobian_generic.py +419 -0
- sage/schemes/hyperelliptic_curves/jacobian_homset.py +186 -0
- sage/schemes/hyperelliptic_curves/jacobian_morphism.py +875 -0
- sage/schemes/hyperelliptic_curves/kummer_surface.py +99 -0
- sage/schemes/hyperelliptic_curves/mestre.py +302 -0
- sage/schemes/hyperelliptic_curves/monsky_washnitzer.py +3871 -0
- sage/schemes/jacobians/abstract_jacobian.py +277 -0
- sage/schemes/jacobians/all.py +2 -0
- sage/schemes/overview.py +161 -0
- sage/schemes/plane_conics/all.py +22 -0
- sage/schemes/plane_conics/con_field.py +1296 -0
- sage/schemes/plane_conics/con_finite_field.py +158 -0
- sage/schemes/plane_conics/con_number_field.py +456 -0
- sage/schemes/plane_conics/con_rational_field.py +406 -0
- sage/schemes/plane_conics/con_rational_function_field.py +580 -0
- sage/schemes/plane_conics/constructor.py +249 -0
- sage/schemes/plane_quartics/all.py +2 -0
- sage/schemes/plane_quartics/quartic_constructor.py +71 -0
- sage/schemes/plane_quartics/quartic_generic.py +73 -0
- sage/schemes/riemann_surfaces/all.py +1 -0
- sage/schemes/riemann_surfaces/riemann_surface.py +4117 -0
- sage_wheels/share/cremona/cremona_mini.db +0 -0
- sage_wheels/share/ellcurves/rank0 +30427 -0
- sage_wheels/share/ellcurves/rank1 +31871 -0
- sage_wheels/share/ellcurves/rank10 +6 -0
- sage_wheels/share/ellcurves/rank11 +6 -0
- sage_wheels/share/ellcurves/rank12 +1 -0
- sage_wheels/share/ellcurves/rank14 +1 -0
- sage_wheels/share/ellcurves/rank15 +1 -0
- sage_wheels/share/ellcurves/rank17 +1 -0
- sage_wheels/share/ellcurves/rank19 +1 -0
- sage_wheels/share/ellcurves/rank2 +2388 -0
- sage_wheels/share/ellcurves/rank20 +1 -0
- sage_wheels/share/ellcurves/rank21 +1 -0
- sage_wheels/share/ellcurves/rank22 +1 -0
- sage_wheels/share/ellcurves/rank23 +1 -0
- sage_wheels/share/ellcurves/rank24 +1 -0
- sage_wheels/share/ellcurves/rank28 +1 -0
- sage_wheels/share/ellcurves/rank3 +836 -0
- sage_wheels/share/ellcurves/rank4 +10 -0
- sage_wheels/share/ellcurves/rank5 +5 -0
- sage_wheels/share/ellcurves/rank6 +5 -0
- sage_wheels/share/ellcurves/rank7 +5 -0
- sage_wheels/share/ellcurves/rank8 +6 -0
- 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
|