1 | // $Id: gcdp_s.tst,v 1.4 1998-07-01 10:20:25 obachman Exp $ |
---|
2 | |
---|
3 | // |
---|
4 | // gcdp_s.tst - short tests for gcd calculations mod p. |
---|
5 | // |
---|
6 | // All univariate non-trivial examples come from gcdUnivP.fex |
---|
7 | // or gcdUnivPAlpha.fex. |
---|
8 | // |
---|
9 | // The example in variables `a', `c', `e', ... came from `untitled2(6/p/1)' |
---|
10 | // in stdMultivPGcd.in. |
---|
11 | // |
---|
12 | // To Do: |
---|
13 | // |
---|
14 | // o multivariate gcd calculations with parameters |
---|
15 | // |
---|
16 | |
---|
17 | LIB "tst.lib"; |
---|
18 | tst_init(); |
---|
19 | tst_ignore("CVS ID : $Id: gcdp_s.tst,v 1.4 1998-07-01 10:20:25 obachman Exp $"); |
---|
20 | |
---|
21 | // |
---|
22 | // - functions. |
---|
23 | // |
---|
24 | |
---|
25 | // |
---|
26 | // simplifyGcd() - print gcd as well as normalized gcd. |
---|
27 | // |
---|
28 | proc simplifyGcd ( poly f, poly g ) |
---|
29 | { |
---|
30 | poly d=gcd( f, g ); |
---|
31 | d; |
---|
32 | simplify( d, 1 ); |
---|
33 | } |
---|
34 | |
---|
35 | // |
---|
36 | // - ring r1=32003,x,dp. |
---|
37 | // |
---|
38 | |
---|
39 | tst_ignore( "ring r1=32003,x,dp;" ); |
---|
40 | ring r1=32003,x,dp; |
---|
41 | |
---|
42 | poly f=-9554*x^4-12895*x^3-10023*x^2-6213*x; |
---|
43 | poly g; |
---|
44 | |
---|
45 | // some trivial examples |
---|
46 | gcd(0, 0); |
---|
47 | gcd(0, 3123); |
---|
48 | gcd(4353, 0); |
---|
49 | simplifyGcd(0, 0); |
---|
50 | simplifyGcd(0, 3123); |
---|
51 | simplifyGcd(4353, 0); |
---|
52 | |
---|
53 | simplifyGcd(0, f); |
---|
54 | simplifyGcd(f, 0); |
---|
55 | |
---|
56 | simplifyGcd(23123, f); |
---|
57 | simplifyGcd(f, 13123); |
---|
58 | |
---|
59 | // some less trivial examples |
---|
60 | f=-9554*x^4-12895*x^3-10023*x^2-6213*x; |
---|
61 | g=-9554*x^3-3341*x^2+6213*x; |
---|
62 | simplifyGcd(f, g); |
---|
63 | |
---|
64 | f=-11265*x^6+12161*x^5+10369*x^4-12161*x^3+896*x^2; |
---|
65 | g=10669*x^8-10673*x^7+5*x^6+8*x^5-10681*x^4+10665*x^3+7*x^2; |
---|
66 | simplifyGcd(f, g); |
---|
67 | |
---|
68 | f=-7918*x^9-14406*x^8-7256*x^7+2092*x^6-2198*x^5-12539*x^4-14631*x^3-7150*x^2; |
---|
69 | g=-14833*x^13-7011*x^12+15121*x^11-10864*x^10+12943*x^9-9871*x^8+10354*x^7-1437*x^6+6604*x^5-10394*x^4-3231*x^3-9348*x^2-2092*x; |
---|
70 | simplifyGcd(f, g); |
---|
71 | |
---|
72 | // |
---|
73 | // - ring r2=(32003,a),x,dp; minpoly=a^4+8734*a^3+a^2+11817*a+1. |
---|
74 | // |
---|
75 | |
---|
76 | tst_ignore( "ring r2=(32003,a),x,dp;" ); |
---|
77 | ring r2=(32003,a),x,dp; |
---|
78 | minpoly=a^4+8734*a^3+a^2+11817*a+1; |
---|
79 | |
---|
80 | poly f=-9554*x^4-12895*x^3-10023*x^2-6213*x; |
---|
81 | poly g; |
---|
82 | |
---|
83 | // first, some of the r1 examples |
---|
84 | simplifyGcd(0, 0); |
---|
85 | simplifyGcd(0, 3123); |
---|
86 | simplifyGcd(4353, 0); |
---|
87 | |
---|
88 | simplifyGcd(0, f); |
---|
89 | simplifyGcd(f, 0); |
---|
90 | |
---|
91 | simplifyGcd(23123, f); |
---|
92 | simplifyGcd(f, 13123); |
---|
93 | |
---|
94 | // some less trivial examples |
---|
95 | f=-9554*x^4-12895*x^3-10023*x^2-6213*x; |
---|
96 | g=-9554*x^3-3341*x^2+6213*x; |
---|
97 | simplifyGcd(f, g); |
---|
98 | |
---|
99 | f=-11265*x^6+12161*x^5+10369*x^4-12161*x^3+896*x^2; |
---|
100 | g=10669*x^8-10673*x^7+5*x^6+8*x^5-10681*x^4+10665*x^3+7*x^2; |
---|
101 | simplifyGcd(f, g); |
---|
102 | |
---|
103 | // now, examples involving the algebraic variable |
---|
104 | f=(21147*a^3*x^5+10147*a^3*x^4+8142*a^2*x^4+27671*a*x^4+29289*x^4+29289*a^3*x^3); |
---|
105 | g=(6167*a^3*x^6+1536*a^2*x^6+5211*a*x^6+1536*x^6+17534*a^3*x^5+478*a^2*x^5+1536*a*x^5+19085*x^5+3203*a^3*x^4+26578*a^2*x^4+17052*a*x^4+26770*x^4+26002*a^3*x^3+24062*a^2*x^3+192*a*x^3+6386*x^3); |
---|
106 | simplifyGcd(f, g); |
---|
107 | |
---|
108 | f=(2295*a^2*x^11+5897*a^3*x^10+765*a^2*x^10+27718*a^3*x^9+1283*a^2*x^9+23792*a*x^9+518*x^9+22026*a^3*x^8+11468*a^2*x^8+16834*a*x^8+24778*x^8+28460*a^3*x^7+8140*a^2*x^7+28036*a*x^7+1613*x^7+18196*a^3*x^6+13274*a^2*x^6+4638*a*x^6+31194*x^6+12206*a^3*x^5+10349*a^2*x^5+30979*a*x^5+8612*x^5); |
---|
109 | g=(8192*a^3*x^10+8957*a^2*x^10+9659*a^3*x^9+28672*a^2*x^9+4553*a*x^9+12288*x^9+5819*a^3*x^8+320*a^2*x^8+14380*a*x^8+12104*x^8+12047*a^3*x^7+19823*a^2*x^7+6824*a*x^7+4335*x^7+29376*a^3*x^6+22190*a^2*x^6+31239*a*x^6+22647*x^6); |
---|
110 | simplifyGcd(f, g); |
---|
111 | |
---|
112 | // |
---|
113 | // - ring r3=(32003,t),x,dp. |
---|
114 | // |
---|
115 | |
---|
116 | tst_ignore( "ring r3=(32003,t),x,dp;" ); |
---|
117 | ring r3=(32003,t),x,dp; |
---|
118 | |
---|
119 | poly f=(-9554*x^4-12895*x^3-10023*x^2-6213*x); |
---|
120 | poly g; |
---|
121 | |
---|
122 | // first, some of the r1 examples (slightly modified) |
---|
123 | simplifyGcd(0, 0); |
---|
124 | simplifyGcd(0, 3123*t); |
---|
125 | simplifyGcd(4353, 0); |
---|
126 | |
---|
127 | simplifyGcd(0, f/t); |
---|
128 | simplifyGcd(f, 0); |
---|
129 | |
---|
130 | simplifyGcd(23123/t, f); |
---|
131 | simplifyGcd(f, 13123); |
---|
132 | |
---|
133 | // some less trivial examples |
---|
134 | f=-9554*x^4-12895*x^3-10023*x^2-6213*x; |
---|
135 | g=-9554*x^3-3341*x^2+6213*x; |
---|
136 | simplifyGcd(f, g); |
---|
137 | |
---|
138 | // we go on with modified variable names |
---|
139 | tst_ignore( "ring r3=(32003,a,c,e),(f,h,k),dp;" ); |
---|
140 | kill r3; |
---|
141 | ring r3=(32003,a,c,e),(f,h,k),dp; |
---|
142 | |
---|
143 | poly fPoly; |
---|
144 | poly gPoly; |
---|
145 | |
---|
146 | fPoly=(16001*c^2*f^2*k^2-16001*c*e*f*k^3+c*f^3*h*k-e*f^2*h*k^2); |
---|
147 | gPoly=(c^3*e*f*h-4*c*e^2*f*h^2); |
---|
148 | simplifyGcd(fPoly, gPoly); |
---|
149 | |
---|
150 | fPoly=(c^4*k^2-5*c^3*f*h*k+4*c^2*e*h*k^2+4*c^2*f^2*h^2-4*c*e*f*h^2*k); |
---|
151 | gPoly=(-c^3*f*k^2+c^2*e*k^3+2*c^2*f^2*h*k-2*c*e*f*h*k^2); |
---|
152 | simplifyGcd(fPoly, gPoly); |
---|
153 | |
---|
154 | fPoly=(-8001*c^4*e*f*k^6+8001*c^4*f^3*h*k^4+8001*c^3*e^2*k^7+8001*c^3*e*f^2*h*k^5+16001*c^3*f^4*h^2*k^3+16001*c^2*e^2*f*h*k^6-16001*c^2*e*f^3*h^2*k^4); |
---|
155 | gPoly=(16001*c^7*e*h*k^3-15998*c^6*e*f*h^2*k^2-7*c^5*e*f^2*h^3*k-8*c^4*e^2*f*h^3*k^2+4*c^4*e*f^3*h^4+8*c^3*e^3*h^3*k^3+24*c^3*e^2*f^2*h^4*k-24*c^2*e^3*f*h^4*k^2-16*c^2*e^2*f^3*h^5+16*c*e^3*f^2*h^5*k); |
---|
156 | simplifyGcd(fPoly, gPoly); |
---|
157 | |
---|
158 | // |
---|
159 | // - ring r4=32003,(t,x),dp. |
---|
160 | // |
---|
161 | // The examples from r4 are those from r3 with parameters |
---|
162 | // changed to ring variables. |
---|
163 | // |
---|
164 | |
---|
165 | tst_ignore( "ring r4=32003,(t,x),dp;" ); |
---|
166 | ring r4=32003,(t,x),dp; |
---|
167 | |
---|
168 | poly f=(-9554*x^4-12895*x^3-10023*x^2-6213*x); |
---|
169 | poly g; |
---|
170 | |
---|
171 | // first, some of the r1 examples (slightly modified) |
---|
172 | simplifyGcd(0, 0); |
---|
173 | simplifyGcd(0, 3123*t); |
---|
174 | simplifyGcd(4353, 0); |
---|
175 | |
---|
176 | simplifyGcd(0, f); |
---|
177 | simplifyGcd(f, 0); |
---|
178 | |
---|
179 | simplifyGcd(23123*t, f); |
---|
180 | simplifyGcd(f, 13123); |
---|
181 | |
---|
182 | // some less trivial examples |
---|
183 | f=-9554*x^4-12895*x^3-10023*x^2-6213*x; |
---|
184 | g=-9554*x^3-3341*x^2+6213*x; |
---|
185 | simplifyGcd(t*f, g); |
---|
186 | |
---|
187 | // we go on with modified variable names |
---|
188 | tst_ignore( "ring r4=32003,(a,c,e,f,h,k),dp;" ); |
---|
189 | kill r4; |
---|
190 | ring r4=32003,(a,c,e,f,h,k),dp; |
---|
191 | |
---|
192 | poly fPoly; |
---|
193 | poly gPoly; |
---|
194 | |
---|
195 | fPoly=(16001*c^2*f^2*k^2-16001*c*e*f*k^3+c*f^3*h*k-e*f^2*h*k^2); |
---|
196 | gPoly=(c^3*e*f*h-4*c*e^2*f*h^2); |
---|
197 | simplifyGcd(fPoly, gPoly); |
---|
198 | |
---|
199 | fPoly=(c^4*k^2-5*c^3*f*h*k+4*c^2*e*h*k^2+4*c^2*f^2*h^2-4*c*e*f*h^2*k); |
---|
200 | gPoly=(-c^3*f*k^2+c^2*e*k^3+2*c^2*f^2*h*k-2*c*e*f*h*k^2); |
---|
201 | simplifyGcd(fPoly, gPoly); |
---|
202 | |
---|
203 | fPoly=(-8001*c^4*e*f*k^6+8001*c^4*f^3*h*k^4+8001*c^3*e^2*k^7+8001*c^3*e*f^2*h*k^5+16001*c^3*f^4*h^2*k^3+16001*c^2*e^2*f*h*k^6-16001*c^2*e*f^3*h^2*k^4); |
---|
204 | gPoly=(16001*c^7*e*h*k^3-15998*c^6*e*f*h^2*k^2-7*c^5*e*f^2*h^3*k-8*c^4*e^2*f*h^3*k^2+4*c^4*e*f^3*h^4+8*c^3*e^3*h^3*k^3+24*c^3*e^2*f^2*h^4*k-24*c^2*e^3*f*h^4*k^2-16*c^2*e^2*f^3*h^5+16*c*e^3*f^2*h^5*k); |
---|
205 | simplifyGcd(fPoly, gPoly); |
---|
206 | tst_status(1);$ |
---|