Latin Hypercube Samples (lhs)  1.0
R, C++, and Rcpp code to generate Latin hypercube samples
All Classes Namespaces Files Functions Variables Typedefs Macros Pages
xtn.h
1 /*
2  * NOTE: This file should be excluded from the Doxygen build
3  ****** COMPUTER GENERATED etc/CreatePowerCylce.R ******
4  *
5  * file xtn.h
6  * author Robert Carnell
7  * copyright Copyright (c) 2020, Robert Carnell
8  *
9  * License: MIT
10  *
11  * Reference:
12  * <ul><li><a href="http://lib.stat.cmu.edu/designs/">Statlib Designs</a></li>
13  * <li><a href="http://lib.stat.cmu.edu/designs/oa.c">Owen's Orthogonal Array Algorithms</a></li></ul>
14  *
15  * This file is derived from the xtndispatch.h xtnset.h xtndeclare.h
16  * See Table B.3 Power cycle II pg 316 in Block Designs: A Randomization Approach
17  */
18 
19 #ifndef XTN_H
20 #define XTN_H
21 
22 // GF(2^2) = GF(4)
23 // x^2 = 1 + x
24 if (q == primes::ipow(2,2)) xtn = {1, 1};
25 // GF(2^3) = GF(8)
26 // x^3 = 1 + x^2
27 else if (q == primes::ipow(2,3)) xtn = {1, 0, 1};
28 // GF(2^4) = GF(16)
29 // x^4 = 1 + x^3
30 else if (q == primes::ipow(2,4)) xtn = {1, 0, 0, 1};
31 // GF(2^5) = GF(32)
32 // x^5 = 1 + x^3
33 else if (q == primes::ipow(2,5)) xtn = {1, 0, 0, 1, 0};
34 // GF(2^6) = GF(64)
35 // x^6 = 1 + x^5
36 else if (q == primes::ipow(2,6)) xtn = {1, 0, 0, 0, 0, 1};
37 // GF(2^7) = GF(128)
38 // x^7 = 1 + x^6
39 else if (q == primes::ipow(2,7)) xtn = {1, 0, 0, 0, 0, 0, 1};
40 // GF(2^8) = GF(256)
41 // x^8 = 1 + x^4 + x^5 + x^6
42 else if (q == primes::ipow(2,8)) xtn = {1, 0, 0, 0, 1, 1, 1, 0};
43 // GF(2^9) = GF(512)
44 // x^9 = 1 + x^5
45 else if (q == primes::ipow(2,9)) xtn = {1, 0, 0, 0, 0, 1, 0, 0, 0};
46 // GF(2^10) = GF(1024)
47 // x^10 = 1 + x^7
48 else if (q == primes::ipow(2,10)) xtn = {1, 0, 0, 0, 0, 0, 0, 1, 0, 0};
49 // GF(2^11) = GF(2048)
50 // x^11 = 1 + x^9
51 else if (q == primes::ipow(2,11)) xtn = {1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0};
52 // GF(2^12) = GF(4096)
53 // x^12 = 1 + x^4 + x^10 + x^11
54 else if (q == primes::ipow(2,12)) xtn = {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1};
55 // GF(2^13) = GF(8192)
56 // x^13 = 1 + x^8 + x^11 + x^12
57 else if (q == primes::ipow(2,13)) xtn = {1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1};
58 // GF(2^14) = GF(16384)
59 // x^14 = 1 + x^2 + x^12 + x^13
60 else if (q == primes::ipow(2,14)) xtn = {1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1};
61 // GF(2^15) = GF(32768)
62 // x^15 = 1 + x^14
63 else if (q == primes::ipow(2,15)) xtn = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
64 // GF(2^16) = GF(65536)
65 // x^16 = 1 + x^4 + x^13 + x^15
66 else if (q == primes::ipow(2,16)) xtn = {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1};
67 // GF(2^17) = GF(131072)
68 // x^17 = 1 + x^14
69 else if (q == primes::ipow(2,17)) xtn = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0};
70 // GF(2^18) = GF(262144)
71 // x^18 = 1 + x^11
72 else if (q == primes::ipow(2,18)) xtn = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0};
73 // GF(2^19) = GF(524288)
74 // x^19 = 1 + x^14 + x^17 + x^18
75 else if (q == primes::ipow(2,19)) xtn = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1};
76 // GF(2^20) = GF(1048576)
77 // x^20 = 1 + x^17
78 else if (q == primes::ipow(2,20)) xtn = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0};
79 // GF(2^21) = GF(2097152)
80 // x^21 = 1 + x^19
81 else if (q == primes::ipow(2,21)) xtn = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0};
82 // GF(2^22) = GF(4194304)
83 // x^22 = 1 + x^21
84 else if (q == primes::ipow(2,22)) xtn = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
85 // GF(2^23) = GF(8388608)
86 // x^23 = 1 + x^18
87 else if (q == primes::ipow(2,23)) xtn = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0};
88 // GF(2^24) = GF(16777216)
89 // x^24 = 1 + x^17 + x^22 + x^23
90 else if (q == primes::ipow(2,24)) xtn = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1};
91 // GF(2^25) = GF(33554432)
92 // x^25 = 1 + x^22
93 else if (q == primes::ipow(2,25)) xtn = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0};
94 // GF(2^26) = GF(67108864)
95 // x^26 = 1 + x^20 + x^24 + x^25
96 else if (q == primes::ipow(2,26)) xtn = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1};
97 // GF(2^27) = GF(134217728)
98 // x^27 = 1 + x^22 + x^25 + x^26
99 else if (q == primes::ipow(2,27)) xtn = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1};
100 // GF(2^28) = GF(268435456)
101 // x^28 = 1 + x^25
102 else if (q == primes::ipow(2,28)) xtn = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0};
103 // GF(2^29) = GF(536870912)
104 // x^29 = 1 + x^27
105 else if (q == primes::ipow(2,29)) xtn = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0};
106 // GF(3^2) = GF(9)
107 // x^2 = 1 + 2x
108 else if (q == primes::ipow(3,2)) xtn = {1, 2};
109 // GF(3^3) = GF(27)
110 // x^3 = 2 + x^2
111 else if (q == primes::ipow(3,3)) xtn = {2, 0, 1};
112 // GF(3^4) = GF(81)
113 // x^4 = 1 + 2x^3
114 else if (q == primes::ipow(3,4)) xtn = {1, 0, 0, 2};
115 // GF(3^5) = GF(243)
116 // x^5 = 2 + 2x^2 + 2x^4
117 else if (q == primes::ipow(3,5)) xtn = {2, 0, 2, 0, 2};
118 // GF(3^6) = GF(729)
119 // x^6 = 1 + 2x^5
120 else if (q == primes::ipow(3,6)) xtn = {1, 0, 0, 0, 0, 2};
121 // GF(3^7) = GF(2187)
122 // x^7 = 2 + 2x^4 + 2x^6
123 else if (q == primes::ipow(3,7)) xtn = {2, 0, 0, 0, 2, 0, 2};
124 // GF(3^8) = GF(6561)
125 // x^8 = 1 + 2x^5
126 else if (q == primes::ipow(3,8)) xtn = {1, 0, 0, 0, 0, 2, 0, 0};
127 // GF(3^9) = GF(19683)
128 // x^9 = 2 + 2x^5 + 2x^7
129 else if (q == primes::ipow(3,9)) xtn = {2, 0, 0, 0, 0, 2, 0, 2, 0};
130 // GF(3^10) = GF(59049)
131 // x^10 = 1 + 2x^7 + 2x^9
132 else if (q == primes::ipow(3,10)) xtn = {1, 0, 0, 0, 0, 0, 0, 2, 0, 2};
133 // GF(3^11) = GF(177147)
134 // x^11 = 2 + 2x^4 + 2x^10
135 else if (q == primes::ipow(3,11)) xtn = {2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2};
136 // GF(3^12) = GF(531441)
137 // x^12 = 1 + 2x^7 + 2x^11
138 else if (q == primes::ipow(3,12)) xtn = {1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2};
139 // GF(3^13) = GF(1594323)
140 // x^13 = 2 + 2x^6 + 2x^12
141 else if (q == primes::ipow(3,13)) xtn = {2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2};
142 // GF(3^14) = GF(4782969)
143 // x^14 = 1 + 2x^13
144 else if (q == primes::ipow(3,14)) xtn = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2};
145 // GF(3^15) = GF(14348907)
146 // x^15 = 2 + 2x^4 + 2x^14
147 else if (q == primes::ipow(3,15)) xtn = {2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2};
148 // GF(3^16) = GF(43046721)
149 // x^16 = 1 + 2x^9
150 else if (q == primes::ipow(3,16)) xtn = {1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0};
151 // GF(3^17) = GF(129140163)
152 // x^17 = 2 + 2x^8 + 2x^16
153 else if (q == primes::ipow(3,17)) xtn = {2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2};
154 // GF(3^18) = GF(387420489)
155 // x^18 = 1 + 2x^5 + 2x^17
156 else if (q == primes::ipow(3,18)) xtn = {1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2};
157 // GF(5^2) = GF(25)
158 // x^2 = 3 + 4x
159 else if (q == primes::ipow(5,2)) xtn = {3, 4};
160 // GF(5^3) = GF(125)
161 // x^3 = 3 + 4x^2
162 else if (q == primes::ipow(5,3)) xtn = {3, 0, 4};
163 // GF(5^4) = GF(625)
164 // x^4 = 2 + 4x + 4x^3
165 else if (q == primes::ipow(5,4)) xtn = {2, 4, 0, 4};
166 // GF(5^5) = GF(3125)
167 // x^5 = 3 + 4x^2
168 else if (q == primes::ipow(5,5)) xtn = {3, 0, 4, 0, 0};
169 // GF(5^6) = GF(15625)
170 // x^6 = 3 + 4x^5
171 else if (q == primes::ipow(5,6)) xtn = {3, 0, 0, 0, 0, 4};
172 // GF(5^7) = GF(78125)
173 // x^7 = 3 + 4x^6
174 else if (q == primes::ipow(5,7)) xtn = {3, 0, 0, 0, 0, 0, 4};
175 // GF(5^8) = GF(390625)
176 // x^8 = 2 + 4x^3 + 4x^5
177 else if (q == primes::ipow(5,8)) xtn = {2, 0, 0, 4, 0, 4, 0, 0};
178 // GF(5^9) = GF(1953125)
179 // x^9 = 2 + 4x^6 + 4x^7
180 else if (q == primes::ipow(5,9)) xtn = {2, 0, 0, 0, 0, 0, 4, 4, 0};
181 // GF(5^10) = GF(9765625)
182 // x^10 = 2 + 4x^7 + 4x^9
183 else if (q == primes::ipow(5,10)) xtn = {2, 0, 0, 0, 0, 0, 0, 4, 0, 4};
184 // GF(5^11) = GF(48828125)
185 // x^11 = 3 + 4x^10
186 else if (q == primes::ipow(5,11)) xtn = {3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4};
187 // GF(5^12) = GF(244140625)
188 // x^12 = 2 + 4x^4 + 4x^7
189 else if (q == primes::ipow(5,12)) xtn = {2, 0, 0, 0, 4, 0, 0, 4, 0, 0, 0, 0};
190 // GF(7^2) = GF(49)
191 // x^2 = 4 + 6x
192 else if (q == primes::ipow(7,2)) xtn = {4, 6};
193 // GF(7^3) = GF(343)
194 // x^3 = 5 + 6x + 6x^2
195 else if (q == primes::ipow(7,3)) xtn = {5, 6, 6};
196 // GF(7^4) = GF(2401)
197 // x^4 = 4 + 6x^2 + 6x^3
198 else if (q == primes::ipow(7,4)) xtn = {4, 0, 6, 6};
199 // GF(7^5) = GF(16807)
200 // x^5 = 3 + 6x^4
201 else if (q == primes::ipow(7,5)) xtn = {3, 0, 0, 0, 6};
202 // GF(7^6) = GF(117649)
203 // x^6 = 4 + 6x^4 + 6x^5
204 else if (q == primes::ipow(7,6)) xtn = {4, 0, 0, 0, 6, 6};
205 // GF(7^7) = GF(823543)
206 // x^7 = 3 + 6x^5
207 else if (q == primes::ipow(7,7)) xtn = {3, 0, 0, 0, 0, 6, 0};
208 // GF(7^8) = GF(5764801)
209 // x^8 = 4 + 6x^7
210 else if (q == primes::ipow(7,8)) xtn = {4, 0, 0, 0, 0, 0, 0, 6};
211 // GF(7^9) = GF(40353607)
212 // x^9 = 5 + 6x^3 + 6x^8
213 else if (q == primes::ipow(7,9)) xtn = {5, 0, 0, 6, 0, 0, 0, 0, 6};
214 // GF(7^10) = GF(282475249)
215 // x^10 = 4 + 6x^8 + 6x^9
216 else if (q == primes::ipow(7,10)) xtn = {4, 0, 0, 0, 0, 0, 0, 0, 6, 6};
217 // GF(11^2) = GF(121)
218 // x^2 = 4 + 10x
219 else if (q == primes::ipow(11,2)) xtn = {4, 10};
220 // GF(11^3) = GF(1331)
221 // x^3 = 6 + 10x^2
222 else if (q == primes::ipow(11,3)) xtn = {6, 0, 10};
223 // GF(11^4) = GF(14641)
224 // x^4 = 9 + 10x
225 else if (q == primes::ipow(11,4)) xtn = {9, 10, 0, 0};
226 // GF(11^5) = GF(161051)
227 // x^5 = 2 + 10x^2 + 10x^3
228 else if (q == primes::ipow(11,5)) xtn = {2, 0, 10, 10, 0};
229 // GF(11^6) = GF(1771561)
230 // x^6 = 4 + 10x + 10x^5
231 else if (q == primes::ipow(11,6)) xtn = {4, 10, 0, 0, 0, 10};
232 // GF(11^7) = GF(19487171)
233 // x^7 = 6 + 10x^6
234 else if (q == primes::ipow(11,7)) xtn = {6, 0, 0, 0, 0, 0, 10};
235 // GF(11^8) = GF(214358881)
236 // x^8 = 9 + 10x + 10x^4
237 else if (q == primes::ipow(11,8)) xtn = {9, 10, 0, 0, 10, 0, 0, 0};
238 // GF(13^2) = GF(169)
239 // x^2 = 11 + 12x
240 else if (q == primes::ipow(13,2)) xtn = {11, 12};
241 // GF(13^3) = GF(2197)
242 // x^3 = 6 + 12x^2
243 else if (q == primes::ipow(13,3)) xtn = {6, 0, 12};
244 // GF(13^4) = GF(28561)
245 // x^4 = 11 + 12x + 12x^3
246 else if (q == primes::ipow(13,4)) xtn = {11, 12, 0, 12};
247 // GF(13^5) = GF(371293)
248 // x^5 = 2 + 12x + 12x^3
249 else if (q == primes::ipow(13,5)) xtn = {2, 12, 0, 12, 0};
250 // GF(13^6) = GF(4826809)
251 // x^6 = 7 + 12x^3 + 12x^5
252 else if (q == primes::ipow(13,6)) xtn = {7, 0, 0, 12, 0, 12};
253 // GF(13^7) = GF(62748517)
254 // x^7 = 7 + 12x^4
255 else if (q == primes::ipow(13,7)) xtn = {7, 0, 0, 0, 12, 0, 0};
256 // GF(13^8) = GF(815730721)
257 // x^8 = 11 + 12x^5 + 12x^6
258 else if (q == primes::ipow(13,8)) xtn = {11, 0, 0, 0, 0, 12, 12, 0};
259 // GF(17^2) = GF(289)
260 // x^2 = 14 + 16x
261 else if (q == primes::ipow(17,2)) xtn = {14, 16};
262 // GF(17^3) = GF(4913)
263 // x^3 = 3 + 16x
264 else if (q == primes::ipow(17,3)) xtn = {3, 16, 0};
265 // GF(17^4) = GF(83521)
266 // x^4 = 12 + 16x^3
267 else if (q == primes::ipow(17,4)) xtn = {12, 0, 0, 16};
268 // GF(17^5) = GF(1419857)
269 // x^5 = 3 + 16x^4
270 else if (q == primes::ipow(17,5)) xtn = {3, 0, 0, 0, 16};
271 // GF(17^6) = GF(24137569)
272 // x^6 = 14 + 16x^5
273 else if (q == primes::ipow(17,6)) xtn = {14, 0, 0, 0, 0, 16};
274 // GF(17^7) = GF(410338673)
275 // x^7 = 3 + 16x^3
276 else if (q == primes::ipow(17,7)) xtn = {3, 0, 0, 16, 0, 0, 0};
277 // GF(19^2) = GF(361)
278 // x^2 = 17 + 18x
279 else if (q == primes::ipow(19,2)) xtn = {17, 18};
280 // GF(19^3) = GF(6859)
281 // x^3 = 3 + 18x^2
282 else if (q == primes::ipow(19,3)) xtn = {3, 0, 18};
283 // GF(19^4) = GF(130321)
284 // x^4 = 17 + 18x^3
285 else if (q == primes::ipow(19,4)) xtn = {17, 0, 0, 18};
286 // GF(19^5) = GF(2476099)
287 // x^5 = 3 + 18x
288 else if (q == primes::ipow(19,5)) xtn = {3, 18, 0, 0, 0};
289 // GF(19^6) = GF(47045881)
290 // x^6 = 16 + 18x
291 else if (q == primes::ipow(19,6)) xtn = {16, 18, 0, 0, 0, 0};
292 // GF(19^7) = GF(893871739)
293 // x^7 = 10 + 18x^5
294 else if (q == primes::ipow(19,7)) xtn = {10, 0, 0, 0, 0, 18, 0};
295 // GF(23^2) = GF(529)
296 // x^2 = 16 + 22x
297 else if (q == primes::ipow(23,2)) xtn = {16, 22};
298 // GF(23^3) = GF(12167)
299 // x^3 = 7 + 22x^2
300 else if (q == primes::ipow(23,3)) xtn = {7, 0, 22};
301 // GF(23^4) = GF(279841)
302 // x^4 = 12 + 22x
303 else if (q == primes::ipow(23,4)) xtn = {12, 22, 0, 0};
304 // GF(23^5) = GF(6436343)
305 // x^5 = 5 + 22x^4
306 else if (q == primes::ipow(23,5)) xtn = {5, 0, 0, 0, 22};
307 // GF(23^6) = GF(148035889)
308 // x^6 = 16 + 22x^5
309 else if (q == primes::ipow(23,6)) xtn = {16, 0, 0, 0, 0, 22};
310 // GF(29^2) = GF(841)
311 // x^2 = 26 + 28x
312 else if (q == primes::ipow(29,2)) xtn = {26, 28};
313 // GF(29^3) = GF(24389)
314 // x^3 = 11 + 28x
315 else if (q == primes::ipow(29,3)) xtn = {11, 28, 0};
316 // GF(29^4) = GF(707281)
317 // x^4 = 27 + 28x^3
318 else if (q == primes::ipow(29,4)) xtn = {27, 0, 0, 28};
319 // GF(29^5) = GF(20511149)
320 // x^5 = 3 + 28x^3
321 else if (q == primes::ipow(29,5)) xtn = {3, 0, 0, 28, 0};
322 // GF(29^6) = GF(594823321)
323 // x^6 = 26 + 28x
324 else if (q == primes::ipow(29,6)) xtn = {26, 28, 0, 0, 0, 0};
325 // GF(31^2) = GF(961)
326 // x^2 = 19 + 30x
327 else if (q == primes::ipow(31,2)) xtn = {19, 30};
328 // GF(31^3) = GF(29791)
329 // x^3 = 3 + 30x
330 else if (q == primes::ipow(31,3)) xtn = {3, 30, 0};
331 // GF(31^4) = GF(923521)
332 // x^4 = 18 + 30x^3
333 else if (q == primes::ipow(31,4)) xtn = {18, 0, 0, 30};
334 // GF(31^5) = GF(28629151)
335 // x^5 = 11 + 30x^3
336 else if (q == primes::ipow(31,5)) xtn = {11, 0, 0, 30, 0};
337 // GF(31^6) = GF(887503681)
338 // x^6 = 19 + 30x^5
339 else if (q == primes::ipow(31,6)) xtn = {19, 0, 0, 0, 0, 30};
340 // GF(37^2) = GF(1369)
341 // x^2 = 32 + 36x
342 else if (q == primes::ipow(37,2)) xtn = {32, 36};
343 // GF(37^3) = GF(50653)
344 // x^3 = 13 + 36x^2
345 else if (q == primes::ipow(37,3)) xtn = {13, 0, 36};
346 // GF(37^4) = GF(1874161)
347 // x^4 = 35 + 36x
348 else if (q == primes::ipow(37,4)) xtn = {35, 36, 0, 0};
349 // GF(37^5) = GF(69343957)
350 // x^5 = 5 + 36x
351 else if (q == primes::ipow(37,5)) xtn = {5, 36, 0, 0, 0};
352 // GF(41^2) = GF(1681)
353 // x^2 = 29 + 40x
354 else if (q == primes::ipow(41,2)) xtn = {29, 40};
355 // GF(41^3) = GF(68921)
356 // x^3 = 6 + 40x
357 else if (q == primes::ipow(41,3)) xtn = {6, 40, 0};
358 // GF(41^4) = GF(2825761)
359 // x^4 = 24 + 40x
360 else if (q == primes::ipow(41,4)) xtn = {24, 40, 0, 0};
361 // GF(41^5) = GF(115856201)
362 // x^5 = 6 + 40x^4
363 else if (q == primes::ipow(41,5)) xtn = {6, 0, 0, 0, 40};
364 // GF(43^2) = GF(1849)
365 // x^2 = 40 + 42x
366 else if (q == primes::ipow(43,2)) xtn = {40, 42};
367 // GF(43^3) = GF(79507)
368 // x^3 = 3 + 42x
369 else if (q == primes::ipow(43,3)) xtn = {3, 42, 0};
370 // GF(43^4) = GF(3418801)
371 // x^4 = 23 + 42x
372 else if (q == primes::ipow(43,4)) xtn = {23, 42, 0, 0};
373 // GF(43^5) = GF(147008443)
374 // x^5 = 3 + 42x^4
375 else if (q == primes::ipow(43,5)) xtn = {3, 0, 0, 0, 42};
376 // GF(47^2) = GF(2209)
377 // x^2 = 34 + 46x
378 else if (q == primes::ipow(47,2)) xtn = {34, 46};
379 // GF(47^3) = GF(103823)
380 // x^3 = 5 + 46x^2
381 else if (q == primes::ipow(47,3)) xtn = {5, 0, 46};
382 // GF(47^4) = GF(4879681)
383 // x^4 = 42 + 46x^3
384 else if (q == primes::ipow(47,4)) xtn = {42, 0, 0, 46};
385 // GF(47^5) = GF(229345007)
386 // x^5 = 5 + 46x
387 else if (q == primes::ipow(47,5)) xtn = {5, 46, 0, 0, 0};
388 #endif
oacpp::primes::ipow
int ipow(int a, int b)
Definition: primes.cpp:150