Changeset 8391d8 in git for kernel/longalg.cc


Ignore:
Timestamp:
Sep 24, 2009, 6:37:42 PM (15 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', '2a584933abf2a2d3082034c7586d38bb6de1a30a')
Children:
785e89b7306ebdeea35396a79b96dada09124098
Parents:
493699ee1754bff0d1b7c8f580f0b29c26002e60
Message:
*hannes: n_Init is now ring indep.


git-svn-id: file:///usr/local/Singular/svn/trunk@12128 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/longalg.cc

    r493699e r8391d8  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: longalg.cc,v 1.51 2009-09-16 12:26:26 Singular Exp $ */
     4/* $Id: longalg.cc,v 1.52 2009-09-24 16:37:41 Singular Exp $ */
    55/*
    66* ABSTRACT:   algebraic numbers
     
    3333#define napNormalize(p) p_Normalize(p,nacRing)
    3434static int naIsChar0;
    35 static int naPrimeM;
     35static ring naMapRing;
    3636
    3737#ifdef LDEBUG
     
    4949static number   (*nacLcm)(number a, number b, const ring r);
    5050static void     (*nacDelete)(number *a, const ring r);
    51        number   (*nacInit)(int i);
     51static number   (*nacInit)(int i, const ring r);
    5252static int      (*nacInt)(number &n, const ring r);
    5353       void     (*nacNormalize)(number &a);
     
    6969#define napCopy(p)       (napoly)p_Copy((poly)p,nacRing)
    7070
    71 static number nadGcd( number a, number b, const ring r) { return nacInit(1); }
     71static number nadGcd( number a, number b, const ring r) { return nacInit(1,r); }
    7272/*2
    7373*  sets the appropriate operators
     
    123123#endif
    124124  nacRing        = r->algring;
    125   nacInit        = nacRing->cf->nInit;
     125  nacInit        = nacRing->cf->cfInit;
    126126  nacInt         = nacRing->cf->n_Int;
    127127  nacCopy        = nacRing->cf->nCopy;
     
    524524  }
    525525  else
    526     pGetCoeff(a) = nacInit(1);
     526    pGetCoeff(a) = nacInit(1,nacRing);
    527527  i = 0;
    528528  const char  *olds=s;
     
    643643    return;
    644644  p = ph;
    645   h = nacInit(1);
     645  h = nacInit(1,nacRing);
    646646  while (p!=NULL)
    647647  {
     
    781781number napLcm(napoly a)
    782782{
    783   number h = nacInit(1);
     783  number h = nacInit(1,nacRing);
    784784
    785785  if (naIsChar0)
     
    890890*  z:= i
    891891*/
    892 number naInit(int i)
     892number naInit(int i, const ring r)
    893893{
    894894  if (i!=0)
    895895  {
    896     napoly z=napInit(i);
    897     if (z!=NULL)
    898     {
     896    number c=n_Init(i,r->algring);
     897    if (!n_IsZero(c,r->algring))
     898    {
     899      poly z=p_Init(r->algring);
     900      pSetCoeff0(z,c);
    899901      lnumber l = (lnumber)omAllocBin(rnumber_bin);
    900902      l->z = z;
     
    16361638{
    16371639  number x;
    1638   *rc = naInit(1);
     1640  *rc = naInit(1,nacRing);
    16391641  for (; i > 0; i--)
    16401642  {
     
    20652067  l->z=(napoly)p_Init(nacRing);
    20662068  int i=(int)((long)c);
    2067   if (i>(naPrimeM>>2)) i-=naPrimeM;
    2068   pGetCoeff(l->z)=nlInit(i);
     2069  if (i>((long)naMapRing->ch>>2)) i-=(long)naMapRing->ch;
     2070  pGetCoeff(l->z)=nlInit(i, nacRing);
    20692071  l->n=NULL;
    20702072  return (number)l;
     
    21062108  if (npIsZero(c)) return NULL;
    21072109  int i=(int)((long)c);
    2108   if (i>naPrimeM) i-=naPrimeM;
    2109   number n=npInit(i);
     2110  if (i>(long)naMapRing->ch) i-=(long)naMapRing->ch;
     2111  number n=npInit(i,naMapRing);
    21102112  if (npIsZero(n)) return NULL;
    21112113  lnumber l=(lnumber)omAllocBin(rnumber_bin);
     
    21232125{
    21242126  if (nlIsZero(c)) return NULL;
    2125   number n=npInit(nlModP(c,npPrimeM));
     2127  number n=npInit(nlModP(c,npPrimeM),nacRing);
    21262128  if (npIsZero(n)) return NULL;
    21272129  npTest(n);
     
    21362138static number (*nacMap)(number);
    21372139static int naParsToCopy;
    2138 static ring napMapRing;
    21392140static napoly napMap(napoly p)
    21402141{
     
    21452146  int i;
    21462147  for(i=1;i<=naParsToCopy;i++)
    2147     napSetExp(a,i,napGetExpFrom(p,i,napMapRing));
     2148    napSetExp(a,i,napGetExpFrom(p,i,naMapRing));
    21482149  p_Setm(a,nacRing);
    21492150  pGetCoeff(w) = nacMap(pGetCoeff(p));
     
    21552156    pIter(a);
    21562157    for(i=1;i<=naParsToCopy;i++)
    2157       napSetExp(a,i,napGetExpFrom(p,i,napMapRing));
     2158      napSetExp(a,i,napGetExpFrom(p,i,naMapRing));
    21582159    p_Setm(a,nacRing);
    21592160    pGetCoeff(a) = nacMap(pGetCoeff(p));
     
    22452246nMapFunc naSetMap(ring src, ring dst)
    22462247{
     2248  naMapRing=src;
    22472249  if (rField_is_Q_a(dst)) /* -> Q(a) */
    22482250  {
     
    22532255    if (rField_is_Zp(src))
    22542256    {
    2255       naPrimeM = rChar(src);
    22562257      return naMapP0;  /* Z/p -> Q(a)*/
    22572258    }
     
    22672268        naParsToCopy++;
    22682269      }
    2269       napMapRing=src;
    22702270      nacMap=nacCopy;
    22712271      if ((naParsToCopy==rPar(dst))&&(naParsToCopy==rPar(src)))
     
    22832283    if (rField_is_Zp(src))
    22842284    {
    2285       int c=rChar(src);
    2286       if (c==npPrimeM)
     2285      if (src->ch==dst->ch)
    22872286      {
    22882287        return naMapPP;  /* Z/p -> Z/p(a)*/
     
    22902289      else
    22912290      {
    2292         naPrimeM = c;
    22932291        return naMapPP1;  /* Z/p' -> Z/p(a)*/
    22942292      }
     
    23022300      else
    23032301      {
    2304         npMapPrime=rChar(src);
    23052302        nacMap = npMapP;
    23062303      }
     
    23142311        naParsToCopy++;
    23152312      }
    2316       napMapRing=src;
    23172313      if ((naParsToCopy==rPar(dst))&&(naParsToCopy==rPar(src))
    23182314      && (nacMap==nacCopy))
     
    24302426    return (number)rr;
    24312427  }
    2432   return r->cf->nInit(1);
     2428  return n_Init(1,r);
    24332429}
    24342430
Note: See TracChangeset for help on using the changeset viewer.