Changeset b4ffba in git for Singular/LIB/signature.lib


Ignore:
Timestamp:
Feb 8, 2010, 5:10:13 PM (14 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
20118af1e5a05009f39d3544f712db755a96eb7b
Parents:
224420bb74b68587e176a388ce296f410f692313
Message:
pfister: update signatire.lib

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

Legend:

Unmodified
Added
Removed
  • Singular/LIB/signature.lib

    r224420b rb4ffba  
    1111
    1212 PROCEDURES:
    13  brieskornSign(a,b,c);     compute signature of Brieskorn singularity x^a+y^b+z^c=0
    14  newtonpairs(f);           compute newton pairs of surface singularity
    15  signature(N,f);           compute signature of the surface singularity z^N+f(x,y)=0 for f irreducible
     13 brieskornSign(a,b,c);   signature of Brieskorn singularity x^a+y^b+z^c=0
     14 newtonpairs(f);         newton pairs of surface singularity
     15 signature(N,f);         signature of singularity z^+f(x,y)=0,f irreducible
    1616
    1717";
    1818
    19 LIB "poly.lib";
    20 LIB "general.lib";
    2119LIB "hnoether.lib";
    22 
    2320///////////////////////////////////////////////////////////////////////////////
    2421proc signature(int N,poly f)
     
    2825"
    2926{
     27   def R=basering;
     28   ring S=0,(x,y),dp;
     29   map phi =R,x,y;
     30   poly f=phi(f);
    3031   list L=newtonpairs(f);
     32   setring R;
    3133   if(size(L)>2)
    3234   {
    33      return(Generalcase(N,f));
     35     return(Generalcase(N,L));
    3436   }
    3537   if(size(L)==2)
    3638   {
    37      return(signtwopairs(N,f));
     39     return(signtwopairs(N,L));
    3840   }
    3941   return(brieskornSign(L[1][2],L[1][1],N));
     
    4143 example
    4244{ "EXAMPLE:"; echo = 2;
    43    ring r=0,(x,y,z),dp;
     45   ring r=0,(x,y),dp;
    4446   int N=2;
    4547   poly f=y8+2x6y3+x10+x9y;
     
    5355
    5456proc newtonpairs(poly f)
    55 "USAGE:newtonpairs(f);f=poly
    56  RETURN:newton pairs of surface singularity f=0
     57"USAGE:newtonpairs(f);f= irreducible bivariate poly
     58 RETURN:newton pairs of curve singularity f(x,y)=0
    5759 EXAMPLE:example newtonpairs; shows an example
    5860"
    5961{
     62 def R=basering;
     63 ring S=0,(x,y),dp;
     64 map phi =R,x,y;
     65 poly f=phi(f);
    6066 list M=invariants(f);
     67 setring R;
    6168 list L=M[1][3];
    6269 list K=M[1][4];
     
    8289example
    8390{ "EXAMPLE:"; echo = 2;
    84    ring r=0,(x,y,z),dp;
     91   ring r=0,(x,y),dp;
    8592   newtonpairs(y4+2x3y2+x6+x5y);
    8693}
     
    8895proc brieskornSign(a,b,c)
    8996"USAGE:brieskornSign(a,b,c);a,b,c=integers
    90  RETURN:signature of surface singularity defined by f=0
    91  ASSUME:f is Brieskorn singularity,f=x^a+y^b+z^c
     97 RETURN:signature of Brieskorn singularity x^a+y^b+z^c
    9298 EXAMPLE:example brieskornSign; shows an example
    9399"
    94100{
    95    poly f=var(1)^a+var(2)^b+var(3)^c;
    96101   int i,j,k,d;
    97102   for(i=1;i<=a-1;i++)
     
    109114example
    110115{ "EXAMPLE:"; echo = 2;
    111    ring r=0,(x,y,z),dp;
     116   ring R=0,x,dp;
    112117   brieskornSign(11,3,5);
    113118}
     
    135140example
    136141{ "EXAMPLE:"; echo = 2;
    137    ring r=0,(x,y,z),dp;
     142   ring r=0,x,dp;
    138143   signsin(11/3);
    139144}
     
    151156   int z=int(number(a));
    152157   int y=int(number(b));
    153 
    154158   r=z mod y;
    155159   int q=(z-r) div y;
     
    161165example
    162166{ "EXAMPLE:"; echo = 2;
    163      ring r=0,(x,y,z),dp;
     167     ring r=0,x,dp;
    164168     split1(11/3);
    165169}
     
    171175 "
    172176{
     177   def R=basering;
     178   ring S=0,x,dp;
    173179   int i;
    174180   poly f;
    175181   int z;
    176    poly g;
    177182   for(i=1;i<=n;i=i+2)
    178   {
    179      g=(-1)^z*x^i/factorial(i,0) ;
    180      f=f+g;
     183   {
     184     f=f+(-1)^z*x^i/factorial(i,0) ;
    181185     z++;
    182   }
    183   return(f);
    184 }
    185 example
    186 { "EXAMPLE:"; echo = 2;
    187    ring r=0,(x,y,z),dp;
     186   }
     187   setring R;
     188   map phi=S,var(1);
     189   poly f=phi(f);
     190   return(f);
     191}
     192example
     193{ "EXAMPLE:"; echo = 2;
     194   ring r=0,x,dp;
    188195   sin(10);
    189196}
     
    195202 "
    196203{
    197  poly f;
    198  poly g;
    199  int i;
    200  int z;
    201  for(i=0;i<=n;i=i+2)
    202  {
    203     g=(-1)^z*x^i/factorial(i,0);
    204     f=f+g;
    205     z++;
    206     }
     204   def R=basering;
     205   ring S=0,x,dp;
     206   poly f;
     207   int i;
     208   int z;
     209   for(i=0;i<=n;i=i+2)
     210   {
     211      f=f+(-1)^z*x^i/factorial(i,0);
     212      z++;
     213   }
     214   setring R;
     215   map phi=S,var(1);
     216   poly f=phi(f);
    207217   return(f);
    208218 }
    209219example
    210220{ "EXAMPLE:"; echo = 2;
    211    ring r=0,(x,y,z),dp;
     221   ring r=0,x,dp;
    212222   cos(10);
    213223}
     
    235245example
    236246{ "EXAMPLE:"; echo = 2;
    237    ring r=0,(x,y,z),dp;
     247   ring r=0,x,dp;
    238248   signcos(11/3);
    239249}
     
    245255"
    246256{
    247   list l=split1(u);
     257   list l=split1(u);
    248258   int z;
    249   if( l[1] mod 2==0 )
    250      { z=signsin(l[2]); }
    251   else
     259   if( l[1] mod 2==0 )
     260   { z=signsin(l[2]); }
     261   else
    252262   { z=signcos(l[1]);}
    253    return(z);  }
    254 example
    255 { "EXAMPLE:"; echo = 2;
    256    ring r=0,(x,y,z),dp;
     263   return(z);
     264}
     265example
     266{ "EXAMPLE:"; echo = 2;
     267   ring r=0,x,dp;
    257268   signa(11/3);
    258269}
    259270
    260 static proc prods(poly f)
    261 "USAGE:product(f);f=poly
    262  RETURN:product of first components of Newton pairs of f
     271static proc prods(list L)
     272"USAGE:product(L);L=list of intvec
     273 RETURN:product of first components of Newton pairs in L
    263274 EXAMPLE:example product; shows an example
    264275"
    265276{
    266    list L=newtonpairs(f);
    267277   int a=L[2][1];
    268278   int i;
     
    275285example
    276286{ "EXAMPLE:"; echo = 2;
    277    ring r=0,(x,y,z),dp;
    278    poly f=y4+2x3y2+x6+x5y;
    279    prods(f);
    280 }
    281 
    282 static proc Generalcase(int N,poly f)
    283 "USAGE:Generalcase(N,f);N=integer,f=poly
    284  RETURN:signature of surface singularity f=0
     287   list L=intvec(2,3),intvec(2,1);
     288   prods(L);
     289}
     290
     291static proc Generalcase(int N, list L)
     292"USAGE:Generalcase(N,f);N=integer,list L of intvec
     293 RETURN:signature of surface singularity with Newton pairs in L
    285294 ASSUME:number of newton pairs greater than 2
    286295 EXAMPLE:example Generalcase; shows an example
     
    288297{
    289298   int i,j,k,n,m,t,p;
    290    list L=newtonpairs(f);
    291299   int a=L[1][2];
    292    int b=prods(f);
     300   int b=prods(L);
    293301   int d=gcd(N,b);
    294302   int q=d*brieskornSign(a,L[1][1],N/d);
     
    328336example
    329337{ "EXAMPLE:"; echo = 2;
    330    ring r=0,(x,y,z),dp;
    331338   int N=2;
    332    poly f=x15-21x14+8x13y-6x13-16x12y+20x11y2-x12+8x11y-36x10y2+24x9y3+4x9y2-16x8y3+26x7y4-6x6y4+8x5y5+4x3y6-y8;
    333    Generalcase(N,f);
    334 
    335 }
    336 
    337 static proc signtwopairs(int N,poly f)
    338 "USAGE:signtwopairs(N,f);N=integer,f=poly
    339  RETURN:signature of surface singularity f=0
     339   list L=intvec(2,3),intvec(2,1),intvec(2,1);
     340   Generalcase(N,L);
     341
     342}
     343
     344static proc signtwopairs(int N,list L)
     345"USAGE:signtwopairs(N,f);N=integer,L=list of intvec
     346 RETURN:signature of surface singularity with Newton pairs in L
    340347 ASSUME:number of newton pairs equal to 2
    341348 EXAMPLE:example signtwopairs; shows an example
    342349"
    343350{
    344   list L=newtonpairs(f);
    345351  int a1,a2,b,d1,q,t;
    346352  a1=L[1][2];
    347   b=prods(f);
     353  b=prods(L);
    348354  d1=gcd(N,b);
    349355  q=d1*brieskornSign(a1,L[1][1],N/d1);
     
    354360example
    355361{ "EXAMPLE:"; echo = 2;
    356    ring r=0,(x,y,z),dp;
    357362   int N=2;
    358    poly f=y4+2x3y2+x6+x5y;
    359    signtwopairs(N,f);
    360 }
    361 
     363   list L=intvec(2,3),intvec(2,1);
     364   signtwopairs(N,L);
     365}
     366
     367static proc DedekindSum(number b, number c, int a)
     368{
     369   number s,d,e;
     370   int k;
     371   for(k=1;k<=a-1;k++)
     372   {
     373      d=k*b mod a;
     374      e=k*c mod a;
     375      if(d*e!=0)
     376      {
     377         s=s+(d/a-1/2)*(e/a-1/2);
     378      }
     379   }
     380   return(s);
     381}
     382
Note: See TracChangeset for help on using the changeset viewer.