// File: hnoether_l.tst // Intensive tests for hnoether lib LIB "tst.lib"; tst_init(); LIB "hnoether.lib"; // ------------ test of develop: ------------------- ring zuklein=0,x,dp; develop(x2+2x3); ring r=0,(x,y),ds; develop(x2+2x+3+y); develop(0); develop(x2+y2); develop(x2+y+y2); develop(2x2+3xy+4xy3-x2y); poly p_1 = y2+x3; poly p_2 = p_1^2 + x5y; poly p_3 = p_2^2 + x^10 *p_1; poly p_4 = p_3^2 + x^20 *p_2; poly p_5 = p_4^2 + x^40 *p_3; param(develop(p_2)); int z=timer; param(develop(p_4)); tst_ignore(timer-z,"time"); z=timer; list hne=develop(p_4,-1); tst_ignore(timer-z,"time"); print(extdevelop(hne,4)[1]); tst_ignore(timer-z,"time"); z=timer; print(develop(p_4,4)[1]); tst_ignore(timer-z,"time"); poly heme=xy8+y8+x4y6+4x3y6+2x5y5+6x6y4+4x8y3+x10y2+4x9y2+2x11y+x12; hne=develop(heme); print(hne[1]); ring R=32003,(x,y),dp; poly p_5=imap(r,p_5); z=timer; print(develop(p_5,-1)[1]); tst_ignore(timer-z,"time"); kill r; ring r=32003,(x,y),ls; poly p_5=fetch(R,p_5); z=timer; print(develop(p_5,-1)[1]); tst_ignore(timer-z,"time"); kill r,R; ring r=2,(x,y,t),ds; poly f=y2+x7y+x9+x8; param(develop(f)); kill r; ring r=7,(x,y),dp; poly f=2*(y-3x7)^14; develop(f+x12y14); develop(f+x7y14); kill r; ring r=(0,i),(a,b),dp; develop(a2+ib3); develop(a5+i2*a4+2i*a2b+b2); kill r; ring r=(0,i),(a,b),dp; minpoly=i2+1; develop(a2+ib3); develop(a5+i2*a4+2i*a2b+b2); develop((a+2b)^2+ib5); kill r; ring r=(7,i),(x,y),dp; develop(x+y); kill r; ring r=(7,i),(x,y),dp; minpoly=i2+1; develop(x); kill r; ring r=(49,k),(g,h),Dp; develop(g3+h4); develop((g2+2h)^7+h9); kill r; ring r=real,(x,y),dp; develop(x-y); kill r; ring r=(11,a,b,c),(d,e,f),ls; develop(ad2+a2b3e3+2bc4e4); kill r; // ------------ test of reddevelop: ------------------- setring zuklein; reddevelop(x); ring r=7,(a,b),dp; reddevelop(a6+b4); kill HNEring,r; ring r=0,(x,y),dp; reddevelop(x6-y4); setring r; kill HNEring; reddevelop((x6-y4)*(y6-x4)); setring r;kill HNEring; reddevelop((y-x2+x3)*(y-x2-x3)); setring r; kill HNEring; reddevelop((x7-2x4y2+xy4-1y5)*(x7-4x4y2+4xy4-1y5)); setring r; kill HNEring; reddevelop((y2-x3)*(y2-x3-x4)); setring r; kill HNEring; reddevelop((y2-x3-x4)*(y2+x3+x4)); setring r; kill HNEring; reddevelop(((x2-y)^2+x5)*((2x2-y)^2+x5)); setring r; kill HNEring; reddevelop(x2+1+y3); setring r; kill HNEring; reddevelop(0); kill HNEring,r; ring r=(49,i),(x,y),dp; reddevelop(x); kill r; ring r=(7,i),(x,y),dp; list hne=reddevelop(x3+y6); hne; displayHNE(hne); setring r; kill HNEring; reddevelop((x2+y4)*(x+y4)); setring r; kill HNEring; reddevelop(x2+y4); kill r,HNEring; ring r=(0,e),(x,y),lp; reddevelop(x2-y2); kill HNEring; setring r; reddevelop(x2-ey2); kill r,HNEring; ring r=(32003,i),(x,y),dp; minpoly=i2+1; reddevelop(x2+y4); HNEring; kill r,HNEring; ring r=(32003,i),(x,y),dp; minpoly=i2+i+1; reddevelop(x2+y4); basering; kill r,HNEring; ring r=real,(x,y),dp; reddevelop(x); kill r; ring r=(11,a,b,c),(d,e,f,g),dp; list hne=reddevelop(a2bd2+bce3+a2c3e4); hne; displayHNE(hne[1]); basering; kill r,HNEring; ring r=(11,a,b,c),(d,e),Ds; reddevelop(a2bd2+bce3+a2c3e4); kill r,HNEring; ring r=(11,a),(x,y,z),wp(1,2,3); minpoly=a2+4; list hne=reddevelop(x2+ay3); hne; displayHNE(hne[1]); basering; kill r,HNEring; ring r=(11,a),(x,y,z),wp(1,2,3); reddevelop(x2+ay3); kill HNEring,r; //--------------- examples with change to ring extension ring F2=2,(x,y),dp; reddevelop(y2+x7y+x9+x8); ring R=32003,(x,y),dp; kill HNEring; reddevelop((x6+(y-x)^4)*(y+x)); setring R; kill HNEring; poly f=x19-4x18+3x17+8x16y-1x16-10x15y-4x14y2+6x14y+10x13y2-16x12y2+26x10y3-5x9y4-30x8y4+2x7y5+26x6y5-16x4y6+6x2y7-1y8; reddevelop(f); setring R; kill HNEring; f=x29-6x28+14x27+12x26y-18x26-56x25y-6x24y2+13x25+110x24y+84x23y2-5x24-108x23y-282x22y2-56x21y3+54x22y+396x21y2+390x20y3+14x19y4-266x20y2-840x19y3-310x18y4+790x18y3+1134x17y4+138x16y5-1575x16y4-1008x15y5-30x14y6+2220x14y5+588x13y6+2x12y7-2268x12y6-216x11y7+1692x10y7+45x9y8-915x8y8-4x7y9+350x6y9-90x4y10+14x2y11-1y12; list hne=reddevelop(f); displayHNE(hne); displayInvariants(hne); setring R; kill HNEring; reddevelop(xy6+x3y4-4x5y3+6x7y2-4x9y+x11); setring R; kill HNEring; reddevelop(y10-4x3y8+6x6y6-4x9y4+x12y2+x16); setring R; kill HNEring; reddevelop((y10-4x3y8+6x6y6-4x9y4+x12y2+x16)*(x6-y4)); kill HNEring,R; //--------------- example with more than one ring change ring F3=3,(x,y),dp; list hne=reddevelop((x3-xy2+y3)*(x2+y2)*(x4-x3y+xy3+y4)); map T; int i; poly f=(x3-xy2+y3)*(x2+y2)*(x4-x3y+xy3+y4); for (i=1; i<=size(hne); i++) { T=basering,param(hne[i]); T(f); } displayHNE(hne); displayHNE(hne[3],1); kill displayring; kill HNEring; kill i; setring F3; reddevelop((x3-xy4+y6)*(x2+y2)*(x4-x3y+xy3+y4)); setring F3; kill HNEring; reddevelop((x3-xy4+y6)*(x2+y6)*(x4-x3y4+xy12+y16)); kill HNEring; // -------------- bigger examples with timings ring r=0,(x,y),dp; poly p_1 = y2+x3; poly p_2 = p_1^2 + x5y; poly p_3 = p_2^2 + x^10 *p_1; poly p_4 = p_3^2 + x^20 *p_2; poly p_5 = p_4^2 + x^40 *p_3; z=timer; list hne=reddevelop(p_1*p_2*p_3*p_4); tst_ignore(timer-z,"time"); tst_ignore(kmemory(),"memory"); print(hne[3][1]); print(hne[4][1]); displayInvariants(hne); setring r; kill HNEring; z=timer; list hne=reddevelop(p_5); tst_ignore(timer-z,"time"); tst_ignore(kmemory(),"memory"); print(hne[1][1]); displayInvariants(hne); displayInvariants(hne[1]); kill HNEring; // ------------ test of extdevelop: ------------------- setring r; list hne=develop(x2+y3+y4-y5,-1); show(extdevelop(hne,2)); show(extdevelop(hne,4)); show(extdevelop(hne,10)); kill r; ring r=(49,i),(x,y),ls; list hne=develop((x2+iy3)^7+x15); show(extdevelop(hne,8)); kill hne; // ------------ test of essdevelop: ------------------- setring F3; list hne=essdevelop((x3-xy2+y3)*(x2+y2)*(x4-x3y+xy3+y4)); displayHNE(hne); setring F3; kill HNEring; list hne=essdevelop(x2+y3+xy4); displayHNE(hne); setring r; kill HNEring; // ------------ test of HNdevelop: -------------------- // list hne=HNdevelop((x2+iy3)^7+x15); // laeuft derzeit (27.5.99) wegen einem // show(extdevelop(hne[1],8)); // Fehler in factorize endlos! list hne=HNdevelop((x2+iy3)^6+x15); // Als Ersatz fuer die Zwischenzeit show(hne); kill r; ring r=(0,i),(a,b),dp; minpoly=i2+1; list hne=HNdevelop(a2+ib3-ia3b); show(hne); kill r; ring r=0,(x,y),dp; show(HNdevelop((x3+3x2y-xy4+y10)*(x3-x2y+y8))); // ------------ test of param: ------------------------ setring r; param(develop(x+1+y2)); param(develop(x2+y3)); param(develop(y2+x3)); param(develop(x+y2-y3)); param(develop(x2+y3+y4)); param(develop((x-2y3)^2+x3)); param(develop(y+x2-y3)); param(develop((y-2x3)^2+x7)); param(develop((y-2x3)^2+x7),0); param(develop(x+y2-y3),0); param(develop(x2+y3+y4),"Fritz"); param(develop(y2+x3+x4),x); z=timer; param(develop((y-2x3)^2+y5)); tst_ignore(timer-z,"time"); kill r; ring r=(27,j),(k,l,t),lp; list hne=develop((k3-jl)^6+l7,9); param(hne); // ------------ test of displayHNE: ------------------- displayHNE(hne); kill r; ring r=3,(k,l,t),lp; list hne=develop((k3+l)^6+l7,9); displayHNE(hne); basering; displayHNE(hne,1); basering; kill displayring,r; ring r=0,(x,y),dp; displayHNE(develop(x)); displayHNE(develop(y)); displayHNE(develop(1)); // ------------ test of displayInvariants: ------------ list hne=reddevelop((x2+y3+y4)*(x+y2+y3-y4)*(x5+y7)); displayInvariants(hne[1]); displayInvariants(hne[2]); displayInvariants(hne); kill HNEring; // ------------ test of is_irred: --------------------- setring r; is_irred(x); is_irred(x2); is_irred((x+y)*(1+x+y)); // one HNE is_irred((x+y)*(x+y+xy)); // one of two HNEs found is_irred(x2+y2); // no HNE found is_irred(1+x+y); // not a curve // ---------------------------------------------------------------------------- // ------- test of invariants, intersection, stripHNE, puiseux2generators, --- // ------- multiplicities, newtonpoly --- example invariants; setring r; list hne=reddevelop((x2-y3)*(x2+y3)); intersection(hne[1],hne[2]); example stripHNE; puiseux2generators(intvec(3,7,15,31,63,127),intvec(2,2,2,2,2,2)); setring r; multiplicities(develop(x5+y7)); example newtonpoly; // ------- test of getnm, T_Transform, T1_Transform, T2_Transform, koeff, ----- // ------------ redleit, squarefree, allsquarefree, referencepoly ---------- example getnm; T_Transform(y2+x3,1,2); T1_Transform(y-x2+x3,1,2); T2_Transform(y2+x3-x2y,-1,3,2,referencepoly(newtonpoly(y2+x3-x2y))); koeff(x2+2xy+3xy2-x2y-2y3,1,2); example redleit; example squarefree; ring R=(27,k),(x,y),dp; squarefree(x2); squarefree(y3); squarefree((x2+y)^3*(x-y)^2*(x+y)); example allsquarefree; tst_status(1);$