#### D.12.5.1 weierstrDiv

Procedure from library `weierstr.lib` (see weierstr_lib).

Usage:
  weierstrDiv(g,f,d); g,f=poly, d=integer

Assume:
  f must be general of finite order, say b, in the last ring variable, say T; if not use the procedure lastvarGeneral first

Purpose:
  perform the Weierstrass division of g by f up to order d

Return:
  - a list, say l, of two polynomials and an integer, such that
  g = l[1]*f + l[2], deg_T(l[2]) < b, up to (including) total degree d
  - l[3] is the number of iterations used
  - if f is not T-general, return (0,g)

Note:
  the procedure works for any monomial ordering

Theory:
  the proof of Grauert-Remmert (Analytische Stellenalgebren) is used for the algorithm

Example:

    LIB "weierstr.lib";
    ring R = 0,(x,y),ds;
    poly f = y - xy2 + x2;
    poly g = y;
    list l = weierstrDiv(g,f,10); l;"";
    ==> [1]:
    ==>    1+xy-x3+x2y2-2x4y+2x6+x3y3-3x5y2+5x7y+x4y4-5x9-4x6y3+9x8y2+x5y5
    ==> [2]:
    ==>    -x2+x5-2x8
    ==> [3]:
    ==>    5
    ==>
    l[1]*f + l[2];               //g = l[1]*f+l[2] up to degree 10
    ==> y-5x11+14x10y2+5x7y5-9x9y4-x6y7

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