Changeset 95fdbe in git for Singular/LIB/hnoether.lib


Ignore:
Timestamp:
Oct 4, 2001, 1:04:17 AM (22 years ago)
Author:
Gert-Martin Greuel <greuel@…>
Branches:
(u'spielwiese', 'e7cc1ebecb61be8b9ca6c18016352af89940b21a')
Children:
e58c4abd91b68d128331a23f3f9dd76dff924048
Parents:
c0cb9d61220926aa7e37baa3087f166a15a23ce5
Message:
* GMG: Pausen bei hoeherem printlevel in hnoether eingefuegt


git-svn-id: file:///usr/local/Singular/svn/trunk@5649 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/hnoether.lib

    rc0cb9d r95fdbe  
    1 // last change, ML: 31.08.00
     1// last change, ML: 31.08.00, GMG: 03.10.01
    22///////////////////////////////////////////////////////////////////////////////
    33// This library is for Singular 1-3-7 or newer
    44
    5 version="$Id: hnoether.lib,v 1.30 2001-08-27 14:47:51 Singular Exp $";
     5version="$Id: hnoether.lib,v 1.31 2001-10-03 23:04:17 greuel Exp $";
    66category="Singularities";
    77info="
     
    3939 allsquarefree(f,l);        the maximal squarefree divisor of the poly f
    4040 further_hn_proc();         show further procedures useful for interactive use
     41      [int HNDebugOn =1;          shows intermediate computations]
    4142
    4243KEYWORDS: Hamburger-Noether expansion; Puiseux expansion; curve singularities
     
    212213    +string(M-sigma*Q)+"*y^"+string(sigma);
    213214   "delta =",d,"Q =",Q,"tau,sigma =",tau,sigma;
     215   pause();
    214216  }
    215217 //------------------- Durchfuehrung der Transformation T2 --------------------
     
    563565 if (ringwechsel) { poly f=m(f); }
    564566 if (defined(HNDebugOn))
    565  {"received polynomial: ",f,", where x =",namex,", y =",namey;}
     567 {"received polynomial: ",f,", where x =",namex,", y =",namey; pause();}
    566568
    567569 int M,N,Q,R,l,e,hilf,eps,getauscht,Abbruch,zeile,exponent,Ausgabe;
     
    678680    nm = getnm(f);             // N,M haben sich evtl. veraendert
    679681    N = nm[1]; M = nm[2];      // Berechne Schnittpunkte Newtonpoly mit Achsen
    680     if (defined(HNDebugOn)) {"I continue with the polynomial",f; }
     682    if (defined(HNDebugOn)) {"I continue with the polynomial",f; pause();}
    681683   }
    682684   else {
     
    703705    nm = getnm(f);              // N,M haben sich veraendert
    704706    N = nm[1]; M = nm[2];       // Berechne Schnittpunkte Newtonpoly mit Achsen
    705     if (defined(HNDebugOn)) {"I continue with the polynomial",f; }
     707    if (defined(HNDebugOn)) {"I continue with the polynomial",f; pause();}
    706708   }
    707709
     
    722724   else           {"x , y were not exchanged";}
    723725   "M resp. N are now",M,N;
     726   pause();
    724727  }
    725728 }                              // end(if Abbruch==0)
     
    749752      delta = koeff(f,M/ e,N - N/ e) / (-1*e*c);
    750753      if (defined(HNDebugOn)) {"quasihomogeneous leading form:",
    751          leit(f,N,M)," = ",c,"* (y -",delta,"* x^"+string(M/ e)+")^",e," ?";}
     754         leit(f,N,M)," = ",c,"* (y -",delta,"* x^"+string(M/ e)+")^",e," ?";
     755         pause();}
    752756      if (leit(f,N,M) != c*(y^(N/ e) - delta*x^(M/ e))^e) {
    753757        dbprint(printlevel+1," The given polynomial is reducible !");
     
    758762        delta = koeff(f,M/ e,N - N/ e) / (-1*e*c);
    759763        if (defined(HNDebugOn)) {"quasihomogeneous leading form:",
    760            leit(f,N,M)," = ",c,"* (y -",delta,"* x^"+string(M/ e)+")^",e," ?";}
     764           leit(f,N,M)," = ",c,"* (y -",delta,"* x^"+string(M/ e)+")^",e," ?";
     765           pause();}
    761766        if (leit(f,N,M) != c*(y^(N/ e) - delta*x^(M/ e))^e) {
    762767           dbprint(printlevel+1," The given polynomial is reducible !");
     
    767772        eps = e;
    768773        for (l = 0; eps%p == 0; l=l+1) { eps=eps/ p;}
    769         if (defined(HNDebugOn)) {e," -> ",eps,"*",p,"^",l;}
     774        if (defined(HNDebugOn)) {e," -> ",eps,"*",p,"^",l;pause();}
    770775        delta = koeff(f,(M/ e)*p^l,(N/ e)*p^l*(eps-1)) / (-1*eps*c);
    771776
     
    789794        if (defined(HNDebugOn)) {"quasihomogeneous leading form:",
    790795          leit(f,N,M)," = ",c,"* (y^"+string(N/ e),"-",delta,"* x^"
    791           +string(M/ e)+")^",e,"  ?";}
     796          +string(M/ e)+")^",e,"  ?";pause();}
    792797        if (leit(f,N,M) != c*(y^(N/ e) - delta*x^(M/ e))^e) {
    793798          dbprint(printlevel+1," The given polynomial is reducible !");
     
    800805       { "a("+string(zeile)+","+string(Q)+") =",delta; }
    801806      a(zeile)[Q]=delta;
    802       if (defined(HNDebugOn)) {"transformed polynomial: ",f;}}
     807      if (defined(HNDebugOn)) {"transformed polynomial: ",f;pause();}}
    803808
    804809      nm=getnm(f); N=nm[1]; M=nm[2];        // Neuberechnung des Newtonpolygons
     
    812817                                     // Anpassung der Sp.zahl der HNE-Matrix
    813818    f = T_Transform(f,Q,N);
    814     if (defined(HNDebugOn)) {"transformed polynomial: ",f;}
     819    if (defined(HNDebugOn)) {"transformed polynomial: ",f;pause();}
    815820    zeile=zeile+1;
    816821 //------------ Bereitstellung von Speicherplatz fuer eine neue Zeile: --------
     
    830835  }
    831836  else {if (M<N) {"Something has gone wrong: M<N";}}
    832   if(defined(HNDebugOn)) {"new M,N:",M,N;}
     837  if(defined(HNDebugOn)) {"new M,N:",M,N;pause();}
    833838
    834839 //----------------- Abbruchbedingungen fuer die Schleife: --------------------
     
    21092114    if (Q<Exaktheit) {
    21102115     f=T1_Transform(f,delta,Q);
    2111      if (defined(HNDebugOn)) { "transformed polynomial:",f; }
     2116     if (defined(HNDebugOn)) { "transformed polynomial:",f; pause();}
    21122117     if (subst(f,y,0)==0) {
    21132118       if ((voice==2) && (printlevel > -1)) { "The HNE is finite!"; }
     
    22302235  maxspalte=0;
    22312236  HNEaktu=HNEs[hnezaehler];
    2232   if (defined(HNDebugOn)) {"To process:";HNEaktu;}
     2237  if (defined(HNDebugOn)) {"To process:";HNEaktu;pause();}
    22332238  if (size(HNEaktu)!=size(HNEaktu[1])+2) {
    22342239     "The ideals and the hqs in HNEs[",hnezaehler,"] don't match!!";
     
    22762281     eps = e;
    22772282     for (l = 0; eps%p == 0; l=l+1) { eps=eps/ p;}
    2278      if (defined(HNDebugOn)) {e," -> ",eps,"*",p,"^",l;}
     2283     if (defined(HNDebugOn)) {e," -> ",eps,"*",p,"^",l;pause();}
    22792284     delta = koeff(f,(M/ e)*p^l,(N/ e)*p^l*(eps-1)) / (-1*eps*c);
    22802285
     
    22852290         "trivial factorization not implemented for",
    22862291         "parameters---I've to use 'factorize'";
    2287        }
     2292       pause();}
    22882293     }
    22892294   }
    22902295 }
    22912296 if (defined(HNDebugOn)) {"quasihomogeneous leading form:",f," = ",c,
    2292         "* (y^"+string(N/ e),"-",delta,"* x^"+string(M/ e)+")^",e," ?";}
     2297        "* (y^"+string(N/ e),"-",delta,"* x^"+string(M/ e)+")^",e," ?";
     2298      pause();}
    22932299 if (f != c*(var(2)^(N/ e) - delta*var(1)^(M/ e))^e) {return(0);}
    22942300 else {return(delta);}
     
    25672573
    25682574 if (defined(HNDebugOn))
    2569  {"received polynomial: ",f,", with x =",namex,", y =",namey;}
     2575 {"received polynomial: ",f,", with x =",namex,", y =",namey;pause();}
    25702576
    25712577 //----------------------- Variablendefinitionen ------------------------------
     
    26462652   }}
    26472653   kill zweitring;
    2648    if (defined(HNDebugOn)) {"I continue with the polynomial",f; }
     2654   if (defined(HNDebugOn)) {"I continue with the polynomial",f;pause(); }
    26492655  }
    26502656  else {
     
    27052711   if (str=="f") { f=allsquarefree(f,test_sqr); }
    27062712  }
    2707   if (defined(HNDebugOn)) {"I continue with the polynomial",f; }
     2713  if (defined(HNDebugOn)) {"I continue with the polynomial",f;pause(); }
    27082714
    27092715 }
     
    27592765 // ------- Berechne HNE von allen Zweigen, fuer die x transversal ist: -------
    27602766 if (defined(HNDebugOn))
    2761    {"1st step: Treat Newton polygon until height",grenze1;}
     2767   {"1st step: Treat Newton polygon until height",grenze1;pause();}
    27622768 if (grenze1>0) {
    27632769  hilflist=HN(f,grenze1,1,essential);
     
    27662772  Ergebnis=extractHNEs(hilflist[1],0);
    27672773  if (hilflist[2]!=-1) {
    2768     if (defined(HNDebugOn)) {" ring change in HN(",1,") detected";}
     2774    if (defined(HNDebugOn)) {" ring change in HN(",1,") detected";pause();}
    27692775    poly transfproc=hilflist[2];
    27702776    map hole=HNE_noparam,transfproc,x,y;
     
    27802786 // --------------- Berechne HNE von allen verbliebenen Zweigen: --------------
    27812787 if (defined(HNDebugOn))
    2782     {"2nd step: Treat Newton polygon until height",grenze2;}
     2788    {"2nd step: Treat Newton polygon until height",grenze2;pause();}
    27832789 if (grenze2>0) {
    27842790  map xytausch=basering,y,x;
     
    27912797  if (not defined(Ergebnis)) {
    27922798 //-- HN wurde schon mal ausgefuehrt; Ringwechsel beim zweiten Aufruf von HN --
    2793     if (defined(HNDebugOn)) {" ring change in HN(",1,") detected";}
     2799    if (defined(HNDebugOn)) {" ring change in HN(",1,") detected";pause();}
    27942800    poly transfproc=hilflist[2];
    27952801    map hole=HNE_noparam,transfproc,x,y;
     
    28972903{
    28982904 //---------- Variablendefinitionen fuer den unverzweigten Teil: --------------
    2899  if (defined(HNDebugOn)) {"procedure HN",Aufruf_Ebene;}
     2905 if (defined(HNDebugOn)) {"procedure HN",Aufruf_Ebene;pause();}
    29002906 int Abbruch,ende,i,j,e,M,N,Q,R,zeiger,zeile,zeilevorher;
    29012907 intvec hqs;
     
    29232929    {"Didn't find an edge in the Newton polygon!";}
    29242930  if (zeiger==size(Newton)-1) {
    2925     if (defined(HNDebugOn)) {"only one relevant side in Newton polygon";}
     2931    if (defined(HNDebugOn)) {"only one relevant side in Newton polygon";
     2932        pause();}
    29262933    M=Newton[zeiger+1][1]-Newton[zeiger][1];
    29272934    N=Newton[zeiger][2]-Newton[zeiger+1][2];
     
    29362943                      /x^Newton[zeiger][1],M,N);
    29372944    if (delta==0) {
    2938       if (defined(HNDebugOn)) {" The given polynomial is reducible !";}
     2945      if (defined(HNDebugOn)) {" The given polynomial is reducible !";pause();}
    29392946      Abbruch=1;
    29402947    }
     
    29462953        if (N>1) { f = T1_Transform(f,delta,M/ e); }
    29472954        else     { ende=1; }
    2948         if (defined(HNDebugOn)) {"a("+string(zeile)+","+string(Q)+") =",delta;}
     2955        if (defined(HNDebugOn)) {"a("+string(zeile)+","+string(Q)+") =",delta;
     2956            pause(); }
    29492957        azeilen[zeile+1][Q]=delta;
    29502958      }
     
    29552963 //------- vollziehe Euklid.Alg. nach, um die HN-Matrix zu berechnen: ---------
    29562964        while (R!=0) {
    2957          if (defined(HNDebugOn)) { "h("+string(zeile)+") =",Q; }
     2965         if (defined(HNDebugOn)) { "h("+string(zeile)+") =",Q;pause(); }
    29582966         hqs[zeile+1]=Q;         // denn zeile beginnt mit dem Wert 0
    29592967 //------------------ markiere das Zeilenende der HNE: ------------------------
     
    29642972         M=N; N=R; R=M%N; Q=M / N;
    29652973        }
    2966         if (defined(HNDebugOn)) {"a("+string(zeile)+","+string(Q)+") =",delta;}
     2974        if (defined(HNDebugOn)) {"a("+string(zeile)+","+string(Q)+") =",delta;
     2975             pause();}
    29672976        azeilen[zeile+1][Q]=delta;
    29682977      }
    2969       if (defined(HNDebugOn)) {"transformed polynomial: ",f;}
     2978      if (defined(HNDebugOn)) {"transformed polynomial: ",f;pause();}
    29702979      grenze=e;
    29712980 //----------------------- teste Abbruchbedingungen: --------------------------
     
    30203029    "Branching part reached---Newton polygon :",Newton;
    30213030    "relevant part until height",grenze,", from",Newton[zeiger],"on";
    3022   }
     3031     pause();}
    30233032  azeilen=list(hqs)+azeilen; // hat jetzt Struktur von HNEs: hqs in der 1.Zeile
    30243033
    30253034 //======= Schleife fuer jede zu betrachtende Seite des Newtonpolygons: =======
    30263035  for(i=zeiger; i<size(Newton); i++) {
    3027    if (defined(HNDebugOn)) { "we consider side",Newton[i],Newton[i+1]; }
     3036   if (defined(HNDebugOn)) { "we consider side",Newton[i],Newton[i+1];pause();}
    30283037   M=Newton[i+1][1]-Newton[i][1];
    30293038   N=Newton[i][2]-Newton[i+1][2];
     
    30683077      teiler=faktoren[1][j];
    30693078      if (teiler/y != 0) {         // sonst war's eine Einheit --> wegwerfen!
    3070         if (defined(HNDebugOn)) {"factor of leading form found:",teiler;}
     3079        if (defined(HNDebugOn)) {"factor of leading form found:",teiler;
     3080             pause();}
    30713081        if (teiler/y2 == 0) {      // --> Faktor hat die Form cy+d
    30723082          deltais[zaehler]=-subst(teiler,y,0)/koeff(teiler,0,1); //=-d/c
     
    30773087          dbprint(printlevel+1,
    30783088             " Change of basering (field extension) necessary!");
    3079           if (defined(HNDebugOn)) { teiler,"is not properly factored!"; }
     3089          if (defined(HNDebugOn)) { teiler,"is not properly factored!";
     3090              pause(); }
    30803091          if (needext==0) { poly zerlege=teiler; }
    30813092          needext=1;
     
    30863097    else { deltais=ideal(delta); eis=e;}
    30873098    if (defined(HNDebugOn)) {"roots of char. poly:";deltais;
    3088                              "with multiplicities:",eis;}
     3099                             "with multiplicities:",eis;pause();}
    30893100    if (needext==1) {
    30903101 //--------------------- fuehre den Ringwechsel aus: --------------------------
     
    31833194        "a("+string(zeile)+","+string(Q)+") =",deltais[j];
    31843195        "transformed polynomial: ",transformiert;
    3185       }
     3196         pause();}
    31863197      if (subst(transformiert,y,0)==0) {
    31873198       dbprint(printlevel+1,"finite HNE found");
     
    32083219      erg=T2_Transform(f,number(deltais[j]),M,N,referencepoly(Newton));
    32093220      transformiert=erg[1];delta=erg[2];
    3210       if (defined(HNDebugOn)) {"transformed polynomial: ",transformiert;}
     3221      if (defined(HNDebugOn)) {"transformed polynomial: ",transformiert;
     3222          pause();}
    32113223      if (subst(transformiert,y,0)==0) {
    32123224       dbprint(printlevel+1,"finite HNE found");
     
    32253237       M1=M;N1=N;R1=R;Q1=M1/ N1;
    32263238       while (R1!=0) {
    3227         if (defined(HNDebugOn)) { "h("+string(zeile+zl-2)+") =",Q1; }
     3239        if (defined(HNDebugOn)) { "h("+string(zeile+zl-2)+") =",Q1;pause(); }
    32283240        HNEakut[1][zeile+zl-1]=Q1;
    32293241        HNEakut[zeile+zl][Q1+1]=x;
     
    32373249       if (defined(HNDebugOn)) {
    32383250         "a("+string(zeile+zl-2)+","+string(Q1)+") =",delta;
    3239        }
     3251          pause();}
    32403252       HNEakut[zeile+zl][Q1]  =delta;
    32413253       HNEakut[zeile+zl][Q1+1]=x;
     
    32653277     else {
    32663278       if (defined(HNDebugOn))
    3267           {" ring change in HN(",Aufruf_Ebene+1,") detected";}
     3279          {" ring change in HN(",Aufruf_Ebene+1,") detected";pause();}
    32683280       list aneu=HNerg[1];
    32693281       poly transfproc=HNerg[2];
     
    33133325       M1=M;N1=N;R1=R;Q1=M1/ N1;
    33143326       while (R1!=0) {
    3315         if (defined(HNDebugOn)) { "h("+string(zeile+zl-2)+") =",Q1; }
     3327        if (defined(HNDebugOn)) { "h("+string(zeile+zl-2)+") =",Q1;pause(); }
    33163328        HNEakut[1][zeile+zl-1]=Q1;
    33173329        HNEakut[zeile+zl][Q1+1]=x;    // Markierung des Zeilenendes der HNE
     
    33233335       if (defined(HNDebugOn)) {
    33243336         "a("+string(zeile+zl-2)+","+string(Q1)+") =",delta;
    3325        }
     3337          pause();}
    33263338       HNEakut[zeile+zl][Q1]=delta;
    33273339
Note: See TracChangeset for help on using the changeset viewer.