0

私はセージで次のことをしています:

セージ: Zp = Zmod(101)
セージ: Zp(5)
5
セージ: Zp(-1)
100
セージ:Zp(100)
100

-1 = 100 mod 101 であることは理解していますが、sage が両方のインスタンスで 100 ではなく -1 を出力するようにしたいと考えています。

より一般的には、Zmod(p) で作業する場合、出力が間隔 (-p/2, p/2] 内にあることを望みます。

4

1 に答える 1

2

IntegerMod_int は速度向上のために Cython に実装されているため、実行時にこの動作を変更することはできません。必要な機能を取得する最も簡単な方法は、sage/rings/finite_rings/integer_mod.pyx の 1462 行目 (少なくとも、5.0-beta12 の行番号) で定義されているrepr関数を変更することです。次のようなものに置き換えます

def _repr_(self):
    x = self.lift()
    modulus = self.parent().modulus()
    if x <= modulus // 2:
        return str(x)
    else:
        return str(x-modulus)
于 2012-05-17T16:56:25.797 に答える