arb/doc/source/acb_modular.rst
2014-10-01 15:25:50 +02:00

99 lines
2.7 KiB
ReStructuredText

.. _acb-modular:
**acb_modular.h** -- evaluation of modular forms in the complex numbers
===============================================================================
The modular group
-------------------------------------------------------------------------------
.. type:: psl2z_struct
.. type:: psl2z_t
Represents an element of the modular group `\text{PSL}(2, \mathbb{Z})`,
namely an integer matrix
.. math ::
\begin{pmatrix} a & b \\ c & d \end{pmatrix}
with `ad-bc = 1`, and with signs canonicalized such that `c \ge 0`,
and `d > 0` if `c = 0`.
The struct members *a*, *b*, *c*, *d* are of type *fmpz*.
.. function:: void psl2z_init(psl2z_t g)
Initializes *g* and set it to the identity element.
.. function:: void psl2z_clear(psl2z_t g)
Clears *g*.
.. function:: void psl2z_swap(psl2z_t f, psl2z_t g)
Swaps *f* and *g* efficiently.
.. function:: void psl2z_set(psl2z_t f, const psl2z_t g)
Sets *f* to a copy of *g*.
.. function:: void psl2z_one(psl2z_t g)
Sets *g* to the identity element.
.. function:: void psl2z_print(const psl2z_t g)
Prints *g* to standard output.
.. function:: int psl2z_equal(const psl2z_t f, const psl2z_t g)
Returns nonzero iff *f* and *g* are equal.
.. function:: void psl2z_mul(psl2z_t h, const psl2z_t f, const psl2z_t g)
Sets *h* to the product of *f* and *g*, namely the matrix product
with the signs canonicalized.
.. function:: void psl2z_inv(psl2z_t h, const psl2z_t g)
Sets *h* to the inverse of *g*.
.. function:: int psl2z_is_correct(const psl2z_t g)
Returns nonzero iff *g* contains correct data, i.e.
satisfying `ad-bc = 1`, `c \ge 0`, and `d > 0` if `c = 0`.
.. function:: void psl2z_randtest(psl2z_t g, flint_rand_t state, long bits)
Sets *g* to a random element of `\text{PSL}(2, \mathbb{Z})`
with entries of bit length at most *bits*
(or 1, if *bits* is not positive). We first generate *a* and *d*, compute
their Bezout coefficients, divide by the GCD, and then correct the signs.
Modular transformations
-------------------------------------------------------------------------------
.. function:: void acb_modular_transform(acb_t w, const psl2z_t g, const acb_t z, long prec)
Applies the modular transformation *g* to the complex number *z*,
evaluating
.. math ::
w = g z = \frac{az+b}{cz+d}.
The Dedekind eta function
-------------------------------------------------------------------------------
To be done
Jacobi theta functions
-------------------------------------------------------------------------------
To be done
Eisenstein series
-------------------------------------------------------------------------------
To be done