Ignore:
Timestamp:
Mar 25, 2022, 9:47:17 PM (2 years ago)
Author:
slap <slaplagne@…>
Branches:
(u'spielwiese', '6e5adcba05493683b94648c659a729c189812c77')
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.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.