## homogenize

```<< f homogenize g >>
poly f,g;
array of poly f,g;

[(degreeShift) (value)] homogenize [shiftD shiftUV]
[(degreeShift) (reset)] homogenize [null null]
[(degreeShift) shiftD ] homogenize [shiftD shiftUV]
[(degreeShift) [shiftD shiftUV]] homogenize [shiftD shiftUV]
[(degreeShift) [ ]     fv] homogenize   hfv
[(degreeShift) shiftD  fv] homogenize   hfv
[(degreeShift) [shiftD shiftUV] fv] homogenize hfv
shiftD : degree shift vector for (0,1)-h homogenization
shiftUV : degree shift vector for (-1,1)-s homogenization (internal for ecart.)
fv : polynomial or vector of polynomials.
Example:  [(x) ring_of_differential_operators 0] define_ring
[(degreeShift) [[1 0] [0 1]] [(x+1). (Dx+1).]] homogenize ::
[(degreeShift) (value)] homogenize ::
Note. min of ord (-1,1)[0,1] is min {-1,1, 1+1,1+0} = -1 =m
Degree of H is b-a+v(i)-m where v=[0,1]
Side effects:  It changes h-degree shift vector and s-degree shift vector
in homogenizeObject_go(), which is called from ecart division codes
as well as the function homogenize.
DegreeShift is automatically reset when set_up_ring is called.
```

Nobuki Takayama 2020-11-24