Ignore:
Timestamp:
Aug 18, 2014, 4:35:01 PM (9 years ago)
Author:
Yue Ren <ren@…>
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
Message:
chg: status update 18.08.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/dyn_modules/gfanlib/tropicalStrategy.cc

    r441944 r78abc7  
    88#include <kernel/ideals.h>
    99#include <kernel/GBEngine/stairc.h>
     10#include <Singular/ipshell.h> // for isPrime(int i)
    1011
    1112/***
     
    5657  startingIdeal(id_Copy(originalIdeal,originalRing)),
    5758  uniformizingParameter(NULL),
    58   shortcutRing(rCopy(originalRing)),
     59  shortcutRing(NULL),
    5960  onlyLowerHalfSpace(false),
    6061  weightAdjustingAlgorithm1(nonvalued_adjustWeightForHomogeneity),
     
    137138  originalRing = rCopy(s);
    138139
    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 */
    146145  nMapFunc nMap = n_SetMap(originalRing->cf,startingRing->cf);
    147146  uniformizingParameter = nMap(q,originalRing->cf,startingRing->cf);
    148147
    149   /* map J into the new polynomial ring */
     148  /* map the input ideal into the new polynomial ring */
    150149  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;
    152162  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);
    154171
    155172  /* compute the dimension of the ideal in the original ring */
Note: See TracChangeset for help on using the changeset viewer.