Changeset cdec33 in git


Ignore:
Timestamp:
Apr 7, 2011, 4:33:45 PM (13 years ago)
Author:
Frank Seelisch <seelisch@…>
Branches:
(u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
Children:
c0b2e03243dcc8b84e3afb3a38cac55b6bb590c8
Parents:
73624c6eb72939321ed403d522f0f94a290bca1a
Message:
fix for ticket #329

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

Legend:

Unmodified
Added
Removed
  • kernel/longalg.cc

    r73624c6 rcdec33  
    6666  n->nIsMOne        = naIsMOne;
    6767  n->nGreaterZero   = naGreaterZero;
     68  n->nGreater       = naGreater;
    6869  n->cfWrite        = naWrite;
    6970  n->nRead          = naRead;
     
    99100  nIsMOne = naIsMOne;
    100101  nGreaterZero = naGreaterZero;
     102  nGreater = naGreater;
    101103  nRead = naRead;
    102104  nPower = naPower;
     
    174176  nacIsZero      = nacRing->cf->nIsZero;
    175177  nacGreaterZero = nacRing->cf->nGreaterZero;
     178  nacGreater     = nacRing->cf->nGreater;
    176179  nacIsOne       = nacRing->cf->nIsOne;
    177180  nacGcd         = nacRing->cf->nGcd;
     
    737740
    738741
     742/* This method will only consider the numerators of a and b.
     743   Moreover it may return TRUE only if one or both numerators
     744   are zero or if their degrees are equal. Then TRUE is returned iff
     745   coeff(numerator(a)) > coeff(numerator(b));
     746   In all other cases, FALSE will be returned. */
    739747BOOLEAN naGreater (number a, number b)
    740748{
    741   if (naIsZero(a))
    742     return FALSE;
    743   if (naIsZero(b))
    744     return TRUE; /* a!= 0)*/
    745   return napDeg(((lnumber)a)->z)>napDeg(((lnumber)b)->z);
     749  int az = 0; int ad = 0;
     750  if (naIsZero(a)) az = 1;
     751  else ad = napDeg(((lnumber)a)->z);
     752  int bz = 0; int bd = 0;
     753  if (naIsZero(b)) bz = 1;
     754  else bd = napDeg(((lnumber)b)->z);
     755 
     756  if ((az == 1) && (bz == 1)) /* a = b = 0 */ return FALSE;
     757  if (az == 1) /* a = 0, b != 0 */
     758  {
     759    return (!nacGreaterZero(pGetCoeff(((lnumber)b)->z)));
     760  }
     761  if (bz == 1) /* a != 0, b = 0 */
     762  {
     763    return (nacGreaterZero(pGetCoeff(((lnumber)a)->z)));
     764  }
     765  if (ad == bd) 
     766    return nacGreater(pGetCoeff(((lnumber)a)->z),
     767                      pGetCoeff(((lnumber)b)->z));
     768  return FALSE;
    746769}
    747770
  • kernel/longtrans.cc

    r73624c6 rcdec33  
    4848BOOLEAN     (*nacIsOne)(number a);
    4949BOOLEAN     (*nacGreaterZero)(number a);
     50BOOLEAN     (*nacGreater)(number a, number b);
    5051number      (*nacMap)(number);
    5152
     
    102103  nacIsZero      = nacRing->cf->nIsZero;
    103104  nacGreaterZero = nacRing->cf->nGreaterZero;
     105  nacGreater     = nacRing->cf->nGreater;
    104106  nacIsOne       = nacRing->cf->nIsOne;
    105107  nacGcd         = nacRing->cf->nGcd;
     
    15741576}
    15751577
    1576 
     1578/* This method will only consider the numerators of a and b.
     1579   Moreover it may return TRUE only if one or both numerators
     1580   are zero or if their degrees are equal. Then TRUE is returned iff
     1581   coeff(numerator(a)) > coeff(numerator(b));
     1582   In all other cases, FALSE will be returned. */
    15771583BOOLEAN ntGreater (number a, number b)
    15781584{
    1579   if (ntIsZero(a))
    1580     return FALSE;
    1581   if (ntIsZero(b))
    1582     return TRUE; /* a!= 0)*/
    1583   return napDeg(((lnumber)a)->z)>napDeg(((lnumber)b)->z);
     1585  int az = 0; int ad = 0;
     1586  if (ntIsZero(a)) az = 1;
     1587  else ad = napDeg(((lnumber)a)->z);
     1588  int bz = 0; int bd = 0;
     1589  if (ntIsZero(b)) bz = 1;
     1590  else bd = napDeg(((lnumber)b)->z);
     1591 
     1592  if ((az == 1) && (bz == 1)) /* a = b = 0 */ return FALSE;
     1593  if (az == 1) /* a = 0, b != 0 */
     1594  {
     1595    return (!nacGreaterZero(pGetCoeff(((lnumber)b)->z)));
     1596  }
     1597  if (bz == 1) /* a != 0, b = 0 */
     1598  {
     1599    return (nacGreaterZero(pGetCoeff(((lnumber)a)->z)));
     1600  }
     1601  if (ad == bd) 
     1602    return nacGreater(pGetCoeff(((lnumber)a)->z),
     1603                      pGetCoeff(((lnumber)b)->z));
     1604  return FALSE;
    15841605}
    15851606
  • kernel/longtrans.h

    r73624c6 rcdec33  
    118118extern BOOLEAN     (*nacIsOne)(number a);
    119119extern BOOLEAN     (*nacGreaterZero)(number a);
     120extern BOOLEAN     (*nacGreater)(number a, number b);
    120121extern number      (*nacMap)(number);
    121122
Note: See TracChangeset for help on using the changeset viewer.