[cd055e] | 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 | |
---|