First time here? Check out the FAQ!

Ask Your Question
1

IntegerModRing representation

asked 14 years ago

czsan gravatar image

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

Preview: (hide)

4 Answers

Sort by » oldest newest most voted
2

answered 14 years ago

lftabera gravatar image

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
Preview: (hide)
link

Comments

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

czsan gravatar imageczsan ( 14 years ago )

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

czsan gravatar imageczsan ( 14 years ago )
1

answered 0 years ago

yx7 gravatar image

Nowadays, the IntegerMod_abstract class has a .lift_centered() method to compute the "symmetric" or "centered" representative for a given residue class:

sage: [x.lift_centered() for x in Zmod(10)]
[0, 1, 2, 3, 4, 5, -4, -3, -2, -1]
Preview: (hide)
link
1

answered 11 years ago

czsan gravatar image

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.

Preview: (hide)
link

Comments

This is true, if the polynomialring is multivariate

czsan gravatar imageczsan ( 11 years ago )

and only if the modulus is prime?

czsan gravatar imageczsan ( 11 years ago )

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

slelievre gravatar imageslelievre ( 6 years ago )
0

answered 14 years ago

niles gravatar image

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?

Preview: (hide)
link

Comments

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

czsan gravatar imageczsan ( 14 years ago )

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.

czsan gravatar imageczsan ( 14 years ago )

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

niles gravatar imageniles ( 14 years ago )

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 14 years ago

Seen: 2,960 times

Last updated: Jan 07