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.

## Project details 