
|
Go to the first, previous, next, last section, table of contents.
- sdiv(poly1,poly2[,v])
-
- sdivm(poly1,poly2,mod[,v])
-
:: poly1 を poly2 で割る除算が最後まで実行できる場合に商を求める.
- srem(poly1,poly2[,v])
-
- sremm(poly1,poly2,mod[,v])
-
:: poly1 を poly2 で割る除算が最後まで実行できる場合に剰余を求める.
- sqr(poly1,poly2[,v])
-
- sqrm(poly1,poly2,mod[,v])
-
:: poly1 を poly2 で割る除算が最後まで実行できる場合に商, 剰余を
求める.
- return
-
sdiv() , sdivm() , srem() , sremm() : 多項式, sqr() , sqrm() : [商,剰余] なるリスト
- poly1 poly2
-
多項式
- v
-
不定元
- mod
-
素数
-
poly1 を poly2 の主変数 var(poly2)
( 引数 v がある場合には v) に関する多項式と見て,
poly2 で, 割り算を行う.
-
sdivm() , sremm() , sqrm() は GF(mod) 上で計算する.
-
多項式の除算は, 主係数どうしの割算により得られた商と, 主変数の適当な冪の
積を poly2 に掛けて, poly1 から引くという操作を
poly1 の次数が poly2 の次数より小さくなるまで繰り返して
行う. この操作が, 多項式の範囲内で行われるためには, 各ステップにおいて
主係数どうしの除算が, 多項式としての整除である必要がある. これが, 「除算
が最後まで実行できる」ことの意味である.
-
典型的な場合として, poly2 の主係数が, 有理数である場合, あるいは,
poly2 が poly1 の因子であることがわかっている場合など
がある.
-
sqr() は商と剰余を同時に求めたい時に用いる.
-
整数除算の商, 剰余は
idiv , irem を用いる.
-
係数に対する剰余演算は
% を用いる.
[0] sdiv((x+y+z)^3,x^2+y+a);
x+3*y+3*z
[1] srem((x+y+z)^2,x^2+y+a);
(2*y+2*z)*x+y^2+(2*z-1)*y+z^2-a
[2] X=(x+y+z)*(x-y-z)^2;
x^3+(-y-z)*x^2+(-y^2-2*z*y-z^2)*x+y^3+3*z*y^2+3*z^2*y+z^3
[3] Y=(x+y+z)^2*(x-y-z);
x^3+(y+z)*x^2+(-y^2-2*z*y-z^2)*x-y^3-3*z*y^2-3*z^2*y-z^3
[4] G=gcd(X,Y);
x^2-y^2-2*z*y-z^2
[5] sqr(X,G);
[x-y-z,0]
[6] sqr(Y,G);
[x+y+z,0]
[7] sdiv(y*x^3+x+1,y*x+1);
divsp: cannot happen
return to toplevel
- 参照
-
section
idiv , irem , section % .
Go to the first, previous, next, last section, table of contents.
|