Without going into detail, this is due to the fact that the polynomials have another presentation

over Galoisfields and different algorithms / implementations are involved. Also factorize is not at

your disposal.

Note that in general

f/g only gives the quotient without remainder. Most likely that is not what

you want, but you are not lost here.

There is the command

division http://www.singular.uni-kl.de/Manual/latest/sing_226.htm#SEC266which performs the task. It is important to use a global odering

dp as you do.

**Code:**

factorize(f);

? not implemented

? error occurred in or before STDIN line 6: `factorize(f);`

> list L = division(f,g);

> L;

[1]:

_[1,1]=x-1

[2]:

_[1]=a16

[3]:

_[1,1]=1

> typeof(L[1]);

matrix

> typeof(L[1][1,1]);

poly

> typeof(L[2]);

ideal

> f==g*L[1][1,1] + L[2][1];

1

> (x-1)*(x+1) + 2;

x2+1

> a16;

a16

> number(2);

a16

(The third value

L[3] is a unit matrix in global ordering, but the result is different

if you would work in

ring rads = (49a,),x,ds;Try it!)

You may also define this finite field as an quadratic extension of Z_7 by the

minimal polynomial displayed from the ring itself.

**Code:**

> setring r;

> basering;

// coefficients: ZZ/49[a]

// minpoly : 1*a^2+6*a^1+3*a^0

// number of vars : 1

// block 1 : ordering dp

// : names x

// block 2 : ordering C

With this approach, the elements are not represented as a power of the primitive

element

a, but now f/g and factorize work.

**Code:**

> ring ra49 = (7,a),x,dp; minpoly = a2+6a+3;

// compare with above

> a16;

2

> number(2);

2

> poly f = x2+1;

> poly g = x+1;

> f/g;

x-1

> factorize (f);

[1]:

_[1]=1

_[2]=x+(-a-3)

_[3]=x+(a+3)

[2]:

1,1,1

> division(f,g);

[1]:

_[1,1]=x-1

[2]:

_[1]=2

[3]:

_[1,1]=1

> f == (x-1)*g +2;

1