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.41421356237309504880168872420969807856967187537694807317654396116148
eval() は, 引数に含まれる函数値を可能な限り数値化する函数である. setprec() で指定された桁数は, 結果の精度を保証するものではなく, PARI 内部で用いられる表現のサイズを示すことに注意すべきである. (section eval, deval, See 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 の元を入力するいくつかの方法が用意されている.

大標数素体の標数, 標数 2 の有限体の定義多項式は, setmod_ff で設定する. 有限体の元どうしの演算では, setmod_ff により設定されている modulus で, 属する体が分かり, その中で演算が行われる. 一方が有理数の場合には, その有理数は自動的に現在設定されている 有限体の元に変換され, 演算が行われる.


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