### 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.

User manual for Singular version 4.4.1, 2025, generated by texi2html.