Changeset adf5bd6 in git


Ignore:
Timestamp:
Feb 16, 2002, 11:59:11 AM (22 years ago)
Author:
Mathias Schulze <mschulze@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
5ca9807ac2107d0a6dda03f38cbf50ee432d0a11
Parents:
e5ae3437b397e2d9bd9d13224c6fb63ffdc2a3f3
Message:
*mschulze: moved spnf from linalg.lib


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

Legend:

Unmodified
Added
Removed
  • Singular/LIB/gaussman.lib

    re5ae343 radf5bd6  
    11///////////////////////////////////////////////////////////////////////////////
    2 version="$Id: gaussman.lib,v 1.67 2002-02-12 17:39:27 mschulze Exp $";
     2version="$Id: gaussman.lib,v 1.68 2002-02-16 10:59:11 mschulze Exp $";
    33category="Singularities";
    44
     
    1818 spectrum(t);               singularity spectrum of t
    1919 sppairs(t);                spectral pairs of t
     20 spnf(a[,m][,V]);           spectrum normal form of (a,m,V)
    2021 sppnf(a,w[,m][,V]);        spectral pairs normal form of (a,w,m,V)
    2122 vfilt(t);                  V-filtration of t on Brieskorn lattice
     
    576577  poly t=x5+x2y2+y5;
    577578  sppprint(sppairs(t));
     579}
     580///////////////////////////////////////////////////////////////////////////////
     581
     582proc spnf(ideal e,list #)
     583"USAGE:   spnf(e[,m][,V]); ideal e, intvec m, list V
     584ASSUME:  ncols(e)==size(m)==size(V); typeof(V[i])=="int"
     585RETURN:
     586@format
     587list 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
     594EXAMPLE: 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}
     705example
     706{ "EXAMPLE:"; echo=2;
    578707}
    579708///////////////////////////////////////////////////////////////////////////////
Note: See TracChangeset for help on using the changeset viewer.