Changeset d2cd515 in git


Ignore:
Timestamp:
Oct 20, 2009, 12:39:18 PM (14 years ago)
Author:
Martin Monerjan
Branches:
(u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
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
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • Singular/extra.cc

    re98068 rd2cd515  
    22*  Computer Algebra System SINGULAR      *
    33*****************************************/
    4 /* $Id: extra.cc,v 1.325 2009-10-09 13:46:30 seelisch Exp $ */
     4/* $Id: extra.cc,v 1.326 2009-10-20 10:39:17 monerjan Exp $ */
    55/*
    66* ABSTRACT: general interface to internals of Singular ("system" command)
     
    34673467if (strcmp(sys_cmd,"gfan")==0)
    34683468{
    3469         if ((h==NULL) || (h!=NULL && h->Typ()!=IDEAL_CMD))
    3470         {
    3471                 Werror("system(\"gfan\"...) Ideal expected");
    3472                 return TRUE; //Ooooops
    3473         }
    3474 ideal I=((ideal)h->Data());
    3475 res->rtyp=IDEAL_CMD;
    3476 res->data=(ideal) gfan(I);
     3469//         if ((h==NULL) || (h!=NULL && h->Typ()!=IDEAL_CMD))
     3470//         {
     3471//                 Werror("system(\"gfan\"...) Ideal expected");
     3472//                 return TRUE; //Ooooops
     3473//         }
     3474//      else if(h->next==NULL)
     3475//      {
     3476//              Werror("gfan expects an integer parameter");
     3477//              return TRUE;
     3478//      }
     3479//      else if(h->next!=NULL && h->next->Typ()!=INT_CMD)
     3480//      {
     3481//              Werror("1st parameter ist no integer");
     3482//              return TRUE;
     3483//      }
     3484        /*
     3485        heuristic:
     3486        0 = keep all Gröbner bases in memory
     3487        1 = write all Gröbner bases to disk and read whenever necessary
     3488        2 = use a mixed heuristic, based on length of Gröbner bases
     3489        */
     3490        if( h!=NULL && h->Typ()==IDEAL_CMD && h->next!=NULL && h->next->Typ()==INT_CMD)
     3491        {
     3492                int heuristic;
     3493                heuristic=(int)(long)h->next->Data();
     3494                ideal I=((ideal)h->Data());
     3495                res->rtyp=IDEAL_CMD;
     3496                res->data=(ideal) gfan(I,heuristic);
     3497                return FALSE;
     3498        }
     3499        else
     3500        {
     3501                WerrorS("Usage: system(\"gfan\",I,int)");
     3502                return TRUE;
     3503        }
    34773504//res->rtyp=LIST_CMD;
    34783505//res->data= ???
    34793506
    3480 return FALSE; //Everything went fine
     3507// return FALSE; //Everything went fine
    34813508}
    34823509else
  • 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 {
  • kernel/gfan.h

    re98068 rd2cd515  
    33
    44$Author: monerjan $
    5 $Date: 2009-10-13 14:35:18 $
    6 $Header: /exports/cvsroot-2/cvsroot/kernel/gfan.h,v 1.10 2009-10-13 14:35:18 monerjan Exp $
    7 $Id: gfan.h,v 1.10 2009-10-13 14:35:18 monerjan Exp $
     5$Date: 2009-10-20 10:39:18 $
     6$Header: /exports/cvsroot-2/cvsroot/kernel/gfan.h,v 1.11 2009-10-20 10:39:18 monerjan Exp $
     7$Id: gfan.h,v 1.11 2009-10-20 10:39:18 monerjan Exp $
    88*/
    99#ifdef HAVE_GFAN
     
    1616#include "../../cddlib/include/cddmp.h"
    1717#endif
     18extern int gfanHeuristic;
    1819//ideal getGB(ideal inputIdeal);
    19 ideal gfan(ideal inputIdeal);
     20ideal gfan(ideal inputIdeal, int heuristic);
    2021//int dotProduct(intvec a, intvec b);
    2122//bool isParallel(intvec a, intvec b);
Note: See TracChangeset for help on using the changeset viewer.