Changeset a96a75 in git for Singular


Ignore:
Timestamp:
Mar 25, 2022, 9:47:17 PM (2 years ago)
Author:
slap <slaplagne@…>
Branches:
(u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
Children:
36b837d5b06f149cd26135419d1e9b415137afec
Parents:
4ccfc07e7eeceaffdba21722d69b04440a736a71
Message:
Bugs fixed

1. Puiseux expansions were erroneously marked as belonging to different classes.
2. The maximum degree of the expansions is incremented when in one computing Hensel factors to avoid erroneous truncations.
Location:
Singular/LIB
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/integralbasis.lib

    r4ccfc07 ra96a75  
    12401240
    12411241  dbprint(dbg, "--Building HenselBlocks...");
    1242   int degExpand = int(maxExp);
     1242  int degExpand = int(maxExp) + 1;
    12431243  dbprint(dbg, "---- Degree of expansions: ", degExpand);
    12441244
     
    27402740  list rings;
    27412741
    2742   for(i = 1; i <= size(l); i++){
    2743     if(typeof(l[i]) == "ring"){
     2742  for(i = 1; i <= size(l); i++)
     2743  {
     2744    if(typeof(l[i]) == "ring")
     2745    {
    27442746      def S = l[i];
    27452747      setring S;
    27462748      list rl;
    27472749      numb = size(PE);
    2748       for(j = 1; j <= numb; j++){
     2750      for(j = 1; j <= numb; j++)
     2751      {
    27492752        rl = ringlist(S);
    27502753        def SS = ring(rl);
     
    27872790  for(i = 1; i <= size(l); i++)
    27882791  {
    2789     if(typeof(l[i]) == "ring"){
     2792    if(typeof(l[i]) == "ring")
     2793    {
    27902794      l2 = l2 + explodeRings(l[i]);
    27912795    } else
     
    27942798    }
    27952799  }
    2796   l = l2;
    27972800
    27982801  int k = 1;
    27992802  classes[k] = list();
    2800   classes[k][1] = l[1];
     2803  classes[k][1] = l2[1];
    28012804  classCode[1] = 1;
    28022805
    28032806  def R = basering;
    28042807
    2805   for(i = 1; i <= size(l); i++){
    2806     if(typeof(l[i]) == "ring"){
    2807       def S = l[i];
     2808  for(i = 1; i <= size(l2); i++)
     2809  {
     2810    if(typeof(l2[i]) == "ring")
     2811    {
     2812      def S = l2[i];
    28082813      setring S;
    28092814      code[i] = PE[1][6];
     
    28112816      kill S;
    28122817    } else {
    2813       code[i] = l[i][6];
     2818      code[i] = l2[i][6];
    28142819    }
    28152820    if(i>1)
     
    28272832        k++;
    28282833        classes[k] = list();
    2829         classes[k][1] = l[i];
     2834        classes[k][1] = l2[i];
    28302835        classCode[i] = k;
    28312836      } else
    28322837      {
    28332838        cc = classCode[prevI];
    2834         classes[cc][size(classes[cc])+1] = l[i];
     2839        classes[cc][size(classes[cc])+1] = l2[i];
    28352840        classCode[i] = classCode[prevI];
    28362841      }
  • Singular/LIB/puiseuxexpansions.lib

    r4ccfc07 ra96a75  
    462462      for(ii = 2; ii <= size(fJe[1]); ii++)
    463463      {
    464         cod++;
     464        if((ii == 2) || (nonRatCoeff(fJe[1][ii]) == 0))  // If the factor is over the ground field then it is a new conjugacy class.
     465        {
     466          cod++;
     467        }
    465468        fTemp = subst(fJe[1][ii]^(fJe[2][ii]), var(1), var(1)^slD);
    466469        // Checks if a new extension is needed.
     
    665668                {
    666669                  poly fNew2 = subst(fNew1, var(2), (newA + var(2))*var(1)^slN);
    667                 } else {
     670                } else
     671                {
    668672                  poly fNew2 = negExp(fNew1, newA, slN);
    669673                }
    670674                fNew2= sat(ideal(fNew2), var(1))[1][1];
    671                 if(maxDeg > 0){
     675                if(maxDeg > 0)
     676                {
    672677                  newMaxDeg = maxDeg * slD - slN;
    673678                } else {
     
    675680                }
    676681                list csTS = puiseuxMain(fNew2, newMaxDeg, slN, 1, 0);
    677                 for(k = 1; k<=size(csTS); k++){
    678                   if(typeof(csTS[k]) == "ring"){
     682                for(k = 1; k<=size(csTS); k++)
     683                {
     684                  if(typeof(csTS[k]) == "ring")
     685                  {
    679686                    def RT = csTS[k];
    680687                    setring RT;
     
    11291136
    11301137
     1138// Checks if the coefficents of a polynomial are rational or contain some parameter
     1139static proc nonRatCoeff(poly p)
     1140{
     1141  matrix cc = coef(p, var(1)*var(2));
     1142  int nonRat = 0;
     1143  for(int i = 1; i <= ncols(cc); i++)
     1144  {
     1145    if(pardeg(number(cc[2,i])) > 0)
     1146    {
     1147      nonRat = 1;
     1148    }
     1149  }
     1150  return(nonRat);
     1151}
Note: See TracChangeset for help on using the changeset viewer.