Changeset adf5bd6 in git
- Timestamp:
- Feb 16, 2002, 11:59:11 AM (21 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'f875bbaccd0831e36aaed09ff6adeb3eb45aeb94')
- Children:
- 5ca9807ac2107d0a6dda03f38cbf50ee432d0a11
- Parents:
- e5ae3437b397e2d9bd9d13224c6fb63ffdc2a3f3
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/gaussman.lib
re5ae343 radf5bd6 1 1 /////////////////////////////////////////////////////////////////////////////// 2 version="$Id: gaussman.lib,v 1.6 7 2002-02-12 17:39:27mschulze Exp $";2 version="$Id: gaussman.lib,v 1.68 2002-02-16 10:59:11 mschulze Exp $"; 3 3 category="Singularities"; 4 4 … … 18 18 spectrum(t); singularity spectrum of t 19 19 sppairs(t); spectral pairs of t 20 spnf(a[,m][,V]); spectrum normal form of (a,m,V) 20 21 sppnf(a,w[,m][,V]); spectral pairs normal form of (a,w,m,V) 21 22 vfilt(t); V-filtration of t on Brieskorn lattice … … 576 577 poly t=x5+x2y2+y5; 577 578 sppprint(sppairs(t)); 579 } 580 /////////////////////////////////////////////////////////////////////////////// 581 582 proc spnf(ideal e,list #) 583 "USAGE: spnf(e[,m][,V]); ideal e, intvec m, list V 584 ASSUME: ncols(e)==size(m)==size(V); typeof(V[i])=="int" 585 RETURN: 586 @format 587 list sp; spectrum normal form of (e,m,V) 588 ideal sp[1]; numbers in e in increasing order 589 intvec sp[2]; 590 int sp[2][i]; multiplicity of number sp[1][i] in e 591 list sp[3]; 592 module sp[3][i]; module associated to number sp[1][i] 593 @end format 594 EXAMPLE: example spnf; shows examples 595 " 596 { 597 int n=ncols(e); 598 intvec m; 599 module v; 600 list V; 601 int i,j; 602 while(i<size(#)) 603 { 604 i++; 605 if(typeof(#[i])=="intvec") 606 { 607 m=#[i]; 608 } 609 if(typeof(#[i])=="module") 610 { 611 v=#[i]; 612 for(j=n;j>=1;j--) 613 { 614 V[j]=module(v[j]); 615 } 616 } 617 if(typeof(#[i])=="list") 618 { 619 V=#[i]; 620 } 621 } 622 if(m==0) 623 { 624 for(i=n;i>=1;i--) 625 { 626 m[i]=1; 627 } 628 } 629 630 int k; 631 ideal e0; 632 intvec m0; 633 list V0; 634 number e1; 635 int m1; 636 for(i=n;i>=1;i--) 637 { 638 if(m[i]!=0) 639 { 640 for(j=i-1;j>=1;j--) 641 { 642 if(m[j]!=0) 643 { 644 if(number(e[i])>number(e[j])) 645 { 646 e1=number(e[i]); 647 e[i]=e[j]; 648 e[j]=e1; 649 m1=m[i]; 650 m[i]=m[j]; 651 m[j]=m1; 652 if(size(V)>0) 653 { 654 v=V[i]; 655 V[i]=V[j]; 656 V[j]=v; 657 } 658 } 659 if(number(e[i])==number(e[j])) 660 { 661 m[i]=m[i]+m[j]; 662 m[j]=0; 663 if(size(V)>0) 664 { 665 V[i]=V[i]+V[j]; 666 } 667 } 668 } 669 } 670 k++; 671 e0[k]=e[i]; 672 m0[k]=m[i]; 673 if(size(V)>0) 674 { 675 V0[k]=V[i]; 676 } 677 } 678 } 679 680 if(size(V0)>0) 681 { 682 n=size(V0); 683 module U=std(V0[n]); 684 for(i=n-1;i>=1;i--) 685 { 686 V0[i]=simplify(reduce(V0[i],U),1); 687 if(i>=2) 688 { 689 U=std(U+V0[i]); 690 } 691 } 692 } 693 694 list l; 695 if(k>0) 696 { 697 l=e0,m0; 698 if(size(V0)>0) 699 { 700 l[3]=V0; 701 } 702 } 703 return(l); 704 } 705 example 706 { "EXAMPLE:"; echo=2; 578 707 } 579 708 ///////////////////////////////////////////////////////////////////////////////
Note: See TracChangeset
for help on using the changeset viewer.