Algoritmus
(S(n),b):=GOSPER( a(n))
[předpokládá, že a(n)/a(n-1) je racionální lomená funkce,
pokud S(n)/S(n-1) je také racionální funkce je b=true
a S(n) je spočítáno, jinak b=false
použité algoritmy:
num(a) - čitatel racionální lomené funkce a
den(a) - jmenovatel racionální lomené funkce a
Res(x,p,q) - resultant polynomů p, q podle proměnné x
gcd(p,q) - největší společný dělitel polynomů p, q
deg(p(n)) - stupeň polynomu p(n)
cof(p(n),i) - koeficient u i-té mocnimy n v polynomu p(n) ]
1. b:=true;
2. if a(n)=0 then S(n):=0; return fi;
3. p(n):=1; q(n):=num(a(n)/a(n-1)); r(n):=den(a(n)/a(n-1));
4. while (Res(n,q(n),r(n+j)) má nezáporný celý kořen j=j0) do
g(n):=gcd(q(n),r(n+j0));
q(n):=q(n)/g(n);
r(n):=r(n)/g(n-j0);
p(n):=p(n)g(n)g(n-1)...g(n-j0+1);
od;
5. lp:=deg(q(n+1)+r(n));
lm:=deg(q(n+1)-r(n));
if lp <= lm then k:=deg(p(n))-lm
else
k0:=2 (-lp cof(q,lp)-cof(q,lp-1)+cof(r,lp-1))/
(cof(q,lp)+cof(r,lp));
if (k0 je celé) then k:=max(k0,deg(p(n))-lp+1)
else k:=deg(p(n))-lp+1;
fi
fi;
if k < 0 then b:=false; return fi;
6. vyřešit rekurentní vzorec p(n)=q(n+1)f(n)-r(n)f(n-1)
s okrajovou podmínkou f(1)=p(1)/q(2)
pro f(n)=ck n^k+...+c0
if (neexistuje řešení) then b:=false; return fi;
7. S(n):=q(n+1)a(n)f(n)/p(n);
return