Changeset 86b7c4d in git
- Timestamp:
- Aug 26, 2014, 11:13:43 AM (9 years ago)
- Branches:
- (u'spielwiese', '91e5db82acc17434e4062bcfa44e6efa7d41fd30')
- Children:
- 8c5f4b2e320efaafe00bfaf0910c580fa48ffc9d
- Parents:
- 53ccafa3ab03b28186039eb3c8d1c68ee7f8a5db
- git-author:
- Martin Lee <martinlee84@web.de>2014-08-26 11:13:43+02:00
- git-committer:
- Martin Lee <martinlee84@web.de>2014-08-26 12:29:11+02:00
- Location:
- factory
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/facMul.cc
r53ccafa r86b7c4d 5 5 * 6 6 * This file implements functions for fast multiplication and division with 7 * remainder 7 * remainder. 8 * 9 * Nomenclature rules: kronSub* -> plain Kronecker substitution 10 * reverseSubst* -> reverse Kronecker substitution 11 * kronSubRecipro* -> reciprocal Kronecker substitution as 12 * described in D. Harvey "Faster 13 * polynomial multiplication via 14 * multipoint Kronecker substitution" 8 15 * 9 16 * @author Martin Lee … … 33 40 34 41 #ifdef HAVE_FLINT 35 void kronSub (fmpz_poly_t result, const CanonicalForm& A, int d)42 void kronSubQa (fmpz_poly_t result, const CanonicalForm& A, int d) 36 43 { 37 44 int degAy= degree (A); … … 106 113 107 114 fmpz_poly_t FLINTA,FLINTB; 108 kronSub (FLINTA, A, d);109 kronSub (FLINTB, B, d);115 kronSubQa (FLINTA, A, d); 116 kronSubQa (FLINTB, B, d); 110 117 111 118 fmpz_poly_mul (FLINTA, FLINTA, FLINTB); … … 214 221 215 222 fmpz_poly_t FLINTA,FLINTB; 216 kronSub (FLINTA, A, d);217 kronSub (FLINTB, B, d);223 kronSubQa (FLINTA, A, d); 224 kronSubQa (FLINTB, B, d); 218 225 219 226 int k= d*m; … … 2146 2153 2147 2154 fmpz_poly_t FLINTA, FLINTB; 2148 kronSub (FLINTA, A, d1);2149 kronSub (FLINTB, B, d1);2155 kronSubQa (FLINTA, A, d1); 2156 kronSubQa (FLINTB, B, d1); 2150 2157 int k= d1*degree (M); 2151 2158 -
factory/facMul.h
r53ccafa r86b7c4d 19 19 20 20 #ifdef HAVE_NTL 21 /// multiplication of univariate polys over a finite field using NTL, if we are 22 /// in GF factory's default multiplication is used. 21 /// multiplication of univariate polys using FLINT/NTL over F_p, F_q, Z/p^k, 22 /// Z/p^k[t]/(f), Z, Q, Q(a), if we are in GF factory's default multiplication 23 /// is used. If @a b!= 0 and getCharacteristic() == 0 the input will be 24 /// considered as elements over Z/p^k or Z/p^k[t]/(f). 23 25 /// 24 26 /// @return @a mulNTL returns F*G … … 29 31 ); 30 32 31 /// mod of univariate polys over a finite field using NTL, if we are 32 /// in GF factory's default mod is used. 33 /// mod of univariate polys using FLINT/NTL over F_p, F_q, Z/p^k, 34 /// Z/p^k[t]/(f), Z, Q, Q(a), if we are in GF factory's default multiplication 35 /// is used. If @a b!= 0 and getCharacteristic() == 0 the input will be 36 /// considered as elements over Z/p^k or Z/p^k[t]/(f); in this case invertiblity 37 /// of Lc(G) is not checked 33 38 /// 34 39 /// @return @a modNTL returns F mod G … … 39 44 ); 40 45 41 /// division of univariate polys over a finite field using NTL, if we are 42 /// in GF factory's default division is used. 46 /// division of univariate polys using FLINT/NTL over F_p, F_q, Z/p^k, 47 /// Z/p^k[t]/(f), Z, Q, Q(a), if we are in GF factory's default multiplication 48 /// is used. If @a b!= 0 and getCharacteristic() == 0 the input will be 49 /// considered as elements over Z/p^k or Z/p^k[t]/(f); in this case invertiblity 50 /// of Lc(G) is not checked 43 51 /// 44 52 /// @return @a divNTL returns F/G … … 49 57 ); 50 58 51 /// division with remainder of @a F by 52 /// @a G wrt Variable (1) modulo @a M.59 /// division with remainder of @a F by @a G wrt Variable (1) modulo @a M. 60 /// Uses an algorithm based on Burnikel, Ziegler "Fast recursive division". 53 61 /// 54 62 /// @return @a Q returns the dividend, @a R returns the remainder. … … 62 70 ); 63 71 64 /// division with remainder of @a F by 65 /// @a G wrt Variable (1) modulo @a MOD.72 /// division with remainder of @a F by @a G wrt Variable (1) modulo @a MOD. 73 /// Uses an algorithm based on Burnikel, Ziegler "Fast recursive division". 66 74 /// 67 75 /// @sa divrem2()
Note: See TracChangeset
for help on using the changeset viewer.