Changeset 81fb58d in git
- Timestamp:
- Apr 14, 1999, 2:11:57 PM (24 years ago)
- Branches:
- (u'spielwiese', '828514cf6e480e4bafc26df99217bf2a1ed1ef45')
- Children:
- a1417ca18268fbc29752b22baabf8c7d5409ef6f
- Parents:
- a3600c96f2d4c4189dbfe8f553885cf86db78ffa
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/hnoether.lib
ra3600c r81fb58d 1 // $Id: hnoether.lib,v 1. 9 1998-10-21 10:28:24 krueger Exp $1 // $Id: hnoether.lib,v 1.10 1999-04-14 12:11:49 Singular Exp $ 2 2 // author: Martin Lamm, email: lamm@mathematik.uni-kl.de 3 // last change: 26.03.98 4 /////////////////////////////////////////////////////////////////////////////// 5 6 version="$Id: hnoether.lib,v 1.9 1998-10-21 10:28:24 krueger Exp $"; 3 // last change: 09.03.99 4 /////////////////////////////////////////////////////////////////////////////// 5 // This library is for Singular 1.2 or newer 6 7 version="$Id: hnoether.lib,v 1.10 1999-04-14 12:11:49 Singular Exp $"; 7 8 info=" 8 LIBRARY: hnoether.lib PROCEDURES FOR THE HAMBURGER-NOETHER -DEVELOPMENT9 LIBRARY: hnoether.lib PROCEDURES FOR THE HAMBURGER-NOETHER DEVELOPMENT 9 10 10 11 Important procedures: 11 develop(f [,n]); Hamburger-Noether development fromthe irred. polynomial f12 reddevelop(f); Hamburger-Noether development fromthe (red.) polynomial f13 extdevelop(hne,n); extension of Hamburger-Noether development hne fromf12 develop(f [,n]); Hamburger-Noether development of the irred. polynomial f 13 reddevelop(f); Hamburger-Noether development of the (red.) polynomial f 14 extdevelop(hne,n); extension of the Hamburger-Noether development hne of f 14 15 param(hne); returns a parametrization of f (input=output(develop)) 15 16 displayHNE(hne); display Hamburger-Noether development as an ideal 16 17 invariants(hne); invariants of f, e.g. the characteristic exponents 17 18 displayInvariants(hne); display invariants of f 18 generators(hne); computes the generators of the semigroup of values19 19 intersection(hne1,hne2); intersection multiplicity of two curves 20 multsequence(hne); sequence of multiplicities 21 displayMultsequence(hne); display sequence of multiplicities 20 22 stripHNE(hne); reduce amount of memory consumed by hne 23 24 perhaps useful procedures: 25 puiseux2generators(m,n); convert Puiseux pairs to generators of semigroup 26 multiplicities(hne); multiplicities of blowed up curves 27 separateHNE(hne1,hne2); number of quadratic transf. needed for separation 28 squarefree(f); returns a squarefree divisor of the poly f 29 allsquarefree(f,l); returns the maximal squarefree divisor of the poly f 21 30 "; 22 //////////////////////////////////////////////////////////////////////////// 23 // perhaps useful procedures: 24 // puiseux2generators(m,n); convert puiseux pairs to generators of semigroup 25 // multiplicities(hne); multiplicities of blowed up curves 26 // newtonpoly(f); newtonpolygon of polynom f 27 // newtonhoehne(f); same as newtonpoly, but uses internal procedure 28 // getnm(f); intersection points of the Newton-polygon with the axes 31 /////////////////////////////////////////////////////////////////////////////// 32 // newtonpoly(f); Newton polygon of polynom f 33 // getnm(f); intersection points of the Newton polygon with the axes 29 34 // T_Transform(f,Q,N); returns f(y,xy^Q)/y^NQ (type f(x,y): poly, Q,N: int) 30 35 // T1_Transform(f,d,M); returns f(x,y+d*x^M) (type f(x,y): poly,d:number,M:int) 31 // T2_Transform(f,d,M,N ); a composition of T1 & T36 // T2_Transform(f,d,M,N,ref); a composition of T1 & T 32 37 // koeff(f,I,J); gets coefficient of indicated monomial of poly f (I,J:int) 33 38 // redleit(f,S,E); restriction of monomials of f to line (S-E) 34 // squarefree(f); returns a squarefree divisor of the poly f 35 // allsquarefree(f,l); returns the maximal squarefree divisor of the poly f 39 // leit(f,n,m); special case of redleit (for irred. polynomials) 36 40 // set_list(L,v,l); managing interconnected lists 37 41 // 38 42 // procedures (more or less) for internal use: 39 // leit(f,n,m); special case of redleit (for irred. polynomials)40 43 // testreducible(f,n,m); tests whether f is reducible 41 44 // polytest(f); tests coefficients and exponents of poly f … … 44 47 // get_last_divisor(M,N); last divisor in Euclid's algorithm 45 48 // factorfirst(f,M,N); try to factor f in a trivial way before using 'factorize' 49 // factorlist(L); factorize a list L of polynomials 46 50 // extrafactor(f,M,N); try to factor charPoly(f,M,N) where 'factorize' cannot 51 // referencepoly(D); a polynomial f s.t. D is the Newton diagram of f 47 52 // extractHNEs(H,t); extracts output H of HN to output of reddevelop 48 53 // HN(f,grenze); recursive subroutine for reddevelop … … 75 80 76 81 proc leit (poly f, int n, int m) 77 "// leit(poly f, int n, int m) returns all monomials on the line 78 // from (0,n) to (m,0) in the Newton diagram 82 "USAGE: leit(f,n,m); poly f, int n,m 83 RETURN: all monomials on the line from (0,n) to (m,0) in the Newton diagram 84 EXAMPLE: example leit; shows an example 79 85 " 80 86 { 81 87 return(jet(f,m*n,intvec(n,m))-jet(f,m*n-1,intvec(n,m))) 82 88 } 89 example 90 { "EXAMPLE:"; echo = 2; 91 ring r = 0,(x,y),ds; 92 poly f = x5+x4y3-y2+y4; 93 leit(f,2,5); 94 } 83 95 /////////////////////////////////////////////////////////////////////////////// 84 96 proc testreducible (poly f, int n, int m) 85 "// testreducible(poly f,int n,int m) returns true if there are points in the 86 // Newton diagram below the line (0,n)-(m,0) 87 " 97 " testreducible(poly f,int n,int m) returns true if there are points in the 98 Newton diagram below the line (0,n)-(m,0)" 88 99 { 89 100 return(size(jet(f,m*n-1,intvec(n,m))) != 0) … … 91 102 /////////////////////////////////////////////////////////////////////////////// 92 103 proc T_Transform (poly f, int Q, int N) 93 "// returns f(y,xy^Q)/y^NQ 94 " 104 " returns f(y,xy^Q)/y^NQ (only useful if f is irreducible) " 95 105 { 96 106 map T = basering,y,x*y^Q; … … 98 108 } 99 109 /////////////////////////////////////////////////////////////////////////////// 100 proc T1_Transform (poly f, number d, int M) 101 "// returns f(x,y+d*x^M) 102 " 103 { 104 map T1 = basering,x,y+d*x^M; 110 proc T1_Transform (poly f, number d, int Q) 111 " returns f(x,y+d*x^Q) " 112 { 113 map T1 = basering,x,y+d*x^Q; 105 114 return(T1(f)); 106 115 } 107 116 /////////////////////////////////////////////////////////////////////////////// 108 117 109 proc T2_Transform (poly f, number d, int M, int N) 110 "USAGE: T2_Transform(f,d,M,N); f poly, d number; M,N int 111 RETURN: list: poly T2(f,d',M,N), number d' in \{ d, 1/d \} 118 proc T2_Transform (poly f, number d, int M, int N, poly refpoly) 119 "USAGE: T2_Transform(f,d,M,N,ref); f poly, d number; M,N int; ref poly 120 ASSUME: ref has the same Newton polygon as f (but can be simpler) 121 for this you can e.g. use the proc `referencepoly' or simply f again 122 RETURN: list: poly T2(f,d',M,N), number d' in \{ d, 1/d \} 123 EXAMPLE: example T2_Transform; shows an example 112 124 " 113 125 { … … 117 129 list ts=extgcd(M,N); 118 130 int tau,sigma=ts[2],-ts[3]; 131 int s,t; 132 poly hilf; 119 133 if (sigma<0) { tau=-tau; sigma=-sigma;} 120 134 // es gilt: 0<=tau<=N, 0<=sigma<=M, |N*sigma-M*tau| = 1 = ggT(M,N) … … 127 141 map T1 = basering,x,y+d*x^Q; 128 142 map Tstar=basering,x^(N-Q*tau)*y^tau,x^(M-sigma*Q)*y^sigma; 129 if (defined( Protokoll)) {143 if (defined(HNDebugOn)) { 130 144 "Trafo. T2: x->x^"+string(N-Q*tau)+"*y^"+string(tau)+", y->x^" 131 145 +string(M-sigma*Q)+"*y^"+string(sigma); … … 133 147 } 134 148 //------------------- Durchfuehrung der Transformation T2 -------------------- 135 // man koennte an T2_Transform noch eine Liste mit allen Eckpunkten des 136 // Newtonpolys uebergeben und nur die Transformierten der Eckpunkte betrachten 137 // um max. Exponenten e,f von x,y zu finden--noch einfacher: ein Referenzpo- 138 // lynom, das das gleiche Newtonpolygon hat (z.B. Einschraenkung auf die Mono- 139 // me in den Eckpunkten, oder alle Monome haben Koeff. 1, das ist einfacher) 140 //---------------------------------------------------------------------------- 141 142 f=Tstar(f); // hier dann refpoly=Tstar(refpoly) 143 poly hilf; 144 // dividiere f so lange durch x, wie die Div. aufgeht: 145 for (hilf=f/x; hilf*x==f; hilf=f/x) {f=hilf;} 146 for (hilf=f/y; hilf*y==f; hilf=f/y) {f=hilf;} // gleiches fuer y 149 f=Tstar(f); 150 refpoly=Tstar(refpoly); 151 //--- dividiere f so lange durch x & y, wie die Div. aufgeht, benutze ein --- 152 //--- Referenzpolynom mit gleichem Newtonpolynom wie f zur Beschleunigung: --- 153 for (hilf=refpoly/x; hilf*x==refpoly; hilf=refpoly/x) {refpoly=hilf; s++;} 154 for (hilf=refpoly/y; hilf*y==refpoly; hilf=refpoly/y) {refpoly=hilf; t++;} 155 f=f/(x^s*y^t); 147 156 return(list(T1(f),d)); 148 157 } 158 example 159 { "EXAMPLE:"; echo = 2; 160 ring exrg=0,(x,y),ds; 161 export exrg; 162 poly f=y2-2x2y+x6-x5y+x4y2; 163 T2_Transform(f,1/2,4,1,f); 164 T2_Transform(f,1/2,4,1,referencepoly(newtonpoly(f))); 165 // if size(referencepoly) << size(f) the 2nd example would be faster 166 referencepoly(newtonpoly(f)); 167 kill exrg; 168 } 149 169 /////////////////////////////////////////////////////////////////////////////// 150 170 151 171 proc koeff (poly f, int I, int J) 152 "USAGE: koeff(f,I,J); f polynomial in x and y, I,J integers153 RETURN: if f = sum(a(i,j)*x^i*y^j), then koeff(f,I,J)= a(I,J) (of type number)172 "USAGE: koeff(f,I,J); f polynomial in x and y, I,J integers 173 RETURN: if f = sum(a(i,j)*x^i*y^j), then koeff(f,I,J)= a(I,J) (of type number) 154 174 EXAMPLE: example koeff; shows an example 155 "{ 175 NOTE: J must be in the range of the exponents of y 176 " 177 { 156 178 matrix mat = coeffs(coeffs(f,y)[J+1,1],x); 157 179 if (size(mat) <= I) { return(0);} … … 166 188 167 189 proc squarefree (poly f) 168 "USAGE: squarefree(f); f poly in x and y190 "USAGE: squarefree(f); f a bivariate polynomial 169 191 RETURN: a squarefree divisor of f 170 192 Normally the return value is a greatest squarefree divisor, but there … … 172 194 are lost. 173 195 EXAMPLE: example squarefree; shows some examples. 174 "{ 175 // es gibt noch ein Problem: syz gibt manchmal in Koerpererweiterung (p,a) 176 // nicht f/g zurueck, obwohl die Division aufgeht ... In dem Fall ist die 177 // Rueckgabe evtl. nicht quadratfrei! Bsp.: squarefree((1/a*x3+y7)^3); 178 // in char 7 179 // In Singular 1.1.3 funktioniert syz, dafuer geht das gleiche Bsp. schief, 180 // weil gcd auf einmal falsch wird! (ring (7,a),(x,y),dp; minpoly=a2+1; ) 181 196 " 197 { 182 198 //----------------- Wechsel in geeigneten Ring & Variablendefinition --------- 183 199 def altring = basering; … … 185 201 int gcd_ok=1; 186 202 string mipl="0"; 187 if (size(parstr(altring))==1) { mipl=string(minpoly);}203 if (size(parstr(altring))==1) { mipl=string(minpoly); } 188 204 //---- test: char = (p^k,a) (-> gcd not implemented) or (p,a) (gcd works) ---- 189 205 if ((char(basering)!=0) and (charstr(basering)!=string(char(basering)))) { … … 196 212 poly f=fetch(altring,f); 197 213 poly dif,g,l; 214 if ((char(basering)==0) and (charstr(basering)!=string(char(basering))) 215 and (mipl!="0")) { 216 gcd_ok=0; // since Singular 1.2 gcd no longer implemented 217 } 198 218 if (gcd_ok!=0) { 199 //-------------------- Berechne f/ggT(f,df/dx,df/dy) ------------------------219 //--------------------- Berechne f/ggT(f,df/dx,df/dy) ------------------------ 200 220 dif=diff(f,x); 201 221 if (dif==0) { g=f; } // zur Beschleunigung … … 216 236 else { l=m[1,1]; } 217 237 } 218 //----------------------------------------------------------------------------219 // Polynomdivision geht, wenn factory eingebunden ist220 // dann also l=f/g; aber: ist ebenfalls fehlerhaft! (s.o. als Bsp.)221 // wenn / zur Polynomdivision einsetzbar ist, kann der Ringwechsel gespart222 // werden, sollte dann also zum Einsatz gebracht werden (Zeitersparnis)223 //----------------------------------------------------------------------------224 238 } 225 239 else { e=1; } … … 236 250 if (dif==0) { e=2; l=1; } // f is of power divisible by char of basefield 237 251 else { l=syz(ideal(dif,f))[1,1]; // x^p+y^(p-1) abgedeckt 238 if (deg(l)==deg(f)) { e=1;} 252 if (subst(f,x,0)==0) { l=l*x; } 253 if (deg(l)==deg(f)) { e=1;} 239 254 else {e=0;} 240 255 } 241 256 } 242 257 else { l=syz(ideal(dif,f))[1,1]; 243 if (deg(l)==deg(f)) { e=1;} 258 if (subst(f,y,0)==0) { l=l*y; } 259 if (deg(l)==deg(f)) { e=1;} 244 260 else {e=0;} 245 261 } … … 269 285 l is the squarefree divisor of f you get by l=squarefree(f); 270 286 RETURN: the squarefree divisor of f consisting of all irreducible factors of f 271 NOTE : * this proc uses factorize to get the missing factors of f not in l and 272 therefore may be slow. Furthermore factorize can still return 273 a factor more than once (what should not occur) 274 * this proc uses polynomial division of factory (which still has a bug 275 at the moment: it can return nonsense, if the basering has parameters) 287 NOTE : This proc uses factorize to get the missing factors of f not in l and 288 therefore may be slow. Furthermore factorize still seems to contain 289 errors... 276 290 EXAMPLE: example allsquarefree; shows an example 277 "{ 291 " 292 { 293 //------------------------ Wechsel in geeigneten Ring ------------------------ 294 def altring = basering; 295 string mipl="0"; 296 if (size(parstr(altring))==1) { mipl=string(minpoly); } 297 if ((char(basering)!=0) and (charstr(basering)!=string(char(basering)))) { 298 string tststr=charstr(basering); 299 tststr=tststr[1..find(tststr,",")-1]; //-> "p^k" bzw. "p" 300 if (tststr!=string(char(basering))) { 301 " Sorry -- not implemented for this ring (gcd doesn't work)"; 302 return(l); 303 } 304 } 305 execute("ring rsqrf = ("+charstr(altring)+"),(x,y),dp;"); 306 if (mipl!="0") { execute "minpoly="+mipl+";"; } 307 poly f=fetch(altring,f); 308 poly l=fetch(altring,l); 278 309 //---------- eliminiere bereits mit squarefree gefundene Faktoren ------------ 279 poly g=l; // g = gcd(f,l);310 poly g=l; 280 311 while (deg(g)!=0) { 281 f=f/g;282 g=gcd(f,l);283 } // jetzt f=h^p312 f=syz(ideal(g,f))[1,1]; // f=f/g; 313 g=gcd(f,l); 314 } // jetzt f=h^p 284 315 //--------------- Berechne uebrige Faktoren mit factorize -------------------- 285 316 if (deg(f)>0) { … … 291 322 "!! factorize has not worked correctly !!"; 292 323 if (testp==1) {" We cannot proceed ..."; g=1;} 293 else {" But we could recover the correct result..."; g=testp;}324 else {" But we could recover some factors..."; g=testp;} 294 325 } 295 326 l=l*g; 296 327 } 328 //--------------- Wechsel in alten Ring und Rueckgabe des Ergebnisses -------- 329 setring altring; 330 l=fetch(rsqrf,l); 297 331 return(l); 298 332 } … … 315 349 NOTE: this procedure is only useful in characteristic zero, because otherwise 316 350 there is no appropriate ordering of the leading coefficients 317 "{ 351 " 352 { 318 353 poly verbrecher=0; 319 354 intvec leitexp; … … 337 372 [1]: Hamburger-Noether matrix 338 373 each row contains the coefficients of the corresponding line of the 339 Hamburger-Noether ex tension (HNE). The end of the line is marked in374 Hamburger-Noether expansion (HNE). The end of the line is marked in 340 375 the matrix as the first ring variable (usually x) 341 376 [2]: intvec indicating the length of lines of the HNE 342 377 [3]: int: 343 0 if the 1st ring variable was transvers e(with respect to f),378 0 if the 1st ring variable was transversal (with respect to f), 344 379 1 if the variables were changed at the beginning of the computation 345 380 -1 if an error has occurred … … 352 387 n columns. Otherwise the number of columns will be chosen minimal s.t. 353 388 the matrix contains all necessary information (i.e. all lines of the 354 HNE but the last (which is in general infinite) appear).389 HNE but the last (which is in general infinite) have place). 355 390 If n is negative, the algorithm is stopped as soon as possible, i.e. 356 391 the information computed is enough for 'invariants', but the HN-matrix … … 369 404 EXAMPLES: example develop; shows an example 370 405 example param; shows an example for using the 2nd parameter 371 "{ 406 " 407 { 372 408 //--------- Abfangen unzulaessiger Ringe: 1) nur eine Unbestimmte ------------ 373 409 poly f=#[1]; … … 390 426 391 427 if (charstr(basering)=="real") { 392 " The algorithm doesn't work with 'real' as coefficient field.";428 " The algorithm doesn't work with 'real' as coefficient field."; 393 429 // denn : map from characteristic -1 to -1 not implemented 394 430 return(return_error); … … 400 436 int primit=(tststr==string(char(basering))); 401 437 if (primit!=0) { 402 " such extensions of Z/p are not implemented.",403 " Please try (p^k,a) as ground field.";438 " Such extensions of Z/p are not implemented."; 439 " Please try (p^k,a) as ground field or use `reddevelop'."; 404 440 return(return_error); 405 441 } … … 422 458 map m=altring,x,y; 423 459 if (ringwechsel) { poly f=m(f); } 424 if (defined( Protokoll))460 if (defined(HNDebugOn)) 425 461 {"received polynomial: ",f,", where x =",namex,", y =",namey;} 426 462 … … 515 551 if (str<>"c") { 516 552 setring altring;kill guenstig;kill zweitring; 517 if(system("with","Namespaces")) { kill Top::guenstig; }518 553 return(return_error);} 519 554 else { "if the algorithm doesn't terminate, you were wrong...";} … … 522 557 nm = getnm(f); // N,M haben sich evtl. veraendert 523 558 N = nm[1]; M = nm[2]; // Berechne Schnittpunkte Newtonpoly mit Achsen 524 if (defined( Protokoll)) {"I continue with the polynomial",f; }559 if (defined(HNDebugOn)) {"I continue with the polynomial",f; } 525 560 } 526 561 else { … … 537 572 setring altring; 538 573 kill guenstig; 539 if(system("with","Namespaces")) { kill Top::guenstig; }540 574 return(return_error);} 541 575 if (test_sqr != f) { … … 548 582 nm = getnm(f); // N,M haben sich veraendert 549 583 N = nm[1]; M = nm[2]; // Berechne Schnittpunkte Newtonpoly mit Achsen 550 if (defined( Protokoll)) {"I continue with the polynomial",f; }584 if (defined(HNDebugOn)) {"I continue with the polynomial",f; } 551 585 } 552 586 … … 555 589 if (N==0) { 556 590 " Sorry. The remaining polynomial is a unit in the power series ring..."; 557 if(system("with","Namespaces")) { kill Top::guenstig; }558 591 setring altring;kill guenstig;return(return_error); 559 592 } … … 564 597 M = M+N; N = M-N; M = M-N; // M, N auch vertauschen 565 598 } 566 if (defined( Protokoll)) {599 if (defined(HNDebugOn)) { 567 600 if (getauscht) {"x<->y were exchanged; poly is now ",f;} 568 601 else {"x , y were not exchanged";} … … 580 613 " The given polynomial is not irreducible"; 581 614 kill guenstig; 582 if(system("with","Namespaces")) { kill Top::guenstig; }583 615 setring altring; 584 616 return(return_error); // Abbruch der Prozedur! … … 595 627 if (p==0) { 596 628 delta = koeff(f,M/ e,N - N/ e) / (-1*e*c); 597 if (defined( Protokoll)) {"quasihomogeneous leading form:",629 if (defined(HNDebugOn)) {"quasihomogeneous leading form:", 598 630 leit(f,N,M)," = ",c,"* (y -",delta,"* x^"+string(M/ e)+")^",e," ?";} 599 631 if (leit(f,N,M) != c*(y^(N/ e) - delta*x^(M/ e))^e) 600 { " The given Polynomial is reducible !"; Abbruch=1; Ausgabe=1;}632 { " The given polynomial is reducible !"; Abbruch=1; Ausgabe=1;} 601 633 } 602 634 else { // p!=0 603 635 if (e%p != 0) { 604 636 delta = koeff(f,M/ e,N - N/ e) / (-1*e*c); 605 if (defined( Protokoll)) {"quasihomogeneous leading form:",637 if (defined(HNDebugOn)) {"quasihomogeneous leading form:", 606 638 leit(f,N,M)," = ",c,"* (y -",delta,"* x^"+string(M/ e)+")^",e," ?";} 607 639 if (leit(f,N,M) != c*(y^(N/ e) - delta*x^(M/ e))^e) 608 { " The given Polynomial is reducible !"; Abbruch=1; Ausgabe=1;}640 { " The given polynomial is reducible !"; Abbruch=1; Ausgabe=1;} 609 641 } 610 642 … … 612 644 eps = e; 613 645 for (l = 0; eps%p == 0; l=l+1) { eps=eps/ p;} 614 if (defined( Protokoll)) {e," -> ",eps,"*",p,"^",l;}646 if (defined(HNDebugOn)) {e," -> ",eps,"*",p,"^",l;} 615 647 delta = koeff(f,(M/ e)*p^l,(N/ e)*p^l*(eps-1)) / (-1*eps*c); 616 648 … … 632 664 } 633 665 634 if (defined( Protokoll)) {"quasihomogeneous leading form:",666 if (defined(HNDebugOn)) {"quasihomogeneous leading form:", 635 667 leit(f,N,M)," = ",c,"* (y^"+string(N/ e),"-",delta,"* x^" 636 668 +string(M/ e)+")^",e," ?";} 637 669 if (leit(f,N,M) != c*(y^(N/ e) - delta*x^(M/ e))^e) 638 { " The given Polynomial is reducible !"; Abbruch=1; Ausgabe=1;}670 { " The given polynomial is reducible !"; Abbruch=1; Ausgabe=1;} 639 671 } 640 672 } … … 643 675 "a("+string(zeile)+","+string(Q)+") =",delta; 644 676 a(zeile)[Q]=delta; 645 if (defined( Protokoll)) {"transformed polynomial: ",f;}}677 if (defined(HNDebugOn)) {"transformed polynomial: ",f;}} 646 678 647 679 nm=getnm(f); N=nm[1]; M=nm[2]; // Neuberechnung des Newtonpolygons … … 655 687 // Anpassung der Sp.zahl der HNE-Matrix 656 688 f = T_Transform(f,Q,N); 657 if (defined( Protokoll)) {"transformed polynomial: ",f;}689 if (defined(HNDebugOn)) {"transformed polynomial: ",f;} 658 690 zeile=zeile+1; 659 691 //------------ Bereitstellung von Speicherplatz fuer eine neue Zeile: -------- … … 672 704 } 673 705 else {if (M<N) {"Something has gone wrong: M<N";}} 674 if(defined( Protokoll)) {"new M,N:",M,N;}706 if(defined(HNDebugOn)) {"new M,N:",M,N;} 675 707 676 708 //----------------- Abbruchbedingungen fuer die Schleife: -------------------- … … 709 741 } 710 742 711 if(system("with","Namespaces")) { kill Top::guenstig; }712 743 kill guenstig; 713 744 if (Ausgabe == 0) { return(list(amat,hqs,getauscht,f));} … … 731 762 hne[2]; pause; 732 763 param(hne); 733 // returns the parametri sation x(t)= -t14+O(t21), y(t)= -3t98+O(t105)764 // returns the parametrization x(t)= -t14+O(t21), y(t)= -3t98+O(t105) 734 765 // (the term -t109 in y may have a wrong coefficient) 735 766 displayHNE(hne); 736 767 } 737 768 769 /////////////////////////////////////////////////////////////////////////////// 770 // procedures to extract information out of HNE // 738 771 /////////////////////////////////////////////////////////////////////////////// 739 772 … … 741 774 "USAGE: param(l) takes the output of develop(f) 742 775 (list l (matrix m, intvec v, int s[,poly g])) 743 and gives a parametri sation for f; the first variable of the active776 and gives a parametrization for f; the first variable of the active 744 777 ring is chosen as indefinite. If the ring contains more than 745 778 two variables, the 3rd variable is chosen (remember that develop takes 746 779 the first two variables and therefore the other vars should be unused) 747 780 RETURN: ideal of two polynomials: if the HNE was finite, f(param[1],param[2]) 748 will be zero. If not, the real parametri sation will be781 will be zero. If not, the real parametrization will be 749 782 two power series; then param will return a truncation of these series. 750 EXAMPLE: example param; 783 EXAMPLE: example param; shows an example 751 784 example develop; shows another example 752 753 "{785 " 786 { 754 787 //-------------------------- Initialisierungen ------------------------------- 755 788 matrix m=#[1]; … … 850 883 "USAGE: invariants(l) takes the output of develop(f) 851 884 (list l (matrix m, intvec v, int s[,poly g])) 852 and computes some invariants:885 and computes the following irreducible curve invariants: 853 886 RETURN: a list, if l contains a valid HNE: 854 887 - invariants(l)[1]: intvec (characteristic exponents) 855 - invariants(1)[2],[3]: 2 x intvec (puiseux pairs, 1st and 2nd components) 856 - invariants(l)[4]: int (degree of the conductor) 857 - invariants(l)[5]: intvec (sequence of multiplicities) 888 - invariants(l)[2]: intvec (generators of the semigroup) 889 - invariants(l)[3],[4]: 2 x intvec (Puiseux pairs, 1st and 2nd components) 890 - invariants(l)[5]: int (degree of the conductor) 891 - invariants(l)[6]: intvec (sequence of multiplicities) 858 892 an empty list, if an error occurred in the procedure develop 859 893 EXAMPLE: example invariants; shows an example 860 "{ 894 " 895 { 861 896 //-------------------------- Initialisierungen ------------------------------- 862 897 matrix m=#[1]; … … 868 903 return(ergebnis); 869 904 } 870 intvec beta,s,svorl,ordnung,mult ips,multseq,mpuiseux,npuiseux;905 intvec beta,s,svorl,ordnung,multseq,mpuiseux,npuiseux,halbgr; 871 906 int genus,zeile,i,j,k,summe,conductor,ggT; 872 907 string Ausgabe; … … 912 947 } 913 948 conductor=summe; 949 //------------------- Erzeuger der Halbgruppe: ------------------------------- 950 halbgr=puiseux2generators(mpuiseux,npuiseux); 951 914 952 //------------------- Multiplizitaetensequenz: ------------------------------- 915 953 k=1; 916 multips=multiplicities(#);917 954 for (i=1; i<size(v); i++) { 918 955 for (j=1; j<=v[i]; j++) { 919 multseq[k]= multips[i];956 multseq[k]=ordnung[i]; 920 957 k++; 921 958 }} 922 959 multseq[k]=1; 923 960 //------------------------- Rueckgabe ---------------------------------------- 924 ergebnis=beta, mpuiseux,npuiseux,conductor,multseq;961 ergebnis=beta,halbgr,mpuiseux,npuiseux,conductor,multseq; 925 962 return(ergebnis); 926 963 } … … 931 968 list erg=invariants(hne); 932 969 erg[1]; // the characteristic exponents 933 erg[2],erg[3]; // the puiseux pairs in packed form 934 erg[4] / 2; // the delta-invariant 935 erg[5]; // the sequence of multiplicities 970 erg[2]; // the generators of the semigroup of values 971 erg[3],erg[4]; // the Puiseux pairs in packed form 972 erg[5] / 2; // the delta-invariant 973 erg[6]; // the sequence of multiplicities 936 974 // To display the invariants more 'nicely': 937 975 displayInvariants(hne); … … 948 986 RETURN: nothing 949 987 EXAMPLE: example displayInvariants; shows an example 950 "{ 988 " 989 { 951 990 int i,j,k,mul; 952 991 string Ausgabe; … … 959 998 if (size(ergebnis)!=0) { 960 999 " characteristic exponents :",ergebnis[1]; 1000 " generators of semigroup :",ergebnis[2]; 961 1001 if (size(ergebnis[1])>1) { 962 for (i=1; i<=size(ergebnis[ 2]); i++) {963 Ausgabe=Ausgabe+"("+string(ergebnis[ 2][i])+","964 +string(ergebnis[ 3][i])+")";1002 for (i=1; i<=size(ergebnis[3]); i++) { 1003 Ausgabe=Ausgabe+"("+string(ergebnis[3][i])+"," 1004 +string(ergebnis[4][i])+")"; 965 1005 }} 966 " puiseux pairs :",Ausgabe; 967 " degree of the conductor :",ergebnis[4]; 968 " delta invariant :",ergebnis[4]/2; 969 " generators of semigroup :",puiseux2generators(ergebnis[2],ergebnis[3]); 970 " sequence of multiplicities:",ergebnis[5]; 1006 " Puiseux pairs :",Ausgabe; 1007 " degree of the conductor :",ergebnis[5]; 1008 " delta invariant :",ergebnis[5]/2; 1009 " sequence of multiplicities:",ergebnis[6]; 971 1010 }} 972 1011 //-------------------- Ausgabe aller Zweige ---------------------------------- … … 976 1015 " --- invariants of branch number",j,": ---"; 977 1016 " characteristic exponents :",ergebnis[1]; 1017 " generators of semigroup :",ergebnis[2]; 978 1018 Ausgabe=""; 979 1019 if (size(ergebnis[1])>1) { 980 for (i=1; i<=size(ergebnis[ 2]); i++) {981 Ausgabe=Ausgabe+"("+string(ergebnis[ 2][i])+","982 +string(ergebnis[ 3][i])+")";1020 for (i=1; i<=size(ergebnis[3]); i++) { 1021 Ausgabe=Ausgabe+"("+string(ergebnis[3][i])+"," 1022 +string(ergebnis[4][i])+")"; 983 1023 }} 984 " puiseux pairs :",Ausgabe; 985 " degree of the conductor :",ergebnis[4]; 986 " delta invariant :",ergebnis[4]/2; 987 " generators of semigroup :",puiseux2generators(ergebnis[2],ergebnis[3]); 988 " sequence of multiplicities:",ergebnis[5]; 1024 " Puiseux pairs :",Ausgabe; 1025 " degree of the conductor :",ergebnis[5]; 1026 " delta invariant :",ergebnis[5]/2; 1027 " sequence of multiplicities:",ergebnis[6]; 989 1028 ""; 990 1029 } … … 1030 1069 sive blowing up of the curve corresponding to f 1031 1070 EXAMPLE: example multiplicities; shows an example 1032 "{ 1071 " 1072 { 1033 1073 matrix m=#[1]; 1034 1074 intvec v=#[2]; … … 1065 1105 proc puiseux2generators (intvec m, intvec n) 1066 1106 "USAGE: puiseux2generators (m,n); 1067 m,n intvecs with 1st resp. 2nd components of puiseux pairs1107 m,n intvecs with 1st resp. 2nd components of Puiseux pairs 1068 1108 RETURN: intvec of the generators of the semigroup of values 1069 1109 EXAMPLE: example puiseux2generators; shows an example 1070 "{ 1110 " 1111 { 1071 1112 intvec beta; 1072 1113 int q=1; … … 1085 1126 example 1086 1127 { "EXAMPLE:"; echo = 2; 1087 // take (3,2),(7,2),(15,2),(31,2),(63,2),(127,2) as puiseux pairs:1128 // take (3,2),(7,2),(15,2),(31,2),(63,2),(127,2) as Puiseux pairs: 1088 1129 puiseux2generators(intvec(3,7,15,31,63,127),intvec(2,2,2,2,2,2)); 1089 }1090 ///////////////////////////////////////////////////////////////////////////////1091 1092 proc generators1093 "USAGE: generators(l); takes the output of develop(f)1094 (list l (matrix m, intvec v, int s[,poly g]))1095 RETURN: intvec of the generators of the semigroup of values1096 EXAMPLE: example generators; shows an example1097 "1098 {1099 list inv=invariants(#);1100 return(puiseux2generators(inv[2..3]));1101 }1102 example1103 { "EXAMPLE:"; echo = 2;1104 ring r=0,(x,y),dp;1105 poly f=x15-21x14+8x13y-6x13-16x12y+20x11y2-1x12+8x11y-36x10y2+24x9y3+4x9y21106 -16x8y3+26x7y4-6x6y4+8x5y5+4x3y6-1y8;1107 list hne=develop(f);1108 generators(hne);1109 1130 } 1110 1131 /////////////////////////////////////////////////////////////////////////////// … … 1135 1156 //--------- die jeweils erste Zeile gehoert zum gleichen Parameter ----------- 1136 1157 unterschied=0; 1137 //h1[1],h2[1];size(h1),size(h2);1138 1158 for (s=1; (h1[s]==h2[s]) && (s<size(h1)) && (s<size(h2)) 1139 1159 && (unterschied==0); s++) { … … 1175 1195 matrix ma2[1][j]=a2[s,1..j]; // Teil (der evtl. y's enth.) 1176 1196 } 1177 // print(ma1);print(ma2);1178 1197 for (i=1; (ma1[1,i]==ma2[1,i]) && (i<j) && (ma1[1,i]!=var(2)); i++) {;} 1179 1198 if (ma1[1,i]==ma2[1,i]) { … … 1227 1246 /////////////////////////////////////////////////////////////////////////////// 1228 1247 1248 proc multsequence 1249 "USAGE: multsequence(l); 1250 l is the output of either develop(f) or reddevelop(f) 1251 RETURN: - if l=develop(f) or l=reddevelop(f)[i] : 1252 intvec of the sequence of multiplicities of the curve 1253 resp. of the i-th branch (the same as invariants(l)[6]; ) 1254 1255 - if l=reddevelop(f) : list of two integer matrices: 1256 multsequence(l)[1][i,*] contains the multiplicities of the branches 1257 at their infinitely near point of 0 in its (i-1) order neighbour- 1258 hood (i.e. i=1: multiplicity of the branches themselves, 1259 i=2: multipl. of their 1st quadratic transformed etc., 1260 or to say it in another way: multsequence(l)[1][*,j] is the 1261 sequence of multiplicities of the j-th branch). 1262 multsequence(l)[2][i,*] contains the information which of these 1263 infinitely near points coincide. 1264 NOTE: The order of elements of the list obtained from reddevelop must not 1265 be changed (because then the coincident infinitely near points 1266 couldn't be grouped together, cf. meaning of 2nd intmat in example). 1267 Hence it is not wise to compute the HNE of several polynomials 1268 separately, put them into a list l and call multsequence(l). 1269 1270 Use displayMultsequence to produce a better readable output for 1271 reducible curves on the screen 1272 EXAMPLE: example multsequence; shows an example 1273 " 1274 { 1275 //-- entferne ueberfluessige Daten zur Erhoehung der Rechengeschwindigkeit: -- 1276 #=stripHNE(#); 1277 int k,i,j; 1278 //----------------- Multiplizitaetensequenz eines Zweiges -------------------- 1279 if (typeof(#[1])=="matrix") { 1280 intvec v=#[2]; 1281 list ergebnis; 1282 if (#[3]==-1) { 1283 "An error has occurred in develop, so there is no HNE."; 1284 return(intvec(0)); 1285 } 1286 intvec multips,multseq; 1287 multips=multiplicities(#); 1288 k=1; 1289 for (i=1; i<size(v); i++) { 1290 for (j=1; j<=v[i]; j++) { 1291 multseq[k]=multips[i]; 1292 k++; 1293 }} 1294 multseq[k]=1; 1295 return(multseq); 1296 } 1297 //---------------------------- mehrere Zweige -------------------------------- 1298 else { 1299 list HNEs=#; 1300 int anzahl=size(HNEs); 1301 int maxlength=0; 1302 int bisher; 1303 intvec schnitt,ones; 1304 ones[anzahl]=0; 1305 ones=ones+1; // = 1,1,...,1 1306 for (i=1; i<anzahl; i++) { 1307 schnitt[i]=separateHNE(HNEs[i],HNEs[i+1]); 1308 j=size(multsequence(HNEs[i])); 1309 maxlength=maxlength*(j < maxlength) + j*(j >= maxlength); 1310 maxlength=maxlength*(schnitt[i]+1 < maxlength) 1311 + (schnitt[i]+1)*(schnitt[i]+1 >= maxlength); 1312 } 1313 j=size(multsequence(HNEs[anzahl])); 1314 maxlength=maxlength*(j < maxlength) + j*(j >= maxlength); 1315 1316 //-------------- Konstruktion der ersten zu berechnenden Matrix --------------- 1317 intmat allmults[maxlength][anzahl]; 1318 for (i=1; i<=maxlength; i++) { allmults[i,1..anzahl]=ones[1..anzahl]; } 1319 for (i=1; i<=anzahl; i++) { 1320 ones=multsequence(HNEs[i]); 1321 allmults[1..size(ones),i]=ones[1..size(ones)]; 1322 } 1323 //---------------------- Konstruktion der zweiten Matrix ---------------------- 1324 intmat separate[maxlength][anzahl]; 1325 for (i=1; i<=maxlength; i++) { 1326 k=1; 1327 bisher=0; 1328 if (anzahl==1) { separate[i,1]=1; } 1329 for (j=1; j<anzahl; j++) { 1330 if (schnitt[j]<i) { 1331 separate[i,k]=j-bisher; 1332 bisher=j; 1333 k++; 1334 } 1335 separate[i,k]=anzahl-bisher; 1336 } 1337 } 1338 return(list(allmults,separate)); 1339 } 1340 } 1341 example 1342 { 1343 if (nameof(basering)=="HNEring") { 1344 def rettering=HNEring; 1345 kill HNEring; 1346 } 1347 "EXAMPLE:"; echo = 2; 1348 ring r=0,(x,y),dp; 1349 list hne=reddevelop((x6-y10)*(x+y2-y3)*(x+y2+y3)); 1350 1351 multsequence(hne[1])," | ",multsequence(hne[2])," | ", 1352 multsequence(hne[3])," | ",multsequence(hne[4]); 1353 multsequence(hne); 1354 // The meaning of the entries of the 2nd matrix is as follows: 1355 displayMultsequence(hne); 1356 kill HNEring,r; 1357 echo = 0; 1358 if (defined(rettering)) { // wenn aktueller Ring vor Aufruf von example 1359 setring rettering; // HNEring war, muss dieser erst wieder restauriert 1360 def HNEring=rettering; // werden 1361 export HNEring; 1362 } 1363 } 1364 /////////////////////////////////////////////////////////////////////////////// 1365 1366 proc displayMultsequence 1367 "USAGE: displayMultsequence(l); 1368 l is the output of either develop(f) or reddevelop(f) 1369 RETURN: nothing 1370 DISPLAY: the sequence of multiplicities: 1371 if l=develop(f) or l=reddevelop(f)[i] : just the sequence a,b,c,...,1 1372 if l=reddevelop(f) : a sequence of the following form: 1373 1374 [(a_1,....,b_1,....,c_1)], 1375 [(a_2,...),...,(...,c_2)], 1376 ................... 1377 [(a_n),(b_n),.....,(c_n)] 1378 1379 with a_1,...,a_n the sequence of multiplicities of the 1st branch 1380 [...] the multiplicities of the j-th transformed of all branches 1381 (...) the multiplicities of those branches meeting in the same 1382 infinitely near point 1383 NOTE: The same restrictions for l as in `multsequence' apply. 1384 EXAMPLE: example displayMultsequence; shows an example 1385 " 1386 { 1387 //-- entferne ueberfluessige Daten zur Erhoehung der Rechengeschwindigkeit: -- 1388 #=stripHNE(#); 1389 //----------------- Multiplizitaetensequenz eines Zweiges -------------------- 1390 if (typeof(#[1])=="matrix") { 1391 if (#[3]==-1) { 1392 "An error has occurred in develop, so there is no HNE."; 1393 } 1394 else { 1395 "The sequence of multiplicities is ",multiplicities(#); 1396 }} 1397 //---------------------------- mehrere Zweige -------------------------------- 1398 else { 1399 list multips=multsequence(#); 1400 int i,j,k,l; 1401 string output; 1402 for (i=1; i<=nrows(multips[1]); i++) { 1403 output="["; 1404 k=1; 1405 for (l=1; k<=ncols(multips[1]); l++) { 1406 output=output+"("; 1407 for (j=1; j<=multips[2][i,l]; j++) { 1408 output=output+string(multips[1][i,k]); 1409 k++; 1410 if (j<multips[2][i,l]) { output=output+","; } 1411 } 1412 output=output+")"; 1413 if ((k-1) < ncols(multips[1])) { output=output+","; } 1414 } 1415 output=output+"]"; 1416 if (i<nrows(multips[1])) { output=output+","; } 1417 output; 1418 } 1419 } 1420 } 1421 example 1422 { // example multsequence; geht wegen echo nicht (muesste auf 3 gesetzt werden) 1423 if (nameof(basering)=="HNEring") { 1424 def rettering=HNEring; 1425 kill HNEring; 1426 } 1427 "EXAMPLE:"; echo = 2; 1428 ring r=0,(x,y),dp; 1429 list hne=reddevelop((x6-y10)*(x+y2-y3)*(x+y2+y3)); 1430 1431 displayMultsequence(hne[1]); 1432 displayMultsequence(hne); 1433 kill HNEring,r; 1434 echo = 0; 1435 if (defined(rettering)) { // wenn aktueller Ring vor Aufruf von example 1436 setring rettering; // HNEring war, muss dieser erst wieder restauriert 1437 def HNEring=rettering; // werden 1438 export HNEring; 1439 } 1440 } 1441 /////////////////////////////////////////////////////////////////////////////// 1442 1443 proc separateHNE (list hn1,list hn2) 1444 "USAGE: separateHNE(hne1,hne2); list hne1,hne2: output of develop 1445 RETURN: number of quadratic transformations needed to separate both curves 1446 EXAMPLE: example separateHNE; shows an example 1447 " 1448 { 1449 int i,j,s,unterschied,separated; 1450 matrix a1=hn1[1]; 1451 matrix a2=hn2[1]; 1452 intvec h1=hn1[2]; 1453 intvec h2=hn2[2]; 1454 if (hn1[3]!=hn2[3]) { 1455 //-- die jeweils erste Zeile von hn1,hn2 gehoert zu verschiedenen Parametern - 1456 //---------------- d.h. beide Kurven schneiden sich transversal -------------- 1457 separated=1; 1458 } 1459 else { 1460 //--------- die jeweils erste Zeile gehoert zum gleichen Parameter ----------- 1461 unterschied=0; 1462 for (s=1; (h1[s]==h2[s]) && (s<size(h1)) && (s<size(h2)) 1463 && (unterschied==0); s++) { 1464 for (i=1; (a1[s,i]==a2[s,i]) && (i<=h1[s]); i++) {;} 1465 if (i<=h1[s]) { 1466 unterschied=1; 1467 s--; // um s++ am Schleifenende wieder auszugleichen 1468 } 1469 } 1470 if (unterschied==0) { 1471 if ((s<size(h1)) && (s<size(h2))) { 1472 for (i=1; (a1[s,i]==a2[s,i]) && (i<=h1[s]) && (i<=h2[s]); i++) {;} 1473 } 1474 else { 1475 //-------------- Sonderfall: Unterschied in letzter Zeile suchen ------------- 1476 // Beachte: Es koennen undefinierte Stellen auftreten, bei abbrechender HNE 1477 // muss die Ende-Markierung weg, h_[r] ist unendlich, die Matrix muss mit 1478 // Nullen fortgesetzt gedacht werden 1479 //---------------------------------------------------------------------------- 1480 if (ncols(a1)>ncols(a2)) { j=ncols(a1); } 1481 else { j=ncols(a2); } 1482 unterschied=0; 1483 if ((h1[s]>0) && (s==size(h1))) { 1484 a1[s,h1[s]+1]=0; 1485 if (ncols(a1)<=ncols(a2)) { unterschied=1; } 1486 } 1487 if ((h2[s]>0) && (s==size(h2))) { 1488 a2[s,h2[s]+1]=0; 1489 if (ncols(a2)<=ncols(a1)) { unterschied=1; } 1490 } 1491 if (unterschied==1) { // mind. eine HNE war endlich 1492 matrix ma1[1][j]=a1[s,1..ncols(a1)]; // und bedarf der Fortsetzung 1493 matrix ma2[1][j]=a2[s,1..ncols(a2)]; // mit Nullen 1494 } 1495 else { 1496 if (ncols(a1)>ncols(a2)) { j=ncols(a2); } 1497 else { j=ncols(a1); } 1498 matrix ma1[1][j]=a1[s,1..j]; // Beschr. auf vergleichbaren 1499 matrix ma2[1][j]=a2[s,1..j]; // Teil (der evtl. y's enth.) 1500 } 1501 for (i=1; (ma1[1,i]==ma2[1,i]) && (i<j) && (ma1[1,i]!=var(2)); i++) {;} 1502 if (ma1[1,i]==ma2[1,i]) { 1503 "//** The two HNE's are identical!"; 1504 "//** You have either tried to compare a branch with itself,"; 1505 "//** or the two branches have been developed separately."; 1506 "// In the latter case use `extdevelop' to extend the HNE's until", 1507 "they differ."; 1508 return(-1); 1509 } 1510 if ((ma1[1,i]==var(2)) || (ma2[1,i]==var(2))) { 1511 "//** The two HNE's are (so far) identical. This is because they", 1512 "have been"; 1513 "//** computed separately. I need more data; use `extdevelop' to", 1514 "extend them,"; 1515 if (ma1[1,i]==var(2)) {"//** at least the first one.";} 1516 else {"//** at least the second one.";} 1517 return(-1); 1518 } 1519 } 1520 } 1521 separated=i; 1522 for (j=1; j<s; j++) { separated=separated+h1[j]; } 1523 } 1524 return(separated); 1525 } 1526 example 1527 { "EXAMPLE:"; echo = 2; 1528 ring r=0,(x,y),dp; 1529 list hne1=develop(x); 1530 list hne2=develop(x+y); 1531 list hne3=develop(x+y2); 1532 separateHNE(hne1,hne2); // two transversal lines 1533 separateHNE(hne1,hne3); // one quadratic transformation gives 1st example 1534 } 1535 /////////////////////////////////////////////////////////////////////////////// 1536 1229 1537 proc displayHNE(list ldev,list #) 1230 1538 "USAGE: displayHNE(ldev,[,n]); ldev=list … … 1241 1549 represented in the HN-matrix as 'x' 1242 1550 the 1st line (HNE[1]) means that y==[]*z(0)^1+... , 1243 the 2nd line (HNE[2]) means that x==[]*z(1)^ 1+...1551 the 2nd line (HNE[2]) means that x==[]*z(1)^2+... 1244 1552 so you can see which indeterminate corresponds to which line 1245 1553 (it's also possible that x corresponds to the 1st line and y to the 2nd) … … 1268 1576 return(ideal(0)); 1269 1577 } 1578 def altring=basering; 1270 1579 if (parstr(basering)!="") { 1271 1580 if (charstr(basering)!=string(char(basering))+","+parstr(basering)) { 1272 "Sorry -- not implemented for rings of type (p^k,a),...";1273 return(ideal(0));1274 } 1275 }1276 def altring=basering;1277 ring dazu=char(altring),z(0..size(v)-1),ls;1581 execute 1582 "ring dazu=("+charstr(basering)+"),z(0.."+string(size(v)-1)+"),ls;"; 1583 } 1584 else { ring dazu=char(altring),z(0..size(v)-1),ls; } 1585 } 1586 else { ring dazu=char(altring),z(0..size(v)-1),ls; } 1278 1587 def displayring=dazu+altring; 1279 1588 setring displayring; … … 1324 1633 /////////////////////////////////////////////////////////////////////////////// 1325 1634 1326 1327 proc newtonhoehne (poly f) 1328 "USAGE: newtonhoehne(f); f poly 1329 ASSUME: basering = ...,(x,y),ds or ls 1330 RETURN: list of intvec(x,y) of coordinates of the newtonpolygon of f 1331 NOTE: This proc is only available in versions of Singular that know the 1332 command system(\"newton\",f); f poly 1333 " 1334 { 1335 intvec nm = getnm(f); 1336 if ((nm[1]>0) && (nm[2]>0)) { f=jet(f,nm[1]*nm[2],nm); } 1337 list erg=system("newton",f); 1338 int i; list Ausgabe; 1339 for (i=1; i<=size(erg); i++) { Ausgabe[i]=leadexp(erg[i]); } 1340 return(Ausgabe); 1341 } 1635 // proc newtonhoehne (poly f) 1636 // USAGE: newtonhoehne(f); f poly 1637 // ASSUME: basering = ...,(x,y),ds or ls 1638 // RETURN: list of intvec(x,y) of coordinates of the newtonpolygon of f 1639 // NOTE: This proc is only available in versions of Singular that know the 1640 // command system("newton",f); f poly 1641 // { 1642 // intvec nm = getnm(f); 1643 // if ((nm[1]>0) && (nm[2]>0)) { f=jet(f,nm[1]*nm[2],nm); } 1644 // list erg=system("newton",f); 1645 // int i; list Ausgabe; 1646 // for (i=1; i<=size(erg); i++) { Ausgabe[i]=leadexp(erg[i]); } 1647 // return(Ausgabe); 1648 // } 1342 1649 /////////////////////////////////////////////////////////////////////////////// 1343 1650 1344 1651 proc newtonpoly (poly f) 1345 1652 "USAGE: newtonpoly(f); f poly 1346 RETURN: list of intvec(x,y) of coordinates of the newtonpolygon of f1653 RETURN: list of intvec(x,y) of coordinates of the Newton polygon of f 1347 1654 NOTE: There are many assumptions: (to improve speed) 1348 1655 - The basering must be ...,(x,y),ls … … 1353 1660 intvec A=(0,ord(subst(f,x,0))); 1354 1661 intvec B=(ord(subst(f,y,0)),0); 1355 intvec C, D,H; list L;1662 intvec C,H; list L; 1356 1663 int abbruch,i; 1357 1664 poly hilf; … … 1379 1686 1380 1687 H=leadexp(xytausch(hilf)); 1381 D=H[2],H[1];1688 A=H[2],H[1]; 1382 1689 1383 1690 // die Alternative waere ein Ringwechsel nach ..,(y,x),ds gewesen 1384 // D ist der naechste Eckpunkt (unterster Punkt auf Geraden durch A,C) 1385 1386 L[i]=D; 1387 A=D; 1388 //----------------- alle Monome auf oder unterhalb DB raus ------------------- 1389 f=jet(f,D[2]*B[1]-1,intvec(D[2],B[1]-D[1])); 1691 // A_neu ist der naechste Eckpunkt (unterster Punkt auf Geraden durch A,C) 1692 1693 L[i]=A; 1694 //----------------- alle Monome auf oder unterhalb AB raus ------------------- 1695 f=jet(f,A[2]*B[1]-1,intvec(A[2],B[1]-A[1])); 1390 1696 } 1391 1697 L[i]=B; … … 1407 1713 proc charPoly(poly f, int M, int N) 1408 1714 "USAGE: charPoly(f,M,N); f poly in x,y, M,N int: length and height 1409 of newtonpolygon of f, which has to be only one line1715 of Newton polygon of f, which has to be only one line 1410 1716 RETURN: the characteristic polynomial of f 1411 1717 EXAMPLE: example charPoly; shows an example … … 1485 1791 /////////////////////////////////////////////////////////////////////////////// 1486 1792 proc redleit (poly f,intvec S, intvec E) 1487 "USAGE: redleit(f,S,E); f poly, 1488 S,E intvec(x,y): two different points on a line in the newtonpolygon 1489 of f (e.g. the starting and the ending point) 1490 RETURN: poly g: all monomials of f which lay on that line 1491 NOTE: It is not checked whether S and E really belong to the newtonpolygon! 1793 "USAGE: redleit(f,S,E); f poly, S,E intvec(x,y) 1794 S,E are two different points on a line in the Newton diagram of f 1795 RETURN: poly g: all monomials of f which lie on or below that line 1796 NOTE: The main purpose is that if the line defined by S and E is part of the 1797 Newton polygon, the result is the quasihomogeneous leading form of f 1798 wrt. that line. 1492 1799 EXAMPLE: example redleit; shows an example 1493 1800 " … … 1506 1813 proc extdevelop (list l, int Exaktheit) 1507 1814 "USAGE: extdevelop(l,n); list l (matrix m, intvec v, int s, poly g), int n 1508 takes the output l of develop(f) ( or extdevelop(L, n),1815 takes the output l of develop(f) ( or extdevelop(L,N), 1509 1816 or one entry of the output of reddevelop(f)) and 1510 1817 RETURN: an extension of the Hamburger-Noether development of f in the form … … 1514 1821 Thus if f is irreducible, extdevelop(develop(f),n); 1515 1822 (in most cases) will produce the same result as develop(f,n). 1516 Type help develop; for more details 1823 Type help develop; for more details. 1824 NOTE: If the matrix m of l has N columns, the exactness of 1825 param(extdevelop(l,n)) will be increased by at least (n-N) more 1826 significant monomials compared to param(l). 1517 1827 EXAMPLE: example extdevelop; shows an example 1518 1828 " … … 1544 1854 } 1545 1855 int zeile=nrows(m); 1546 int spalten,i, lastside;1856 int spalten,i,M; 1547 1857 ideal lastrow=m[zeile,1..Q]; 1548 1858 int ringwechsel=(varstr(basering)!="x,y") or (ordstr(basering)!="ls(2),C"); … … 1551 1861 if (ringwechsel) { 1552 1862 def altring = basering; 1553 int p = char(basering); // Ringcharakteristik1863 int p = char(basering); 1554 1864 if (charstr(basering)!=string(p)) { 1555 1865 string tststr=charstr(basering); … … 1581 1891 } 1582 1892 else { ideal a=lastrow; } 1583 list Newton; 1893 list Newton=newtonpoly(f); 1894 int M1=Newton[size(Newton)-1][1]; // konstant 1584 1895 number delta; 1896 if (Newton[size(Newton)-1][2]!=1) { 1897 " *** The transformed polynomial was not valid!!";} 1898 else { 1585 1899 //--------------------- Fortsetzung der HNE ---------------------------------- 1586 while (Q<Exaktheit) { 1587 Newton=newtonpoly(f); 1588 lastside=size(Newton)-1; 1589 if (Newton[lastside][2]!=1) { 1590 " *** The transformed polynomial was not valid!!";} 1591 Q=Newton[lastside+1][1]-Newton[lastside][1]; // Laenge der letzten Seite 1592 1593 //--- quasihomogenes Leitpolynom ist c*x^a*y+d*x^(a+Q) => delta=-d/c: -------- 1594 delta=-koeff(f,Newton[lastside+1][1],0)/koeff(f,Newton[lastside][1],1); 1595 a[Q]=delta; 1596 "a("+string(zeile-1)+","+string(Q)+") =",delta; 1597 if (Q<Exaktheit) { 1598 f=T1_Transform(f,delta,Q); 1599 if (defined(Protokoll)) { "transformed polynomial:",f; } 1600 if (subst(f,y,0)==0) { 1601 "The HNE is finite!"; 1602 a[Q+1]=x; Exaktheit=Q; 1603 f=0; // Speicherersparnis: f nicht mehr gebraucht 1604 } 1900 while (Q<Exaktheit) { 1901 M=ord(subst(f,y,0)); 1902 Q=M-M1; 1903 //------ quasihomogene Leitform ist c*x^M1*y+d*x^(M1+Q) => delta=-d/c: ------- 1904 delta=-koeff(f,M,0)/koeff(f,M1,1); 1905 a[Q]=delta; 1906 "a("+string(zeile-1)+","+string(Q)+") =",delta; 1907 if (Q<Exaktheit) { 1908 f=T1_Transform(f,delta,Q); 1909 if (defined(HNDebugOn)) { "transformed polynomial:",f; } 1910 if (subst(f,y,0)==0) { 1911 "The HNE is finite!"; 1912 a[Q+1]=x; Exaktheit=Q; 1913 f=0; // Speicherersparnis: f nicht mehr gebraucht 1914 } 1915 } 1605 1916 } 1606 1917 } … … 1628 1939 }}} 1629 1940 else { v[zeile]=Q; } // HNE war exakt 1630 if (ringwechsel) { 1941 if (ringwechsel) 1942 { 1631 1943 if(system("with","Namespaces")) { kill Top::extdguenstig; } 1632 1944 kill extdguenstig; … … 1698 2010 } 1699 2011 /////////////////////////////////////////////////////////////////////////////// 1700 2012 static 1701 2013 proc extractHNEs(list HNEs, int transvers) 1702 2014 "USAGE: extractHNEs(HNEs,transvers); list HNEs (output from HN), … … 1711 2023 maxspalte=0; 1712 2024 HNEaktu=HNEs[hnezaehler]; 1713 if (defined( Protokoll)) {"To process:";HNEaktu;}2025 if (defined(HNDebugOn)) {"To process:";HNEaktu;} 1714 2026 if (size(HNEs[hnezaehler])!=size(HNEs[hnezaehler][1])+2) { 1715 2027 "The ideals and the hqs in HNEs[",hnezaehler,"] don't match!!"; … … 1757 2069 eps = e; 1758 2070 for (l = 0; eps%p == 0; l=l+1) { eps=eps/ p;} 1759 if (defined( Protokoll)) {e," -> ",eps,"*",p,"^",l;}2071 if (defined(HNDebugOn)) {e," -> ",eps,"*",p,"^",l;} 1760 2072 delta = koeff(f,(M/ e)*p^l,(N/ e)*p^l*(eps-1)) / (-1*eps*c); 1761 2073 … … 1763 2075 //------ coefficient field is not Z/pZ => (p^l)th root is not identity ------- 1764 2076 delta=0; 1765 if (defined( Protokoll)) {2077 if (defined(HNDebugOn)) { 1766 2078 "trivial factorization not implemented for", 1767 2079 "parameters---I've to use 'factorize'"; … … 1770 2082 } 1771 2083 } 1772 if (defined( Protokoll)) {"quasihomogeneous leading form:",f," = ",c,2084 if (defined(HNDebugOn)) {"quasihomogeneous leading form:",f," = ",c, 1773 2085 "* (y^"+string(N/ e),"-",delta,"* x^"+string(M/ e)+")^",e," ?";} 1774 2086 if (f != c*(y^(N/ e) - delta*x^(M/ e))^e) {return(0);} … … 1791 2103 data for one of the branches of f. 1792 2104 For more details type 'help develop;' 1793 NOTE: as the Hamburger-Noether development of a reducible curve normally 1794 exists only in a ring extension, reddevelop automatically changes 1795 the basering to ring HNEring=...,(x,y),ls; ! 2105 CREATE: a ring with name `HNEring', variables `x,y' and ordering `ls' over 2106 a field extension of the current basering's ground field. 2107 As the Hamburger-Noether development of a reducible curve normally 2108 does not exist in the given basering, reddevelop always defines 2109 HNEring and changes to it. The field extension is chosen minimal. 1796 2110 EXAMPLE: example reddevelop; shows an example 1797 2111 " … … 1857 2171 export HNEring; 1858 2172 1859 if (defined( Protokoll))2173 if (defined(HNDebugOn)) 1860 2174 {"received polynomial: ",f,", with x =",namex,", y =",namey;} 1861 2175 … … 1923 2237 else { 1924 2238 if (str<>"c") { 2239 setring altring; 1925 2240 if(system("with","Namespaces")) { kill Top::HNEring; } 1926 setring altring;kill HNEring;kill zweitring;2241 kill HNEring;kill zweitring; 1927 2242 return(list());} 1928 2243 else { "if the algorithm doesn't terminate, you were wrong...";} 1929 2244 }} 1930 2245 kill zweitring; 1931 if (defined( Protokoll)) {"I continue with the polynomial",f; }2246 if (defined(HNDebugOn)) {"I continue with the polynomial",f; } 1932 2247 } 1933 2248 else { … … 1975 2290 if (str=="f") { f=allsquarefree(f,test_sqr); } 1976 2291 } 1977 if (defined( Protokoll)) {"I continue with the polynomial",f; }2292 if (defined(HNDebugOn)) {"I continue with the polynomial",f; } 1978 2293 1979 2294 } … … 2017 2332 list HNEs=ideal(0); 2018 2333 list aneu=ideal(0); 2334 list faktoren=ideal(0); 2019 2335 ideal deltais; 2020 2336 poly delta; // nicht number, weil delta von a abhaengen kann 2021 export f,azeilen,HNEs,aneu, deltais,delta;2337 export f,azeilen,HNEs,aneu,faktoren,deltais,delta; 2022 2338 //----- hier steht die Anzahl bisher benoetigter Ringerweiterungen drin: ----- 2023 2339 int EXTHNEnumber=0; export EXTHNEnumber; … … 2025 2341 2026 2342 // -------- Berechne HNE von allen Zweigen, fuer die x transvers ist: -------- 2027 if (defined( Protokoll))2028 {"1st step: Treat newton polygon until height",grenze1;}2343 if (defined(HNDebugOn)) 2344 {"1st step: Treat Newton polygon until height",grenze1;} 2029 2345 if (grenze1>0) { 2030 2346 hilflist=HN(f,grenze1,1); … … 2033 2349 Ergebnis=extractHNEs(hilflist[1],0); 2034 2350 if (hilflist[2]!=-1) { 2035 if (defined( Protokoll)) {" ring change in HN(",1,") detected";}2351 if (defined(HNDebugOn)) {" ring change in HN(",1,") detected";} 2036 2352 poly transfproc=hilflist[2]; 2037 2353 map hole=HNE_noparam,transfproc,x,y; … … 2046 2362 } 2047 2363 // --------------- Berechne HNE von allen verbliebenen Zweigen: -------------- 2048 if (defined( Protokoll))2049 {"2nd step: Treat newton polygon until height",grenze2;}2364 if (defined(HNDebugOn)) 2365 {"2nd step: Treat Newton polygon until height",grenze2;} 2050 2366 if (grenze2>0) { 2051 2367 map xytausch=basering,y,x; … … 2058 2374 if (not(defined(Ergebnis))) { 2059 2375 //-- HN wurde schon mal ausgefuehrt; Ringwechsel beim zweiten Aufruf von HN -- 2060 if (defined( Protokoll)) {" ring change in HN(",1,") detected";}2376 if (defined(HNDebugOn)) {" ring change in HN(",1,") detected";} 2061 2377 poly transfproc=hilflist[2]; 2062 2378 map hole=HNE_noparam,transfproc,x,y; … … 2078 2394 setring HNEring; 2079 2395 export HNEring; 2080 if(system("with","Namespaces")) { kill Primitiv::EXTHNEring(1..EXTHNEnumber);}2081 2396 kill EXTHNEring(1..EXTHNEnumber); 2082 2397 } 2083 if(system("with","Namespaces")){kill Top::HNE_noparam;}2084 2398 kill HNE_noparam; 2085 2399 kill EXTHNEnumber; … … 2127 2441 static 2128 2442 proc HN (poly f,int grenze, int Aufruf_Ebene) 2129 "NOTE: This procedure is only for internal use, it is called via reddevelop 2130 " 2443 "NOTE: This procedure is only for internal use, it is called via reddevelop" 2131 2444 { 2132 2445 //---------- Variablendefinitionen fuer den unverzweigten Teil: -------------- 2133 if (defined( Protokoll)) {"procedure HN",Aufruf_Ebene;}2446 if (defined(HNDebugOn)) {"procedure HN",Aufruf_Ebene;} 2134 2447 int Abbruch,ende,i,j,e,M,N,Q,R,zeiger,zeile,zeilevorher; 2135 2448 intvec hqs; … … 2155 2468 zeiger=find_in_list(Newton,grenze); 2156 2469 if (Newton[zeiger][2] != grenze) 2157 {"Didn't find an edge in the newton polygon!";}2470 {"Didn't find an edge in the Newton polygon!";} 2158 2471 if (zeiger==size(Newton)-1) { 2159 if (defined( Protokoll)) {"only one relevant side in newton polygon";}2472 if (defined(HNDebugOn)) {"only one relevant side in Newton polygon";} 2160 2473 M=Newton[zeiger+1][1]-Newton[zeiger][1]; 2161 2474 N=Newton[zeiger][2]-Newton[zeiger+1][2]; … … 2170 2483 /x^Newton[zeiger][1],M,N); 2171 2484 if (delta==0) { 2172 if (defined( Protokoll)) {" The given polynomial is reducible !";}2485 if (defined(HNDebugOn)) {" The given polynomial is reducible !";} 2173 2486 Abbruch=1; 2174 2487 } … … 2180 2493 if (N>1) { f = T1_Transform(f,delta,M/ e); } 2181 2494 else { ende=1; } 2182 if (defined( Protokoll)) {"a("+string(zeile)+","+string(Q)+") =",delta;}2495 if (defined(HNDebugOn)) {"a("+string(zeile)+","+string(Q)+") =",delta;} 2183 2496 azeilen=set_list(azeilen,intvec(zeile+1,Q),delta); 2184 2497 } 2185 2498 else { 2186 2499 //------------- R > 0 : transformiere f mit T2 ------------------------------- 2187 erg=T2_Transform(f,delta,M,N );2500 erg=T2_Transform(f,delta,M,N,referencepoly(Newton)); 2188 2501 f=erg[1];delta=erg[2]; 2189 2502 //------- vollziehe Euklid.Alg. nach, um die HN-Matrix zu berechnen: --------- 2190 2503 while (R!=0) { 2191 if (defined( Protokoll)) { "h("+string(zeile)+") =",Q; }2504 if (defined(HNDebugOn)) { "h("+string(zeile)+") =",Q; } 2192 2505 hqs[zeile+1]=Q; //denn zeile beginnt mit dem Wert 0 2193 2506 //------------------ markiere das Zeilenende der HNE: ------------------------ … … 2198 2511 M=N; N=R; R=M%N; Q=M / N; 2199 2512 } 2200 if (defined( Protokoll)) {"a("+string(zeile)+","+string(Q)+") =",delta;}2513 if (defined(HNDebugOn)) {"a("+string(zeile)+","+string(Q)+") =",delta;} 2201 2514 azeilen=set_list(azeilen,intvec(zeile+1,Q),delta); 2202 2515 } 2203 if (defined( Protokoll)) {"transformed polynomial: ",f;}2516 if (defined(HNDebugOn)) {"transformed polynomial: ",f;} 2204 2517 grenze=e; 2205 2518 //----------------------- teste Abbruchbedingungen: -------------------------- … … 2239 2552 //---------- Variablendefinitionen fuer den verzweigten Teil: ---------------- 2240 2553 poly leitf,teiler,transformiert; 2241 list faktoren=ideal(0); list aneu=ideal(0); 2554 list aneu=ideal(0); 2555 list faktoren; 2556 list HNEakut=ideal(0); 2242 2557 ideal deltais; 2243 2558 intvec eis; … … 2247 2562 2248 2563 zeiger=find_in_list(Newton,grenze); 2249 if (defined( Protokoll)) {2250 "Branching part reached--- newton polygon :",Newton;2564 if (defined(HNDebugOn)) { 2565 "Branching part reached---Newton polygon :",Newton; 2251 2566 "relevant part until height",grenze,", from",Newton[zeiger],"on"; 2252 2567 } … … 2255 2570 //======= Schleife fuer jede zu betrachtende Seite des Newtonpolygons: ======= 2256 2571 for(i=zeiger; i<size(Newton); i++) { 2257 if (defined( Protokoll)) { "we consider side",Newton[i],Newton[i+1]; }2572 if (defined(HNDebugOn)) { "we consider side",Newton[i],Newton[i+1]; } 2258 2573 M=Newton[i+1][1]-Newton[i][1]; 2259 2574 N=Newton[i][2]-Newton[i+1][2]; … … 2264 2579 letztringname=nameof(basering); 2265 2580 lastRingnumber=EXTHNEnumber; 2581 faktoren=list(ideal(charPoly(redleit(f,Newton[i],Newton[i+1]) 2582 /(x^Newton[i][1]*y^Newton[i+1][2]),M,N) ), 2583 intvec(1)); // = (zu faktoriserendes Poly, 1) 2266 2584 2267 2585 //-- wechsle so lange in Ringerw., bis Leitform vollst. in Linearfakt. zerf.:- … … 2278 2596 { " ** I cannot proceed, will produce some error messages...";} 2279 2597 } 2280 else 2281 { 2598 else { 2282 2599 //------------------ faktorisiere das charakt. Polynom: ---------------------- 2283 faktoren=factorize(charPoly(leitf,M,N)); 2600 // faktoren=factorize(charPoly(leitf,M,N)); wird ersetzt durch: 2601 faktoren=factorlist(faktoren); 2284 2602 } 2285 2603 … … 2288 2606 teiler=faktoren[1][j]; 2289 2607 if (teiler/y != 0) { // sonst war's eine Einheit --> wegwerfen! 2290 if (defined( Protokoll)) {"factor of leading form found:",teiler;}2608 if (defined(HNDebugOn)) {"factor of leading form found:",teiler;} 2291 2609 if (teiler/y2 == 0) { // --> Faktor hat die Form cy+d 2292 2610 deltais[zaehler]=-subst(teiler,y,0)/koeff(teiler,0,1); //=-d/c … … 2296 2614 else { 2297 2615 " Change of basering necessary!!"; 2298 if (defined( Protokoll)) { teiler,"is not properly factored!"; }2616 if (defined(HNDebugOn)) { teiler,"is not properly factored!"; } 2299 2617 if (needext==0) { poly zerlege=teiler; } 2300 2618 needext=1; … … 2304 2622 } 2305 2623 else { deltais=ideal(delta); eis=e;} 2306 if (defined( Protokoll)) {"roots of char. poly:";deltais;2624 if (defined(HNDebugOn)) {"roots of char. poly:";deltais; 2307 2625 "with multiplicities:",eis;} 2308 2626 if (needext==1) { … … 2324 2642 if (defined(translist)) { kill translist; } // Vermeidung einer Warnung 2325 2643 if (numberofRingchanges>1) { // ein Ringwechsel hat nicht gereicht 2326 list translist=splitring(zerlege,"",list(transf,transfproc)); 2327 poly transf=translist[1]; poly transfproc=translist[2]; 2644 list translist=splitring(zerlege,"",list(transf,transfproc,faktoren)); 2645 poly transf=translist[1]; 2646 poly transfproc=translist[2]; 2647 list faktoren=translist[3]; 2328 2648 } 2329 2649 else { … … 2354 2674 //------ Neudef. von Variablen, Uebertragung bisher errechneter Daten: ------- 2355 2675 poly leitf,teiler,transformiert; 2356 list faktoren; listaneu=ideal(0);2676 list aneu=ideal(0); 2357 2677 ideal deltais; 2358 2678 number delta; … … 2362 2682 else { def letztring=HNEring; } 2363 2683 f=imap(letztring,f); 2684 faktoren=imap(letztring,faktoren); 2364 2685 setring EXTHNEring(EXTHNEnumber); 2365 2686 map hole=HNE_noparam,transf,x,y; 2366 2687 poly f=hole(f); 2688 if (not defined(faktoren)) { 2689 list faktoren=hole(faktoren); 2690 } 2367 2691 } 2368 2692 } // end (while needext==1) bzw. for (numberofRingchanges) … … 2370 2694 if (eis==0) { i++; continue; } 2371 2695 if (ringischanged==1) { 2372 list erg,hilflist ;// dienen nur zum Sp. von Zwi.erg.2696 list erg,hilflist,HNEakut; // dienen nur zum Sp. von Zwi.erg. 2373 2697 ideal hilfid; 2374 erg=ideal(0); hilflist=erg; 2698 erg=ideal(0); hilflist=erg; HNEakut=erg; 2375 2699 2376 2700 hole=HNE_noparam,transf,x,y; … … 2393 2717 if (R==0) { 2394 2718 transformiert = T1_Transform(f,number(deltais[j]),M/ e); 2395 if (defined( Protokoll)) {2719 if (defined(HNDebugOn)) { 2396 2720 "a("+string(zeile)+","+string(Q)+") =",deltais[j]; 2397 2721 "transformed polynomial: ",transformiert; … … 2401 2725 hnezaehler++; 2402 2726 //------------ trage deltais[j],x ein in letzte Zeile, fertig: --------------- 2403 HNEs[hnezaehler]=azeilen+list(poly(0)); 2404 hilfid=HNEs[hnezaehler][zeile+2]; hilfid[Q]=deltais[j]; hilfid[Q+1]=x; 2405 HNEs=set_list(HNEs,intvec(hnezaehler,zeile+2),hilfid); 2406 HNEs=set_list(HNEs,intvec(hnezaehler,1,zeile+1),Q); 2407 // aktualisiere Vektor mit den hqs 2727 HNEakut=azeilen+list(poly(0)); // =HNEs[hnezaehler]; 2728 hilfid=HNEakut[zeile+2]; hilfid[Q]=deltais[j]; hilfid[Q+1]=x; 2729 HNEakut[zeile+2]=hilfid; 2730 HNEakut=set_list(HNEakut,intvec(1,zeile+1),Q); 2731 // aktualisiere Vektor mit den hqs 2732 HNEs[hnezaehler]=HNEakut; 2408 2733 if (eis[j]>1) { 2409 2734 transformiert=transformiert/y; … … 2419 2744 else { 2420 2745 //------------------------ Fall R <> 0: -------------------------------------- 2421 erg=T2_Transform(f,number(deltais[j]),M,N );2746 erg=T2_Transform(f,number(deltais[j]),M,N,referencepoly(Newton)); 2422 2747 transformiert=erg[1];delta=erg[2]; 2423 if (defined( Protokoll)) {"transformed polynomial: ",transformiert;}2748 if (defined(HNDebugOn)) {"transformed polynomial: ",transformiert;} 2424 2749 if (subst(transformiert,y,0)==0) { 2425 2750 "finite HNE found"; … … 2427 2752 //---------------- trage endliche HNE in HNEs ein: --------------------------- 2428 2753 HNEs[hnezaehler]=azeilen; // dupliziere den gemeins. Anfang der HNE's 2754 HNEakut=HNEs[hnezaehler]; 2429 2755 zl=2; 2430 2756 //---------------------------------------------------------------------------- … … 2438 2764 M1=M;N1=N;R1=R;Q1=M1/ N1; 2439 2765 while (R1!=0) { 2440 if (defined( Protokoll)) { "h("+string(zeile+zl-2)+") =",Q1; }2441 HNE s=set_list(HNEs,intvec(hnezaehler,1,zeile+zl-1),Q1);2442 HNE s=set_list(HNEs,intvec(hnezaehler,zeile+zl,Q1+1),x);2766 if (defined(HNDebugOn)) { "h("+string(zeile+zl-2)+") =",Q1; } 2767 HNEakut=set_list(HNEakut,intvec(1,zeile+zl-1),Q1); 2768 HNEakut=set_list(HNEakut,intvec(zeile+zl,Q1+1),x); 2443 2769 // markiere das Zeilenende der HNE 2444 2770 zl=zl+1; 2445 2771 //-------- Bereitstellung von Speicherplatz fuer eine neue Zeile: ------------ 2446 HNE s=set_list(HNEs,intvec(hnezaehler,zeile+zl),ideal(0));2772 HNEakut[zeile+zl]=ideal(0); 2447 2773 2448 2774 M1=N1; N1=R1; R1=M1%N1; Q1=M1 / N1; 2449 2775 } 2450 if (defined( Protokoll)) {2776 if (defined(HNDebugOn)) { 2451 2777 "a("+string(zeile+zl-2)+","+string(Q1)+") =",delta; 2452 2778 } 2453 2779 hilfid=ideal(0); // = HNEs[hnezaehler][zeile+zl]; 2454 2780 hilfid[Q1]=delta;hilfid[Q1+1]=x; 2455 HNE s=set_list(HNEs,intvec(hnezaehler,zeile+zl),hilfid);2456 HNE s=set_list(HNEs,intvec(hnezaehler,1,zeile+zl-1),Q1);2781 HNEakut[zeile+zl]=hilfid; 2782 HNEakut=set_list(HNEakut,intvec(1,zeile+zl-1),Q1); 2457 2783 // aktualisiere Vektor mit hqs 2458 HNEs=set_list(HNEs,intvec(hnezaehler,zeile+zl+1),poly(0)); 2784 HNEakut[zeile+zl+1]=poly(0); 2785 HNEs[hnezaehler]=HNEakut; 2459 2786 //-------------------- Ende der Eintragungen in HNEs ------------------------- 2460 2787 … … 2478 2805 aneu=HNerg[1]; } 2479 2806 else { 2480 if (defined( Protokoll))2807 if (defined(HNDebugOn)) 2481 2808 {" ring change in HN(",Aufruf_Ebene+1,") detected";} 2482 2809 list aneu=HNerg[1]; … … 2484 2811 2485 2812 //- stelle lokale Var. im neuen Ring wieder her und rette ggf. ihren Inhalt: - 2486 list erg,hilflist,faktoren ;2813 list erg,hilflist,faktoren,HNEakut; 2487 2814 ideal hilfid; 2488 erg=ideal(0); hilflist=erg; faktoren=erg; 2815 erg=ideal(0); hilflist=erg; faktoren=erg; HNEakut=erg; 2489 2816 poly leitf,teiler,transformiert; 2490 2817 … … 2520 2847 hnezaehler++; 2521 2848 HNEs[hnezaehler]=azeilen; // dupliziere den gemeinsamen Anfang der HNE's 2849 HNEakut=HNEs[hnezaehler]; 2522 2850 zl=2; 2523 2851 //---------------- Trage Beitrag dieser Transformation T2 ein: --------------- … … 2527 2855 M1=M;N1=N;R1=R;Q1=M1/ N1; 2528 2856 while (R1!=0) { 2529 if (defined( Protokoll)) { "h("+string(zeile+zl-2)+") =",Q1; }2530 HNE s=set_list(HNEs,intvec(hnezaehler,1,zeile+zl-1),Q1);2531 HNE s=set_list(HNEs,intvec(hnezaehler,zeile+zl,Q1+1),x);2857 if (defined(HNDebugOn)) { "h("+string(zeile+zl-2)+") =",Q1; } 2858 HNEakut=set_list(HNEakut,intvec(1,zeile+zl-1),Q1); 2859 HNEakut=set_list(HNEakut,intvec(zeile+zl,Q1+1),x); 2532 2860 // Markierung des Zeilenendes der HNE 2533 2861 zl=zl+1; 2534 2862 //-------- Bereitstellung von Speicherplatz fuer eine neue Zeile: ------------ 2535 HNE s=set_list(HNEs,intvec(hnezaehler,zeile+zl),ideal(0));2863 HNEakut[zeile+zl]=ideal(0); 2536 2864 M1=N1; N1=R1; R1=M1%N1; Q1=M1 / N1; 2537 2865 } 2538 if (defined( Protokoll)) {2866 if (defined(HNDebugOn)) { 2539 2867 "a("+string(zeile+zl-2)+","+string(Q1)+") =",delta; 2540 2868 } 2541 HNE s=set_list(HNEs,intvec(hnezaehler,zeile+zl,Q1),delta);2869 HNEakut=set_list(HNEakut,intvec(zeile+zl,Q1),delta); 2542 2870 2543 2871 //--- Daten aus T2_Transform sind eingetragen; haenge Daten von HN an: ------- 2544 hilfid=HNE s[hnezaehler][zeile+zl];2872 hilfid=HNEakut[zeile+zl]; 2545 2873 for (zl1=Q1+1; zl1<=ncols(aneu[zaehler][2]); zl1++) { 2546 2874 hilfid[zl1]=aneu[zaehler][2][zl1]; 2547 2875 } 2548 HNE s=set_list(HNEs,intvec(hnezaehler,zeile+zl),hilfid);2876 HNEakut[zeile+zl]=hilfid; 2549 2877 //--- vorher HNEs[.][zeile+zl]<-aneu[.][2], jetzt [zeile+zl+1] <- [3] usw.: -- 2550 2878 for (zl1=3; zl1<=size(aneu[zaehler]); zl1++) { 2551 HNEs=set_list(HNEs,intvec(hnezaehler,zeile+zl+zl1-2), 2552 aneu[zaehler][zl1]); 2879 HNEakut[zeile+zl+zl1-2]=aneu[zaehler][zl1]; 2553 2880 } 2554 2881 //--- setze die hqs zusammen: HNEs[hnezaehler][1]=HNEs[..][1],aneu[..][1] ---- 2555 hilfvec=HNE s[hnezaehler][1],aneu[zaehler][1];2556 HNE s=set_list(HNEs,intvec(hnezaehler,1),hilfvec);2882 hilfvec=HNEakut[1],aneu[zaehler][1]; 2883 HNEakut[1]=hilfvec; 2557 2884 //----------- weil nicht geht: liste[1]=liste[1],aneu[zaehler][1] ------------ 2885 HNEs[hnezaehler]=HNEakut; 2558 2886 } // end(for zaehler) 2559 2887 } // endelse (R<>0) … … 2579 2907 static 2580 2908 proc constructHNEs (list HNEs,int hnezaehler,list aneu,list azeilen,int zeile,ideal deltais,int Q,int j) 2581 "NOTE: This procedure is only for internal use, it is called via HN 2582 " 2909 "NOTE: This procedure is only for internal use, it is called via HN" 2583 2910 { 2584 2911 int zaehler,zl; … … 2609 2936 /////////////////////////////////////////////////////////////////////////////// 2610 2937 2938 proc referencepoly (list newton) 2939 "USAGE: referencepoly(newton); 2940 newton is list of intvec(x,y) which represents points in the Newton 2941 diagram (e.g. output of the proc newtonpoly) 2942 RETURN: a polynomial which has newton as Newton diagram 2943 EXAMPLE: example referencepoly; shows an example 2944 " 2945 { 2946 poly f; 2947 for (int i=1; i<=size(newton); i++) { 2948 f=f+var(1)^newton[i][1]*var(2)^newton[i][2]; 2949 } 2950 return(f); 2951 } 2952 example 2953 { "EXAMPLE:"; echo = 2; 2954 ring exring=0,(x,y),ds; 2955 referencepoly(list(intvec(0,4),intvec(2,3),intvec(5,1),intvec(7,0))); 2956 } 2957 /////////////////////////////////////////////////////////////////////////////// 2958 2959 proc factorlist (list L) 2960 "USAGE: factorlist(L); L a list in the format of `factorize' 2961 RETURN: the nonconstant irreducible factors of 2962 L[1][1]^L[2][1] * L[1][2]^L[2][2] *...* L[1][size(L[1])]^... 2963 with multiplicities (same format as factorize) 2964 EXAMPLE: example factorlist; shows an example 2965 " 2966 { 2967 // eine Sortierung der Faktoren eruebrigt sich, weil keine zwei versch. 2968 // red.Fakt. einen gleichen irred. Fakt. haben koennen (I.3.27 Diplarb.) 2969 int i,gross; 2970 list faktoren,hilf; 2971 ideal hil1,hil2; 2972 intvec v,w; 2973 for (i=1; (L[1][i] == jet(L[1][i],0)) && (i<size(L[1])); i++) {;} 2974 if (L[1][i] != jet(L[1][i],0)) { 2975 hilf=factorize(L[1][i]); 2976 // Achtung!!! factorize(..,2) wirft entgegen der Beschreibung nicht nur 2977 // konstante Faktoren raus, sondern alle Einheiten in der LOKALISIERUNG nach 2978 // der Monomordnung!!! Im Beispiel unten verschwindet der Faktor x+y+1, wenn 2979 // man ds statt dp als Ordnung nimmt! 2980 hilf[2]=hilf[2]*L[2][i]; 2981 hil1=hilf[1]; 2982 gross=size(hil1); 2983 if (gross>1) { 2984 // faktoren=list(hilf[1][2..gross],hilf[2][2..gross]); 2985 // --> `? indexed object must have a name' 2986 v=hilf[2]; 2987 faktoren=list(ideal(hil1[2..gross]),intvec(v[2..gross])); 2988 } 2989 else { faktoren=hilf; } 2990 } 2991 else { 2992 faktoren=L; 2993 } 2994 2995 for (i++; i<=size(L[2]); i++) { 2996 //------------------------- linearer Term -- irreduzibel --------------------- 2997 if (L[1][i] == jet(L[1][i],1)) { 2998 if (L[1][i] != jet(L[1][i],0)) { // konst. Faktoren eliminieren 2999 hil1=faktoren[1]; 3000 hil1[size(hil1)+1]=L[1][i]; 3001 faktoren[1]=hil1; 3002 v=faktoren[2],L[2][i]; 3003 faktoren[2]=v; 3004 } 3005 } 3006 //----------------------- nichtlinearer Term -- faktorisiere ----------------- 3007 else { 3008 hilf=factorize(L[1][i]); 3009 hilf[2]=hilf[2]*L[2][i]; 3010 hil1=faktoren[1]; 3011 hil2=hilf[1]; 3012 gross=size(hil2); 3013 // hil2[1] ist konstant, wird weggelassen: 3014 hil1[(size(hil1)+1)..(size(hil1)+gross-1)]=hil2[2..gross]; 3015 // ideal+ideal does not work due to simplification; 3016 // ideal,ideal not allowed 3017 faktoren[1]=hil1; 3018 w=hilf[2]; 3019 v=faktoren[2],w[2..gross]; 3020 faktoren[2]=v; 3021 } 3022 } 3023 return(faktoren); 3024 } 3025 example 3026 { "EXAMPLE:"; echo = 2; 3027 ring exring=0,(x,y),ds; 3028 list L=ideal(x,(x-y)^2*(x+y+1),x+y),intvec(2,2,1); 3029 L; 3030 factorlist(L); 3031 } 3032 /////////////////////////////////////////////////////////////////////////////// 3033 2611 3034 proc extrafactor (poly leitf, int M, int N) 2612 3035 "USAGE: factors,flag=extrafactor(f,M,N); 2613 3036 list factors, int flag,M,N, poly f in x,y 2614 3037 ASSUME: basering is (0,a),(x,y),ds or ls 2615 Newton polygon of f is one side with height N, length M3038 Newton polygon of f is one side with height N, length M 2616 3039 RETURN: for some special f, factors is a list of the factors of 2617 3040 charPoly(f,M,N), same format as factorize … … 2621 3044 NOTE: This procedure is designed to make reddevelop able to compute some 2622 3045 special cases that need a ring extension in char 0. 2623 It becomes obsolete as soon as factorizeworks also in such rings.3046 It becomes obsolete as soon as `factorize' works also in such rings. 2624 3047 EXAMPLE: example extrafactor; shows an example 2625 3048 " -
Singular/LIB/primitiv.lib
ra3600c r81fb58d 1 // $Id: primitiv.lib,v 1. 7 1998-10-21 10:28:26 krueger Exp $1 // $Id: primitiv.lib,v 1.8 1999-04-14 12:11:53 Singular Exp $ 2 2 // author: Martin Lamm, email: lamm@mathematik.uni-kl.de 3 // last change: 11.3.98 4 /////////////////////////////////////////////////////////////////////////////// 5 version="$Id: primitiv.lib,v 1.7 1998-10-21 10:28:26 krueger Exp $"; 3 // last change: 19.03.99 4 /////////////////////////////////////////////////////////////////////////////// 5 // This library is for Singular 1.2 or newer 6 7 version="$Id: primitiv.lib,v 1.8 1999-04-14 12:11:53 Singular Exp $"; 6 8 info=" 7 9 LIBRARY: primitiv.lib PROCEDURES FOR FINDING A PRIMITIVE ELEMENT 8 10 9 primitive(ideal i); finds minimal polynomial for a primitive element 11 primitive(ideal i); find minimal polynomial for a primitive element 12 primitive_extra(i); find primitive element for two generators 10 13 splitring(f,R[,L]); define ring extension with name R and switch to it 11 14 randomLast(b); random transformation of the last variable … … 17 20 18 21 proc randomLast(int b) 19 "USAGE: randomLast 20 RETURN: ideal = maxideal(1) but the last variableexchanged by22 "USAGE: randomLast(b); b int 23 RETURN: ideal = maxideal(1), but the last variable is exchanged by 21 24 a sum of it with a linear random combination of the other 22 variables 25 variables. The coefficients are in the interval [-b,b]. 23 26 EXAMPLE: example randomLast; shows an example 24 27 " … … 41 44 42 45 proc primitive(ideal i) 43 "USAGE: primitive(i); i ideal of the following form:46 "USAGE: primitive(i); i ideal of the following form: 44 47 Let k be the ground field of your basering, a_1,...,a_n algebraic over k, 45 m_1(x 1), m_2(x_1,x_2),...,m_n(x_1,...,x_n) polynomials in k such that48 m_1(x_1), m_2(x_1,x_2),...,m_n(x_1,...,x_n) polynomials in k such that 46 49 m_j(a_1,...,a_(j-1),x_j) is minimal polynomial for a_j over k(a_1,...,a_(j-1)) 47 50 for all j=1,...,n. … … 53 56 j[2],...,j[n+1] polynomials in k[x_n] : j[i+1](b)=a_i for i=1,...,n 54 57 NOTE: the number of variables in the basering has to be exactly the number n 55 of given algebraic elements (and minimal polynomials) 58 of given algebraic elements (and minimal polynomials). 59 60 If k has few elements it can be that no one of the linear combinations 61 of a_1,...,a_n is a primitive element. In this case `primitive' 62 returns the zero ideal. If this occurs use primitive_extra instead. 56 63 EXAMPLE: example primitive; shows an example 57 64 " … … 63 70 ideal i=fetch(altring,i); 64 71 65 int k,schlecht ;72 int k,schlecht,Fehlversuche,maxtry; 66 73 int nva = nvars(basering); 74 int p=char(basering); 75 if (p==0) { 76 p=100000; 77 if (nva<3) { maxtry= 100000000; } 78 else { maxtry=2147483647; } 79 } 80 else { 81 if ((nva<4) || (p<60)) { 82 maxtry=p^(nva-1); } 83 else { 84 maxtry=2147483647; // int overflow(^) vermeiden 85 } 86 } 67 87 ideal jmap,j; 68 88 map phi; 69 89 option(redSB); 70 int Fehlversuche; 90 71 91 //-------- Mache so lange Random-Koord.wechsel, bis letztes Poly ------------- 72 92 //--------------- das Minpoly eines primitiven Elements ist : ---------------- 73 for (Fehlversuche=0; 1; Fehlversuche++) {93 for (Fehlversuche=0; Fehlversuche<maxtry; Fehlversuche++) { 74 94 schlecht=0; 75 if (Fehlversuche==0) { jmap=maxideal(1);} 95 if ((p<60) && (nva==2)) { // systematische Suche statt random 96 jmap=ideal(var(1),var(2)+Fehlversuche*var(1)); 97 } 76 98 else { 77 if (Fehlversuche<3) { jmap=randomLast(10);} 78 else { jmap=randomLast(100);} 99 if (Fehlversuche==0) { jmap=maxideal(1);} 100 else { 101 if (Fehlversuche<5) { jmap=randomLast(10);} 102 else { 103 if (Fehlversuche<20) { jmap=randomLast(100);} 104 else { jmap=randomLast(100000000);} 105 }} // groessere Werte machen keinen Sinn 79 106 } 80 107 phi=lexring,jmap; … … 100 127 ideal extra=maxideal(1);extra=phi(extra); 101 128 // sonst: "argument of a map must have a name" 102 erg=j[1] +chi(extra); // j[1] = Minimalpolynom129 erg=j[1],chi(extra); // j[1] = Minimalpolynom 103 130 setring altring; 104 131 return(fetch(lexring,erg)); 105 132 } 106 133 } 107 "The random coordinate change was bad!"; 108 } 134 dbprint("The random coordinate change was bad!"); 135 } 136 if (voice==2) { 137 "// ** Warning: No primitive element could be found."; 138 "// If the given ideal really describes the minimal polynomials of"; 139 "// a series of algebraic elements (cf. `help primitive;') then"; 140 "// try `primitive_extra'."; 141 } 142 setring altring; 143 return(ideal(0)); 109 144 } 110 145 example … … 126 161 /////////////////////////////////////////////////////////////////////////////// 127 162 163 proc primitive_extra(ideal i) 164 "USAGE: primitive_extra(i); ideal i=f,g; with the following properties: 165 Let k=Q or k=Z/pZ be the ground field of the basering, a,b algebraic over k, 166 x the name of the first ring variable, y the name of the second, then: 167 f is the minimal polynomial of a in k[x], g is a polynomial in k[x,y] s.t. 168 g(a,y) is the minimal polynomial of b in k(a)[y] 169 170 RETURN: ideal j in k[y] such that 171 j[1] is minimal polynomial over k for a primitive element c of k(a,b)=k(c) 172 j[2] is a polynomial s.t. j[2](c)=a 173 174 NOTE: - While `primitive' may fail for finite fields, this proc tries all 175 elements of k(a,b) and hence finds by assurance a primitive element. 176 In order to do this (try all elements) field extensions like Z/pZ(a) 177 are not allowed for the ground field k. 178 - primitive_extra assumes that g is monic as polynomial in (k[x])[y] 179 EXAMPLE: example primitive_extra; shows an example 180 " 181 { 182 def altring=basering; 183 int grad1,grad2=deg(i[1]),deg(jet(i[2],0,intvec(1,0))); 184 int countx,countz; 185 ring deglexring=char(altring),(x,y,z),dp; 186 map transfer=altring,x,z; 187 ideal i=transfer(i); 188 if (size(i)!=2) { 189 "//** Error -- either wrong number of given minimal polynomials"; 190 "//** or wrong choice of ring variables (must use the first two)"; 191 setring altring; 192 return(ideal(0)); 193 } 194 matrix mat; 195 ring lexring=char(altring),(x,y),lp; 196 ideal j; 197 ring deglex2ring=char(altring),(x,y),dp; 198 ideal j; 199 setring deglexring; 200 ideal j; 201 option(redSB); 202 poly g=z; 203 int found=0; 204 205 //---------------- Schleife zum Finden des primitiven Elements --------------- 206 //--- Schleife ist so angordnet, dass g in Charakteristik 0 linear bleibt ---- 207 while (found==0) { 208 j=eliminate(i+ideal(g-y),z); 209 setring deglex2ring; 210 j=std(imap(deglexring,j)); 211 setring lexring; 212 j=fglm(deglex2ring,j); 213 if (size(j)==2) { 214 if (deg(j[1])==grad1*grad2) { 215 j[2]=j[2]/leadcoef(j[2]); // Normierung 216 if (lead(j[2])==x) { // Alles ok 217 found=1; 218 } 219 } 220 } 221 setring deglexring; 222 if (found==0) { 223 //------------------ waehle ein neues Polynom g ------------------------------ 224 dbprint("Still searching for primitive element..."); 225 countx=0; 226 countz=0; 227 while (found==0) { 228 countx++; 229 if (countx>=grad1) { 230 countx=0; 231 countz++; 232 if (countz>=grad2) { 233 "//** Error: No primitive element found!! This should NEVER happen!"; 234 setring altring; 235 return(ideal(0)); 236 } 237 } 238 g = g +x^countx *z^countz; 239 mat=coeffs(g,z); 240 if (size(mat)>countz) { 241 mat=coeffs(mat[countz+1,1],x); 242 if (size(mat)>countx) { 243 if (mat[countx+1,1] != 0) { 244 found=1; // d.h. hier: neues g gefunden 245 }}} 246 } 247 found=0; 248 } 249 } 250 //------------------- primitives Element gefunden; Rueckgabe ----------------- 251 setring lexring; 252 j[2]=x-j[2]; 253 setring altring; 254 map transfer=lexring,var(1),var(2); 255 return(transfer(j)); 256 } 257 example 258 { "EXAMPLE:"; echo = 2; 259 ring exring=3,(x,y),dp; 260 ideal i=x2+1,y3+y2-1; 261 primitive_extra(i); 262 ring extension=(3,y),x,dp; 263 minpoly=y6-y5+y4-y3-y-1; 264 number a=y5+y4+y2+y+1; 265 a^2; 266 factorize(x2+1); 267 factorize(x3+x2-1); 268 } 269 /////////////////////////////////////////////////////////////////////////////// 270 128 271 proc splitring 129 272 "USAGE: splitring(f,R[,L]); f poly, univariate, irreducible(!), R string, 130 273 L list of polys and/or ideals (optional) 131 ACTION: defines a ring with name R, in which f is reducible, and changes to it274 CREATE: defines a ring with name R, in which f is reducible, and changes to it 132 275 If the old ring has no parameter, the name 'a' is chosen for the 133 276 parameter of R (if a is no variable; if it is, the proc takes 'b', … … 221 364 ideal maxid=nach_splt1_2(mipol),nach_splt1_3(f); 222 365 ideal primit=primitive(maxid); 223 "new minimal polynomial:",primit[1]; 366 if (size(primit)==0) { // Suche mit 1. Proc erfolglos 367 primit=primitive_extra(maxid); 368 } 224 369 //-- erzeuge einen String, der das Minimalpolynom des neuen Rings enthaelt: -- 225 370 setring splt2; 226 371 map nach_splt2=splt1,0,var(1); // x->0, y->a 227 372 minp=string(nach_splt2(primit)[1]); 373 "// new minimal polynomial:",minp; 228 374 //--------------------- definiere den neuen Ring: ---------------------------- 229 375 execute("ring "+@R+" = ("+charakt+","+algname+"),("+varnames+"),(" … … 252 398 } 253 399 if (defined(altrname)) { 254 if(system("with","Namespaces")) { kill Top::`altrname`; } 400 if(system("with","Namespaces")) 401 { kill Top::`altrname`; kill Top::splt_temp; } 255 402 execute("kill "+altrname+";"); 256 403 execute("def "+altrname+" = splt_temp;"); 257 404 @R=altrname; 258 405 execute("export "+altrname+";"); 259 if(system("with","Namespaces")) { kill Top::splt_temp; }260 406 kill splt_temp; 261 407 } -
Tst/Long/hnoether_l.res.gz.uu
ra3600c r81fb58d 1 begin 644 hnoether_l.res.gz 2 M'XL("(>9-#8``VAN;V5T:&5R7VPN<F5S`.P]:V\C-Y+?_2LX^1+);'J:;[:# 3 M&2"WN;T=X#!8)`L<[H),T);;4L.RI--CIGMPR&^_*O:[U;+EL3QQ-NLD+3;) 4 M)NO%8K%89'[ZQP_OWA-"^%OR^C7Y:SI/+LELL4RVLV3]Z_QBN]F>_516$1=8 5 MY=UBFRPVZ<>$;)/-=D-NENOZ`S)/K^KJ\H+\Y[M_(]]`$Q>0_\UW=8EZ2R#S 6 MUW21;D?C[\[PE[PM\C;;>+O;7"QW3;?Z;=%.U4FO,>,!9ZT_#QA9WI#KY&,R 7 M7ZXN.Z7E7_V]O2#K=#$EGW>W\R1=O`F#++A>->V[MU4[HTQ0D4F`F/RT7*_S 8 M"_*.+)+DFFP_+<G'>)W&5_-D0](%`3!]HQ=G/_-?+L^@E5]_Y@'_Y4UV]K,H 9 M,L*SGV618OSL9U5E5KU&;PNHU@#/*`OR<7"]J6'B80\F*FF.8/T#^IT":Q9D 10 MM9SGB^5=&L])NB$QV2&-XPWD?P(V;9)UFFQ>O>J#EQ\)'N<-`"%T_-_+'9G% 11 M'ZO.[Q)/@<_)>LE:@'QY=Z*#;RZZN/Z]@^LZN=Y-4N#$$_J3W?Z*'N-1&(@Q 12 M>>,_Z38<5FGQRQLL%4W;LNZP[`5;8R(3.<U4W:%J.H0B*K.<JBR7#*I!SXCJ 13 MW][_.V*70?_A?=TW$M9T/H0BC"ID#5G]RJ')7-!,-O)EZD(!A5#E@R"49#IO 14 MJMBZBO151%'E`P_).7S05'1U1>4KRK*B\!5%4S&J*VI?4945E:_80"=`^E?Q 15 M.KX;522#9L9`IAG((GS)@5.\YM1LQ#$E(%/4F9B6/BW.0'F<GY/_BM<+&&^7 16 M(#Z;W7R+I$ZR>+(ENQ79+LER?0W#1N/8SDB\N"86DSF(&)`=>)XI)C,-/+.0 17 M@5PP5&>6FLPQE47,9;RFO("QDRZVY/.;;7J7K!NTQ#Y:ZG%HS4:BRI2M3%EE 18 MJA8!5$D`\Q@"<-M00.@>";AA2F7<,B?@QS&G%.`=,1U*8S,1,FZLDU$F.!,F 19 MM,9E0C!N5035A&0\-%J$4!%(R:7D.LR$ICQ22F-50Z6,+%>0:YE0$;<VU)EP 20 ME(?*"2,@'5'AI`NU<)D,F17"1LZH3'(JI(DD-Y')I&#:**,5P"@E,]"[YM!O 21 M)A7E-C)&1`+@D9I)A%9'(=0S3(M(N[+(4F6U,59H#K.!HS**`!MK.+0>,:-E 22 M*)4-0Y>ID`H.)4Y(:3+%2]$0BAI3X&:$1TQICQ:T!%11B)3D7$G+$2=NX"_2 23 MT%5(=:0`!ALB3EQJ``D``9R@'\F5,4`1*0$\SH7C``$B!7AHQ96%!J!+8:TU 24 M0F%SA@D!!4)'1B)6TDGH$U`)$2L>`0A`YC#T:,G0*N<`:64!+Z:@T"GH57-` 25 MC$)-H0%+%_(P4\A59ZU4D=2(N`1^1\`,$X8`;Z84M=)!2PXP`<25!LD(.9`Q 26 M@B:Q@J%0$&F`1$I@IK+4<F>YT"$7420RY1B@I9V2`*25P`85,2C6D9,`AW)A 27 MID.J%!?*TS9",#0'28R@`P`=.`ZRH`53UD4VXDX#*B"\6@*%N`.&149KW[)6 28 M3#@4*RX`:`1':^9`GD`:0`042IM&@#605@'_C`JA>PLX1<(8X)A2%KMW]4"7 29 MI?DS72S7R<AK`?8Y^`83W\!XA_'8%%]B+KF\!$-CM;S;36XO[F*86^&1WE[` 30 MI,YNYQ?7R:6)ZM9A*ME3+:#LYRG81+-%\J:E70+>F_5!V;TZ,J&E1Q#@(K 31 M:3M*LFV%%J`8J#%H)#]C-UH.TZI0^=$9VG@D]/]"FO'R]?XT,P%K=>Y.CYJS 32 M=>O1/A=E6*';9F&%ZW//$J>FG^2GIQ\,T;IY45H34"MYD^6.PK^9R@W,T1*> 33 M,+!S#?.SR17DN%Q2F*+!"H+9.D>+FG.PSWACG4@8M.W1@\T^D>K<)SU]3=V- 34 MJG@,G16,+6E=T;/URP-B2/VE+E<,/[Z1(@QEM6IH5C*RL>KTF_0N7HW6`23' 35 M304[('1N7^@TZHWGD[K92%69NLX\3(6!W[RA2G1Z*4.57[6O8$S>IO,Y:2BF 36 M>+UT:S-BWBS?E&@QXB;93F:C'[N<4'*?$TK]H3FA]#-P0CI=MV\J3@0_-C2S 37 M-2^$YT.P[2RD5;4XN7F#*R`+8SZBF6O*H[Y-?H,6>64LOR+UPO<ZN4D7Z`I8 38 M+LE=O,@;?\"K,_(]@-7X!Y)LDJRV?H5\DZYA5D;WP2<$_2HA!?[7K_QJ4Q4< 39 M+5FK&M;R+URU<-ZQV;>B,$FWCFYKQ:SW15HW(FWW]8H6-1'%^2B'A9`=?^"J 40 M*6^MIF]0J>9<E<MIB\C("D%;R2M_UM6]5AUX;`'.(=?)\J;@U')]1Z8?;(!O 41 MZP1>DP:6B[._SY-XDY#M.B?Q-$X7>XZ?HX'3^]0W-?6!9.DX&,7!59<#ML$H 42 M%C2]D@<4PNM1.FY[$V[0]9;L4;+M3XBKM*SS1:N.*%P>ON$R0^)'M1,B$/>Y 43 M(73+NQ9KFHKS6%&1GL?BBEYUG"XC!CV4.(F.DGL</KZ=!J7X($J#Z(@6.N$` 44 M.M$>]TS8<,]Z[O7'CVDYTS+OQ]OL)C,8R-[/NEQX&?R?URL2@\PMEC#*[U9S 45 M,#\6V^3Z@K0D;[3Z<!O$8W3S3=?+'8SWFS297W^Q+!JQCXU\$!L877?I`@?1 46 MFU30QA%D=`O-%X2DV4>RF35&*@IN`<MI,!L'/[2P;,GM5-*9Z@\X^47".=T? 47 M;#Q0AP=>V!+21F(5-M0,0'G?`#11@\AH"I;O;/S!TEG4'GJWKAEXM88NK8B6 48 M$7O+S7VX02L-<M,#"$U;")7YLE5'MNK(5AW5JJ-:A%%8Q\-5CU^`*QCTRT*U 49 M\ZF,Z*V#'S-C4ZGIK0KA1<X$O(D9+:J$,TFGDA>%(IH)>BL%I-R,3KF;V:*` 50 MZYGS;7$ULVS*Q:QHFG/(GT8S'A:?\1"+'99BZ[;ZBE/(+/.*FAI[PG<U\U4$ 51 MP.$+`+Q9Q4^[/WO;9O9>)_%\?\C:MGN=50[G>#Y=KM/M[(Y<+Y/-XMLM^;1< 52 MWX*ALIV1;[&A;W$,3I;)S4TZ26&@/G$@6KD/N6H&(N<!3'O!!`;C=9`$-QV+ 53 MVK9T2WPM*$P?,I%47$U4HKZ2P?;,^BPYEHS[^LR"/JO3[N+@=AF@<<R.F8TN 54 MR";9MC?-ZJX<SG9U,U[/D^]Q\\E3<YNTC2O?P%U\"Q1>+*'%Q0:-NN1NM<V] 55 MMZINLV-]]FT?)SH]QH9>>8[_918OI@FB=17C=A=\OT@FR683K_-7K\X*9>Q5 56 M\PU2?3^#D-]^^ZTTK"^)(.1J'2]@J99LQ@1XC4W=[.9@]DZ6=ZL=L!7KUURK 57 M?GNZL+U/T[S*=JGH5O9J<12/6QFR_+H2B-+,PAQ9Y_@6*NDHI$8\"VCL%+!5 58 MS*QT`+`!618T0NS4_HYH2PIT5^X,RU$*_EA<+F;PE\CD$P!6,0K44Z4\6LRU 59 M7;XW!:[#UY*QL,HT+/.;8P]S^+$RH'Y7&7BQ(G`2X90O@F1\'S#U,DBV#UDU 60 M#J+VL!D<*E%WZAWE+,--?1PLD&*0>@D*D7<)V'Y5^Q22IQ/V7L?LR3U79.=# 61 M"BT2!Q1:)'L*S3*1*70^YHKQ7`.[($OY+%7E`>.006#++!=)R9"278?R6WS] 62 M@N)3:T3>Y043/6JSA\B=PW))9WD$-!&Y8[C#GUL6.;^C8^!I&=?*[^G($'X, 63 MPT@!W-R!7)-K9DUF<XF%%H@JX*F9D)G+!8,\W/_!%XSBB'*FBUT@*>!'8CD/ 64 M<ZJ=WR%B)H.UF?([1#X-%3G/N&!<H&\3\W`S2=TCFJI'#OY:?0E!I*>(5IXF 65 M5$4%5:C`;?J&,``=YV%!&ZX-$J>H4M"'6_@,*(1!#5P65.*A-BU"4:6=U0*) 66 M1:7#[6V@%Q,6"89!#"9T0"CJ1*0\X1CGGG(T<A(Z!JHQ(&6QO19QC:2C&/[1 67 MIJ!P(=(0(T:`AE%#Q&>9,L2`8B9=9P.I_0V\]3JLQ8^9^IYEAAF:8)X7CTJ- 68 MJ4&MIP]I/=.;F_Q\=%[\[EMR#VBL^S7?2[+H7X0UUW@0CX6S7:JJN;(#-],/ 69 MZ2?JM]$[48Z1'10:=TAHH@&A06%!N0'+AA9R\]B9\?>2CR/8T#<83\`'AL&F 70 MH*U!4WMN&'@(/XM*AM.#?R"G,##"@*7H_J@2UV#JHVN9QY3U,84RPRI,"T'C 71 M83@@ESSDPW+)PZ['"6PXP?+Q!Q!)M-XP?K=^?91:^QV$M6<49X^2SKXV.VH: 72 M/%:VQ->&K&*N')0%=4@6>GXGL&1H+N_93BXC\<LS`NUH?._=&O!_\G#(9<+# 73 M`RX3'G9=)N$]P&"`_F"/T2$W'.=A9V]L8`>0X^&`O@_8?X);Z?DJJ5W>/;?X 74 M`"!\;P>2\X=V(#D&T]?1CFU`),T-`H.!$]__^/[=^_^X).^7N-&1P+!*)XWW 75 MOMCU3[LN>:38:KG9X([_JZ*5PH6_75:;#\5'#9$#<K4#'(L0`G]4!$_+Q(NF 76 M)]_.<C+9K3?D>N<1P[J3>#[9S>,MU`C()WQ?(+56Z^4$6_&;,%#/?SU9KD%! 77 MK):+:_RZ4!`@3A<7%T]WALDC-4Y%>NVCY+X[7@.Q(174'KJ]@3O@NSE6I<@G 78 M]W3L6H0-::]'=571$X;^=;I9S>,<.(0Q@46DU-_BNZO=>IJLV?ORX%4I@#B2 79 M_)Y',8DLUA?\$BVA(D*??09U\$'X#`0SIYAQ]L@61:M%*L]/TJ9L0RD.M5E1 80 M9<B.Y/R`'<EYSX[$$SUH1&;X\^?2!P_MBA5(?/LQ(;/X&JI<D_EN<ON*5%$, 81 M9;<X].?)-@$M<-7`AIN@#Z@3?FH#)NP.M)X)VE$N>G\<JF/'H1BT$,4A"U&( 82 MOE7@=Z/^)6BG$[2N7(5'RM6^A2'JJ(-@CXNMZ(,P2"I+8]Y8&J)O_;'B:.*? 83 MA\]??S^AYTK><ZD\80G"GMQV)1?FD&(8G+F$ZXM1\F>3HS^.OH@.Z@O96AH5 84 MD?]#JQ,\]S(4'\GE\*3QN^_8M6-/GMM$[P23/,UTQ@,[-8?`&"5D,HO7\60+ 85 MPK79PAB"Q0TRJ2CC19@_B,X:6[F$=7I14+**E'^7!`.L^;@H7.SNKN`#$-J/ 86 M,0P+('Z1[_^NYLO)K6_ZL@C$1]&8;UHUFK]+LH#.-YC,2$X&6A'M5OY2(ZD. 87 M2Z,^2AI-1QK3MCS:%RJ/C(<JBF+*0ZO%5Y3-HEMVFFXK(H/JKQ3>R<4T?D&" 88 M>EAMJD9M#H:G<C7@3_H)/@#5OJX4_PU0;+E./\,,\A$0;>)3V_/B@#I7^PXF 89 MU7(P]8-.@VD7L@.>IEA<70MZ-4DDC<5$=D)0@6<8.+KKQY,VX:88,5I'E?Z) 90 M;(#C?.#'+B$K%CW:(_6470V8O\3X]6C2BXCL[6Y`+0.UKL9]^W)_DZ.O.$97 91 MD_%Y3D<H5I`0=,1$K"9B?(Z;.Z/80'&]X<;5GONH."O8N&_0KW+^>01ZHO&U 92 M`'@?"BQ\R0?A<PJ(BYRF`_NP^N*\*)#[NNN*3`[IK_"%*"[E#BNNZ)"B&`<_ 93 MU+'I7'?CL@9UP[\&^3/[B?Z)!K7F!R423V*V);(P^(+/X^#3"@_,!7+<U)6- 94 MY0>V@FH*#FV?@$'AM[:^<"9[U$[G([6\/IV6'Y0`^?@8]X,FG_XRI2S/XTH? 95 MURT]0OL^SG)4+\5NU(?5KXZ.%W83]M<R3Q+E/Y&^?I91^US')UY_P3F9@^/4 96 M\(.;X'@P]O7KWO$H/'F/WJ=-0=M)X=`"SGJ6-.RJVI#EO8-_%>7=!)VE!1ZC 97 M;4EL^W:">V*>?M?=EJ'-EO+5/"T<J/VJNZ^F_+:]JQ,P^X"G-J=XX0O^)WPH 98 M&3X4D%?#?P8H77/AH4M5N#GDZC6VM^MH*`;B@_&,\6LT&XS&/_6IM6.W[P]+ 99 MP--]XH<=+$--'SO83W,B[N"&_I-`.^&).(X'S:L=@Q\;X8H.2!T>_RWOXL"K 100 M]_`>/BHS;JG+N,D9QTOZ>)AQG6,91OX9_*&8)S%RVV#\M:#"8+RV9#J+,"@^ 101 M]*'>13"X,#Z@GILRQ%Q@['WN&A"Z[IJ;(PYC/C:$\VDAGR<_X+7OM1Z!Q1'R 102 MF+DP#/L+`M;?==X/9'1TY&)JO/UO836@1$PY+@>0XB,5HA,23$0?MB_./5=& 103 M+H0Z"G.15>@DC9F&MZAX4RIF`E2/9RL="2@56)ES?-4F9LKA*S(?2ZEO"F6" 104 M<G..,L+4>2$Q`$\88R%H2X33?V=\FGDH.<+L?!5'00P?X6/=(R1[,B59FY1= 105 M2K)A4K(>+3ND[%.2]4C)>K1D#Q"S14O6)B9K4[-#S&.CD!X5W-D[$;%W0D<$ 106 M#U(;L!?GQ80*&@62VC^MCRD^]OC#0:`?'U/<?E7MIHXX',%DZ[WJN$,.>01! 107 MJ#S/_$/XIT1+`Q,*+(U:78HA!6_E(04/=B'H=A%A?+,#*<5[0SE>(PK:':]) 108 M!?G+A/;ASRA?7/J;1D&_PRO%RT51S6N\914O"(4W)AQ\CK'2^"7*L%;X3F7D 109 MWP4DX&L4=NB-XWP@\/Y2/`OE5(@YDDF<0'"PV,@GH"Z7>!DLGA"2?O*!*4-; 110 MC2GL&OH&F=?^<!6.12&$3VFJG<.A@E?T<9Q;A##^4)!A@OO30H"OB?QY(DL5 111 M3E".15S#4,6[=FT>4:GQ:%/$`!2%YZ202#GG,$LU%_IQJX?='%]SOGJ64W@5 112 M?B<-'?1>8:K&960>OA4JN<B0M:<B>VI((3J\FFY\+^I$O<AV+V4/Q4_7VY)1 113 M47I:6)F0C^U*'=U5Z6(O?J!0%(6@@S#M2T11(HL2A242W4`UJVW-ZG<+[[)8 114 M;#<EQ_$B#Y+6N6TH"]\.>F_P<H^^ZRC)5B"0^`EZD<[(:I=NDEU&5G&ZWI#V 115 MWR4Y`T),UTE2798V62ZN=[@A1PI7/A3/MW$#1N=C*)XFBV0=0WT/WR:Y2]%K 116 MLB)EUYOD?W?)8N*;OX.QD*[FZ23=ILD&BQ]&4?SSHRB/01$6S_<CZ6]YO!]3 117 M=3^FXGY,/03WX0KS>'`,ONH8?%T@PD!`D_((M-&'"$\A'R0!6(;W$\$^P&\/ 118 MEQ*!>X`8+G"!@G]:1&G[F](%H+U))NCBZWU+^A?XD+.SDH#_AS`J#ZDL3!E\ 119 MG)7UZ/ZM/UC,B?^.F\!_[9^%Q2BZ)6=ENYBGZD6L'5S$VD.+V/XE0F`+@.&D 120 M&)YAEA2/*..YK@@OZ.4O;G6IG[RZ["Z"ONRX/"QN#*X9T.I2:'_Z1:#/DG@P 121 M^]R?A5/X@ZM!S/<K$%XF\40V+HJHP2<N4S`?5B)%!0OVY3G^OPUPA83K*,R, 122 M\`KE>]9ZO67R%R/&]C`[B!BK,3N(&*LP8X.HM3%[EH77OK>HVFUZY.I+($KE 123 MYN'_MW>LO7$CM^_^%<JA0-:6Y&B>DG)U@/O0^W0%"C0?6A1)L'$VR<:/3;V; 124 M9/>*_O>2G*=>J[6M)$YQ-FR-I-$\2`[)F>&09N>0*3,=<UV#R0<O3FBU<P:* 125 M]YRFP90+809?*S^W5P0@A2M"\%K[_!H72/$49=&"&6:K7-T5P;#."6KWGOD= 126 MM/P'#;P?U#I`Z\)L`&0#$.L%6!M>77"IVVR-[%F('=S7J%C,C`<X<-,6%291 127 M.;I-K\AANB;F*U.SP`$3N@?'@Q^>"Z=D:-VA,?S%P/#'W<P?EP%\,X]DPT#N 128 MP+B'6]P2R`^%7QPJE'H6J7D'!N/]9X596Z;.UR@E!:Z[4`>A?<**V=+(5XT] 129 ML/U"1S2TPDK$I$U'5,I9@0F-19FU:LZ-T`4)7Q>TS$I/%14-=\H)?%QPS7E5 130 M4,KQ(U<APW/_5#A#'8%+NP`[L\4S$10$W`&AJF1<@-$@;%6`+FH^4V;PF*>` 131 M+>PZTT;GH(5O`P)F]`A6>7"QRJSZ`M[X+<1BSY+X7?$VC+:\B[>\%W%[\-:+ 132 MM@;6\GUHR\?PEC<0UX.WO(&X7KP-HZV#M3ZD.>DH#I"@S?W[41%Z8ET;'F9A 133 M_Z"DK?[#:>97<_[SS1PF)E]?0>$GM!]A=11IY:?03D?A=A:7*N5TE));":H* 134 M(T%Q*!,G84Z(\M)(42R'V%;AY&A%,[P<2T.^K,Q$;Y?2^@$66'F6!*,<RZF= 135 M0*AW>85<"T0L>PBNNZ938!I(Z."@BX(A#`PB8`C^O>!O0[\'^(?.AZ;1;_(= 136 MHSU>`Q@F4I*4C*<UP^XSHMS*])RQ'#4WHQ()+4VW&48WE-A3?*X*T\$:Z9)A 137 M"I]656$Z6J><*Q*/J-L5A1.6=<IJ*R"K5)$HI(6/PHG(,A5%(2A)XIOIRLK& 138 MTJOJN)L&U2HC($GKDL+)S9+$FD+C#EUK2NJ\U"04$0)<%U94XAX=5674.6WE 139 M)(A87RONFJ.H1.6ID%9NDAO!XL1L"X;.D>Y`(A4)T?32ZGT$]`((A]&5AQZ; 140 MW4>"("^BM2S.:*?<@).;_7=AD,>!J!"VG%N%S3T6V',N#)9H-Q2I7SI<<;G+ 141 M$=G<[,Y3!SF0.1:E/6F@!G&"6Z];7AW]2W]37<[0:+Z72/MH=(!$\WX:S?N) 142 M-!^ETB$B;=+H`(D>3J'Y((GF,8WF?42:#U%I/DZF/50Z1*01C39(M)="#R#0 143 MO(]"\PZ)YGTTZM32EH?&$"N+57J/4:NQ:;W"J$<;T#U))22UTYBY^C)<,.U? 144 MQ5F/L21Z\^[;<Y^A7S_HS`Y]0IH`SW"5.4HBM-*T?EK&SH@_\/?7BR]H;;^\ 145 MFE]&!MY/$R`5=%N7LM$2\+0[:-IO5E>@6:]NWBRO,:2"M33^,E_CP?@]]3`. 146 MK(.E.+PQ'F*9VIHY53Z%)_6O\J`YVZAO9P:!CK.OYA^3YS]3T.6EI\4Z6$H> 147 M0'[A,_:,+/!GRS,&1?[Y;+W\?6'VVI-EFAXG__$Y^6F2/#]SB,Q,'#D\[K%\ 148 M$94G,1=9G;@G^C3Y[U'1^76ORXGM.N8O@2;F+VOXJ^"OA#^%)P#I^#`97DQK 149 MW&&J:U0U236B74V!O8+BJ]Q4I7-3G82T2*?LH>ST,,?Z7=VYK1OJE+FK>YJ: 150 M5<M$ASHL0!6>HG#=+IQ`2IC#+J51EQ"+^3R?IE-EIUX6@5(Y]$U25]6M*XT[ 151 MFMJ..KHQ(V.BCM:]':U;G=T'6,<4JLZ9,O$B8X8S>%&RQ$`[7Y+'-B<^>XRV 152 M#9OY\IK>OUF`R'@,)3RV,=UO/Y!>Q<USK7,;_5'%CMWQHNBW`N!%M$_UJPB/ 153 M6]Y7B7=+].SX@%6'<='_C43I)`K&%&H(J"`U.B6^N_)Q-[5@C]E%/@?"!IJ& 154 M,6Z&7,_JSD0G7V9S$+<BG:22P25"J"3NDG$'<M_:!M?"J$O`*D$<X,GV*7HV 155 MN/3C>T:8NG]%@_-WH(DF#"?H57GP8D'=I,C[N[JI[EIUL]]WJ[R^:^7Y_2MW 156 MLD/TBY0![\Z\Y=VY(VNTES42A`V#)TP?(FZ^&^<>Y,D:!&6.XA+ZD!_"CN\K 157 M$:>2(2DV'>>P![;[V\N5[CIU/<V`NH53M7H*[G$+2X-ZDE%[\,9+ZUSR;!_S 158 M.B#64T]+#MV%:+<DDHAM:7^WAARZU+S_J/9>87TG1[D'B[71ACG)3LB;H&&' 159 M"KV1AN61SM%&Y=T:=JA`'&]8`Y<M>K^'VV->#!QNYQA\H!5%-L^3U\MW,.UM 160 M^4'8+(&!OUO[+ZO3X3">'`,/T*+<QU<L.4OH;+Y_R0K_DL-+R/*2)VFR5;N0 161 MA?DL@K)PDP7FL,D)?!`R<I]14D9A,W+*R$-&X3,JRBAM1DD9H]:!$O'[&?1V 162 M<1.>#9PQ@Y9@)?@]_+6\*MXK^-&WL9MTW0/RV*PWKXQ?E!GU/?\]^PD3/YFU 163 MA_#Z*3Y-GCX%+>#CZNK3^<7IU7SS?@'_EA>GGZZ7^<7EZ9O%4\&Y+[YL%']Q 164 MM;A:W>QFQ]E/)F6K,#?)IS4T[O4NF9]OEI\7D>>6&5#PZO5NLSA^VFJ1_7*T 165 M34SKTC>J`GH``M[811;CNZ?(MEE29$4&J9S!33?%T2N%*Z2."Y'-0I+PK4_F 166 M\+5P7Z,S\J][W(MG8R=FQD_)\/UG9-C802$Q=E!HNI-?.N,RXU4FBDR,'`.C 167 MCL]*.B]$IX8$&X6$J$;."[%Z[(`8M5!!GPM(L1'00.Z>DT/W/SY690Q*DQD; 168 M.T76@M%^Z%0C)\KDR)$R:A77F1J!RNT`<M#Y,IGIK#P4%B-GRO1^*%3[@8`M 169 M&2.+AW2.3.!I,4YGQE1\C@SI.TF(PA-_CDP%SM<7:Y7S@5BK''W[MT4R'_!N 170 M!^)]<K]*KDHUO9A4.H**?B!R4DCA54?T=!]$'&N*."??]E]9**SZVA)/\$Q6 171 MF=*9+C+-,WV(_.N(@9D^X/"H9B.2L2KT_L%NVLH*&-#`^B0,HVJ,^<$G(!6Z 172 M@L'!MQZ`K\':'Y#K0,X"3@QM7J&7_]8$*=DLUK3_M]AN+-=I<U?#*%T1_+2' 173 MV:%;>\^_8M_L@E;P%`P<P-C[67$,LQ5V-$=/B)C,0YN!`X8F()8S##;AIJ'Q 174 M'#1>Y(ZM6(/IM9M5@HK*_`I1,)G=ZER08S69"@K'2)$9[3JC;Y#J-`BG1-AT 175 M:9L^WK@P-8Y=Q?0W.O%6M_Z%G*XWNM,;5K2Z@VE-:4'IRCPOZ(85YDUUCUXS 176 M[R8/TSI*EU&ZBM)UE&;%W<!G;U3T0CM7.GA31B\J_,+?U7&%!7Y3C2&#%07Z 177 MM$EKO/!4E>BC)E5%N645F@/2*0\A2O)X5A7&RYE";V=Y5:))8EJB6YF\I+#> 178 M*?JH*5)R=,9SR?#L;TWFRXRC+;,@VV>%V-^#^K+M3)ZC?_^^<(F7ZY"E[AG1 179 M.*27.W'\LDRW3/6.Z"47\)1ADD."F\0<&*R@U_[X/4</^RV2K(@BA:'"94WI 180 MVI2JOQ/==4@-.QAH;1O16C%`:L4`I?70F8AJ$WZ5+0Z-'7M^PK2*TCI*EU&Z 181 MBM*A+AG5):.Z)-:%>+)W,GJCHC34!BBR-V7THHK2-0),1Z,&!57OR%F6)SOR 182 M1+6L3[:U)Q+6(5[)AX486;/URJ^&$)-BWW(?QD\P9G%>DF'\5$Y[:",15.?K 183 M1O341X^.?KE.%C<WH"V\AW?D$!?T>XRT:@O/DO4*]0KTY(N6,"BT3XVA2V'L 184 M5L*(49V&D7G@D&AU88B@7+-4]\@:T&R%LXCQRUKHE+]9-BUSWJ%L[LKV4P'T 185 MQ]\&*%I84.GS6>$+!;2B]V'G_=C,;+"*Q184O03TI<W*N&.&F1F`<)NT:]WZ 186 M.JM>6%G+F]XNW:)V86J?7[\Q#=DE^T!;MYLRVV),:(K&[&$@',NDELFX94\J 187 MNE-&`C]AO+I-6^O05M5H:\6><%U)H22Y6$MY^42R&F9+Y)\3[D`EK50)P@F= 188 MI#W12@GTPPGM42!^:KAR^%#;_E*[M@I;&[J.409:5)5NI\"\[\2V`V[T1-\" 189 M]PX$HP%WV0]N<5O:+C%BMZ^1=V?TZ,A^J!4[U=^*LH%TP6\#E2I@F;5($HOR 190 M+8<;P'A=BDJ@`SO$%].BDE%OY/0+`R5CE2]?=5@Z.I]W^@@OLP^@CUQDE]DF 191 M#FO(T:]\5R.Y$/F'R^.7.KTL054(OM,?)?]<?0*>^WD!C!:P"#QWLUHE5_/K 192 M75A=>'24_`(-":L-B^WYXF/;W?H7;.SKR-&ZQ]P'KGHHB`4%:#[C-B<S-]I] 193 MAC>UNW$]]#S+VT\?BGZ#\PO#D22F+QW^/W!YLF%U:JY5^H$QN&I[5?8J[)7; 194 M?(6YVL]*<[%C_0.K(0TE:+@(NJC27"1=)-8">41MK]I>"W.-B*$>%N;!='3O 195 MC%07IUW3\[^O;FYV\%4[FC=9R2.IK=MQOS/T*V_%KBNYJWSH$,M"]!&I[IL( 196 M`Y&FWXU&<W8@B;)`H#D+]!FFZ.C\O0-H9RE\::(X"^-/4#3]"5Z,^1,4.5VT 197 MN7CM#QV=C\8A&X@)(49C0GP<BPEQ`8-H<W!4"*X[OBTGL'7NA>NK8:B^&H7I 198 M`>$YAF"J[Q]G`[N18(,3;-8H<.^!)-&/I*IK]9U%XSN$[^B9&91%`\,A]AN@ 199 M.5(:MC!LBA`YI1TPW!7&>@O;M0K;-0K;M6WM76&\MS#V'>8LKD5BE+.'5=TF 200 M@_=%R-.!@WE.E:=PZ9Q,[>A&I;NRUUG%_2P0#@U8X-JM[KYPK4;W[DJ8"(QL 201 M<H]L7K*1S4MJP[[E9]5<;XZ<^K;ZRT?[^X-LZKN>?G6?MC\4_B<R=?A!:&`B 202 M@X4'[](WYMCWV(4?V7^/=]Z3$O?<F8SVW-'LU`VZ:F`[J^Q.'N[[XXJN8%(1 203 MBO:"*R`_BP"=-<"4)3T_<=&L4;3[66]NEA^AAYFC#AY7T`1]!M/M+YN5"9$6 204 M%\U/_='XT%32\C#"5DR[;V]65R!<7X-L-><!3^'FZ"__^.6O?_OM+T^/7'@H 205 MO#0TH>[LAD*P4*PBC:&*AE;7&A,.'LTRS"R%VY(7-^_.EAW6"D]!=O[<`UA< 206 MC7B_&!QP1]8:!@O@+S*\B&8YMH#FD`15Y^/\_,+,%Z^.1%:B#VA3C'R1/$EX 207 MNRVV&!J<N>_`466^4?O:/CPDC]S&;A])A4*>KYQ0HO(B+)-KA,?7R_/%Y>XQ 208 M8'50=OT?&A2Y,2&>^3$1R@YC(JIO;$STS0R2$-A(Y9QMF4PI4$2NX;\-7)1B 209 M$`F&NW9PAZ_9+A<4RHBG'%VNB13_\X!F_!"]@'!T*RUS=,Z&Y:J=2M%=FS:A 210 MC9+N8'S;._SZ1A][(IO[<V9,5F&O#M>9DP@^EE8BTS8/8]EG`54-V!G/S`KP 211 M2=B]^%K1VUU#0#^-.;15Q3.OH?JUSZH,Q.(8<B`5]^2.A#)H(#'$,I-F]-!I 212 M;2`D;1:;G>(@?2R.OTJ51:`77.CL2+D9X.CSXAS(K\R8R@3+M`!:*X\S^X)G 213 M_A>I1LNLUADOJDQRF55HB%H6.A.2>=4!_6QT"1.=;#391IC*NQFD1TBOW.K9 214 M(5#QC`C]<3@Z"J(Z4%(DO@^CI98DQHWZP'D4">"<G*6)+?`(8!"[$G.$>H@S 215 M.+066=B21;GF<`7@]MA2&6)W<?Y^A0L0`7:-W5>O&+U;;*ZOLN3YJ^<P+M<H 216 M-.&&->YX?'>Q6KQ]FR4-G:L6O8H1<([+Q7*3)>M_?YK?+-Z"<,DP,&I\"SA^ 217 M1<,K_#2+EJ>1$("FQOP?;L>Q8(<TPL(-:L*!10(\!S2@>W<Z]"?I%15-@.>) 218 M\L1?`UN,X&3V63-&YD[;R&ZC!JX5@Q#C-,991905V%8,7UMFSC+1L*+:>:R' 219 M55UTTD#80';$,3#4%B05VI'PG:O+CR?TF>#@:/$2(&D?[(?E`$$;#FE+F&%H 220 M!0SH%$)@ZLPS!^[Y@<QH?0LRN*P[Z<`LBB)BY9Y4(F;NG]U*%X[]1T5ES!`= 221 M#BO-Y_"4-1\1^IJ/,/0F/(1+XSDN;^&J[VR;PQ6^PP%B'R+SN5RM-T?PKN<C 222 MV?PH;![1:_/R""4Q#R!C/JXH;L-=''=60`7ZN>AVQ;T4C9<[TW7W4CYK-I(W 223 MND8K>81-:I+[",:*3^LPAAO#/^"T\?AVG+7LT^D,)$O;QLJ_N3R+>D*AN9)+ 224 M@C+D,PI+\GIQ/O^T7B1E\F:U6-,VU)OEY^6;!>BXA+!F8V=OLTN#*`SY_'9^ 225 M3@IIA"JK![40YK9$?SO#RXP8/>;.:".!>G0<<&?BG1"CG/T6A"H[SA`99<0H 226 ML(6.5="R[@[]M5EI#W>^R-KL%:\W\\VG-4C*G_]TQ))G\</3U:?-T?\`/JAH 227 %2\_)```` 1 begin 640 hnoether_l.res.gz 2 M'XL("#Q($S<``VAN;V5T:&5R7VPN<F5S`.P\:V\C-Y+?_2MZ\B62*7K(XK,= 3 M>(#<9O=V@,-@D2QPN`LRN9;<E@3+DJ''3/=\R&^_*O93+<F67QEGL\:,NIMD 4 M%^O%8K%8[)_^^</[#U$4R7?1V[?1WZ:S]#R:S!?I>I(N?YV=K5?KDY_*)G!& 5 M3=[/U^E\-?V41NMTM5Y%5XME_4(TFP[KYNHL^J_W_Q%]@R#.L/R;[^H:_2[" 6 MPE^G\^FZU__NA*[1NZ)LM4[6F]798M-T:]X5<*I..L!L0)RW_@)BT>(JNDP_ 7 MI;/%[?E6;?E7O^_.HN5T/HZ^;*YGZ71^(0;9X/*V@>_?57!Z&3#(%&(<_;18 8 M+O.SZ'TT3]/+:/UY$7U*EM-D.$M7T70>(9H!Z-G)S_*7\Q.$\NO/<B!_N<A. 9 M?H:B0)S\K(H[+D]^UE5AU6O\KL!JB?CTLD'>'URN:IRDZ.#$%,L)K7]BOV,4 10 MS3RZ7<SR^>)FFLRBZ2I*H@WQ.%EA^6<4TRI=3M/5FS==]/(CT9.R04!@Q_^S 11 MV$23Y%/5^4T:./`E72YX"Y''=P=;].9P%ZW+]'(SFJ(DGM"?VNZOZ#'IB0'T 12 MHXOPRC9@4=W#+Q=4"PUL57=8]D+0.&20LTS7'>JF0ZQB*LN9SG+%L1GV3*3^ 13 M_<-?B;H,^Q=W==]H6-/Y/A)Q5!'?HMM?)8+,@66JT2];5P)68I./$+$H,WG3 14 MQ-5-5&@"19./4D2G^$+3T-<-=6BHRH80&D+3,*X;FM!0EPUU:-A@!ZC]M\DR 15 MN>E5+$,P?633!'41WY0H*5E+:M*3=`=8"'4AW:MP#R=H/$Y/H_].EG,<;^>H 16 M/JO-;$VL3K-DM(XVM]%Z$2V6ESAL#(WM+$KFEY&CVQQ5#-F.,L\T5YE!F3DL 17 M("E89C+';.:YSF+N,UES'G#L3.?KZ,O%>GJ3+ANR8)<L_3"R)CVH"E6K4%6% 18 MNL4`73+`/H0!TC4<`--A@;1<ZTPZ[@$OGGNMD>Z8&Z&LRT!P:9U7<0:2@Q7. 19 M^@R`2Z=C;`:*2V$-"&R(K)1*22,R,$S&6AMJ:IE2L9,:2QT''4OGA,G`,RFT 20 M!PMX'S/PR@L#/E.".P`7>ZLS)1DH&RMI8YLIX,9J:S3BJ!2WV+N1V&^F-),N 21 MMA9B0'R4X8JP-;'`=I8;B(TOJQS3SECKP$B<#3Q3<8S4."L1>LRM44)I)X3/ 22 MM&`@L<:#4C;3LE0-T,S:@C8+@3!M`ED(";FBB2@EI59.$DW2XE]LL"O!3*P1 23 M!R>()JD,HH2(($W8CY+:6N2(4HB>E.`E8D!$(1U&2^T0`'8)SCD+FL!9#H`5 24 M8&*KB"KE%?:)I`BB2L:(`K)9B$"6$DY[CT1KAW1QC95>8Z]&(F$,6X)!*KV0 25 M(M,D5>^<TK$R1+A"><<H#"L$XIMIS9SR",DC)4BX-J@90B(;8P1)#2S#BM@@ 26 M)DJA,+5C3GHGP0@)<0R9]AS),EXK1-(I%(...5:;V"O$0WN1&<&TEJ`#;V-" 27 MPTC4Q!@[0-11XJ@+!KAV/G:Q]`9)0>4U"CDD/0HLML8$R$9S\*16$A!I0L<8 28 M[E&?4!M0!31IFR&$#;)6H_RL%MB]0YIBL!8EIK6C[GT]T%7I_HSGBV7:"U:` 29 M?QE\0S??X'C'\=A4GU-I='Z.CL;MXF8SNCZ[27!NQ9_I]1E.ZOQZ=G:9GCNH 30 MH>-4LF-:T-C/IN@33>;I1<NZ#+A\(?M2=6R?GU2P-72:@]!+6O?2;%V1A20. 31 M=!\M4IBQ&RM'][HP^?$)^7B1"/_PGLOR\>Y[;@?T;M6Y?P$I-J3%NU)4HB*W 32 M+<**UI>>)9Z;?TH^/_]DHQL*2F\"6Z476>X9_LMT;G&.5OB+`SLW.#_;7&.) 33 MSQ7#*1J]()RM<_*HI43_3#;>B<)!VQX]!/:)7)?A-O"W05M7,L;."L&6O*[X 34 MV;K*062C^DU3KAA^O%`@A*I6#<U*1C5>G;F8WB2WO>4`;_M-`[='Z?RNTAFR 35 M&R^G=9.>K@I-77B8"WNN><.5^/FU#">UVI9K')/7T]DL:CBF9;UT:PMBUBS? 36 M-+0$<96N1Y/>C]N2T&I7$EK_H26AS0M(0LIZY&A;26+P8\,S5\L"@AP&ZZV% 37 MM*X6)U<7M`)R..9CEOFF/N[ZY%?DD5?.\INH7OA>IE?3.84"%HOH)IGG33S@ 38 MS4GT/:+5Q`?2;)3>KL,*^6JZQ%F9P@>?"?5A&A7T7[X)JTU=2+04K6Y$*Q^Y 39 M:I%RRV=?0^&2KCU;UX;9[*JT:53:[=H5`S43X;27XT+(]3]*W=2W5M-79%1S 40 MJ<OEM"-B5$6@J_15ONCJWN@M?%R!SJ$.%U>%I!;+FVC\T0WH:9GB8]K@<G;R 41 MCUF:K-)HO<RC9)Q,YSN!GZ.1,[O<MS7WD673_J"7#(;;$G`-10FPZ5`=,`AO 42 M>]-^.YIP1:&W=(>3[7A"4MVKNAQ:;:`(>03`98&BE^H@Q`#N"D.85G0M,6P* 43 MIXEF,#U-8,B&6T&7'L<>2II@R\@]C)X`IR$I.4C27G*@18[80TZ\(STK[I.> 44 MQ=%U,YV3VEU,@36A$PM'B?5E9/I(@5KU+R50V[(5O83!L/^1!&%*0F0YK&`/ 45 M(3U<D7I$K8-Z:-U@+XY`O8+4X"]:^.\-,O8XKHV]T!97NU+H:?\TD8Z!L))6 46 MS0*$QP(S9#TMP!HEO1:AC1H"]\;',:Z;8Q!8HG&M'^,KFA[D4+$>5\H8K<FY 47 M">^@9'L<-"W7Z3D>:H9K<%PT"WI%#('AJO@T<4/#>M9)X6F)'-Z4U#^%!>C) 48 M$VRZ,4/+0<2.PC($CJ(#>&,1;KL?AX![W+P%>M`('"Q(36AZ7,1[08`0HJ4R 49 M:F(1S;*U&B)5U$(7,"2$%B;`"\P"?)4:J/"2M%06VLJWBD#4NQQVUU[;EKUV 50 M8<1W9TS;LM=9$;G_:3.:X-P=ME86\S#M_._;VRC!:6:^P(G]YG:&*X[Y.KT\ 51 M.XE:LTWO]N/U(.E3:'^\7&QPCK^:IK-+G/JC#3;Y/YRCRIZ^??2<9/TNC?%] 52 M-#IQP*JYUMY!]MI)=[!#NE,-Z3H>7"/MX\&D/_BA17O+:HP5F^BNW5:/LG3C 53 M7;,M!_JP"1<MB]&8/TV`&FNN[K+FSK3,WQC7Q9/^1\<F<=N.7_O&^-7^6[G& 54 M:"UQK]%5OX,VA-(0-SY`T'C+!(9[U6JC6FU4JXUNM=$MQFAJ$_"JC2GBM=^@ 55 M8K/3L8K9M<>+G?"Q,NP:C<U8J0G@$TQ8T41,%!LK651"/`%VK0#O_(2-I9^X 56 MHD*:B0^PI)XX/I8P*4!+B>7C>")%\9H45.VIEJ"[ZBW)L+`L*UH:ZHF>]20T 57 M`<0C5"!ZDUJ>=E>=FR72,DUF>P9R>P.4U]N,R6R\6$[7DYOH<I&NYM^NH\^+ 58 MY36N8]:3Z%N"]"T-S-$BO;J:CJ8X?(O1^?B1N.M:^99K)>4`_:K!"$?CY2`= 59 M7&TMN'W+Y"27P,B\IPIG\Y%.]>^TGOLJ9BX]DKE^U\QY-'/UO3X[N,?>='_G 60 M-KLW9]$J7;=WVINN:,*LP123PO>T8QUXO$[;*[(`X":Y1K[/%PAQOJ*58'IS 61 MN\Y#B+N&Z=I+UJ[+[?U6CXEEPZ`'?YDD\W%*9`T3VB/']^?I*%VMDF7^YLU) 62 M8:.#Q;XB2>P61-%OO_U6KL;/(XBBX3*9CR:]=-6/5IL1@;K:S'"M/%K<W&Y0 63 MUM2^EEIU[9C(]N9N\ZC:M;#=N'`;DWZK0)5O5PI1NO)4HNJ2`*'2CD)KX$50 64 MX\^!6R7,RC*@&$AD@T:)8[&;1M%H02RW]<[RG+3@CR7E8F)_C4)^!L0J0:%Y 65 MJHQ'2[AJ6^Y-A=Z2:RG8TUYN>19VU.^7\$-U0']5'7BU*O`LRJE>!<OD+F+Z 66 M=;!L%[-J')CVL-D_5+:GWE[.,\H$HL&"=QSO7H-!E-L,;#_J70ZIYU/V3L?\ 67 MR3U7;'=[#9H_9-#BCD%S'#)-.Q:YYC(W*"XLTJ%(5V4H.!(0^C*+>5H*I!37 68 MH?*67!]1_=P646[+@D.'V_P^=N>XBC)9'B-/(/><TH)RQV,?MH$M_CHNC0X; 69 MP4K@Q7)*+Z(=82RUN>'.9BY75.F0J8"_AH/*?`X<RVC3F!XH]2O.N2FVCA7@ 70 M15&]%#DS/FPK<YOADDV';>5PCPVES"1P";0A0F6T`ZWO4$W=88=\JQ_#$!4X 71 M8G3@"=-QP14&E-O3,`:QH[AAX(TTEIA3-"GX(QV^AARB3"BI"BY)86R+44P; 72 M[PP0LYCRE!.#_.+@B&&4^62%1T8Q#[$.C.-2!LZQV"OL&+G&D97%GGPL#;&. 73 MXHA;'`0OB(>49H8\C!LFOLB4`7L,<[0=@XCJ,(1L/>ZWXL=,?2\RP^R;8%Z6 74 MCL*,22'V6#TIY'ZK)P5TYJ8P'YT6UUU/[AZ+=;?E>TT>_:OPYIK`XK%XMFMU 75 M-5=NX<W-??:)A=R;=FJT%&JOTNA#2F/V*`TI"^D->C:LT)N'SHQ?2S^.$$/7 76 M87P&.7#*4$=KC98Z2,/B#X195'&:'L(/28JRJ2QZBOZ/JG$-I2$EGP=*>9=2 77 MK+.\HK12-+M7+]TAO=R..*$/!SRGS<2,O#=*^J\?'V36OH*R=ISB[$':V;5F 78 M1TV#Q^H6_-Z85<*-]^F"%`=T07;B3NC)L%S=D8-2'M\I#Q:UC_"$Z-:>^*>4 79 M^T(F4AX(F4BY'3(1=R!#IWKV]F@.A>&DM%M;9GNV"R6=)^G&@,,KE'^3WZ9U 80 M&+P3*]^'R,YVI93W;5=*.E12ITBW$5$LMX0,95M]_^.']Q_^\SSZL*#MCQ2' 81 MU734A/2+5*%I)TP_I3-7JQ6E";TIH!1A_?6BVI(H7FJ8/(B&&Z2QR#L*Y\OH 82 MB%TR;WH*<!:CT6:YBBXW@3!J.TIFH\TL66.+0?29GN?$K=OE8D10PM8,M@MO 83 MCQ9+-!"WB_DEO5T8"%2GL[.SIP?#U)$6IV*]#*FUWQUO@?@^$]0>NIV!NR=V 84 M<ZQ)44_NZ=BU"-]GO1[45<5/2AN:KFYG28X2HD3B(KWR[\G-<+,<ITO^H3RM 85 M62H@C:2PYU%,(O/EF3PG3Z@XUL._H#GX"*&`T,P9%9P\$"*T(#)U^BPP51M+ 86 M.`2SXLI>/Q(.^9'0\2/I&"`YD1E=_ESVX+Y=L8*(;S^ET22YQ":7T6PSNGX3 87 M5<D-9;<T]&?I.D4K,&QPHZW1>\R)?&X'1FP/M(X+NF5<S.XXU$>/P[T>(ASR 88 M$,%WO8*P&_5O17L^1=O6*W&D7NUZ&%#G(@RZ4E1;Z9YIY6G,&D]#=;T_7IQG 89 M_O/(^???3^B$DG="*D]8@O`GPZ[T`@X8!K5WYE*ZJT;IGTV/_C#V0IG#]J*U 90 M-"J."^U;G=#)K'W)E%+MGS2^^HY=._?DI5WTK622I[G.=%RLEA`ZHU$TFB3+ 91 M9+1&Y5JM<0SAXH:$5-3)XFP0JLZ2H)SC.KVH*$45E7_G$:7ORWY1.=_<#/$% 92 M5-I/"0X+9'Y1'OZ&L\7H.H`^+T[OD&K,5JT6S=]Y-,?.5W2;17FT!PJTH?RE 93 M(K(YL[:CC:VS:W=H(YU?:VGCM*6/='#M5>HCET+'<<*D<`9^1]TLNN7/TVW% 94 M9#3]E<%[=C5-7I&B'C:;NC&;>[-6I=X33_H)7T#3OJP,_Q5R;+&<?L$9Y!,2 95 MVF2MMN?%/>9<[P:8="O`U$U%'8RW,#,'(DT)#"^!#4>I8@F,U%9B*LJ,TDDW 96 MW2S3)@F5TDB;7-,_CP]P7`S\V"5D):('1Z2>LJN!\Q?TW_9&G8S(SNX&MK+8 97 M:MCO^I>[FQQ=P]$;COJG.>N16N$-'6.!1(^@?TJ;.[W$8G6SX69VPD?%`>,F 98 M?$-QE=,O/;033:P%T?M84!%J/D(H*3`N2IH.U/WF2\JB0NW:KF$T.F2_Q"LQ 99 M7$8?-%S&'#(4_<$/JZ;9=E[67MOP[T'^PG&B?Z5![0YKI-_6R,+A&WSI#S[? 100 MTEG&@>HW;>/&\T-?H3[C+>VA[1-T*,+6UB-GL@?M=#[0RMOGL_)[-4`]/,?] 101 MH,MG'V>4U6E2V>,:T@.L[\,\1_U:_$9[V/Q:<[RR6]M=RSQ)E?]$]OI%1NU+ 102 M'9]X^XAS,H?'J3NX"4ZG:-^^[1R/HL]U4/1I5?!V5`2T4+)!)(VX*AAQ^;'2 103 MOT'Y09.MI06=N6UI;/N3)G?D/'W5W99]FRWEHWU:.E#[T6P_VO+=]J[.@+M[ 104 M(K4YHZ]$T7\(J63THY&]!O];Y'0MA2J(<NA+3-(="O4ZU=EUM(P2\=%YIOPU 105 MENW-QG_N4VO';M\?UH"GQ\0/!UCV@3YVL#_/B;B#&_I/0NT93\1).G]>[1C\ 106 MV"B7.:1UMOZ`#WVODS[>R50F'?.9M#F7]&5/*3)I<JJCS#]+%T9EBC*W+>5? 107 M`P-+^=J*FRRFI'@14KV+9'"P(:%>VC+%'"CW/O<-"MOAFJLC#F,^-(7S:2F? 108 MSW[`:S=JW:/O7,B$>R%$=T'`N[O.NXF,GO5\PFSP_QVN!C0D3-)R@#C>TX*" 109 MD.@BAK1].`U2Z7F!;325DJ@H2)IP@T]Q\:1UP@%-3Q`KZP'6`C66DAZ-3;CV 110 M]$C"IUH60)%.,&E/24>X/BTT!O$1"56BM20\PWLVW/.`I22<?6CB&:KA`V*L 111 M.XSD3^8D;[-RFY-\/RMYAY=;K.QRDG=8R3N\Y/<PL\5+WF8F;W-SBYG'9B$] 112 M*+FS<R)BYX0.#.[E-E(/I\6$BA8%;TWX=2&G^-CC#P>1?GA.<?M1MT$=<3B" 113 MJ]9SU?$6.]01#&'J-`L_$'X5>1ITH]'3J,VEWVO@XP,&GCZ4@+8=8LIO]JBE 114 M]+%A2=\>1NM.WU9&_<O`A/1GTB^IPN>)T;[C(Z,O$I.9-_1I9OJJ,#YQ\/@Z 115 MY4K3FZ3#1M,S4W%X!KS!MTG9L3=)\P'01X_I+)37@DH45S2!T&!Q<;C!ME+1 116 M%Z3IA)`*DP].&<89NJ.NL6_4>1,.5]%8!(!P9YCQGH8*?==3TMP"8,.A(,M! 117 MAM-"2*^-PWDBQS1-4)['TN!0I0]TNSQFRM#1II@C*IK.21&3<BEQEFJ^`BKI 118 M0Q+[PAR_YWSU(J?P*OJ>-74P1(69[I>9>?14F.2B0-61BNRI*844\&JZ";WH 119 M9^I%M7LI>R@NV]&6C$$9:>'EC7IH5_KHKLH0>W'!2B@JT0;1?:B!HD85-9IJ 120 M%(6!:E&K6M3OYR%D,5^O2HG3ASRB:5W:QK*([5#TAC[NT0T=I=DM*B2]0E&D 121 MDVB<SM-ELEXL`XQ5>C.ER,9M5%;_8S-=I9LLNDW^O[TCVXW<.+[/5W"-`#L2 122 M22W[8+.YC@SX(7ER@#SL0X+`6LQJ9]>S.B.-[!DG^?=459^\1YK16@XB06*3 123 M;'9W'5U5?56M[NZ3^.=M,@,\?;Y;+IT#QO.;ZX\/N%Z7F)E^>'VY7H16-CZ& 124 MU_?+?SXLK\_I^ROH"ZO;R]7Y:KU:WF/5TR#R_WT0Q2X@PN!Y'$C*,`8F^8X= 125 MAU6.P\K'804]GNT"K]P%7IWQ(N-0I!@'F_))GNE=H,>Y1OC/Q20FP((<QT4U 126 M07B=Z4S";X24>+YI=0U@WR_/<8JO]6W2=N"3S&86@?_&NB6U0!A3!O_-;+ZT 127 MZ_4'7[.$OF,JHZ_IO[$8>?/-S):+SZ0?Q.K>0:P>&L2VG0B!+0"&D\SQ#+-( 128 M\8@RGNNJT:LW>W&CRW+OT65S$/2TX_(PN%$X9D"K2Z+]28-`>B3P8/8QG863 129 M>,'1(#ZG$0BS23R1C8.B5.%_'*;@<QB)F`P5V)?'&!`%1T@XCL*'-?I='QGK 130 MM8;)3P8L[T`V"%CN(1L$+'>0Y;V@Q9`]R\"K.UOD5IL>.?KB"))=/#0KAZPT 131 MPS$'&@P^>'%,LYUS,+P7-`RF7(@S^+KT8_N2$%3BC!"\5CZ_P@E2/$59M'"& 132 MV;2K6Q,.ZYRPMO?(;Z?I/VC@?ECK(*V+LP&4#6"L%V%M?'7153YF:61D(G9P 133 M74-7L3`>D,#-O:@PB,HQUH*F*`N*A*],S00'#.A>G`Q^>2Z<DJ%YAT;W%P/= 134 M'U<S?[\"X*MY)!M&<@?'/=+BD4A^*?)B5Z74,TG-.SB8AI\59FZ9@*]12PJ< 135 M=R$`H7W"JMG*Z%>%$%BXT!$-S;`2,RD#2)ER5F!"85%FKIISHW1!P]<%3;/2 136 MTY**AKO2*7R<<,W1/32FG#QR%3(\]T^%,[01N+03L'-;/!/!0,`5$*I*Q@48 137 M"\)6!>2BYK/2=![S%*B%H#-E;`Z:^#8H8,:.8-JCBVDSZPMTXX]0BSU3XD^E 138 MVS#9\B[=\E["C="MEVP-JN5C9,NGZ)8W"-=#M[Q!N%ZZ#9.M0[4^HCGM6$]K 139 MT+JY?C^I0H^M:\/==MB_*&VK_N\T\]F<_WPUAXG)\QLH_)C6(ZR-(JW^%,K9 140 M*-R.XM*R=#9*Q:T&+0NC0;$KDR1A3HGRRFA1+(?$5N'TJ*817HZEH5PNS4!O 141 MF]+\`1:HO4B"7H[EU$XAU-M<H]0"%<M>@NNNPQDP#2)T:-`EP1`%!@DPA/]> 142 M]+>QWX/\7<=#A[%O\BVC-5Z#&"92TI2,IS5#\!EQKC:0,Y:CY69,(J&D`9MA 143 M2%2)D.+SLC``ULB7#%/X5.O"`%JGG)>D'M&V*PJG+.N4U59!ZK0D54@3'X53 144 MD54JBD)0DM0W4]KJQLJ;ZKB:!M661D&2U26%TYL5J;42-W>H6E%2Y94BI8@8 145 MX*JPJA+7Z*@J8\XIJR=!Q?I:<=4<524:3X6T>I/<"!;'9EDP`$>V`ZE49$0# 146 MI;7[".D%,`ZC*P\0F]5'PB`OHKDLSFBEW*"3F_5W88C'@:D0MYQ;@\T]%@@Y 147 M%X9*M!J*W"\=K;C<YDAL;E;G"4`.;(Y%*<\::$$<X]+KANO9/]17M>4,C^:C 148 M3-K'HP,LFO?S:-[/I/DDEPXQ:9-'!UAT=P[-!UDTCWDT[V/2?(A+\VDV[>'2 149 M(2:->+3!HKT<N@.#YGT<FG=8-._C46>6MCPTA@![##US#VYJ-7M:KS!4VAIL 150 M3S()R>PTVUQ]&<)M:A6G/9LET9MWWYK['/WZ`3!;]`EIHL+#5>:HB7"7IO73 151 M,G5&_(6_?_,&;G_!#?>KJ\5EM,?[;;)0Z:),%S)=B'2!%NTS5@7B80$28`$* 152 M=E&G"YV[RO.%R/%P\T%\JC_+@^:XHW[<A@ATH7VUN$W>?4LQVU>!*\.>R1T8 153 M,7Q6?4=[\>>K4P9%_O'T?O7KTJRZ)ZLT/4K^Y7/JDR1Y=^HHE9DPE'CP8_6C 154 M+P\D#^:B_2?N"3])_C,K.K_NM3CX#H\S9(PS$/^+,V"-,XWG_N`/^/),T*E` 155 MVHAQV,T>4&>*=4+Y-?QIN`&&/`-V/(/.<*`Z1:=.!Z<.=1VD)ME!J<>FA<P< 156 MS#Y$7>4`^?(!\AT(1-6MUE%0N^H.!F/5IARA,P_0\?PP4.E^MDQ;;)E:MLP/ 157 M!6#=JK=.QYC1]7W9.40F?LR8$0!>):PPLLXOR6N;$Y^]QDT*Z\7JFMY_7()V 158 M>`TEO#919*<[Q_NX-:XQ;B$_JB<(,=6_RL^+:!WJSR(\;GE7)8DLT7/C"S8- 159 MQO0M*G5DEJ^E(_<R#=`L2!?`\-!J_M16/TU-CVV(@#ZAC(6"S6*M;02'/)," 160 MX@R@5[DE&_EZV;>RP4F\>5Q3OC@$8(-S5?,67(M#0#8X.4,D(UMV_TH&1]<> 161 M),+>_A55.P_CZR;AFJA\FAL:_=3*]Z^Z?FK5^?YP.ZE?]RJ#(;_+O.5WN:,E 162 ME-<2$M0$#'FV3.VB*+ZRP%5NS$?(/$!E!Y'^)&R-D-BI45]?(W3G?NO#],)' 163 M."JK#]'U'K%Z7Q^DO^V\F-$ZZSL?DW@[Q$_J:<FN,_OMED2F0%O!/*TANT[? 164 MCA]_GN<M,Z6%I"?YG]U9)TVT;<R">EK#=M57TTCS.KQ-S:<U;%=M-HDQUR[B 165 M^/T;YC37P(%QC@[]6Y%9\SSYL/H,H\B6;X'U"@3XYWO_I3P9#HW)T9D_36_= 166 MOF?):4+GW<-+Y5]R>`E9SGB2)IMR&[)4/HN@+-QD@1%B<@P?A(S:9Y244=B, 167 MG#+RD+'V&4O**&U&21E#Z]"3_Z^G`.WR+CP;.+<%+<%*\'OX:WDJW"N@T-?9 168 MB^C``_98WZ_?&U\C<X(]_S7[!A/?F.%]>/T6GR9OWX).O[VY>CB_.+E:K']: 169 MPK_5Q<G#]2J_N#SYN'P+UI4O7C2*O[A:7MW<;>='V3<F9:LP-QB4^&/R89LL 170 MSM>KGY>1-Y0Y</#-A^UZ>?2VU2+[Y62;2J%]FR2P`_#OVDYC&'<X1;;)DB(K 171 M,DCE#&ZZ*8Z.'EPA95R(;!:2A&]],H>OA?]:/?<)*IY-'$*A#*.G3Z9/G/#Q 172 M\R9LZNS-X0Y3J8S+C.M,%)F8.EE%>4NHO8`4VP4+\XH.XM!Q',$FT2+TQ$$< 173 M5D\=P5)9SV&<_4]DZ8Q!:3)C$P>S*!]76?E([(SC14^<U9(3A[4>AY"=CFS) 174 M3&75."XPR^Y<,G%$2XUC0(\CX"4=S1)X`(O3,:PR/IJ%O2I)J%\E_FA6&21? 175 M7_A2S@?"EW)TE]_6R&+`81QH]X.[*G)5LL-K2<FU5Y."OQ`UR;0L?:-$K.)8 176 M4\4Y_39^9=X,%?*Y-9[@F=19J3)59(IG:D+_F>RL@#X%LDX")^O'2CNC"^9J 177 MAZ.9BDWH2EVH\;X/[06MT%4,#K_E`'X-U?Z/N0[F'.*&UHO0<7YK?)2LE_>T 178 MFK;<K*W4:4M7(RA=$?JD1]BAIW@OOV)WY[BZE&]+Z#A`L9_FQ1$,5MAL@<X% 179 M,9G[-J,;]M`$I'*&\1O<$#0>?\:ST_'&T+";V0TJP41E?H(H[$+=J%R0KS*9 180 M"HIP2,$.L:W08M\@UFD0CHBPZ=(V?;IQ85@<>U_I;W3B-[+Z%_)PT/`.-*QH 181 M@8-I16E!:6V>%W3#"O-&[P$U\Y[G,*VB=!6E=92NHS0KGH8^>U-&+Y3S3H,W 182 M5?1"XQ?^KHXK+/`;/44,5A3H)B:M\<+3LD*W+VE95!NF<8<='9P0HB(G8KHP 183 MCL-*=""6ZPIW^:45>FK)*XJ4G:+;ER(EWV$\EPR/T]:T(YAQW!XL:#MQB=0? 184 M(;UH^V?GZ#*_+P+AY7W(4O;T:.S2JZTX.JO2#2M[>_2*"WC*,,DAP4UB`=)2 185 MT&M_HIVCT_H62VKB2&&X<%53NC:EJM^([SJLA@`&7MM$O%8,L%HQP&D]?":B 186 MVH2?88NC3<?.E#!=1FD5I:LHK:-TJ$M&=<FH+HEU(9WLG8S>E%$::@,2V9LJ 187 M>J&C=(T(4U&O0475VW-6U?&6G#NMZN.-MR)EU65>/:S$:%M8K_YJ*#%9C\WV 188 M84@"L[_,:S(,2<II\6LB*.GBOA&0]-6KV??7R?+N#E3_3_".?,R"?8_!2VWA 189 M67)_@T8".L?%O2:HM$_,5I+";!7Q/08=\;<:1OOLAE2KB^P#Y9J9NE=VB\I& 190 MN$THW)?-VV73+.<3RN:N;#]`0A?W;82"L#(M7\P+7RB0%1WZ.H?"9F2#52PW 191 M8.@E8*RM;XR'8QB9`0HW2;O6C:]3]N+*;G;I!>D1M0M3^^+ZHVG(-AE#;=EN 192 MRGR#898IP+''@7`BDUHFXY:]T717&@W\AG']F+;6H:UEHZV:O>%*2U%*\EJ6 193 M\NJ-9+44!;F\A#NPAW59@7)"OV-O5%D*=&T)[2E!_=1PY?"ALO!2NS8EMC8" 194 M776X*MT<@O(>B$T7W54'W5M0C`;=53^ZQ6-YN\(@V+Y&W1W1HV_XH59LR_Y6 195 M5`VB"_X8K.A`9=9B22S*MQQN@.)U);1`GW!(+Z:$E@$:=%Y_Z(F!JJP]?13K 196 MB'3TY^[L$5YE7\`>N<@NLW4<*9"CJ_:N17(A\B^71V<JO:S`5`CNR%\E?[]Y 197 M`)G[\Q($+5`19.[ZYB:Y6EQOP^S"JUGR/30DS#8L-^?+V[8'\U^PL1\BW^6> 198 M<E]XV<-!+!A`BSFW.9FY4>XSO*G=C8/0RRR_$7E7\AN:7QB))#%]Z>C_A<OC 199 M-:M3<]7I%\;@JNRUM%=AK]SF*\S5?E:9B^WK7U@-:2A!P470I:S,1=)%8BV0 200 M1]3VJNRU,%?F%R[0`_V0,@^;,T='I$J==/=PN^V@E^F7,UY:WW?&?9QHNH^[ 201 M&'$?]^6,F0?PK2V'(Z^%M#=45-=042&4A.AEZ+Y!,S!T^IOQ<\YV9&<6F#EG 202 M@9?#<!Y]KP\3)7\B/0PI<D.%O$D`]#,^&09L("2#F`S)<#L5DN$".MQZYZ`, 203 MO.JXECS`SN->O+X?QNK[29SN$!UC"*=J_S`7"$:"#4ZP69/(W8-(HI](LKLI 204 M.X0PX%6(GM$SBJA4@\(A]!J0.3(P-M!MBA"XI!VOVQ56]1:V;16V;12V;>]\ 205 M=X7IWL+8;S"^<2VJ)[5`F`%N*@-7A"Y.!L[%.;.?HI7C36YNRG1;]?J*V&^S 206 MPJ[Q`ER[V=,GN<NI=3[*,#J)7<&H8F)!?&*%DTVL<);-N>G(IVX+7CX)[^]D 207 M`X"#]-E=ROZNZ'^@;1&_$QXXT.:&%^]1-Y;8>ZS83ZS5QZOT287K\TQ&Z_.X 208 M0]5U.CFP]*6[`XU]?WS1,``)17O%%8B?-5`#"G%]M[J%!F;)K:$>#T0&X.*B 209 MJT;1[J>)W`SWHZ]O&C'(!G[BHO6)/YD>FDI6'@:XBGGWT]W-%2C7#Z!;S4F\ 210 M$[B9_>EOW__EKS_\Z>W,16?"2\,2ZHYN*`(*A0I2&"EH:":N,>#@T2C#C%*X 211 M+7EY]_ETU1&M\!1TY[<]T./,!7:#@0XWLSMGL``^5D"S2^*3T"W)`+Y\6)K2 212 M<,L(%B=^S/`BFZ7:XII=&"RGV\7YA8E2=C43684>G4TQY8_)FX2W6V:+H<Z< 213 M>WS,M/E&C4$RW,-G;DUYA)N@D'<W3L=1>1'3D*.#U]>K\^7E]C4PR:`J_!_< 214 MR^2Z6-VW,:@>V.LS-Q.CQV%2_[GBA+N&@.D9"R9K=6;>&/-3@C6M'AM9X817 215 MD!3NR:2<Z!LM)</[!H:D0]*,4WG8K0&2UE#-`FKB0;.\^BQ5%IY?:EPGZ6B$ 216 M.=#HY^4Y\'"5L3(3+%,B8[PZRNP+GOE?Y!HELUIEO-"9Y#+3N"NT*E0F)/-: 217 MLI:]C(G>'1HL'4:M;K#D"=(KHGLFSLO8^*]5X*.@LP(G17IL-UYJ*1U<OTY\ 218 M\*Z2=$U.;KG$9@L@J'Q;88Y0#_F*<&0MLK!2B3+7T0K0[:E59DC=Y?E/-SC6 219 M#KAK[*SQ-L#GY?KZ*DO>O7\'_?(>!3K<L,8=C^\N;I:?/F5)P[Q`UQ>Q#0`B 220 MXW*Y6H,9\<^'Q=WR$TBS#&-OQK=`W/?8KS+(_0F&WB"PK'70++H.-@`U-9"" 221 M;J>I8+LTXL)U:J*!)0(\!S*@(_$<>Y2D5U0T(9XGI6-^48!8C/!DEA\S1KN` 222 M-F$[@RA`:L4HQ(B`<581906Q%>/7E(D,@1OY0"=D#>S,([;P.8^.(@:A(Y)0 223 MOF,2/]\IT)$($0^E%\>(19LMQ^]QH<\V3?C,,G0#2\V`>/M@'/4#_&\$JBUA 224 MCC[_,=)0B,VH,B]+N!<?,J.9'\C@LFYEH$H927[/8)'L]\\>927&CHVB,N9( 225 M/4?$YG-XRIJ/B-K-1Q@3$A["I?$<)WYP/G2^R>$*WV%_L@]15EW>W*]G\*[G 226 M(]G\*"S!T&OS<H:*FP>4*1_P$A>S+HXZ<X."_#9T0'$O=>/EUH#N7M;?-1O) 227 M&Z#1'!=1DYID/\(CP#[-0I=O"(U`T\;CQPGBJL&(WB,0MK&R;=3^S>5I!`G% 228 MC$HN"<N0S]@WR8?E^>+A?IE4R<>;)<X>KL&._'GU<0FF&!&LV=CYI^S2$`IC 229 M$7]:G)/)&)'*FDU-@N%Q,C)"?CC%RYP$`.;.:(J=(/(>A02>,7/B=?Y#T,'L 230 M*$-B5+&XR(.HH`G/+3H2L\8!W/DBI5EQO5\OU@_WH%B__<.,)=_%#T]N'M:S 231 *_P*08Q%?G<P````` 228 232 ` 229 233 end -
Tst/Long/hnoether_l.stat
ra3600c r81fb58d 1 1 Status Output of tst_status.out 2 init >> USER : obachman2 init >> USER :hannes 3 3 init >> HOSTNAME:nepomuck.mathematik.uni-kl.de 4 4 init >> uname -a:Linux nepomuck.mathematik.uni-kl.de 2.0.33 #1 Wed Jan 21 18:50:57 MET 1998 i686 unknown 5 init >> date : Mon Oct 26 16:47:12 MET 19986 init >> version :130 05 init >> date :Tue Apr 13 15:32:07 MET DST 1999 6 init >> version :1302 7 7 init >> ticks :100 8 1 >> tst_memory_0 :: nepomuck.mathematik.uni-kl.de: 18107959 1 >> tst_memory_1 :: nepomuck.mathematik.uni-kl.de:91 0222310 1 >> tst_memory_2 :: nepomuck.mathematik.uni-kl.de:1 149747211 1 >> tst_timer_1 :: nepomuck.mathematik.uni-kl.de: 197428 1 >> tst_memory_0 :: nepomuck.mathematik.uni-kl.de:318066 9 1 >> tst_memory_1 :: nepomuck.mathematik.uni-kl.de:9174842 10 1 >> tst_memory_2 :: nepomuck.mathematik.uni-kl.de:16056320 11 1 >> tst_timer_1 :: nepomuck.mathematik.uni-kl.de:20420 -
Tst/Long/hnoether_l.tst
ra3600c r81fb58d 58 58 develop(a5+i2*a4+2i*a2b+b2); 59 59 kill r; 60 ring r=(0,i),(a,b),dp; 61 minpoly=i2+1; 62 develop(a2+ib3); 63 develop(a5+i2*a4+2i*a2b+b2); 64 develop((a+2b)^2+ib5); 65 kill r; 60 66 ring r=(7,i),(x,y),dp; 61 67 develop(x+y); … … 276 282 kill HNEring; 277 283 // ---------------------------------------------------------------------------- 278 // ------- test of invariants, generators, intersection,---279 // ------- stripHNE, puiseux2generators, multiplicities, newtonpoly---284 // ------- test of invariants, intersection, stripHNE, puiseux2generators, --- 285 // ------- multiplicities, newtonpoly --- 280 286 example invariants; 281 example generators;282 287 setring r; 283 288 list hne=reddevelop((x2-y3)*(x2+y3)); … … 289 294 example newtonpoly; 290 295 // ------- test of getnm, T_Transform, T1_Transform, T2_Transform, koeff, ----- 291 // ------- redleit, squarefree, allsquarefree, set_list-----296 // ------- redleit, squarefree, allsquarefree, set_list, referencepoly ----- 292 297 example getnm; 293 298 T_Transform(y2+x3,1,2); 294 299 T1_Transform(y-x2+x3,1,2); 295 T2_Transform(y2+x3 ,-1,3,2);300 T2_Transform(y2+x3-x2y,-1,3,2,referencepoly(newtonpoly(y2+x3-x2y))); 296 301 koeff(x2+2xy+3xy2-x2y-2y3,1,2); 297 302 example redleit; -
Tst/Short/hnoether_s.res.gz.uu
ra3600c r81fb58d 1 begin 644 hnoether_s.res.gz 2 M'XL("#P[IC4``VAN;V5T:&5R7W,N<F5S`.5;^X_<MA'^??\*.BB0/4LZBP^1 3 MTKE[0!\):L`-@N:`MC!L0][3W0G9V]VLM+:4HOG;^PWUHO9Q#S_2%%TG%D4. 4 MA^3,<.;C4/[AXL\OOF.,\7/V[!G[-E]D9^QFN<K*FVSSMC@MBW+R0TLB3HGD 5 MAYO5IF1E5I0%NUIM>F*VR-_UI/*4O7SQ1_85NI^B_JOG?8LZ9ZA\FR_S<GKR 6 M?$)/=M[4%65:;HO3U788,CIO^'2#[##3=M*!\[,38ZLK=IF]SQ:K]=FHM?WU 7 M_<TIV^3+:[:9A?ZT\NL3_[(8N,?G'9=I);Q:8+KLXB9CU_G[;,F^7RWJY>HV 8 M3Q<L+]@FN]S.\W>+C#V9O.*OSR;H__85]_GK63UY)9J*</)*-J6`3UZIKK(; 9 M+QF/UXR83D-?G+"9[3)F''9E\7I&K6+@+?L!VU&(6R`J47N5Z@;DX3E;8Q5L 10 M_99C@%IXE>Q7SWG?*-`(DC>">:R*ZH%$]"32DHB&Y`T/V5-T&`@E"--->COM 11 MUH?6$RSN9AK2TCA6R?M5DHC_\MTW)-4K,H_LR02+Q!(K@0*MM9(]9[7/61[E 12 M?#/E5!*H%$ZEZ"IE7TEEV53#P)X^97]/-TM8RAD476P7)4TNJ])YR;9K5J[8 13 M:G.)'9"P?,DJEBXOL60JUZR?>^SQL$H")2H>HAA6G`=<1Q47GI"JXC(0B:ZX 14 M\H0!211PA4KM2;R89MD@#3@ZR*:["F0"D@AOBH,T$*$P(/8DC\$HQE`QVA-/ 15 MQ6%<B3!0G,,`N"<4N@L1Q.`MP$R@=;"):#!"B-(/^*<+\PZSK;JR[.N%0R-: 16 MTVY?9-]!.D32)9(.D7*(E$NDB&C8EI@)_@3RX+8158U](P.)O8,"-HFHI2<K 17 MY:E*UH%"M<#?-2AJ!8((/50-J:)5>)S:I:>K6GDUE(IV<%&@$/20Z`;IVXYU 18 M!([&XW&E:T]J$&(HXD7Z!J7R0!@%41533P,V1`DV(4@EZA5(=)5XW%0QYAV" 19 M1E!7C5880AB0`=;T=TRL88`>K"FL`QA6KWX]5K_ZK%N)BLI6FT<:!??5XPQ$ 20 M.!T>9"S2Z7"WX8BNC`ZTD+$5'7:^9$5C"SIH/3"/0)/Y6-O8-1]/))4.DM!: 21 MCXIWK(?L`>:C--F/")4U(!XI:T'"L2`)"XI":T*1;&TH$M:(=&BMB'K#CD02 22 MD25Q:8F%)\$,QN3%9'$*AA1J,BMAC"+#$AI/F%:@8[(]+"D".;AI<F7<TR&W 23 M]N;)!`XIH=D)2<8(XS58*;DW;F#YG-/,-'E*<.-"D]UB%W`>:>O^$D4>$[$L 24 MAF\C<N$IB`7D\*)A;"1Y1Z$%5LTA9<XUE00M024)N5<40O*2$'42AY9,0"C& 25 M1.1)%>A1AZTJE217BYX:[C,D]QH)'A-5'9@X-#%Y6FD,D1DPD]8WD_#"$%1Q 26 M#7U%D*X(O<AHJ%60VT='>.!^TYDVCMYDM]FLJF,/_T$1VAJ)]D@WD:>M,$G" 27 MTK.2\905(FUD1'4NAG`+X++(`8-NEMFLV\W$^Q,WL[.7=3\60,L:&*J<8C#L 28 M:0P1^I7/0A_/@*/H/+G/-.MZ"J"/'_/%@FWZB0M@CA:/"8O'_'*$R$0'.*YF 29 M!%8@;YAI%0_M>SCCBK!`%[R?L'^NMNPF?9_!QP%:9)<(W2MVFRYK]C[=Y"G@ 30 M6_%DPOZ`2?7O"//S;`W`"U1RE6\@U?+#BGV@B;_+6'Z]7`'Z/;$P335":D6L 31 M!A'SQX"(R`$1?`0BRA;_E+%7)OV:U;X8H^.P&)-]"#(6>A\9KX<!8+`#HRF< 32 M4DV!HD%K%KM=K;;+R_T*QG[YY9=V]6=,,/9NDR[G-].L.&'%=C[/BN)JNX"" 33 MYZO;];:$@D#?AXKNN1,U=@+'3NS8"1E#U.#.:Q<&.E_>N'-;(_L:V[]SZ8U_ 34 M%U]B8L%GF%FG*'B"(BL;30[J2UJ3@6*HJ6^0H>,X'`5/@1'H<'#RU):`OT^^ 35 MH+J[R?!#<Y?BV-SER":GE0D(/&':%*KJ"'-'E45><)QM'59!L\6^6"VS=G;M 36 MW(_5.XO\B.:Q1-0G;P`^MK-`[-@*0.W=IE+C-!)5-4X)P`8Q80A9FR");?@A 37 M*&("PA`4@"2%?8V#26@CD04#46`TQ7IJ-!:(&$(BTN*`)KA[](+#"D&$J`E9 38 M.'@DA`]LR/:BN`GT%/@]9<.9+1-`X!85"`K>@8W]",9W;#NU(P[^3'V,0*25 39 M2*2L3``M&JEX(M9&#((A0,+#1C:$3"(*U432R(<;"]"!ZDW$92,E'D;:$92G 40 MHM@`'!`>ES$=RP@,"<+OZ)]H;7&2%XM$6<$%=((C*)3$A,D(NTO18H&$1Q;2 41 M&QV/)"@((5FX2#),!B'*7\NILC$&9ST,Y\[K83_W$!^LOL0ZQ*^^CLZ-J6/^ 42 MS0;UG7!-\.%V32CE0U[>L/E-NKS."$I8KYE59;8L\M6RY]%%];_-)/"IW(_L 43 M<C>R>S:RLS\UG.'2WJ5%9GDL,_)6Z:9^\N1_+/)/TY/?:NR?!I]C;ITRXV.V 44 ME+0X^UO1`NV1$:AP9`0NU+XC8(XUS#^WAL-C8K2I`3<.1F.9ZT?Z++=5C5^C 45 M\:MN^SK:47Y@[@LP'AW@Z']A,Z[T%XZA"!\>MEME>BWP(]I3X@Y/T#B"6QQ* 46 M<&))EU9-5M6-;^AYR-83?"MG!]R`4D>`8"4#2F#4!`6;G#B>"H"PMDN"LWB` 47 MM_BMMR^S#^P6#NPV7=CC9I/E/V.4A)%![?%[.5`*&]9_N;J%M>-8ER]3>,/6 48 M/7]("_2ZO&,<Q.L:H9R@""4#C->.+.S@]SO;_U+%V`,DCX/["O'M-EVSB^<X 49 M\^)H/-BB[@_]#S"_H1LB&5U/3?,9!\O?SXK\YXR2%"=X\[P3]J^>,CYE[&+6 50 M*=)O,@B4SLA?#_RBD*BF5TZ-.&7_GH1[?[IF>63_1NKX\1PA^R''\R@Z/7`V 51 MBO2!O`^)B203U-$=R?R.`X0V3(%DX-,=U/VYVD,YV2$QZB1%AWNO2N-,0(Y/ 52 M>=*F0>EV*J"Y8L;]A.*]"2E[*<;;1/)C;Q<>GDCN&]3G6TVRMQH>[BR'RMJ6 53 MI2W'37UH7WC8M,2?L&K>AS$W.E+9..78*2=.F8<?)[Z="-J&S^8T1B_&:8BI 54 M1_^6N`.&U">^3QD\I!LNY27VHLN+3&CSKZ&QR5I*T-(5BS24Z^6Q3?#:$QQ7 55 M06QL8IGRNB(P<9.OIH=G3[,X2''*B2<V;8[3&#&R^7BZ?[E#];K+=D+I_8;5 56 M_+@GL%[HH!,8>0(-)S1.>=H-_Q&7J[*[7.WSTGHOG6H!"VS\*/M'Y#G%D.?< 57 MO2O=O^?5=_C,R[Q8+](:J[K39VKXS`XD#5V>TY37F]7<J6-7&P3N1?Z.N9\= 58 M3+[YQQ_^^OW+;\C"#J1&61>D("![R5,+JFS]\6Q(2!^1'',F`,_0`&TKCMK[ 59 M&1V>_CSE)[;.2B:@US=BTJ]N_U.(3_WUK,VIP[H7>[ZT.?)E6?C=U%\X5=?9 60 M,MNDY6J#,@)ZMBFR>8FSJ,]<UO&(=?<K$-G66*K/UMN\R+:5<+G=PJ3R]2*? 61 MYV6>X1TPJEPMK?1=ULF@[F&J@[J'NGO5W1ZFZ3%6^5ZPI=NN!M%K`O2/NF^A 62 MLKU;H22>Y9QMKF?#-!OL,J%:F,5SMO_#TNB6`C!S@\T&,%.4^1P37^,0``83 63 MY6O?-`S$:Y\><LRG9=`*'7L_WQ2T-=?I_$>@-<"IVXGT#;/Y#.JO7K-G3.S. 64 MI65SF2W*-.@7,(F;/M%=<R^RG[;9<FZ1]5C/F#W=KW:'M8,_,+E8=<9H^3E: 65 MMF>BKY?Y/%O47T.K>S;;"?B8_!@[8ZT(QQ)R?V?,WI9-#?["&-GU)K.+L8I9 66 M+2^W<QBQI>-ZTHAHF.2(#\0U6#VQ*++;_'JS@@_M9L(1/H]+C&@:D75[PH3G 67 MNR[PQ8&ML=?T6]PA_X_JXX/Z!MZ#WISQ/BV"\2@0G+Y%BNW].>6,`ZXM,!+- 68 M?7M`B7FOR333C3VEH(6RN6F;J1YV*76D6P"A;=Z[N<6.;=+<WFX'O(Z=0)G= 69 M$RD/F09E^0]\>A(/U]5<0!V.?%I;B7T.%MJ/Y"!C<2SS@<-W=^S\-:Z_#,"7 70 M&S?;^W6?'H+.I?T5O%ᩁ<S"*KN8C3>+H>?(XCK$(]\L<&57S":,%U@-, 71 M:+7Y188,!\N(S@_`D2ET]#Z;P]",SR-?XD0E857FQ&\;A-__(:O1RD^T+\+8 72 M5T+Y<80IF5#[4O$>ZQI]Z.+3X&@^=A`#XH^\VHP@^4'W>0#Z1]:_="/$@QT- 73 MF&JP)`=G/<R6=@+"HG!]3&3C0&"3H)(^?H,KJ`U1#.-8']"I-?1UKRP"()VN 74 M(.Y>6Y%/VLWF-RLL.1QDEYP?0K#76;F\]=G%VPOLRX+0#5[XZ$VX;S^NLJLK 75 MGXW`<1P>1+#P'(LL+WU6_+1--]D5PHC/TL7"?86.W]KM-?S&K/FIX^XQ5=?3 76 MX_5^+;1;FF3A?-[,.B6@'FJ@[\,"VE'*-EG65O""1;WQQW"+CIR:@Z#/;7:H 77 M<HZY,;R6*\+NRX&.5#JD<%NN?%N>`??E*.E4NQ\V=WVQ%ZTVR!WAM$46)`+[ 78 M?5W=C=7OIU@/=MWJ99!D6W&W+(\8=.,A6P[36MM/#<20T==^[QQ$[P^4;[]\ 79 M!D%'6JM!S,9QY;VI.,Z\KWL4)',S_`Z/*:FCT\JX'K5\7&75-Z["$JD2CU'] 80 MM`+7-Q*A,L`3_6B#M)7D?!:KHIR@[4`G->XTI`]L<],XH4@\''QCQVN--M@@ 81 MM5'UXWR7.82/FKF:=JYQW[*8.0NB'83P:=<!N@82L'?9/-T6&3/L<I45;+DJ 82 M`63?YY<9\*(5R7BRTRM_T8@"U>PJG5MPYPBC11H[(DE:#/-R1H^I=:5$[6.@ 83 M=&%7-*2QD_"\=T73ET/8XB<^[6SC;$6:8;<9;:JF-E[5?@XKZ(OJCB5W_T$' 84 38M'SWTWX@7_E\1\)I->'?#(````` 1 begin 640 hnoether_s.res.gz 2 M'XL(",%%$S<``VAN;V5T:&5R7W,N<F5S`.5;^8_<MA7^??X*.BB064M:BX=( 3 M:=U9H$>"&G"#H#'0%H9MR+.:72&S,Y.1QI92-'][OT==U!SK71]IBHX3BR(? 4 M'\EW?B3E'U[\^=EWC#%^R9X\8=_FR^R"W:S667F3;=\4YV513GYH2<0YD?QP 5 ML]Z6K,R*LF"+];8G9LO\;4\JS]GS9W]D7Z'[.>J_>MJWJ$N&RC?Y*B^G9T\G 6 M]&2735U1IN6N.%_OAB&CRX9/-\@>,VTG'3@_.S&V7K"K[%VV7&\N1JWMK^]O 7 MSMDV7UVS[2STIY5?G_E7Q<`]ONRX3"OAU0+392]N,G:=O\M6;+->UJOU;9XN 8 M65ZP;7:UF^=OEQE[-'G)7UU,T/_-2^[S5[-Z\E(T%>'DI6Q*`9^\5%UE-UXR 9 M'J\9,9V&OCAC,]MES#CLRN+5C%K%P%OV`[:C$+=`5*+V*M4-R,-+NPJV><,Q 10 M0"V\2O:KY[QO%&@$R6O!/%9%]4`B>A)I241#\IJ'[#$Z#(02A.DVO9UVZT/K 11 M&19W,PUI:1RKY/TJ2<1_^>X;DNJ"S"-[-,$BL<1*H$!KK63/61UREB<YWTPY 12 ME00JA5,INDK95U)9-M4PL,>/V=_3[0J6<@%%%[ME29/+JG1>LMV&E6NVWE[! 13 M`Q*6KUC%TM45EDSEFO5SCST>5DF@1,5#%,.*\X#KJ.+"$U)57`8BT157GC`@ 14 MB0*N4*D]B1?3+!ND`4<'V717@4Q`$N%-<9`&(A0&Q)[D,1C%&"I&>^*I.(PK 15 M$0:*<Q@`]X1"=R&"&+P%F`FT#C81#48(4?H!_W1AWF&V55>6?;UP:$1KVNV+ 16 M[#M(ATBZ1-(A4@Z1<HD4$0UNB9G@3R"/NHVH:OB-#"1\!P4XB:BE)ROEJ4K6 17 M@4*UP-\U*&H%@@@]5`VIHE5XG-JEIZM:>364BG9P4:`0])#H!NG;CG4$CL;C 18 M<:5K3VH08BCB1?H&I?)`&`51%5-/`S9$"38A2"7J%4ATE7C<5#'F'8)&4%>- 19 M5AA"&)`!UO1W3*QA@!ZL*:P#&%:O?CU6O_JLKD1%9:O-`XV"^^IA!B*<#O<R 20 M%NETN-MP1%=&!UK(V(J.!U^RHK$%';4>F$>@R7RL;>R;CR>22@=):*U'Q7O6 21 M0_8`\U&:[$>$RAH0CY2U(.%8D(0%1:$UH4BV-A0):T0ZM%9$O6%'(HG(DKBT 22 MQ,*38`9C\F*R.`5#"C69E3!&D6$)C2=,*]`QV1Z6%($<W#2%,N[ID%M[\V2" 23 M@)30[(0D8X3Q&JR4PALWL'S.:6::(B6X<:');N$%G$?:AK]$4<1$+HL1VXA< 24 M>`IB`3FB:!@;2=%1:(%5<TB9<TTE04M024+A%860HB1$G<2A)1,0BC$115(% 25 M>M3!5:62%&K14R-\AA1>(\%CHJH#$X<FID@KC2$R`V;2QF827AB"*JZAKPC2 26 M%:$7&0VU"@K[Z(@(W#N=:?/H37:;S:HZ]O`?%*&MD6B/=!-YV@J3)"P]*QE/ 27 M62&2(R.K<S&D6P"790X8=+/*9ITW$^]/=&;'EW4_%D#+!ABJG&(P^#2&"/W* 28 M9Z&/9\!1=)[<9YIU/070QX_Y<LFV_<0%,$>+QX3%8WXY0F2B`QR+&8$5R!MF 29 M6L5#^P'.6!`6Z)+W(_;/]8[=I.\RQ#A`B^P*J7O-;M-5S=ZEVSP%?"L>3=@? 30 M,*G^'6E^GFT`>(%*%OD64BW?K]E[FOC;C.77JS6@WR,+TU0CI%;$:A`Q?PB( 31 MB!P0P4<@HFSQ3QE[9=*O61V*,3H-BS'9^R!CH0^1\688``8[,)HB*-64*!JT 32 M9K';8KU;71U6,/;++[^TJ[]@@K&WVW0UOYEFQ1DK=O-Y5A2+W1(*GJ]O-[L2 33 M"@)]GRJZYU[6V$L<>[EC+V4,68,[KUT:Z&)Y$\YMC>QK;/\NI#?Q77R)B06? 34 M86:=HA`)BJQL-#FH+VE-!HJAIKY!AD[@<!0\!4:@S<'98UL"_C[[@NKN)L./ 35 MS5V*4W.7(YN<5B8@\(1I4ZJJ(\P=519Y(7"V=5@%S19^L5YE[>S:N9^J=Q;Y 36 M$<UCB:A/=@`^MK-`[-D*0.W=IE)C-Q)5-78)P`8Q80A9FR");?HA*&("PA"4 37 M@"2E?8V-26@SD04#46`TY7IJ-!:(&$(BTN*`)KE[](+-"D&$J$E9V'@DA`]L 38 MRO:BN$GTE/@]9=.9+1-`X!85"$K>@<W]2,9WN)W:$P=_HCY&(-)*)%)6)H`6 39 MC50\$6LC!L$0(.%A(QM")A&E:B)IY,.-!>A`]2;BLI$2#R/M",I346P`#@B/ 40 MRYBV902&!.%W]$^TMCC)BT6BK.`"VL$1%$IBPF2$W:5HL4#"(POIC8Y'$A2$ 41 MD"Q<)!DF@Q#EKQ54V1B#LQZ&<^?U>)R[3PQ67V(=XE=?1Q?&U*GX9I/Z7KHF 42 M^'"[(93R/B]OV/PF75UG!"5LU,RJ,EL5^7K5\^BR^M]F$OA4'F9VN9_9/9O9 43 MV9\:S@AI;],BLSQ6&46K=%L_>O0_EOFGZ=EO-?=/@\\QMTZ9\2E;2EJ<_:UH 44 M@?;("%0X,@(7:M^1,,<:YI];P^$I,=JC`3</1F.9ZP?&++=5C5^C\:MN^SK: 45 M47Y@/I1@/-K`T?_"GKC27]B&(GUX<+?*]%K@)[2GQ!V1H`D$M]B48,>2KJR: 46 MK*J;V-#SD&TD^%;.CH0!I4X`P4H&=(!1$Q1LSL3Q5`"$M5T2@L4]HL5OO1U[ 47 MIU7VGMTBAMVF2^>@_X*EVDLC+U5>*KV4@/H7'(H++^4\2'D8I(F7QD$W>)#* 48 M($5JOT?8_2]5C&-!\C#@KY#I;M,->_$4NU]LD@>KU/WV_QZ&.'1#3J.+JFD^ 49 MXV#Y^UF1_YS1<<49WCSOC/VKIXS/&7LQZS3E-V<)=+"1OQKX12%131=.C3AG 50 M_YZ$!W^Z9GG"DR-U>J..Y'V?C7H4G1_9)47ZR`D0B8DD$]31'<?Z'0<(;9@" 51 MR<"GVZ@/G]H>.YT=CDB=X]'A!JS2V!U0"%2>M`>B=$\5T%PQXWY"\<&$E+T> 52 MX^V1\D/O&>Y_I-PWJ,^WFN1@-3S<6PZ5M2U+6XZ;^M"^\+!IB3]AU;Q/:&Z> 53 MI+)QRK%33IPR#S].?'NYM$VDS;Z,7HS3$%./_BUQ!PRI3_PA9?"0[KJ4E]@K 54 M+R\RH3V)#8T]MJ6C6KILD89.?7ELCWKM7HZK(#;VB)E.>$5@XN;DFAZ>W==B 55 M2\7I=#RQ!^C8EQ$C>S)/-S%WJ%YWYYY0>N^PFI^.!#8*'0T"HTB@$83&AY_6 56 MX3_BFE5VUZS]";4^.%BUT`4V?I+]`TX\Q7#BN7]K>GCCJ^^(F5=YL5FF-59U 57 M9\S4B)D=7!JZ/*4I;[;KN5/'%MOU+7W8P-P/$";?_.,/?_W^^3=D84<.25F7 58 MI"`@>]U3"ZILX_%L.)H^(3GF3`"1H8'<5ARU]S,Z//YYRL]LG95,0*^OQ:1? 59 MW>%'$9_ZZUF;<X=U+_9\94_+5V7A=U-_YE0AB6?;(IN7V(GZK$"NVF#R/KS3 60 M91V/6'>_S2XOLETEKK-5MDW+]1;\;F%(^6:9S_,RS_`.`%6N5U;FP\]EG0SJ 61 M'J8ZJ'NH^Z"ZVVTU/<8J/TBV=._58'M-T/Y!-R]4MK<L=)QG.6?;Z]DPS0:[ 62 M3*@69O&4'?ZP-+JO`.;?PMD`9HHRGV/B&VP'P&"B?.V;AH&XB\$@=M(SU139 63 M;7Z]7<-]4?$N7>ZRAAN7#3OYRJ>'&G-MV7W?:!.A)`='>/HFG?\(\`=T=CN1 64 MOF'VH(3Z1Z_8$R;V9]:RN<J691KT\IC$31]]UTJ*[*==MII;)#XV($R?+FZ[ 65 M7>#1'YB\6'>V;?DY1F,W6U^O\GFVK+^&D1RX0*>O4^I@[(*U&AD+?!!V1T)B 66 M'DO1_5TP>U4W-?@+\\BNMUG6*6Z^7EWMYN!LZ;B>-&(<%C+B`Y&>EAA-I1%9 67 MYV(FO-R/J,^.>-I!TV_1X?X?U<=/;?=%T.^P?HT['R,N1^FBO53VZ2%H"];? 68 M.QLY6%R74@9#ZVH^,G^?W#J=3MD6S'V9W9%JOMNS&)+U2VNM\HL,&0Z60=_7 69 M'>3@*73T+IO#6HW/(U]B\R!]+LR9WS8(O_]#5J.5GVA?A+&OA/+C"%,RH?:E 70 MXCVL,]&QVSX#+#,VW@'<1EYM1NCSJ&L?0;F1M?UN!#/8T0`D!DMRP,7];&DO 71 M6"T+%Q!&-D8%]N1/TA=?M0YJ0Q3#.!88=FH-?=TKBY)CIRN(N]=6Y)-VL_G- 72 M&DL.!]G%E\?`VG56KFY]]N+-"_AE09D7+WST)MRW']?98N&S$0XTR1BL(60L 73 ML[P$N/MIEVZS!>*6S]+ETGV%<M^07_F@7F1;"DTM9!NQCL,!K-FI#JJPKQ_6 74 M0NO2)`OGFU[6*0'U4`-]%!601RG;9%E;P0L6]<8?(RPZ<FKV/#ZW!R&5LZ.+ 75 M$;5<$7;7Y1VI=$@1MESYMCP#;-%AE?;%T7[M?M/;<5"#P8XD.0AJ+."/2K$D 76 ML1&;*>FN\WOZU&5P==F7(Y_W9>.'9^2>S5=GLCG?-H-LX>_6M"BV8I=$[B`" 77 M^X5<W0FN#PZQ=M=L;<U=K:VX>YTGO+,)]RV'::WMQP)B.)/7?A_I1+\RY=MO 78 MET'0D=9J6)<33P;S=S)37_<@Q;AG]`Z/*=E69V+C>M3R<96UQ7$5EDB5>(SJ 79 MIQ6XOI;(^P&>Z$?>WE92)%VNBW*"MB.=U+C3L.VWS4WCA&#%L&&-XT%DHZ`Q 80 M2&U4_;!`;([MS)NYFG:N<=^RG#D+HG``+`;H&W["WV3S=%1DS[&J=%6RU 81 M+H$8W^57&4"7%<EXLM.%OVQ$@6JV2.<6'#K":&'3GDB2%I`]GUF_LQY(U#X& 82 M2I=V1</Q<Q)>]N%U^GQP3#@CA2GC1!2:81=3[!%+;>">+3B@;Z([EMS])QE( 83 3K$]_-^%'_IW&?P`(#+9S/C(````` 85 84 ` 86 85 end -
Tst/Short/hnoether_s.stat
ra3600c r81fb58d 1 1 Status Output of tst_status.out 2 init >> USER : obachman2 init >> USER :hannes 3 3 init >> HOSTNAME:nepomuck.mathematik.uni-kl.de 4 init >> uname -a:Linux nepomuck.mathematik.uni-kl.de 2.0.33 #1 Wed Jan 21 18:50:57 MET 1998 i 586 unknown5 init >> date : Fri Jul 10 18:03:01 MET DST 19986 init >> version :1 2004 init >> uname -a:Linux nepomuck.mathematik.uni-kl.de 2.0.33 #1 Wed Jan 21 18:50:57 MET 1998 i686 unknown 5 init >> date :Tue Apr 13 15:25:18 MET DST 1999 6 init >> version :1302 7 7 init >> ticks :100 8 1 >> tst_memory_0 :: urmel:421708 nepomuck.mathematik.uni-kl.de:3972229 1 >> tst_memory_1 :: urmel:355148 nepomuck.mathematik.uni-kl.de:35595810 1 >> tst_memory_2 :: urmel:606208 nepomuck.mathematik.uni-kl.de:40140811 1 >> tst_timer_1 :: urmel:1882 nepomuck.mathematik.uni-kl.de:6168 1 >> tst_memory_0 :: nepomuck.mathematik.uni-kl.de:228005 9 1 >> tst_memory_1 :: nepomuck.mathematik.uni-kl.de:314357 10 1 >> tst_memory_2 :: nepomuck.mathematik.uni-kl.de:385024 11 1 >> tst_timer_1 :: nepomuck.mathematik.uni-kl.de:326 -
Tst/Short/hnoether_s.tst
ra3600c r81fb58d 63 63 example displayHNE; 64 64 // ---------------------------------------------------------------------------- 65 // ------- test of invariants, displayInvariants, generators, intersection,---66 // ------- stripHNE, puiseux2generators, multiplicities, newtonpoly---65 // ------- test of invariants, displayInvariants, intersection, stripHNE, --- 66 // ------- puiseux2generators, multiplicities, newtonpoly --- 67 67 example invariants; 68 68 example displayInvariants; 69 example generators;70 69 list hne=reddevelop((x2-y3)*(x2+y3)); 71 70 intersection(hne[1],hne[2]); … … 76 75 example newtonpoly; 77 76 // ------- test of getnm, T_Transform, T1_Transform, T2_Transform, koeff, ----- 78 // ------- redleit, squarefree, allsquarefree, set_list-----77 // ------- redleit, squarefree, allsquarefree, set_list, referencepoly ----- 79 78 example getnm; 80 79 T_Transform(y2+x3,1,2); 81 80 T1_Transform(y-x2+x3,1,2); 82 T2_Transform(y2+x3,-1,3,2); 81 T2_Transform(y2+x3,-1,3,2,y2+x3); 82 example referencepoly; 83 83 koeff(x2+2xy+3xy2-x2y-2y3,1,2); 84 84 example redleit;
Note: See TracChangeset
for help on using the changeset viewer.