Changeset 99af0d in git
- Timestamp:
- Jul 8, 2010, 12:18:17 PM (13 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'f875bbaccd0831e36aaed09ff6adeb3eb45aeb94')
- Children:
- ba2be44979686110791931e4de45f3c9a46b1383
- Parents:
- 9ae29ad7f27f9415c15371ba0d402a92043d4875
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/normal.lib
r9ae29a r99af0d 2081 2081 } 2082 2082 /////////////////////////////////////////////////////////////////////////////// 2083 static 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 } 2083 2119 2084 2120 proc genus(ideal I,list #) … … 2101 2137 def R1=changeord("dp"); 2102 2138 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 } 2109 2163 int pa=1-hilbPoly(J)[1]; 2164 pa=pa-deltaP(J); 2110 2165 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); 2119 2167 } 2120 2168 I=std(I);
Note: See TracChangeset
for help on using the changeset viewer.