Changeset 4bde6b in git
- Timestamp:
- May 15, 2020, 3:20:00 PM (3 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', '2234726c50d679d6664181a5c72f75a6fd64a787')
- Children:
- a1b40ab8675488c2a4f8e225d9d748ba70340727
- Parents:
- 538e06d0809adf9f75fea000cf70d354bb674ab5
- Files:
-
- 78 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/HOWTO.addKernelCmds
r538e06 r4bde6b 59 59 NO_ZERODIVISOR: coefficients/cring elements must be a domain 60 60 61 if a requirement from a group is om mited,61 if a requirement from a group is omited, 62 62 the defaults are: NO_PLURAL | NO_RING | ALLOW_ZERODIVISOR 63 63 -
Singular/LIB/grobcov.lib
r538e06 r4bde6b 1489 1489 ideals with P included in Q, representing the set 1490 1490 V(P) \ V(Q) = V(N) \ V(M) 1491 KEYWORDS: locally closed set; canon cial form1491 KEYWORDS: locally closed set; canonical form 1492 1492 EXAMPLE: Crep; shows an example" 1493 1493 { … … 1589 1589 Output: [Comp_1, .. , Comp_s ] where 1590 1590 Comp_i=[p_i,[p_i1,..,p_is_i]] 1591 KEYWORDS: locally closed set; canon cial form1591 KEYWORDS: locally closed set; canonical form 1592 1592 EXAMPLE: Prep; shows an example" 1593 1593 { … … 1686 1686 P included in Q, representing the 1687 1687 set V(P) \ V(Q) 1688 KEYWORDS: locally closed set; canon cial form1688 KEYWORDS: locally closed set; canonical form 1689 1689 EXAMPLE: PtoCrep; shows an example" 1690 1690 { -
Singular/LIB/realizationMatroids.lib
r538e06 r4bde6b 542 542 list lweight; 543 543 int i_rdim = -1; 544 //substitute the vectors by a primit ve one and store the multiplicities544 //substitute the vectors by a primitive one and store the multiplicities 545 545 for(i=1;i<=size(lInput);i++) 546 546 { -
Singular/LIB/realrad.lib
r538e06 r4bde6b 8 8 OVERVIEW: 9 9 Algorithms about the computation of the real 10 radical of an arbit ary ideal over the rational numbers10 radical of an arbitrary ideal over the rational numbers 11 11 and transcendetal extensions thereof 12 12 … … 14 14 realpoly(f); Computes the real part of the univariate polynomial f 15 15 realzero(j); Computes the real radical of the zerodimensional ideal j 16 realrad(j); Computes the real radical of an arbit ary ideal over16 realrad(j); Computes the real radical of an arbitrary ideal over 17 17 transcendental extension of the rational numbers 18 18 "; … … 35 35 ////////////////////////////////////////////////////////////////////////////// 36 36 proc realrad(ideal id) 37 "USAGE: realrad(id), id an ideal of arbit ary dimension37 "USAGE: realrad(id), id an ideal of arbitrary dimension 38 38 RETURN: the real radical of id 39 39 EXAMPE: example realrad; shows an example" … … 126 126 127 127 /*static*/ proc zeroreduct(ideal i) 128 "USAGE:zeroreduct(i), i an arbit ary ideal128 "USAGE:zeroreduct(i), i an arbitrary ideal 129 129 RETURN: an ideal j of dimension <=0 s.th. i is contained in 130 130 j and j is contained in i_{Iso} which is the zariski closure … … 312 312 313 313 //this will act via a coordinate chance into general position 314 //denote that this random chance doesn't work al lways314 //denote that this random chance doesn't work always 315 315 //the ideas for the transformation into general position are 316 316 //used from the primdec.lib … … 490 490 /////////////////////////////////////////////////////////////////////////////// 491 491 proc decision(poly f) 492 " USAGE: decission(f); a multivariate polynomial f in Q[x_1,..,x_n] and lc f=0492 "USAGE: decision(f); a multivariate polynomial f in Q[x_1,..,x_n] and lc f=0 493 493 RETURN: assume that the basering has a lexicographical ordering, 494 494 1 if f is positive semidefinite 0 if f is indefinite … … 873 873 (a*b!=1) 874 874 //polynomials are contineous so the image is an interval 875 //refer res to analysis875 //referes to analysis 876 876 { 877 877 return(1); … … 898 898 RETURN: a list erg=(id,j); where id is the real radical of m if j=1 (i.e. m 899 899 satisfies the shape lemma in one variable x_i) else id=m and j=0; 900 EXAMPLE: is_in_shape shows an ex maple;900 EXAMPLE: is_in_shape shows an example; 901 901 " 902 902 … … 974 974 static proc length(poly f) 975 975 "USAGE: length(f); poly f; 976 RETURN: sum of the absolute Value of all coeffi ents of an irreducible977 poly 976 RETURN: sum of the absolute Value of all coefficients of an irreducible 977 polynomial f 978 978 EXAMPLE: example length; shows an example" 979 979 … … 1179 1179 setring r; 1180 1180 1181 //id only consi ts of non units in F(pari)1181 //id only consists of non units in F(pari) 1182 1182 if (tester==1) 1183 1183 { -
Singular/LIB/recover.lib
r538e06 r4bde6b 837 837 C[k,1]=Co[2,j]; 838 838 break;//we dont need to check any other elements of M 839 //since they re all different839 //since they are all different 840 840 } 841 841 } … … 859 859 //returns the concatenated coef matrices 860 860 //more precisely: let m be the degree of the elements of L[size(L)], then we want 861 //to know, which homogen ous polynomials of degree m can be written as a combination861 //to know, which homogeneous polynomials of degree m can be written as a combination 862 862 //of polynomials in the ideals contained in L. In particular, we want to know which 863 863 //of the elements of L[size(L)] can be written as a combination of other polys … … 1552 1552 //bound to the basering, so it will exist in the ring r, as well. But, as we change 1553 1553 //the entries of p from type string to type number/poly, it gets bound to the ring r, 1554 //so it doesn t exist in br anymore. Hence, we have do define list p=fetch.1554 //so it doesn't exist in br anymore. Hence, we have do define list p=fetch. 1555 1555 1556 1556 … … 2438 2438 //to be eliminated. -> The number of variables and the number of components in 2439 2439 //the projected point are the same. Then we can apply our procedure and imap the 2440 //results to our original ring, since we didn t change the names of the variables.2440 //results to our original ring, since we didn't change the names of the variables. 2441 2441 def br=basering; 2442 2442 list l=ringlist(br); … … 2567 2567 { 2568 2568 //check whether there is an i sth eucl(Bs[i,i]) <= 4/3*euclid(Bs[i+1,i]) 2569 //if so, that s fine2569 //if so, that's fine 2570 2570 //if not, b_i and b_i+1 are swapped + we do the necessary changes in Bs and U 2571 2571 if(inner_product(B[i],B[i]) <= (301/300)*inner_product(B[i+1],B[i+1])) -
Singular/LIB/redcgs.lib
r538e06 r4bde6b 224 224 } 225 225 226 //*************Auxil liary routines**************226 //*************Auxiliary routines************** 227 227 228 228 // cld : clears denominators of an ideal and normalizes to content 1 … … 399 399 } 400 400 401 //*************Auxil liary routines**************401 //*************Auxiliary routines************** 402 402 403 403 … … 418 418 // simpqcoeffs : simplifies a quotient of two polynomials of @R 419 419 // for ring @R 420 // input: two coef icients (or terms) of @R (that are considered as quotients)421 // output: the two coef icients reduced without common factors420 // input: two coefficients (or terms) of @R (that are considered as quotients) 421 // output: the two coefficients reduced without common factors 422 422 proc simpqcoeffs(poly n,poly m) 423 423 { … … 1298 1298 [8] condition that was taken to reach the vertex 1299 1299 (poly 1, for the root). 1300 The rema ning elements of the list represent vertices of the tree:1300 The remaining elements of the list represent vertices of the tree: 1301 1301 with the same structure: 1302 1302 [1] label: intvec (1,0,0,1,...) gives its position in the tree: … … 1323 1323 The content of buildtree can be written in a file that is readable 1324 1324 by Maple in order to plot its content using buildtreetoMaple; 1325 The file written by buildtreetoMaple when read edin a Maple1325 The file written by buildtreetoMaple when read in a Maple 1326 1326 worksheet can be plotted using the dbgb routine tplot; 1327 1327 … … 1395 1395 } 1396 1396 1397 // recbuildtree: auxi lliary recursive routine called by buildtree1397 // recbuildtree: auxiiary recursive routine called by buildtree 1398 1398 proc recbuildtree(list v, list P) 1399 1399 { … … 1534 1534 1535 1535 // writes the list L=buildtree(F) to a file "writefile" that 1536 // is readable by Maple w hith name T1536 // is readable by Maple with name T 1537 1537 // input: 1538 1538 // L: the list output by buildtree … … 1540 1540 // writefile: the name of the datafile where the output is to be stored 1541 1541 // output: 1542 // the result is written on the datafile "writefile" containi g1543 // the assign ement to the table with name "T"1542 // the result is written on the datafile "writefile" containing 1543 // the assignment to the table with name "T" 1544 1544 proc buildtreetoMaple(list L, string T, string writefile) 1545 1545 "USAGE: buildtreetoMaple(T, TM, writefile); … … 1843 1843 // two polynomials (the first one contains all the terms of f 1844 1844 // and the second only those of f 1845 // it returns the list with the com on monomials and the list of coefficients1845 // it returns the list with the common monomials and the list of coefficients 1846 1846 // of the polynomial f with zeroes if necessary. 1847 1847 proc adaptcoef(matrix m, matrix m1) … … 1864 1864 } 1865 1865 1866 // given t ehideal of non-null conditions and an intvec lambda1866 // given the ideal of non-null conditions and an intvec lambda 1867 1867 // with the exponents of each w in W 1868 1868 // it returns the polynomial prod (w_i)^(lambda_i). … … 2466 2466 // first element of the output of selectcases 2467 2467 list T1=T; // the initial list; it is only actualized (split) 2468 // when a segment is complet ly revised (all split are2468 // when a segment is completely revised (all split are 2469 2469 // already be considered); 2470 2470 // ( (lpp, ((lab,B,N,W,L),.. ()) ), .. (..) ) … … 2919 2919 2920 2920 // addcase 2921 // recursive routine that adds to the list @L, (an alre dy GCS)2921 // recursive routine that adds to the list @L, (an already GCS) 2922 2922 // a new redspec rs=(N,W,L); 2923 2923 // and returns the test t whose value is … … 3075 3075 // given the label labfu of the vertex fu it returns the last 3076 3076 // int of the label of the last existing children. 3077 // if no child exists, then it ou puts 0.3077 // if no child exists, then it outputs 0. 3078 3078 proc lastchildrenindex(intvec labfu) 3079 3079 { … … 3101 3101 3102 3102 // given the vertex u it provides the next brother of u. 3103 // if it does not exist, then it ou puts v=list(list(intvec(0)),0)3103 // if it does not exist, then it outputs v=list(list(intvec(0)),0) 3104 3104 proc nextbrother(intvec labu) 3105 3105 { … … 3287 3287 integers in the label are to be considered as additive and those 3288 3288 with an odd number of integers in the label are to be considered as 3289 sub straction. As an example consider the following vertices:3289 subtraction. As an example consider the following vertices: 3290 3290 v1=((i),2,lpp,B), 3291 3291 v2=((i,1),2,P_{(i,1)}), … … 3630 3630 integers in the label are to be considered as additive and those 3631 3631 with an odd number of integers in the label are to be considered as 3632 sub straction. As an example consider the following vertices:3632 subtraction. As an example consider the following vertices: 3633 3633 v1=((i),2,lpp,B), 3634 3634 v2=((i,1),2,P_{(i,1)}), … … 3812 3812 integers in the label are to be considered as additive and those 3813 3813 with an odd number of integers in the label are to be considered as 3814 sub straction. As an example consider the following vertices:3814 subtraction. As an example consider the following vertices: 3815 3815 v1=((i),2,lpp,B), 3816 3816 v2=((i,1),2,P_{(i,1)}), -
Singular/LIB/resbinomial.lib
r538e06 r4bde6b 23 23 maxEord(Coef,Exp,k,n,flag); computes de maximum E-order of an ideal given by Coef and Exp 24 24 ECoef(Coef,expP,sP,V,auxc,n,flag); Computes a simplified version of the E-Coeff ideal. The E-orders are correct, 25 but tran formations of coefficients of the generators and powers of binomials25 but transformations of coefficients of the generators and powers of binomials 26 26 cannot be computed easily in terms of lists. 27 27 elimrep(L); removes repeated terms from a list … … 132 132 proc identifyvar() 133 133 "USAGE: identifyvar(); 134 COMPUTE: As ign 0 to variables x and 1 to variables y, only necessary at the beginning134 COMPUTE: Assign 0 to variables x and 1 to variables y, only necessary at the beginning 135 135 RETURN: list, say l, of size the dimension of the basering 136 136 l[i] is: 0 if the i-th variable is x(i), … … 158 158 proc data(ideal K,int k,int n) 159 159 "USAGE: data(K,k,n); K any ideal, k integer (!=0), n integer (!=0) 160 COMPUTE: Construc s a list with the coefficients and exponents of one ideal160 COMPUTE: Constructs a list with the coefficients and exponents of one ideal 161 161 RETURN: lists of coefficients and exponents of K 162 162 EXAMPLE: example data; shows an example … … 719 719 } 720 720 721 // NOTE: coef icients of I = coeficients of J, because I and J differ in a monomial721 // NOTE: coefficients of I = coefficients of J, because I and J differ in a monomial 722 722 723 723 // Detecting errors, negative exponents in expI … … 1002 1002 LL[6]; // list of D_4,D_3,D_2,D_1 1003 1003 LL[7]; // list of H_4,H_3,H_2,H_1 (exceptional divisors) 1004 LL[8]; // list of all exceptional divisors ac umulated1004 LL[8]; // list of all exceptional divisors accumulated 1005 1005 LL[9]; // auxiliary invariant 1006 1006 LL[10]; // intvec pointing out the last step where the function t has dropped … … 1653 1653 1654 1654 idchart=idchart+1;} 1655 else{ // OTHERWISE, CONTINUE CHE KING IF newI=0 or not1655 else{ // OTHERWISE, CONTINUE CHECKING IF newI=0 or not 1656 1656 1657 1657 Coef=extraL[1]; … … 1842 1842 // else{def r=basering;} // CHECK THAT IS NECESSARY !!! 1843 1843 1844 // IF WE ARE IN POS TIVE CHAR1844 // IF WE ARE IN POSITIVE CHAR 1845 1845 1846 1846 if (p>0){list Lring=ringlist(basering); … … 2625 2625 "USAGE: tradtoideal(a,J2,flag); 2626 2626 a intvec, J2 ideal, flag list 2627 COMPUTE: tra slate to an ideal the intvec defining the center2627 COMPUTE: translate to an ideal the intvec defining the center 2628 2628 RETURN: the ideal of the center, given by the intvec a, or J2 if a=0 2629 2629 EXAMPLE: example tradtoideal; shows an example -
Singular/LIB/resjung.lib
r538e06 r4bde6b 129 129 setring A; 130 130 list fibreP = buildFP(embresolvee,NoetherN,phi); 131 //a list of lists, where fibreP[i] contains the information con serning131 //a list of lists, where fibreP[i] contains the information concerning 132 132 //the i-th chart of the fibrepoduct 133 133 //fibreP[i] is the ring; QIdeal the quotientideal; BMap is the map from A … … 330 330 poly product=1; 331 331 kill l; 332 for(int i=1; i < n-1; i++){ //elimination of all variables ex ept var(i),var(n-1),var(n)332 for(int i=1; i < n-1; i++){ //elimination of all variables except var(i),var(n-1),var(n) 333 333 intvec v; 334 334 for(int j=1; j < n-1; j++){ … … 361 361 if(attrib(J,"isPrincipal")==0){ 362 362 setring R; 363 for(int j = 1;j<=size(J);j++){//determines the monic polynomial in var(i) with coeffic ents in C2363 for(int j = 1;j<=size(J);j++){//determines the monic polynomial in var(i) with coefficients in C2 364 364 intvec w = leadexp(J[j]); 365 365 attrib(w,"isMonic",1); … … 389 389 ideal I = preimage(A,LastTwo,lowdim); 390 390 clocus= radical(intersect(clocus,I)); 391 //radical is necessary since the resultant is in ge rneral not reduced391 //radical is necessary since the resultant is in general not reduced 392 392 export(clocus); 393 393 return(C2); … … 543 543 list blowup = blowUpBO(BO,primdecSL[index][2],3); 544 544 //if it has a rational singularity blow it up else choose 545 //some arbit ary singular point545 //some arbitrary singular point 546 546 if(attrib(primdecSL[1],"isRational")==0){ 547 //if we blow up a non rational singularity the ex eptional divisors547 //if we blow up a non rational singularity the exceptional divisors 548 548 //are reduzible so we need to separate them 549 549 for(int k=1;k<=size(blowup);k++){ -
Singular/LIB/resolve.lib
r538e06 r4bde6b 536 536 @* J = ideal containing W, 537 537 @* C = ideal containing J 538 COMPUTE: the blowing up of BO[1] in C, the ex eptional locus, the strict538 COMPUTE: the blowing up of BO[1] in C, the exceptional locus, the strict 539 539 transform of BO[2] 540 540 NOTE: blowUpBO may be applied to basic objects in the sense of … … 587 587 if(e==2){noDel=1;} 588 588 //---this is only for curves and surfaces 589 //---keeps all charts with relevant information son the exceptional divisors589 //---keeps all charts with relevant information on the exceptional divisors 590 590 if(e==3){keepDiv=1;} 591 591 if( typeof(attrib(BO[2],"isEqui"))=="int" ) … … 863 863 { 864 864 delCharts[i+1]=1; 865 //--- the i-th chart will be marked for deleting because all information s865 //--- the i-th chart will be marked for deleting because all information 866 866 //--- are already contained in the union of the remaining charts 867 867 } … … 909 909 if(m) 910 910 { 911 //--- the i-th chart will be marked for deleting because all information s911 //--- the i-th chart will be marked for deleting because all information 912 912 //--- are already contained in the union of the remaining charts 913 913 delCharts[i+1]=1; … … 960 960 if(m==1) 961 961 { 962 //--- the i-th chart will be marked for deleting because all information s962 //--- the i-th chart will be marked for deleting because all information 963 963 //--- are already contained in the union of the remaining charts 964 964 delCharts[i+1]=1; … … 971 971 { 972 972 //--- in case of the option extra 973 //--- the i-th chart will be marked for deleting because all information s973 //--- the i-th chart will be marked for deleting because all information 974 974 //--- are already contained in the union of the remaining charts 975 975 … … 2179 2179 static proc invGreater(intmat M1, intmat M2, intvec iv1, intvec iv2) 2180 2180 { 2181 // Auxil liary procedure, BM-algorithm2181 // Auxiliary procedure, BM-algorithm 2182 2182 int i; 2183 2183 for(i=1;i<=min(ncols(M1),ncols(M2));i++) … … 2208 2208 proc CenterTail(list BM, ideal C) 2209 2209 { 2210 //!!! Auxil liary procedure, BM-algorithm2210 //!!! Auxiliary procedure, BM-algorithm 2211 2211 //!!!!!!!!Rueckgabe im Zentrumsformat 2212 2212 int i,j,bmin; … … 3050 3050 { 3051 3051 //--- intersections with E do not meet conditions ==> reset 3052 ERROR("reset in Coeff, please send the example to the aut ors");3052 ERROR("reset in Coeff, please send the example to the authors"); 3053 3053 } 3054 3054 } … … 3923 3923 @* j4: value 0 or 8; turn off or on debugCoeff 3924 3924 @* j5: value 0 or 16:turn off or on debugging of Intersection with E^- 3925 @* j6: value 0 or 32:turn off or on stop after pass through tthe loop3925 @* j6: value 0 or 32:turn off or on stop after pass through the loop 3926 3926 @* i=j1+j2+j3+j4+j5+j6 3927 3927 RETURN: a list l of 2 lists of rings -
Singular/LIB/reszeta.lib
r538e06 r4bde6b 1368 1368 //--- compute the Euler characteristic of the Ei,Eij,Eijk and the 1369 1369 //--- corresponding Ei^*,Eij^*,Eijk^* by preparing the input to the 1370 //--- specialized auxil liary procedures and then recombining the results1370 //--- specialized auxiliary procedures and then recombining the results 1371 1371 1372 1372 //---------------------------------------------------------------------------- … … 1534 1534 //--- compute the Euler characteristic of the Ei,Eij,Eijk and the 1535 1535 //--- corresponding Ei^*,Eij^*,Eijk^* by preparing the input to the 1536 //--- specialized auxil liary procedures and then recombining the results1536 //--- specialized auxiliary procedures and then recombining the results 1537 1537 1538 1538 //---------------------------------------------------------------------------- … … 1716 1716 @* L = list of rings 1717 1717 ASSUME: L is the output of resolution of singularities 1718 RET RUN: discrepancies of the given resolution"1718 RETURN: discrepancies of the given resolution" 1719 1719 { 1720 1720 //---------------------------------------------------------------------------- … … 1780 1780 ast[2]=chi(Eij^*) 1781 1781 ast[3]=chi(Eijk^*) 1782 l[3]: intvec nu of multiplicit es as needed in computation of zeta1782 l[3]: intvec nu of multiplicities as needed in computation of zeta 1783 1783 function 1784 l[4]: intvec N of multiplicities as needed in compu ation of zeta1784 l[4]: intvec N of multiplicities as needed in computation of zeta 1785 1785 function 1786 1786 l[5]: string specifying characteristic polynomial of monodromy, … … 4030 4030 " 4031 4031 { 4032 //--- auxil liary procedure for collectDiv,4032 //--- auxiliary procedure for collectDiv, 4033 4033 //--- inserting an entry at the correct place 4034 4034 int i=1; … … 4802 4802 algext=attrib(idname,"algext"); 4803 4803 } 4804 //--- check whet er comPa is in the history of m14804 //--- check whether comPa is in the history of m1 4805 4805 //--- same test for o1 can be done later on (on the fly) 4806 4806 if(m1==comPa) … … 5423 5423 " 5424 5424 { 5425 //--- auxil liary procedure for addSelfInter5425 //--- auxiliary procedure for addSelfInter 5426 5426 //--- compute multiplicity, suitable for the special situation there 5427 5427 int d=1; -
Singular/LIB/ring.lib
r538e06 r4bde6b 17 17 imapall(R[,str]); imap all objects of ring R to basering 18 18 mapall(R,i[,str]); map all objects of ring R via ideal i to basering 19 ord_test(R); test w ether ordering of R is global, local or mixed19 ord_test(R); test whether ordering of R is global, local or mixed 20 20 ringtensor(s,t,..); create ring, tensor product of rings s,t,... 21 21 ringweights(r); intvec of weights of ring variables of ring r … … 30 30 hasQQCoefficient check if the coefficient ring is QQ 31 31 hasNumericCoeffs(rng) check for use of floating point numbers 32 hasCommutativeVars(rng) non-commut ive or commnuative polynomial ring32 hasCommutativeVars(rng) non-commutative or commutative polynomial ring 33 33 hasGlobalOrdering(rng) global versus mixed/local monomial ordering 34 34 hasMixedOrdering() mixed versus global/local ordering … … 1028 1028 proc hasAlgExtensionCoefficient(def rng ) 1029 1029 "USAGE: hasAlgExtensionCoefficient ( rng ); 1030 RETURN: 1 if the coeff cients are an algebraic extension, 0 otherwise.1030 RETURN: 1 if the coefficients are an algebraic extension, 0 otherwise. 1031 1031 KEYWORDS: ring coefficients 1032 1032 EXAMPLE: example hasAlgExtensionCoefficient; shows an example … … 1048 1048 proc hasTransExtensionCoefficient(def rng ) 1049 1049 "USAGE: hasTransExtensionCoefficient ( rng ); 1050 RETURN: 1 if the coeff cients are rational functions, 0 otherwise.1050 RETURN: 1 if the coefficients are rational functions, 0 otherwise. 1051 1051 KEYWORDS: ring coefficients 1052 1052 EXAMPLE: example hasTransExtensionCoefficient; shows an example … … 1068 1068 proc hasGFCoefficient(def rng ) 1069 1069 "USAGE: hasGFCoefficient ( rng ); 1070 RETURN: 1 if the coeff cients are of the form GF(p,k), 0 otherwise.1070 RETURN: 1 if the coefficients are of the form GF(p,k), 0 otherwise. 1071 1071 KEYWORDS: ring coefficients 1072 1072 EXAMPLE: example hasGFCoefficient; shows an example … … 1089 1089 proc hasZp_aCoefficient(def rng ) 1090 1090 "USAGE: hasZp_aCoefficient ( rng ); 1091 RETURN: 1 if the coeff cients are of the form Zp_a(p,k), 0 otherwise.1091 RETURN: 1 if the coefficients are of the form Zp_a(p,k), 0 otherwise. 1092 1092 KEYWORDS: ring coefficients 1093 1093 EXAMPLE: example hasZp_aCoefficient; shows an example … … 1110 1110 proc hasZpCoefficient(def rng ) 1111 1111 "USAGE: hasZpCoefficient ( rng ); 1112 RETURN: 1 if the coeff cients are of the form ZZ/p, 0 otherwise.1112 RETURN: 1 if the coefficcients are of the form ZZ/p, 0 otherwise. 1113 1113 KEYWORDS: ring coefficients 1114 1114 EXAMPLE: example hasZpCoefficient; shows an example … … 1128 1128 proc hasQQCoefficient(def rng ) 1129 1129 "USAGE: hasQQCoefficient ( rng ); 1130 RETURN: 1 if the coeff cients are QQ, 0 otherwise.1130 RETURN: 1 if the coefficcients are QQ, 0 otherwise. 1131 1131 KEYWORDS: ring coefficients 1132 1132 EXAMPLE: example hasQQCoefficient; shows an example … … 1179 1179 proc hasNumericCoeffs(def rng) 1180 1180 "USAGE: hasNumericCoeffs ( rng ); 1181 RETURN: 1 if rng has inexact coeff cients, 0 otherwise.1181 RETURN: 1 if rng has inexact coefficcients, 0 otherwise. 1182 1182 KEYWORDS: floating point 1183 1183 EXAMPLE: example hasNumericCoeffs; shows an example … … 1273 1273 1:ordering dp,dp 1274 1274 2:oring.ordering,dp 1275 RETURN: a ring with the add tional variables1275 RETURN: a ring with the additional variables 1276 1276 EXAMPLE: example addvarsTo(); shows an example 1277 1277 " … … 1314 1314 1:ordering dp,dp 1315 1315 2:oring.ordering,dp 1316 RETURN: a ring with N add tional variables1316 RETURN: a ring with N additional variables 1317 1317 EXAMPLE: example addNvarsTo(); shows an example 1318 1318 " -
Singular/LIB/rinvar.lib
r538e06 r4bde6b 147 147 // create a new basering which might contain more variables 148 148 // s(1..newVars) as the original basering and map the ideal 149 // Gn (cont ians only z(1..newVars)) to this ring149 // Gn (contains only z(1..newVars)) to this ring 150 150 151 151 list l1; … … 858 858 'action' is a linear group action of G on K^n (n = ncols(action)) 859 859 RETURN: ideal of the nullcone of G. 860 NOTE: the generators of the nullcone are homogen ous, but in general not invariant860 NOTE: the generators of the nullcone are homogeneous, but in general not invariant 861 861 EXAMPLE: example NullCone; shows an example 862 862 " … … 1053 1053 if(defined(auxM)) { kill auxM;} 1054 1054 matrix auxM[2][size(columnList)]; // built new matrix and omit 1055 for(j = 1; j <= size(columnList); j++) { // the linear dependent colums 1055 for(j = 1; j <= size(columnList); j++) // the linear dependent columns 1056 { 1056 1057 auxM[1, j] = decompMx[1, columnList[j]]; // found above 1057 1058 auxM[2, j] = decompMx[2, columnList[j]]; -
Singular/LIB/rootisolation.lib
r538e06 r4bde6b 598 598 proc evalPolyAtBox() 599 599 "USAGE: @code{evalPolyAtBox(f, B)}; @code{f poly, B box} 600 RETURN: interval, evalu taion of @code{f} at @code{B} using interval arithmetic600 RETURN: interval, evaluation of @code{f} at @code{B} using interval arithmetic 601 601 PURPOSE: computes an interval extension of the polynomial 602 602 EXAMPLE: example evalPolyAtBox; shows an example" … … 975 975 // numbers and pass to the subring where these variables have been 976 976 // removed. 977 // As rootIsolation now acc pets ideals with arbitrary generators we978 // compute the zeros of the substitu ion ideal and reassemble the977 // As rootIsolation now accepts ideals with arbitrary generators we 978 // compute the zeros of the substitution ideal and reassemble the 979 979 // boxes afterwards. 980 980 // … … 1446 1446 for (k = 0; k < sizes[i]; k++) 1447 1447 { 1448 // repeti ons1448 // repetitions 1449 1449 for (l = 1; l <= repCount[i]; l++) 1450 1450 { -
Singular/LIB/rootsmr.lib
r538e06 r4bde6b 116 116 { 117 117 //Note on complexity: Let n = no of complex roots of I (= vdim(std(I)). 118 //Then the algo tithm needs:118 //Then the algorithm needs: 119 119 //1 std(I) and (1/2)n*(n+1)^2 ~ 1/2n^3 NF computations (of monomials w.r.t. I) 120 120 … … 399 399 // We first compute the normal form of f w.r.t. I 400 400 g = reduce(f,I); 401 int n = size(g); //al lways n <= N401 int n = size(g); //always n <= N 402 402 403 403 while (k <= N) { -
Singular/LIB/rstandard.lib
r538e06 r4bde6b 14 14 [1] A. Kehrein, M. Kreuzer, L. Robbiano: An algebrists view on border bases, in: 15 15 A. Dickenstein and I. Emiris (eds.), Solving Polynomial Equations: 16 Foundations, Algorithms and Ap lications, Springer, Heidelberg 2005, 169-202.16 Foundations, Algorithms and Applications, Springer, Heidelberg 2005, 169-202. 17 17 18 18 [2] V.P. Gerdt: Involute Algorithms for Computing Groebner Bases, In -
Singular/LIB/sagbi.lib
r538e06 r4bde6b 175 175 ideal kern=stdKernPhi(kernNew,kernOld,leadTermsAlgebra,method); 176 176 dbprint(ppl-2,"//Spoly-2-1- ideal kern",kern); 177 //-------------------------- cal ulate algebraic relations -----------------------177 //-------------------------- calculate algebraic relations ----------------------- 178 178 dbprint(ppl,"//Spoly-3- computing new algebraic relations"); 179 179 ideal algebraicRelations=nselect(kern,1..nvars(br)); … … 450 450 ideal P=1; 451 451 //note: P is initialized this way, so that the while loop is entered. 452 //P gets overrid en there, anyhow.452 //P gets overridden there, anyhow. 453 453 ideal varsBasering=maxideal(1); 454 454 map phi; … … 457 457 while (size(P)>0) 458 458 { 459 dbprint(ppl,"// -"+string(i)+"- intera tion of SAGBI construction algorithm");459 dbprint(ppl,"// -"+string(i)+"- interaction of SAGBI construction algorithm"); 460 460 dbprint(ppl-1,"// -"+string(i)+"-1- Computing algebraic relations"); 461 461 def rNew=spolynomialsGB(algebra,r,method); /* canonicalizing inside! */ … … 548 548 @* - If meth=0 (default), the procedure std is used. 549 549 @* - If meth=1, the procedure slimgb is used. 550 @* - If meth=2, the pro decure uses toric_ideal.550 @* - If meth=2, the procedure uses toric_ideal. 551 551 EXAMPLE: example sagbiSPoly; shows an example" 552 552 { … … 889 889 890 890 //Create two polynomial rings, which both are extensions of the current basering. 891 //The first ring will contain the additional param teres @c(1),...,@c(m), the second one891 //The first ring will contain the additional parameters @c(1),...,@c(m), the second one 892 892 //will contain the additional variables @c(1),...,@c(m), where m=ncols(I). 893 893 string parameterName=uniqueVariableName("@c"); … … 968 968 //If K[x_1,...,x_n] was the basering, then algebra is in K(@c(1),...,@c(m))[x_1,...x_n]. We intersect 969 969 //elements in algebra with K(@c(1),..,@c(n)) to get algDep. Note that @c(i) can only appear in the numerator, 970 //as the SAGBI construction algorithms just multiplies and sub stracts polynomials. So actually we have970 //as the SAGBI construction algorithms just multiplies and subtracts polynomials. So actually we have 971 971 //algDep=algebra intersect K[@c(1),...,@c(m)] 972 972 ideal algDep; … … 1043 1043 @format 1044 1044 Three algorithm variants are used to perform subalgebra reduction. 1045 The positive inte rger n determines which variant should be used.1045 The positive integer n determines which variant should be used. 1046 1046 n may take the values 0 (default), 1 or 2. 1047 1047 @end format … … 1136 1136 } 1137 1137 1138 //--------- test w ether @(0)-h(@(1),...,@(z)) is in ker ---------------1138 //--------- test whether @(0)-h(@(1),...,@(z)) is in ker --------------- 1139 1139 // for some poly h and divide by maximal power of q=#[1] 1140 1140 poly h; … … 1180 1180 1181 1181 proc sagbiNF(id,ideal dom,int k,list#) 1182 "USAGE: sagbiNF(id,dom,k[,n]); id either poly or ideal,dom ideal, k and n positive inte rgers.1182 "USAGE: sagbiNF(id,dom,k[,n]); id either poly or ideal,dom ideal, k and n positive integers. 1183 1183 RETURN: same as type of id; ideal or polynomial. 1184 1184 PURPOSE: -
Singular/LIB/schreyer.lib
r538e06 r4bde6b 8 8 OVERVIEW: 9 9 The library contains several procedures for computing a/part of Schreyer 10 resol tion (cf. [SFO]), and some helpers for derham.lib (which requires10 resolution (cf. [SFO]), and some helpers for derham.lib (which requires 11 11 resolutions over the homogenized Weyl algebra) for that purpose. 12 12 The input for any resolution computation is a set of vectors M in form of a -
Singular/LIB/schubert.lib
r538e06 r4bde6b 681 681 OUTPUT: a number corresponding to the normal bundle on a moduli space of 682 682 stable maps at a graph 683 KEYWORDS: normal bundle, graph, rational curves, mu tiple covers, lines on683 KEYWORDS: normal bundle, graph, rational curves, multiple covers, lines on 684 684 hypersurfaces 685 685 SEE ALSO: contributionBundle -
Singular/LIB/sets.lib
r538e06 r4bde6b 20 20 (Set, list, int, bigint, string, intmat, bigintmat, intvec, ring, map, poly, matrix, 21 21 ideal, module, vector, resolution) and also works for comparing of int, bigint and 22 number with each other, similar ily for matrix, bigintmat and intmat.22 number with each other, similarly for matrix, bigintmat and intmat. 23 23 24 24 The function size can be used to determine the number of elements. … … 165 165 proc isEqualSet(def a, def b) 166 166 { 167 if(size(a)!=size(b)){ //check if the two sets have the same size 167 if(size(a)!=size(b)) //check if the two sets have the same size 168 { 168 169 return(0); 169 170 } 170 171 list L = a.elements; 171 for(int i=1;i<=size(a);i++){ //chek if every element of the first set occurs in 172 if(!(isElement(L[i],b))){ //the second set 172 for(int i=1;i<=size(a);i++) //check if every element of the first set occurs in 173 { 174 if(!(isElement(L[i],b))) //the second set 175 { 173 176 return(0); 174 177 } -
Singular/LIB/sheafcoh.lib
r538e06 r4bde6b 197 197 NOTE: Output is a presentation matrix for the truncation of coker(M) 198 198 at d. 199 Fast + experimental version. M shou d be a SB!199 Fast + experimental version. M should be a SB! 200 200 DISPLAY: If @code{printlevel}>=1, step-by step timings will be printed. 201 201 If @code{printlevel}>=2 we add progress debug messages -
Singular/LIB/sing.lib
r538e06 r4bde6b 472 472 if( vdim(k) == -1 ) 473 473 { 474 "// f is no isolated singu arity!";474 "// f is no isolated singularity!"; 475 475 return(); 476 476 } -
Singular/LIB/solve.lib
r538e06 r4bde6b 108 108 } 109 109 110 if(prot!=0)// more information s110 if(prot!=0)// more information 111 111 { 112 112 pout="//control: complex ring with precision "+string(numberprec); … … 115 115 if(solutionprec<numberprec){pout=pout+nl+ 116 116 "// with precision "+string(solutionprec);}} 117 if(splitcontrol<0){pout=pout+nl+ "// no split ing";}117 if(splitcontrol<0){pout=pout+nl+ "// no splitting";} 118 118 if(splitcontrol==0){pout=pout+nl+"// output without multiple roots";} 119 119 if(rootcheck){pout=pout+nl+ … … 448 448 n=leadcoef(reduce(p,li));n=n/m; 449 449 if(n!=0) 450 {if(nerr(n,pr)!=0){ERROR(" Unsufficient accuracy!");}}450 {if(nerr(n,pr)!=0){ERROR("Insufficient accuracy!");}} 451 451 } 452 452 } … … 604 604 } 605 605 if (outprec>prec){prec = outprec;} 606 // if intera ktive version is chosen -- choice of basering (Top::`outR`)606 // if interactive version is chosen -- choice of basering (Top::`outR`) 607 607 // and name for list of solutions (outL): 608 608 if (oldr==1) … … 1627 1627 else 1628 1628 { 1629 dbprint( printlevel-voice+1,"// 30 ps == 0, that s not cool...");1629 dbprint( printlevel-voice+1,"// 30 ps == 0, that's not cool..."); 1630 1630 lsr=list(number(0)); 1631 1631 } -
Singular/LIB/spcurve.lib
r538e06 r4bde6b 528 528 def r=basering; 529 529 //--------------------------------------------------------------------------- 530 // Comparis ion entry by entry530 // Comparison entry by entry 531 531 //--------------------------------------------------------------------------- 532 532 for(i=1; i<=nrows(N); i++) -
Singular/LIB/standard.lib
r538e06 r4bde6b 10 10 groebner(ideal,...) standard basis using a heuristically chosen method 11 11 res(ideal/module,[i]) free resolution of ideal or module 12 sprintf(fmt,...) returns fo matted string12 sprintf(fmt,...) returns formatted string 13 13 fprintf(link,fmt,..) writes formatted string to link 14 14 printf(fmt,...) displays formatted string 15 weightKB(stc,dd,vl) degree dd part of a kbase w.r.t. some weig ths15 weightKB(stc,dd,vl) degree dd part of a kbase w.r.t. some weights 16 16 qslimgb(i) computes a standard basis with slimgb in a qring 17 17 par2varRing([i]) create a ring making pars to vars, together with i … … 359 359 360 360 //-------------------- go back to original ring --------------------------- 361 //The main computation is done. Do not forget to simplfy before map ing.361 //The main computation is done. Do not forget to simplfy before mapping. 362 362 363 363 // subst 1 for homogenizing var … … 413 413 order in RL[3]. Then QL will be obtained from RL just by replacing 414 414 RL[4] by a standard of it with respect to this order. RL itself 415 will be return d if size(RL[4]) <= 1 (in which case it is known to be415 will be returned if size(RL[4]) <= 1 (in which case it is known to be 416 416 a standard basis w.r.t. any ordering) or if a second argument 417 417 \"isSB\" of type string is given. … … 566 566 "USAGE: hilbRing([w,l]); w = intvec, l = list of ideals/modules 567 567 RETURN: list, say L: L[1] is a ring and L[2] an intvec 568 L[1] is a ring w hith an extra homogenizing variable with name @,568 L[1] is a ring with an extra homogenizing variable with name @, 569 569 resp. @(i) if @ and @(1), ..., @(i-1) are defined. 570 570 The monomial ordering of L[1] is consists of 1 block: dp if the … … 856 856 // - Komplizierte Ordnungen (lp oder > 1 Block): hilb 857 857 //V1 - Parameter werden grundsaetzlich nicht in Variable umgewandelt 858 //V2 - Mehr als ein Par meter wird zu Variable konvertiert858 //V2 - Mehr als ein Parameter wird zu Variable konvertiert 859 859 // - fglm is keine Heuristik, da sonst vorher dim==0 peprueft werden muss 860 860 … … 1043 1043 //(Note:Singular counts always least 2 blocks, one is for module component): 1044 1044 //Call a method "direct" if conversion=="no" && partovar="no" which means 1045 //that we apply std or slimgb dir cet in the basering (exception1045 //that we apply std or slimgb direct in the basering (exception 1046 1046 //as long as slimgb does not know qrings: in a qring of a ring P 1047 1047 //the ideal Qideal is added to the ideal and slimgb is applied in P). … … 1076 1076 //direct=="no" (i.e. "hilb" or "fglm" or "par2var" is given) 1077 1077 //or no method is given and we have a complicated monomial ordering 1078 //V1: "par2var" is not a default strategy, it must be explicit ely1078 //V1: "par2var" is not a default strategy, it must be explicitly 1079 1079 //given in order to be performed. 1080 1080 //V2: "par2var" is a default strategy if there are more than 1 parameters … … 1913 1913 "SYNTAX: @code{datetime ()} 1914 1914 RETURN: string 1915 PURPOSE: return the cur ent date and time as a string1915 PURPOSE: return the current date and time as a string 1916 1916 EXAMPLE: example datetime; shows an example 1917 1917 " -
Singular/LIB/surf.lib
r538e06 r4bde6b 22 22 PROCEDURES: 23 23 plot(I); plots plane curves and surfaces 24 surfer(I); plots surfaces interactiv ly24 surfer(I); plots surfaces interactively 25 25 "; 26 26 … … 31 31 RETURN: an intvec containing one entry for each ring variable. 32 32 each contains the sums of all degrees in this variable of all monomials 33 occur ing in the ideal.33 occurring in the ideal. 34 34 An entry is zero if and only if the corresponding variable does not occur in the ideal. 35 35 " -
Singular/LIB/surf_jupyter.lib
r538e06 r4bde6b 32 32 RETURN: an intvec containing one entry for each ring variable. 33 33 each contains the sums of all degrees in this variable of all monomials 34 occur ing in the ideal.34 occurring in the ideal. 35 35 An entry is zero if and only if the corresponding variable does not occur in the ideal. 36 36 " -
Singular/LIB/surfacesignature.lib
r538e06 r4bde6b 185 185 186 186 /////////////////////////////////////////////////////////////////////////////// 187 //------- sigma(z^N + f) in terms of the imbedded resolution graph of f -------187 //------- sigma(z^N + f) in terms of the embedded resolution graph of f ------- 188 188 189 189 static proc dedekindSum(number b, number c, int a) … … 275 275 static proc etaRes(list L, int K) 276 276 //=== L total multiplicities 277 //=== eta-invariant in terms of the imbedded resolution graph of f277 //=== eta-invariant in terms of the embedded resolution graph of f 278 278 { 279 279 int i,j,d; … … 320 320 static proc signatureRes(int N, poly f) 321 321 //=== computes signature of surface singularity defined by z^N + f(x,y) = 0 322 //=== in terms of the imbedded resolution graph of f322 //=== in terms of the embedded resolution graph of f 323 323 { 324 324 list L = totalmultiplicities(f); -
Singular/LIB/surfex.lib
r538e06 r4bde6b 1196 1196 If an additional argument # is given then l[1] changes: 1197 1197 l[1]: a standard basis of the primary ideal 1198 More ver, there are some more entries:1198 Moreover, there are some more entries: 1199 1199 l[5]: dim() of this primary ideal 1200 1200 l[6]: mult() of this primary ideal -
Singular/LIB/symodstd.lib
r538e06 r4bde6b 20 20 version of the standard basis algorithm (improving the calculations in 21 21 positive characteristic). Therefore we only allow primes p such that p-1 is 22 divisible by k. This guarantees the exist ance of a k-th primitive root of22 divisible by k. This guarantees the existence of a k-th primitive root of 23 23 unity in Z/pZ. 24 24 … … 650 650 // the intvec of n greatest primes p <= 2147483647 (resp. n greatest primes 651 651 // < L[size(L)] union with L) such that each (p-1) is divisible by k, and none 652 // of these primes divides any coefficient occur ing in I652 // of these primes divides any coefficient occurring in I 653 653 // --> similar to procedure primeList in modstd.lib 654 654 -
Singular/LIB/tasks.lib
r538e06 r4bde6b 260 260 the latter command, t1 points to the same object as t2; any changes 261 261 to t2 will also effect t1. In contrast to this, copyTask() creates a 262 new independen dtask.262 new independent task. 263 263 @* A task whose state is 'started' cannot be copied. 264 264 SEE ALSO: getCommand, getArguments, getResult, getState, createTask, killTask, … … 984 984 } 985 985 986 /* send the req ests */986 /* send the requests */ 987 987 for (j = size(requests); j > 0; j--) { 988 988 write(requests[j][3], 1); -
Singular/LIB/teachstd.lib
r538e06 r4bde6b 24 24 prodcrit(f,g[,o]); test for product criterion 25 25 chaincrit(f,g,h); test for chain criterion 26 pairset(G); pairs form G neither sati fying prodcrit nor chaincrit26 pairset(G); pairs form G neither satisfying prodcrit nor chaincrit 27 27 updatePairs(P,S,h); pairset P enlarded by not useless pairs (h,f), f in S 28 28 standard(id); standard basis of ideal/module -
Singular/LIB/triang.lib
r538e06 r4bde6b 54 54 55 55 // Noetige Optionen setzen. 56 // obachman: save options so that t ey can be reset on exit56 // obachman: save options so that they can be reset on exit 57 57 intvec ovec = option(get); 58 58 option(redSB); … … 222 222 223 223 // Noetige Optionen setzen. 224 // obachman: save options so that t ey can be reset on exit224 // obachman: save options so that they can be reset on exit 225 225 intvec ovec = option(get); 226 226 option(redSB); … … 832 832 833 833 // Noetige Optionen setzen. 834 // obachman: save options so that t ey can be reset on exit834 // obachman: save options so that they can be reset on exit 835 835 intvec ovec = option(get); 836 836 option(redSB); -
Singular/LIB/tropical.lib
r538e06 r4bde6b 61 61 cause any restriction. 62 62 If, however, for some reason you prefer to work with general vi, then you 63 have to pass right away to the tropicalisation of the equations, where ever63 have to pass right away to the tropicalisation of the equations, wherever 64 64 this is allowed -- these are linear polynomials where the constant coefficient 65 65 corresponds to the valuation of the original coefficient and where … … 125 125 texDrawTriangulation() computes texdraw commands for a triangulation 126 126 127 AUXIL ARY PROCEDURES:127 AUXILIARY PROCEDURES: 128 128 radicalMemberShip() checks radical membership 129 129 tInitialFormPar() computes the t-initial form of poly in Q(t)[x_1,...,x_n] … … 152 152 153 153 /////////////////////////////////////////////////////////////////////////////// 154 /// Auxil ary Static Procedures in this Library154 /// Auxiliary Static Procedures in this Library 155 155 /////////////////////////////////////////////////////////////////////////////// 156 156 /// - phiOmega … … 266 266 @* l[4] = list 267 267 @* l[5] = string 268 @* IF THE OP ITON 'findAll' WAS SET, THEN:268 @* IF THE OPTION 'findAll' WAS SET, THEN: 269 269 @* list, containing ALL liftings of the given point ((w_1/w_0,...,w_n/w_0) 270 270 in the tropical variety of i to a point in V(i) over Puiseux … … 335 335 ERROR("The procedure is not implemented for rings with parameters. See: help tropicalLifting; for more information"); 336 336 } 337 // in order to avoid unpleas ent surprises with the names of the variables337 // in order to avoid unpleasant surprises with the names of the variables 338 338 // we change to a ring where the variables have names t and x(1),...,x(n) 339 339 def ALTERRING=basering; … … 631 631 // note: it may happen, that when resubstituting PARA into 632 632 // the replacement rules 633 // there occur ed some unexpected cancellation;633 // there occurred some unexpected cancellation; 634 634 // we only know that for SOME 635 635 // solution of the zero-dimensional reduction NO … … 695 695 mp=phi(mp); 696 696 LIFT=phi(LIFT); 697 // pass now to a ring w hithout @a and with a as parameter697 // pass now to a ring without @a and with a as parameter 698 698 ring LIFTRING=(char(INTERRING),a),t,ls; 699 699 minpoly=number(imap(INTERRING,mp)); … … 1019 1019 and LIFT[2] describes how the old parameter can be computed from the new one 1020 1020 @* - if a field extension with minimal polynomial of degree k was necessary, 1021 then to the one extension produced ac utally k extensions correspond by replacing1021 then to the one extension produced actually k extensions correspond by replacing 1022 1022 the parameter a successively by all zeros of the minimal polynomial 1023 1023 @* - if the option subst was set l[i][3] contains the polynomial where … … 1346 1346 vectors defining an interior 1347 1347 edge of the Newton subdivision 1348 l[size(l)][3] = intvec, the mon mials occuring in l[i][5]1348 l[size(l)][3] = intvec, the monomials occuring in l[i][5] 1349 1349 have to be shifted by this vector 1350 1350 in order to represent marked … … 1401 1401 // This does not change the tropical curve. 1402 1402 // however, we have to save (a,b), since the Newton 1403 // polygon ehas to be shifted by (-a,-b).1403 // polygon has to be shifted by (-a,-b). 1404 1404 poly aa,bb; // koeffizienten 1405 1405 for (i=1;i<=size(tp);i++) … … 1424 1424 // defined by tp and the Newton subdivision 1425 1425 list vtp=verticesTropicalCurve(tp,#); 1426 // if vtp is empty, then the Newton polygon eis just1426 // if vtp is empty, then the Newton polygon is just 1427 1427 // a line segment and constitutes a bunch of lines 1428 1428 // which can be computed by bunchOfLines … … 1463 1463 // and the entries of the second row will denote 1464 1464 //with which multiplicity 1465 kill newton; // we kill the superfl ous list1465 kill newton; // we kill the superfluous list 1466 1466 } 1467 1467 // 3) Next we build for each part of the Newton … … 1482 1482 kill ipairs; 1483 1483 } 1484 // 4) Check for all pairs of vertic ies in the Newton diagram if they1484 // 4) Check for all pairs of vertices in the Newton diagram if they 1485 1485 // occur in two different parts of the Newton subdivision 1486 1486 int deleted; // if a pair occurs in two NSD, it can be removed … … 1990 1990 otherwise the result will be -1 1991 1991 NOTE: - if the tropical curve is elliptic and its embedded graph has 1992 precisely one loop, then the weig thed lattice length of1992 precisely one loop, then the weighted lattice length of 1993 1993 the loop is its tropical j-invariant 1994 1994 @* - the procedure checks if the embedded graph of the tropical … … 2166 2166 // tropcialJInvariant computes the tropical j-invariant of an elliptic curve 2167 2167 tropicalJInvariant(t*(x3+y3+1)+1/t*(x2+y2+x+y+x2y+xy2)+1/t2*xy); 2168 // the Newton polygon eneed not be the standard simplex2168 // the Newton polygon need not be the standard simplex 2169 2169 tropicalJInvariant(x+y+x2y+xy2+1/t*xy); 2170 2170 // the curve can have arbitrary degree … … 2547 2547 if (npars(basering)==0) 2548 2548 { 2549 ERROR("The basering has no param ter t.");2549 ERROR("The basering has no parameter t."); 2550 2550 } 2551 2551 int order,j; … … 3452 3452 "; 3453 3453 int i,j; // indices 3454 list pairs,markings; // stores edges of the triangulation, respec ively3454 list pairs,markings; // stores edges of the triangulation, respectively 3455 3455 // the marked points for each triangle store the edges and marked 3456 3456 // points of the triangle … … 3530 3530 3531 3531 /////////////////////////////////////////////////////////////////////////////// 3532 /// Auxil ary Procedures3532 /// Auxiliary Procedures 3533 3533 /////////////////////////////////////////////////////////////////////////////// 3534 3534 … … 3568 3568 3569 3569 /////////////////////////////////////////////////////////////////////////////// 3570 /// Auxil ary Procedures concerned with initialforms3570 /// Auxiliary Procedures concerned with initialforms 3571 3571 /////////////////////////////////////////////////////////////////////////////// 3572 3572 … … 3791 3791 3792 3792 /////////////////////////////////////////////////////////////////////////////// 3793 /// Auxil ary Procedures concerned with conics3793 /// Auxiliary Procedures concerned with conics 3794 3794 /////////////////////////////////////////////////////////////////////////////// 3795 3795 … … 3912 3912 EXAMPLE: example randomPolyInT; shows an example" 3913 3913 { 3914 if (defined(t)!=-1) { ERROR("basering has no param ter t");}3914 if (defined(t)!=-1) { ERROR("basering has no parameter t");} 3915 3915 int i,j,k; 3916 3916 def BASERING=basering; … … 3965 3965 ////////////////////////////////////////////////////////////////////////////// 3966 3966 ////////////////////////////////////////////////////////////////////////////// 3967 /// AUXIL ARY PROCEDURES, WHICH ARE DECLARED STATIC3967 /// AUXILIARY PROCEDURES, WHICH ARE DECLARED STATIC 3968 3968 ////////////////////////////////////////////////////////////////////////////// 3969 3969 ////////////////////////////////////////////////////////////////////////////// … … 4304 4304 // In the second form, we can replace that variable, 4305 4305 // and divide by t as much as possible. 4306 // Then there is again one term wi htout t -4306 // Then there is again one term without t - 4307 4307 // the term of the variable with second least w. 4308 4308 // So we can solve for this one again and also replace it in the first form. … … 4408 4408 } 4409 4409 } 4410 ergl[A[2,j1]]=randomp;// else we put there the random o ly g_i(t,x')4410 ergl[A[2,j1]]=randomp;// else we put there the random only g_i(t,x') 4411 4411 erglini[A[2,j1]]=randomp1; 4412 4412 randomp=0; … … 4496 4496 } 4497 4497 } 4498 ergl[A[2,j1]]=randomp;// else we put there the random o ly g_i(t,x')4498 ergl[A[2,j1]]=randomp;// else we put there the random only g_i(t,x') 4499 4499 erglini[A[2,j1]]=randomp1; 4500 4500 randomp=0; … … 4634 4634 // new variables had to be added to the old base ring; if so, change to the new 4635 4635 // ring in which the transformed i and m and the zero a of V(m) live; otherwise 4636 // retr eive i, a and m from btr4636 // retrieve i, a and m from btr 4637 4637 if (size(btr)==1) 4638 4638 { … … 4656 4656 // then check if the (remaining) ideal has as solution 4657 4657 // where the n-1st component is zero, 4658 // and proce deas before; do the same for the remaining variables;4658 // and proceed as before; do the same for the remaining variables; 4659 4659 // this way we make sure that the remaining ideal has 4660 4660 // a solution which has no component zero; … … 4726 4726 // homogenise the ideal i with the first not yet 4727 4727 // used variable in our ring, since gfan 4728 // only handles homogen ous ideals; in principle4728 // only handles homogeneous ideals; in principle 4729 4729 // for this one has first to compute a 4730 4730 // standard basis of i and homogenise that, … … 4976 4976 } 4977 4977 // move to a polynomial ring with global monomial ordering 4978 // - the variable t is superfl ous4978 // - the variable t is superfluous 4979 4979 ideal variablen; 4980 4980 for (int j=1;j<=nvars(basering)-1;j++) … … 4986 4986 // compute the associated primes of the initialideal 4987 4987 // ordering the maximal ideals shall help to avoid 4988 // unnec cessary field extensions4988 // unnecessary field extensions 4989 4989 list maximalideals=ordermaximalidealsNoabs(minAssGTZ(std(ini)),anzahlvariablen); 4990 4990 ideal m=maximalideals[1][1]; // the first associated maximal ideal … … 4994 4994 list a=maximalideals[1][4]; // a_k is the kth component of a 4995 4995 // zero of m, if it is not zero 4996 // eliminate from m the superfl ous variables, that is those ones,4996 // eliminate from m the superfluous variables, that is those ones, 4997 4997 // which do not lead to a new variable 4998 4998 poly elimvars=1; … … 5795 5795 // homogenise the ideal II with the first not yet 5796 5796 // used variable in our ring, since gfan 5797 // only handles homogen ous ideals; in principle for this5797 // only handles homogeneous ideals; in principle for this 5798 5798 // one has first to compute a 5799 5799 // standard basis of II and homogenise that, … … 6188 6188 intvec newdeletedvariables=deletedvariables; 6189 6189 newdeletedvariables[lastvar]=1; 6190 // pass to a new ring w hith one variable less6190 // pass to a new ring with one variable less 6191 6191 if (anzahlvariablen>2) 6192 6192 { … … 6206 6206 // if not yet all variables have been checked, 6207 6207 // then go on with the next smaller variable, 6208 // else prepare the elimination ring and the nec cessary6208 // else prepare the elimination ring and the necessary 6209 6209 // information for return 6210 6210 if (lastvar>1) … … 6263 6263 // if not yet all variables have been tested, go on with the 6264 6264 // next smaller variable 6265 // else prepare the nec cessary information for return6265 // else prepare the necessary information for return 6266 6266 if (lastvar>1) 6267 6267 { … … 6414 6414 } 6415 6415 // move to a polynomial ring with global monomial ordering 6416 // - the variable t is superfl ous,6416 // - the variable t is superfluous, 6417 6417 // the variable @a is not if it was already present 6418 6418 RL[2]=VARIABLEN; … … 6423 6423 // initialideal over the algebraic closure; 6424 6424 // ordering the maximal ideals shall help to 6425 // avoid unnec cessary field extensions6425 // avoid unnecessary field extensions 6426 6426 list absminass=absPrimdecGTZ(ini); 6427 6427 def ABSRING=absminass[1]; // the ring in which the minimal … … 6788 6788 } 6789 6789 } 6790 // if a vertex appears several times, only its first occur ence will be kept6790 // if a vertex appears several times, only its first occurrence will be kept 6791 6791 for (i=size(eckpunkte);i>=2;i--) 6792 6792 { … … 6810 6810 polynomial (in the form of the output of the procedure tropicalise) 6811 6811 defining a bunch of ordinary lines in the plane, 6812 i.e. the Newton polygon eis a line segment6812 i.e. the Newton polygon is a line segment 6813 6813 RETURN: list, see the procedure tropicalCurve for an explanation of 6814 6814 the syntax of this list … … 6893 6893 } 6894 6894 } 6895 // if a vertex appears several times, only its first occur ence will be kept6895 // if a vertex appears several times, only its first occurrence will be kept 6896 6896 for (i=size(bunchoflines);i>=2;i--) 6897 6897 { … … 6907 6907 // sort the lines in an descending way according to the leading 6908 6908 // exponent of the polynomial 6909 // defining the Newton polygon e6909 // defining the Newton polygon 6910 6910 list nbol; 6911 6911 list maximum; … … 6970 6970 entries in the second row have been added and only one 6971 6971 row has been kept; 6972 colum s with a zero in the first row have been removed6972 columns with a zero in the first row have been removed 6973 6973 unless vv has only one column 6974 6974 NOTE: called by tropicalCurve" … … 8234 8234 // tropcial_j_invariant computes the tropical j-invariant of the elliptic curve f 8235 8235 tropicalJInvariant(t*(x3+y3+1)+1/t*(x2+y2+x+y+x2y+xy2)+1/t2*xy); 8236 // the Newton polygon eneed not be the standard simplex8236 // the Newton polygon need not be the standard simplex 8237 8237 tropicalJInvariant(x+y+x2y+xy2+1/t*xy); 8238 8238 // the curve can have arbitrary degree -
Singular/LIB/tropicalNewton.lib
r538e06 r4bde6b 242 242 else 243 243 { 244 ERROR("listDot: unk own or invalid relevant entry");244 ERROR("listDot: unknown or invalid relevant entry"); 245 245 } 246 246 } -
Singular/LIB/tst.lib
r538e06 r4bde6b 578 578 RETURN: 1, if ok; 0 on error 579 579 PURPOSE: Tests sres, lres, hres, mres with betti commands and conversions 580 If opti nal third argument is given, test only lres and hres580 If optional third argument is given, test only lres and hres 581 581 EXAMPLE: example tst_test_res shows an example" 582 582 { … … 585 585 if (! homog(i)) 586 586 { 587 ERROR("ERROR: input ideal needs to be homogen ous ");587 ERROR("ERROR: input ideal needs to be homogeneous "); 588 588 } 589 589 -
Singular/LIB/zeroset.lib
r538e06 r4bde6b 46 46 // note : return a ring : ring need not be exported !!! 47 47 48 // Ar tihmetic in Q(a)[x] without built-in procedures48 // Arithmetic in Q(a)[x] without built-in procedures 49 49 // assume basering = Q[x,a] and minpoly is represented by mpoly(a). 50 50 // the algorithms are taken from "Polynomial Algorithms in Computer Algebra", … … 67 67 // 'mpoly' (attribute "isSB"). The arithmetic in the extension field is 68 68 // implemented in the procedures in the procedures 'MultPolys' (multiplication) 69 // and 'InvertNumber' (inversion). After addition and sub straction one should69 // and 'InvertNumber' (inversion). After addition and subtraction one should 70 70 // apply 'SimplifyPoly' to the result to reduce the result w.r.t. 'mpoly'. 71 // This is done by reducing each coefficient sep erately, which is more71 // This is done by reducing each coefficient separately, which is more 72 72 // efficient for polynomials with many terms. 73 73 … … 817 817 { 818 818 // main work is done in zeroSetMainWork, here the zero-set of each ideal from the 819 // primary decompos tion is coputed by menas of zeroSetMainWork, and then the819 // primary decomposition is coputed by means of zeroSetMainWork, and then the 820 820 // minpoly and the parameter representing the algebraic extension are 821 // transformed according to 'newA', i.e., only book eeping is done.821 // transformed according to 'newA', i.e., only bookkeeping is done. 822 822 823 823 def altring=basering; -
Singular/RULES
r538e06 r4bde6b 14 14 - should compile with gcc/g++ version 2.9.3 to 4.x 15 15 - should create correct code with gcc/g++ version 2.9.3 to 4.x : with 16 well known ex eptions16 well known exceptions 17 17 ( IA64: gcc 4.0.x, 4.1.x produce wrong code, 18 18 OsX: ..., etc.) … … 38 38 Error messages: 39 39 -------------- 40 - al lways test for wrong input from the user,40 - always test for wrong input from the user, 41 41 report errors via Werror/WerrorS, warnings via Warn/WarnS 42 42 - trust other parts of Singular: -
Singular/dyn_modules/python/README
r538e06 r4bde6b 104 104 -raw operations (+,-,* creation of res...) should map directly to the Singular kernel (prefereable nice C++ wrapper classes in the kernel) 105 105 - Wrapper classes in C++ should behave like canonical C++-Classes, no additional res.-management (with the exception of new, delete) should be required 106 - never use currRing implicit ely, always write out the currRing argument, if this isn't done consequently in my code, it would be nice of you to fix it106 - never use currRing implicitly, always write out the currRing argument, if this isn't done consequently in my code, it would be nice of you to fix it 107 107 - regularly check in, check out from CVS 108 108 -
Singular/dyn_modules/systhreads/README.md
r538e06 r4bde6b 74 74 written to or existing elements retrieved from the channel. 75 75 76 # Sync ronization Variables76 # Synchronization Variables 77 77 78 78 Synchronization Variables are created via `makeSyncVar(uri)`. You can -
Singular/dyn_modules/systhreads/doc/primitives.md
r538e06 r4bde6b 74 74 written to or existing elements retrieved from the channel. 75 75 76 # Sync ronization Variables76 # Synchronization Variables 77 77 78 78 Synchronization Variables are created via `makeSyncVar(uri)`. You can -
Singular/dyn_modules/systhreads/doc/threadpools.md
r538e06 r4bde6b 88 88 `add2and2` job does not require any more arguments. 89 89 90 Jobs can also be created from other jobs by pas ing in a job argument90 Jobs can also be created from other jobs by passing in a job argument 91 91 instead of a function name as the first argument: 92 92 -
Tst/Old/README
r538e06 r4bde6b 15 15 (i.e. there are differences between the output and 16 16 the corresponding .res file), 17 the name of unsuccessful ltest file go to stderr17 the name of unsuccessful test file go to stderr 18 18 19 19 To compare two versions of Singular do: -
Tst/README
r538e06 r4bde6b 18 18 Run 19 19 perl ./regress.cmd -h 20 for a summary of the com and-line options of regress.cmd.20 for a summary of the command-line options of regress.cmd. 21 21 22 22 To test(s) correctness of Singular: 23 23 ----------------------------------- 24 24 1.) Put the Singular binary in this directory 25 (prefer ed solution: ln -s <path_to_Singular_binary> Singular)25 (preferred solution: ln -s <path_to_Singular_binary> Singular) 26 26 2.) Run 27 27 perl ./regress.cmd [*.tst] [*.lst] 28 28 with the desired tst (i.e., Singular test scripts) or lst (list 29 29 of tst files -- see Old/universal.lst for an example) file(s). 30 (prefer ed test scenario:30 (preferred test scenario: 31 31 perl ./regress.cmd Old/universal.lst Short/ok_s.lst Long/ok_l.lst 32 32 ) … … 37 37 previously obtained results are found, regress.cmd exits with 38 38 status != 0, and, for each file xx.tst which lead to a 39 difference, the cor esponding files xx.new.res, xx.res, and xx.diff39 difference, the corresponding files xx.new.res, xx.res, and xx.diff 40 40 are kept, and differences are written to stdout. 41 41 5.) The Singular executable which is used for testing can … … 61 61 status != 0 if timing/memory performance is above specified 62 62 per-cent. 63 6.) The timing/memory performance differen es which trigger an error63 6.) The timing/memory performance differences which trigger an error 64 64 (or, report) can be also be set: Either use 65 65 ./regress.cmd -[e,r] all%<val> … … 75 75 of tst files). 76 76 NOTE: Running regress.cmd with the -g option re-generates the result 77 and stat files, i.e., all previous results and statis itics are77 and stat files, i.e., all previous results and statistics are 78 78 overwritten and lost! 79 79 -
doc/C-STYLEGUIDE.md
r538e06 r4bde6b 81 81 prefer inline functions: 82 82 - macros are not type safe 83 + macros are al lways inlined83 + macros are always inlined 84 84 - arguments to macros can be multiply computed 85 85 … … 121 121 - use const wherever possible/suitable (especially in declarations of input 122 122 parameters to functions/methods provided as pointers or references or for 123 methods that do not change the state of an object, consider de laring123 methods that do not change the state of an object, consider declaring 124 124 variables "mutable" whenever suitable) 125 125 -
doc/HOWTO-libsingular
r538e06 r4bde6b 35 35 poly p1=p_ISet(1,R); 36 36 37 // creat e tthe polynomial 2*x^3*z^237 // creat the polynomial 2*x^3*z^2 38 38 poly p2=p_ISet(2,R); 39 39 pSetExp(p2,1,3); -
doc/NEWS.texi
r538e06 r4bde6b 154 154 @item new data type @code{cring} to describe the coeffient rings, to be used 155 155 for the new definitions for (polynomial) rings (@nref{General syntax of a ring declaration}) 156 @item new command @code{ring_list} to access the parts used to con truct polynomial rings (@nref{ring_list},@nref{ringlist})156 @item new command @code{ring_list} to access the parts used to construct polynomial rings (@nref{ring_list},@nref{ringlist}) 157 157 @item extended polynomial ring construction: also from lists produced by @code{ring_list} 158 158 @item new attribute @code{ring_cf} for @code{ring} (@nref{attrib}) … … 267 267 @heading News for version 4-0-0 268 268 269 Version 4-0-0 is a milestone rel ase of Singular.269 Version 4-0-0 is a milestone release of Singular. 270 270 The new release series 4 aims for an entirely modularized architecture 271 271 simplifying connectivity with other systems and paving the way -
doc/changes_in_singular4.texi
r538e06 r4bde6b 27 27 @item d is changed with each release (i.e. with bug fixes, etc.) 28 28 @end itemize 29 @sc{Singular} does also have "unofficial" build or ginating from29 @sc{Singular} does also have "unofficial" build originating from 30 30 a code version between "official" version: such builds display 31 31 "Development version a.b.c" in the header while "official" versions … … 50 50 @itemize @bullet 51 51 @item setting @code{minpoly} results in changing the current coefficient domain 52 and clears all previously defined var aiables of that ring52 and clears all previously defined variables of that ring 53 53 54 54 @item Minor changes in the output of coefficient ring description. Moreover the output of elements of certain rings has been improved (for example, reals). … … 59 59 bases and related computations. For example a Groebner basis element may differ by a unit. 60 60 61 @item Most not eably, due to the redesign of the coefficient rings, if the user sets the minimal polynomial61 @item Most notably, due to the redesign of the coefficient rings, if the user sets the minimal polynomial 62 62 all variables dependent on the current ring are deleted. 63 63 -
doc/sample_lib0.lib
r538e06 r4bde6b 11 11 { return(sum(j,k)); } 12 12 /* { and } does not need to be the 13 first chara ter in line */13 first character in line */ 14 14 15 15 ////////////////////////// -
doc/singcard.tex
r538e06 r4bde6b 161 161 % \opt: print optional arguments 162 162 % \alt: separate alternative arguments 163 % \rep: denote rep itition of arguments163 % \rep: denote repetition of arguments 164 164 % \rmslash: print a slash in roman type face 165 165 % \eg, \ie: obvious -
dox/Doxyfile.in
r538e06 r4bde6b 1636 1636 # following commands have a special meaning inside the header: $title, 1637 1637 # $datetime, $date, $doxygenversion, $projectname, $projectnumber, 1638 # $projectbrief, $projectlogo. Doxygen will replace $title with the emp y string,1639 # for the replacement values of the other commands the user is refer ed to1638 # $projectbrief, $projectlogo. Doxygen will replace $title with the empty string, 1639 # for the replacement values of the other commands the user is referred to 1640 1640 # HTML_HEADER. 1641 1641 # This tag requires that the tag GENERATE_LATEX is set to YES. -
dox/Doxyfile.latex.short
r538e06 r4bde6b 282 282 # probably good enough. For larger projects a too small cache size can cause 283 283 # doxygen to be busy swapping symbols to and from disk most of the time 284 # causing a significant performance penal ity.284 # causing a significant performance penalty. 285 285 # If the system has enough physical memory increasing the cache will improve the 286 286 # performance by keeping more symbols in memory. Note that the value works on 287 # a logarithmic scale so increasing the size by one will roug ly double the287 # a logarithmic scale so increasing the size by one will roughly double the 288 288 # memory usage. The cache size is given by this formula: 289 289 # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, -
emacs/BUGS
r538e06 r4bde6b 3 3 trotzdem sichtbar bleiben (->Fehlermeldungen) 4 4 o singular-cursor-key-model aus customize speichern hat nicht funktioniert 5 o loading file default c oice/dir does not end with an "/"5 o loading file default choice/dir does not end with an "/" 6 6 o no key binding for 'comint-interrupt-subjob 7 7 (i.e., for interrupting Singular), should be extra menu item -
emacs/singular.el
r538e06 r4bde6b 109 109 "Major debugging hook for singular.el. 110 110 Evaluates FORM if `singular-debug' equals t or if MODE is an element 111 of `singular-debug', oth werwise ELSE-FORM."111 of `singular-debug', otherwise ELSE-FORM." 112 112 `(if (or (eq singular-debug t) 113 113 (memq ,mode singular-debug)) … … 323 323 ;; rewrite large portions of Comint to adapt it to our needs. At some 324 324 ;; point it came clear that it would be best to throw out Comint 325 ;; all together, would not have been there some auxilliary functions which325 ;; all together, would not have been there some auxiliary functions which 326 326 ;; are really useful but annoying to rewrite. These are, for example, the 327 327 ;; command line history functions or the completion stuff offered by … … 621 621 (defconst singular-menu-initial-library-menu 622 622 '(["other..." (singular-load-library t) t]) 623 "Menu definition for the init al library sub menu.623 "Menu definition for the initial library sub menu. 624 624 This should be a list of vectors.") 625 625 … … 677 677 678 678 This function is called by `singular-exec'." 679 (singular-debug 'interactive (message "Initializing menu estuff"))679 (singular-debug 'interactive (message "Initializing menu stuff")) 680 680 (make-local-variable 'singular-standard-libraries-alist) 681 681 (make-local-variable 'singular-standard-libraries-with-categories)) … … 690 690 691 691 ;; For some reasons emacs inserts new menus in the oppsite order. 692 ;; Defining menu-2 prior to menu-1 will result in the foll woing menu:692 ;; Defining menu-2 prior to menu-1 will result in the following menu: 693 693 ;; Singular Commands 694 694 ;; That's what we want. So DO NOT exchange both (or ..) statements! … … 790 790 ;; is that really the simplest and fastest method? The problem is that 791 791 ;; `re-search-backward' is not greedy so on an regexp as "\\([>.] \\)+" 792 ;; it stops right after the first occur ence of the sub-expression.792 ;; it stops right after the first occurrence of the sub-expression. 793 793 ;; Anyway, the `(- (point) 2)' expression is OK, even at bob. 794 794 (while (re-search-backward "[>.] " (- (point) 2) t))) … … 1201 1201 ;; section spans up to end of buffer? By definition, eob is not included 1202 1202 ;; in that section since they are right-opened intervals. Most of the 1203 ;; functions react as if there is an imag enary empty clear simple section1203 ;; functions react as if there is an imaginary empty clear simple section 1204 1204 ;; at eob. 1205 1205 ;; - Even though by now there are only two types of different simple … … 1380 1380 (defun singular-emacs-simple-sec-start-at (pos) 1381 1381 "Return start of clear simple section at position POS. 1382 Assumes the existence of an imag enary empty clear simple section if POS is1382 Assumes the existence of an imaginary empty clear simple section if POS is 1383 1383 at end of buffer and there is non-clear simple section immediately ending 1384 1384 at POS. 1385 1385 Assumes that no narrowing is in effect (since `previous-overlay-change' 1386 im licitly does so)."1386 implicitly does so)." 1387 1387 ;; yes, this `(1+ pos)' is OK at eob for 1388 1388 ;; `singular-emacs-simple-sec-before' as well as … … 1401 1401 (defun singular-emacs-simple-sec-end-at (pos) 1402 1402 "Return end of clear simple section at position POS. 1403 Assumes the existence of an imag enary empty clear simple section if POS is1403 Assumes the existence of an imaginary empty clear simple section if POS is 1404 1404 at end of buffer and there is non-clear simple section immediately ending 1405 1405 at POS. 1406 1406 Assumes that no narrowing is in effect (since `next-overlay-change' 1407 im licitly does so)."1407 implicitly does so)." 1408 1408 (let ((next-overlay-change-pos (next-overlay-change pos))) 1409 1409 ;; this `while' loop at last will run into the beginning of the next … … 1419 1419 (defun singular-emacs-simple-sec-at (pos) 1420 1420 "Return simple section at buffer position POS. 1421 Assumes the existence of an imag enary empty clear simple section if POS is1421 Assumes the existence of an imaginary empty clear simple section if POS is 1422 1422 at end of buffer and there is non-clear simple section immediately ending 1423 1423 at POS. … … 1439 1439 startpoints in increasing order and clear simple sections (that is, nil's) 1440 1440 inserted as necessary. BEG is assumed to be less than or equal to END. 1441 The imag enary empty clear simple section at end of buffer is never included1441 The imaginary empty clear simple section at end of buffer is never included 1442 1442 in the result. 1443 1443 Narrowing has no effect on this function." … … 1578 1578 (defun singular-xemacs-simple-sec-start-at (pos) 1579 1579 "Return start of clear simple section at position POS. 1580 Assumes the existence of an imag enary empty clear simple section if POS is1580 Assumes the existence of an imaginary empty clear simple section if POS is 1581 1581 at end of buffer and there is non-clear simple section immediately ending 1582 1582 at POS. 1583 1583 Assumes that no narrowing is in effect (since `previous-extent-change' 1584 im licitly does so)."1584 implicitly does so)." 1585 1585 ;; get into some hairy details at end of buffer. Look if there is a 1586 1586 ;; non-clear simple section immediately ending at end of buffer and 1587 ;; return the start of the imag enary empty clear simple section in that1587 ;; return the start of the imaginary empty clear simple section in that 1588 1588 ;; case. If buffer is empty this test fails since 1589 ;; `singular-xemacs-simple-sec-before' (corre tly) returns nil. But in1589 ;; `singular-xemacs-simple-sec-before' (correctly) returns nil. But in 1590 1590 ;; that case the following loop returns the correct result. 1591 1591 (if (and (eq pos (point-max)) … … 1605 1605 (defun singular-xemacs-simple-sec-end-at (pos) 1606 1606 "Return end of clear simple section at position POS. 1607 Assumes the existence of an imag enary empty clear simple section if POS is1607 Assumes the existence of an imaginary empty clear simple section if POS is 1608 1608 at end of buffer and there is non-clear simple section immediately ending 1609 1609 at POS. 1610 1610 Assumes that no narrowing is in effect (since `next-extent-change' 1611 im licitly does so)."1611 implicitly does so)." 1612 1612 (let ((next-extent-change-pos (next-extent-change pos))) 1613 1613 ;; this `while' loop at last will run into the beginning of the next … … 1623 1623 (defun singular-xemacs-simple-sec-at (pos) 1624 1624 "Return simple section at buffer position POS. 1625 Assumes the existence of an imag enary empty clear simple section if POS is1625 Assumes the existence of an imaginary empty clear simple section if POS is 1626 1626 at end of buffer and there is non-clear simple section immediately ending 1627 1627 at POS. … … 1639 1639 startpoints in increasing order and clear simple sections (that is, nil's) 1640 1640 inserted as necessary. BEG is assumed to be less than or equal to END. 1641 The imag enary empty clear simple section at end of buffer is never included1641 The imaginary empty clear simple section at end of buffer is never included 1642 1642 in the result. 1643 1643 Narrowing has no effect on this function." … … 1745 1745 (const :format "" output) 1746 1746 (choice :format 1747 "Choose either clear or non-clear ou put sections. For non-clear sections,1747 "Choose either clear or non-clear output sections. For non-clear sections, 1748 1748 select or modify a face (preferably `singular-section-output-face') used to 1749 1749 display the sections. … … 1827 1827 (> start (point-max))) 1828 1828 (singular-section-create simple-sec type (point-max) (point-max))) 1829 ;; restricted but not degen rated1829 ;; restricted but not degenerated 1830 1830 (t 1831 1831 (singular-section-create simple-sec type -
emacs/singular.el.decl
r538e06 r4bde6b 2 2 ------------------ 3 3 private: symbol is accessed only in same folding 4 public: symbol is accessed throug out whole singular.el4 public: symbol is accessed throughout whole singular.el 5 5 semipub: symbol is accessed only in a feq functions 6 6 outside same folding. Functions have to be -
kernel/GBEngine/kutil.cc
r538e06 r4bde6b 1418 1418 *the set B collects the pairs of type (S[j],p) 1419 1419 *suppose (r,p) is in B and (s,p) is the new pair and lcm(s,p) != lcm(r,p) 1420 *if the leading term of s d evides lcm(r,p) then (r,p) will be canceled1421 *if the leading term of r d evides lcm(s,p) then (s,p) will not enter B1420 *if the leading term of s divides lcm(r,p) then (r,p) will be canceled 1421 *if the leading term of r divides lcm(s,p) then (s,p) will not enter B 1422 1422 */ 1423 1423 … … 2036 2036 *the set B collects the pairs of type (S[j],p) 2037 2037 *suppose (r,p) is in B and (s,p) is the new pair and lcm(s,p)#lcm(r,p) 2038 *if the leading term of s d evides lcm(r,p) then (r,p) will be canceled2039 *if the leading term of r d evides lcm(s,p) then (s,p) will not enter B2038 *if the leading term of s divides lcm(r,p) then (r,p) will be canceled 2039 *if the leading term of r divides lcm(s,p) then (s,p) will not enter B 2040 2040 */ 2041 2041 { … … 2080 2080 *i.e. lcm(s,p)=product of the leading terms of s and p. 2081 2081 *Suppose (s,r) is in L and the leading term 2082 *of p d evides lcm(s,r)2083 *(==> the leading term of p d evides the leading term of r)2084 *but the leading term of s does not d evide the leading term of r2082 *of p divides lcm(s,r) 2083 *(==> the leading term of p divides the leading term of r) 2084 *but the leading term of s does not divide the leading term of r 2085 2085 *(notice that tis condition is automatically satisfied if r is still 2086 2086 *in S), then (s,r) can be canceled. … … 2101 2101 *the set B collects the pairs of type (S[j],p) 2102 2102 *suppose (r,p) is in B and (s,p) is the new pair and lcm(s,p)#lcm(r,p) 2103 *if the leading term of s d evides lcm(r,p) then (r,p) will be canceled2104 *if the leading term of r d evides lcm(s,p) then (s,p) will not enter B2103 *if the leading term of s divides lcm(r,p) then (r,p) will be canceled 2104 *if the leading term of r divides lcm(s,p) then (s,p) will not enter B 2105 2105 */ 2106 2106 for(j = strat->Bl;j>=0;j--) … … 2192 2192 *suppose we have (s,r),(r,p),(s,p) and spoly(s,p) == 0 and (r,p) is 2193 2193 *still in B (i.e. lcm(r,p) == lcm(s,p) or the leading term of s does not 2194 *d evide lcm(r,p)). In the last case (s,r) can be canceled if the leading2195 *term of p d evides the lcm(s,r)2194 *divide lcm(r,p)). In the last case (s,r) can be canceled if the leading 2195 *term of p divides the lcm(s,r) 2196 2196 *(this canceling should be done here because 2197 2197 *the case lcm(s,p) == lcm(s,r) is not covered in chainCrit) … … 2312 2312 *the set B collects the pairs of type (S[j],p) 2313 2313 *suppose (r,p) is in B and (s,p) is the new pair and lcm(s,p)#lcm(r,p) 2314 *if the leading term of s d evides lcm(r,p) then (r,p) will be canceled2315 *if the leading term of r d evides lcm(s,p) then (s,p) will not enter B2314 *if the leading term of s divides lcm(r,p) then (r,p) will be canceled 2315 *if the leading term of r divides lcm(s,p) then (s,p) will not enter B 2316 2316 */ 2317 2317 { … … 2352 2352 *i.e. lcm(s,p)=product of the leading terms of s and p. 2353 2353 *Suppose (s,r) is in L and the leading term 2354 *of p d evides lcm(s,r)2355 *(==> the leading term of p d evides the leading term of r)2356 *but the leading term of s does not d evide the leading term of r2354 *of p divides lcm(s,r) 2355 *(==> the leading term of p divides the leading term of r) 2356 *but the leading term of s does not divide the leading term of r 2357 2357 *(notice that tis condition is automatically satisfied if r is still 2358 2358 *in S), then (s,r) can be canceled. … … 2373 2373 *the set B collects the pairs of type (S[j],p) 2374 2374 *suppose (r,p) is in B and (s,p) is the new pair and lcm(s,p)#lcm(r,p) 2375 *if the leading term of s d evides lcm(r,p) then (r,p) will be canceled2376 *if the leading term of r d evides lcm(s,p) then (s,p) will not enter B2375 *if the leading term of s divides lcm(r,p) then (r,p) will be canceled 2376 *if the leading term of r divides lcm(s,p) then (s,p) will not enter B 2377 2377 */ 2378 2378 for(j = strat->Bl;j>=0;j--) … … 2421 2421 *suppose we have (s,r),(r,p),(s,p) and spoly(s,p) == 0 and (r,p) is 2422 2422 *still in B (i.e. lcm(r,p) == lcm(s,p) or the leading term of s does not 2423 *d evide lcm(r,p)). In the last case (s,r) can be canceled if the leading2424 *term of p d evides the lcm(s,r)2423 *divide lcm(r,p)). In the last case (s,r) can be canceled if the leading 2424 *term of p divides the lcm(s,r) 2425 2425 *(this canceling should be done here because 2426 2426 *the case lcm(s,p) == lcm(s,r) is not covered in chainCrit) … … 4234 4234 *the set B collects the pairs of type (S[j],p) 4235 4235 *suppose (r,p) is in B and (s,p) is the new pair and lcm(s,p) != lcm(r,p) 4236 *if the leading term of s d evides lcm(r,p) then (r,p) will be canceled4237 *if the leading term of r d evides lcm(s,p) then (s,p) will not enter B4236 *if the leading term of s divides lcm(r,p) then (r,p) will be canceled 4237 *if the leading term of r divides lcm(s,p) then (s,p) will not enter B 4238 4238 */ 4239 4239 for(j = strat->Bl;j>=0;j--) … … 4292 4292 *suppose we have (s,r),(r,p),(s,p) and spoly(s,p) == 0 and (r,p) is 4293 4293 *still in B (i.e. lcm(r,p) == lcm(s,p) or the leading term of s does not 4294 *d evide lcm(r,p)). In the last case (s,r) can be canceled if the leading4295 *term of p d evides the lcm(s,r)4294 *divide lcm(r,p)). In the last case (s,r) can be canceled if the leading 4295 *term of p divides the lcm(s,r) 4296 4296 *(this canceling should be done here because 4297 4297 *the case lcm(s,p) == lcm(s,r) is not covered in chainCrit) … … 12569 12569 *the set B collects the pairs of type (S[j],p) 12570 12570 *suppose (r,p) is in B and (s,p) is the new pair and lcm(s,p) != lcm(r,p) 12571 *if the leading term of s d evides lcm(r,p) then (r,p) will be canceled12572 *if the leading term of r d evides lcm(s,p) then (s,p) will not enter B12571 *if the leading term of s divides lcm(r,p) then (r,p) will be canceled 12572 *if the leading term of r divides lcm(s,p) then (s,p) will not enter B 12573 12573 */ 12574 12574 … … 12952 12952 *the set B collects the pairs of type (S[j],p) 12953 12953 *suppose (r,p) is in B and (s,p) is the new pair and lcm(s,p)#lcm(r,p) 12954 *if the leading term of s d evides lcm(r,p) then (r,p) will be canceled12955 *if the leading term of r d evides lcm(s,p) then (s,p) will not enter B12954 *if the leading term of s divides lcm(r,p) then (r,p) will be canceled 12955 *if the leading term of r divides lcm(s,p) then (s,p) will not enter B 12956 12956 */ 12957 12957 { … … 13008 13008 *i.e. lcm(s,p)=product of the leading terms of s and p. 13009 13009 *Suppose (s,r) is in L and the leading term 13010 *of p d evides lcm(s,r)13011 *(==> the leading term of p d evides the leading term of r)13012 *but the leading term of s does not d evide the leading term of r13010 *of p divides lcm(s,r) 13011 *(==> the leading term of p divides the leading term of r) 13012 *but the leading term of s does not divide the leading term of r 13013 13013 *(notice that tis condition is automatically satisfied if r is still 13014 13014 *in S), then (s,r) can be canceled. … … 13035 13035 *the set B collects the pairs of type (S[j],p) 13036 13036 *suppose (r,p) is in B and (s,p) is the new pair and lcm(s,p)#lcm(r,p) 13037 *if the leading term of s d evides lcm(r,p) then (r,p) will be canceled13038 *if the leading term of r d evides lcm(s,p) then (s,p) will not enter B13037 *if the leading term of s divides lcm(r,p) then (r,p) will be canceled 13038 *if the leading term of r divides lcm(s,p) then (s,p) will not enter B 13039 13039 */ 13040 13040 for(j = strat->Bl;j>=0;j--) … … 13141 13141 *suppose we have (s,r),(r,p),(s,p) and spoly(s,p) == 0 and (r,p) is 13142 13142 *still in B (i.e. lcm(r,p) == lcm(s,p) or the leading term of s does not 13143 *d evide lcm(r,p)). In the last case (s,r) can be canceled if the leading13144 *term of p d evides the lcm(s,r)13143 *divide lcm(r,p)). In the last case (s,r) can be canceled if the leading 13144 *term of p divides the lcm(s,r) 13145 13145 *(this canceling should be done here because 13146 13146 *the case lcm(s,p) == lcm(s,r) is not covered in chainCrit) -
kernel/RULES
r538e06 r4bde6b 3 3 * call rComplete after constructing a ring (returns purely commutative ring!) 4 4 5 ** call nc_CallPlural to make a newly const ucted commutative ring (see above) noncommutative5 ** call nc_CallPlural to make a newly constructed commutative ring (see above) noncommutative 6 6 7 7 * never allocate memory with 0 as size request -
kernel/combinatorics/combinatorics.dox
r538e06 r4bde6b 1 /*! \page kernel_combinatorics_page Combinatori cal algorithms1 /*! \page kernel_combinatorics_page Combinatorial algorithms 2 2 3 \brief This sub-package of \ref kernel_page contains some combinatori cal algorithms.3 \brief This sub-package of \ref kernel_page contains some combinatorial algorithms. 4 4 5 5 Main header in `/kernel/combinatorics/`: -
kernel/ideals.cc
r538e06 r4bde6b 2769 2769 } 2770 2770 #endif 2771 /* currently un sed:2771 /* currently unused: 2772 2772 ideal idChineseRemainder(ideal *xx, intvec *iv) 2773 2773 { -
libpolys/coeffs/README.coeffs
r538e06 r4bde6b 1 1 The structure pointed to by "coeffs" describes a commutative ring with 1 2 which could be used as coeff cients for polynomials.2 which could be used as coefficients for polynomials. 3 3 4 4 To create a new representant of coeffs, implement all of the following … … 18 18 to be Euclidean and an exact division otherwise. 19 19 -cfInit 20 -cfInt (returns 0, if the argu emnt is not in int)21 -cfMPZ (returns mpz_init_si(0), if the argu emnt is not an integer)20 -cfInt (returns 0, if the argument is not in int) 21 -cfMPZ (returns mpz_init_si(0), if the argument is not an integer) 22 22 -cfInpNeg 23 23 negates (mult. by -1) in-place. … … 120 120 n_coeffType type=nRegister(n_unknown,<your InitChar procedure>); 121 121 // create the new coeff type: 122 coeffs cf=nInitChar(type,<your param ater for the InitChar procedure>);122 coeffs cf=nInitChar(type,<your parameter for the InitChar procedure>); 123 123 // cf may now be used for (polynomial) ring definitions etc. 124 124 -
main.dox
r538e06 r4bde6b 23 23 - \subpage singular_page "Singular Interpreter and related". 24 24 25 \Note Sing lar relies on some third-party \subpage external_packages_page "Packages".25 \Note Singular relies on some third-party \subpage external_packages_page "Packages". 26 26 27 27 \Note In case of any uncovered topics or unanswered questions please report … … 56 56 57 57 58 Dependencies between Singular packages (and sub-grouppings) are shown as arrows on the following diagram m:58 Dependencies between Singular packages (and sub-grouppings) are shown as arrows on the following diagram: 59 59 \dotfile Includes.dot Package dependency diagram 60 60 */ -
omalloc/omDefaultConfig.h
r538e06 r4bde6b 95 95 memory request can not be serviced. If set, this function should never return.*/ 96 96 #ifndef OM_DEFAULT_OUT_OF_MEMORY_FUNC 97 /* This init alizes om_Opts.OutOfMemoryFunc which is declared as97 /* This initializes om_Opts.OutOfMemoryFunc which is declared as 98 98 void (*OutOfMemoryFunc)(); */ 99 99 #define OM_DEFAULT_OUT_OF_MEMORY_FUNC NULL … … 114 114 It should trigger the release of as much memory by the application as possible */ 115 115 #ifndef OM_DEFAULT_MEMORY_LOW_FUNC 116 /* This init alizes om_Opts.MemoryLowFunc which is declared as116 /* This initializes om_Opts.MemoryLowFunc which is declared as 117 117 void (*MemoryLowFunc)(); */ 118 118 #define OM_DEFAULT_MEMORY_LOW_FUNC NULL … … 231 231 #endif 232 232 233 /* pattern with which memory is init alized, for front and back padding,233 /* pattern with which memory is initialized, for front and back padding, 234 234 and for free memory: only relevant if track >= 3*/ 235 235 #ifndef OM_INIT_PATTERN -
ppcc/gclib/README
r538e06 r4bde6b 55 55 malloc()); 56 56 - objects finalization and memory recycling (reclaiming to the 57 underl aying malloc implementation) is done lazily (between57 underlying malloc implementation) is done lazily (between 58 58 collections). 59 59 … … 66 66 - small initial internal data size; 67 67 - less source code (to verify); 68 - minimal set of the underl aying clib/pthread/Win32 functions used.68 - minimal set of the underlying clib/pthread/Win32 functions used. 69 69 70 70 The drawbacks of TinyGC are: … … 81 81 blacklisting, memory unmapping, thread-local allocation, parallel 82 82 marking, generation and incremental collections); 83 - relies on the underl aying malloc/free() implementation (which may be83 - relies on the underlying malloc/free() implementation (which may be 84 84 broken for large heaps, like, e.g., in some versions of msvcrt); 85 85 - "all-interior-pointers" mode is limited by the offset of 256 … … 104 104 symbols are not visible outside); 105 105 - both pthreads and Win32 threads are supported; 106 - no thread-safety of the underl aying malloc/free is required;106 - no thread-safety of the underlying malloc/free is required; 107 107 - the stack direction is detected at TinyGC initialization; 108 108 - no warnings are printed; … … 112 112 - CPU state is saved by setjmp(); 113 113 - there is no object "header" (i.e. the original object size is passed 114 to the underl aying malloc()).114 to the underlying malloc()). 115 115 116 116 Usage notes: -
ppcc/gclib/htdocs/index.html
r538e06 r4bde6b 178 178 <LI>malloc-based allocation (i.e. every object is allocated using 179 179 <CODE>malloc()</CODE>); 180 <LI>objects finalization and memory recycling (reclaiming to the underl aying180 <LI>objects finalization and memory recycling (reclaiming to the underlying 181 181 malloc implementation) is done lazily (between collections). 182 182 </UL></DIV> … … 191 191 <LI>small initial internal data size; 192 192 <LI>less source code (to verify); 193 <LI>minimal set of the underl aying193 <LI>minimal set of the underlying 194 194 <ACRONYM>clib</ACRONYM>/<ACRONYM>pthread</ACRONYM>/<ACRONYM>Win32</ACRONYM> 195 195 functions used. … … 209 209 memory unmapping, thread-local allocation, parallel marking, generation and 210 210 incremental collections); 211 <LI>relies on the underl aying malloc/free() implementation (which may be211 <LI>relies on the underlying malloc/free() implementation (which may be 212 212 broken for large heaps, like, e.g., in some versions of msvcrt); 213 213 <LI>"all-interior-pointers" mode is limited by the offset of 256 … … 237 237 <LI>both <ACRONYM>pthreads</ACRONYM> and <ACRONYM>Win32</ACRONYM> threads are 238 238 supported; 239 <LI>no thread-safety of the underl aying malloc/free is required;239 <LI>no thread-safety of the underlying malloc/free is required; 240 240 <LI>the stack direction is detected at <ACRONYM>TinyGC</ACRONYM> 241 241 initialization; … … 246 246 <LI><ACRONYM>CPU</ACRONYM> state is saved by <CODE>setjmp()</CODE>; 247 247 <LI>there is no object "header" (i.e. the original object size is passed to 248 the underl aying <CODE>malloc()</CODE>).248 the underlying <CODE>malloc()</CODE>). 249 249 </UL> 250 250 <P>Usage notes: -
templates/Doxyfile
r538e06 r4bde6b 290 290 # probably good enough. For larger projects a too small cache size can cause 291 291 # doxygen to be busy swapping symbols to and from disk most of the time 292 # causing a significant performance penal ity.292 # causing a significant performance penalty. 293 293 # If the system has enough physical memory increasing the cache will improve the 294 294 # performance by keeping more symbols in memory. Note that the value works on 295 # a logarithmic scale so increasing the size by one will roug ly double the295 # a logarithmic scale so increasing the size by one will roughly double the 296 296 # memory usage. The cache size is given by this formula: 297 297 # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
Note: See TracChangeset
for help on using the changeset viewer.