Changeset 99af0d in git


Ignore:
Timestamp:
Jul 8, 2010, 12:18:17 PM (13 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'f875bbaccd0831e36aaed09ff6adeb3eb45aeb94')
Children:
ba2be44979686110791931e4de45f3c9a46b1383
Parents:
9ae29ad7f27f9415c15371ba0d402a92043d4875
Message:
pfister: genus for char p

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

Legend:

Unmodified
Added
Removed
  • Singular/LIB/normal.lib

    r9ae29a r99af0d  
    20812081}
    20822082///////////////////////////////////////////////////////////////////////////////
     2083static proc deltaP(ideal I)
     2084{
     2085   def R=basering;
     2086   int c,d,i;
     2087   int n=nvars(R);
     2088   list nor;
     2089   if(size(I)>1){ERROR("no hypersurface");}
     2090   ideal J=std(slocus(I));
     2091   if(dim(J)<=0){return(0);}
     2092   poly h;
     2093   d=1;
     2094   while((d)&&(i<n))
     2095   {
     2096      i++;
     2097      h=var(i);
     2098      d=dim(std(J+ideal(h)));
     2099   }
     2100   i=0;
     2101   while(d)
     2102   {
     2103      i++;
     2104      if(i>10){ERROR("delta not found, please inform the authors")};
     2105      h=randomLast(100)[n];
     2106      d=dim(std(J+ideal(h)));
     2107   }
     2108   I=I,h-1;
     2109   if(char(R)<=19)
     2110   {
     2111      nor=normalP(I);
     2112   }
     2113   else
     2114   {
     2115      nor=normal(I);
     2116   }
     2117   return(nor[2][2]);
     2118}
    20832119
    20842120proc genus(ideal I,list #)
     
    21012137     def R1=changeord("dp");
    21022138     setring R1;
    2103      ideal J=std(imap(R0,I));
    2104      if(dim(J)!=1){ERROR("ideal defines not a curve");}
    2105      def S=changevar(varstr(R1)+",@t");
    2106      setring S;
    2107      ideal J=imap(R1,J);
    2108      J=std(homog(J,@t));
     2139     ideal I=imap(R0,I);
     2140     I=radical(I);
     2141     I=std(I);
     2142     if(dim(I)!=1)
     2143     {
     2144       if(((homog(I))&&(dim(I)!=2))||(!homog(I)))
     2145       {
     2146         ERROR("This is not a curve");
     2147       }
     2148     }
     2149     if(homog(I)&&(dim(I)==2))
     2150     {
     2151       def S=R0;
     2152       setring S;
     2153       ideal J=I;
     2154     }
     2155     else
     2156     {
     2157       def S=changevar(varstr(R0)+",@t");
     2158       setring S;
     2159       ideal J=imap(R1,I);
     2160       J=homog(J,@t);
     2161       J=std(J);
     2162     }
    21092163     int pa=1-hilbPoly(J)[1];
     2164     pa=pa-deltaP(J);
    21102165     setring R0;
    2111      if (char(basering)>7)
    2112      {
    2113        list nor=normal(I,"withDelta");
    2114        return(pa-nor[3][2]);
    2115      }
    2116      // only for very small char.:
    2117      list nor=normalP(I);
    2118      return(pa-nor[2][2]);
     2166     return(pa);
    21192167   }
    21202168   I=std(I);
Note: See TracChangeset for help on using the changeset viewer.