Changeset e475e3 in git for kernel/longalg.cc


Ignore:
Timestamp:
Aug 7, 2009, 1:13:40 PM (15 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
b87da29e3432134ed69cb9775567c9df1a4b2b5e
Parents:
89314848080dc671e1de502749b8f7a2b6fc2302
Message:
*hannes: next step: naNormalize prep.


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

Legend:

Unmodified
Added
Removed
  • kernel/longalg.cc

    r893148 re475e3  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: longalg.cc,v 1.42 2009-08-06 16:35:56 Singular Exp $ */
     4/* $Id: longalg.cc,v 1.43 2009-08-07 11:13:40 Singular Exp $ */
    55/*
    66* ABSTRACT:   algebraic numbers
     
    4848static number   (*nacGcd)(number a, number b, const ring r);
    4949static number   (*nacLcm)(number a, number b, const ring r);
    50 static void     (*nacDelete)(number *a, const ring r);
    5150       number   (*nacInit)(int i);
    5251static int      (*nacInt)(number &n);
     
    6665static int napExpi(int i, napoly a, napoly b);
    6766static ring nacRing;
    68 #define NA_NORMALIZE_CNT 5
    69 static inline void naNormalize0(number &pp)
    70 {
    71   lnumber p = (lnumber)pp;
    72   if ((p!=NULL) && (p->z!=NULL))
    73   {
    74     p->cnt++;
    75     if ((p->cnt>NA_NORMALIZE_CNT)
    76     //|| (currRing->minpoly!=NULL)
    77     //|| ((p->n!=NULL) && (p->cnt>1))
    78     )
    79       naNormalize(pp);
    80   }
    81 }
    8267
    8368#define napCopy(p)       (napoly)p_Copy((poly)p,nacRing)
     
    152137  nacGcd         = nacRing->cf->nGcd;
    153138  nacLcm         = nacRing->cf->nLcm;
    154   nacDelete      = nacRing->cf->cfDelete;
    155139  nacMult        = nacRing->cf->nMult;
    156140  nacDiv         = nacRing->cf->nDiv;
     
    178162
    179163#define napInit(i)       (napoly)p_ISet(i,nacRing)
    180 #define napSetCoeff(p,n) {nacDelete(&napGetCoeff(p),nacRing);napGetCoeff(p)=n;}
     164#define napSetCoeff(p,n) p_SetCoeff(p,n,nacRing);
    181165#define napDelete1(p)    p_LmDelete((poly *)p, nacRing)
    182166#define nap_Copy(p,r)       (napoly)p_Copy((poly)p,r->algring)
     
    230214    napMultT(h, qq);
    231215    napNormalize(h);
    232     nacDelete(&napGetCoeff(qq),nacRing);
     216    n_Delete(&napGetCoeff(qq),nacRing);
    233217    a = napAdd(a, h);
    234218  }
     
    261245    napMultT(h, qq);
    262246    napNormalize(h);
    263     nacDelete(&napGetCoeff(qq),nacRing);
     247    n_Delete(&napGetCoeff(qq),nacRing);
    264248    a = napAdd(a, h);
    265249  }
     
    291275      t = nacInvers(napGetCoeff(x));
    292276      nacNormalize(t);
    293       nacDelete(&napGetCoeff(x),nacRing);
     277      n_Delete(&napGetCoeff(x),nacRing);
    294278      napGetCoeff(x) = t;
    295279    }
     
    309293    t = nacNeg(t);
    310294    qa=p_Mult_nn(qa,t,nacRing); p_Normalize(qa,nacRing);
    311     nacDelete(&t,nacRing);
     295    n_Delete(&t,nacRing);
    312296    napNormalize(qa);
    313297    napDelete(&x);
     
    330314    q=p_Mult_nn(q,t,nacRing); p_Normalize(q,nacRing);
    331315    napNormalize(q);
    332     nacDelete(&t,nacRing);
     316    n_Delete(&t,nacRing);
    333317    napDelete(&x);
    334318    napDelete(&r);
     
    359343      q=p_Mult_nn(q,t,nacRing); p_Normalize(q,nacRing);
    360344      napNormalize(q);
    361       nacDelete(&t,nacRing);
     345      n_Delete(&t,nacRing);
    362346      napDelete(&x);
    363347      napDelete(&r);
     
    610594    if(nacIsOne(d))
    611595    {
    612       nacDelete(&h,nacRing);
    613       nacDelete(&d,nacRing);
     596      n_Delete(&h,nacRing);
     597      n_Delete(&d,nacRing);
    614598      return;
    615599    }
    616     nacDelete(&h,nacRing);
     600    n_Delete(&h,nacRing);
    617601    h = d;
    618602    napIter(p);
     
    620604  while (p!=NULL);
    621605  h = nacInvers(d);
    622   nacDelete(&d,nacRing);
     606  n_Delete(&d,nacRing);
    623607  p = ph;
    624608  while (p!=NULL)
    625609  {
    626610    d = nacMult(napGetCoeff(p), h);
    627     nacDelete(&napGetCoeff(p),nacRing);
     611    n_Delete(&napGetCoeff(p),nacRing);
    628612    napGetCoeff(p) = d;
    629613    napIter(p);
    630614  }
    631   nacDelete(&h,nacRing);
     615  n_Delete(&h,nacRing);
    632616}
    633617
     
    644628  {
    645629    d = nacLcm(h, napGetCoeff(p), nacRing);
    646     nacDelete(&h,nacRing);
     630    n_Delete(&h,nacRing);
    647631    h = d;
    648632    napIter(p);
     
    652636    p = ph;
    653637    p=p_Mult_nn(p,h,nacRing);p_Normalize(p,nacRing);
    654     nacDelete(&h,nacRing);
     638    n_Delete(&h,nacRing);
    655639  }
    656640  napContent(ph);
     
    669653    napIter(a);
    670654    y = nacGcd(x, napGetCoeff(a), nacRing);
    671     nacDelete(&x,nacRing);
     655    n_Delete(&x,nacRing);
    672656    x = y;
    673657    if (nacIsOne(x))
     
    677661  {
    678662    y = nacGcd(x, napGetCoeff(b), nacRing);
    679     nacDelete(&x,nacRing);
     663    n_Delete(&x,nacRing);
    680664    x = y;
    681665    if (nacIsOne(x))
     
    784768    {
    785769      d = nacLcm(h, napGetCoeff(b), nacRing);
    786       nacDelete(&h,nacRing);
     770      n_Delete(&h,nacRing);
    787771      h = d;
    788772      napIter(b);
     
    894878      l->s = 2;
    895879      l->n = NULL;
    896       l->cnt=0;
    897880      return (number)l;
    898881    }
     
    910893  p_Setm(l->z,nacRing);
    911894  l->n = NULL;
    912   l->cnt=0;
    913895  return (number)l;
    914896}
     
    932914  lnumber l = (lnumber)n;
    933915  if (l==NULL) return -1;
    934   if (l->cnt>0) naNormalize(n);
    935916  int len_z;
    936917  int len_n;
     
    983964  erg->n = napCopy(src->n);
    984965  erg->s = src->s;
    985   erg->cnt=src->cnt;
    986966  return (number)erg;
    987967}
     
    995975  erg->n = nap_Copy(src->n,r);
    996976  erg->s = src->s;
    997   erg->cnt=src->cnt;
    998977  return (number)erg;
    999978}
     
    10471026  //    number inv=nacInvers(napGetCoeff(x));
    10481027  //    napMultN(lu->z,inv);
    1049   //    nacDelete(&inv,nacRing);
     1028  //    n_Delete(&inv,nacRing);
    10501029  //    napDelete(&x);
    10511030  //  }
     
    10531032  lu->n = x;
    10541033  lu->s = FALSE;
    1055   lu->cnt=si_max(a->cnt,b->cnt)+1;
    10561034  if (lu->n!=NULL)
    10571035  {
    10581036     number luu=(number)lu;
    1059      naNormalize0(luu);
     1037     naNormalize(luu);
    10601038     lu=(lnumber)luu;
    10611039  }
     
    11131091  //    number inv=nacInvers(napGetCoeff(x));
    11141092  //    napMultN(lu->z,inv);
    1115   //    nacDelete(&inv,nacRing);
     1093  //    n_Delete(&inv,nacRing);
    11161094  //    napDelete(&x);
    11171095  //  }
     
    11191097  lu->n = x;
    11201098  lu->s = FALSE;
    1121   lu->cnt=si_max(a->cnt,b->cnt)+1;
    11221099  if (lu->n!=NULL)
    11231100  {
    11241101     number luu=(number)lu;
    1125      naNormalize0(luu);
     1102     naNormalize(luu);
    11261103     lu=(lnumber)luu;
    11271104  }
     
    11911168    napDelete(&x);
    11921169  lo->n = x;
    1193   lo->cnt=a->cnt+b->cnt+1;
    11941170  if(lo->z==NULL)
    11951171  {
     
    12021178    lo->s = 0;
    12031179    number luu=(number)lo;
    1204     naNormalize0(luu);
     1180    naNormalize(luu);
    12051181    lo=(lnumber)luu;
    12061182  }
     
    12921268    napDelete(&x);
    12931269  lo->n = x;
    1294   lo->cnt=a->cnt+b->cnt+1;
    12951270  if (lo->n!=NULL)
    12961271  {
     
    13671342  else
    13681343    lo->n = x;
    1369   lo->cnt=b->cnt+1;
    13701344  if (lo->n!=NULL)
    13711345  {
    13721346     number luu=(number)lo;
    1373      naNormalize0(luu);
     1347     naNormalize(luu);
    13741348     lo=(lnumber)luu;
    13751349  }
     
    14881462    naTest(*p);
    14891463  }
    1490   a->cnt=0;
    14911464  return s;
    14921465}
     
    15861559      if (!nacIsZero(t))
    15871560      {
    1588         nacDelete(&t,nacRing);
     1561        n_Delete(&t,nacRing);
    15891562        return FALSE;
    15901563      }
    15911564      else
    1592         nacDelete(&t,nacRing);
     1565        n_Delete(&t,nacRing);
    15931566    }
    15941567    napIter(x);
     
    16021575  a->n = NULL;
    16031576  a->s = 2;
    1604   a->cnt=0;
    16051577  return TRUE;
    16061578}
     
    16931665  }
    16941666#endif
    1695   result->cnt=0;
    16961667  naTest((number)result);
    16971668  return (number)result;
     
    17171688  if ((p==NULL) /*|| (p->s==2)*/)
    17181689    return;
    1719   p->s = 2; p->cnt=0;
     1690  p->s = 2;
    17201691  napoly x = p->z;
    17211692  napoly y = p->n;
     
    17611732    x=p_Mult_nn(x,n,nacRing);p_Normalize(x,nacRing);
    17621733    y=p_Mult_nn(y,n,nacRing);p_Normalize(y,nacRing);
    1763     nacDelete(&n,nacRing);
     1734    n_Delete(&n,nacRing);
    17641735    while(x!=NULL)
    17651736    {
     
    18101781    nacNormalize(h1);
    18111782    x=p_Mult_nn(x,h1,nacRing);p_Normalize(x,nacRing);
    1812     nacDelete(&h1,nacRing);
     1783    n_Delete(&h1,nacRing);
    18131784    napDelete1(&y);
    18141785    p->n = NULL;
     
    18561827      x=p_Mult_nn(x,n,nacRing);p_Normalize(x,nacRing);
    18571828      y=p_Mult_nn(y,n,nacRing);p_Normalize(y,nacRing);
    1858       nacDelete(&n,nacRing);
     1829      n_Delete(&n,nacRing);
    18591830      while(x!=NULL)
    18601831      {
     
    19131884    if(nacIsOne(d))
    19141885    {
    1915       nacDelete(&g,nacRing);
    1916       nacDelete(&d,nacRing);
     1886      n_Delete(&g,nacRing);
     1887      n_Delete(&d,nacRing);
    19171888      naTest(pp);
    19181889      return;
    19191890    }
    1920     nacDelete(&g,nacRing);
     1891    n_Delete(&g,nacRing);
    19211892    g = d;
    19221893    napIter(x);
     
    19271898    if(nacIsOne(d))
    19281899    {
    1929       nacDelete(&g,nacRing);
    1930       nacDelete(&d,nacRing);
     1900      n_Delete(&g,nacRing);
     1901      n_Delete(&d,nacRing);
    19311902      naTest(pp);
    19321903      return;
    19331904    }
    1934     nacDelete(&g,nacRing);
     1905    n_Delete(&g,nacRing);
    19351906    g = d;
    19361907    napIter(y);
     
    19501921    napIter(y);
    19511922  }
    1952   nacDelete(&g,nacRing);
     1923  n_Delete(&g,nacRing);
    19531924  naTest(pp);
    19541925}
     
    19821953      bt = nacGcd(t, napGetCoeff(xx), nacRing);
    19831954      r = nacMult(t, napGetCoeff(xx));
    1984       nacDelete(&napGetCoeff(xx),nacRing);
     1955      n_Delete(&napGetCoeff(xx),nacRing);
    19851956      napGetCoeff(xx) = nacDiv(r, bt);
    19861957      nacNormalize(napGetCoeff(xx));
    1987       nacDelete(&bt,nacRing);
    1988       nacDelete(&r,nacRing);
     1958      n_Delete(&bt,nacRing);
     1959      n_Delete(&r,nacRing);
    19891960      napIter(xx);
    19901961    }
    19911962  }
    1992   nacDelete(&t,nacRing);
     1963  n_Delete(&t,nacRing);
    19931964  result->z = x;
    1994   result->cnt=0;
    19951965#ifdef HAVE_FACTORY
    19961966  if (b->n!=NULL)
     
    20422012        a=nacCopy(napGetCoeff(x));
    20432013        number aa=nacInvers(a);
    2044         nacDelete(&a,nacRing);
     2014        n_Delete(&a,nacRing);
    20452015        x=p_Mult_nn(x,aa,nacRing);p_Normalize(x,nacRing);
    2046         nacDelete(&aa,nacRing);
     2016        n_Delete(&aa,nacRing);
    20472017      }
    20482018    }
     
    20582028  lnumber l=(lnumber)omAllocBin(rnumber_bin);
    20592029  l->s=2;
    2060   l->cnt=0;
    20612030  l->z=(napoly)p_Init(nacRing);
    20622031  int i=(int)((long)c);
     
    20752044  lnumber l=(lnumber)omAllocBin(rnumber_bin);
    20762045  l->s=0;
    2077   l->cnt=0;
    20782046  l->z=(napoly)p_Init(nacRing);
    20792047  napGetCoeff(l->z)=nlCopy(c);
     
    20902058  lnumber l=(lnumber)omAllocBin(rnumber_bin);
    20912059  l->s=2;
    2092   l->cnt=0;
    20932060  l->z=(napoly)p_Init(nacRing);
    20942061  napGetCoeff(l->z)=c; /* omit npCopy, because npCopy is a no-op */
     
    21092076  lnumber l=(lnumber)omAllocBin(rnumber_bin);
    21102077  l->s=2;
    2111   l->cnt=0;
    21122078  l->z=(napoly)p_Init(nacRing);
    21132079  napGetCoeff(l->z)=n;
     
    21272093  lnumber l=(lnumber)omAllocBin(rnumber_bin);
    21282094  l->s=2;
    2129   l->cnt=0;
    21302095  l->z=(napoly)p_Init(nacRing);
    21312096  napGetCoeff(l->z)=n;
     
    21952160      }
    21962161      /* else continue*/
    2197       nacDelete(&(napGetCoeff(w)),nacRing);
     2162      n_Delete(&(napGetCoeff(w)),nacRing);
    21982163    }
    21992164    else
     
    22182183  lnumber src =(lnumber)c;
    22192184  erg->s=src->s;
    2220   erg->cnt=src->cnt;
    22212185  erg->z=napMap(src->z);
    22222186  erg->n=napMap(src->n);
     
    24292393    rr->z=nap_Copy(naGetDenom0(x),r);
    24302394    rr->s = 2;
    2431     rr->cnt=0;
    24322395    return (number)rr;
    24332396  }
     
    24432406    rr->z=nap_Copy(naGetNom0(x),r);
    24442407    rr->s = 2;
    2445     rr->cnt=0;
    24462408    return (number)rr;
    24472409  }
Note: See TracChangeset for help on using the changeset viewer.