Changeset 409dbae in git
- Timestamp:
- Aug 13, 2001, 1:40:58 PM (22 years ago)
- Branches:
- (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
- Children:
- be1d412d2c7e4f64347b834e72628fc8d354858b
- Parents:
- 891438c7813df48556c4efdb0148577dddef063b
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/gaussman.lib
r891438c r409dbae 1 1 /////////////////////////////////////////////////////////////////////////////// 2 version="$Id: gaussman.lib,v 1. 49 2001-08-09 08:39:54mschulze Exp $";2 version="$Id: gaussman.lib,v 1.50 2001-08-13 11:40:58 mschulze Exp $"; 3 3 category="Singularities"; 4 4 … … 377 377 /////////////////////////////////////////////////////////////////////////////// 378 378 379 static proc maxorddif(matrix H)380 {381 int i,j,d;382 int d0,d1=-1,-1;383 for(i=nrows(H);i>=1;i--)384 {385 for(j=ncols(H);j>=1;j--)386 {387 d=ord(H[i,j]);388 if(d>=0)389 {390 if(d0<0||d<d0)391 {392 d0=d;393 }394 if(d1<0||d>d1)395 {396 d1=d;397 }398 }399 }400 }401 return(d1-d0);402 }403 ///////////////////////////////////////////////////////////////////////////////404 405 379 proc monodromy(poly t,list #) 406 "USAGE: monodromy(t[,opt]); poly t [, int opt]380 "USAGE: monodromy(t[,opt]); poly t, int opt 407 381 ASSUME: basering with characteristic 0 and local degree ordering, 408 382 t with isolated singularity at 0 409 383 RETURN: 410 384 @format 411 if opt =0:385 if opt<=0: 412 386 list l: 413 387 ideal l[1]: exp(-2*pi*i*l[1]) are the eigenvalues of the monodromy 414 if opt =1:388 if opt>=1: 415 389 list l: Jordan data jordan(M) of a monodromy matrix exp(-2*pi*i*M) 416 390 default: opt=1 … … 438 412 ideal r=gmspoly*gmsbasis; 439 413 list l; 440 matrix U=freemodule(mu);441 414 matrix A0[mu][mu],C; 442 415 module H,H1=freemodule(mu),freemodule(mu); … … 448 421 dbprint(printlevel-voice+2,"// k="+string(k)); 449 422 dbprint(printlevel-voice+2,"// compute matrix A of t"); 450 if(opt ==0)423 if(opt<=0) 451 424 { 452 425 l=gmscoeffs(r,k,mu); … … 468 441 dbprint(printlevel-voice+2,"// compute basis of saturation of H''"); 469 442 H=std(H0); 470 int d0=max orddif(H)/deg(s);443 int d0=maxdeg1(H); 471 444 dbprint(printlevel-voice+2,"// k="+string(d0+1)); 472 445 dbprint(printlevel-voice+2,"// compute matrix A of t"); 473 if(opt ==0)446 if(opt<=0) 474 447 { 475 448 l=gmscoeffs(r,d0+1,d0+1); … … 477 450 else 478 451 { 479 l=gmscoeffs(r,d0+1,d0+ 1+n);452 l=gmscoeffs(r,d0+1,d0+n+1); 480 453 } 481 454 C,r=l[1..2]; … … 492 465 dbprint(printlevel-voice+2,"// m="+string(m)); 493 466 494 if(opt ==0)467 if(opt<=0) 495 468 { 496 469 setring(R); … … 503 476 dbprint(printlevel-voice+2,"// d1="+string(d1)); 504 477 478 module U; 505 479 if(d1>0) 506 480 { … … 625 599 626 600 proc sppairs(poly t,list #) 627 "USAGE: sppairs(t[,opt]); poly t [, int opt]601 "USAGE: sppairs(t[,opt]); poly t, int opt 628 602 ASSUME: basering with characteristic 0 and local degree ordering, 629 603 t with isolated singularity at 0 … … 663 637 ideal r=gmspoly*gmsbasis; 664 638 list l; 665 matrix U=freemodule(mu);666 639 matrix A0[mu][mu],C; 667 640 module H0; … … 673 646 dbprint(printlevel-voice+2,"// k="+string(k)); 674 647 dbprint(printlevel-voice+2,"// compute matrix A of t"); 675 l=gmscoeffs(r,k,mu+n); 648 if(opt<=0) 649 { 650 l=gmscoeffs(r,k,mu); 651 } 652 else 653 { 654 l=gmscoeffs(r,k,mu+n); 655 } 676 656 C,r=l[1..2]; 677 657 A0=A0+C; … … 686 666 dbprint(printlevel-voice+2,"// compute basis of saturation of H''"); 687 667 H=std(H0); 688 int d0=max orddif(H)/deg(s);668 int d0=maxdeg1(H); 689 669 dbprint(printlevel-voice+2,"// transform H'' to saturation of H''"); 690 670 l=division(H,freemodule(mu)*s^k); … … 693 673 dbprint(printlevel-voice+2,"// k="+string(d0+1)); 694 674 dbprint(printlevel-voice+2,"// compute matrix A of t"); 695 l=gmscoeffs(r,d0+1,d0+1+n); 675 if(opt<=0) 676 { 677 l=gmscoeffs(r,d0+1,d0+1); 678 } 679 else 680 { 681 l=gmscoeffs(r,d0+1,d0+n+1); 682 } 696 683 C,r=l[1..2]; 697 684 A0=A0+C; … … 701 688 702 689 int i,j; 703 m atrixV;690 module U,V; 704 691 if(opt<=0) 705 692 { … … 820 807 } 821 808 822 dbprint(printlevel-voice+2,"// transform to Jordan basis");809 dbprint(printlevel-voice+2,"// compute weight filtration basis"); 823 810 intvec w0; 824 811 l=jordanbasis(A); 825 812 U,w0=l[1..2]; 826 813 V=lift(U,freemodule(mu)); 827 A0=V*A*U; 828 829 dbprint(printlevel-voice+2,"// compute weight filtration basis"); 814 A0=jet(V*A*U,0); 830 815 vector u; 831 816 i=1; 832 while(i<ncols(A ))817 while(i<ncols(A0)) 833 818 { 834 819 j=i+1; 835 while(j<ncols(A )&&A[i,i]==A[j,j])820 while(j<ncols(A0)&&A0[i,i]==A0[j,j]) 836 821 { 837 822 if(w0[i]<w0[j]) … … 846 831 j++; 847 832 } 848 if(j==ncols(A )&&A[i,i]==A[j,j]&&w0[i]<w0[j])833 if(j==ncols(A0)&&A0[i,i]==A0[j,j]&&w0[i]<w0[j]) 849 834 { 850 835 k=w0[i]; … … 926 911 ideal r=gmspoly*gmsbasis; 927 912 list l; 928 matrix U=freemodule(mu);929 913 matrix A[mu][mu],C; 930 914 module H,H1=freemodule(mu),freemodule(mu); … … 951 935 dbprint(printlevel-voice+2,"// compute basis of saturation of H''"); 952 936 H=std(H0); 953 int d0=max orddif(H)/deg(s);937 int d0=maxdeg1(H); 954 938 dbprint(printlevel-voice+2,"// k="+string(d0+N)); 955 939 dbprint(printlevel-voice+2,"// compute matrix A of t"); … … 1202 1186 dbprint(printlevel-voice+2,"// compute multiplication in Jacobian algebra"); 1203 1187 list M; 1204 m atrixU=freemodule(ncols(m));1188 module U=freemodule(ncols(m)); 1205 1189 for(i=ncols(m);i>=1;i--) 1206 1190 {
Note: See TracChangeset
for help on using the changeset viewer.