# IntegerModRing representation

How can I generate the elements of IntegerModring(n) in symmetric representation? For example Integers(6) = {0, 1,-1,2, -2, 3}

edit retag close merge delete

Sort by ยป oldest newest most voted

Surprisingly in IntegerModrings Sage uses positive representations, but in polynomialrings over these it uses symmetric representation. So we can make the computations with the residues in the polynomialring.

more

This is true, if the polynomialring is multivariate

( 2013-10-07 01:26:48 -0600 )edit

and only if the modulus is prime?

( 2013-10-07 08:50:57 -0600 )edit

See the file sage/rings/polynomial/multi_polynomial_libsingular.pyx, in particular the comment at the beginning that Singular is used for multipolynomial ring over GF(p) when p is prime, and the _repr_ method at

( 2019-04-18 15:48:53 -0600 )edit

Well, if you want to change the representation of the objects, so when you type Integers(6)(5) it returns -1, I think that it is not implemented in sage.

However, if computing the symmetric representant of an element in Integers(n) can be done with the following code:

I use this function in some multimodular algorithms.

def lift_pm(p):
"""
Compute a representative of the element p mod n in [-n/2 , n/2]

INPUT:

- p an integer mod n

OUTPUT:

- An integer r such that  -n/2 < r <= n/2

EXAMPLES::

sage: p = Mod(2,4)
sage: lift_pm(p)
2
sage: p = Mod(3,4)
sage: lift_pm(p)
-1
"""
r = p.lift()
if r*2 > p.modulus():
r -= p.modulus()
return r

more

Thank you, this is close to my wish. I will use it.

( 2010-11-13 21:16:07 -0600 )edit

The true solution would be like in Maple : mod:=mods

( 2010-11-13 22:20:19 -0600 )edit

You could use Python's list comprehension to make a list of the numbers you want:

sage: N = 5
sage: [(-1)^(n+1)*floor((n+1)/2) for n in range(N)]
[0, 1, -1, 2, -2]
sage: N = 6
sage: [(-1)^(n+1)*floor((n+1)/2) for n in range(N)]
[0, 1, -1, 2, -2, 3]


Is this the kind of thing you were looking for, or something else?

more

Thank you. It's a good idea. I believed that the IntegerModRing have a special option.

( 2010-10-10 11:26:59 -0600 )edit

But it is not teh solition. I think, My question was'nt clear. The positive representation for mod 6 is {1,2,3,4,5,6}. The symmetric representation is {1,2,3,-2,-1}. The problem is'nt that, how can generate this remainder set, but the Integers(6) ring how can use it permanently.

( 2010-10-10 13:04:52 -0600 )edit

oh, sorry, I don't know how to do that.

( 2010-10-11 02:05:33 -0600 )edit