- Timestamp:
- Oct 14, 2020, 10:51:16 PM (3 years ago)
- Branches:
- (u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
- Children:
- b7566c040bb4dee9a542a5848fa7e26d4c5b2d76
- Parents:
- 608ba440d855427b06a81f15d70157aee3a835d2
- Location:
- factory
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/cf_algorithm.h
r608ba4 r2ed1c7 55 55 void chineseRemainder ( const CFArray & x, const CFArray & q, CanonicalForm & xnew, CanonicalForm & qnew ); 56 56 57 void chineseRemainderCached(CFArray &a, CFArray &n, CanonicalForm &xnew, CanonicalForm &prod, CFArray &inv); 57 void chineseRemainderCached ( const CanonicalForm & x1, const CanonicalForm & q1, const CanonicalForm & x2, const CanonicalForm & q2, CanonicalForm & xnew, CanonicalForm & qnew, CFArray &inv ); 58 void chineseRemainderCached(const CFArray &a, const CFArray &n, CanonicalForm &xnew, CanonicalForm &prod, CFArray &inv); 58 59 59 60 -
factory/cf_chinese.cc
r608ba4 r2ed1c7 274 274 275 275 // returns x where (a * x) % b == 1, inv is a cache 276 static inline CanonicalForm chin_mul_inv( CanonicalForm a,CanonicalForm b, int ind, CFArray &inv)276 static inline CanonicalForm chin_mul_inv(const CanonicalForm a, const CanonicalForm b, int ind, CFArray &inv) 277 277 { 278 278 if (inv[ind].isZero()) … … 288 288 289 289 void out_cf(const char *s1,const CanonicalForm &f,const char *s2); 290 void chineseRemainderCached( CFArray &a,CFArray &n, CanonicalForm &xnew, CanonicalForm &prod, CFArray &inv)290 void chineseRemainderCached(const CFArray &a, const CFArray &n, CanonicalForm &xnew, CanonicalForm &prod, CFArray &inv) 291 291 { 292 292 CanonicalForm p, sum=0L; prod=1L; … … 306 306 // http://rosettacode.org/wiki/Chinese_remainder_theorem#C 307 307 308 void chineseRemainderCached ( const CanonicalForm & a, const CanonicalForm &q1, const CanonicalForm & b, const CanonicalForm & q2, CanonicalForm & xnew, CanonicalForm & qnew,CFArray &inv ) 309 { 310 qnew=q1*q2; 311 CanonicalForm sum=a * chin_mul_inv(q2,q1,0,inv); 312 sum+=b * chin_mul_inv(q1,q2,1,inv); 313 xnew = mod(sum , qnew); 314 }
Note: See TracChangeset
for help on using the changeset viewer.