passagemath-schemes 10.8.1a4__cp314-cp314t-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.
- 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.8.1a4.dist-info/METADATA +203 -0
- passagemath_schemes-10.8.1a4.dist-info/METADATA.bak +204 -0
- passagemath_schemes-10.8.1a4.dist-info/RECORD +312 -0
- passagemath_schemes-10.8.1a4.dist-info/WHEEL +6 -0
- passagemath_schemes-10.8.1a4.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 +9556 -0
- sage/dynamics/arithmetic_dynamics/projective_ds_helper.cpython-314t-darwin.so +0 -0
- sage/dynamics/arithmetic_dynamics/projective_ds_helper.pyx +301 -0
- sage/dynamics/arithmetic_dynamics/wehlerK3.py +2578 -0
- sage/lfunctions/all.py +18 -0
- sage/lfunctions/dokchitser.py +727 -0
- sage/lfunctions/pari.py +971 -0
- sage/lfunctions/zero_sums.cpython-314t-darwin.so +0 -0
- sage/lfunctions/zero_sums.pyx +1847 -0
- sage/modular/abvar/abvar.py +5132 -0
- sage/modular/abvar/abvar_ambient_jacobian.py +414 -0
- sage/modular/abvar/abvar_newform.py +246 -0
- sage/modular/abvar/all.py +8 -0
- sage/modular/abvar/constructor.py +187 -0
- sage/modular/abvar/cuspidal_subgroup.py +371 -0
- sage/modular/abvar/finite_subgroup.py +896 -0
- sage/modular/abvar/homology.py +721 -0
- sage/modular/abvar/homspace.py +989 -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 +741 -0
- sage/modular/all.py +43 -0
- sage/modular/arithgroup/all.py +20 -0
- sage/modular/arithgroup/arithgroup_element.cpython-314t-darwin.so +0 -0
- sage/modular/arithgroup/arithgroup_element.pyx +474 -0
- sage/modular/arithgroup/arithgroup_generic.py +1406 -0
- sage/modular/arithgroup/arithgroup_perm.py +2692 -0
- sage/modular/arithgroup/congroup.cpython-314t-darwin.so +0 -0
- sage/modular/arithgroup/congroup.pyx +334 -0
- sage/modular/arithgroup/congroup_gamma.py +361 -0
- sage/modular/arithgroup/congroup_gamma0.py +692 -0
- sage/modular/arithgroup/congroup_gamma1.py +659 -0
- sage/modular/arithgroup/congroup_gammaH.py +1491 -0
- sage/modular/arithgroup/congroup_generic.py +630 -0
- sage/modular/arithgroup/congroup_sl2z.py +266 -0
- sage/modular/arithgroup/farey_symbol.cpython-314t-darwin.so +0 -0
- sage/modular/arithgroup/farey_symbol.pyx +1067 -0
- sage/modular/arithgroup/tests.py +425 -0
- sage/modular/btquotients/all.py +4 -0
- sage/modular/btquotients/btquotient.py +3736 -0
- sage/modular/btquotients/pautomorphicform.py +2564 -0
- sage/modular/buzzard.py +100 -0
- sage/modular/congroup.py +29 -0
- sage/modular/congroup_element.py +13 -0
- sage/modular/cusps.py +1107 -0
- sage/modular/cusps_nf.py +1270 -0
- sage/modular/dims.py +571 -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 +1076 -0
- sage/modular/hecke/algebra.py +725 -0
- sage/modular/hecke/all.py +19 -0
- sage/modular/hecke/ambient_module.py +994 -0
- sage/modular/hecke/degenmap.py +119 -0
- sage/modular/hecke/element.py +302 -0
- sage/modular/hecke/hecke_operator.py +736 -0
- sage/modular/hecke/homspace.py +185 -0
- sage/modular/hecke/module.py +1744 -0
- sage/modular/hecke/morphism.py +139 -0
- sage/modular/hecke/submodule.py +970 -0
- sage/modular/hypergeometric_misc.cpython-314t-darwin.so +0 -0
- sage/modular/hypergeometric_misc.pxd +4 -0
- sage/modular/hypergeometric_misc.pyx +166 -0
- sage/modular/hypergeometric_motive.py +2020 -0
- sage/modular/local_comp/all.py +2 -0
- sage/modular/local_comp/liftings.py +292 -0
- sage/modular/local_comp/local_comp.py +1070 -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 +817 -0
- sage/modular/modform/ambient_R.py +177 -0
- sage/modular/modform/ambient_eps.py +306 -0
- sage/modular/modform/ambient_g0.py +120 -0
- sage/modular/modform/ambient_g1.py +199 -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 +487 -0
- sage/modular/modform/eisenstein_submodule.py +663 -0
- sage/modular/modform/element.py +4105 -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 +127 -0
- sage/modular/modform/l_series_gross_zagier_coeffs.cpython-314t-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 +1859 -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 +380 -0
- sage/modular/modform/weight1.py +221 -0
- sage/modular/modform_hecketriangle/abstract_ring.py +1932 -0
- sage/modular/modform_hecketriangle/abstract_space.py +2527 -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 +3349 -0
- sage/modular/modform_hecketriangle/hecke_triangle_groups.py +1426 -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 +3844 -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-314t-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 +1291 -0
- sage/modular/modsym/modsym.py +400 -0
- sage/modular/modsym/modular_symbols.py +384 -0
- sage/modular/modsym/p1list_nf.py +1241 -0
- sage/modular/modsym/relation_matrix.py +591 -0
- sage/modular/modsym/relation_matrix_pyx.cpython-314t-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 +376 -0
- sage/modular/multiple_zeta.py +2635 -0
- sage/modular/multiple_zeta_F_algebra.py +789 -0
- sage/modular/overconvergent/all.py +6 -0
- sage/modular/overconvergent/genus0.py +1879 -0
- sage/modular/overconvergent/hecke_series.py +1187 -0
- sage/modular/overconvergent/weightspace.py +776 -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 +856 -0
- sage/modular/pollack_stevens/modsym.py +1590 -0
- sage/modular/pollack_stevens/padic_lseries.py +417 -0
- sage/modular/pollack_stevens/sigma0.py +534 -0
- sage/modular/pollack_stevens/space.py +1078 -0
- sage/modular/quasimodform/all.py +3 -0
- sage/modular/quasimodform/element.py +846 -0
- sage/modular/quasimodform/ring.py +826 -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 +700 -0
- sage/schemes/curves/affine_curve.py +2924 -0
- sage/schemes/curves/all.py +33 -0
- sage/schemes/curves/closed_point.py +434 -0
- sage/schemes/curves/constructor.py +397 -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 +3203 -0
- sage/schemes/curves/weighted_projective_curve.py +106 -0
- sage/schemes/curves/zariski_vankampen.py +1931 -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 +991 -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 +1103 -0
- sage/schemes/elliptic_curves/constructor.py +1530 -0
- sage/schemes/elliptic_curves/ec_database.py +175 -0
- sage/schemes/elliptic_curves/ell_curve_isogeny.py +3971 -0
- sage/schemes/elliptic_curves/ell_egros.py +457 -0
- sage/schemes/elliptic_curves/ell_field.py +2837 -0
- sage/schemes/elliptic_curves/ell_finite_field.py +3249 -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 +4944 -0
- sage/schemes/elliptic_curves/ell_rational_field.py +7184 -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 +1663 -0
- sage/schemes/elliptic_curves/gp_simon.py +152 -0
- sage/schemes/elliptic_curves/heegner.py +7328 -0
- sage/schemes/elliptic_curves/height.py +2108 -0
- sage/schemes/elliptic_curves/hom.py +1788 -0
- sage/schemes/elliptic_curves/hom_composite.py +1084 -0
- sage/schemes/elliptic_curves/hom_fractional.py +544 -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 +681 -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 +1523 -0
- sage/schemes/elliptic_curves/isogeny_small_degree.py +2797 -0
- sage/schemes/elliptic_curves/jacobian.py +247 -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 +915 -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-314t-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-314t-darwin.so +0 -0
- sage/schemes/elliptic_curves/period_lattice_region.pyx +722 -0
- sage/schemes/elliptic_curves/saturation.py +716 -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 +369 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_finite_field.py +1948 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_g2.py +192 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py +936 -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 +312 -0
- sage/schemes/hyperelliptic_curves/jacobian_g2.py +32 -0
- sage/schemes/hyperelliptic_curves/jacobian_generic.py +437 -0
- sage/schemes/hyperelliptic_curves/jacobian_homset.py +186 -0
- sage/schemes/hyperelliptic_curves/jacobian_morphism.py +878 -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 +3863 -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 +581 -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 +53 -0
- sage/schemes/riemann_surfaces/all.py +1 -0
- sage/schemes/riemann_surfaces/riemann_surface.py +4177 -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,177 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-schemes
|
|
2
|
+
r"""
|
|
3
|
+
Utilities for Gross-Zagier L-series
|
|
4
|
+
"""
|
|
5
|
+
from cysignals.memory cimport check_allocarray, check_calloc, sig_free
|
|
6
|
+
from cysignals.signals cimport sig_check, sig_on, sig_off
|
|
7
|
+
|
|
8
|
+
from sage.rings.fast_arith cimport arith_llong
|
|
9
|
+
cdef arith_llong arith = arith_llong()
|
|
10
|
+
|
|
11
|
+
from sage.arith.misc import kronecker_symbol
|
|
12
|
+
from sage.rings.integer_ring import ZZ
|
|
13
|
+
from sage.rings.power_series_ring import PowerSeriesRing
|
|
14
|
+
|
|
15
|
+
from libc.math cimport ceil, floor, sqrt
|
|
16
|
+
from libc.string cimport memcpy
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
cpdef to_series(L, var):
|
|
20
|
+
"""
|
|
21
|
+
Create a power series element out of a list ``L`` in the variable ``var``.
|
|
22
|
+
|
|
23
|
+
EXAMPLES::
|
|
24
|
+
|
|
25
|
+
sage: from sage.modular.modform.l_series_gross_zagier_coeffs import to_series
|
|
26
|
+
sage: to_series([1,10,100], 't')
|
|
27
|
+
1 + 10*t + 100*t^2 + O(t^3)
|
|
28
|
+
sage: to_series([0..5], CDF[['z']].0)
|
|
29
|
+
0.0 + 1.0*z + 2.0*z^2 + 3.0*z^3 + 4.0*z^4 + 5.0*z^5 + O(z^6)
|
|
30
|
+
"""
|
|
31
|
+
if var is None:
|
|
32
|
+
return L
|
|
33
|
+
if isinstance(var, str):
|
|
34
|
+
R = PowerSeriesRing(ZZ, var)
|
|
35
|
+
else:
|
|
36
|
+
R = var.parent()
|
|
37
|
+
return R(L).O(len(L))
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
# TODO, when quadratic form code stabilizes, add this there.
|
|
41
|
+
def bqf_theta_series(Q, long bound, var=None):
|
|
42
|
+
r"""
|
|
43
|
+
Return the theta series associated to a positive definite quadratic form.
|
|
44
|
+
|
|
45
|
+
For a given form `f = ax^2 + bxy + cy^2` this is the sum
|
|
46
|
+
|
|
47
|
+
.. MATH::
|
|
48
|
+
|
|
49
|
+
\sum_{(x,y) \in \ZZ^2} q^{f(x,y)} = \sum_{n=-\infty}^{\infty} r(n)q^n
|
|
50
|
+
|
|
51
|
+
where `r(n)` give the number of way `n` is represented by `f`.
|
|
52
|
+
|
|
53
|
+
INPUT:
|
|
54
|
+
|
|
55
|
+
- ``Q`` -- a positive definite quadratic form
|
|
56
|
+
- ``bound`` -- how many terms to compute
|
|
57
|
+
- ``var`` -- (optional) the variable in which to express this power series
|
|
58
|
+
|
|
59
|
+
OUTPUT: a power series in ``var``, or list of ints if ``var`` is unspecified
|
|
60
|
+
|
|
61
|
+
EXAMPLES::
|
|
62
|
+
|
|
63
|
+
sage: from sage.modular.modform.l_series_gross_zagier_coeffs import bqf_theta_series
|
|
64
|
+
sage: bqf_theta_series([2,1,5], 10)
|
|
65
|
+
[1, 0, 2, 0, 0, 2, 2, 0, 4, 0, 0]
|
|
66
|
+
sage: Q = BinaryQF([41,1,1])
|
|
67
|
+
sage: bqf_theta_series(Q, 50, ZZ[['q']].gen())
|
|
68
|
+
1 + 2*q + 2*q^4 + 2*q^9 + 2*q^16 + 2*q^25 + 2*q^36 + 4*q^41 + 4*q^43 + 4*q^47 + 2*q^49 + O(q^51)
|
|
69
|
+
"""
|
|
70
|
+
cdef long a, b, c
|
|
71
|
+
a, b, c = Q
|
|
72
|
+
cdef long* terms = bqf_theta_series_c(NULL, bound, a, b, c)
|
|
73
|
+
L = [terms[i] for i in range(bound + 1)]
|
|
74
|
+
sig_free(terms)
|
|
75
|
+
return to_series(L, var)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
cdef long* bqf_theta_series_c(long* terms, long bound, long a, long b, long c) except NULL:
|
|
79
|
+
cdef long x, y, yD
|
|
80
|
+
cdef long xmax, ymin, ymax
|
|
81
|
+
cdef double sqrt_yD
|
|
82
|
+
|
|
83
|
+
if a < 0 or 4 * a * c - b * b < 0:
|
|
84
|
+
raise ValueError("Not positive definite.")
|
|
85
|
+
xmax = <long>ceil(2 * sqrt((c * bound) / <double>(4 * a * c - b * b)))
|
|
86
|
+
if terms == NULL:
|
|
87
|
+
terms = <long*>check_calloc(1 + bound, sizeof(long))
|
|
88
|
+
|
|
89
|
+
sig_on()
|
|
90
|
+
for x in range(-xmax, xmax + 1):
|
|
91
|
+
yD = b * b * x * x - 4 * c * (a * x * x - bound)
|
|
92
|
+
if yD > 0:
|
|
93
|
+
sqrt_yD = sqrt(yD)
|
|
94
|
+
ymin = <long>ceil((-b * x - sqrt_yD) / (2 * c))
|
|
95
|
+
ymax = <long>floor((-b * x + sqrt_yD) / (2 * c))
|
|
96
|
+
for y in range(ymin, ymax + 1):
|
|
97
|
+
terms[a * x * x + b * x * y + c * y * y] += 1
|
|
98
|
+
sig_off()
|
|
99
|
+
return terms
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def gross_zagier_L_series(an_list, Q, long N, long u, var=None):
|
|
103
|
+
"""
|
|
104
|
+
Compute the coefficients of the Gross-Zagier `L`-series.
|
|
105
|
+
|
|
106
|
+
INPUT:
|
|
107
|
+
|
|
108
|
+
- ``an_list`` -- list of coefficients of the `L`-series of an elliptic curve
|
|
109
|
+
- ``Q`` -- a positive definite quadratic form
|
|
110
|
+
- ``N`` -- conductor of the elliptic curve
|
|
111
|
+
- ``u`` -- number of roots of unity in the field associated with ``Q``
|
|
112
|
+
- ``var`` -- (optional) the variable in which to express this power series
|
|
113
|
+
|
|
114
|
+
OUTPUT: a power series in ``var``, or list of ints if ``var`` is unspecified
|
|
115
|
+
|
|
116
|
+
The number of terms is the length of the input ``an_list``.
|
|
117
|
+
|
|
118
|
+
EXAMPLES::
|
|
119
|
+
|
|
120
|
+
sage: # needs database_cremona_mini_ellcurve
|
|
121
|
+
sage: from sage.modular.modform.l_series_gross_zagier_coeffs import gross_zagier_L_series
|
|
122
|
+
sage: E = EllipticCurve('37a')
|
|
123
|
+
sage: N = 37
|
|
124
|
+
sage: an = E.anlist(60); len(an)
|
|
125
|
+
61
|
|
126
|
+
sage: K.<a> = QuadraticField(-40)
|
|
127
|
+
sage: A = K.class_group().gen(0)
|
|
128
|
+
sage: Q = A.ideal().quadratic_form().reduced_form()
|
|
129
|
+
sage: Q2 = (A**2).ideal().quadratic_form().reduced_form()
|
|
130
|
+
sage: u = K.zeta_order()
|
|
131
|
+
sage: t = PowerSeriesRing(ZZ,'t').gen()
|
|
132
|
+
sage: LA = gross_zagier_L_series(an,Q,N,u,t); LA
|
|
133
|
+
-2*t^2 - 2*t^5 - 2*t^7 - 4*t^13 - 6*t^18 - 4*t^20 + 20*t^22 + 4*t^23
|
|
134
|
+
- 4*t^28 + 8*t^32 - 2*t^37 - 6*t^45 - 18*t^47 + 2*t^50 - 8*t^52
|
|
135
|
+
+ 2*t^53 + 20*t^55 + O(t^61)
|
|
136
|
+
sage: len(gross_zagier_L_series(an,Q,N,u))
|
|
137
|
+
61
|
|
138
|
+
sage: LA + gross_zagier_L_series(an,Q2,N,u,t)
|
|
139
|
+
t - 2*t^2 + 2*t^4 - 2*t^5 - 2*t^7 + 3*t^9 + 4*t^10 - 10*t^11 - 4*t^13
|
|
140
|
+
+ 4*t^14 - 4*t^16 - 6*t^18 - 4*t^20 + 20*t^22 + 4*t^23 - t^25 + 8*t^26
|
|
141
|
+
- 4*t^28 + 8*t^32 + 4*t^35 + 6*t^36 - 2*t^37 - 18*t^41 - 20*t^44
|
|
142
|
+
- 6*t^45 - 8*t^46 - 18*t^47 - 11*t^49 + 2*t^50 - 8*t^52 + 2*t^53
|
|
143
|
+
+ 20*t^55 + 16*t^59 + O(t^61)
|
|
144
|
+
"""
|
|
145
|
+
cdef long bound = len(an_list) + 1 # one more term for safety
|
|
146
|
+
cdef long a, b, c
|
|
147
|
+
a, b, c = Q
|
|
148
|
+
cdef long D = b * b - 4 * a * c
|
|
149
|
+
cdef long i, m, n, me, j
|
|
150
|
+
cdef long* con_terms = bqf_theta_series_c(NULL, bound - 1, a, b, c)
|
|
151
|
+
cdef long* terms = NULL
|
|
152
|
+
try:
|
|
153
|
+
terms = <long*>check_allocarray(bound, sizeof(long))
|
|
154
|
+
except MemoryError:
|
|
155
|
+
sig_free(con_terms)
|
|
156
|
+
raise
|
|
157
|
+
i = 0
|
|
158
|
+
for an in an_list:
|
|
159
|
+
sig_check()
|
|
160
|
+
con_terms[i] = con_terms[i] / u * an
|
|
161
|
+
i += 1
|
|
162
|
+
sig_on()
|
|
163
|
+
memcpy(terms, con_terms, sizeof(long) * bound) # m = 1
|
|
164
|
+
for m in range(2, <long>sqrt(bound) + 1):
|
|
165
|
+
if arith.c_gcd_longlong(D * N, m) == 1:
|
|
166
|
+
me = m * kronecker_symbol(D, m)
|
|
167
|
+
j = 0
|
|
168
|
+
n = 0
|
|
169
|
+
while j < bound:
|
|
170
|
+
terms[j] += me * con_terms[n]
|
|
171
|
+
j += m * m
|
|
172
|
+
n += 1
|
|
173
|
+
sig_off()
|
|
174
|
+
L = [terms[i] for i in range(bound - 1)]
|
|
175
|
+
sig_free(con_terms)
|
|
176
|
+
sig_free(terms)
|
|
177
|
+
return to_series(L, var)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-schemes
|
|
2
|
+
r"""
|
|
3
|
+
Design notes
|
|
4
|
+
|
|
5
|
+
The implementation depends on the fact that we have dimension formulas
|
|
6
|
+
(see ``dims.py``) for spaces of modular forms with character, and new
|
|
7
|
+
subspaces, so that we don't have to compute `q`-expansions for the whole
|
|
8
|
+
space in order to compute `q`-expansions / elements / and dimensions of
|
|
9
|
+
certain subspaces. Also, the following design is much simpler than
|
|
10
|
+
the one I used in MAGMA because submodules don't have lots of
|
|
11
|
+
complicated special labels. A modular forms module can consist of the
|
|
12
|
+
span of any elements; they need not be Hecke equivariant or anything
|
|
13
|
+
else.
|
|
14
|
+
|
|
15
|
+
The internal basis of `q`-expansions of modular forms for the ambient
|
|
16
|
+
space is defined as follows::
|
|
17
|
+
|
|
18
|
+
First Block: Cuspidal Subspace
|
|
19
|
+
Second Block: Eisenstein Subspace
|
|
20
|
+
|
|
21
|
+
Cuspidal Subspace: Block for each level `M` dividing `N`, from highest
|
|
22
|
+
level to lowest. The block for level `M`
|
|
23
|
+
contains the images at level `N` of the
|
|
24
|
+
newsubspace of level `M` (basis, then
|
|
25
|
+
basis(q**d), then basis(q**e), etc.)
|
|
26
|
+
|
|
27
|
+
Eisenstein Subspace: characters, etc.
|
|
28
|
+
|
|
29
|
+
Since we can compute dimensions of cuspidal subspaces quickly and
|
|
30
|
+
easily, it should be easy to locate any of the above blocks. Hence,
|
|
31
|
+
e.g., to compute basis for new cuspidal subspace, just have to return
|
|
32
|
+
first n standard basis vector where n is the dimension. However, we
|
|
33
|
+
can also create completely arbitrary subspaces as well.
|
|
34
|
+
|
|
35
|
+
The base ring is the ring generated by the character values (or
|
|
36
|
+
bigger). In MAGMA the base was always `\ZZ`, which is confusing.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
#########################################################################
|
|
40
|
+
# Copyright (C) 2006 William Stein <wstein@gmail.com>
|
|
41
|
+
#
|
|
42
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
43
|
+
#
|
|
44
|
+
# http://www.gnu.org/licenses/
|
|
45
|
+
#########################################################################
|