# Singular

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

### Misc 