Changeset 04deab in git


Ignore:
Timestamp:
Dec 8, 2009, 4:26:03 PM (14 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', '4a9821a93ffdc22a6696668bd4f6b8c9de3e6c5f')
Children:
208e0c58de5059b78464045b5eb87c2009cbdb1d
Parents:
561aa20d93487cb95c506fc3281c4720f466070c
Message:
ring-indep. stuff for Z/2^n

git-svn-id: file:///usr/local/Singular/svn/trunk@12373 2c84dea3-7e68-4137-9b89-c4e89433aadc
Location:
kernel
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • kernel/ring.cc

    r561aa2 r04deab  
    551551    mpz_clear(r->ringflaga);
    552552    omFree((ADDRESS)r->ringflaga);
     553  }
     554  if (r->nrnModul != NULL)
     555  {
     556    mpz_clear(r->nrnModul);
     557    omFree((ADDRESS)r->nrnModul);
    553558  }
    554559#endif
  • kernel/rmodulo2m.cc

    r561aa2 r04deab  
    2323
    2424int nr2mExp;
    25 NATNUMBER nr2mModul;
    2625
    2726/*
     
    133132{
    134133  long ii = i;
    135   while (ii < 0) ii += nr2mModul;
    136   while ((ii>1) && (ii >= nr2mModul)) ii -= nr2mModul;
     134  while (ii < 0) ii += r->nr2mModul ;
     135  while ((ii>1) && (ii >= r->nr2mModul )) ii -= r->nr2mModul ;
    137136  return (number) ii;
    138137}
     
    143142int nr2mInt(number &n, const ring r)
    144143{
    145   if ((NATNUMBER)n > (nr2mModul >>1)) return (int)((NATNUMBER)n - nr2mModul);
     144  if ((NATNUMBER)n > (r->nr2mModul  >>1)) return (int)((NATNUMBER)n - r->nr2mModul );
    146145  else return (int)((NATNUMBER)n);
    147146}
     
    184183BOOLEAN nr2mIsMOne (number a)
    185184{
    186   return (nr2mModul == (NATNUMBER)a + 1) && (nr2mModul != 2);
     185  return (currRing->nr2mModul  == (NATNUMBER)a + 1)
     186        && (currRing->nr2mModul != 2);
    187187}
    188188
     
    200200{
    201201  if (a == NULL)
    202     return (nr2mModul % (NATNUMBER) b) == 0;
     202    return (currRing->nr2mModul % (NATNUMBER) b) == 0;
    203203  else
    204204    return ((NATNUMBER) a % (NATNUMBER) b) == 0;
     
    244244BOOLEAN nr2mGreaterZero (number k)
    245245{
    246   return ((NATNUMBER) k !=0) && ((NATNUMBER) k <= (nr2mModul>>1));
     246  return ((NATNUMBER) k !=0) && ((NATNUMBER) k <= (currRing->nr2mModul >>1));
    247247}
    248248
     
    304304   long d, s, t;
    305305
    306    XGCD(d, s, t, a, nr2mModul);
     306   XGCD(d, s, t, a, currRing->nr2mModul );
    307307   assume (d == 1);
    308308   if (s < 0)
    309       return s + nr2mModul;
     309      return s + currRing->nr2mModul ;
    310310   else
    311311      return s;
     
    372372  if (b_div < 0) b_div = - b_div; // b_div now represents |b|
    373373  NATNUMBER r = 0;
    374   while ((g < nr2mModul) && (b_div > 0) && (b_div % 2 == 0))
     374  while ((g < currRing->nr2mModul ) && (b_div > 0) && (b_div % 2 == 0))
    375375  {
    376376    b_div = b_div >> 1;
     
    390390    if ((NATNUMBER)b==1)
    391391      return (number) 0;
    392     return (number) (nr2mModul / (NATNUMBER) b);
     392    return (number) (currRing->nr2mModul / (NATNUMBER) b);
    393393  }
    394394  else
     
    418418number nr2mMapMachineInt(number from)
    419419{
    420   NATNUMBER i = ((NATNUMBER) from) % nr2mModul;
     420  NATNUMBER i = ((NATNUMBER) from) % currRing->nr2mModul ;
    421421  return (number) i;
    422422}
     
    425425{
    426426  long ii = (long) from;
    427   while (ii < 0) ii += nr2mModul;
    428   while ((ii>1) && (ii >= nr2mModul)) ii -= nr2mModul;
     427  while (ii < 0) ii += currRing->nr2mModul ;
     428  while ((ii>1) && (ii >= currRing->nr2mModul )) ii -= currRing->nr2mModul ;
    429429  return (number) ii;
    430430}
     
    436436
    437437  nlGMP(from, (number) erg);
    438   mpz_mod_ui(erg, erg, nr2mModul);
     438  mpz_mod_ui(erg, erg, currRing->nr2mModul );
    439439  number r = (number) mpz_get_ui(erg);
    440440
     
    449449  mpz_init(erg);
    450450
    451   mpz_mod_ui(erg, (int_number) from, nr2mModul);
     451  mpz_mod_ui(erg, (int_number) from, currRing->nr2mModul );
    452452  number r = (number) mpz_get_ui(erg);
    453453
     
    506506  {
    507507    nr2mExp = m;
    508     nr2mModul = 2;
     508    r->nr2mModul = 2;
    509509    for (int i = 1; i < m; i++)
    510510    {
    511       nr2mModul = nr2mModul * 2;
     511      r->nr2mModul  = r->nr2mModul * 2;
    512512    }
    513513  }
     
    515515  {
    516516    nr2mExp=2;
    517     nr2mModul=4;
     517    r->nr2mModul =4;
    518518  }
    519519}
     
    528528BOOLEAN nr2mDBTest (number a, const char *f, const int l)
    529529{
    530   if (((NATNUMBER)a<0) || ((NATNUMBER)a>nr2mModul))
     530  if (((NATNUMBER)a<0) || ((NATNUMBER)a>currRing->nr2mModul ))
    531531  {
    532532    return FALSE;
     
    538538void nr2mWrite (number &a)
    539539{
    540   if ((NATNUMBER)a > (nr2mModul >>1)) StringAppend("-%d",(int)(nr2mModul-((NATNUMBER)a)));
     540  ring r=currRing;
     541  if ((NATNUMBER)a > (r->nr2mModul  >>1))
     542     StringAppend("-%d",(int)(r->nr2mModul -((NATNUMBER)a)));
    541543  else                          StringAppend("%d",(int)((NATNUMBER)a));
    542544}
     
    552554      (*i) *= 10;
    553555      (*i) += *s++ - '0';
    554       if ((*i) >= (MAX_INT_VAL / 10)) (*i) = (*i) % nr2mModul;
     556      if ((*i) >= (MAX_INT_VAL / 10)) (*i) = (*i) % currRing->nr2mModul ;
    555557    }
    556558    while (((*s) >= '0') && ((*s) <= '9'));
    557     if ((*i) >= nr2mModul) (*i) = (*i) % nr2mModul;
     559    (*i) = (*i) % currRing->nr2mModul ;
    558560  }
    559561  else (*i) = 1;
  • kernel/rmodulo2m.h

    r561aa2 r04deab  
    5252{
    5353  return (number)
    54     ((((NATNUMBER) a)*((NATNUMBER) b)) % ((NATNUMBER) nr2mModul));
     54    ((((NATNUMBER) a)*((NATNUMBER) b)) % ((NATNUMBER) currRing->nr2mModul));
    5555}
    5656
     
    5858{
    5959  NATNUMBER r = (NATNUMBER)a + (NATNUMBER)b;
    60   return (number) (r >= nr2mModul ? r - nr2mModul : r);
     60  return (number) (r >= currRing->nr2mModul ? r - currRing->nr2mModul : r);
    6161}
    6262
     
    6464{
    6565  return (number)((NATNUMBER)a<(NATNUMBER)b ?
    66                        nr2mModul-(NATNUMBER)b+(NATNUMBER)a : (NATNUMBER)a-(NATNUMBER)b);
     66                       currRing->nr2mModul-(NATNUMBER)b+(NATNUMBER)a : (NATNUMBER)a-(NATNUMBER)b);
    6767}
    6868
    69 #define nr2mNegM(A) (number)(nr2mModul-(NATNUMBER)(A))
     69#define nr2mNegM(A) (number)(currRing->nr2mModul-(NATNUMBER)(A))
    7070#define nr2mEqualM(A,B)  ((A)==(B))
    7171
  • kernel/structs.h

    r561aa2 r04deab  
    630630#ifdef HAVE_RINGS
    631631  unsigned int  ringtype;  /* cring = 0 => coefficient field, cring = 1 => coeffs from Z/2^m */
    632   int_number    ringflaga; /* Z/(ringfalga^ringflagb)=Z/nrnModul*/
     632  int_number    ringflaga; /* Z/(ringflag^ringflagb)=Z/nrnModul*/
    633633  unsigned long ringflagb;
     634  unsigned long nr2mModul;  /* Z/nr2mModul */
    634635  int_number    nrnModul;
    635636#endif
Note: See TracChangeset for help on using the changeset viewer.