1// ==========================================================================
2// Copyright(c)'1994-2009 by The Givaro group
3// This file is part of Givaro.
4// Givaro is governed by the CeCILL-B license under French law
5// and abiding by the rules of distribution of free software.
6// see the COPYRIGHT file for more details.
7// Time-stamp: <22 Mar 00 20:06:18 Jean-Guillaume.Dumas@imag.fr>
8// ==========================================================================
9// Tabulation of factors of cyclotomic polynomials
10// of degree expo modulo mod
11// By vectors. P = v[0] + v[1] X + ... + v[n] X^n
12#ifndef __GIVARO_poly1_cyclo_table_INL
13#define __GIVARO_poly1_cyclo_table_INL
14
15#include "givaro/givpoly1tabcycl.h"
16
17
18namespace Givaro {
19
20    template<class Domain, class Tag> inline void CyclotomicTable<Domain,Tag>::table_0 (const typename Domain::Residu_t mod, const long expo) {
21        switch (mod) {
22        case 2:
23            switch (expo) {
24            case 2: { Element v(3); _domain.read(v[0],1); _domain.read(v[1],1); _domain.read(v[2],1); _Irreductible =  v; }; break; // 2^2 : 1 + X + X^2
25            case 3: { Element v(4); _domain.read(v[0],1); _domain.read(v[1],0); _domain.read(v[2],1); _domain.read(v[3],1); _Irreductible =  v; }; break; // 2^3 : 1 + X^2 + X^3
26            case 4: { Element v(5); _domain.read(v[0],1); _domain.read(v[1],1); _domain.read(v[2],0); _domain.read(v[3],0); _domain.read(v[4],1); _Irreductible =  v; }; break; // 2^4 : 1 + X + X^4
27            case 5: { Element v(6); _domain.read(v[0],1); _domain.read(v[1],0); _domain.read(v[2],1); _domain.read(v[3],1); _domain.read(v[4],1); _domain.read(v[5],1); _Irreductible =  v; }; break; // 2^5 : 1 + X^2 + X^3 + X^4 + X^5
28            case 6: { Element v(7); _domain.read(v[0],1); _domain.read(v[1],1); _domain.read(v[2],1); _domain.read(v[3],0); _domain.read(v[4],0); _domain.read(v[5],1); _domain.read(v[6],1); _Irreductible =  v; }; break; // 2^6 : 1 + X + X^2 + X^5 + X^6
29            case 7: { Element v(8); _domain.read(v[0],1); _domain.read(v[1],1); _domain.read(v[2],1); _domain.read(v[3],1); _domain.read(v[4],1); _domain.read(v[5],1); _domain.read(v[6],0); _domain.read(v[7],1); _Irreductible =  v; }; break; // 2^7 : 1 + X + X^2 + X^3 + X^4 + X^5 + X^7
30            case 8: { Element v(9); _domain.read(v[0],1); _domain.read(v[1],0); _domain.read(v[2],0); _domain.read(v[3],0); _domain.read(v[4],1); _domain.read(v[5],1); _domain.read(v[6],1); _domain.read(v[7],0); _domain.read(v[8],1); _Irreductible =  v; }; break; // 2^8 : 1 + X^4 + X^5 + X^6 + X^8
31            case 9: { Element v(10); _domain.read(v[0],1); _domain.read(v[1],0); _domain.read(v[2],1); _domain.read(v[3],0); _domain.read(v[4],1); _domain.read(v[5],1); _domain.read(v[6],1); _domain.read(v[7],1); _domain.read(v[8],0); _domain.read(v[9],1); _Irreductible =  v; }; break; // 2^9 : 1 + X^2 + X^4 + X^5 + X^6 + X^7 + X^9
32            case 10: { Element v(11); _domain.read(v[0],1); _domain.read(v[1],1); _domain.read(v[2],0); _domain.read(v[3],1); _domain.read(v[4],0); _domain.read(v[5],1); _domain.read(v[6],1); _domain.read(v[7],0); _domain.read(v[8],1); _domain.read(v[9],0); _domain.read(v[10],1); _Irreductible =  v; }; break; // 2^10 : 1 + X + X^3 + X^5 + X^6 + X^8 + X^10
33            case 11: { Element v(12); _domain.read(v[0],1); _domain.read(v[1],0); _domain.read(v[2],0); _domain.read(v[3],1); _domain.read(v[4],1); _domain.read(v[5],1); _domain.read(v[6],0); _domain.read(v[7],0); _domain.read(v[8],0); _domain.read(v[9],1); _domain.read(v[10],1); _domain.read(v[11],1); _Irreductible =  v; }; break; // 2^11 : 1 + X^3 + X^4 + X^5 + X^9 + X^10 + X^11
34            case 12: { Element v(13); _domain.read(v[0],1); _domain.read(v[1],1); _domain.read(v[2],1); _domain.read(v[3],1); _domain.read(v[4],0); _domain.read(v[5],0); _domain.read(v[6],0); _domain.read(v[7],0); _domain.read(v[8],1); _domain.read(v[9],0); _domain.read(v[10],1); _domain.read(v[11],0); _domain.read(v[12],1); _Irreductible =  v; }; break; // 2^12 : 1 + X + X^2 + X^3 + X^8 + X^10 + X^12
35            case 13: { Element v(14); _domain.read(v[0],1); _domain.read(v[1],1); _domain.read(v[2],1); _domain.read(v[3],0); _domain.read(v[4],0); _domain.read(v[5],0); _domain.read(v[6],0); _domain.read(v[7],0); _domain.read(v[8],0); _domain.read(v[9],1); _domain.read(v[10],0); _domain.read(v[11],1); _domain.read(v[12],1); _domain.read(v[13],1); _Irreductible =  v; }; break; // 2^13 : 1 + X + X^2 + X^9 + X^11 + X^12 + X^13
36            case 14: { Element v(15); _domain.read(v[0],1); _domain.read(v[1],0); _domain.read(v[2],1); _domain.read(v[3],1); _domain.read(v[4],0); _domain.read(v[5],1); _domain.read(v[6],1); _domain.read(v[7],1); _domain.read(v[8],1); _domain.read(v[9],1); _domain.read(v[10],0); _domain.read(v[11],0); _domain.read(v[12],0); _domain.read(v[13],0); _domain.read(v[14],1); _Irreductible =  v; }; break; // 2^14 : 1 + X^2 + X^3 + X^5 + X^6 + X^7 + X^8 + X^9 + X^14
37            case 15: { Element v(16); _domain.read(v[0],1); _domain.read(v[1],1); _domain.read(v[2],0); _domain.read(v[3],0); _domain.read(v[4],0); _domain.read(v[5],1); _domain.read(v[6],1); _domain.read(v[7],1); _domain.read(v[8],1); _domain.read(v[9],0); _domain.read(v[10],0); _domain.read(v[11],1); _domain.read(v[12],1); _domain.read(v[13],1); _domain.read(v[14],1); _domain.read(v[15],1); _Irreductible =  v; }; break; // 2^15 : 1 + X + X^5 + X^6 + X^7 + X^8 + X^11 + X^12 + X^13 + X^14 + X^15
38            case 16: { Element v(17); _domain.read(v[0],1); _domain.read(v[1],0); _domain.read(v[2],1); _domain.read(v[3],1); _domain.read(v[4],0); _domain.read(v[5],1); _domain.read(v[6],0); _domain.read(v[7],0); _domain.read(v[8],1); _domain.read(v[9],0); _domain.read(v[10],1); _domain.read(v[11],0); _domain.read(v[12],1); _domain.read(v[13],0); _domain.read(v[14],1); _domain.read(v[15],0); _domain.read(v[16],1); _Irreductible =  v; }; break; // 2^16 : 1 + X^2 + X^3 + X^5 + X^8 + X^10 + X^12 + X^14 + X^16
39            }; break;
40        case 3:
41            switch (expo) {
42            case 2: { Element v(3); _domain.read(v[0],1); _domain.read(v[1],1); _domain.read(v[2],2); _Irreductible =  v; }; break; // 3^2 : 1 + X + (2)*X^2
43            case 3: { Element v(4); _domain.read(v[0],1); _domain.read(v[1],2); _domain.read(v[2],1); _domain.read(v[3],1); _Irreductible =  v; }; break; // 3^3 : 1 + (2)*X + X^2 + X^3
44            case 4: { Element v(5); _domain.read(v[0],1); _domain.read(v[1],2); _domain.read(v[2],0); _domain.read(v[3],0); _domain.read(v[4],2); _Irreductible =  v; }; break; // 3^4 : 1 + (2)*X + (2)*X^4
45            case 5: { Element v(6); _domain.read(v[0],1); _domain.read(v[1],2); _domain.read(v[2],0); _domain.read(v[3],0); _domain.read(v[4],1); _domain.read(v[5],1); _Irreductible =  v; }; break; // 3^5 : 1 + (2)*X + X^4 + X^5
46            case 6: { Element v(7); _domain.read(v[0],1); _domain.read(v[1],1); _domain.read(v[2],2); _domain.read(v[3],1); _domain.read(v[4],0); _domain.read(v[5],1); _domain.read(v[6],2); _Irreductible =  v; }; break; // 3^6 : 1 + X + (2)*X^2 + X^3 + X^5 + (2)*X^6
47            case 7: { Element v(8); _domain.read(v[0],1); _domain.read(v[1],0); _domain.read(v[2],1); _domain.read(v[3],2); _domain.read(v[4],2); _domain.read(v[5],0); _domain.read(v[6],1); _domain.read(v[7],1); _Irreductible =  v; }; break; // 3^7 : 1 + X^2 + (2)*X^3 + (2)*X^4 + X^6 + X^7
48            case 8: { Element v(9); _domain.read(v[0],2); _domain.read(v[1],0); _domain.read(v[2],2); _domain.read(v[3],1); _domain.read(v[4],2); _domain.read(v[5],2); _domain.read(v[6],2); _domain.read(v[7],2); _domain.read(v[8],1); _Irreductible =  v; }; break; // 3^8 : (2) + (2)*X^2 + X^3 + (2)*X^4 + (2)*X^5 + (2)*X^6 + (2)*X^7 + X^8
49            case 9: { Element v(10); _domain.read(v[0],1); _domain.read(v[1],2); _domain.read(v[2],2); _domain.read(v[3],1); _domain.read(v[4],2); _domain.read(v[5],0); _domain.read(v[6],1); _domain.read(v[7],0); _domain.read(v[8],0); _domain.read(v[9],1); _Irreductible =  v; }; break; // 3^9 : 1 + (2)*X + (2)*X^2 + X^3 + (2)*X^4 + X^6 + X^9
50            case 10: { Element v(11); _domain.read(v[0],2); _domain.read(v[1],2); _domain.read(v[2],0); _domain.read(v[3],1); _domain.read(v[4],1); _domain.read(v[5],1); _domain.read(v[6],0); _domain.read(v[7],1); _domain.read(v[8],0); _domain.read(v[9],1); _domain.read(v[10],1); _Irreductible =  v; }; break; // 3^10 : (2) + (2)*X + X^3 + X^4 + X^5 + X^7 + X^9 + X^10
51            }; break;
52        case 5:
53            switch (expo) {
54            case 2: { Element v(3); _domain.read(v[0],1); _domain.read(v[1],1); _domain.read(v[2],2); _Irreductible =  v; }; break; // 5^2 : 1 + X + (2)*X^2
55            case 3: { Element v(4); _domain.read(v[0],4); _domain.read(v[1],4); _domain.read(v[2],0); _domain.read(v[3],3); _Irreductible =  v; }; break; // 5^3 : (4) + (4)*X + (3)*X^3
56            case 4: { Element v(5); _domain.read(v[0],3); _domain.read(v[1],1); _domain.read(v[2],0); _domain.read(v[3],3); _domain.read(v[4],4); _Irreductible =  v; }; break; // 5^4 : (3) + X + (3)*X^3 + (4)*X^4
57            case 5: { Element v(6); _domain.read(v[0],4); _domain.read(v[1],1); _domain.read(v[2],3); _domain.read(v[3],0); _domain.read(v[4],4); _domain.read(v[5],2); _Irreductible =  v; }; break; // 5^5 : (4) + X + (3)*X^2 + (4)*X^4 + (2)*X^5
58            case 6: { Element v(7); _domain.read(v[0],2); _domain.read(v[1],3); _domain.read(v[2],2); _domain.read(v[3],4); _domain.read(v[4],0); _domain.read(v[5],1); _domain.read(v[6],1); _Irreductible =  v; }; break; // 5^6 : (2) + (3)*X + (2)*X^2 + (4)*X^3 + X^5 + X^6
59            }; break;
60        case 7:
61            switch (expo) {
62            case 2: { Element v(3); _domain.read(v[0],2); _domain.read(v[1],4); _domain.read(v[2],6); _Irreductible =  v; }; break; // 7^2 : (2) + (4)*X + (6)*X^2
63            case 3: { Element v(4); _domain.read(v[0],1); _domain.read(v[1],6); _domain.read(v[2],5); _domain.read(v[3],4); _Irreductible =  v; }; break; // 7^3 : 1 + (6)*X + (5)*X^2 + (4)*X^3
64            case 4: { Element v(5); _domain.read(v[0],4); _domain.read(v[1],1); _domain.read(v[2],1); _domain.read(v[3],6); _domain.read(v[4],5); _Irreductible =  v; }; break; // 7^4 : (4) + X + X^2 + (6)*X^3 + (5)*X^4
65            case 5: { Element v(6); _domain.read(v[0],2); _domain.read(v[1],6); _domain.read(v[2],2); _domain.read(v[3],6); _domain.read(v[4],2); _domain.read(v[5],4); _Irreductible =  v; }; break; // 7^5 : (2) + (6)*X + (2)*X^2 + (6)*X^3 + (2)*X^4 + (4)*X^5
66            }; break;
67        case 11:
68            switch (expo) {
69            case 2: { Element v(3); _domain.read(v[0],6); _domain.read(v[1],2); _domain.read(v[2],9); _Irreductible =  v; }; break; // 11^2 : (6) + (2)*X + (9)*X^2
70            case 3: { Element v(4); _domain.read(v[0],3); _domain.read(v[1],6); _domain.read(v[2],3); _domain.read(v[3],5); _Irreductible =  v; }; break; // 11^3 : (3) + (6)*X + (3)*X^2 + (5)*X^3
71            case 4: { Element v(5); _domain.read(v[0],7); _domain.read(v[1],10); _domain.read(v[2],4); _domain.read(v[3],8); _domain.read(v[4],3); _Irreductible =  v; }; break; // 11^4 : (7) + (10)*X + (4)*X^2 + (8)*X^3 + (3)*X^4
72            }; break;
73        case 13:
74            switch (expo) {
75            case 2: { Element v(3); _domain.read(v[0],8); _domain.read(v[1],3); _domain.read(v[2],9); _Irreductible =  v; }; break; // 13^2 : (8) + (3)*X + (9)*X^2
76            case 3: { Element v(4); _domain.read(v[0],10); _domain.read(v[1],6); _domain.read(v[2],7); _domain.read(v[3],7); _Irreductible =  v; }; break; // 13^3 : (10) + (6)*X + (7)*X^2 + (7)*X^3
77            case 4: { Element v(5); _domain.read(v[0],1); _domain.read(v[1],12); _domain.read(v[2],10); _domain.read(v[3],4); _domain.read(v[4],6); _Irreductible =  v; }; break; // 13^4 : 1 + (12)*X + (10)*X^2 + (4)*X^3 + (6)*X^4
78            }; break;
79        case 17:
80            switch (expo) {
81            case 2: { Element v(3); _domain.read(v[0],9); _domain.read(v[1],2); _domain.read(v[2],12); _Irreductible =  v; }; break; // 17^2 : (9) + (2)*X + (12)*X^2
82            case 3: { Element v(4); _domain.read(v[0],15); _domain.read(v[1],13); _domain.read(v[2],7); _domain.read(v[3],5); _Irreductible =  v; }; break; // 17^3 : (15) + (13)*X + (7)*X^2 + (5)*X^3
83            }; break;
84        case 19:
85            switch (expo) {
86            case 2: { Element v(3); _domain.read(v[0],4); _domain.read(v[1],18); _domain.read(v[2],3); _Irreductible =  v; }; break; // 19^2 : (4) + (18)*X + (3)*X^2
87            case 3: { Element v(4); _domain.read(v[0],2); _domain.read(v[1],11); _domain.read(v[2],17); _domain.read(v[3],15); _Irreductible =  v; }; break; // 19^3 : (2) + (11)*X + (17)*X^2 + (15)*X^3
88            }; break;
89        case 23:
90            switch (expo) {
91            case 2: { Element v(3); _domain.read(v[0],15); _domain.read(v[1],1); _domain.read(v[2],3); _Irreductible =  v; }; break; // 23^2 : (15) + X + (3)*X^2
92            case 3: { Element v(4); _domain.read(v[0],12); _domain.read(v[1],6); _domain.read(v[2],11); _domain.read(v[3],18); _Irreductible =  v; }; break; // 23^3 : (12) + (6)*X + (11)*X^2 + (18)*X^3
93            }; break;
94        case 29:
95            switch (expo) {
96            case 2: { Element v(3); _domain.read(v[0],13); _domain.read(v[1],17); _domain.read(v[2],19); _Irreductible =  v; }; break; // 29^2 : (13) + (17)*X + (19)*X^2
97            case 3: { Element v(4); _domain.read(v[0],5); _domain.read(v[1],10); _domain.read(v[2],10); _domain.read(v[3],21); _Irreductible =  v; }; break; // 29^3 : (5) + (10)*X + (10)*X^2 + (21)*X^3
98            }; break;
99        case 31:
100            switch (expo) {
101            case 2: { Element v(3); _domain.read(v[0],24); _domain.read(v[1],1); _domain.read(v[2],2); _Irreductible =  v; }; break; // 31^2 : (24) + X + (2)*X^2
102            case 3: { Element v(4); _domain.read(v[0],20); _domain.read(v[1],29); _domain.read(v[2],5); _domain.read(v[3],1); _Irreductible =  v; }; break; // 31^3 : (20) + (29)*X + (5)*X^2 + X^3
103            }; break;
104        case 37:
105            switch (expo) {
106            }; break;
107        };
108        if (isZero(_Irreductible)) table_50(mod,expo);
109    }
110    template<class Domain, class Tag> inline void CyclotomicTable<Domain,Tag>::table_50 (const typename Domain::Residu_t mod, const long expo) {
111        switch (mod) {
112        case 37:
113            switch (expo) {
114            case 2: { Element v(3); _domain.read(v[0],10); _domain.read(v[1],32); _domain.read(v[2],20); _Irreductible =  v; }; break; // 37^2 : (10) + (32)*X + (20)*X^2
115            case 3: { Element v(4); _domain.read(v[0],34); _domain.read(v[1],16); _domain.read(v[2],35); _domain.read(v[3],35); _Irreductible =  v; }; break; // 37^3 : (34) + (16)*X + (35)*X^2 + (35)*X^3
116            }; break;
117        case 41:
118            switch (expo) {
119            case 2: { Element v(3); _domain.read(v[0],27); _domain.read(v[1],37); _domain.read(v[2],21); _Irreductible =  v; }; break; // 41^2 : (27) + (37)*X + (21)*X^2
120            }; break;
121        case 43:
122            switch (expo) {
123            case 2: { Element v(3); _domain.read(v[0],24); _domain.read(v[1],18); _domain.read(v[2],22); _Irreductible =  v; }; break; // 43^2 : (24) + (18)*X + (22)*X^2
124            }; break;
125        case 47:
126            switch (expo) {
127            case 2: { Element v(3); _domain.read(v[0],43); _domain.read(v[1],44); _domain.read(v[2],3); _Irreductible =  v; }; break; // 47^2 : (43) + (44)*X + (3)*X^2
128            }; break;
129        case 53:
130            switch (expo) {
131            case 2: { Element v(3); _domain.read(v[0],43); _domain.read(v[1],52); _domain.read(v[2],22); _Irreductible =  v; }; break; // 53^2 : (43) + (52)*X + (22)*X^2
132            }; break;
133        case 59:
134            switch (expo) {
135            case 2: { Element v(3); _domain.read(v[0],11); _domain.read(v[1],31); _domain.read(v[2],15); _Irreductible =  v; }; break; // 59^2 : (11) + (31)*X + (15)*X^2
136            }; break;
137        case 61:
138            switch (expo) {
139            case 2: { Element v(3); _domain.read(v[0],15); _domain.read(v[1],60); _domain.read(v[2],17); _Irreductible =  v; }; break; // 61^2 : (15) + (60)*X + (17)*X^2
140            }; break;
141        case 67:
142            switch (expo) {
143            case 2: { Element v(3); _domain.read(v[0],9); _domain.read(v[1],54); _domain.read(v[2],63); _Irreductible =  v; }; break; // 67^2 : (9) + (54)*X + (63)*X^2
144            }; break;
145        case 71:
146            switch (expo) {
147            case 2: { Element v(3); _domain.read(v[0],39); _domain.read(v[1],63); _domain.read(v[2],15); _Irreductible =  v; }; break; // 71^2 : (39) + (63)*X + (15)*X^2
148            }; break;
149        case 73:
150            switch (expo) {
151            case 2: { Element v(3); _domain.read(v[0],23); _domain.read(v[1],1); _domain.read(v[2],29); _Irreductible =  v; }; break; // 73^2 : (23) + X + (29)*X^2
152            }; break;
153        case 79:
154            switch (expo) {
155            case 2: { Element v(3); _domain.read(v[0],39); _domain.read(v[1],32); _domain.read(v[2],36); _Irreductible =  v; }; break; // 79^2 : (39) + (32)*X + (36)*X^2
156            }; break;
157        case 83:
158            switch (expo) {
159            case 2: { Element v(3); _domain.read(v[0],79); _domain.read(v[1],8); _domain.read(v[2],30); _Irreductible =  v; }; break; // 83^2 : (79) + (8)*X + (30)*X^2
160            }; break;
161        case 89:
162            switch (expo) {
163            case 2: { Element v(3); _domain.read(v[0],88); _domain.read(v[1],13); _domain.read(v[2],76); _Irreductible =  v; }; break; // 89^2 : (88) + (13)*X + (76)*X^2
164            }; break;
165        case 97:
166            switch (expo) {
167            case 2: { Element v(3); _domain.read(v[0],16); _domain.read(v[1],39); _domain.read(v[2],67); _Irreductible =  v; }; break; // 97^2 : (16) + (39)*X + (67)*X^2
168            }; break;
169        case 101:
170            switch (expo) {
171            case 2: { Element v(3); _domain.read(v[0],93); _domain.read(v[1],61); _domain.read(v[2],31); _Irreductible =  v; }; break; // 101^2 : (93) + (61)*X + (31)*X^2
172            }; break;
173        case 103:
174            switch (expo) {
175            case 2: { Element v(3); _domain.read(v[0],16); _domain.read(v[1],34); _domain.read(v[2],22); _Irreductible =  v; }; break; // 103^2 : (16) + (34)*X + (22)*X^2
176            }; break;
177        case 107:
178            switch (expo) {
179            case 2: { Element v(3); _domain.read(v[0],90); _domain.read(v[1],80); _domain.read(v[2],6); _Irreductible =  v; }; break; // 107^2 : (90) + (80)*X + (6)*X^2
180            }; break;
181        case 109:
182            switch (expo) {
183            case 2: { Element v(3); _domain.read(v[0],41); _domain.read(v[1],101); _domain.read(v[2],20); _Irreductible =  v; }; break; // 109^2 : (41) + (101)*X + (20)*X^2
184            }; break;
185        case 113:
186            switch (expo) {
187            case 2: { Element v(3); _domain.read(v[0],99); _domain.read(v[1],111); _domain.read(v[2],76); _Irreductible =  v; }; break; // 113^2 : (99) + (111)*X + (76)*X^2
188            }; break;
189        case 127:
190            switch (expo) {
191            case 2: { Element v(3); _domain.read(v[0],60); _domain.read(v[1],113); _domain.read(v[2],54); _Irreductible =  v; }; break; // 127^2 : (60) + (113)*X + (54)*X^2
192            }; break;
193        case 131:
194            switch (expo) {
195            case 2: { Element v(3); _domain.read(v[0],128); _domain.read(v[1],90); _domain.read(v[2],84); _Irreductible =  v; }; break; // 131^2 : (128) + (90)*X + (84)*X^2
196            }; break;
197        case 137:
198            switch (expo) {
199            case 2: { Element v(3); _domain.read(v[0],120); _domain.read(v[1],85); _domain.read(v[2],127); _Irreductible =  v; }; break; // 137^2 : (120) + (85)*X + (127)*X^2
200            }; break;
201        case 139:
202            switch (expo) {
203            case 2: { Element v(3); _domain.read(v[0],131); _domain.read(v[1],16); _domain.read(v[2],88); _Irreductible =  v; }; break; // 139^2 : (131) + (16)*X + (88)*X^2
204            }; break;
205        case 149:
206            switch (expo) {
207            case 2: { Element v(3); _domain.read(v[0],36); _domain.read(v[1],84); _domain.read(v[2],97); _Irreductible =  v; }; break; // 149^2 : (36) + (84)*X + (97)*X^2
208            }; break;
209        case 151:
210            switch (expo) {
211            case 2: { Element v(3); _domain.read(v[0],54); _domain.read(v[1],149); _domain.read(v[2],29); _Irreductible =  v; }; break; // 151^2 : (54) + (149)*X + (29)*X^2
212            }; break;
213        case 157:
214            switch (expo) {
215            case 2: { Element v(3); _domain.read(v[0],93); _domain.read(v[1],8); _domain.read(v[2],62); _Irreductible =  v; }; break; // 157^2 : (93) + (8)*X + (62)*X^2
216            }; break;
217        case 163:
218            switch (expo) {
219            case 2: { Element v(3); _domain.read(v[0],38); _domain.read(v[1],112); _domain.read(v[2],122); _Irreductible =  v; }; break; // 163^2 : (38) + (112)*X + (122)*X^2
220            }; break;
221        case 167:
222            switch (expo) {
223            case 2: { Element v(3); _domain.read(v[0],35); _domain.read(v[1],70); _domain.read(v[2],108); _Irreductible =  v; }; break; // 167^2 : (35) + (70)*X + (108)*X^2
224            }; break;
225        case 173:
226            switch (expo) {
227            case 2: { Element v(3); _domain.read(v[0],154); _domain.read(v[1],119); _domain.read(v[2],81); _Irreductible =  v; }; break; // 173^2 : (154) + (119)*X + (81)*X^2
228            }; break;
229        case 179:
230            switch (expo) {
231            case 2: { Element v(3); _domain.read(v[0],131); _domain.read(v[1],103); _domain.read(v[2],74); _Irreductible =  v; }; break; // 179^2 : (131) + (103)*X + (74)*X^2
232            }; break;
233        case 181:
234            switch (expo) {
235            case 2: { Element v(3); _domain.read(v[0],156); _domain.read(v[1],135); _domain.read(v[2],164); _Irreductible =  v; }; break; // 181^2 : (156) + (135)*X + (164)*X^2
236            }; break;
237        case 191:
238            switch (expo) {
239            case 2: { Element v(3); _domain.read(v[0],91); _domain.read(v[1],15); _domain.read(v[2],49); _Irreductible =  v; }; break; // 191^2 : (91) + (15)*X + (49)*X^2
240            }; break;
241        case 193:
242            switch (expo) {
243            case 2: { Element v(3); _domain.read(v[0],65); _domain.read(v[1],7); _domain.read(v[2],82); _Irreductible =  v; }; break; // 193^2 : (65) + (7)*X + (82)*X^2
244            }; break;
245        case 197:
246            switch (expo) {
247            case 2: { Element v(3); _domain.read(v[0],179); _domain.read(v[1],72); _domain.read(v[2],132); _Irreductible =  v; }; break; // 197^2 : (179) + (72)*X + (132)*X^2
248            }; break;
249        case 199:
250            switch (expo) {
251            case 2: { Element v(3); _domain.read(v[0],35); _domain.read(v[1],157); _domain.read(v[2],179); _Irreductible =  v; }; break; // 199^2 : (35) + (157)*X + (179)*X^2
252            }; break;
253        case 211:
254            switch (expo) {
255            case 2: { Element v(3); _domain.read(v[0],68); _domain.read(v[1],122); _domain.read(v[2],43); _Irreductible =  v; }; break; // 211^2 : (68) + (122)*X + (43)*X^2
256            }; break;
257        case 223:
258            switch (expo) {
259            case 2: { Element v(3); _domain.read(v[0],63); _domain.read(v[1],61); _domain.read(v[2],123); _Irreductible =  v; }; break; // 223^2 : (63) + (61)*X + (123)*X^2
260            }; break;
261        case 227:
262            switch (expo) {
263            case 2: { Element v(3); _domain.read(v[0],73); _domain.read(v[1],60); _domain.read(v[2],15); _Irreductible =  v; }; break; // 227^2 : (73) + (60)*X + (15)*X^2
264            }; break;
265        case 229:
266            switch (expo) {
267            case 2: { Element v(3); _domain.read(v[0],171); _domain.read(v[1],75); _domain.read(v[2],79); _Irreductible =  v; }; break; // 229^2 : (171) + (75)*X + (79)*X^2
268            }; break;
269        case 233:
270            switch (expo) {
271            case 2: { Element v(3); _domain.read(v[0],224); _domain.read(v[1],55); _domain.read(v[2],176); _Irreductible =  v; }; break; // 233^2 : (224) + (55)*X + (176)*X^2
272            }; break;
273        case 239:
274            switch (expo) {
275            case 2: { Element v(3); _domain.read(v[0],58); _domain.read(v[1],70); _domain.read(v[2],221); _Irreductible =  v; }; break; // 239^2 : (58) + (70)*X + (221)*X^2
276            }; break;
277        case 241:
278            switch (expo) {
279            case 2: { Element v(3); _domain.read(v[0],48); _domain.read(v[1],194); _domain.read(v[2],219); _Irreductible =  v; }; break; // 241^2 : (48) + (194)*X + (219)*X^2
280            }; break;
281        case 251:
282            switch (expo) {
283            case 2: { Element v(3); _domain.read(v[0],108); _domain.read(v[1],61); _domain.read(v[2],163); _Irreductible =  v; }; break; // 251^2 : (108) + (61)*X + (163)*X^2
284            }; break;
285        };
286        if (isZero(_Irreductible)) set_random_irreducible(_domain,expo);
287    }
288
289} // Givaro
290
291#endif // __GIVARO_poly1_cyclo_table_INL
292/* -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
293// vim:sts=4:sw=4:ts=4:et:sr:cino=>s,f0,{0,g0,(0,\:0,t0,+0,=s
294