Changeset ae0203 in git
- Timestamp:
- Feb 17, 2004, 5:03:20 PM (20 years ago)
- Branches:
- (u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
- Children:
- d8932ed574a04a0801bb1e297ae05eb469cee24c
- Parents:
- 01d285f972c12952121927cfa7c3fff6ede9d3b5
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/brnoeth.lib
r01d285 rae0203 1 version="$Id: brnoeth.lib,v 1.1 2 2001-08-27 14:47:46Singular Exp $";2 category=" Miscellaneous";1 version="$Id: brnoeth.lib,v 1.13 2004-02-17 16:03:20 Singular Exp $"; 2 category="Coding theory"; 3 3 info=" 4 4 LIBRARY: brnoeth.lib Brill-Noether Algorithm, Weierstrass-SG and AG-codes … … 11 11 The computation of Weierstrass semigroups is also implemented.@* 12 12 The procedures are intended only for plane (singular) curves defined over 13 a prime field of positive chara teristic.@*13 a prime field of positive characteristic.@* 14 14 For more information about the library see the end of the file brnoeth.lib. 15 15 16 16 MAIN PROCEDURES: 17 17 Adj_div(f); computes the conductor of a curve 18 NSplaces(h,A); computes non-singular places up to given degree18 NSplaces(h,A); computes non-singular places with given degrees 19 19 BrillNoether(D,C); computes a vector space basis of the linear system L(D) 20 20 Weierstrass(P,m,C); computes the Weierstrass semigroup of C at P up to m … … 514 514 // checks wether I is contained in J and returns a boolean 515 515 // remark : J is assumed to be given by a standard basis 516 int s= size(I);516 int s=ncols(I); 517 517 int i; 518 518 for (i=1;i<=s;i=i+1) … … 840 840 } 841 841 kill(FF2); 842 // list Fp;843 // ideal facs=factorize(x^(q-1)-1,1);844 // for (i=1;i<=q-1;i=i+1)845 // {846 // Fq[i]=number(subst(facs[i],x,0));847 // }848 842 for (i=1;i<=q-1;i=i+1) 849 843 { 850 // b=Fq[i];851 844 b=FF1[i]; 852 845 if (subst(mpol,x,b)==0) … … 1155 1148 int i,j,k; 1156 1149 int m,n; 1157 list L@HNE=essdevelop(CHI); 1150 // list L@HNE=essdevelop(CHI); 1151 list L@HNE=ratdevelop(CHI); 1158 1152 export(L@HNE); 1159 1153 int n_branches=size(L@HNE); … … 1198 1192 } 1199 1193 } 1194 //////// 1195 check=0; 1196 //////// 1200 1197 if (size(update_CURVE[5])>0) 1201 1198 { … … 1312 1309 { 1313 1310 ext_0=dgs[i]; 1311 //////// 1312 check=0; 1313 //////// 1314 1314 if (size(update_CURVE[5])>=ext_0) 1315 1315 { … … 1464 1464 } 1465 1465 } 1466 //////// 1467 check=0; 1468 //////// 1466 1469 if (size(update_CURVE[5])>=ext2) 1467 1470 { … … 1604 1607 // local ring exists 1605 1608 ext_0=ext1*dgs[i]; 1609 //////// 1610 check=0; 1611 //////// 1606 1612 if (size(update_CURVE[5])>=ext_0) 1607 1613 { … … 2152 2158 /////////////////////////////////////////////////////////////////////////////// 2153 2159 2154 proc NSplaces (int h,list CURVE) 2155 "USAGE: NSplaces( h, CURVE ), where h is an integer and CURVE is a list 2156 RETURN: list L with updated data of CURVE after computing all 2157 points up to degree H+h (H the maximum degree of the previously 2158 computed places): @* 2160 proc NSplaces (intvec h,list CURVE) 2161 "USAGE: NSplaces( h, CURVE ), where h is an intvec and CURVE is a list 2162 RETURN: list L with updated data of CURVE after computing all non-singular 2163 affine closed places whose degrees are in the intvec h: @* 2159 2164 @format 2160 2165 in L[1][1]: (affine ring) lists Aff_Points(d) with affine non-singular 2161 points of degree d (if non-empty)2166 (closed) points of degree d (if non-empty), 2162 2167 in L[3]: the newly computed closed places are added, 2163 2168 in L[5]: local rings created/updated to store (repres. of) new places. … … 2171 2176 " 2172 2177 { 2173 // computes all the non-singular closed places with degree up to a certain 2174 // bound; this bound is the maximum degree of an existing singular place or 2175 // non-singular place at infinity plus an increment h>=0 which is given as 2176 // input 2178 // computes all the non-singular affine (closed) places with fixed degrees 2177 2179 // creates lists of points and the corresponding places 2178 2180 // list CURVE must be the output of the procedure "Adj_div" 2179 // warning : if h<0 then it will be replaced by h=0 2181 // notice : if h==0 then nothing is done 2182 // warning : non-positive entries are forgotten 2183 if (h==0) 2184 { 2185 return(CURVE); 2186 } 2180 2187 intvec opgt=option(get); 2181 2188 option(redSB); 2182 2189 def Base_R=basering; 2183 2190 def aff_r=CURVE[1][1]; 2184 int M=size(CURVE[5]); 2185 if (h>0) 2186 { 2187 M=M+h; 2188 } 2191 int M=size(h); 2189 2192 list update_CURVE=CURVE; 2190 int i,j, s;2193 int i,j,l,s; 2191 2194 setring aff_r; 2192 2195 intvec pP=1,0,0; 2193 2196 for (i=1;i<=M;i=i+1) 2194 2197 { 2195 dbprint(printlevel+1,"Computing non-singular affine places of degree " 2196 +string(i)+" ... "); 2197 if (defined(Aff_Points(i))==0) 2198 { 2199 list Aff_Points(i)=closed_points_deg(CHI,i,Aff_SLocus); 2200 s=size(Aff_Points(i)); 2201 if (s>0) 2202 { 2203 export(Aff_Points(i)); 2204 pP[2]=i; 2205 for (j=1;j<=s;j=j+1) 2206 { 2207 pP[3]=j; 2208 update_CURVE=place(pP,0,update_CURVE); 2198 l=h[i]; 2199 if (l>0) 2200 { 2201 dbprint(printlevel+1,"Computing non-singular affine places of degree " 2202 +string(l)+" ... "); 2203 if (defined(Aff_Points(l))==0) 2204 { 2205 list Aff_Points(l)=closed_points_deg(CHI,l,Aff_SLocus); 2206 s=size(Aff_Points(l)); 2207 if (s>0) 2208 { 2209 export(Aff_Points(l)); 2210 pP[2]=l; 2211 for (j=1;j<=s;j=j+1) 2212 { 2213 pP[3]=j; 2214 update_CURVE=place(pP,0,update_CURVE); 2215 } 2209 2216 } 2210 2217 } … … 2224 2231 // The list of computed places: 2225 2232 C[3]; 2226 // create places up to degree 1+32227 list L=NSplaces( 3,C);2233 // create places up to degree 4 2234 list L=NSplaces(1..4,C); 2228 2235 // The list of computed places is now: 2229 2236 L[3]; … … 3369 3376 ring s=2,(x,y),lp; 3370 3377 list C=Adj_div(x3y+y3+x); 3371 C=NSplaces( 3,C);3378 C=NSplaces(1..4,C); 3372 3379 // the first 3 Places in C[3] are of degree 1. 3373 3380 // we define the rational divisor G = 4*C[3][1]+4*C[3][3] (of degree 8): … … 3624 3631 ring s=2,(x,y),lp; 3625 3632 list C=Adj_div(x3y+y3+x); 3626 C=NSplaces( 3,C);3633 C=NSplaces(1..4,C); 3627 3634 def R=C[1][2]; 3628 3635 setring R; … … 3793 3800 if ( (s mod i) == 0 ) 3794 3801 { 3795 def auxR=EC[5][i][1]; 3796 setring auxR; 3797 auxIV[i]=size(POINTS); 3798 setring BRing; 3799 kill(auxR); 3802 if (typeof(EC[5][i])=="list") 3803 { 3804 def auxR=EC[5][i][1]; 3805 setring auxR; 3806 auxIV[i]=size(POINTS); 3807 setring BRing; 3808 kill(auxR); 3809 } 3810 else 3811 { 3812 auxIV[i]=0; 3813 } 3800 3814 } 3801 3815 else … … 3813 3827 { 3814 3828 l=iw[2]; 3815 // check that this place(s) are not in sup(D)3829 // check that this place(s) is/are not in sup(D) 3816 3830 if (d==1) 3817 3831 { … … 3912 3926 ring s=2,(x,y),lp; 3913 3927 list HC=Adj_div(x3+y2+y); 3914 HC=NSplaces(1 ,HC);3928 HC=NSplaces(1..2,HC); 3915 3929 HC=extcurve(2,HC); 3916 3930 def ER=HC[1][4]; … … 3959 3973 ring s=2,(x,y),lp; 3960 3974 list HC=Adj_div(x3+y2+y); 3961 HC=NSplaces(1 ,HC);3975 HC=NSplaces(1..2,HC); 3962 3976 HC=extcurve(2,HC); 3963 3977 def ER=HC[1][4]; … … 3991 4005 @format 3992 4006 L[1][5]: ring p,(x,y,t),ls, 3993 L[2][3]: int (the number of places over the base field).4007 L[2][3]: int (the number of computed places over the base field). 3994 4008 @end format 3995 4009 In both cases, in the ring L[1][5] lists with the data for all the 3996 rational places (after a field extension of degree d) are4010 computed rational places (after a field extension of degree d) are 3997 4011 created (see @ref{Adj_div}): 3998 4012 @format 3999 4013 lists POINTS, LOC_EQS, BRANCHES, PARAMETRIZATIONS. 4000 4014 @end format 4001 NOTE: The list CURVE should be the output of @code{NSplaces} and has 4002 to contain (at least) all places up to degree d. @* 4015 NOTE: The list CURVE should be the output of @code{NSplaces}, 4016 and must contain (at least) one place of degree d. @* 4017 You actually need all the places with degree dividing d. 4018 Otherwise, not all the places are computed, but only part of them. @* 4003 4019 This procedure must be executed before constructing AG codes, 4004 4020 even if no extension is needed. The ring L[1][4] must be active … … 4047 4063 else 4048 4064 { 4049 if (size(CURVE[5])>=d) 4050 { 4051 int i,j,k; 4052 if (typeof(CURVE[5][d])=="list") 4053 { 4054 def S(d)=CURVE[5][d][1]; 4055 setring S(d); 4056 } 4057 else 4058 { 4059 ring S(d)=char(basering),t,ls; 4060 list POINTS=list(); 4061 } 4062 string smin=string(minpoly); 4063 setring BR; 4064 ring RatPl=(char(basering),a),(x,y,t),ls; 4065 execute("minpoly="+smin+";"); 4066 list POINTS=imap(S(d),POINTS); 4067 list LOC_EQS=imap(S(d),LOC_EQS); 4068 list BRANCHES=imap(S(d),BRANCHES); 4069 list PARAMETRIZATIONS=imap(S(d),PARAMETRIZATIONS); 4070 kill(S(d)); 4071 int s=size(POINTS); 4072 int counter=0; 4073 int piv=0; 4074 for (j=1;j<=s;j=j+1) 4075 { 4065 // exclude the case when no place of degree d was previously computed/found 4066 int dd=size(CURVE[5]); 4067 if (dd<d) 4068 { 4069 ERROR("you did not compute/find any place of degree "+string(d)); 4070 } 4071 if (typeof(CURVE[5][d])<>"list") 4072 { 4073 ERROR("you did not compute/find any place of degree "+string(d)); 4074 } 4075 4076 // Define the ring "RatPl" : 4077 def S(d)=CURVE[5][d][1]; 4078 setring S(d); 4079 string smin=string(minpoly); 4080 setring BR; 4081 ring RatPl=(char(basering),a),(x,y,t),ls; 4082 execute("minpoly="+smin+";"); 4083 4084 // import data from local ring S(d) 4085 list POINTS=imap(S(d),POINTS); 4086 list LOC_EQS=imap(S(d),LOC_EQS); 4087 list BRANCHES=imap(S(d),BRANCHES); 4088 list PARAMETRIZATIONS=imap(S(d),PARAMETRIZATIONS); 4089 kill(S(d)); 4090 4091 // conjugate data from S(d) 4092 int s=size(POINTS); 4093 int counter=0; 4094 int piv=0; 4095 int i,j,k; 4096 for (j=1;j<=s;j=j+1) 4097 { 4098 counter=counter+1; 4099 piv=counter; 4100 for (k=1;k<d;k=k+1) 4101 { 4102 POINTS=insert(POINTS,Frobenius(POINTS[piv],1),counter); 4103 LOC_EQS=insert(LOC_EQS,Frobenius(LOC_EQS[piv],1),counter); 4104 BRANCHES=insert(BRANCHES,conj_b(BRANCHES[piv],1),counter); 4105 PARAMETRIZATIONS=insert(PARAMETRIZATIONS,Frobenius( 4106 PARAMETRIZATIONS[piv],1),counter); 4076 4107 counter=counter+1; 4077 4108 piv=counter; 4078 for (k=1;k<d;k=k+1) 4079 { 4080 POINTS=insert(POINTS,Frobenius(POINTS[piv],1),counter); 4081 LOC_EQS=insert(LOC_EQS,Frobenius(LOC_EQS[piv],1),counter); 4082 BRANCHES=insert(BRANCHES,conj_b(BRANCHES[piv],1),counter); 4083 PARAMETRIZATIONS=insert(PARAMETRIZATIONS,Frobenius( 4084 PARAMETRIZATIONS[piv],1),counter); 4085 counter=counter+1; 4086 piv=counter; 4087 } 4088 } 4089 string olda; 4090 poly paux; 4091 intvec iv,iw; 4092 int ii,jj,kk,m,n; 4093 for (i=d-1;i>=2;i=i-1) 4094 { 4095 if ( (d mod i)==0 ) 4096 { 4097 if (typeof(CURVE[5][i])=="list") 4098 { 4099 def S(i)=CURVE[5][i][1]; 4100 } 4101 else 4102 { 4103 ring S(i)=char(basering),t,ls; 4104 list POINTS=list(); 4105 setring BR; 4106 } 4109 } 4110 } 4111 4112 // now the same thing for smaller base fields 4113 string olda; 4114 poly paux; 4115 intvec iv,iw; 4116 int ii,jj,kk,m,n; 4117 for (i=d-1;i>=2;i=i-1) 4118 { 4119 if ( (d mod i)==0 ) 4120 { 4121 if (typeof(CURVE[5][i])=="list") 4122 { 4123 def S(i)=CURVE[5][i][1]; 4124 // embedd S(i) inside basering == RatPl " ==S(d) " 4107 4125 olda=subfield(S(i)); 4108 4126 setring S(i); 4109 4127 s=size(POINTS); 4110 4128 setring RatPl; 4129 // import data from S(i) 4111 4130 for (j=s;j>=1;j=j-1) 4112 4131 { … … 4114 4133 POINTS=insert(POINTS,list(),0); 4115 4134 POINTS[1][1]=number(importdatum(S(i),"POINTS["+string(j) 4116 4135 +"][1]",olda)); 4117 4136 POINTS[1][2]=number(importdatum(S(i),"POINTS["+string(j) 4118 4137 +"][2]",olda)); 4119 4138 POINTS[1][3]=number(importdatum(S(i),"POINTS["+string(j) 4120 4139 +"][3]",olda)); 4121 4140 LOC_EQS=insert(LOC_EQS,importdatum(S(i),"LOC_EQS["+string(j) 4122 4141 +"]",olda),0); 4123 4142 BRANCHES=insert(BRANCHES,list(),0); 4124 4143 setring S(i); … … 4140 4159 { 4141 4160 Maux[ii,jj]=importdatum(S(i),"BRANCHES["+string(j) 4142 4161 +"][1]["+string(ii)+","+string(jj)+"]",olda); 4143 4162 } 4144 4163 } … … 4163 4182 BRANCHES=insert(BRANCHES,conj_b(BRANCHES[piv],1),counter); 4164 4183 PARAMETRIZATIONS=insert(PARAMETRIZATIONS,Frobenius( 4165 4184 PARAMETRIZATIONS[piv],1),counter); 4166 4185 } 4167 4186 setring S(i); … … 4172 4191 } 4173 4192 } 4174 kill(iw); 4175 kill(paux); 4176 if (typeof(CURVE[5][1])=="list") 4177 { 4178 def S(1)=CURVE[5][1][1]; 4179 } 4180 else 4181 { 4182 ring S(1)=char(basering),t,ls; 4183 list POINTS=list(); 4184 setring RatPl; 4185 } 4193 } 4194 kill(iw); 4195 kill(paux); 4196 4197 // finally add points from S(1) 4198 if (typeof(CURVE[5][1])=="list") 4199 { 4200 def S(1)=CURVE[5][1][1]; 4186 4201 POINTS=imap(S(1),POINTS)+POINTS; 4187 4202 LOC_EQS=imap(S(1),LOC_EQS)+LOC_EQS; 4188 4203 BRANCHES=imap(S(1),BRANCHES)+BRANCHES; 4189 4204 PARAMETRIZATIONS=imap(S(1),PARAMETRIZATIONS)+PARAMETRIZATIONS; 4190 export(POINTS); 4191 export(LOC_EQS); 4192 export(BRANCHES); 4193 export(PARAMETRIZATIONS); 4194 int NrRatPl=size(POINTS); 4195 ext_CURVE[2][3]=NrRatPl; 4196 setring BR; 4197 ext_CURVE[1][5]=RatPl; 4198 ring r(d)=(char(basering),a),(x,y),lp; 4199 execute("minpoly="+smin+";"); 4200 setring BR; 4201 ext_CURVE[1][3]=r(d); 4202 ring R(d)=(char(basering),a),(x,y,z),lp; 4203 execute("minpoly="+smin+";"); 4204 setring BR; 4205 ext_CURVE[1][4]=R(d); 4206 dbprint(printlevel+1,""); 4207 dbprint(printlevel+2,"Total number of rational places : NrRatPl = " 4205 } 4206 4207 // prepare data for output 4208 export(POINTS); 4209 export(LOC_EQS); 4210 export(BRANCHES); 4211 export(PARAMETRIZATIONS); 4212 int NrRatPl=size(POINTS); 4213 ext_CURVE[2][3]=NrRatPl; 4214 setring BR; 4215 ext_CURVE[1][5]=RatPl; 4216 ring r(d)=(char(basering),a),(x,y),lp; 4217 execute("minpoly="+smin+";"); 4218 setring BR; 4219 ext_CURVE[1][3]=r(d); 4220 ring R(d)=(char(basering),a),(x,y,z),lp; 4221 execute("minpoly="+smin+";"); 4222 setring BR; 4223 ext_CURVE[1][4]=R(d); 4224 dbprint(printlevel+1,""); 4225 dbprint(printlevel+2,"Total number of rational places : NrRatPl = " 4208 4226 +string(NrRatPl)); 4209 dbprint(printlevel+1,""); 4210 kill(S(1)); 4211 kill(R(d)); 4212 kill(RatPl); 4213 return(ext_CURVE); 4214 } 4215 else 4216 { 4217 ERROR("you must compute first all the places up to degree "+string(d)); 4218 return(); 4219 } 4227 dbprint(printlevel+1,""); 4228 kill(S(1)); 4229 kill(R(d)); 4230 kill(RatPl); 4231 return(ext_CURVE); 4220 4232 } 4221 4233 } … … 4227 4239 ring s=2,(x,y),lp; 4228 4240 list C=Adj_div(x5+y2+y); 4229 C=NSplaces( 3,C);4241 C=NSplaces(1..4,C); 4230 4242 // since we have all points up to degree 4, we can extend the curve 4231 4243 // to that extension, in order to get rational points over F_16; … … 4363 4375 ring s=2,(x,y),lp; 4364 4376 list HC=Adj_div(x3+y2+y); 4365 HC=NSplaces(1 ,HC);4377 HC=NSplaces(1..2,HC); 4366 4378 HC=extcurve(2,HC); 4367 4379 def ER=HC[1][4]; … … 4513 4525 ring s=2,(x,y),lp; 4514 4526 list HC=Adj_div(x3+y2+y); 4515 HC=NSplaces(1 ,HC);4527 HC=NSplaces(1..2,HC); 4516 4528 HC=extcurve(2,HC); 4517 4529 def ER=HC[1][4]; … … 4649 4661 for (i=1;i<=m;i=i+1) 4650 4662 { 4651 for (j=i ;j<=n;j=j+1)4663 for (j=i+1;j<=n;j=j+1) 4652 4664 { 4653 4665 A[i,j]=A[i,j]/A[i,i]; 4654 4666 } 4667 A[i,i]=1; 4655 4668 } 4656 4669 // complete a block with the identity matrix … … 4659 4672 for (i=k+1;i<=m;i=i+1) 4660 4673 { 4661 for (j=i ;j<=n;j=j+1)4674 for (j=i+1;j<=n;j=j+1) 4662 4675 { 4663 4676 A[k,j]=A[k,j]-A[i,j]*A[k,i]; 4664 4677 } 4678 A[k,i]=0; 4665 4679 } 4666 4680 } … … 4688 4702 print(L[1]*transpose(L[2])); 4689 4703 } 4704 4705 ////////////// this procedure should move in hnoether.lib ///////// 4706 static proc ratdevelop (poly chi) 4707 { 4708 def r=basering; 4709 int k1=res_deg(); 4710 list HND=essdevelop(chi); 4711 int k2=res_deg(); 4712 if (k1<k2) 4713 { 4714 int N=size(HND); 4715 list CB=list(); 4716 int i,j,k,d; 4717 intvec dgs; 4718 list auxL=list(); 4719 intvec auxiv; 4720 for (i=1;i<=N;i++) 4721 { 4722 CB[i]=conj_bs(HND[i],k1); 4723 dgs[i]=size(CB[i]); 4724 } 4725 for (i=1;i<N;i++) 4726 { 4727 for (j=i+1;j<=N;j++) 4728 { 4729 if (dgs[i]==dgs[j]) 4730 { 4731 d=dgs[i]; 4732 for (k=1;k<=d;k++) 4733 { 4734 if (intersection(CB[i][1],CB[j][k])==-1) 4735 { 4736 HND=delete(HND,j); 4737 CB=delete(CB,j); 4738 // dgs=delete(dgs,j); 4739 execute("auxL="+string(dgs)+";"); 4740 auxL=delete(auxL,j); 4741 execute("dgs="+string(auxL)+";"); 4742 N=N-1; 4743 j=j-1; 4744 break; 4745 } 4746 } 4747 } 4748 } 4749 } 4750 } 4751 keepring(HNEring); 4752 return(HND); 4753 } 4754 ; 4755 4756 4757 4758 4690 4759 /////////////////////////////////////////////////////////////////////////////// 4691 4760 … … 4747 4816 how many other points you want to compute with NSplaces. 4748 4817 4749 (1.2) CURVE=NSplaces(range,CURVE); 4750 4751 See help NSplaces tp know the meaning of "range"; 4752 for instance, if you have that the singular places 4753 have degree 2 at most and you want all the places 4754 up to degree 5, you must write range=3. 4818 (1.2) CURVE=NSplaces(degrees,CURVE); 4819 4820 "degrees" is an intvec with the degrees we want to compute 4755 4821 4756 4822 (1.3) CURVE=extcurve(extension,CURVE); … … 4834 4900 { 4835 4901 list KLEIN=Adj_div(x3y+y3+x); 4836 KLEIN=NSplaces( 2,KLEIN);4902 KLEIN=NSplaces(1..3,KLEIN); 4837 4903 KLEIN=extcurve(3,KLEIN); 4838 4904 dbprint(printlevel+1,"Klein quartic over F_8 successfully constructed"); … … 4845 4911 int r=p^m; 4846 4912 list HERMITE=Adj_div(y^r+y-x^(r+1)); 4847 HERMITE=NSplaces( 2*m-1,HERMITE);4913 HERMITE=NSplaces(1..2*m,HERMITE); 4848 4914 HERMITE=extcurve(2*m,HERMITE); 4849 4915 dbprint(printlevel+1,"Hermitian curve over F_("+string(r)+"^2) … … 4855 4921 { 4856 4922 list SUZUKI=Adj_div(x10+x3+y8+y); 4857 SUZUKI=NSplaces( 2,SUZUKI);4923 SUZUKI=NSplaces(1..3,SUZUKI); 4858 4924 SUZUKI=extcurve(3,SUZUKI); 4859 4925 dbprint(printlevel+1,"Suzuki curve over F_8 successfully constructed"); … … 4866 4932 4867 4933 list CURVE=Adj_div(x5+y2+y); 4868 CURVE=NSplaces( 3,CURVE);4934 CURVE=NSplaces(1..4,CURVE); 4869 4935 CURVE=extcurve(4,CURVE); 4870 4936 … … 4872 4938 4873 4939 list CURVE=Adj_div(y9+y8+xy6+x2y3+y2+x3); 4874 CURVE=NSplaces(4,CURVE); 4940 intvec ww=1,2,3,6; 4941 CURVE=NSplaces(ww,CURVE); 4875 4942 CURVE=extcurve(6,CURVE); 4876 4943 4877 4944 */ 4878 ;
Note: See TracChangeset
for help on using the changeset viewer.