Changeset 86b7c4d in git
 Timestamp:
 Aug 26, 2014, 11:13:43 AM (9 years ago)
 Branches:
 (u'spielwiese', '91e5db82acc17434e4062bcfa44e6efa7d41fd30')
 Children:
 8c5f4b2e320efaafe00bfaf0910c580fa48ffc9d
 Parents:
 53ccafa3ab03b28186039eb3c8d1c68ee7f8a5db
 gitauthor:
 Martin Lee <martinlee84@web.de>20140826 11:13:43+02:00
 gitcommitter:
 Martin Lee <martinlee84@web.de>20140826 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.