`sdiv', `srem', `sqr'
---------------------

sdiv(POLY1,POLY2)
     :: POLY1  POLY2 ǳǸޤǼ¹ԤǤ˾.
srem(POLY1,POLY2)
     :: POLY1  POLY2 ǳǸޤǼ¹ԤǤ˾;
     .
sqr(POLY1,POLY2)
     :: POLY1  POLY2 ǳǸޤǼ¹ԤǤ˾, ;
     .

RETURN
     `sdiv()', `srem()' : ¿༰, `sqr()' : `[,;]' ʤꥹ
POLY1 POLY2
     ¿༰

   * POLY1  POLY2 μѿ var(POLY2) ˴ؤ¿༰ȸ, POLY2 , 
     껻Ԥ.
   * ¿༰ν, 緸ɤγ任ˤ줿, ѿŬ
     ѤѤ 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


     `idiv', `irem', `%'

