Changeset 78abc7 in git for Singular/dyn_modules/gfanlib/tropicalStrategy.cc
- Timestamp:
- Aug 18, 2014, 4:35:01 PM (9 years ago)
- Branches:
- (u'spielwiese', '2fa36c576e6a4ddbb1093b43c7f8e9835e17e52a')
- Children:
- eacb78146504ca284c1888c739cb1aade67c8520
- Parents:
- 441944f17f356b9a04c768f8a43754bc29364747
- git-author:
- Yue Ren <ren@mathematik.uni-kl.de>2014-08-18 16:35:01+02:00
- git-committer:
- Yue Ren <ren@mathematik.uni-kl.de>2015-02-06 13:47:04+01:00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/dyn_modules/gfanlib/tropicalStrategy.cc
r441944 r78abc7 8 8 #include <kernel/ideals.h> 9 9 #include <kernel/GBEngine/stairc.h> 10 #include <Singular/ipshell.h> // for isPrime(int i) 10 11 11 12 /*** … … 56 57 startingIdeal(id_Copy(originalIdeal,originalRing)), 57 58 uniformizingParameter(NULL), 58 shortcutRing( rCopy(originalRing)),59 shortcutRing(NULL), 59 60 onlyLowerHalfSpace(false), 60 61 weightAdjustingAlgorithm1(nonvalued_adjustWeightForHomogeneity), … … 137 138 originalRing = rCopy(s); 138 139 139 /* replace Q with Z for the startingRing */ 140 startingRing = rCopy0(originalRing); 141 nKillChar(startingRing->cf); 142 startingRing->cf = nInitChar(n_Z,NULL); 143 rComplete(startingRing); 144 145 /* map p into the new coefficient domain */ 140 /* replace Q with Z for the startingRing 141 * and add an extra variable for tracking the uniformizing parameter */ 142 startingRing = constructStartingRing(originalRing); 143 144 /* map the uniformizing parameter into the new coefficient domain */ 146 145 nMapFunc nMap = n_SetMap(originalRing->cf,startingRing->cf); 147 146 uniformizingParameter = nMap(q,originalRing->cf,startingRing->cf); 148 147 149 /* map Jinto the new polynomial ring */148 /* map the input ideal into the new polynomial ring */ 150 149 int k = idSize(J); 151 startingIdeal = idInit(k); 150 startingIdeal = idInit(k+1); 151 poly g = p_One(startingRing); 152 p_SetCoeff(g,uniformizingParameter,startingRing); 153 pNext(g) = p_One(startingRing); 154 p_SetExp(pNext(g),1,1,startingRing); 155 p_SetCoeff(pNext(g),n_Init(-1,startingRing->cf),startingRing); 156 p_Setm(pNext(g),startingRing); 157 startingIdeal->m[0] = g; 158 int n = rVar(originalRing); 159 int* shiftByOne = (int*) omAlloc((n+1)*sizeof(int)); 160 for (int i=1; i<=n; i++) 161 shiftByOne[i]=i+1; 152 162 for (int i=0; i<k; i++) 153 startingIdeal->m[i] = p_PermPoly(J->m[i],NULL,originalRing,startingRing,nMap,NULL,0); 163 startingIdeal->m[i+1] = p_PermPoly(J->m[i],shiftByOne,originalRing,startingRing,nMap,NULL,0); 164 omFreeSize(shiftByOne,(n+1)*sizeof(int)); 165 166 /* construct the shorcut ring */ 167 shortcutRing = rCopy0(startingRing); 168 nKillChar(shortcutRing->cf); 169 shortcutRing->cf = nInitChar(n_Zp,(void*)(long)IsPrime(n_Int(uniformizingParameter,startingRing->cf))); 170 rComplete(shortcutRing); 154 171 155 172 /* compute the dimension of the ideal in the original ring */
Note: See TracChangeset
for help on using the changeset viewer.