mat_zz_pE
| 3684 | |
| 3685 | #ifdef HAVE_NTL // mat_zz_pE |
| 3686 | CFList |
| 3687 | increasePrecision (CanonicalForm& F, CFList& factors, int factorsFound, |
| 3688 | int oldNumCols, int oldL, const Variable&, |
| 3689 | int precision, const CanonicalForm& eval |
| 3690 | ) |
| 3691 | { |
| 3692 | int d; |
| 3693 | bool isIrreducible= false; |
| 3694 | Variable y= F.mvar(); |
| 3695 | int* bounds= computeBounds (F, d, isIrreducible); |
| 3696 | if (isIrreducible) |
| 3697 | { |
| 3698 | delete [] bounds; |
| 3699 | CanonicalForm G= F; |
| 3700 | F= 1; |
| 3701 | return CFList (G (y-eval,y)); |
| 3702 | } |
| 3703 | CFArray * A= new CFArray [factors.length()]; |
| 3704 | CFArray bufQ= CFArray (factors.length()); |
| 3705 | mat_zz_pE NTLN; |
| 3706 | ident (NTLN, factors.length()); |
| 3707 | int minBound= bounds[0]; |
| 3708 | for (int i= 1; i < d; i++) |
| 3709 | { |
| 3710 | if (bounds[i] != 0) |
| 3711 | minBound= tmin (minBound, bounds[i]); |
| 3712 | } |
| 3713 | int l= tmax (2*(minBound + 1), oldL); |
| 3714 | int oldL2= l/2; |
| 3715 | int stepSize= 2; |
| 3716 | bool useOldQs= false; |
| 3717 | bool hitBound= false; |
| 3718 | CFListIterator j; |
| 3719 | CFMatrix C; |
| 3720 | mat_zz_pE* NTLC, NTLK; |
| 3721 | CFArray buf; |
| 3722 | CanonicalForm truncF; |
| 3723 | while (l <= precision) |
| 3724 | { |
| 3725 | j= factors; |
| 3726 | truncF= mod (F, power (y,l)); |
| 3727 | if (useOldQs) |
| 3728 | { |
| 3729 | for (int i= 0; i < factors.length(); i++, j++) |
| 3730 | A[i]= logarithmicDerivative (truncF, j.getItem(), l, oldL2, bufQ[i], |
| 3731 | bufQ[i] |
| 3732 | ); |
| 3733 | } |
| 3734 | else |
| 3735 | { |
| 3736 | for (int i= 0; i < factors.length(); i++, j++) |
| 3737 | A[i]= logarithmicDerivative (truncF, j.getItem(), l, bufQ [i]); |
| 3738 | } |
| 3739 | useOldQs= true; |
| 3740 | for (int i= 0; i < d; i++) |
| 3741 | { |
| 3742 | if (bounds [i] + 1 <= l/2) |
| 3743 | { |
no test coverage detected