Отрицательные числа в Zmod? - PullRequest
0 голосов
/ 22 марта 2012

Я делаю следующее в мудреце:

sage: Zp = Zmod(101)
sage: Zp(5)
5
sage: Zp(-1)
100
sage: Zp(100)
100

Я понимаю, что -1 = 100 мод 101, но я бы хотел, чтобы sage вывел -1 вместо 100 в обоих случаях.

В более общем смысле, при работе в Zmod (p) я бы хотел, чтобы выходные данные находились в интервале (-p / 2, p / 2].

1 Ответ

2 голосов
/ 17 мая 2012

Так как IntegerMod_int реализован в Cython для скорости, вы не можете изменить это поведение во время выполнения.Самый простой способ получить нужную вам функцию - изменить функцию repr , определенную в sage / rings / finite_rings / integer_mod.pyx, строка 1462 (по крайней мере, это номер строки в 5.0-beta12).Замените его на что-то вроде

def _repr_(self):
    x = self.lift()
    modulus = self.parent().modulus()
    if x <= modulus // 2:
        return str(x)
    else:
        return str(x-modulus)
...