Changeset e8c8d5 in git
- Timestamp:
- Aug 3, 2011, 3:36:35 PM (12 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'a800fe4b3e9d37a38c5a10cc0ae9dfa0c15a4ee6')
- 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
- Location:
- libpolys/coeffs
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
libpolys/coeffs/coeffs.h
r0e76359 re8c8d5 159 159 number (*cfGcd)(number a, number b, const coeffs r); 160 160 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); 161 163 void (*cfDelete)(number * a, const coeffs r); 162 164 nMapFunc (*cfSetMap)(const coeffs src, const coeffs dst); … … 557 559 } 558 560 561 static 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 568 static 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 559 575 /// returns TRUE, if r is not a field and r has non-trivial units 560 576 static inline BOOLEAN nCoeff_has_Units(const coeffs r) -
libpolys/coeffs/longrat.cc
r0e76359 re8c8d5 2546 2546 } 2547 2547 2548 number 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 2548 2580 BOOLEAN nlInitChar(coeffs r, void*) 2549 2581 { … … 2566 2598 r->cfSize = nlSize; 2567 2599 r->cfInt = nlInt; 2600 r->cfChineseRemainder=nlChineseRemainder; 2601 r->cfFarey=nlFarey; 2568 2602 #ifdef HAVE_RINGS 2569 2603 //r->cfDivComp = NULL; // only for ring stuff -
libpolys/coeffs/longrat.h
r0e76359 re8c8d5 88 88 number nlGetNumerator(number &n, const coeffs r); 89 89 void nlCoeffWrite(const coeffs r); 90 number nlChineseRemainder(number *x, number *q,int rl, const coeffs C); 91 number nlFarey(number nN, number nP, const coeffs CF); 90 92 #ifdef LDEBUG 91 93 BOOLEAN nlDBTest(number a, const char *f, const int l); … … 109 111 LINLINE void nlInpMult(number &a, number b, const coeffs r); 110 112 111 number nlFarey(number nP, number nN);112 113 113 #ifdef LDEBUG 114 114 #define nlTest(a, r) nlDBTest(a,__FILE__,__LINE__, r) -
libpolys/coeffs/numbers.cc
r0e76359 re8c8d5 117 117 number nd_Copy(number a, const coeffs r) { return n_Copy(a, r); } 118 118 119 number ndChineseRemainder(number *,number *,int,const coeffs r){ return n_Init(0,r); } 119 120 #ifdef HAVE_RINGS 120 121 BOOLEAN ndDivBy(number, number, const coeffs) { return TRUE; } // assume a,b !=0 … … 216 217 //n->cfKillChar = ndKillChar; /* dummy */ 217 218 // temp. removed to catch all the coeffs which miss to implement this! 219 220 n->cfChineseRemainder = ndChineseRemainder; 221 n->cfFarey = ndGcd; 218 222 219 223 #ifdef HAVE_RINGS
Note: See TracChangeset
for help on using the changeset viewer.