Changeset 2ca72f in git


Ignore:
Timestamp:
Feb 21, 2002, 6:52:23 PM (21 years ago)
Author:
Mathias Schulze <mschulze@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'f875bbaccd0831e36aaed09ff6adeb3eb45aeb94')
Children:
8fe22ccc9de914e68da65f1ac8874c938ddd2809
Parents:
15d67dbe0d26f75f69401431c375a9cc6f137faa
Message:
*** empty log message ***


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

Legend:

Unmodified
Added
Removed
  • Singular/LIB/gaussman.lib

    r15d67db r2ca72f  
    11///////////////////////////////////////////////////////////////////////////////
    2 version="$Id: gaussman.lib,v 1.68 2002-02-16 10:59:11 mschulze Exp $";
     2version="$Id: gaussman.lib,v 1.69 2002-02-21 17:52:23 mschulze Exp $";
    33category="Singularities";
    44
     
    326326///////////////////////////////////////////////////////////////////////////////
    327327
    328 static proc saturate(int K0)
     328static proc saturate()
    329329{
    330330  int mu=ncols(gmsbasis);
     
    362362///////////////////////////////////////////////////////////////////////////////
    363363
    364 static proc basisrep(matrix A0,ideal r,module H,int k0,int K,int K0)
     364static proc basisrep(matrix A0,ideal r,module H,int k0,int K)
    365365{
    366366  dbprint(printlevel-voice+2,"// compute matrix A of t");
     
    378378///////////////////////////////////////////////////////////////////////////////
    379379
    380 static proc eigvals(matrix A0,ideal r,module H,int k0,int K0)
     380static proc eigvals(matrix A0,ideal r,module H,int k0)
    381381{
    382382  dbprint(printlevel-voice+2,
    383383    "// compute eigenvalues e with multiplicities m of A");
    384384  matrix A;
    385   A,A0,r=basisrep(A0,r,H,k0,0,K0);
     385  A,A0,r=basisrep(A0,r,H,k0,0);
    386386  list l=eigenvals(A);
    387387  def e,m=l[1..2];
     
    389389  dbprint(printlevel-voice+2,"// m="+string(m));
    390390
    391   return(e,m,A0,r,int(max(e)-min(e)));
    392 }
    393 ///////////////////////////////////////////////////////////////////////////////
    394 
    395 static proc transf(matrix A,matrix A0,ideal r,module H,module H0,ideal e,intvec m,int k0,int k1,int K,int K0)
     391  return(e,m,A0,r);
     392}
     393///////////////////////////////////////////////////////////////////////////////
     394
     395static proc transf(matrix A,matrix A0,ideal r,module H,module H0,ideal e,intvec m,int k0,int K,int opt)
    396396{
    397397  int mu=ncols(gmsbasis);
    398398
    399   dbprint(printlevel-voice+2,"// compute minimum e0 and maximum e1 of e");
    400399  number e0,e1=min(e),max(e);
    401   dbprint(printlevel-voice+2,"// e0="+string(e0));
    402   dbprint(printlevel-voice+2,"// e1="+string(e1));
    403   A,A0,r=basisrep(A0,r,H,k0,K+k1,K0+k1);
     400
     401  int i,j,k;
     402  int k1;
     403  intvec d;
     404  d[ncols(e)]=0;
     405  if(opt)
     406  {
     407    dbprint(printlevel-voice+2,
     408      "// compute maximal differences d of e");
     409    for(i=1;i<=ncols(e);i++)
     410    {
     411      d[i]=int(e[i]-e0);
     412    }
     413  }
     414  else
     415  {
     416    dbprint(printlevel-voice+2,
     417      "// compute maximal integer differences d of e");
     418    for(i=1;i<ncols(e);i++)
     419    {
     420      for(j=i+1;i<=ncols(e);i++)
     421      {
     422        k=int(e[i]-e[j]);
     423        if(number(e[i]-e[j])==k)
     424        {
     425          if(k>d[i])
     426          {
     427            d[i]=k;
     428          }
     429          if(-k>d[j])
     430          {
     431            d[j]=-k;
     432          }
     433        }
     434      }
     435    }
     436  }
     437  dbprint(printlevel-voice+2,"// d="+string(d));
     438
     439  for(i,k=1,0;i<=size(d);i++)
     440  {
     441    if(k<d[i])
     442    {
     443      k=d[i];
     444    }
     445  }
     446
     447  A,A0,r=basisrep(A0,r,H,k0,K+k1);
    404448  module U0=s^k0*freemodule(mu);
    405449
    406   if(e1>=e0+1)
    407   {
    408     int i,j,i0,j0,i1,j1;
     450  if(k>0)
     451  {
     452    int i0,j0,i1,j1;
    409453    module U,V;
    410454    list l;
    411455
    412     while(e1>=e0+1)
     456    while(k>0)
    413457    {
    414458      dbprint(printlevel-voice+2,"// transform to separate eigenvalues");
     
    423467      U0=U0*U;
    424468
    425       dbprint(printlevel-voice+2,"// transform to reduce e1 by 1");
     469      dbprint(printlevel-voice+2,
     470        "// transform to reduce d by 1");
    426471      for(i0,i=1,1;i0<=ncols(e);i0++)
    427472      {
     
    432477            for(j1=1;j1<=m[j0];j1,j=j1+1,j+1)
    433478            {
    434               if(number(e[i0])<e0+1&&number(e[j0])>=e0+1)
     479              if(d[i0]==0&&d[j0]>0)
    435480              {
    436481                A[i,j]=A[i,j]/s;
    437482              }
    438               if(number(e[i0])>=e0+1&&number(e[j0])<e0+1)
     483              if(d[i0]>0&&d[j0]==0)
    439484              {
    440485                A[i,j]=A[i,j]*s;
     
    448493      for(i0,i=1,1;i0<=ncols(e);i0++)
    449494      {
    450         if(number(e[i0])>=e0+1)
     495        if(d[i0]>0)
    451496        {
    452497          for(i1=1;i1<=m[i0];i1,i=i1+1,i+1)
     
    457502          }
    458503          e[i0]=e[i0]-1;
     504          d[i0]=d[i0]-1;
    459505        }
    460506        else
     
    465511      H0=transpose(H0);
    466512
    467       l=spnf(e,m);
    468       e,m=l[1..2];
    469 
    470       e1=e1-1;
    471       dbprint(printlevel-voice+2,"// e1="+string(e1));
     513      l=sppnf(e,d,m);
     514      e,d,m=l[1..3];
     515
     516      k--;
    472517    }
    473518
     
    498543  ideal e;
    499544  intvec m;
    500   int k1;
    501 
    502   def A0,r,H,H0,k0=saturate(n);
    503   e,m,A0,r,k1=eigvals(A0,r,H,k0,n);
    504   A,A0,r,H0,U0,e,m=transf(A,A0,r,H,H0,e,m,k0,k1,0,0);
     545
     546  def A0,r,H,H0,k0=saturate();
     547  e,m,A0,r=eigvals(A0,r,H,k0);
     548  A,A0,r,H0,U0,e,m=transf(A,A0,r,H,H0,e,m,k0,0,0);
    505549
    506550  list l=jordan(A,e,m);
     
    916960  ideal e;
    917961  intvec m;
    918   int k1;
    919 
    920   def A0,r,H,H0,k0=saturate(n);
    921   e,m,A0,r,k1=eigvals(A0,r,H,k0,n);
    922   A,A0,r,H0,U0,e,m=transf(A,A0,r,H,H0,e,m,k0,k1,0,0);
     962
     963  def A0,r,H,H0,k0=saturate();
     964  e,m,A0,r=eigvals(A0,r,H,k0);
     965  A,A0,r,H0,U0,e,m=transf(A,A0,r,H,H0,e,m,k0,0,1);
    923966
    924967  dbprint(printlevel-voice+2,"// compute weight filtration basis");
     
    10211064  ideal e;
    10221065  intvec m;
    1023   int k1;
    1024 
    1025   def A0,r,H,H0,k0=saturate(2*n+mu-1);
    1026   e,m,A0,r,k1=eigvals(A0,r,H,k0,n);
    1027   A,A0,r,H0,U0,e,m=transf(A,A0,r,H,H0,e,m,k0,k1,k0+k1,k0+k1);
     1066
     1067  def A0,r,H,H0,k0=saturate();
     1068  e,m,A0,r=eigvals(A0,r,H,k0);
     1069  int k1=int(max(e)-min(e));
     1070  A,A0,r,H0,U0,e,m=transf(A,A0,r,H,H0,e,m,k0,k0+k1,1);
    10281071
    10291072  ring S=0,s,(ds,c);
Note: See TracChangeset for help on using the changeset viewer.