Changeset ac5926 in git for libpolys


Ignore:
Timestamp:
Aug 29, 2022, 3:45:05 PM (20 months ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
295424033ae789da33cc0fe7c27571815b5ce280
Parents:
cacb13f363f9ecf08a35d85136d1a5f52bcc974f
git-author:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2022-08-29 15:45:05+02:00
git-committer:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2022-08-29 15:50:42+02:00
Message:
ksCheckCoeff: ring case: reduce(a,b): do not multiply a
Location:
libpolys/polys
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • libpolys/polys/kbuckets.cc

    rcacb13 rac5926  
    10811081//
    10821082
    1083 extern int ksCheckCoeff(number *a, number *b);
    1084 
    10851083number kBucketPolyRed(kBucket_pt bucket,
    10861084                      poly p1, int l1,
     
    14281426*       3  ->  a == 1,  b == 1
    14291427*   this value is used to control the spolys
     1428*   reduce is set inside "NF" -> a should be 1
    14301429*/
    1431 int ksCheckCoeff(number *a, number *b, const coeffs r)
     1430int ksCheckCoeff(number *a, number *b, const coeffs r, BOOLEAN reduce)
    14321431{
    14331432  int c = 0;
     
    14381437  number cn;
    14391438
    1440   if (nCoeff_is_Ring(r)
    1441   && n_DivBy(an,bn,r))
    1442   {
    1443     cn=n_Copy(bn,r);
     1439  if (nCoeff_is_Ring(r))
     1440  {
     1441    if (n_Equal(an,bn,r))
     1442    {
     1443      *a=n_Init(1,r);
     1444      *b=n_Init(1,r);
     1445      return 3;
     1446    }
     1447    else if(redtail)
     1448    {
     1449      an = n_Init(1,r);
     1450      bn = n_ExactDiv(bn, an, r);
     1451    }
     1452    else
     1453    {
     1454      cn = n_SubringGcd(an, bn, r);
     1455      if(n_IsOne(cn, r))
     1456      {
     1457        an = n_Copy(an, r);
     1458        bn = n_Copy(bn, r);
     1459      }
     1460      else
     1461      {
     1462        an = n_ExactDiv(an, cn, r);
     1463        bn = n_ExactDiv(bn, cn, r);
     1464      }
     1465      n_Delete(&cn, r);
     1466    }
    14441467  }
    14451468  else
    14461469  {
    14471470    cn = n_SubringGcd(an, bn, r);
    1448   }
    1449   if(n_IsOne(cn, r))
    1450   {
    1451     an = n_Copy(an, r);
    1452     bn = n_Copy(bn, r);
    1453   }
    1454   else
    1455   {
    1456     an = n_ExactDiv(an, cn, r);
    1457     bn = n_ExactDiv(bn, cn, r);
    1458   }
    1459   n_Delete(&cn, r);
     1471    if(n_IsOne(cn, r))
     1472    {
     1473      an = n_Copy(an, r);
     1474      bn = n_Copy(bn, r);
     1475    }
     1476    else
     1477    {
     1478      an = n_ExactDiv(an, cn, r);
     1479      bn = n_ExactDiv(bn, cn, r);
     1480    }
     1481    n_Delete(&cn, r);
     1482  }
    14601483  if (n_IsOne(an, r))
    14611484  {
  • libpolys/polys/kbuckets.h

    rcacb13 rac5926  
    244244void kBucketSimpleContent(kBucket_pt bucket);
    245245BOOLEAN kBucketIsCleared(kBucket_pt bucket);
    246 int ksCheckCoeff(number *a, number *b, const coeffs r);
     246int ksCheckCoeff(number *a, number *b, const coeffs r, BOOLEAN reduce=FALSE);
    247247#endif /* KBUCKETS_H */
Note: See TracChangeset for help on using the changeset viewer.