# Trouble defining polynomial ring over Gaussian integers

Hello,

I would like to define a polynomial ring over ZZ[I], e.g. like this:

sage: R.<x> = PolynomialRing(ZZ[I])


If I run this on sage 9.4 I get the following:

 sage: R
Univariate Polynomial Ring in x over Order in Number Field in I0 with defining polynomial x^2 + 1 with I0 = 1*I


If I now try to define a polynomial with complex coefficients I get:

sage: f = I*x
TypeError: unsupported operand parent(s) for *: 'Number Field in I with defining polynomial x^2 + 1 with I = 1*I' and 'Univariate Polynomial Ring in x over Order in Number Field in I0 with defining polynomial x^2 + 1 with I0 = 1*I'


On SageMath version 9.0 I do not get the same error. Instead it says:

sage: R
Univariate Polynomial Ring in x over Order in Number Field in I with defining polynomial x^2 + 1 with I = 1*I


and i have no issues defining f = I*x. How do I resolve this issue in SageMath version 9.4?

Edit: I have done some further investigation, and the problem lies with this I0 in

sage: ZZ[I]
Order in Number Field in I0 with defining polynomial x^2 + 1 with I0 = 1*I


What is the difference between I0 and I and how do I work with it? Simply typing f = I0 * x also results in an error. Is this maybe a bug in SageMath 9.4? Does the same happen in SageMath 9.5?

edit retag close merge delete

Sort by » oldest newest most voted

Carefully define all variables and rings:

sage: A = GaussianIntegers()
sage: I = A.gen(1)
sage: R = PolynomialRing(A,'x')
sage: x = R.gen()
sage: I*x
I*x

more