Changeset d2cd515 in git for kernel/gfan.cc


Ignore:
Timestamp:
Oct 20, 2009, 12:39:18 PM (14 years ago)
Author:
Martin Monerjan
Branches:
(u'spielwiese', '4a9821a93ffdc22a6696668bd4f6b8c9de3e6c5f')
Children:
bb503c7363e3c90a3b0c5ae93374d5b7b20cc34a
Parents:
e9806890fa4b234b8c11d976584cab53f617eb21
Message:
extra.cc: gfan now takes a second parameter for storage heuristic of GBs
gfan.cc: reconstruction of polys from file


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

Legend:

Unmodified
Added
Removed
  • kernel/gfan.cc

    re98068 rd2cd515  
    22Compute the Groebner fan of an ideal
    33$Author: monerjan $
    4 $Date: 2009-10-19 15:40:39 $
    5 $Header: /exports/cvsroot-2/cvsroot/kernel/gfan.cc,v 1.97 2009-10-19 15:40:39 monerjan Exp $
    6 $Id: gfan.cc,v 1.97 2009-10-19 15:40:39 monerjan Exp $
     4$Date: 2009-10-20 10:39:18 $
     5$Header: /exports/cvsroot-2/cvsroot/kernel/gfan.cc,v 1.98 2009-10-20 10:39:18 monerjan Exp $
     6$Id: gfan.cc,v 1.98 2009-10-20 10:39:18 monerjan Exp $
    77*/
    88
     
    17051705       
    17061706        /* Use pure SLA or writeCone2File */
    1707         enum heuristic {
    1708                 ram,
    1709                 hdd
    1710         };
    1711         heuristic h;
    1712         h=hdd;
     1707//      enum heuristic {
     1708//              ram,
     1709//              hdd
     1710//      };
     1711//      heuristic h;
     1712//      h=hdd;
    17131713       
    17141714#ifdef gfan_DEBUG
     
    18301830                        gcTmp->showFacets(1);
    18311831#endif
    1832                         if(h==hdd)
     1832                        if(gfanHeuristic==1)
    18331833                        {
    18341834                                gcTmp->writeConeToFile(*gcTmp);
     
    18861886                        else if( gcNext->getUCN() == SearchListRoot->getUCN() )
    18871887                        {//NOTE: Implement heuristic to be used!
    1888                                 if(h==ram)
     1888                                if(gfanHeuristic==0)
    18891889                                {
    18901890                                        gcAct = gcNext;
     
    18941894                                        break;
    18951895                                }
    1896                                 else if(h==hdd)
     1896                                else if(gfanHeuristic==1)
    18971897                                {
    18981898                                        //Read st00f from file
     
    25612561                                while(!line.empty())
    25622562                                {
     2563                                        hasNegCoeff = FALSE;
    25632564                                        found = line.find_first_of("+-");       //get the first monomial
    25642565                                        string tmp;
     
    25792580                                        {
    25802581                                                hasCoeffInQ = TRUE;
    2581                                                 strCoeffNom=strMonom.substr(0,found);
    2582                                                 strCoeffDenom=strMonom.substr(found+1,strMonom.find_first_not_of("1234567890"));//string::npos);
    2583                                                 ss << strCoeffNom;
    2584                                                 ss >> intCoeffNom;
    2585                                                 nCoeffNom=nInit(intCoeffNom);
    2586                                                 ss << strCoeffDenom;
    2587                                                 ss >> intCoeffDenom;
    2588                                                 nCoeffDenom=nInit(intCoeffDenom);
     2582                                                strCoeffNom=strMonom.substr(0,found);                                           
     2583                                                strCoeffDenom=strMonom.substr(found+1,strMonom.find_first_not_of("1234567890"));
     2584                                                strMonom.erase(0,found);
     2585                                                strMonom.erase(0,strMonom.find_first_not_of("1234567890/"));                   
     2586//                                              ss << strCoeffNom;
     2587//                                              ss >> intCoeffNom;
     2588//                                              nCoeffNom=(snumber*)strCoeffNom.c_str();
     2589                                                nRead(strCoeffNom.c_str(), &nCoeffNom);
     2590                                                nRead(strCoeffDenom.c_str(), &nCoeffDenom);
     2591//                                              nCoeffNom=nInit(intCoeffNom);
     2592//                                              ss << strCoeffDenom;
     2593//                                              ss >> intCoeffDenom;
     2594//                                              nCoeffDenom=nInit(intCoeffDenom);
     2595//                                              nCoeffDenom=(snumber*)strCoeffNom.c_str();
    25892596                                                //NOTE NOT SURE WHETHER THIS WILL WORK!
    25902597                                                //nCoeffNom=nInit(intCoeffNom);
     
    25982605                                                if(!strCoeff.empty())
    25992606                                                {
    2600 //                                                      ss << strCoeff;
    2601 //                                                      ss >> intCoeff;
    2602                                                         nCoeff=(snumber*)strCoeff.c_str();
     2607                                                        nRead(strCoeff.c_str(),&nCoeff);
    26032608                                                }
    26042609                                                else
     
    26162621                                                case TRUE:
    26172622                                                        if(hasNegCoeff)
    2618                                                                 nCoeff=nNeg(nCoeffNom);
     2623                                                                nCoeffNom=nNeg(nCoeffNom);
    26192624//                                                              intCoeffNom *= -1;
    26202625//                                                      pSetCoeff(strPoly, nDiv((number)intCoeffNom, (number)intCoeffDenom));
    26212626                                                        pSetCoeff(strPoly, nDiv(nCoeffNom, nCoeffDenom));
     2627                                                        break;
    26222628                                                case FALSE:
    26232629                                                        if(hasNegCoeff)
     
    26312637                                                                pSetCoeff(strPoly, nCoeff );
    26322638                                                        }
     2639                                                        break;
    26332640                                                                                                       
    26342641                                        }
     
    26552662
    26562663int gcone::counter=0;
    2657 
    2658 ideal gfan(ideal inputIdeal)
     2664int gfanHeuristic;
     2665ideal gfan(ideal inputIdeal, int h)
    26592666{
    26602667        int numvar = pVariables;
     2668        gfanHeuristic = h;
    26612669       
    26622670        enum searchMethod {
Note: See TracChangeset for help on using the changeset viewer.