`sdiv', `sdivm', `srem', `sremm', `sqr', `sqrm'
-----------------------------------------------

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

参照
     *Note `idiv irem': idiv irem, *Note `%': %.

