Changeset 174d71 in git
- Timestamp:
- Dec 21, 2021, 3:57:00 PM (2 years ago)
- Branches:
- (u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
- Children:
- 2ef61b64b621826d002089672cfdcaa070b9ea08
- Parents:
- 2dfae43faef0f4b81c2c335c28e365fec2e7bd06
- git-author:
- Hans Schoenemann <hannes@mathematik.uni-kl.de>2021-12-21 15:57:00+01:00
- git-committer:
- Hans Schoenemann <hannes@mathematik.uni-kl.de>2021-12-21 15:58:03+01:00
- Files:
-
- 3 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/puiseuxexpansions.lib
r2dfae4 r174d71 1 1 /////////////////////////////////////////////////////////////////////////////// 2 version="version puiseux.lib 4.2.1.2 Nov_2021 "; // $Id$ 2 /////////////////////////////////////////////////////////////////////////////// 3 /////////////////////////////////////////////////////////////////////////////// 4 version="version puiseuxexpansion.lib 4.2.1.3 Dec_2021 "; // $Id$ 3 5 category="Commutative Algebra"; 4 6 info=" 5 LIBRARY: puiseux .lib Puiseux expansions over algebraic extensions7 LIBRARY: puiseuxexpansion.lib Puiseux expansions over algebraic extensions 6 8 AUTHORS: J. Boehm, j.boehm at mx.uni-saarland.de 7 9 W. Decker, decker at mathematik.uni-kl.de … … 17 19 PROCEDURES: 18 20 puiseuxList(PP, maxDeg, iVarX, iVarY); Computes the Puiseux expansion of PP at X = 0 21 makePuiseux(f, denom, fr); Creates a Puiseux element 22 makePuiseuxFromPoly(poly f); Converts a polynomail to Puiseux data type 23 printPuiseux(f); Prints information for Puiseux elements 24 puiseux(f, maxDeg, atOrigin); Computes the Puiseux expansions of f 19 25 "; 20 26 … … 110 116 111 117 proc makePuiseuxFromPoly(poly f) 118 "USAGE: makePuiseuxFromPoly(f); f polynomial in two variables 119 RETURN: make a ring independent polynomial over Puiseux series 120 EXAMPLE: example makePuiseuxFromPoly, shows an example" 112 121 { 113 122 return(makePuiseux(f,1,1)); 114 123 } 115 116 proc makePuiseux(poly f, poly d, int fr) 117 "USAGE: makePuiseux(f); f polynomial in two variables, d polynomial in 124 example 125 { 126 "EXAMPLE:"; echo=2; 127 ring R=0,(x,y),dp; 128 poly f=3*x^2+x+1; 129 makePuiseuxFromPoly(f); 130 } 131 132 proc makePuiseux(poly f, poly denom, int fr) 133 "USAGE: makePuiseux(f, denom, fr); f polynomial in two variables, denom polynomial in 118 134 the first variable of the ring, int fr 119 135 RETURN: make a ring independent polynomial over Puiseux series … … 123 139 F.in=basering; 124 140 F.numer=f; 125 F.denom =d ;141 F.denom =denom; 126 142 F.fraction = fr; 127 143 return(F); … … 137 153 // Print information for Puiseux elements 138 154 proc printPuiseux(Puiseux f) 155 "USAGE: printPuiseux(f); f Puiseux expansion 156 RETURN: prints information for Puiseux elements 157 EXAMPLE: example printPuiseux, shows an example" 139 158 { 140 159 def R = basering; … … 145 164 if(minpoly <> 0) {"Minimal polynomial: ", minpoly;} 146 165 setring R; 166 } 167 example 168 { 169 "EXAMPLE:"; echo=2; 170 ring R=0,(x,y),dp; 171 poly f=3*x^2+x*y+1; 172 Puiseux F = makePuiseux(f,x^2,3); 173 printPuiseux(F); 174 147 175 } 148 176 … … 238 266 // It returns a list containing information about the expansions 239 267 proc puiseux(poly f, int maxDeg, int atOrigin) 268 "USAGE: puiseux(f, maxDeg, atOrigin); f polynomial in two variables, int maxDeg, int atOrigin 269 RETURN: the Puiseux expansions of f developed up to degree maxDeg. If atOrigin = 1, only the expansions passing through the origin will be returned. 270 EXAMPLE: example puiseux, shows an example" 240 271 { 241 272 if(atOrigin == 1) … … 249 280 return(p); 250 281 } 282 example 283 { 284 "EXAMPLE:"; echo=2; 285 ring R=0,(x,y),dp; 286 poly f=y^3 + x^2 + x^8; 287 puiseux(f,3,0); 288 } 251 289 252 290 … … 254 292 // slN is the numerator of the slope 255 293 // slD is the denominator 256 proc puiseuxStep(poly f, int slN, int slD){294 static proc puiseuxStep(poly f, int slN, int slD){ 257 295 def R = basering; 258 296 poly x = var(1); … … 403 441 404 442 fJe = factorize(je); 405 fJe = sortFactors(fJe);443 fJe = Integralbasis::sortFactors(fJe); 406 444 407 445 fNew1 = subst(f, var(1), var(1)^slD); … … 566 604 } 567 605 568 def S = splitRingAt(minP, erg);606 def S = Integralbasis::splitRingAt(minP, erg); 569 607 setring S; 570 608 sizeErg = size(erg); … … 586 624 587 625 } else { 588 def S = splitRingAt(minP);626 def S = Integralbasis::splitRingAt(minP); 589 627 setring S; 590 628 list minPolys; … … 729 767 /////////////////////////////////////////////////////////////////////////////// 730 768 731 proc newtonpoly2(poly f, int #)769 static proc newtonpoly2(poly f, int #) 732 770 "USAGE: newtonpoly2(f); f poly 733 771 ASSUME: basering has exactly two variables; @* … … 791 829 /////////////////////////////////////////////////////////////////////////////// 792 830 793 proc negExp(poly fNew1, poly c1, int slN)831 static proc negExp(poly fNew1, poly c1, int slN) 794 832 { 795 833 // All this is a workaround to work with negative exponents, … … 850 888 // - int iVarY, the index of the Y variable for the ring C{X}[Y]. 851 889 proc puiseuxList(Puiseux PP, int maxDeg, int iVarX, int iVarY) 890 "USAGE: puiseuxList(PP, maxDeg, iVarX, iVarY); Puiseux expansion PP, int maxDeg 891 is the integer up to which the Puiseux expansions will be computed 892 (if maxDeg = -1 computes the singular part), 893 int iVarX is the index of the X variable for the ring C{X}[Y], 894 int iVarY, the index of the Y variable for the ring C{X}[Y]. 895 ASSUME: basering has exactly two variables; @* 896 f is convenient, that is, f(x,0) != 0 != f(0,y). 897 RETURN: a list with the Puiseux expansions of PP. 898 KEYWORDS: Puiseux expansions 899 EXAMPLE: example puiseuxList; shows an example 900 " 901 852 902 { 853 903 def R = basering; … … 873 923 poly f = imap(R_PP, PP_numer); 874 924 list fFacs = factorize(f); 875 fFacs = sortFactors(fFacs);925 fFacs = Integralbasis::sortFactors(fFacs); 876 926 list p; 877 927 list pTemp; … … 982 1032 return(out); 983 1033 } 984 1034 example 1035 { 1036 "EXAMPLE:"; echo = 2; 1037 ring r=0,(x,y),dp; 1038 Puiseux PP = x5+2x3y-x2y2+3xy5+y6+y7; 1039 puiseuxList(PP, 5, 1, 2); 1040 } 985 1041 986 1042 // The equation corresponding to a segment of the Newton polygon. 987 1043 // Factors of this equation correspong to different groups of 988 1044 // conjugate expansions 989 proc minEqNewton(poly f, int slN, int slD)1045 static proc minEqNewton(poly f, int slN, int slD) 990 1046 { 991 1047 intvec v = slD, slN; … … 996 1052 je = jet(f, d, v); 997 1053 } 998 je = divideBy(je, var(1))[1];999 je = divideBy(je, var(2))[1];1054 je = Integralbasis::divideBy(je, var(1))[1]; 1055 je = Integralbasis::divideBy(je, var(2))[1]; 1000 1056 return(je); 1001 1057 } … … 1006 1062 // (it will call splitring and replace the parameter, so if a,b,c,o 1007 1063 // are in use, it will give an error as in splitring) 1008 proc splitringParname(poly f, string varName, list #)1064 static proc splitringParname(poly f, string varName, list #) 1009 1065 { 1010 1066 def R = basering; 1011 def S = splitRingAt(f, #);1067 def S = Integralbasis::splitRingAt(f, #); 1012 1068 //def S = splitring(f, #); 1013 1069 setring S; … … 1032 1088 1033 1089 // Sum a same number to all elements in the list of integers 1034 proc sum2All(list l, int k)1090 static proc sum2All(list l, int k) 1035 1091 { 1036 1092 for(int i = 1; i <= size(l); i++) -
Singular/singular-libs
r2dfae4 r174d71 50 50 numerAlg.lib numerDecom.lib \ 51 51 olga.lib orbitparam.lib \ 52 parallel.lib polyclass.lib polymake.lib polybori.lib puiseux.lib \ 52 parallel.lib polyclass.lib polymake.lib polybori.lib \ 53 puiseuxexpansion.lib \ 53 54 realizationMatroids.lib resources.lib \ 54 55 rootisolation.lib rwalk.lib rstandard.lib \ -
doc/NEWS.texi
r2dfae4 r174d71 33 33 @itemize 34 34 @item sagbigrob.lib: Sagbi-Groebner basis of an ideal of a subalgebra (@nref{sagbigrob_lib}) 35 @item puiseux .lib: Puiseux expansions over algebraic extensions (@nref{puiseux_lib})35 @item puiseuxexpansion.lib: Puiseux expansions over algebraic extensions (@nref{puiseuxexpansioni_lib}) 36 36 @end itemize 37 37
Note: See TracChangeset
for help on using the changeset viewer.