
5.1.24 division
Syntax:
division ( ideal_expression, ideal_expression )
division ( module_expression, module_expression )
division ( ideal_expression, ideal_expression, int_expression )
division ( module_expression, module_expression, int_expression )
division ( ideal_expression, ideal_expression, int_expression, intvec_expression )
division ( module_expression, module_expression, int_expression,
intvec_expression )
Type:
 list
Purpose:
division computes a division with remainder.
For two ideals resp. modules M (first argument) and N
(second argument), it returns a list T,R,U where T is a matrix,
R is an ideal resp. a module, and U is a diagonal matrix of units
such that matrix(M)*U=matrix(N)*T+matrix(R) is a standard representation
for the normal form R of M with respect to a standard basis of N .
division uses different algorithms depending on whether N is
represented by a standard basis.
For a polynomial basering, the matrix U is the identity matrix.
A matrix T as above is also computed by lift .
For additional arguments n (third argument) and w (fourth argument),
division returns a list T,R as above such that
matrix(M)=matrix(N)*T+matrix(R) is a standard representation for the
normal form R of M with respect to N up to weighted degree
n with respect to the weight vector w .
The weighted degree of T and R respect to w is at most n .
If the weight vector w is not given,
division uses the standard weight vector w=1,...,1 .
Example:
 ring R=0,(x,y),ds;
poly f=x5+x2y2+y5;
division(f,jacob(f)); // automatic conversion: poly > ideal
==> [1]:
==> _[1,1]=1/5x
==> _[2,1]=3/10y
==> [2]:
==> _[1]=1/2y5
==> [3]:
==> _[1,1]=1
division(f^2,jacob(f));
==> [1]:
==> _[1,1]=1/20x69/80xy55/16x7y+5/8x2y6
==> _[2,1]=1/8x2y3+1/5x5y+1/20y63/4x3y45/4x6y25/16xy7
==> [2]:
==> _[1]=0
==> [3]:
==> _[1,1]=1/425/16xy
division(ideal(f^2),jacob(f),10);
==> // ** _ is no standard basis
==> [1]:
==> _[1,1]=75/8y9
==> _[2,1]=1/2x2y3+x5y1/4y63/2x3y4+15/4xy7+375/16x2y8
==> [2]:
==> _[1]=x10+9/4y10

See
ideal;
lift;
module.
