1 | LIB "tst.lib"; |
---|
2 | tst_init(); |
---|
3 | |
---|
4 | ///////////////////////////////////////////////////////////////////////////// |
---|
5 | /// Further examples for testing the main procedures |
---|
6 | /// Timings on wawa Sept 29 |
---|
7 | ///////////////////////////////////////////////////////////////////////////// |
---|
8 | LIB"paraplanecurves.lib"; |
---|
9 | // ------------------------------------------------------- |
---|
10 | // Example 2 |
---|
11 | // ------------------------------------------------------- |
---|
12 | ring RR = 0, (x,y,z), dp; |
---|
13 | poly f = y3-x2z; // cusp at origin |
---|
14 | adjointIdeal(f,1); |
---|
15 | adjointIdeal(f,2); |
---|
16 | def RP1 = paraPlaneCurve(f); // time 0 |
---|
17 | testParametrization(f,RP1); |
---|
18 | setring RP1; PARA; |
---|
19 | kill RR;kill RP1; |
---|
20 | // ------------------------------------------------------- |
---|
21 | // Example 3 |
---|
22 | // ------------------------------------------------------- |
---|
23 | ring RR = 0, (x,y,z), dp; |
---|
24 | poly f=(xz-y^2)^2-x*y^3; // 1 sing at origin, 1 cusp, no OMPs |
---|
25 | adjointIdeal(f,1); |
---|
26 | adjointIdeal(f,2); |
---|
27 | def RP1 = paraPlaneCurve(f); // time 0 |
---|
28 | testParametrization(f,RP1); |
---|
29 | setring RP1; PARA; |
---|
30 | kill RR;kill RP1; |
---|
31 | // ------------------------------------------------------- |
---|
32 | // Example 4 |
---|
33 | // ------------------------------------------------------- |
---|
34 | ring RR = 0, (x,y,z), dp; |
---|
35 | poly f = y5-y4x+4y2x2z-x4z; // 1 sing at origin, no OMPs, no cusps |
---|
36 | adjointIdeal(f,1); |
---|
37 | adjointIdeal(f,2); |
---|
38 | def RP1 = paraPlaneCurve(f); // time 0 |
---|
39 | testParametrization(f,RP1); |
---|
40 | setring RP1; PARA; |
---|
41 | kill RR;kill RP1; |
---|
42 | // ------------------------------------------------------- |
---|
43 | // Example 5 |
---|
44 | // ------------------------------------------------------- |
---|
45 | ring RR = 0, (x,y,z), dp; |
---|
46 | poly f = 259x5-31913x4y+939551x3y2+2871542x2y3+2845801xy4; |
---|
47 | f = f+914489y5+32068x4z-1884547x3yz-8472623x2y2z-11118524xy3z; |
---|
48 | f = f-4589347y4z+944585x3z2+8563304x2yz2+16549772xy2z2+9033035y3z2; |
---|
49 | f = f-2962425x2z3-11214315xyz3-8951744y2z3+2937420xz4+4547571yz4-953955z5; |
---|
50 | // 6 nodes |
---|
51 | adjointIdeal(f,1); |
---|
52 | adjointIdeal(f,2); |
---|
53 | def RP1 = paraPlaneCurve(f); // time 0 |
---|
54 | testParametrization(f,RP1); |
---|
55 | setring RP1; PARA; |
---|
56 | kill RR;kill RP1; |
---|
57 | // ------------------------------------------------------- |
---|
58 | // Example 7 |
---|
59 | // ------------------------------------------------------- |
---|
60 | ring RR = 0, (x,y,z), dp; |
---|
61 | poly f = y^8-x^3*(z+x)^5; // 1 sing at origin, 1 further sing, no OMPs, |
---|
62 | // no cusps |
---|
63 | adjointIdeal(f,1); |
---|
64 | adjointIdeal(f,2); |
---|
65 | def RP1 = paraPlaneCurve(f); // time 0 |
---|
66 | testParametrization(f,RP1); |
---|
67 | setring RP1; PARA; |
---|
68 | kill RR;kill RP1; |
---|
69 | // ------------------------------------------------------- |
---|
70 | // Example 8 |
---|
71 | // ------------------------------------------------------- |
---|
72 | ring RR = 0, (x,y,z), dp; |
---|
73 | poly f = 11y7+7y6x+8y5x2-3y4x3-10y3x4-10y2x5-x7-33y6-29y5x-13y4x2+26y3x3; |
---|
74 | f = f+30y2x4+10yx5+3x6+33y5+37y4x-8y3x2-33y2x3-20yx4-3x5-11y4-15y3x; |
---|
75 | f = f+13y2x2+10yx3+x4; // 3 OMPs of mult 3, 1 OMP of mult 4 |
---|
76 | f = homog(f,z); |
---|
77 | adjointIdeal(f,1); |
---|
78 | adjointIdeal(f,2); |
---|
79 | def RP1 = paraPlaneCurve(f); // time 0 |
---|
80 | testParametrization(f,RP1); |
---|
81 | setring RP1; PARA; |
---|
82 | kill RR;kill RP1; |
---|
83 | // ------------------------------------------------------- |
---|
84 | // Example 9 |
---|
85 | // ------------------------------------------------------- |
---|
86 | ring RR = 0, (x,y,z), dp; |
---|
87 | poly f = y^8-x^3*(z+x)^5; // 1 sing at origin, 1 further sing, no OMPs, |
---|
88 | // no cusps |
---|
89 | adjointIdeal(f,1); |
---|
90 | adjointIdeal(f,2); |
---|
91 | def RP1 = paraPlaneCurve(f); // time 0 |
---|
92 | testParametrization(f,RP1); |
---|
93 | setring RP1; PARA; |
---|
94 | kill RR;kill RP1; |
---|
95 | // ------------------------------------------------------- |
---|
96 | // Example 10 |
---|
97 | // ------------------------------------------------------- |
---|
98 | ring SS = 0, (u,v,z), dp; |
---|
99 | poly f = u^4-14*u^2*v^2+v^4+8*u^2*v*z+8*v^3*z; // 1 OMP of mult 3 at orgin |
---|
100 | adjointIdeal(f,1); |
---|
101 | adjointIdeal(f,2); |
---|
102 | def RP1 = paraPlaneCurve(f); // time 0 |
---|
103 | testParametrization(f,RP1); |
---|
104 | setring RP1; PARA; |
---|
105 | kill SS;kill RP1; |
---|
106 | // ------------------------------------------------------- |
---|
107 | // Example 11 |
---|
108 | // ------------------------------------------------------- |
---|
109 | ring SS = 0, (u,v,z), dp; |
---|
110 | poly f = 14440*u^5-16227*u^4*v+10812*u^3*v^2-13533*u^2*v^3+3610*u*v^4; |
---|
111 | f = f+1805*v^5+14440*u^4*z-18032*u^3*v*z+16218*u^2*v^2*z-12626*u*v^3*z; |
---|
112 | f = f+3610*v^4*z+3610*u^3*z^2-4508*u^2*v*z^2+5406*u*v^2*z^2-2703*v^3*z^2; |
---|
113 | // 1 OMP of mult 3 at origin, 2 nodes |
---|
114 | adjointIdeal(f,1); |
---|
115 | adjointIdeal(f,2); |
---|
116 | def RP1 = paraPlaneCurve(f); // time 0 |
---|
117 | testParametrization(f,RP1); |
---|
118 | setring RP1; PARA; |
---|
119 | kill SS;kill RP1; |
---|
120 | // ------------------------------------------------------- |
---|
121 | // Example 12 |
---|
122 | // ------------------------------------------------------- |
---|
123 | ring SS = 0, (u,v,z), dp; |
---|
124 | poly f = u^6+3*u^4*v^2+3*u^2*v^4+v^6-4*u^4*z^2-34*u^3*v*z^2-7*u^2*v^2*z^2; |
---|
125 | f = f+12*u*v^3*z^2+6*v^4*z^2+36*u^2*z^4+36*u*v*z^4+9*v^2*z^4; |
---|
126 | // needs field extension *** 6 nodes, 2 cusps, 1 sing at 0 |
---|
127 | adjointIdeal(f,1); |
---|
128 | adjointIdeal(f,2); |
---|
129 | def RP1 = paraPlaneCurve(f); // time 0 |
---|
130 | testParametrization(f,RP1); |
---|
131 | setring RP1; PARA; |
---|
132 | kill SS;kill RP1; |
---|
133 | // ------------------------------------------------------- |
---|
134 | // Example 13 |
---|
135 | // ------------------------------------------------------- |
---|
136 | ring SS = 0, (u,v,z), dp; |
---|
137 | poly f = -24135/322*u^6-532037/6440*u^5*v+139459/560*u^4*v^2; |
---|
138 | f = f-1464887/12880*u^3*v^3+72187/25760*u^2*v^4+9/8*u*v^5+1/8*v^6; |
---|
139 | f = f-403511/3220*u^5*z-40817/920*u^4*v*z+10059/80*u^3*v^2*z; |
---|
140 | f = f-35445/1288*u^2*v^3*z+19/4*u*v^4*z+3/4*v^5*z-20743/805*u^4*z^2; |
---|
141 | f = f+126379/3220*u^3*v*z^2-423417/6440*u^2*v^2*z^2+11/2*u*v^3*z^2; |
---|
142 | f = f+3/2*v^4*z^2+3443/140*u^3*z^3+u^2*v*z^3+u*v^2*z^3+v^3*z^3; |
---|
143 | // 2 OMPs of mult 3 (1 at origin), 4 nodes |
---|
144 | adjointIdeal(f,1); |
---|
145 | adjointIdeal(f,2); |
---|
146 | def RP1 = paraPlaneCurve(f); // time 5 |
---|
147 | testParametrization(f,RP1); |
---|
148 | setring RP1; PARA; |
---|
149 | kill SS;kill RP1; |
---|
150 | // ------------------------------------------------------- |
---|
151 | // Example 14 |
---|
152 | // ------------------------------------------------------- |
---|
153 | ring SS = 0, (u,v,z), dp; |
---|
154 | poly f = |
---|
155 | 2*u^7+u^6*v+3*u^5*v^2+u^4*v^3+2*u^3*v^4+u^2*v^5+2*u*v^6+v^7 |
---|
156 | -7780247/995328*u^6*z-78641/9216*u^5*v*z-10892131/995328*u^4*v^2*z |
---|
157 | -329821/31104*u^3*v^3*z-953807/331776*u^2*v^4*z-712429/248832*u*v^5*z |
---|
158 | +1537741/331776*v^6*z+2340431/248832*u^5*z^2+5154337/248832*u^4*v*z^2 |
---|
159 | +658981/41472*u^3*v^2*z^2+1737757/124416*u^2*v^3*z^2 |
---|
160 | -1234733/248832*u*v^4*z^2-1328329/82944*v^5*z^2-818747/248832*u^4*z^3 |
---|
161 | -1822879/124416*u^3*v*z^3-415337/31104*u^2*v^2*z^3 |
---|
162 | +1002655/124416*u*v^3*z^3+849025/82944*v^4*z^3; |
---|
163 | // 3 OMPs of mult 3, 1 OMP of mult 4 at origin |
---|
164 | adjointIdeal(f,2); |
---|
165 | def RP1 = paraPlaneCurve(f); // time 1 |
---|
166 | testParametrization(f,RP1); |
---|
167 | setring RP1; PARA; |
---|
168 | kill SS;kill RP1; |
---|
169 | // ------------------------------------------------------- |
---|
170 | // Example 15 |
---|
171 | // ------------------------------------------------------- |
---|
172 | ring SS = 0, (u,v,z), dp; |
---|
173 | poly f = 590819418867856650536224u7-147693905508217596067968u6v; |
---|
174 | f = f+229117518934972047619978u5v2-174050799674982973889542u4v3; |
---|
175 | f = f-92645796479789150855110u3v4-65477418713685583062704u2v5; |
---|
176 | f = f+4529961835917468460168uv6+7715404057796585983136v7; |
---|
177 | f = f-413640780091141905428104u6z+571836835577486968144618u5vz; |
---|
178 | f = f-551807810327826605739444u4v2z-488556410340789283359926u3v3z; |
---|
179 | f = f-473466023008413178155962u2v4z+48556741573432247323608uv5z; |
---|
180 | f = f+77647371229172269259528v6z+340450118906560552282893u5z2; |
---|
181 | f = f-433598825064368371610344u4vz2-937281070591684636591672u3v2z2; |
---|
182 | f = f-1388949843915129934647751u2v3z2+204081793110898617103998uv4z2; |
---|
183 | f = f+335789953068251652554308v5z2+6485661002496681852577u4z3; |
---|
184 | f = f-772700266516318390630202u3vz3-2068348417248100329533330u2v2z3; |
---|
185 | f = f+440320154612359641806108uv3z3+808932515589210854581618v4z3; |
---|
186 | f = f-229384307132237615286548u3z4-1564303565658228216055227u2vz4; |
---|
187 | f = f+520778334468674798322974uv2z4+1172483905704993294097655v3z4; |
---|
188 | f = f-480789741398016816562100u2z5+322662751598958620410786uvz5; |
---|
189 | f = f+1022525576391791616258310v2z5+82293493608853837667471uz6; |
---|
190 | f = f+496839109904761426785889vz6+103766136235628614937587z7; // 15 nodes |
---|
191 | adjointIdeal(f,2); |
---|
192 | def RP1 = paraPlaneCurve(f); // time 72 |
---|
193 | testParametrization(f,RP1); |
---|
194 | setring RP1; PARA; |
---|
195 | kill SS;kill RP1; |
---|
196 | |
---|
197 | // ------------------------------------------------------- |
---|
198 | // Example 16 |
---|
199 | // ------------------------------------------------------- |
---|
200 | ring SS = 0, (u,v,z), dp; |
---|
201 | poly f = 25*u^8+184*u^7*v+518*u^6*v^2+720*u^5*v^3+576*u^4*v^4+282*u^3*v^5; |
---|
202 | f = f+84*u^2*v^6+14*u*v^7+v^8+244*u^7*z+1326*u^6*v*z+2646*u^5*v^2*z; |
---|
203 | f = f+2706*u^4*v^3*z+1590*u^3*v^4*z+546*u^2*v^5*z+102*u*v^6*z+8*v^7*z; |
---|
204 | f = f+854*u^6*z^2+3252*u^5*v*z^2+4770*u^4*v^2*z^2+3582*u^3*v^3*z^2; |
---|
205 | f = f+1476*u^2*v^4*z^2+318*u*v^5*z^2+28*v^6*z^2+1338*u^5*z^3+3740*u^4*v*z^3; |
---|
206 | f = f+4030*u^3*v^2*z^3+2124*u^2*v^3*z^3+550*u*v^4*z^3+56*v^5*z^3+1101*u^4*z^4; |
---|
207 | f = f+2264*u^3*v*z^4+1716*u^2*v^2*z^4+570*u*v^3*z^4+70*v^4*z^4+508*u^3*z^5; |
---|
208 | f = f+738*u^2*v*z^5+354*u*v^2*z^5+56*v^3*z^5+132*u^2*z^6+122*u*v*z^6; |
---|
209 | f = f+28*v^2*z^6+18*u*z^7+8*v*z^7+z^8; // 3 nodes, 1 sing |
---|
210 | adjointIdeal(f,1); |
---|
211 | adjointIdeal(f,2); |
---|
212 | def RP1 = paraPlaneCurve(f); // time 20 |
---|
213 | testParametrization(f,RP1); |
---|
214 | setring RP1; PARA; |
---|
215 | kill SS;kill RP1; |
---|
216 | // ------------------------------------------------------- |
---|
217 | // Example 17 |
---|
218 | // ------------------------------------------------------- |
---|
219 | ring SS = 0, (u,v,z), dp; |
---|
220 | poly f = -2*u*v^4*z^4+u^4*v^5+12*u^4*v^3*z^2+12*u^2*v^4*z^3-u^3*v*z^5; |
---|
221 | f = f+11*u^3*v^2*z^4-21*u^3*v^3*z^3-4*u^4*v*z^4+2*u^4*v^2*z^3-6*u^4*v^4*z; |
---|
222 | f = f+u^5*z^4-3*u^5*v^2*z^2+u^5*v^3*z-3*u*v^5*z^3-2*u^2*v^3*z^4+u^3*v^4*z^2; |
---|
223 | f = f+v^5*z^4; // 1 OMP of mult 4, 3 OMPs of mult 5, 1 sing at origin |
---|
224 | f = subst(f,z,u+v+z); |
---|
225 | adjointIdeal(f,2); |
---|
226 | def RP1 = paraPlaneCurve(f); // time 5 |
---|
227 | testParametrization(f,RP1); |
---|
228 | setring RP1; PARA; |
---|
229 | kill SS;kill RP1; |
---|
230 | // ------------------------------------------------------- |
---|
231 | // Example 18 |
---|
232 | // ------------------------------------------------------- |
---|
233 | ring SS = 0, (u,v,z), dp; |
---|
234 | poly f = u^5*v^5+21*u^5*v^4*z-36*u^4*v^5*z-19*u^5*v^3*z^2+12*u^4*v^4*z^2; |
---|
235 | f = f+57*u^3*v^5*z^2+u^5*v^2*z^3+u^4*v^3*z^3-53*u^3*v^4*z^3-19*u^2*v^5*z^3; |
---|
236 | f = f+u^5*v*z^4+43*u^3*v^3*z^4+u*v^5*z^4+u^5*z^5-15*u^3*v^2*z^5+u^2*v^3*z^5; |
---|
237 | f = f+u*v^4*z^5+v^5*z^5; // 1 OMP of mult 4, 3 OMPs of mult 5 (1 at origin) |
---|
238 | adjointIdeal(f,2); |
---|
239 | def RP1 = paraPlaneCurve(f); // time 8 |
---|
240 | testParametrization(f,RP1); |
---|
241 | setring RP1; PARA; |
---|
242 | kill SS;kill RP1; |
---|
243 | // ------------------------------------------------------- |
---|
244 | // Example 19 |
---|
245 | // ------------------------------------------------------- |
---|
246 | ring SS = 0, (u,v,z), dp; |
---|
247 | poly f = u^10+6*u^9*v-30*u^7*v^3-15*u^6*v^4+u^5*v^5+u^4*v^6+6*u^3*v^7; |
---|
248 | f = f+u^2*v^8+7*u*v^9+v^10+5*u^9*z+24*u^8*v*z-30*u^7*v^2*z-120*u^6*v^3*z; |
---|
249 | f = f-43*u^5*v^4*z+5*u^4*v^5*z+20*u^3*v^6*z+10*u^2*v^7*z+29*u*v^8*z+5*v^9*z; |
---|
250 | f = f+10*u^8*z^2+36*u^7*v*z^2-105*u^6*v^2*z^2-179*u^5*v^3*z^2-38*u^4*v^4*z^2; |
---|
251 | f = f+25*u^3*v^5*z^2+25*u^2*v^6*z^2+46*u*v^7*z^2+10*v^8*z^2+10*u^7*z^3; |
---|
252 | f = f+24*u^6*v*z^3-135*u^5*v^2*z^3-117*u^4*v^3*z^3-u^3*v^4*z^3+25*u^2*v^5*z^3; |
---|
253 | f = f+34*u*v^6*z^3+10*v^7*z^3+5*u^6*z^4+6*u^5*v*z^4-75*u^4*v^2*z^4; |
---|
254 | f = f-27*u^3*v^3*z^4+10*u^2*v^4*z^4+11*u*v^5*z^4+5*v^6*z^4+u^5*z^5; |
---|
255 | f = f-15*u^3*v^2*z^5+u^2*v^3*z^5+u*v^4*z^5+v^5*z^5; |
---|
256 | // 1 OMP of mult 4, 3 OMPs of mult 5 (1 at origin) |
---|
257 | adjointIdeal(f,2); |
---|
258 | def RP1 = paraPlaneCurve(f); // time 2 |
---|
259 | testParametrization(f,RP1); |
---|
260 | setring RP1; PARA; |
---|
261 | kill SS;kill RP1; |
---|
262 | // ------------------------------------------------------- |
---|
263 | // Example 20 |
---|
264 | // ------------------------------------------------------- |
---|
265 | ring R = 0, (x,y,z), dp; |
---|
266 | system("random", 4711); |
---|
267 | poly p = x^2 + 2*y^2 + 5*z^2 - 4*x*y + 3*x*z + 17*y*z; |
---|
268 | def S = rationalPointConic(p); // quadratic field extension, |
---|
269 | // minpoly = a^2 - 2 |
---|
270 | if (testPointConic(p, S) == 1) |
---|
271 | { "point lies on conic"; } |
---|
272 | else |
---|
273 | { "point does not lie on conic"; } |
---|
274 | // ------------------------------------------------------- |
---|
275 | // Example 21 |
---|
276 | // ------------------------------------------------------- |
---|
277 | ring R = 0, (x,y,z), dp; |
---|
278 | system("random", 4711); |
---|
279 | poly p = x^2 - 1857669520 * y^2 + 86709575222179747132487270400 * z^2; |
---|
280 | def S = rationalPointConic(p); // same as current basering, |
---|
281 | // no extension needed |
---|
282 | if (testPointConic(p, S) == 1) |
---|
283 | { "point lies on conic"; } |
---|
284 | else |
---|
285 | { "point does not lie on conic"; } |
---|
286 | |
---|
287 | tst_status(1);$ |
---|
288 | |
---|
289 | |
---|