Changeset f67865 in git for Singular/LIB/ring.lib
- Timestamp:
- Nov 9, 2006, 10:00:09 AM (17 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 09505df156de30668f524d9cb4c646fdd1ce5428
- Parents:
- 1e65071e77344a627d6b0668eba70a23e15090a1
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/ring.lib
r1e6507 rf67865 1 1 /////////////////////////////////////////////////////////////////////////////// 2 version="$Id: ring.lib,v 1.2 7 2006-07-20 15:35:51Singular Exp $";2 version="$Id: ring.lib,v 1.28 2006-11-09 09:00:09 Singular Exp $"; 3 3 category="General purpose"; 4 4 info=" … … 682 682 /////////////////////////////////////////////////////////////////////////////// 683 683 684 proc ringweights ( list #)684 proc ringweights (def P) 685 685 "USAGE: ringweights(P); P=name of an existing ring (true name, not a string) 686 686 RETURN: intvec consisting of the weights of the variables of P, as they … … 691 691 " 692 692 { 693 int ii,q,fi,fo,fia; 694 intvec rw,nw; 695 string os; 696 def P = #[1]; 697 string osP = ordstr(P); 698 fo = 1; 699 //------------------------- find weights in ordstr(P) ------------------------- 700 fi = find(osP,"(",fo); 701 fia = find(osP,"a",fo)+find(osP,"w",fo)+find(osP,"W",fo); 702 while ( fia ) 703 { 704 os = osP[fi+1,find(osP,")",fi)-fi-1]; 705 if( find(os,",") ) 706 { 707 execute("nw = "+os+";"); 708 if( size(nw) > ii ) 709 { 710 rw = rw,nw[ii+1..size(nw)]; 711 } 712 else { ii = ii - size(nw); } 713 714 if( find(osP[1,fi],"a",fo) ) { ii = size(nw); } 715 } 716 else 717 { 718 execute("q = "+os+";"); 719 if( q > ii ) 720 { 721 nw = 0; nw[q-ii] = 0; 722 nw = nw + 1; //creates an intvec 1,...,1 of length q-ii 723 rw = rw,nw; 724 } 725 else { ii = ii - q; } 726 } 727 fo = fi+1; 728 fi = find(osP,"(",fo); 729 fia = find(osP,"a",fo)+find(osP,"w",fo)+find(osP,"W",fo); 730 } 731 //-------------- adjust weight vector to length = nvars(P) ------------------- 732 if( fo > 1 ) 733 { // case when weights were found 734 rw = rw[2..size(rw)]; 735 if( size(rw) > nvars(P) ) 736 { 737 rw = rw[1..nvars(P)]; 738 } 739 if( size(rw) < nvars(P) ) 740 { 741 nw=0; nw[nvars(P)-size(rw)]=0; nw=nw+1; rw=rw,nw; 742 } 743 } 744 else 745 { // case when no weights were found 746 rw[nvars(P)]= 0; rw=rw+1; 747 } 693 int i; 694 intvec rw; 695 //------------------------- find weights ------------------------- 696 for(i=nvars(P);i>0;i--) 697 { rw[i]=ord(var(i)); } 748 698 return(rw); 749 699 }
Note: See TracChangeset
for help on using the changeset viewer.