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

sdiv(POLY1,POLY2)
     :: POLY1  POLY2 Ŋ鏜ZŌ܂Ŏsłꍇɏ߂.
srem(POLY1,POLY2)
     :: POLY1  POLY2 Ŋ鏜ZŌ܂Ŏsłꍇɏ]
     .
sqr(POLY1,POLY2)
     :: POLY1  POLY2 Ŋ鏜ZŌ܂Ŏsłꍇɏ, ]
     ߂.

RETURN
     `sdiv()', `srem()' : , `sqr()' : `[,]]' Ȃ郊Xg
POLY1 POLY2
     

   * POLY1  POLY2 ̎ϐ var(POLY2) Ɋւ鑽ƌ, POLY2 , 
     Zs.
   * ̏Z, Wǂ̊Zɂ蓾ꂽ, ϐ̓K
     șp̐ς POLY2 Ɋ|, POLY1 ƂPOLY1 ̎
      POLY2 ̎菬Ȃ܂ŌJԂčs. ̑삪, 
     ͈͓̔ōs邽߂ɂ, eXebvɂĎWǂ
     Z, ƂĂ̐łKv. ꂪ, uZŌ
     ܂ŎsłvƂ̈Ӗł.
   * T^IȏꍇƂ, POLY2 ̎W, Lłꍇ, 邢,
     POLY2  POLY1 ̈qł邱Ƃ킩ĂꍇȂǂ.
   * `sqr()' ͏Ə]𓯎ɋ߂ɗp.
   * Z̏, ] `idiv', `irem' p.
   * Wɑ΂]Z `%' p.
   * ϐwł悤ǂ̗\.

     [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

Q
     `idiv', `irem', `%'

