2016-04-07 3 views
1

Il y a le code est écrit en utilisant la bibliothèque NTL:polynômes étendu dans la bibliothèque NTL

int main() 
{ 
     ZZ_p::init(ZZ(5)); // define GF(5) 

     ZZ_pX P; 
     BuildIrred(P, 4); // generate an irreducible polynomial P 
         // of degree 4 over GF(5) 

     ZZ_pE::init(P); // define GF(5^4) 

     ZZ_pEX f, g, h; // declare polynomials over GF(5^4) 

     random(f, 3); // f is a random, monic polynomial of degree 3 
     SetCoeff(f, 3); 
     cout << f << endl<< endl; 
} 

La sortie est:

[[3 1 1 4] [2 1 3 2] [1 0 3 1] [1]] 

Par exemple, [1 2 3] est moyenne 3x² + 2x + 1.
Quelle est la forme de notation polynomiale sur GF dans ce cas?

+0

C'est C++, C non –

Répondre

0

Votre question est un peu difficile à comprendre. Si je vous comprends bien, la question est comment interpréter la représentation NTL [[3 1 1 4] [2 1 3 2] [1 0 3 1] [1]] d'un polynôme sur le corps fini avec 5⁴ éléments.

Premièrement: Les éléments du champ fini avec 5⁴ éléments (appelés GF(5⁴)) sont représentés comme des polynômes GF(5)[X] mod f, où f est un polynôme irréductible de degré 4.

Cela signifie un polynôme sur GF(5⁴) est un polynôme où les coefficients sont des polynômes en GF(5)[X] mod f.

Ainsi [[3 1 1 4] [2 1 3 2] [1 0 3 1] [1]] peut être interprété comme

Y³ + (X³ + 3X² + 1)⋅Y² + (2X³ + 3X² + X + 2)⋅Y + (4X³ + X² + X + 3) 

Avis: Le commentaire

random(f, 3); // f is a random, monic polynomial of degree 3 
SetCoeff(f, 3); 

est un peu trompeur. random(f,3) ensembles f à un polynôme de degré aléatoire inférieur à 3. SetCoeff(f, 3) fixe le coefficient de à 1 et après qu'il est un polynôme de degré 3.

+0

oui, comment interpréter la Représentation NTL :) merci – magrif