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

## 数の型

`0`
  有理数
  有理数は, 任意多倍長整数 (bignum) により実現されている. 有理数は常に 既約分数で表現される.
`1`
  倍精度浮動小数
  マシンの提供する倍精度浮動小数である. Asir の起動時には, 通常の形式で入力された浮動小数はこの型に変換される. ただし, `ctrl()` により bigfloat が選択されている場合には bigfloat に変換される.

      [0] 1.2;
      1.2
      [1] 1.2e-1000;
      0
      [2] ctrl("bigfloat",1);
      1
      [3] 1.2e-1000;
      1.20000000000000000513 E-1000

  倍精度浮動小数と有理数の演算は, 有理数が浮動小数に変換されて, 浮動小数として演算される.
`2`
  代数的数
  See section 代数的数に関する演算.
`3`
  bigfloat
  bigfloat は, Asir では PARI ライブラリにより 実現されている. PARI においては, bigfloat は, 仮数部 のみ任意多倍長で, 指数部は 1 ワード以内の整数に限られている. `ctrl()` で bigfloat を選択することにより, 以後の浮動小数 の入力は bigfloat として扱われる. 精度はデフォルトでは 10 進 9 桁程度であるが, `setprec()` により指定可能である.

      [0] ctrl("bigfloat",1);
      1
      [1] eval(2^(1/2));
      1.414213562373095048763788073031
      [2] setprec(100);
      9
      [3] eval(2^(1/2));
      1.41421356237309504880168872420969807856967187537694807317...

  `eval()` は, 引数に含まれる函数値を可能な限り数値化する函数である. `setprec()` で指定された桁数は, 結果の精度を保証するものではなく, PARI 内部で用いられる表現のサイズを示すことに注意すべきである. (See section `eval`, `deval`, section `pari`.)
`4`
  複素数
  複素数は, 有理数, 倍精度浮動小数, bigfloat を実部, 虚部として `a+b*@i` (@i は虚数単位) として与えられる数である. 実部, 虚部は それぞれ `real()`, `imag()` で取り出せる.
`5`
  小標数の有限素体の元
  ここで言う小標数とは, 標数が 2^27 未満のもののことである. このような有限 体は, 現在のところグレブナ基底計算において内部的に用いられ, 有限体係数の 分散表現多項式の係数を取り出すことで得られる. それ自身は属する有限体に関 する情報は持たず, `setmod()` で設定されている素数 p を用いて GF(p) 上での演算が適用される.
`6`
  大標数の有限素体の元
  標数として任意の素数がとれる. この型の数は, 整数に対し`simp_ff` を適用することにより得られる.
`7`
  標数 2 の有限体の元
  標数 2 の任意の有限体の元を表現する. 標数 2 の有限体 F は, 拡大次数 [F:GF(2)] を n とすれば, GF(2) 上既約な n 次多項式 f(t) により F=GF(2)[t]/(f(t)) とあらわされる. さらに, GF(2)[t] の元 g は, f(t) も含めて自然な仕方でビット列とみなされるため, 形式上は, F の元 g mod f は, g, f をあらわす 2 つのビット列で表現することができる. F の元を入力するいくつかの方法が用意されている.
  - `@`
    `@` はその後ろに数字, 文字を伴って, ヒストリや特殊な数をあらわすが, 単独で現れた場合には, F=GF(2)[t]/(f(t)) における t mod f をあらわす. よって, @ の多項式として F の元を入力できる. (@^10+@+1 など)
  - `ptogf2n`
    任意変数の 1 変数多項式を, `ptogf2n` により対応する F の元に変換する.
  - `ntogf2n`
    任意の自然数を, 自然な仕方で F の元とみなす. 自然数としては, 10 進, 16 進 (0x で始まる), 2 進 (0b で始まる) で入力が可能である.
  - `その他`
    多項式の係数を丸ごと F の元に変換するような場合, `simp_ff` により変換できる.
`8`
  位数 p^n の有限体の元 位数が p^n (p は任意の素数, n は正整数) は, 標数 p および GF(p) 上既約な n 次多項式 m(x) を `setmod_ff` により指定することにより設定する. この体の元は m(x) を法とする GF(p) 上の多項式として 表現される.
`9`
  位数 p^n の有限体の元 (小位数) 位数が p^n の有限体 (p^n が 2^29 以下, p が 2^14 以上 なら n は 1) は, 標数 p および拡大次数 n を `setmod_ff` により指定することにより設定する. この体の 0 でない元は, p が 2^14 未満の場合, GF(p^n) の乗法群の生成元を固定すること により, この元のべきとして表される. これにより, この体の 0 でない元 は, このべき指数として表現される. p が 2^14 以上 の場合は通常の剰余による表現となるが, 共通のプログラムで 双方の場合を扱えるようにこのような仕様となっている.
`10`
  位数 p^n の小位数有限体の代数拡大の元 前項の, 位数が p^n の小位数有限体の m 次拡大の元である. 標数 p および拡大次数 n, m を `setmod_ff` により指定することにより設定する. 基礎体上の m 次既約多項式が自動生成され, その代数拡大の生成元の定義多項式として用いられる. 生成元は `@s` である.
`11`
  分散表現の代数的数
  See section 代数的数に関する演算.

小標数有限素体以外の有限体は `setmod_ff` で設定する. 有限体の元どうしの演算では, 一方が有理数の場合には, その有理数は自動的に現在設定されている 有限体の元に変換され, 演算が行われる.

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