Google

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


sdiv, sdivm, srem, sremm, sqr, sqrm

sdiv(poly1,poly2[,v])
sdivm(poly1,poly2,mod[,v])
:: poly1poly2 で割る除算が最後まで実行できる場合に商を求める.
srem(poly1,poly2[,v])
sremm(poly1,poly2,mod[,v])
:: poly1poly2 で割る除算が最後まで実行できる場合に剰余を求める.
sqr(poly1,poly2[,v])
sqrm(poly1,poly2,mod[,v])
:: poly1poly2 で割る除算が最後まで実行できる場合に商, 剰余を 求める.
return
sdiv(), sdivm(), srem(), sremm() : 多項式, sqr(), sqrm() : [商,剰余] なるリスト
poly1 poly2
多項式
v
不定元
mod
素数
  • poly1poly2 の主変数 var(poly2) ( 引数 v がある場合には v) に関する多項式と見て, poly2 で, 割り算を行う.
  • sdivm(), sremm(), sqrm() は GF(mod) 上で計算する.
  • 多項式の除算は, 主係数どうしの割算により得られた商と, 主変数の適当な冪の 積を poly2 に掛けて, poly1 から引くという操作を poly1 の次数が poly2 の次数より小さくなるまで繰り返して 行う. この操作が, 多項式の範囲内で行われるためには, 各ステップにおいて 主係数どうしの除算が, 多項式としての整除である必要がある. これが, 「除算 が最後まで実行できる」ことの意味である.
  • 典型的な場合として, poly2 の主係数が, 有理数である場合, あるいは, poly2poly1 の因子であることがわかっている場合など がある.
  • 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.