I'm see that substitution is very slow in SAGE for many many. Is there any way to get best perfomance to substitution? thanks
2014-08-22 7:42 GMT-03:00 Juan Grados <[email protected]>: > I'm wrote a method to get the symbolic coefficients of polynomial p \in > GF(2^pp)[X0,...,X_{nvars-1}] translate to GF(2). The method was wrotte > using companion matrix [1] of irreducible polynomial GF(2^pp). For example > for pp = 2. The polynomial p = X0*X1 = (x_00+x_01*t)*(x_10+x_11*t) = > (x_00*x_10+x_01*x_11) + (x_01*x_11+x_01*x_10 + x_00*x_11)*t then the > method get [(x_00*x_10+x_01*x_11),(x_01*x_11+x_01*x_10 + x_00*x_11)]. The > method use the matrix of quadratic form p, n below code that variable is > p_matix. My problem is when I want extend the number pp and nvars to values > for example 8 and 8. Then my question is: How I will be able to accelerate > that code? > > p = 2 > n = 4 # num vars > K.<t> = GF(2**p, name='t') > VS = K.vector_space() > vars_GF = [var("X%d"%i) for i in range(n)] > > #variable for formulas: addition and multiplication > vars_gf_X_ = [var("fX_%d"%i) for i in range(p)] > vars_gf_Y_ = [var("fY_%d"%i) for i in range(p)] > vars_gf_Z_ = [var("fZ_%d"%i) for i in range(p)] > > #variables of components of variables vars_GF > vars_gf_X = [[var("x_%d_%d"%(i,k)) for k in range(p)] for i in > range(n)] > > P=PolynomialRing(K,names=vars_GF) > A = companion_matrix(K.modulus()) > sum = 0 > sum1 = 0 > sum2= 0 > for i in range(p): > sum = sum + (A^i)*vars_gf_X_[i] > sum1 = sum1 + (A^i)*vars_gf_Y_[i] > sum2 = sum2 + (A^i)*vars_gf_Z_[i] > > #calculate formula to adtion and multiplication with the components of > the vector space GF(2^p) > Msum = sum + sum1 > Mmul = sum*sum1*sum2 > psum0 = (Msum)[0,0] > psum1 = (Msum)[0,1] > pmul0 = (Mmul)[0,0] > pmul1 = (Mmul)[0,1] > > p_matrix = random_matrix(K,n,n) > #saving the element 0,0 of matrix > s0 = > pmul0(VS(p_matrix[0,0])[0],VS(p_matrix[0,0])[1],vars_gf_X[0][0],vars_gf_X[0][1],vars_gf_X[0][0],vars_gf_X[0][1]) > s1 = > pmul1(VS(p_matrix[0,0])[0],VS(p_matrix[0,0])[1],vars_gf_X[0][0],vars_gf_X[0][1],vars_gf_X[0][0],vars_gf_X[0][1]) > #sum of each monomial > for i in range(n): > for j in range(i+1): > if i != 0 or j !=0: > s0 = > psum0(s0,pmul0(VS(p_matrix[i,j])[0],VS(p_matrix[i,j])[1],vars_gf_X[i][0],vars_gf_X[i][1],vars_gf_X[j][0],vars_gf_X[j][1])) > s1 = > psum1(s1,pmul1(VS(p_matrix[i,j])[0],VS(p_matrix[i,j])[1],vars_gf_X[i][0],vars_gf_X[i][1],vars_gf_X[j][0],vars_gf_X[j][1])) > print s0 > print s1 > > > [1]: http://www.gregorybard.com/papers/extension_fields.pdf > > -- > --------------------------------------------------------------------- > MSc. Juan del Carmen Grados Vásquez > Laboratório Nacional de Computação Científica > Tel: +55 21 97633 3228 > (http://www.lncc.br/) > http://juaninf.blogspot.com > --------------------------------------------------------------------- > -- --------------------------------------------------------------------- MSc. Juan del Carmen Grados Vásquez Laboratório Nacional de Computação Científica Tel: +55 21 97633 3228 (http://www.lncc.br/) http://juaninf.blogspot.com --------------------------------------------------------------------- -- You received this message because you are subscribed to the Google Groups "sage-support" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sage-support. For more options, visit https://groups.google.com/d/optout.
