Flint2-0.1.0.0: src/Data/Number/Flint/Groups/Dirichlet.hs
{-|
module : Data.Number.Flint.Groups.Dirichlet
copyright : (c) 2022 Hartmut Monien
license : GNU GPL, version 2 or above (see LICENSE)
maintainer : hmonien@uni-bonn.de
__Warning: the interfaces in this module are experimental and may change without notice.__
This module allows working with Dirichlet characters algebraically. For
evaluations of characters as complex numbers, see @acb-dirichlet@.
= Dirichlet characters
Working with Dirichlet characters mod /q/ consists mainly in going from
residue classes mod /q/ to exponents on a set of generators of the
group.
This implementation relies on the Conrey numbering scheme introduced in
the
<http://www.lmfdb.org/Character/Dirichlet L-functions and Modular Forms DataBase>,
which is an explicit choice of generators allowing to represent
Dirichlet characters via the pairing
\[\begin{aligned}
\begin{array}{ccccc}
(\mathbb Z/q\mathbb Z)^\times \times (\mathbb Z/q\mathbb Z)^\times & \to & \bigoplus_i \mathbb Z/\phi_i\mathbb Z \times \mathbb Z/\phi_i\mathbb Z & \to &\mathbb C \\
(m,n) & \mapsto& (a_i,b_i) &\mapsto& \chi_q(m,n) = \exp(2i\pi\sum \frac{a_ib_i}{\phi_i} )
\end{array}
\end{aligned}\]
We call /number/ a residue class \(m\) modulo /q/, and /log/ the
corresponding vector \((a_i)\) of exponents of Conrey generators.
Going from a /log/ to the corresponding /number/ is a cheap operation we
call exponential, while the converse requires computing discrete
logarithms.
-}
module Data.Number.Flint.Groups.Dirichlet (
module Data.Number.Flint.Groups.Dirichlet.FFI,
) where
import Data.Number.Flint.Groups.Dirichlet.FFI