========
Discrete
========

The ``discrete`` module in SymPy implements methods to compute discrete
transforms and convolutions of finite sequences.

.. automodule:: sympy.discrete

Since the discrete transforms can be used to reduce the computational complexity
of the discrete convolutions, the ``convolutions`` module makes use of the
``transforms`` module for efficient computation (notable for long input sequences).

Transforms
----------

.. module:: sympy.discrete.transforms

This section lists the methods which implement the basic transforms
for discrete sequences.

Fast Fourier Transform
^^^^^^^^^^^^^^^^^^^^^^

.. autofunction:: fft

.. autofunction:: ifft

Number Theoretic Transform
^^^^^^^^^^^^^^^^^^^^^^^^^^

.. autofunction:: ntt

.. autofunction:: intt

Fast Walsh Hadamard Transform
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. autofunction:: fwht

.. autofunction:: ifwht

Möbius Transform
^^^^^^^^^^^^^^^^

.. autofunction:: mobius_transform

.. autofunction:: inverse_mobius_transform


Convolutions
------------

.. module:: sympy.discrete.convolutions

This section lists the methods which implement the basic convolutions
for discrete sequences.

Convolution
^^^^^^^^^^^

This is a general method for calculating the convolution of discrete
sequences, which internally calls one of the methods ``convolution_fft``,
``convolution_ntt``, ``convolution_fwht``, or ``convolution_subset``.

.. autofunction:: convolution

Convolution using Fast Fourier Transform
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. autofunction:: convolution_fft

Convolution using Number Theoretic Transform
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. autofunction:: convolution_ntt

Convolution using Fast Walsh Hadamard Transform
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. autofunction:: convolution_fwht

Subset Convolution
^^^^^^^^^^^^^^^^^^

.. autofunction:: convolution_subset

Covering Product
^^^^^^^^^^^^^^^^

.. autofunction:: covering_product

Intersecting Product
^^^^^^^^^^^^^^^^^^^^

.. autofunction:: intersecting_product
