Go to the first, previous, next, last section, table of contents.

## 有限体の表現および演算

Asir においては, 有限体は, 正標数素体 GF(p), 標数 2 の有限体 GF(2^n) が定義できる. これらは全て, `setmod_ff()` により定義される.

    [0] P=pari(nextprime,2^50);
    1125899906842679
    [1] setmod_ff(P);
    1125899906842679
    [2] field_type_ff();
    1
    [3] load("fff");
    1
    [4] F=defpoly_mod2(50);
    x^50+x^4+x^3+x^2+1
    [5] setmod_ff(F);
    x^50+x^4+x^3+x^2+1
    [6] field_type_ff();
    2

`setmod_ff()` は, 引数が正整数 p の場合 GF(p), n 次多項式 f(x) の場 合, f(x) mod 2 を定義多項式とする GF(2^n) をそれぞれ基礎体としてセットす る. `setmod_ff()` においては引数の既約チェックは行わず, 呼び出し側 が責任を持つ.

基礎体とは, あくまで有限体の元として宣言あるいは定義されたオブジェクトが, セットされた基礎体の演算に従うという意味である. 即ち, 有理数どうしの演算 の結果は有理数となる. 但し, 四則演算において一方のオペランドが有限体の元 の場合には, 他の元も自動的に同じ有限体の元と見なされ, 演算結果も同様にな る.

0 でない有限体の元は, 数オブジェクトであり, 識別子の値は 1 である. さらに, 0 でない有限体の元の数識別子は, GF(p) の場合 6, GF(2^n) の場合 7 となる.

有限体の元の入力方法は, 有限体の種類により様々である. GF(p) の場合, `simp_ff()` による.

    [0] P=pari(nextprime,2^50);
    1125899906842679
    [1] setmod_ff(P);
    1125899906842679
    [2] A=simp_ff(2^100);
    3025
    [3] ntype(@@);
    6

また, GF(2^n) の場合いくつかの方法がある.

    [0] setmod_ff(x^50+x^4+x^3+x^2+1);
    x^50+x^4+x^3+x^2+1
    [1] A=@;
    (@)
    [2] ptogf2n(x^50+1);
    (@^50+1)
    [3] simp_ff(@@);
    (@^4+@^3+@^2)
    [4] ntogf2n(2^10-1);
    (@^9+@^8+@^7+@^6+@^5+@^4+@^3+@^2+@+1)

有限体の元は数であり, 体演算が可能である. `@` は GF(2^n) の, GF(2)上の生成元である. 詳しくは See section 数の型.

Go to the first, previous, next, last section, table of contents.