Home Online Manual
Top
Back: dim
Forward: dump
FastBack: Functions and system variables
FastForward: Control structures
Up: Functions
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

5.1.26 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/20x6-9/80xy5-5/16x7y+5/8x2y6
==>    _[2,1]=1/8x2y3+1/5x5y+1/20y6-3/4x3y4-5/4x6y2-5/16xy7
==> [2]:
==>    _[1]=0
==> [3]:
==>    _[1,1]=1/4-25/16xy
division(ideal(f^2),jacob(f),10);
==> // ** _ is no standard basis
==> [1]:
==>    _[1,1]=-75/8y9
==>    _[2,1]=1/2x2y3+x5y-1/4y6-3/2x3y4+15/4xy7+375/16x2y8
==> [2]:
==>    _[1]=x10+9/4y10
See ideal; lift; module; poly operations; reduce.