Changeset 005d00a in git for kernel/gfan.cc
- Timestamp:
- Nov 16, 2009, 6:37:59 PM (14 years ago)
- Branches:
- (u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
- Children:
- 4fec744c03dbef2c7391aa71f10513ee2d3d96ab
- Parents:
- e7bc2f336cc15e7490e435edaaca6c95b8c97e58
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/gfan.cc
re7bc2f r005d00a 101 101 102 102 /** \brief Constructor for facets of codim >= 2 103 * Note that as of now the code of the constructors is only for facets and codim2-faces. One 104 * could easily change that by renaming numCodim2Facets to numCodimNminusOneFacets or similar 103 105 */ 104 106 facet::facet(int const &n) … … 756 758 // The inequalities are now stored in ddineq 757 759 // Next we check for superflous rows 758 time_t canonicalizeTic, canonicalizeTac;759 time(&canonicalizeTic);760 // time_t canonicalizeTic, canonicalizeTac; 761 // time(&canonicalizeTic); 760 762 // ddredrows = dd_RedundantRows(ddineq, &dderr); 761 763 // if (dderr!=dd_NoError) // did an error occur? … … 774 776 775 777 dd_MatrixCanonicalize(&ddineq, &ddlinset, &ddredrows, &ddnewpos, &dderr); 776 time(&canonicalizeTac);777 cout << "dd_MatrixCanonicalize time: " << difftime(canonicalizeTac,canonicalizeTic) << "sec" << endl;778 // time(&canonicalizeTac); 779 // cout << "dd_MatrixCanonicalize time: " << difftime(canonicalizeTac,canonicalizeTic) << "sec" << endl; 778 780 ddrows = ddineq->rowsize; //Size of the matrix with redundancies removed 779 781 ddcols = ddineq->colsize; … … 2036 2038 while(fAct!=NULL) 2037 2039 { //Since SLA should only contain flippables there should be no need to check for that 2038 time(&tic);2040 2039 2041 gcAct->flip(gcAct->gcBasis,fAct); 2040 time(&tac);2041 cout << "t_flip = " << difftime(tac,tic) << endl;2042 2043 2042 2044 ring rTmp=rCopy(fAct->flipRing); 2043 2045 rComplete(rTmp); … … 2054 2056 // idDelete((ideal *)&fAct->flipGB); 2055 2057 // rDelete(fAct->flipRing); 2056 time(&tic); 2057 gcTmp->getConeNormals(gcTmp->gcBasis, FALSE); 2058 time(&tac); 2059 cout << "t_getConeNormals = " << difftime(tac,tic) << endl; 2060 gcTmp->getCodim2Normals(*gcTmp); 2058 2059 gcTmp->getConeNormals(gcTmp->gcBasis, FALSE); 2060 gcTmp->getCodim2Normals(*gcTmp); 2061 2061 gcTmp->normalize(); 2062 2062 #ifdef gfan_DEBUG … … 2897 2897 // } 2898 2898 2899 void gcone::lprepareResult(lists l, gcone &gc) 2900 { 2901 gcone *gcAct; 2902 gcAct = &gc; 2903 matrix mFacetNormal=mpNew(counter,gc.numVars); 2904 2905 facet *fAct; 2906 fAct = gc.facetPtr; 2907 while( gcAct!=NULL ) 2908 { 2909 l->m[0].data=(int*)gc.getUCN(); 2910 l->m[1].data=(intvec*)(&gcAct->f2M(gcAct,gcAct->facetPtr)); 2911 gcAct = gcAct->next; 2912 } 2913 } 2914 /** \brief Write facets of a cone into a matrix 2915 * Takes a pointer to a facet as 2nd arg in order to determine whether 2916 * it operates in codim 1 or 2 2917 */ 2918 intvec gcone::f2M(gcone *gc, facet *f) 2919 { 2920 facet *fAct; 2921 int codim=1; 2922 if(f==gc->facetPtr) 2923 fAct = gc->facetPtr; 2924 else 2925 { 2926 fAct = gc->facetPtr->codim2Ptr; 2927 codim=2; 2928 } 2929 intvec mRes=new intvec(counter,gc->numVars,0);//nrows==counter, ncols==numVars 2930 intvec *fNormal = new intvec(this->numVars); 2931 for(int ii=0;ii<gc->numFacets*(this->numVars);ii++) 2932 { 2933 fNormal=fAct->getFacetNormal(); 2934 for(int jj=0;jj<this->numVars ;jj++ ) 2935 { 2936 mRes[ii]=(*fNormal)[jj]; 2937 ii++; 2938 } 2939 fAct = fAct->next; 2940 } 2941 return mRes; 2942 } 2899 2943 2900 2944 int gcone::counter=0; 2901 2945 int gfanHeuristic; 2902 ideal gfan(ideal inputIdeal, int h) 2946 // ideal gfan(ideal inputIdeal, int h) 2947 lists gfan(ideal inputIdeal, int h) 2903 2948 { 2904 2949 lists lResList=(lists)omAllocBin(slists_bin); … … 2906 2951 lResList->m[0].rtyp=INT_CMD; 2907 2952 lResList->m[0].data=(int*)255; 2908 lResList->m[1].rtyp= MATRIX_CMD;2909 lResList->m[1].data=( void*)NULL;2953 lResList->m[1].rtyp=INTVEC_CMD; 2954 lResList->m[1].data=(intvec*)NULL; 2910 2955 lResList->m[2].rtyp=IDEAL_CMD; 2911 2956 lResList->m[2].data=(ideal*)NULL; … … 3002 3047 //Below is a workaround, since gcAct->gcBasis gets deleted in noRevS 3003 3048 res = inputIdeal; 3049 // intvec mRes=gcRoot->f2M(gcRoot,gcRoot->facetPtr); 3050 gcRoot->lprepareResult(lResList,*gcRoot); 3004 3051 } 3005 3052 dd_free_global_constants(); 3053 3006 3054 /*As of now extra.cc expects gfan to return type ideal. Probably this will change in near future. 3007 3055 The return type will then be of type LIST_CMD … … 3014 3062 //res=gcAct->gcBasis; 3015 3063 //res=gcRoot->gcBasis; 3016 return res; 3064 // return res; 3065 return lResList; 3017 3066 //return GBlist; 3018 3067 }
Note: See TracChangeset
for help on using the changeset viewer.