user46060
user46060

Reputation: 123

Get vector space coordinates from symbolic polynomial

I'm trying to get the vector coordinates from the polynomial p in the follow code assuming that x,y and z belong to GF(2) but I get error

TypeError: can't initialize vector from nonzero non-list.

How I will be able to fix that?

reset()
var("x")
var("y")
var("z")
pp = 2
k.<t>=GF(2^pp)
VS = k.vector_space()
p = z*x*t^2 + t*y + 1
print VS.coordinates(p)

Upvotes: 2

Views: 175

Answers (1)

S.B.
S.B.

Reputation: 165

Maybe you can use the coefficient list of the polynomial as its vectoral coordinates, and then you may convert this list to a vector. But in that case, it is better to define GF(2^2) as GF(4,'a')={0,1,a,a+1}.

For example you may do something like this:

sage
K = GF(4,'a')
R = PolynomialRing(GF(4,'a'),"x")
x = R.gen()
a = K.gen()
p = (a+1)*x^3 + x^2 + a
p.list()

If you need to fix the dimension n to a bigger value than the degree of p, then you may do the following;

n = 6
L = p.list(); l=len(L); i = n-l; L_ = [0]*i; L.extend(L_)
L

gives you the 6-dimensional coordinates of p. If you need to use this coefficient list as a vector afterwards, you may just use vector(L) instead of L.

Upvotes: 1

Related Questions