Changeset 03f640 in git


Ignore:
Timestamp:
Jul 9, 2014, 3:58:43 PM (10 years ago)
Author:
Martin Lee <martinlee84@…>
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
8b00cafb736eed4e74873c4326a7c6d326b488af
Parents:
4e2cc188f9d61d04296ddb7df63d0eaccd719584
git-author:
Martin Lee <martinlee84@web.de>2014-07-09 15:58:43+02:00
git-committer:
Martin Lee <martinlee84@web.de>2014-07-17 12:07:11+02:00
Message:
chg: added pruning of alg extensions
Location:
factory
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • factory/cfEzgcd.cc

    r4e2cc1 r03f640  
    11351135  degF = degree( F, x ); degG = degree( G, x );
    11361136
    1137   if(hasFirstAlgVar(G,a))
     1137  if (algExtension)
    11381138    b = REvaluation( 2, tmax(F.level(), G.level()), AlgExtRandomF( a ) );
    11391139  else
     
    11661166        Variable alpha= rootOf (mipo.mapinto());
    11671167        result= GF2FalphaRep (result, alpha);
     1168        prune (alpha);
    11681169      }
    11691170      if (k > 1)
     
    11731174      }
    11741175      if (extOfExt)
     1176      {
    11751177        result= mapDown (result, primElem, imPrimElem, oldA, dest, source);
     1178        prune1 (oldA);
     1179      }
    11761180      return N (d*result);
    11771181    }
     
    11881192          Variable alpha= rootOf (mipo.mapinto());
    11891193          F= GF2FalphaRep (F, alpha);
     1194          prune (alpha);
    11901195        }
    11911196        if (k > 1)
     
    11951200        }
    11961201        if (extOfExt)
     1202        {
    11971203          F= mapDown (F, primElem, imPrimElem, oldA, dest, source);
     1204          prune1 (oldA);
     1205        }
    11981206        return N (d*F);
    11991207      }
     
    12111219          Variable alpha= rootOf (mipo.mapinto());
    12121220          G= GF2FalphaRep (G, alpha);
     1221          prune (alpha);
    12131222        }
    12141223        if (k > 1)
     
    12181227        }
    12191228        if (extOfExt)
     1229        {
    12201230          G= mapDown (G, primElem, imPrimElem, oldA, dest, source);
     1231          prune1 (oldA);
     1232        }
    12211233        return N (d*G);
    12221234      }
     
    12481260          Variable alpha= rootOf (mipo.mapinto());
    12491261          result= GF2FalphaRep (result, alpha);
     1262          prune (alpha);
    12501263        }
    12511264        if (k > 1)
     
    12551268        }
    12561269        if (extOfExt)
     1270        {
    12571271          result= mapDown (result, primElem, imPrimElem, oldA, dest, source);
     1272          prune1 (oldA);
     1273        }
    12581274        return N (d*result);
    12591275      }
     
    12911307            Variable alpha= rootOf (mipo.mapinto());
    12921308            F= GF2FalphaRep (F, alpha);
     1309            prune (alpha);
    12931310          }
    12941311          if (k > 1)
     
    12981315          }
    12991316          if (extOfExt)
     1317          {
    13001318            F= mapDown (F, primElem, imPrimElem, oldA, dest, source);
     1319            prune1 (oldA);
     1320          }
    13011321          return N (d*F);
    13021322        }
     
    13141334            Variable alpha= rootOf (mipo.mapinto());
    13151335            G= GF2FalphaRep (G, alpha);
     1336            prune (alpha);
    13161337          }
    13171338          if (k > 1)
     
    13211342          }
    13221343          if (extOfExt)
     1344          {
    13231345            G= mapDown (G, primElem, imPrimElem, oldA, dest, source);
     1346            prune1 (oldA);
     1347          }
    13241348          return N (d*G);
    13251349        }
     
    13771401          Variable alpha= rootOf (mipo.mapinto());
    13781402          result= GF2FalphaRep (result, alpha);
     1403          prune (alpha);
    13791404        }
    13801405        if (k > 1)
     
    13841409        }
    13851410        if (extOfExt)
     1411        {
    13861412          result= mapDown (result, primElem, imPrimElem, oldA, dest, source);
     1413          prune1 (oldA);
     1414        }
    13871415        return N (d*result);
    13881416      }
     
    13961424          result= modGCDFq (F, G, a);
    13971425          if (extOfExt)
     1426          {
    13981427            result= mapDown (result, primElem, imPrimElem, oldA, dest, source);
     1428            prune1 (oldA);
     1429          }
    13991430          return N (d*result);
    14001431        }
     
    14081439            Variable alpha= rootOf (mipo.mapinto());
    14091440            result= GF2FalphaRep (result, alpha);
     1441            prune (alpha);
    14101442          }
    14111443          if (k > 1)
     
    14301462          result= modGCDFq (F, G, a);
    14311463          if (extOfExt)
     1464          {
    14321465            result= mapDown (result, primElem, imPrimElem, oldA, dest, source);
     1466            prune1 (oldA);
     1467          }
    14331468          return N (d*result);
    14341469        }
     
    14421477            Variable alpha= rootOf (mipo.mapinto());
    14431478            result= GF2FalphaRep (result, alpha);
     1479            prune (alpha);
    14441480          }
    14451481          if (k > 1)
     
    14771513          Variable alpha= rootOf (mipo.mapinto());
    14781514          cand= GF2FalphaRep (cand, alpha);
     1515          prune (alpha);
    14791516        }
    14801517        if (k > 1 && gcdfound)
     
    14841521        }
    14851522        if (extOfExt && gcdfound)
     1523        {
    14861524          cand= mapDown (cand, primElem, imPrimElem, oldA, dest, source);
     1525          prune1 (oldA);
     1526        }
    14871527      }
    14881528    }
  • factory/cfGcdUtil.cc

    r4e2cc1 r03f640  
    5252    bool passToGF= false;
    5353    int k= 1;
     54    bool extOfExt= false;
     55    Variable v3;
    5456    if (p > 0 && p < TEST_ONE_MAX && CFFactory::gettype() != GaloisFieldDomain && !algExtension)
    5557    {
     
    7880    else if (p > 0 && p < TEST_ONE_MAX && algExtension)
    7981    {
    80       bool extOfExt= false;
    8182#ifdef HAVE_NTL
    8283      int d= degree (getMipo (v));
     
    132133      if (extOfExt)
    133134      {
     135        v3= v;
    134136        F= mapUp (F, v, v2, primElem, imPrimElem, source, dest);
    135137        G= mapUp (G, v, v2, primElem, imPrimElem, source, dest);
     
    181183        if (k > 1)
    182184          setCharacteristic (p, k, gf_name);
     185        if (extOfExt)
     186          prune1 (v3);
    183187        return false;
    184188    }
     
    208212    if (k > 1)
    209213      setCharacteristic (p, k, gf_name);
     214    if (extOfExt)
     215      prune1 (v3);
    210216    return result;
    211217}
  • factory/cfModGcd.cc

    r4e2cc1 r03f640  
    695695        ppA= mapDown (ppA, prim_elem_alpha, im_prim_elem_alpha, alpha, u, v);
    696696        ppB= mapDown (ppB, prim_elem_alpha, im_prim_elem_alpha, alpha, u, v);
     697        prune1 (alpha);
    697698      }
    698699      coF= N (ppA*(cA/gcdcAcB));
     
    770771          TIMING_END_AND_PRINT (termination_test,
    771772                                "time for successful termination test Fq: ");
     773          prune1 (alpha);
    772774          return N(gcdcAcB*ppH);
    773775        }
     
    13191321  coG= 0;
    13201322  G_m= 0;
    1321   Variable alpha, V_buf;
     1323  Variable alpha, V_buf, cleanUp;
    13221324  bool fail= false;
    13231325  bool inextension= false;
     
    13641366      CanonicalForm mipo;
    13651367      int deg= 2;
    1366       do {
     1368      bool initialized= false;
     1369      do
     1370      {
    13671371        mipo= randomIrredpoly (deg, x);
    1368         alpha= rootOf (mipo);
     1372        if (initialized)
     1373          setMipo (alpha, mipo);
     1374        else
     1375          alpha= rootOf (mipo);
    13691376        inextension= true;
     1377        initialized= true;
    13701378        fail= false;
    13711379        random_element= randomElement (m*lcA*lcB, alpha, l, fail);
     
    13741382      list= CFList();
    13751383      V_buf= alpha;
     1384      cleanUp= alpha;
    13761385      TIMING_START (gcd_recursion);
    13771386      G_random_element=
     
    14611470    if (d0 == 0)
    14621471    {
     1472      if (inextension)
     1473        prune (cleanUp);
    14631474      coF= N (ppA*(cA/gcdcAcB));
    14641475      coG= N (ppB*(cB/gcdcAcB));
     
    15251536           (fdivides (ppH, ppA, ppCoF) && fdivides (ppH, ppB, ppCoG)))
    15261537      {
     1538        if (inextension)
     1539          prune (cleanUp);
    15271540        coF= N ((cA/gcdcAcB)*ppCoF);
    15281541        coG= N ((cB/gcdcAcB)*ppCoG);
     
    22772290        CanonicalForm mipo;
    22782291        int deg= 2;
    2279         do {
     2292        bool initialized= false;
     2293        do
     2294        {
    22802295          mipo= randomIrredpoly (deg, x);
    2281           V_buf= rootOf (mipo);
     2296          if (initialized)
     2297            setMipo (V_buf, mipo);
     2298          else
     2299            V_buf= rootOf (mipo);
    22822300          evalFail= false;
     2301          initialized= true;
    22832302          evalPoints= evaluationPoints (A, B, Aeval, Beval, LCA, GF, V_buf,
    22842303                                        evalFail, list);
     
    22962315      delete[] pEvalPoints;
    22972316      fail= true;
     2317      if (alpha.level() != 1 && V_buf != alpha)
     2318        prune1 (alpha);
    22982319      return 0;
    22992320    }
     
    23052326        delete[] pEvalPoints;
    23062327        fail= true;
     2328        if (alpha.level() != 1 && V_buf != alpha)
     2329          prune1 (alpha);
    23072330        return 0;
    23082331      }
     
    23672390      delete[] coeffMonoms;
    23682391      fail= true;
     2392      if (alpha.level() != 1 && V_buf != alpha)
     2393        prune1 (alpha);
    23692394      return 0;
    23702395    }
     
    23832408    CFList u, v;
    23842409    result= mapDown (result, prim_elem_alpha, im_prim_elem_alpha, alpha, u, v);
     2410    prune1 (alpha);
    23852411  }
    23862412
     
    25512577          CanonicalForm mipo;
    25522578          int deg= 2;
    2553           do {
     2579          bool initialized= false;
     2580          do
     2581          {
    25542582            mipo= randomIrredpoly (deg, x);
    2555             V_buf= rootOf (mipo);
     2583            if (initialized)
     2584              setMipo (V_buf, mipo);
     2585            else
     2586              V_buf= rootOf (mipo);
    25562587            evalFail= false;
     2588            initialized= true;
    25572589            evalPoints= evaluationPoints (A, B, Aeval, Beval, LCA, GF, V_buf,
    25582590                                          evalFail, list);
     
    25762608      delete[] pEvalPoints;
    25772609      fail= true;
     2610      if (alpha.level() != 1 && V_buf != alpha)
     2611        prune1 (alpha);
    25782612      return 0;
    25792613    }
     
    25852619        delete[] pEvalPoints;
    25862620        fail= true;
     2621        if (alpha.level() != 1 && V_buf != alpha)
     2622          prune1 (alpha);
    25872623        return 0;
    25882624      }
     
    27452781            delete [] bufpEvalPoints;
    27462782          fail= true;
     2783          if (alpha.level() != 1 && V_buf != alpha)
     2784            prune1 (alpha);
    27472785          return 0;
    27482786        }
     
    27602798              delete [] bufpEvalPoints;
    27612799            fail= true;
     2800            if (alpha.level() != 1 && V_buf != alpha)
     2801              prune1 (alpha);
    27622802            return 0;
    27632803          }
     
    28482888          delete [] bufpEvalPoints;
    28492889        fail= true;
     2890        if (alpha.level() != 1 && V_buf != alpha)
     2891          prune1 (alpha);
    28502892        return 0;
    28512893      }
     
    28702912          delete [] bufpEvalPoints;
    28712913        fail= true;
     2914        if (alpha.level() != 1 && V_buf != alpha)
     2915          prune1 (alpha);
    28722916        return 0;
    28732917      }
     
    29062950        delete [] bufpEvalPoints;
    29072951      fail= true;
     2952      if (alpha.level() != 1 && V_buf != alpha)
     2953        prune1 (alpha);
    29082954      return 0;
    29092955    }
     
    29222968      CFList u, v;
    29232969      result= mapDown (result,prim_elem_alpha, im_prim_elem_alpha, alpha, u, v);
     2970      prune1 (alpha);
    29242971    }
    29252972    result= N(result);
     
    29873034      delete[] pM;
    29883035      fail= true;
     3036      if (alpha.level() != 1 && V_buf != alpha)
     3037        prune1 (alpha);
    29893038      return 0;
    29903039    }
     
    30073056    CFList u, v;
    30083057    result= mapDown (result, prim_elem, im_prim_elem, alpha, u, v);
     3058    prune1 (alpha);
    30093059  }
    30103060  result= N(result);
     
    31953245
    31963246    if (d0 == 0)
     3247    {
     3248      if (inextension)
     3249        prune1 (alpha);
    31973250      return N(gcdcAcB);
     3251    }
    31983252    if (d0 >  d)
    31993253    {
     
    32383292          ppH /= Lc(ppH);
    32393293          DEBOUTLN (cerr, "ppH after mapDown= " << ppH);
     3294          prune1 (alpha);
    32403295          return N(gcdcAcB*ppH);
    32413296        }
     
    33743429
    33753430        if (d0 == 0)
     3431        {
     3432          if (inextension)
     3433            prune1 (alpha);
    33763434          return N(gcdcAcB);
     3435        }
    33773436        if (d0 >  d)
    33783437        {
     
    34213480              ppH /= Lc(ppH);
    34223481              DEBOUTLN (cerr, "ppH after mapDown= " << ppH);
     3482              prune1 (alpha);
    34233483              return N(gcdcAcB*ppH);
    34243484            }
     
    35183578  topLevel= false;
    35193579  bool inextension= false;
    3520   Variable V_buf, alpha;
     3580  Variable V_buf, alpha, cleanUp;
    35213581  CanonicalForm prim_elem, im_prim_elem;
    35223582  CFList source, dest;
     
    35633623      CanonicalForm mipo;
    35643624      int deg= 2;
     3625      bool initialized= false;
    35653626      do
    35663627      {
    35673628        mipo= randomIrredpoly (deg, x);
    3568         alpha= rootOf (mipo);
     3629        if (initialized)
     3630          setMipo (alpha, mipo);
     3631        else
     3632          alpha= rootOf (mipo);
    35693633        inextension= true;
    35703634        fail= false;
     3635        initialized= true;
    35713636        random_element= randomElement (m, alpha, l, fail);
    35723637        deg++;
    35733638      } while (fail);
     3639      cleanUp= alpha;
    35743640      V_buf= alpha;
    35753641      list= CFList();
     
    36503716
    36513717    if (d0 == 0)
     3718    {
     3719      if (inextension)
     3720        prune (cleanUp);
    36523721      return N(gcdcAcB);
     3722    }
    36533723    if (d0 >  d)
    36543724    {
     
    36883758
    36893759      if (fdivides (ppH, ppA) && fdivides (ppH, ppB))
     3760      {
     3761        if (inextension)
     3762          prune (cleanUp);
    36903763        return N(gcdcAcB*ppH);
     3764      }
    36913765    }
    36923766    G_m= H;
     
    37583832          CanonicalForm mipo;
    37593833          int deg= 2;
     3834          bool initialized= false;
    37603835          do
    37613836          {
    37623837            mipo= randomIrredpoly (deg, x);
    3763             alpha= rootOf (mipo);
     3838            if (initialized)
     3839              setMipo (alpha, mipo);
     3840            else
     3841              alpha= rootOf (mipo);
    37643842            inextension= true;
    37653843            fail= false;
     3844            initialized= true;
    37663845            random_element= randomElement (m, alpha, l, fail);
    37673846            deg++;
    37683847          } while (fail);
     3848          cleanUp= alpha;
    37693849          V_buf= alpha;
    37703850          list= CFList();
     
    38623942
    38633943        if (d0 == 0)
     3944        {
     3945          if (inextension)
     3946            prune (cleanUp);
    38643947          return N(gcdcAcB);
     3948        }
    38653949        if (d0 >  d)
    38663950        {
     
    39013985          DEBOUTLN (cerr, "ppH= " << ppH);
    39023986          if (fdivides (ppH, ppA) && fdivides (ppH, ppB))
     3987          {
     3988            if (inextension)
     3989              prune (cleanUp);
    39033990            return N(gcdcAcB*ppH);
     3991          }
    39043992        }
    39053993
     
    39134001    }
    39144002    else
     4003    {
     4004      if (inextension)
     4005        prune (cleanUp);
    39154006      return N(gcdcAcB*modGCDFp (ppA, ppB));
     4007    }
    39164008  } while (1); //end of first do
    39174009}
  • factory/cf_map_ext.cc

    r4e2cc1 r03f640  
    165165{
    166166  Variable beta= rootOf (gf_mipo);
    167   return GF2FalphaHelper (F, beta) (alpha, beta);
     167  CanonicalForm result= GF2FalphaHelper (F, beta) (alpha, beta);
     168  prune (beta);
     169  return result;
    168170}
    169171
     
    339341  primitive= false;
    340342  fail= false;
     343  bool initialized= false;
    341344  do
    342345  {
    343346    BuildIrred (NTL_mipo, d);
    344347    mipo2= convertNTLzzpX2CF (NTL_mipo, Variable (1));
    345     beta= rootOf (mipo2);
     348    if (!initialized)
     349      beta= rootOf (mipo2);
     350    else
     351      setMipo (beta, mipo2);
    346352    primitive= isPrimitive (beta, fail);
    347353    if (primitive)
  • factory/facAlgFunc.cc

    r4e2cc1 r03f640  
    367367          j.getItem()= j.getItem() (rb, i.getItem().mvar());
    368368        }
     369        prune (alpha);
    369370      }
    370371      else
     
    463464    if (!isRat && getCharacteristic() == 0)
    464465      Off (SW_RATIONAL);
     466    prune (alpha);
    465467    return L;
    466468  }
     
    10001002      }
    10011003      Factorlist= Trager(f, Astar, vminpoly, as, isFunctionField);
     1004      if (extdeg > 1)
     1005        prune (vminpoly);
    10021006      return Factorlist;
    10031007    }
     
    10151019      }
    10161020      Factorlist= Trager (f, Astar, vminpoly, as, isFunctionField);
     1021      if (extdeg > 1)
     1022        prune (vminpoly);
    10171023      return Factorlist;
    10181024    }
  • factory/facBivar.cc

    r4e2cc1 r03f640  
    578578    for (CFListIterator iter= uniFactors; iter.hasItem(); iter++)
    579579      iter.getItem()= replacevar (iter.getItem(), vv, v);
     580    prune (vv);
    580581  }
    581582
  • factory/facFqBivar.cc

    r4e2cc1 r03f640  
    233233      i.getItem()= CFFactor (buf, i.getItem().exp());
    234234    }
     235    prune (beta);
    235236  }
    236237  else if (alpha.level() != 1)
     
    88508851      for (CFListIterator j= factors; j.hasItem(); j++)
    88518852        j.getItem()= GF2FalphaRep (j.getItem(), vBuf);
     8853      prune (vBuf);
    88528854    }
    88538855    else // not able to pass to GF, pass to F_p(\alpha)
     
    88578859      ExtensionInfo info2= ExtensionInfo (v);
    88588860      factors= biFactorize (A, info2);
     8861      prune (v);
    88598862    }
    88608863    return factors;
     
    88708873      ExtensionInfo info2= ExtensionInfo (v);
    88718874      factors= biFactorize (A, info2);
     8875      prune (v);
    88728876    }
    88738877    else
     
    88918895        ExtensionInfo info2= ExtensionInfo (v, alpha, imPrimElem, primElem);
    88928896        factors= biFactorize (bufA, info2);
     8897        prune (v);
    88938898      }
    88948899      else
     
    89118916        ExtensionInfo info2= ExtensionInfo (v, beta, imPrimElem, delta);
    89128917        factors= biFactorize (bufA, info2);
     8918        prune (v);
    89138919      }
    89148920    }
     
    89338939        ExtensionInfo info2= ExtensionInfo (extension);
    89348940        factors= biFactorize (A.mapinto(), info2);
     8941        prune (vBuf);
    89358942      }
    89368943      else // not able to pass to another GF, pass to F_p(\alpha)
     
    89438950        ExtensionInfo info2= ExtensionInfo (v, extension);
    89448951        factors= biFactorize (A, info2);
     8952        prune (vBuf);
    89458953      }
    89468954    }
     
    89808988        for (CFListIterator i= factors; i.hasItem(); i++)
    89818989          i.getItem()= Falpha2GFRep (i.getItem());
     8990        prune (v1);
    89828991      }
    89838992    }
  • factory/facFqFactorize.cc

    r4e2cc1 r03f640  
    20442044    tmp= iter.getItem() (evalPoint, x);
    20452045    tmp /= Lc (tmp);
    2046     if (pos= findItem (factors2, tmp))
     2046    if ((pos= findItem (factors2, tmp)))
    20472047    {
    20482048      result2.append (getItem (factors3, pos));
     
    36473647      for (CFListIterator j= factors; j.hasItem(); j++)
    36483648        j.getItem()= GF2FalphaRep (j.getItem(), vBuf);
     3649      prune (vBuf);
    36493650    }
    36503651    else if (p >= 7 && p*p < (1<<16)) // pass to GF if possible
     
    36603661      for (CFListIterator j= factors; j.hasItem(); j++)
    36613662        j.getItem()= GF2FalphaRep (j.getItem(), vBuf);
     3663      prune (vBuf);
    36623664    }
    36633665    else  // not able to pass to GF, pass to F_p(\alpha)
     
    36673669      ExtensionInfo info= ExtensionInfo (v);
    36683670      factors= multiFactorize (A, info);
     3671      prune (v);
    36693672    }
    36703673    return factors;
     
    36803683      ExtensionInfo info= ExtensionInfo (v);
    36813684      factors= multiFactorize (A, info);
     3685      prune (v);
    36823686    }
    36833687    else
     
    37013705        ExtensionInfo info= ExtensionInfo (v, alpha, imPrimElem, primElem);
    37023706        factors= multiFactorize (bufA, info);
     3707        prune (v);
    37033708      }
    37043709      else
     
    37213726        ExtensionInfo info= ExtensionInfo (v, beta, imPrimElem, delta);
    37223727        factors= multiFactorize (bufA, info);
     3728        prune (v);
    37233729      }
    37243730    }
     
    37433749        ExtensionInfo info= ExtensionInfo (extension);
    37443750        factors= multiFactorize (A.mapinto(), info);
     3751        prune (vBuf);
    37453752      }
    37463753      else // not able to pass to another GF, pass to F_p(\alpha)
     
    37533760        ExtensionInfo info= ExtensionInfo (v, extension);
    37543761        factors= multiFactorize (A, info);
     3762        prune (vBuf);
    37553763      }
    37563764    }
     
    37883796        for (CFListIterator i= factors; i.hasItem(); i++)
    37893797          i.getItem()= Falpha2GFRep (i.getItem());
     3798        prune (v1);
    37903799      }
    37913800    }
  • factory/variable.cc

    r4e2cc1 r03f640  
    220220{
    221221    ASSERT( alpha.level() < 0 && alpha.level() != LEVELBASE, "illegal extension" );
     222    algextensions[-alpha.level()]= ext_entry( 0, false );
    222223    algextensions[-alpha.level()]= ext_entry((InternalPoly*)(conv2mipo( mipo, alpha ).getval()), true );
    223224}
     
    256257    return 0;
    257258  return strlen( var_names_ext )-1;
     259}
     260
     261void prune (Variable& alpha)
     262{
     263  int i, n = strlen( var_names_ext );
     264  ASSERT (n+1 >= -alpha.level(), "wrong variable");
     265  if (-alpha.level() == 1)
     266  {
     267    delete [] var_names_ext;
     268    delete [] algextensions;
     269    var_names_ext= 0;
     270    algextensions= 0;
     271    alpha= Variable();
     272    return;
     273  }
     274  char * newvarnames = new char [-alpha.level() + 1];
     275  for ( i = 0; i < -alpha.level(); i++ )
     276    newvarnames[i] = var_names_ext[i];
     277  newvarnames[-alpha.level()] = 0;
     278  delete [] var_names_ext;
     279  var_names_ext = newvarnames;
     280  ext_entry * newalgext = new ext_entry [-alpha.level()];
     281  for ( i = 0; i < -alpha.level(); i++ )
     282    newalgext[i] = algextensions[i];
     283  delete [] algextensions;
     284  algextensions = newalgext;
     285  alpha= Variable();
     286}
     287
     288void prune1 (const Variable& alpha)
     289{
     290  int i, n = strlen( var_names_ext );
     291  ASSERT (n+1 >= -alpha.level(), "wrong variable");
     292
     293  char * newvarnames = new char [-alpha.level() + 2];
     294  for ( i = 0; i <= -alpha.level(); i++ )
     295    newvarnames[i] = var_names_ext[i];
     296  newvarnames[-alpha.level()+1] = 0;
     297  delete [] var_names_ext;
     298  var_names_ext = newvarnames;
     299  ext_entry * newalgext = new ext_entry [-alpha.level()+1];
     300  for ( i = 0; i <= -alpha.level(); i++ )
     301    newalgext[i] = algextensions[i];
     302  delete [] algextensions;
     303  algextensions = newalgext;
    258304}
    259305
  • factory/variable.h

    r4e2cc1 r03f640  
    103103char getDefaultExtName();
    104104
     105void prune (Variable& alpha);
     106void prune1 (const Variable& alpha);
    105107int ExtensionLevel();
    106108
Note: See TracChangeset for help on using the changeset viewer.