Skip to content

Commit f0aed91

Browse files
committed
more doctests
1 parent 8389d72 commit f0aed91

File tree

2 files changed

+66
-8
lines changed

2 files changed

+66
-8
lines changed

src/doc/en/reference/references/index.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6473,6 +6473,9 @@ REFERENCES:
64736473

64746474
**T**
64756475

6476+
.. [Tae2012] Lenny Taelman, *Special L-values of Drinfeld modules*,
6477+
Ann. Math. 175 (1), 2012, 369–391
6478+
64766479
.. [Tak1999] Kisao Takeuchi, Totally real algebraic number fields of
64776480
degree 9 with small discriminant, Saitama Math. J. 17
64786481
(1999), 63--85 (2000).

src/sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py

Lines changed: 63 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,16 @@
22
r"""
33
Drinfeld modules over rings of characteristic zero
44
5-
This module provides the class
5+
This module provides the classes
66
:class:`sage.rings.function_fields.drinfeld_module.charzero_drinfeld_module.DrinfeldModule_charzero`,
7+
:class:`sage.rings.function_fields.drinfeld_module.charzero_drinfeld_module.DrinfeldModule_rational`,
78
which inherits
89
:class:`sage.rings.function_fields.drinfeld_module.drinfeld_module.DrinfeldModule`.
910
1011
AUTHORS:
1112
1213
- David Ayotte (2023-09)
14+
- Xavier Caruso (2024-12) - computation of class polynomials and Taelman's units
1315
"""
1416

1517
# *****************************************************************************
@@ -427,11 +429,45 @@ class DrinfeldModule_rational(DrinfeldModule_charzero):
427429
"""
428430
def _phiT_matrix(self, polynomial_part):
429431
r"""
430-
Return the matrix of `\phi_T` modulo `\pi^s` where `s` is
431-
chosen such that `\pi^s` is in the domain of convergence
432-
of the logarithm.
432+
Return the matrix giving the action of `\phi_T` modulo `u^s`
433+
where `u = 1/T` is the uniformizer at infinity `s` is chosen
434+
such that `u^s` is in the domain of convergence of the logarithm.
433435
434436
It is an helper function; do not call it directly.
437+
438+
INPUT:
439+
440+
- ``polynomial_part`` -- boolean; if ``False``, omit the
441+
part with negative powers of `u`; if ``True``, return this
442+
part as a polynomial vector in `T`
443+
444+
TESTS::
445+
446+
sage: q = 5
447+
sage: Fq = GF(q)
448+
sage: A = Fq['T']
449+
sage: K.<T> = Frac(A)
450+
sage: phi = DrinfeldModule(A, [T, T^20])
451+
sage: phi._phiT_matrix(False)
452+
[0 0 0 0]
453+
[1 0 0 0]
454+
[0 1 0 0]
455+
[0 0 1 0]
456+
sage: phi._phiT_matrix(True)
457+
(
458+
[0 0 0 0]
459+
[1 0 0 0]
460+
[0 1 0 0]
461+
[0 0 1 0], (T^15 + 1, T^10, T^5, 1)
462+
)
463+
464+
::
465+
466+
sage: psi = DrinfeldModule(A, [T, 1/T])
467+
sage: psi._phiT_matrix(False)
468+
Traceback (most recent call last):
469+
...
470+
ValueError: the Drinfeld module must have polynomial coefficients
435471
"""
436472
A = self.function_ring()
437473
Fq = A.base_ring()
@@ -502,13 +538,23 @@ def class_polynomial(self):
502538
sage: phi = DrinfeldModule(A, [T, -T^(2*q-1) + 2*T^(q-1)])
503539
sage: phi.class_polynomial()
504540
T + 3
541+
542+
TESTS:
543+
544+
The Drinfeld module must have polynomial coefficients::
545+
546+
sage: phi = DrinfeldModule(A, [T, 1/T])
547+
sage: phi.class_polynomial()
548+
Traceback (most recent call last):
549+
...
550+
ValueError: the Drinfeld module must have polynomial coefficients
505551
"""
506552
A = self.function_ring()
507553
Fq = A.base_ring()
508554
M = self._phiT_matrix(False)
509555
s = M.nrows()
510556
if s == 0:
511-
# self is small
557+
# small case
512558
return A.one()
513559

514560
v = vector(Fq, s)
@@ -534,7 +580,16 @@ def class_polynomial(self):
534580

535581
def taelman_exponential_unit(self):
536582
r"""
537-
Return the exponential of the fundamental Taelman unit.
583+
Return the exponential of a fundamental Taelman's unit
584+
of this Drinfeld module.
585+
586+
A Taelman's unit is by definition an element `x \in
587+
\FF_q((1/T))` whose exponential falls in `\FF_q[T]`.
588+
589+
Taelman's units form a `\FF_q[T]`-line in `\FF_q((1/T))`;
590+
a fundamental unit is by definition a generator of this line.
591+
592+
We refer to [Tae2012]_ for more details about this construction.
538593
539594
EXAMPLES:
540595
@@ -570,8 +625,8 @@ def taelman_exponential_unit(self):
570625
M, P = self._phiT_matrix(True)
571626
s = M.nrows()
572627
if s == 0:
573-
# self is small
574-
return A(1)
628+
# small case
629+
return self.base().one()
575630

576631
gs = self.coefficients(sparse=False)
577632
v = vector(Fq, s)

0 commit comments

Comments
 (0)