Changeset f18d7db in git


Ignore:
Timestamp:
Jul 5, 2011, 11:35:27 AM (13 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'c1c65551e4b3a0de0b13ddf30446f6e9569681b5')
Children:
faf58fa448fff6919168c75277259dc4202064b0
Parents:
fc15cc799d1c7198bd1e43daa447a104f50c43c0
Message:
use n_IsOne/n_isMOne, fix memory leaks with nCopy/nDiv, use nNormalize for better efficiency


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

Legend:

Unmodified
Added
Removed
  • kernel/gring.cc

    rfc15cc7 rf18d7db  
    14141414  /* pSetComp(m,r)=0? */
    14151415  poly   N  = nc_mm_Mult_p(m, p_Head(p1,r), r);
    1416   number C  = n_Copy( p_GetCoeff(N,  r), r);
    1417   number cF = n_Copy( p_GetCoeff(p2, r),r);
     1416  number C  = p_GetCoeff(N, r);
     1417  number cF = p_GetCoeff(p2, r);
    14181418  /* GCD stuff */
    14191419  number cG = nGcd(C, cF, r);
    1420   if ( !nEqual(cG, n_Init(1,r) ) )
    1421   {
    1422     cF = nDiv(cF, cG);
    1423     C  = nDiv(C,  cG);
    1424   }
     1420  if ( !n_IsOne(cG,r) )
     1421  {
     1422    cF = nDiv(cF, cG); nNormalize(cF);
     1423    C  = nDiv(C,  cG); nNormalize(C);
     1424  }
     1425  else
     1426  {
     1427    cF = n_Copy(cF, r);
     1428    C  = n_Copy(C, r);
     1429  }
     1430  n_Delete(&cG,r);
    14251431  p2 = p_Mult_nn(p2, C, r);
    14261432  poly out = nc_mm_Mult_pp(m, pNext(p1), r);
     
    14281434  p_Test(p2,r);
    14291435  p_Test(N,r);
    1430   number MinusOne = n_Init(-1,r);
    1431   if (!n_Equal(cF,MinusOne,r))
     1436  if (!n_IsMOne(cF,r))
    14321437  {
    14331438    cF = n_Neg(cF,r);
     
    14411446  n_Delete(&cF,r);
    14421447  n_Delete(&C,r);
    1443   n_Delete(&MinusOne,r);
    14441448  return(out);
    14451449
     
    14711475  poly   N  = nc_mm_Mult_p(m, p_Head(p1,r), r);
    14721476
    1473   number C  = n_Copy( p_GetCoeff(N,  r), r);
    1474   number cF = n_Copy( p_GetCoeff(p2, r), r);
     1477  number C  =  p_GetCoeff(N, r);
     1478  number cF =  p_GetCoeff(p2, r);
    14751479
    14761480  /* GCD stuff */
     
    14791483  if (!n_IsOne(cG, r))
    14801484  {
    1481     number n_tmp;
    1482     n_tmp = n_Div(cF, cG, r); n_Delete(&cF,r); cF=n_tmp;
    1483     n_tmp  = n_Div(C,  cG, r); n_Delete(&C,r); C=n_tmp;
    1484   }
     1485    cF = n_Div(cF, cG, r); n_Normalize(cF,r);
     1486    C  = n_Div(C,  cG, r); n_Normalize(C,r);
     1487  }
     1488  else
     1489  {
     1490    cF = n_Copy(cF, r);
     1491    C  = n_Copy(C, r);
     1492  }
     1493  n_Delete(&cG,r);
    14851494
    14861495  p2 = p_Mult_nn(p2, C, r); // p2 !!!
     
    15521561  /* zero exponents ! */
    15531562  poly M1    = nc_mm_Mult_p(m1,p_Head(p1,r),r);
    1554   number C1  = n_Copy(p_GetCoeff(M1,r),r);
     1563  number C1  = p_GetCoeff(M1,r);
    15551564  poly M2    = nc_mm_Mult_p(m2,p_Head(p2,r),r);
    1556   number C2  = n_Copy(p_GetCoeff(M2,r),r);
     1565  number C2  = p_GetCoeff(M2,r);
    15571566  /* GCD stuff */
    15581567  number C = nGcd(C1,C2,r);
    1559   if (!nEqual(C,n_Init(1,r)))
    1560   {
    1561     C1=nDiv(C1,C);
    1562     C2=nDiv(C2,C);
    1563   }
     1568  if (!nIsOne(C))
     1569  {
     1570    C1=nDiv(C1,C);nNormalize(C1);
     1571    C2=nDiv(C2,C);nNormalize(C1);
     1572  }
     1573  else
     1574  {
     1575    C1=nCopy(C1);
     1576    C2=nCopy(C2);
     1577  }
     1578  nDelete(&C);
    15641579  M1=p_Mult_nn(M1,C2,r);
    15651580  p_SetCoeff(m1,C2,r);
    1566   number MinusOne=n_Init(-1,r);
    1567   if (n_Equal(C1,MinusOne,r))
     1581  if (n_IsMOne(C1,r))
    15681582  {
    15691583    M2=p_Add_q(M1,M2,r);
     
    15891603  //  n_Delete(&C1,r);
    15901604  //  n_Delete(&C2,r);
    1591   n_Delete(&MinusOne,r);
    15921605#ifdef PDEBUG
    15931606  p_Test(M2,r);
     
    17491762  {
    17501763    C1=n_Div(C1, C, r);                            // C1 = C1 / C
     1764    n_Normalize(C1,r);
    17511765    C2=n_Div(C2, C, r);                            // C2 = C2 / C
     1766    n_Normalize(C2,r);
    17521767  }
    17531768  else
Note: See TracChangeset for help on using the changeset viewer.