template<class RatCRABase>
struct LinBox::RationalChineseRemainder< RatCRABase >
Chinese remainder of rationals.
Compute the reconstruction of rational numbers Either by Early Termination see [Dumas, Saunder, Villard, JSC 32 (1/2), pp 71-99, 2001], Or via a bound on the size of the integers.
template<class RatCRABase>
template<class Function, class RandPrimeIterator>
| Integer & operator() |
( |
Integer & | num, |
|
|
Integer & | den, |
|
|
Function & | Iteration, |
|
|
RandPrimeIterator & | genprime ) |
|
inline |
The Rational CRA loop.
Given a function to generate residues mod a single prime, this loop produces the residues resulting from the Chinese remainder process on sufficiently many primes to meet the termination condition.
- Parameters
-
| Iteration | Function object of two arguments, Iteration(r, p), given prime p it outputs residue(s) r. This loop may be parallelized. Iteration must be reentrant, thread safe. For example, Iteration may be returning the coefficients of the minimal polynomial of a matrix mod p. |
- Warning
- we won't detect bad primes.
- Parameters
-
| genprime | RandIter object for generating primes. |
| [out] | num | the rational numerator |
| [out] | den | the rational denominator |