Cuerpos finitos¶
Cuerpos finitos.
Este módulo permite operar con elementos de un cuerpos finito de q elementos, donde q será la potencia de un primo.
Para utilizar las funciones y las clases de este módulo, debe importarlo previamente:
# reemplace ... por la función/clase que desea utilizar
from ccepy.cuerpos_finitos import ...
Para operar con elementos de un cuerpo finito con q elementos, use la función
Fq() y los operadores aritméticos habituales.
>>> F16 = Fq(2, 4)
>>> F16([1, 1, 0, 1]) + F16([1, 0, 0, 1])
{[0, 1, 0, 0]; 16}
>>> F16([1, 0, 1, 1]) * F16([1, 0, 0, 1])
{[1, 0, 0, 0]; 16}
>>> F16([1, 1, 0, 1]) ** (-1)
{[0, 1, 0, 1]; 16}
>>> F16([0, 0, 1, 0]) ** 2
{[1, 0, 0, 1]; 16}
Se está utilizando la representación polinomial para los elementos de un cuerpo finito. En particular, para la creación y la representación de un elemento se utilizan los coeficientes del elemento visto como polinomio.
Lista de funciones y clases de cuerpos_finitos:
Fq |
Devuelve el constructor de elementos del cuerpo finito con p**n elementos. |
ElementoFq |
Representa un elemento del cuerpo finito con q elementos. |
-
Fq(p, n=1, pol_irreducible=None)[fuente]¶ Devuelve el constructor de elementos del cuerpo finito con p**n elementos.
>>> F16 = Fq(2, 4) >>> F16 <class 'ccepy.cuerpos_finitos.Fq.<locals>.ElementoFq'> >>> F16([0, 0, 0, 0, 1]) {[1, 0, 0, 1]; 16}
Se puede especificar el polinomio con el cual se hace módulo:
>>> pol_irreducible = PolinomioZp([1, 1, 1, 0, 1], p=2) >>> pol_irreducible X^4 + X^2 + X + 1 >>> F16 = Fq(2, 4, pol_irreducible) >>> F16([0, 0, 0, 0, 1]) # X^4 mod X^4 + X^2 + X + 1 {[1, 1, 1, 0]; 16}
Parámetros: - p (int) – un número primo.
- n (Optional[int]) – un número natural.
- pol_irreducible (Optional[PolinomioZp]) – un polinomio de grado n irreducible.
Devuelve: Si n es uno, devuelve
EnteroModuloP.Si n es mayor que uno, devuelve
ElementoFq.
-
class
ElementoFq(coeficientes)[fuente]¶ Representa un elemento del cuerpo finito con q elementos.
>>> F16 = Fq(2, 4) >>> p, q = F16([1, 1, 0, 1]), F16([1, 0, 0, 1]) >>> type(p) <class 'ccepy.cuerpos_finitos.Fq.<locals>.ElementoFq'> >>> p {[1, 1, 0, 1]; 16} >>> q {[1, 0, 0, 1]; 16} >>> p + q {[0, 1, 0, 0]; 16} >>> p * q {[1, 0, 1, 0]; 16} >>> p ** (-1) {[0, 1, 0, 1]; 16}
Soporta los operadores
+,-,*,/y**con su significado habitual.Parámetros: coeficientes (List[int]) – los coeficientes del elemento visto como polinomio. -
Zp¶ EnteroModuloP – el constructor de enteros módulo un primo p. (atributo de clase)
-
p¶ int – el primo p. (atributo de clase)
-
n¶ int – el grado del irreducible pol_irreducible. (atributo de clase)
-
q¶ int – el número de elementos del cuerpo finito. (atributo de clase)
-
classmethod
cero()[fuente]¶ Devuelve el cero del cuerpo finito.
Devuelve: el cero. Tipo del valor devuelto: ElementoFq
-
classmethod
uno()[fuente]¶ Devuelve el uno del cuerpo finito.
Devuelve: el uno. Tipo del valor devuelto: ElementoFq
-
inverso()[fuente]¶ Devuelve el inverso del elemento del cuerpo finito.
>>> F16 = Fq(2, 4) >>> F16([1, 1, 0, 1]).inverso() {[0, 1, 0, 1]; 16}
Devuelve: el inverso. Tipo del valor devuelto: ElementoFq
-