1comment factorizer test file;
2
3
4array a(20);
5
6
7
8factorize(x**2-1);
9
10
11{{x + 1,1},{x - 1,1}}
12   % To make sure factorizer is loaded.
13
14algebraic procedure test(prob,nfac);
15  begin integer m; scalar p,q,r;
16    scalar basetime;
17    p := for i:=1:nfac product a(i);
18    Write "Problem number ",prob;
19    symbolic (basetime := time());
20    r := factorize p;
21    symbolic (basetime := time() - basetime);
22    q := for each j in r product first j^second j;
23    m := for each j in r sum second j;
24    if m=nfac and p=q then return ok;
25    write "This example failed:";
26    write r
27  end;
28
29
30test
31
32
33% Wang test case 1;
34
35a(1) := x*y+z+10$
36
37
38a(2) := x*z+y+30$
39
40
41a(3) := x+y*z+20$
42
43
44test(1,3);
45
46
47Problem number 1
48
49ok
50
51
52% Wang test case 2;
53
54a(1) := x**3*z+x**3*y+z-11$
55
56
57a(2) := x**2*z**2+x**2*y**2+y+90$
58
59
60test(2,2);
61
62
63Problem number 2
64
65ok
66
67
68
69% Wang test case 3;
70
71a(1) := x**3*y**2+x*z**4+x+z$
72
73
74a(2) := x**3+x*y*z+y**2+y*z**3$
75
76
77test(3,2);
78
79
80Problem number 3
81
82ok
83
84
85
86% Wang test case 4;
87
88a(1) := x**2*z+y**4*z**2+5$
89
90
91a(2) := x*y**3+z**2$
92
93
94a(3) := -x**3*y+z**2+3$
95
96
97a(4) := x**3*y**4+z**2$
98
99
100test(4,4);
101
102
103Problem number 4
104
105ok
106
107
108
109% Wang test case 5;
110
111a(1) := 3*u**2*x**3*y**4*z+x*z**2+y**2*z**2+19*y**2$
112
113
114a(2) := u**2*y**4*z**2+x**2*z+5$
115
116
117a(3) := u**2+x**3*y**4+z**2$
118
119
120test(5,3);
121
122
123Problem number 5
124
125ok
126
127
128
129% Wang test case 6;
130
131a(1) := w**4*x**5*y**6-w**4*z**3+w**2*x**3*y+x*y**2*z**2$
132
133
134a(2) := w**4*z**6-w**3*x**3*y-w**2*x**2*y**2*z**2+x**5*z
135           -x**4*y**2+y**2*z**3$
136
137
138a(3) := -x**5*z**3+x**2*y**3+y*z$
139
140
141test(6,3);
142
143
144Problem number 6
145
146ok
147
148
149
150% Wang test case 7;
151
152a(1) := x+y+z-2$
153
154
155a(2) := x+y+z-2$
156
157
158a(3) := x+y+z-3$
159
160
161a(4) := x+y+z-3$
162
163
164a(5) := x+y+z-3$
165
166
167test(7,5);
168
169
170Problem number 7
171
172ok
173
174
175
176% Wang test case 8;
177
178a(1) := -z**31-w**12*z**20+y**18-y**14+x**2*y**2+x**21+w**2$
179
180
181a(2) := -15*y**2*z**16+29*w**4*x**12*z**3+21*x**3*z**2+3*w**15*y**20$
182
183
184
185% Commented out, since it can take a long time.
186
187% TEST(8,2);
188
189
190
191% Wang test case 9;
192
193a(1) := 18*u**2*w**3*x*z**2+10*u**2*w*x*y**3+15*u*z**2+6*w**2*y**3*z**2$
194
195
196a(2) := x$
197
198
199a(3) := 25*u**2*w**3*y*z**4+32*u**2*w**4*y**4*z**3-
200        48*u**2*x**2*y**3*z**3-2*u**2*w*x**2*y**2+44*u*w*x*y**4*z**4-
201        8*u*w*x**3*z**4+4*w**2*x+11*w**2*x**3*y+12*y**3*z**2$
202
203
204a(4) := z$
205
206
207a(5) := z$
208
209
210a(6) := u$
211
212
213a(7) := u$
214
215
216a(8) := u$
217
218
219a(9) := u$
220
221
222test(9,9);
223
224
225Problem number 9
226
227ok
228
229
230
231
232% Wang test case 10;
233
234a(1) := 31*u**2*x*z+35*w**2*y**2+40*w*x**2+6*x*y$
235
236
237a(2) := 42*u**2*w**2*y**2+47*u**2*w**2*z+22*u**2*w**2+9*u**2*w*x**2+21
238        *u**2*w*x*y*z+37*u**2*y**2*z+u**2*w**2*x*y**2*z**2+8*u**2*w**2
239        *z**2+24*u**2*w*x*y**2*z**2+24*u**2*x**2*y*z**2+12*u**2*x*y**2
240        *z**2+13*u*w**2*x**2*y**2+27*u*w**2*x**2*y+39*u*w*x*z+43*u*
241        x**2*y+44*u*w**2* z**2+37*w**2*x*y+29*w**2*y**2+31*w**2*y*z**2
242        +12*w*x**2*y*z+43*w*x*y*z**2+22*x*y**2+23*x*y*z+24*x*y+41*y**2
243        *z$
244
245
246test(10,2);
247
248
249Problem number 10
250
251ok
252
253
254
255
256% Wang test case 11;
257
258a(1) := -36*u**2*w**3*x*y*z**3-31*u**2*w**3*y**2+20*u**2*w**2*x**2*y**2
259        *z**2-36*u**2*w*x*y**3*z+46*u**2*w*x+9*u**2*y**2-36*u*w**2*y**3
260        +9*u*w*y**3-5*u*w*x**2*y**3+48*u*w*x**3*y**2*z+23*u*w*x**3*y**2
261        -43*u*x**3*y**3*z**3-46*u*x**3*y**2+29*w**3*x*y**3*z**2-
262        14*w**3*x**3*y**3*z**2-45*x**3-8*x*y**2$
263
264
265a(2) := 13*u**3*w**2*x*y*z**3-4*u*x*y**2-w**3*z**3-47*x*y$
266
267
268a(3) := x$
269
270
271a(4) := y$
272
273
274test(11,4);
275
276
277Problem number 11
278
279ok
280
281
282
283
284
285% Wang test case 12;
286a(1) := x+y+z-3$
287
288
289a(2) := x+y+z-3$
290
291
292a(3) := x+y+z-3$
293
294
295test(12,3);
296
297
298Problem number 12
299
300ok
301
302
303
304
305
306% Wang test case 13;
307
308a(1) := 2*w*z+45*x**3-9*y**3-y**2+3*z**3$
309
310
311a(2) := w**2*z**3-w**2+47*x*y$
312
313
314test(13,2);
315
316
317Problem number 13
318
319ok
320
321
322
323
324
325% Wang test case 14;
326
327a(1) := 18*x**4*y**5+41*x**4*y**2-37*x**4+26*x**3*y**4+38*x**2*y**4-29*
328        x**2*y**3-22*y**5$
329
330
331a(2) := 33*x**5*y**6-22*x**4+35*x**3*y+11*y**2$
332
333
334test(14,2);
335
336
337Problem number 14
338
339ok
340
341
342
343
344
345% Wang test case 15;
346
347a(1) := 12*w**2*x*y*z**3-w**2*z**3+w**2-29*x-3*x*y**2$
348
349
350a(2) := 14*w**2*y**2+2*w*z+18*x**3*y-8*x*y**2-y**2+3*z**3$
351
352
353a(3) := z$
354
355
356a(4) := z$
357
358
359a(5) := y$
360
361
362a(6) := y$
363
364
365a(7) := y$
366
367
368a(8) := x$
369
370
371a(9) := x$
372
373
374a(10) := x$
375
376
377a(11) := x$
378
379
380a(12) := x$
381
382
383a(13) := x$
384
385
386test(15,13);
387
388
389Problem number 15
390
391ok
392
393
394
395% Test 16 - the 40th degree polynomial that comes from
396% SIGSAM problem number 7;
397
398a(1) := 8192*y**10+20480*y**9+58368*y**8-161792*y**7+198656*y**6+
399        199680*y**5-414848*y**4-4160*y**3+171816*y**2-48556*y+469$
400
401
402a(2) := 8192*y**10+12288*y**9+66560*y**8-22528*y**7-138240*y**6+
403        572928*y**5-90496*y**4-356032*y**3+113032*y**2+23420*y-8179$
404
405
406a(3) := 4096*y**10+8192*y**9+1600*y**8-20608*y**7+20032*y**6+87360*y**5-
407        105904*y**4+18544*y**3+11888*y**2-3416*y+1$
408
409
410a(4) := 4096*y**10+8192*y**9-3008*y**8-30848*y**7+21056*y**6+146496*
411        y**5-221360*y**4+1232*y**3+144464*y**2-78488*y+11993$
412
413
414test(16,4);
415
416
417Problem number 16
418
419ok
420
421
422% Test 17 - taken from Erich Kaltofen's thesis. This polynomial
423% splits mod all possible primes p;
424
425a(1) := x**25-25*x**20-3500*x**15-57500*x**10+21875*x**5-3125$
426
427
428test(17,1);
429
430
431Problem number 17
432
433ok
434
435
436% Test 18 - another 'hard-to-factorize' univariate;
437
438a(1) := x**18+9*x**17+45*x**16+126*x**15+189*x**14+27*x**13-
439        540*x**12-1215*x**11+1377*x**10+15444*x**9+46899*x**8+
440        90153*x**7+133893*x**6+125388*x**5+29160*x**4-
441        32076*x**3+26244*x**2-8748*x+2916$
442
443
444test(18,1);
445
446
447Problem number 18
448
449ok
450
451
452% Test 19 - another example chosen to lead to false splits mod p;
453
454a(1) := x**16+4*x**12-16*x**11+80*x**9+2*x**8+160*x**7+
455        128*x**6-160*x**5+28*x**4-48*x**3+128*x**2-16*x+1$
456
457
458a(2) := x**16+4*x**12+16*x**11-80*x**9+2*x**8-160*x**7+
459        128*x**6+160*x**5+28*x**4+48*x**3+128*x**2+16*x+1$
460
461
462test(19,2);
463
464
465Problem number 19
466
467ok
468
469
470
471% End of all tests;
472
473
474end;
475
476Tested on x86_64-pc-windows CSL
477Time (counter 1): 31 ms
478
479End of Lisp run after 0.03+0.06 seconds
480real 0.25
481user 0.04
482sys 0.01
483