Changeset 174d71 in git


Ignore:
Timestamp:
Dec 21, 2021, 3:57:00 PM (2 years ago)
Author:
Hans Schoenemann <hannes@…>
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
Message:
new puiseuxexpansions.lib (also renamed from puiseux.lib)
Files:
3 edited
1 moved

Legend:

Unmodified
Added
Removed
  • Singular/LIB/puiseuxexpansions.lib

    r2dfae4 r174d71  
    11///////////////////////////////////////////////////////////////////////////////
    2 version="version puiseux.lib 4.2.1.2 Nov_2021 "; // $Id$
     2///////////////////////////////////////////////////////////////////////////////
     3///////////////////////////////////////////////////////////////////////////////
     4version="version puiseuxexpansion.lib 4.2.1.3 Dec_2021 "; // $Id$
    35category="Commutative Algebra";
    46info="
    5 LIBRARY:  puiseux.lib  Puiseux expansions over algebraic extensions
     7LIBRARY:  puiseuxexpansion.lib  Puiseux expansions over algebraic extensions
    68AUTHORS:  J. Boehm, j.boehm at mx.uni-saarland.de
    79          W. Decker, decker at mathematik.uni-kl.de
     
    1719PROCEDURES:
    1820 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
    1925";
    2026
     
    110116
    111117proc makePuiseuxFromPoly(poly f)
     118"USAGE: makePuiseuxFromPoly(f); f polynomial in two variables
     119RETURN: make a ring independent polynomial over Puiseux series
     120EXAMPLE: example makePuiseuxFromPoly, shows an example"
    112121{
    113122  return(makePuiseux(f,1,1));
    114123}
    115 
    116 proc makePuiseux(poly f, poly d, int fr)
    117 "USAGE: makePuiseux(f); f polynomial in two variables, d polynomial in
     124example
     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
     132proc makePuiseux(poly f, poly denom, int fr)
     133"USAGE: makePuiseux(f, denom, fr); f polynomial in two variables, denom polynomial in
    118134        the first variable of the ring, int fr
    119135RETURN: make a ring independent polynomial over Puiseux series
     
    123139  F.in=basering;
    124140  F.numer=f;
    125   F.denom =d;
     141  F.denom =denom;
    126142  F.fraction = fr;
    127143  return(F);
     
    137153// Print information for Puiseux elements
    138154proc printPuiseux(Puiseux f)
     155"USAGE: printPuiseux(f); f Puiseux expansion
     156RETURN: prints information for Puiseux elements
     157EXAMPLE: example printPuiseux, shows an example"
    139158{
    140159  def R = basering;
     
    145164  if(minpoly <> 0) {"Minimal polynomial: ", minpoly;}
    146165  setring R;
     166}
     167example
     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
    147175}
    148176
     
    238266// It returns a list containing information about the expansions
    239267proc puiseux(poly f, int maxDeg, int atOrigin)
     268"USAGE: puiseux(f, maxDeg, atOrigin); f polynomial in two variables, int maxDeg, int atOrigin
     269RETURN: the Puiseux expansions of f developed up to degree maxDeg. If atOrigin = 1, only the expansions passing through the origin will be returned.
     270EXAMPLE: example puiseux, shows an example"
    240271{
    241272  if(atOrigin == 1)
     
    249280  return(p);
    250281}
     282example
     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}
    251289
    252290
     
    254292// slN is the numerator of the slope
    255293// slD is the denominator
    256 proc puiseuxStep(poly f, int slN, int slD){
     294static proc puiseuxStep(poly f, int slN, int slD){
    257295  def R = basering;
    258296  poly x = var(1);
     
    403441
    404442      fJe = factorize(je);
    405       fJe = sortFactors(fJe);
     443      fJe = Integralbasis::sortFactors(fJe);
    406444
    407445      fNew1 = subst(f, var(1), var(1)^slD);
     
    566604                }
    567605
    568                 def S = splitRingAt(minP, erg);
     606                def S = Integralbasis::splitRingAt(minP, erg);
    569607                setring S;
    570608                sizeErg = size(erg);
     
    586624
    587625              } else {
    588                 def S = splitRingAt(minP);
     626                def S = Integralbasis::splitRingAt(minP);
    589627                setring S;
    590628                list minPolys;
     
    729767///////////////////////////////////////////////////////////////////////////////
    730768
    731 proc newtonpoly2(poly f, int #)
     769static proc newtonpoly2(poly f, int #)
    732770"USAGE:   newtonpoly2(f);   f poly
    733771ASSUME:  basering has exactly two variables; @*
     
    791829///////////////////////////////////////////////////////////////////////////////
    792830
    793 proc negExp(poly fNew1, poly c1, int slN)
     831static proc negExp(poly fNew1, poly c1, int slN)
    794832{
    795833  // All this is a workaround to work with negative exponents,
     
    850888//        - int iVarY, the index of the Y variable for the ring C{X}[Y].
    851889proc 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].
     895ASSUME:  basering has exactly two variables; @*
     896         f is convenient, that is, f(x,0) != 0 != f(0,y).
     897RETURN:  a list with the Puiseux expansions of PP.
     898KEYWORDS: Puiseux expansions
     899EXAMPLE: example puiseuxList;  shows an example
     900"
     901
    852902{
    853903  def R = basering;
     
    873923  poly f = imap(R_PP, PP_numer);
    874924  list fFacs = factorize(f);
    875   fFacs = sortFactors(fFacs);
     925  fFacs = Integralbasis::sortFactors(fFacs);
    876926  list p;
    877927  list pTemp;
     
    9821032  return(out);
    9831033}
    984 
     1034example
     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}
    9851041
    9861042// The equation corresponding to a segment of the Newton polygon.
    9871043// Factors of this equation correspong to different groups of
    9881044// conjugate expansions
    989 proc minEqNewton(poly f, int slN, int slD)
     1045static proc minEqNewton(poly f, int slN, int slD)
    9901046{
    9911047  intvec v = slD, slN;
     
    9961052    je = jet(f, d, v);
    9971053  }
    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];
    10001056  return(je);
    10011057}
     
    10061062// (it will call splitring and replace the parameter, so if a,b,c,o
    10071063// are in use, it will give an error as in splitring)
    1008 proc splitringParname(poly f, string varName, list #)
     1064static proc splitringParname(poly f, string varName, list #)
    10091065{
    10101066  def R = basering;
    1011   def S = splitRingAt(f, #);
     1067  def S = Integralbasis::splitRingAt(f, #);
    10121068  //def S = splitring(f, #);
    10131069  setring S;
     
    10321088
    10331089// Sum a same number to all elements in the list of integers
    1034 proc sum2All(list l, int k)
     1090static proc sum2All(list l, int k)
    10351091{
    10361092  for(int i = 1; i <= size(l); i++)
  • Singular/singular-libs

    r2dfae4 r174d71  
    5050        numerAlg.lib numerDecom.lib \
    5151        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 \
    5354        realizationMatroids.lib resources.lib \
    5455        rootisolation.lib rwalk.lib rstandard.lib \
  • doc/NEWS.texi

    r2dfae4 r174d71  
    3333@itemize
    3434@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})
    3636@end itemize
    3737
Note: See TracChangeset for help on using the changeset viewer.