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.

Reply via email to