> with(HermiteCT);

Calling sequence:

HermiteReduction(H, y)
Input:  H,  a hyperexponential function in y;
y,  a variable name;

Output: [u, r, T],   u and r are rational functions in y and T a hyperexponential function

with certificate differential-reduced such that

H = Dy(u*T) + r*T,

where r is the residual form of the shell of H.

Example 1 for HermiteReduction

 > f1 := 1/(y-1)^2;

 > HermiteReduction(f1, y);

Example 2 for HermiteReduction

 > f2 := sqrt(y^2+1)/(y-1)^2;

 > HermiteReduction(f2, y);

Calling sequence:
HermiteTelescoping(H, x, y, Dx, 'T')
Input: H,       a bivariate hyperexponential function;

x, y,     two variable names;
Dx,    a operator name.
Output: L,     a linear differential operator in Dx over F(x) and
the fifth argument 'T' is a bivariate hyperexponential
function such that

L(x, Dx)(H) = Dy(T).

T is of the form  [r, exp(int(udx + vdy)]
with r a rational function and v differential-reduced w.r.t. y.

Example 1 for HermiteTelescoping

 > h1 := diff(sqrt(x-2*y)*exp(x^2*y), y);

 > ZT1 := DETools[Zeilberger](h1, x, y, Dx);

 > HT1 := HermiteTelescoping(h1, x, y, Dx, 'T1');

`The estimated order of minimal telescopers is 1 `

` `

Check whether two methods get the same minimal telescoper (up to a univariate rational function in F(x)).

 > degree(normal(ZT1[1]/HT1), Dx);

 > T1;

Example 2  for HermiteTelescoping

 > h2 := sqrt(x-2*y)*exp(x^2*y);

 > ZT2 := DETools[Zeilberger](h2, x, y, Dx);

 > HT2 := HermiteTelescoping(h2, x, y, Dx, 'T2');

`The estimated order of minimal telescopers is 1 `

` Check order 1 `

 > degree(normal(ZT2[1]/HT2), Dx);

Example 3  for HermiteTelescoping

 > h3 := (1+x+4*x*y)/(11+x+y^2+x*y);

 > ZT3 := DETools[Zeilberger](h3, x, y, Dx):

 > HT3 := HermiteTelescoping(h3, x, y, Dx, 'T3');

`The estimated order of minimal telescopers is 2 `

` Check order 1 `

`Check order 2 `

 > degree(normal(ZT3[1]/HT3), Dx);

Example 4  for HermiteTelescoping

 > h4 := 1/sqrt(y*(y-1)*(y-x));

 > ZT4 := DETools[Zeilberger](h4, x, y, Dx);

 > HT4 := HermiteTelescoping(h4, x, y, Dx, 'T4');

`The estimated order of minimal telescopers is 2 `

` Check order 1 `

`Check order 2 `

 > degree(normal(ZT4[1]/HT4), Dx);

Example 5  for HermiteTelescoping

 > h5 := sqrt(x-2*y)*exp(x^2*y);

 > ZT5 := DETools[Zeilberger](h5, x, y, Dx);

 > HT5 := HermiteTelescoping(h5, x, y, Dx, 'T5');

`The estimated order of minimal telescopers is 1 `

` Check order 1 `

 > degree(normal(ZT5[1]/HT5), Dx);