Changeset fef045c in git


Ignore:
Timestamp:
Oct 10, 2009, 7:15:40 PM (14 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
Children:
05998dae5a4237480bafa680febec202b19a3bf6
Parents:
259111f4634d94bbfd66d60c471984b56b91d4b2
Message:
*hannes: normalize stuff


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

Legend:

Unmodified
Added
Removed
  • kernel/longalg.cc

    r259111f rfef045c  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: longalg.cc,v 1.61 2009-10-10 10:44:37 Singular Exp $ */
     4/* $Id: longalg.cc,v 1.62 2009-10-10 17:15:40 Singular Exp $ */
    55/*
    66* ABSTRACT:   algebraic numbers
     
    7070#define napCopy(p)       p_Copy(p,nacRing)
    7171
    72 void naCoefNormalize(number pp);
    73 
    7472static number nadGcd( number a, number b, const ring r) { return nacInit(1,r); }
    7573/*2
     
    197195{
    198196  number t;
    199   poly pp=p;
    200197
    201198  while (p!=NULL)
    202199  {
    203200    t = nacMult(pGetCoeff(p), z);
     201    nacNormalize(t);
    204202    n_Delete(&pGetCoeff(p),nacRing);
    205203    pGetCoeff(p) = t;
    206204    pIter(p);
    207205  }
    208   p_Normalize(pp,nacRing);
    209206}
    210207
     
    227224    pGetCoeff(qq) = nacDiv(pGetCoeff(a), pGetCoeff(g));
    228225    pGetCoeff(qq) = nacNeg(pGetCoeff(qq));
     226    nacNormalize(pGetCoeff(qq));
    229227    h = napCopy(g);
    230228    napMultT(h, qq);
     229    p_Normalize(h,nacRing);
    231230    n_Delete(&pGetCoeff(qq),nacRing);
    232231    a = napAdd(a, h);
     
    259258    h = napCopy(g);
    260259    napMultT(h, qq);
     260    p_Normalize(h,nacRing);
    261261    n_Delete(&pGetCoeff(qq),nacRing);
    262262    a = napAdd(a, h);
     
    286286    if (!nacIsOne(pGetCoeff(x)))
    287287    {
     288      nacNormalize(pGetCoeff(x));
    288289      t = nacInvers(pGetCoeff(x));
    289290      nacNormalize(t);
     
    301302  if (p_GetExp(r,1,nacRing)==0)
    302303  {
     304    nacNormalize(pGetCoeff(r));
    303305    t = nacInvers(pGetCoeff(r));
     306    nacNormalize(t);
    304307    t = nacNeg(t);
    305308    napMultN(qa, t);
    306309    n_Delete(&t,nacRing);
     310    p_Normalize(qa,nacRing);
    307311    p_Delete(&x,nacRing);
    308312    p_Delete(&r,nacRing);
     
    320324    q = p_Mult_q(q, qa,nacRing);
    321325    q = napAdd(q, p_ISet(1,nacRing));
     326    nacNormalize(pGetCoeff(r));
    322327    t = nacInvers(pGetCoeff(r));
    323328    napMultN(q, t);
     329    p_Normalize(q,nacRing);
    324330    n_Delete(&t,nacRing);
    325331    p_Delete(&x,nacRing);
     
    346352      q = napNeg(q);
    347353      q = napAdd(q, qa);
     354      nacNormalize(pGetCoeff(r));
    348355      t = nacInvers(pGetCoeff(r));
     356      //nacNormalize(t);
    349357      napMultN(q, t);
     358      p_Normalize(q,nacRing);
    350359      n_Delete(&t,nacRing);
    351360      p_Delete(&x,nacRing);
     
    938947{
    939948  lnumber l=(lnumber)n;
     949  naNormalize(n);
    940950  if ((l!=NULL)&&(l->n==NULL)&&(p_IsConstant(l->z,r->algring)))
    941951  {
     
    968978  if (p==NULL) return NULL;
    969979  naTest(p);
     980  //naNormalize(p);
    970981  lnumber erg;
    971982  lnumber src = (lnumber)p;
     
    10421053  lu->n = x;
    10431054  lu->s = FALSE;
    1044   number luu=(number)lu;
    1045   naCoefNormalize(luu);
    1046   lu=(lnumber)luu;
     1055  if (lu->n!=NULL)
     1056  {
     1057     number luu=(number)lu;
     1058     naNormalize(luu);
     1059     lu=(lnumber)luu;
     1060  }
    10471061  naTest((number)lu);
    10481062  return (number)lu;
     
    11041118  lu->n = x;
    11051119  lu->s = FALSE;
    1106   number luu=(number)lu;
    1107   naCoefNormalize(luu);
    1108   lu=(lnumber)luu;
     1120  if (lu->n!=NULL)
     1121  {
     1122     number luu=(number)lu;
     1123     naNormalize(luu);
     1124     lu=(lnumber)luu;
     1125  }
    11091126  naTest((number)lu);
    11101127  return (number)lu;
     
    11771194    lo=NULL;
    11781195  }
    1179   else
     1196#if 1
     1197  else if (lo->n!=NULL)
    11801198  {
    11811199    lo->s = 0;
    11821200    number luu=(number)lo;
    1183     naCoefNormalize(luu);
     1201    naNormalize(luu);
    11841202    lo=(lnumber)luu;
    11851203  }
     1204  else
     1205    lo->s=3;
     1206#endif
    11861207  naTest((number)lo);
    11871208  return (number)lo;
     
    12681289    p_Delete(&x,nacRing);
    12691290  lo->n = x;
    1270   number luu=(number)lo;
    1271   naCoefNormalize(luu);
    1272   lo=(lnumber)luu;
     1291  if (lo->n!=NULL)
     1292  {
     1293    lo->s = 0;
     1294    number luu=(number)lo;
     1295    naNormalize(luu);
     1296    lo=(lnumber)luu;
     1297  }
     1298  else
     1299    lo->s=3;
    12731300  naTest((number)lo);
    12741301  return (number)lo;
     
    16891716  number nz; // all denom. of the numerator
    16901717  nz=p_GetAllDenom(p->z,nacRing);
    1691   number nn;
    1692   nn=p_GetAllDenom(p->n,nacRing);
    16931718  BOOLEAN norm=FALSE;
    16941719  if (!n_IsOne(nz,nacRing))
     
    17101735    n_Delete(&nz, nacRing);
    17111736  }
     1737  if (norm)
     1738  {
     1739    norm=FALSE;
     1740    p_Normalize(p->z,nacRing);
     1741    p_Normalize(p->n,nacRing);
     1742  }
     1743  number nn;
     1744  nn=p_GetAllDenom(p->n,nacRing);
    17121745  if (!n_IsOne(nn,nacRing))
    17131746  {
     
    17261759    p_Normalize(p->n,nacRing);
    17271760  }
     1761  // remove common factors in n, z:
     1762  if (p->n!=NULL)
     1763  {
     1764    poly pp=p->z;
     1765    nz=n_Copy(pGetCoeff(pp),nacRing);
     1766    pIter(pp);
     1767    while(pp!=NULL)
     1768    {
     1769      if (n_IsOne(nz,nacRing)) break;
     1770      number d=n_Gcd(nz,pGetCoeff(pp),nacRing);
     1771      n_Delete(&nz,nacRing); nz=d;
     1772      pIter(pp);
     1773    }
     1774    if (!n_IsOne(nz,nacRing))
     1775    {
     1776      pp=p->n;
     1777      nn=n_Copy(pGetCoeff(pp),nacRing);
     1778      pIter(pp);
     1779      while(pp!=NULL)
     1780      {
     1781        if (n_IsOne(nn,nacRing)) break;
     1782        number d=n_Gcd(nn,pGetCoeff(pp),nacRing);
     1783        n_Delete(&nn,nacRing); nn=d;
     1784        pIter(pp);
     1785      }
     1786      number ng=n_Gcd(nz,nn,nacRing);
     1787      n_Delete(&nn,nacRing);
     1788      if (!n_IsOne(ng,nacRing))
     1789      {
     1790        number ni=n_Invers(ng,nacRing);
     1791        p->z=p_Mult_nn(p->z,ni,nacRing);
     1792        p->n=p_Mult_nn(p->n,ni,nacRing);
     1793        p_Normalize(p->z,nacRing);
     1794        p_Normalize(p->n,nacRing);
     1795        n_Delete(&ni,nacRing);
     1796      }
     1797      n_Delete(&ng,nacRing);
     1798    }
     1799    n_Delete(&nz,nacRing);
     1800  }
     1801
    17281802  if ((p->n!=NULL)
    17291803  && (p_IsConstant(p->n,nacRing))
Note: See TracChangeset for help on using the changeset viewer.