Changeset e744d9 in git
- Timestamp:
- Jul 17, 2014, 12:28:18 PM (9 years ago)
- Branches:
- (u'spielwiese', 'a7324b6e0b44a1a8ed3fa4d9ca3e2ff210ddd52c')
- Children:
- eb836ceccfffe01622457439ed104bca800bc101
- Parents:
- 3c0aa5079c417e92fdfaa03c1d87d73f5b365291
- git-author:
- Yue Ren <ren@mathematik.uni-kl.de>2014-07-17 12:28:18+02:00
- git-committer:
- Yue Ren <ren@mathematik.uni-kl.de>2015-02-06 13:47:03+01:00
- Files:
-
- 2 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/dyn_modules/gfanlib/Makefile.am
r3c0aa5 re744d9 1 1 ACLOCAL_AMFLAGS = -I ../../m4 2 2 3 SOURCES = gfanlib_exceptions.h callgfanlib_conversion.cc callgfanlib_conversion.h bbcone.cc bbcone.h bbfan.cc bbfan.h bbpolytope.cc bbpolytope.h gfan.h gitfan.cc gitfan.h tropicalVarietyOfPolynomials.h tropicalVarietyOfPolynomials.cc ppinitialReduction.cc ppinitialReduction.h ttinitialReduction.cc ttinitialReduction.h containsMonomial.cc containsMonomial.h adjustWeights.cc adjustWeights.h tropicalStrategy.cc tropicalStrategy.h initial.cc initial.h witness.cc witness.h lift.cc lift.h flip.cc flip.h tropicalCurves.cc tropicalCurves.h groebnerCone.cc groebnerCone.h startingCone.cc startingCone.h tropicalTraversal.cc tropicalTraversal.h tropicalVarietyOfIdeals.cc tropicalVarietyOfIdeals.h tropicalVariety.cc tropicalVariety.h tropical.cc tropical.h gfanlib.cc3 SOURCES = gfanlib_exceptions.h callgfanlib_conversion.cc callgfanlib_conversion.h bbcone.cc bbcone.h bbfan.cc bbfan.h bbpolytope.cc bbpolytope.h gfan.h gitfan.cc gitfan.h std_wrapper.cc std_wrapper.h tropicalVarietyOfPolynomials.h tropicalVarietyOfPolynomials.cc ppinitialReduction.cc ppinitialReduction.h ttinitialReduction.cc ttinitialReduction.h containsMonomial.cc containsMonomial.h adjustWeights.cc adjustWeights.h tropicalStrategy.cc tropicalStrategy.h initial.cc initial.h witness.cc witness.h lift.cc lift.h flip.cc flip.h tropicalCurves.cc tropicalCurves.h groebnerCone.cc groebnerCone.h startingCone.cc startingCone.h tropicalTraversal.cc tropicalTraversal.h tropicalVarietyOfIdeals.cc tropicalVarietyOfIdeals.h tropicalVariety.cc tropicalVariety.h tropical.cc tropical.h gfanlib.cc 4 4 5 5 MY_CPPFLAGS = -I${top_srcdir} -I${top_builddir} \ -
Singular/dyn_modules/gfanlib/containsMonomial.cc
r3c0aa5 re744d9 148 148 } 149 149 150 151 150 J = kStd(J,NULL,isHomog,NULL); 152 151 … … 166 165 poly checkForMonomialViaSuddenSaturation(const ideal I, const ring r) 167 166 { 168 // assume(rField_is_Ring_Z(currRing));169 170 // ring s = rCopy0(r);171 // nKillChar(s->cf);172 // s->cf = nInitChar(n_Zp,(void*)(long)n_Int(p_GetCoeff(I->m[0],currRing),currRing->cf));173 // rComplete(s); rChangeCurrRing(s);174 // int k = idSize(I);175 // ideal J = idInit(k-1);176 // nMapFunc nMap = n_SetMap(r->cf,r->cf);177 // for (int i=1; i<k; i++)178 // {179 // J->m[i-1] = p_PermPoly(I->m[i],NULL,r,r,nMap,NULL,0);180 // p_Test(J->m[i-1],currRing);181 // }182 167 ring origin = currRing; 183 168 ideal M = idInit(1); -
Singular/dyn_modules/gfanlib/groebnerCone.cc
r3c0aa5 re744d9 121 121 { 122 122 poly g = polynomialIdeal->m[i]; 123 p GetExpV(g,expv);123 p_GetExpV(g,expv,polynomialRing); 124 124 gfan::ZVector leadexpv = intStar2ZVector(n,expv); 125 125 long d = wDeg(g,polynomialRing,w); 126 126 for (pIter(g); g; pIter(g)) 127 127 { 128 pGetExpV(g,expv); gfan::ZVector tailexpv = intStar2ZVector(n,expv); 128 p_GetExpV(g,expv,polynomialRing); 129 gfan::ZVector tailexpv = intStar2ZVector(n,expv); 129 130 if (wDeg(g,polynomialRing,w)==d) 130 131 equations.appendRow(leadexpv-tailexpv); … … 134 135 inequalities.appendRow(leadexpv-tailexpv); 135 136 } 137 } 138 } 139 omFreeSize(expv,(n+1)*sizeof(int)); 140 141 polyhedralCone = gfan::ZCone(inequalities,equations); 142 interiorPoint = polyhedralCone.getRelativeInteriorPoint(); 143 assume(checkOrderingAndCone(polynomialRing,polyhedralCone)); 144 } 145 146 groebnerCone::groebnerCone(const ideal I, const ideal inI, const ring r, const tropicalStrategy& currentCase): 147 polynomialIdeal(id_Copy(I,r)), 148 polynomialRing(rCopy(r)), 149 currentStrategy(¤tCase) 150 { 151 assume(checkPolynomialInput(I,r)); 152 assume(checkPolynomialInput(inI,r)); 153 int n = rVar(r); 154 gfan::ZMatrix equations = gfan::ZMatrix(0,n); 155 int* expv = (int*) omAlloc((n+1)*sizeof(int)); 156 for (int i=0; i<idSize(inI); i++) 157 { 158 poly g = inI->m[i]; 159 p_GetExpV(g,expv,r); 160 gfan::ZVector leadexpv = intStar2ZVector(n,expv); 161 for (pIter(g); g; pIter(g)) 162 { 163 p_GetExpV(g,expv,r); 164 gfan::ZVector tailexpv = intStar2ZVector(n,expv); 165 equations.appendRow(leadexpv-tailexpv); 166 } 167 } 168 gfan::ZMatrix inequalities = gfan::ZMatrix(0,n); 169 for (int i=0; i<idSize(I); i++) 170 { 171 poly g = I->m[i]; 172 p_GetExpV(g,expv,r); 173 gfan::ZVector leadexpv = intStar2ZVector(n,expv); 174 for (pIter(g); g; pIter(g)) 175 { 176 p_GetExpV(g,expv,r); 177 gfan::ZVector tailexpv = intStar2ZVector(n,expv); 178 inequalities.appendRow(leadexpv-tailexpv); 136 179 } 137 180 } -
Singular/dyn_modules/gfanlib/groebnerCone.h
r3c0aa5 re744d9 32 32 groebnerCone(const ideal I, const ring r, const tropicalStrategy& currentCase); 33 33 groebnerCone(const ideal I, const ring r, const gfan::ZVector& w, const tropicalStrategy& currentCase); 34 groebnerCone(const ideal I, const ideal inI, const ring r, const tropicalStrategy& currentCase); 34 35 groebnerCone(const groebnerCone& sigma); 35 36 ~groebnerCone(); -
Singular/dyn_modules/gfanlib/initial.cc
r3c0aa5 re744d9 23 23 d += p_GetExp(p,i+1,r)*w[i].toInt(); 24 24 } 25 return d; 26 } 27 28 /*** 29 * Computes the weighted multidegree of the leading term of p with respect to W. 30 * The weighted multidegree is a vector whose i-th entry is the weighted degree 31 * with respect to the i-th row vector of W. 32 **/ 33 gfan::ZVector WDeg(const poly p, const ring r, const gfan::ZMatrix W) 34 { 35 gfan::ZVector d = gfan::ZVector(W.getHeight()); 36 for (int i=0; i<W.getHeight(); i++) 37 d[i] = wDeg(p,r,W[i]); 25 38 return d; 26 39 } … … 81 94 82 95 /*** 83 * Returns the first terms of p of same weighted degree under w, 84 * this is not necessarily the initial form of p with respect to w! 96 * Returns the initial form of p with respect to w 85 97 **/ 86 98 poly initial(const poly p, const ring r, const gfan::ZVector w) 87 99 { 88 int n = r->N;89 int* expv = (int*) omAlloc(n*sizeof(int));90 100 poly q0 = p_Head(p,r); 91 101 poly q1 = q0; … … 93 103 for (poly currentTerm = p->next; currentTerm; pIter(currentTerm)) 94 104 { 95 if (wDeg(currentTerm,r,w)==d) 105 long e = wDeg(currentTerm,r,w); 106 if (e>d) 96 107 { 97 pNext(q1) = p_Head(currentTerm,r); 98 pIter(q1); 108 p_Delete(&q0,r); 109 q0 = p_Head(p,r); 110 q1 = q0; 111 d = e; 99 112 } 100 } 101 omFreeSize(expv,n*sizeof(int)); 113 else 114 if (e==d) 115 { 116 pNext(q1) = p_Head(currentTerm,r); 117 pIter(q1); 118 } 119 } 102 120 return q0; 103 121 } … … 105 123 /*** 106 124 * Runs the above procedure over all generators of an ideal. 125 * Returns the initial ideal if and only if the weight is in the maximal Groebner cone 126 * of the current ordering. 107 127 **/ 108 128 ideal initial(const ideal I, const ring r, const gfan::ZVector w) … … 113 133 return inI; 114 134 } 135 136 137 /*** 138 * Returns the initial form of p with respect to W, 139 * i.e. the sum over all terms of p with highest multidegree with respect to W. 140 **/ 141 poly initial(const poly p, const ring r, const gfan::ZMatrix W) 142 { 143 int n = rVar(r); 144 poly q0 = p_Head(p,r); 145 poly q1 = q0; 146 gfan::ZVector d = WDeg(p,r,W); 147 for (poly currentTerm = p->next; currentTerm; pIter(currentTerm)) 148 { 149 gfan::ZVector e = WDeg(currentTerm,r,W); 150 if (d<e) 151 { 152 p_Delete(&q0,r); 153 q0 = p_Head(p,r); 154 q1 = q0; 155 d = e; 156 } 157 else 158 if (d==e) 159 { 160 pNext(q1) = p_Head(currentTerm,r); 161 pIter(q1); 162 } 163 } 164 return q0; 165 } 166 167 /*** 168 * Runs the above procedure over all generators of an ideal. 169 * Returns the initial ideal if and only if the weight is in the maximal Groebner cone 170 * of the current ordering. 171 **/ 172 ideal initial(const ideal I, const ring r, const gfan::ZMatrix W) 173 { 174 int k = idSize(I); ideal inI = idInit(k); 175 for (int i=0; i<k; i++) 176 inI->m[i] = initial(I->m[i],r,W); 177 return inI; 178 } 179 115 180 116 181 #ifndef NDEBUG -
Singular/dyn_modules/gfanlib/initial.h
r3c0aa5 re744d9 14 14 **/ 15 15 long wDeg(const poly p, const ring r, const gfan::ZVector w); 16 17 /*** 18 * Computes the weighted multidegree of the leading term of p with respect to W. 19 * The weighted multidegree is a vector whose i-th entry is the weighted degree 20 * with respect to the i-th row vector of W. 21 **/ 22 gfan::ZVector WDeg(const poly p, const ring r, const gfan::ZMatrix W); 16 23 17 24 /*** … … 32 39 poly initial(const poly p, const ring r, const gfan::ZVector w); 33 40 ideal initial(const ideal I, const ring r, const gfan::ZVector w); 34 41 poly initial(const poly p, const ring r, const gfan::ZMatrix W); 42 poly initial(const ideal I, const ring r, const gfan::ZMatrix W); 35 43 36 44 -
Singular/dyn_modules/gfanlib/startingCone.cc
r3c0aa5 re744d9 40 40 * containing the point. 41 41 **/ 42 std::pair<gfan::ZVector,groebnerCone> tropicalStarting PointViaGroebnerFan(const ideal I, const ring r, const tropicalStrategy& currentStrategy)42 std::pair<gfan::ZVector,groebnerCone> tropicalStartingDataViaGroebnerFan(const ideal I, const ring r, const tropicalStrategy& currentStrategy) 43 43 { 44 44 currentStrategy.reduce(I,r); … … 84 84 ideal I = (ideal) u->Data(); 85 85 tropicalStrategy currentStrategy(I,currRing); 86 std::pair<gfan::ZVector,groebnerCone> startingData = tropicalStarting PointViaGroebnerFan(I,currRing,currentStrategy);86 std::pair<gfan::ZVector,groebnerCone> startingData = tropicalStartingDataViaGroebnerFan(I,currRing,currentStrategy); 87 87 gfan::ZVector startingPoint = startingData.first; 88 88 res->rtyp = BIGINTMAT_CMD; … … 131 131 132 132 gfan::ZCone zc = linealitySpaceOfGroebnerFan(inI,s); 133 gfan::ZVector potentialStartingPoint; groebnerCone ambientMaximalCone;133 gfan::ZVector startingPoint; groebnerCone ambientMaximalCone; 134 134 while (zc.dimension()<currentStrategy.getDimensionOfIdeal()) 135 135 { 136 std::pair<gfan::ZVector,groebnerCone> startingData = tropicalStarting PointViaGroebnerFan(inI,s,currentStrategy);137 potentialStartingPoint = startingData.first;136 std::pair<gfan::ZVector,groebnerCone> startingData = tropicalStartingDataViaGroebnerFan(inI,s,currentStrategy); 137 startingPoint = startingData.first; 138 138 ambientMaximalCone = groebnerCone(startingData.second); 139 139 … … 142 142 s = ambientMaximalCone.getPolynomialRing(); 143 143 144 inI = sloppyInitial(inI,s, potentialStartingPoint);144 inI = sloppyInitial(inI,s,startingPoint); 145 145 zc = linealitySpaceOfGroebnerFan(inI,s); 146 146 } 147 147 148 148 ideal J = lift(I,r,inI,s); 149 groebnerCone tropicalStartingCone(J,inI,s,currentStrategy); 149 150 id_Delete(&inI,s); 150 groebnerCone tropicalStartingCone(J,s,potentialStartingPoint,currentStrategy);151 151 id_Delete(&J,s); 152 152 -
Singular/dyn_modules/gfanlib/tropicalCurves.cc
r3c0aa5 re744d9 44 44 45 45 /*** 46 * Given a weight w and k more weights E[1], ..., E[h] stored as row vectors of a matrix E,47 + returns a ring whose ordering is weighted with respect to any48 * w +\varepsilon_1*E[1]+...+\varepsilon_k*E[h] for \varepsilon_i sufficiently small.49 * In particular, if E[1], ..., E[h] generate a vector space of dimension d,50 * this ordering can be used to compute a Groebner cone of dimension d containing w.51 **/ 52 static ring genericlyWeightedOrdering(const ring r, const gfan::ZVector w, const gfan::ZMatrix E,53 const tropicalStrategy& currentStrategy)54 { 55 int n = r ->N;46 * Given a ring r, weights u, w, and a matrix E, returns a copy of r whose ordering is, 47 * for any ideal homogeneous with respect to u, weighted with respect to u and 48 * whose tiebreaker is genericly weighted with respect to v and E in the following sense: 49 * the ordering "lies" on the affine space A running through v and spanned by the row vectors of E, 50 * and it lies in a Groebner cone of dimension at least rank(E)=dim(A). 51 **/ 52 static ring genericlyWeightedOrdering(const ring r, const gfan::ZVector u, const gfan::ZVector w, 53 const gfan::ZMatrix W, const tropicalStrategy& currentStrategy) 54 { 55 int n = rVar(r); 56 56 int h = E.getHeight(); 57 57 … … 59 59 ring s = rCopy0(r); 60 60 omFree(s->order); 61 s->order = (int*) omAlloc0((h+ 3)*sizeof(int));61 s->order = (int*) omAlloc0((h+4)*sizeof(int)); 62 62 omFree(s->block0); 63 s->block0 = (int*) omAlloc0((h+ 3)*sizeof(int));63 s->block0 = (int*) omAlloc0((h+4)*sizeof(int)); 64 64 omFree(s->block1); 65 s->block1 = (int*) omAlloc0((h+ 3)*sizeof(int));65 s->block1 = (int*) omAlloc0((h+4)*sizeof(int)); 66 66 for (int j=0; s->wvhdl[j]; j++) omFree(s->wvhdl[j]); 67 67 omFree(s->wvhdl); 68 s->wvhdl = (int**) omAlloc0((h+ 3)*sizeof(int*));69 70 /* construct a new ordering a nd keep an eye out for weight overflows*/68 s->wvhdl = (int**) omAlloc0((h+4)*sizeof(int*)); 69 70 /* construct a new ordering as describe above */ 71 71 bool overflow; 72 72 s->order[0] = ringorder_a; 73 73 s->block0[0] = 1; 74 74 s->block1[0] = n; 75 s->wvhdl[0] = ZVectorToIntStar(w,overflow); 76 for (int j=1; j<h; j++) 77 { 78 s->order[j] = ringorder_a; 79 s->block0[j] = 1; 80 s->block1[j] = n; 81 s->wvhdl[j] = ZVectorToIntStar(currentStrategy.adjustWeightUnderHomogeneity(E[j-1],w),overflow); 82 } 83 s->order[h] = ringorder_wp; 84 s->block0[h] = 1; 85 s->block1[h] = n; 86 s->wvhdl[h] = ZVectorToIntStar(currentStrategy.adjustWeightUnderHomogeneity(E[h-1],w),overflow); 87 s->order[h+1] = ringorder_C; 75 gfan::ZVector uAdjusted = currentStrategy.adjustWeightForHomogeneity(u); 76 s->wvhdl[0] = ZVectorToIntStar(uAdjusted,overflow); 77 s->order[1] = ringorder_a; 78 s->block0[1] = 1; 79 s->block1[1] = n; 80 gfan::ZVector wAdjusted = currentStrategy.adjustWeightUnterHomogeneity(w,uAdjusted); 81 s->wvhdl[1] = ZVectorToIntStar(wAdjusted,overflow); 82 for (int j=0; j<h; j++) 83 { 84 s->order[j+2] = ringorder_a; 85 s->block0[j+2] = 1; 86 s->block1[j+2] = n; 87 wAdjusted = currentStrategy.adjustWeightUnderHomogeneity(W[j],uAdjusted); 88 s->wvhdl[j+2] = ZVectorToIntStar(wAdjusted,overflow); 89 } 90 s->order[h+2] = ringorder_wp; 91 s->block0[h+2] = 1; 92 s->block1[h+2] = n; 93 wAdjusted = currentStrategy.adjustWeightUnderHomogeneity(W[j],uAdjusted); 94 s->wvhdl[h+2] = ZVectorToIntStar(wAdjusted,overflow); 95 s->order[h+3] = ringorder_C; 88 96 89 97 if (overflow) … … 97 105 98 106 /*** 99 * Given an ideal I which is homogeneous in the later variables of r, 100 * whose tropicalization is, modulo its lineality space, a tropical Curve, 101 * computes the said tropicalization. 102 * At the end of the computation, I will contain a tropical basis. 103 * If the dimension of the tropical variety is known beforehand, 104 * it can be provided in order to speed up the computation. 105 **/ 106 std::set<gfan::ZCone> tropicalCurve(ideal I, const ring r, const tropicalStrategy currentStrategy) 107 { 108 int k = idSize(I); 107 * Let I be an ideal. Given a weight vector u in the relative interior 108 * of a one-codimensional cone of the tropical variety of I and 109 * the initial ideal inI with respect to it, computes the star of the tropical variety in u. 110 **/ 111 std::set<gfan::ZCone> tropicalStar(ideal inI, const ring r, const gfan::ZVector u, 112 const tropicalStrategy currentStrategy) 113 { 114 int k = idSize(inI); 115 int d = currentStrategy.getDimensionOfIdeal(); 109 116 110 117 /* Compute the common refinement over all tropical varieties 111 118 * of the polynomials in the generating set */ 112 std::set<gfan::ZCone> C = tropicalVariety( I->m[0],r,currentStrategy);119 std::set<gfan::ZCone> C = tropicalVariety(inI->m[0],r,currentStrategy); 113 120 for (int i=1; i<k; i++) 114 C = intersect(C,tropicalVariety( I->m[i],r,currentStrategy),currentStrategy.getDimensionOfIdeal());121 C = intersect(C,tropicalVariety(inI->m[i],r,currentStrategy),d); 115 122 116 123 /* Cycle through all maximal cones of the refinement. … … 124 131 { 125 132 gfan::ZVector v = zc->getRelativeInteriorPoint(); 126 gfan::ZMatrix E= zc->generatorsOfSpan();127 128 ring s = genericlyWeightedOrdering(r,v, E,currentStrategy);129 nMapFunc nMap= n_SetMap(r->cf,s->cf);130 ideal Is = idInit(k);133 gfan::ZMatrix W = zc->generatorsOfSpan(); 134 135 ring s = genericlyWeightedOrdering(r,v,W,currentStrategy); 136 nMapFunc identity = n_SetMap(r->cf,s->cf); 137 ideal inIs = idInit(k); 131 138 for (int j=0; j<k; j++) 132 Is->m[j] = p_PermPoly(I->m[j],NULL,r,s,nMap,NULL,0); 133 ideal inIs = initial(Is,s,E[E.getHeight()-1]); 139 inIs->m[j] = p_PermPoly(inI->m[j],NULL,r,s,identity,NULL,0); 140 141 inIs = gfanlib_kStd_wrapper(inIs,s,isHomog); 142 ideal ininIs = initial(inIs,s,E[E.getHeight()-1]); 134 143 135 144 poly mons = checkForMonomialViaSuddenSaturation(inIs,s); 136 145 if (mons) 137 146 { 138 poly gs = witness(mons, Is,inIs,s);139 C = intersect(C,tropicalVariety(gs,s,currentStrategy), currentStrategy.getDimensionOfIdeal());147 poly gs = witness(mons,inIs,ininIs,s); 148 C = intersect(C,tropicalVariety(gs,s,currentStrategy),d); 140 149 nMapFunc mMap = n_SetMap(s->cf,r->cf); 141 150 poly gr = p_PermPoly(gs,NULL,s,r,mMap,NULL,0); -
dyn_modules/callgfanlib/tropicalVariety.cc
r3c0aa5 re744d9 4 4 #include <tropicalVarietyOfIdeals.h> 5 5 #include <libpolys/coeffs/numbers.h> 6 #include <libpolys/misc/options.h> 6 7 #include <kernel/structs.h> 8 9 10 BITSET bitsetSave1, bitsetSave2; 11 12 /*** 13 * sets option(redSB) 14 **/ 15 static void setOptionRedSB() 16 { 17 SI_SAVE_OPT(bitsetSave1,bitsetSave2); 18 si_opt_1|=Sy_bit(OPT_REDSB); 19 } 20 21 /*** 22 * sets option(noredSB); 23 **/ 24 static void undoSetOptionRedSB() 25 { 26 SI_RESTORE_OPT(bitsetSave1,bitsetSave2); 27 } 7 28 8 29 BOOLEAN tropicalVariety(leftv res, leftv args) … … 25 46 number p = (number) v->CopyD(); 26 47 tropicalStrategy currentStrategy(I,p,currRing); 48 setOptionRedSB(); 27 49 gfan::ZFan* tropI = tropicalVariety(I,currRing,currentStrategy); 50 undoSetOptionRedSB(); 28 51 res->rtyp = fanID; 29 52 res->data = (char*) tropI; -
gfanlib/gfanlib_zcone.cpp
r3c0aa5 re744d9 742 742 f<<*this; 743 743 return f.str(); 744 // ======= 745 // std::stringstream s; 746 // s<<"AMBIENT_DIM"<<std::endl; 747 // s<<this->ambientDimension()<<std::endl; 748 749 // gfan::ZMatrix i=this->getInequalities(); 750 // if (this->areFacetsKnown()) 751 // s<<"FACETS"<<std::endl; 752 // else 753 // s<<"INEQUALITIES"<<std::endl; 754 // s<<i<<std::endl; 755 756 // gfan::ZMatrix e=this->getEquations(); 757 // if (this->areImpliedEquationsKnown()) 758 // s<<"LINEAR_SPAN"<<std::endl; 759 // else 760 // s<<"EQUATIONS"<<std::endl; 761 // s<<e<<std::endl; 762 763 // gfan::ZMatrix r=this->extremeRays(); 764 // s<<"RAYS"<<std::endl; 765 // s<<r<<std::endl; 766 767 // gfan::ZMatrix l=this->generatorsOfLinealitySpace(); 768 // s<<"LINEALITY_SPACE"<<std::endl; 769 // s<<l<<std::endl; 770 771 // std::cout << s.str(); 772 // return; 773 // >>>>>>> chg: status update 17.07. 744 774 } 745 775
Note: See TracChangeset
for help on using the changeset viewer.