Determine the complexity of a self-dual normal basis

## Project description

This library aims at calculating the complexity of a basis that is a candidate for the lowest complexity basis for Fp^d/Fp, where p and d are prime numbers (Pickett and Vinatier, 2017). It enables also to determine the points multiplicities distribution in Fd^2 of the associated minimal Besicovitch arrangement.

It could be installed using pip:

pip install Comp_lib

Usage:

>>> from Comp_lib import Complexity, IncMatComp, P, axes, E

List of the functions:

- E(j,k,d) : Create a matrix containing d^2-1 zeros and a single
one at the (j+1)^th row and (k+1)^th column of the matrix

- Example:
>>> E(0,4,7)

- axes(d) : Create a matrix containing d^2-3d+2 zeros and 3d-2
one at the first row, first column and diagonal of the matrix

- Example:
>>> axes(7)

- P(x,d) : The polynomial that determines lines equations of
the minimal Besicovitch arrangment associated with the basis whose complexity is wanted; x is in Fd

- Example:
>>> P(2,7)

- IncMatComp(d) : Part of the matrix necessary for the calculation of
the complexity of the considered basis; it contains the multiplicities of the points in Fd^2 determined by the associated minimal Besicovitch arrangement column of the matrix

- Example:
>>> IncMatComp(7)

- IncMat(d) : The matrix containing the multiplicities of the points
in Fd^2 determined by the minimal Besicovitch arrangement associated with the basis whose complexity is wanted column of the matrix

- Example:
>>> IncMat(7)

- Complexity(d) : The value of the complexity i.e. the number of simple
points in the matrix containing the multiplicities of the points in Fd^2 determined by a well-chosen Besicovitch arrangement (Pickett and Vinatier, 2017)

- Example:
>>> Complexity(7)

- MulDist(d,n) : The distribution of multiplicities in the matrix
containing the multiplicities of the points in Fd^2 determined by a well-chosen Besicovitch arrangement (Pickett and Vinatier, 2017) The first value of the vector stands for the points of multiplicity zero, the second value stands for the simple points, etc. n is lenght of the vector returned; if this value is not large enought (hight multiplicity(ies) not yet counted) the following message is returned: IndexError: list index out of range column of the matrix

- Example:
>>> MulDist(7,6)

- MulDistT(d,n) : The distribution of multiplicities in the T zone of the
matrix containing the multiplicities of the points in Fd^2 determined by a well-chosen Besicovitch arrangement (Pickett and Vinatier, 2017) The first value of the vector stands for the points of multiplicity zero, the second value stands for the simple points, etc. n is lenght of the vector returned; if this value is not large enought (hight multiplicity(ies) not yet counted) the following message is returned: IndexError: list index out of range column of the matrix

- Example:
>>> MulDistT(7,3)

- MulDistDiag(d,n) : The distribution of multiplicities on the diagonal of the
matrix containing the multiplicities of the points in Fd^2 determined by a well-chosen Besicovitch arrangement (Pickett and Vinatier, 2017) The first value of the vector stands for the points of multiplicity zero, the second value stands for the simple points, etc. n is lenght of the vector returned; if this value is not large enought (hight multiplicity(ies) not yet counted) the following message is returned: IndexError: list index out of range column of the matrix

- Example:
>>> MulDistDiag(7,6)

Licence: GPLv3.