Changeset e8c8d5 in git


Ignore:
Timestamp:
Aug 3, 2011, 3:36:35 PM (13 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', '2a584933abf2a2d3082034c7586d38bb6de1a30a')
Children:
b5f544427b2626e94250fa8d9944827cf7cea369
Parents:
0e7635908ba5356fa51c0a4755ec1eae88a9b328
git-author:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2011-08-03 15:36:35+02:00
git-committer:
Mohamed Barakat <mohamed.barakat@rwth-aachen.de>2011-11-09 13:14:15+01:00
Message:
n_Farey, n_ChineseRemainder -> coeffs.h
Location:
libpolys/coeffs
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • libpolys/coeffs/coeffs.h

    r0e76359 re8c8d5  
    159159   number  (*cfGcd)(number a, number b, const coeffs r);
    160160   number  (*cfLcm)(number a, number b, const coeffs r);
     161   number  (*cfChineseRemainder)(number *a, number *b, int rl, const coeffs r);
     162   number  (*cfFarey)(number a, number b, const coeffs r);
    161163   void    (*cfDelete)(number * a, const coeffs r);
    162164   nMapFunc (*cfSetMap)(const coeffs src, const coeffs dst);
     
    557559}
    558560
     561static inline number n_ChineseRemainder(number *a, number *b, int rl, const coeffs r)
     562{
     563  assume(r != NULL);
     564  assume(getCoeffType(r)==n_Q);
     565  return r->cfChineseRemainder(a,b,rl,r);
     566}
     567
     568static inline number n_farey(number a, number b, const coeffs r)
     569{
     570  assume(r != NULL);
     571  assume(getCoeffType(r)==n_Q);
     572  return r->cfFarey(a,b,r);
     573}
     574
    559575/// returns TRUE, if r is not a field and r has non-trivial units
    560576static inline BOOLEAN nCoeff_has_Units(const coeffs r)
  • libpolys/coeffs/longrat.cc

    r0e76359 re8c8d5  
    25462546}
    25472547
     2548number   nlChineseRemainder(number *x, number *q,int rl, const coeffs C)
     2549// elemenst in the array are x[0..(rl-1)], q[0..(rl-1)]
     2550{
     2551#ifdef HAVE_FACTORY
     2552  setCharacteristic( 0 ); // only in char 0
     2553  CFArray X(rl), Q(rl);
     2554  int i;
     2555  for(i=rl-1;i>=0;i--)
     2556  {
     2557    X[i]=C->convSingNFactoryN(x[i],FALSE,C); // may be larger MAX_INT
     2558    Q[i]=C->convSingNFactoryN(q[i],FALSE,C); // may be larger MAX_INT
     2559  }
     2560  CanonicalForm xnew,qnew;
     2561  chineseRemainder(X,Q,xnew,qnew);
     2562  number n=C->convFactoryNSingN(xnew,C);
     2563  number p=C->convFactoryNSingN(qnew,C);
     2564  number p2=nlIntDiv(p,nlInit(2, C),C);
     2565  if (nlGreater(n,p2,C))
     2566  {
     2567     number n2=nlSub(n,p,C);
     2568     nlDelete(&n,C);
     2569     n=n2;
     2570  }
     2571  nlDelete(&p,C);
     2572  nlDelete(&p2,C);
     2573  return n;
     2574#else
     2575  WerrorS("not implemented");
     2576  return nlInit(0);
     2577#endif
     2578}
     2579
    25482580BOOLEAN nlInitChar(coeffs r, void*)
    25492581{
     
    25662598  r->cfSize  = nlSize;
    25672599  r->cfInt  = nlInt;
     2600  r->cfChineseRemainder=nlChineseRemainder;
     2601  r->cfFarey=nlFarey;
    25682602  #ifdef HAVE_RINGS
    25692603  //r->cfDivComp = NULL; // only for ring stuff
  • libpolys/coeffs/longrat.h

    r0e76359 re8c8d5  
    8888number   nlGetNumerator(number &n, const coeffs r);
    8989void     nlCoeffWrite(const coeffs r);
     90number   nlChineseRemainder(number *x, number *q,int rl, const coeffs C);
     91number   nlFarey(number nN, number nP, const coeffs CF);
    9092#ifdef LDEBUG
    9193BOOLEAN  nlDBTest(number a, const char *f, const int l);
     
    109111LINLINE void nlInpMult(number &a, number b, const coeffs r);
    110112
    111 number nlFarey(number nP, number nN);
    112 
    113113#ifdef LDEBUG
    114114#define nlTest(a, r) nlDBTest(a,__FILE__,__LINE__, r)
  • libpolys/coeffs/numbers.cc

    r0e76359 re8c8d5  
    117117number nd_Copy(number a, const coeffs r) { return n_Copy(a, r); }
    118118
     119number ndChineseRemainder(number *,number *,int,const coeffs r){ return n_Init(0,r); }
    119120#ifdef HAVE_RINGS
    120121BOOLEAN ndDivBy(number, number, const coeffs) { return TRUE; } // assume a,b !=0
     
    216217    //n->cfKillChar = ndKillChar; /* dummy */
    217218    // temp. removed to catch all the coeffs which miss to implement this!
     219
     220    n->cfChineseRemainder = ndChineseRemainder;
     221    n->cfFarey = ndGcd;
    218222
    219223#ifdef HAVE_RINGS
Note: See TracChangeset for help on using the changeset viewer.