Changeset f67865 in git for Singular/LIB/ring.lib


Ignore:
Timestamp:
Nov 9, 2006, 10:00:09 AM (17 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
09505df156de30668f524d9cb4c646fdd1ce5428
Parents:
1e65071e77344a627d6b0668eba70a23e15090a1
Message:
*hannes: ringweights


git-svn-id: file:///usr/local/Singular/svn/trunk@9473 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/ring.lib

    r1e6507 rf67865  
    11///////////////////////////////////////////////////////////////////////////////
    2 version="$Id: ring.lib,v 1.27 2006-07-20 15:35:51 Singular Exp $";
     2version="$Id: ring.lib,v 1.28 2006-11-09 09:00:09 Singular Exp $";
    33category="General purpose";
    44info="
     
    682682///////////////////////////////////////////////////////////////////////////////
    683683
    684 proc ringweights (list # )
     684proc ringweights (def P)
    685685"USAGE:   ringweights(P); P=name of an existing ring (true name, not a string)
    686686RETURN:  intvec consisting of the weights of the variables of P, as they
     
    691691"
    692692{
    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)); }
    748698   return(rw);
    749699}
Note: See TracChangeset for help on using the changeset viewer.