Tue Feb 10 12:28:54 2004 run on Linux
% Tests of the SUM package.
% Author: Fujio Kako (kako@kako.math.sci.hiroshima-u.ac.jp)
% 1) Summations.
sum(n,n);
n*(n + 1)
-----------
2
for i:=2:10 do write sum(n**i,n);
2
n*(2*n + 3*n + 1)
--------------------
6
2 2
n *(n + 2*n + 1)
-------------------
4
4 3 2
n*(6*n + 15*n + 10*n - 1)
------------------------------
30
2 4 3 2
n *(2*n + 6*n + 5*n - 1)
-----------------------------
12
6 5 4 2
n*(6*n + 21*n + 21*n - 7*n + 1)
-------------------------------------
42
2 6 5 4 2
n *(3*n + 12*n + 14*n - 7*n + 2)
--------------------------------------
24
8 7 6 4 2
n*(10*n + 45*n + 60*n - 42*n + 20*n - 3)
-----------------------------------------------
90
2 8 7 6 4 2
n *(2*n + 10*n + 15*n - 14*n + 10*n - 3)
-----------------------------------------------
20
10 9 8 6 4 2
n*(6*n + 33*n + 55*n - 66*n + 66*n - 33*n + 5)
-------------------------------------------------------
66
sum((n+1)**3,n);
3 2
n*(n + 6*n + 13*n + 12)
---------------------------
4
sum(x**n,n);
n
x *x
-------
x - 1
sum(n**2*x**n,n);
n 2 2 2 2
x *x*(n *x - 2*n *x + n - 2*n*x + 2*n + x + 1)
--------------------------------------------------
3 2
x - 3*x + 3*x - 1
sum(1/n,n);
1
sum(---,n)
n
sum(1/n/(n+2),n);
n*(3*n + 5)
------------------
2
4*(n + 3*n + 2)
sum(log (n/(n+1)),n);
1
log(-------)
n + 1
% 2) Expressions including trigonometric functions.
sum(sin(n*x),n);
2*n*x + x
- cos(-----------)
2
---------------------
x
2*sin(---)
2
sum(n*sin(n*x),n,1,k);
sin(k*x + x)*k - sin(k*x)*k - sin(k*x)
----------------------------------------
2*(cos(x) - 1)
sum(cos((2*r-1)*pi/n),r);
2*pi*r
sin(--------)
n
---------------
pi
2*sin(----)
n
sum(cos((2*r-1)*pi/n),r,1,n);
0
sum(cos((2*r-1)*pi/(2*n+1)),r);
2*pi*r
sin(---------)
2*n + 1
------------------
pi
2*sin(---------)
2*n + 1
sum(cos((2*r-1)*pi/(2*n+1)),r,1,n);
2*n*pi
sin(---------)
2*n + 1
------------------
pi
2*sin(---------)
2*n + 1
sum(sin((2*r-1)*x),r,1,n);
- cos(2*n*x) + 1
-------------------
2*sin(x)
sum(cos((2*r-1)*x),r,1,n);
sin(2*n*x)
------------
2*sin(x)
sum(sin(n*x)**2,n);
- sin(2*n*x + x) + 2*sin(x)*n
--------------------------------
4*sin(x)
sum(cos(n*x)**2,n);
sin(2*n*x + x) + 2*sin(x)*n
-----------------------------
4*sin(x)
sum(sin(n*x)*sin((n+1)*x),n);
- sin(2*n*x + 2*x) + sin(2*x)*n
----------------------------------
4*sin(x)
sum(sec(n*x)*sec((n+1)*x),n);
sum(sec(n*x + x)*sec(n*x),n)
sum(1/2**n*tan(x/2**n),n);
x
tan(----)
n
2
sum(-----------,n)
n
2
sum(sin(r*x)*sin((r+1)*x),r,1,n);
- sin(2*n*x + 2*x) + sin(2*x)*n + sin(2*x)
---------------------------------------------
4*sin(x)
sum(sec(r*x)*sec((r+1)*x),r,1,n);
sum(sec(r*x + x)*sec(r*x),r,1,n)
sum(1/2**r*tan(x/2**r),r,1,n);
x
tan(----)
r
2
sum(-----------,r,1,n)
r
2
sum(k*sin(k*x),k,1,n - 1);
- sin(n*x - x)*n + sin(n*x)*n - sin(n*x)
-------------------------------------------
2*(cos(x) - 1)
sum(k*cos(k*x),k,1,n - 1);
- cos(n*x - x)*n + cos(n*x)*n - cos(n*x) + 1
-----------------------------------------------
2*(cos(x) - 1)
sum(sin((2k - 1)*x),k,1,n);
- cos(2*n*x) + 1
-------------------
2*sin(x)
sum(sin(x + k*y),k,0,n);
2*n*y + 2*x + y 2*x - y
- cos(-----------------) + cos(---------)
2 2
--------------------------------------------
y
2*sin(---)
2
sum(cos(x + k*y),k,0,n);
2*n*y + 2*x + y 2*x - y
sin(-----------------) - sin(---------)
2 2
-----------------------------------------
y
2*sin(---)
2
sum((-1)**(k - 1)*sin((2k - 1)*x),k,1,n + 1);
n
( - 1) *sin(2*n*x + 2*x)
--------------------------
2*cos(x)
sum((-1)**(k - 1)*cos((2k - 1)*x),k,1,n + 1);
n
( - 1) *cos(2*n*x + 2*x) + 1
------------------------------
2*cos(x)
sum(r**k*sin(k*x),k,1,n - 1);
n n
- r *sin(n*x - x)*r + r *sin(n*x) - sin(x)*r
-----------------------------------------------
2
2*cos(x)*r - r - 1
sum(r**k*cos(k*x),k,0,n - 1);
n n
- r *cos(n*x - x)*r + r *cos(n*x) + cos(x)*r - 1
---------------------------------------------------
2
2*cos(x)*r - r - 1
sum(sin(k*x)*sin((k + 1)*x),k,1,n);
- sin(2*n*x + 2*x) + sin(2*x)*n + sin(2*x)
---------------------------------------------
4*sin(x)
sum(sin(k*x)*sin((k + 2)*x),k,1,n);
- sin(2*n*x + 3*x) + sin(3*x)*n + sin(3*x) - sin(x)*n
--------------------------------------------------------
4*sin(x)
sum(sin(k*x)*sin((2k - 1)*x),k,1,n);
6*n*x + x 2*n*x - 3*x 2*n*x - x 2*n*x + x
( - sin(-----------) + sin(-------------) + sin(-----------) + sin(-----------)
2 2 2 2
3*x x 3*x
+ sin(-----) + sin(---))/(4*sin(-----))
2 2 2
% The next examples cannot be summed in closed form.
sum(1/(cos(x/2**k)*2**k)**2,k,1,n);
1
sum(-----------------,k,1,n)
2*k x 2
2 *cos(----)
k
2
sum((2**k*sin(x/2**k)**2)**2,k,1,n);
2*k x 4
sum(2 *sin(----) ,k,1,n)
k
2
sum(tan(x/2**k)/2**k,k,0,n);
x
tan(----)
k
2
sum(-----------,k,0,n)
k
2
sum(cos(k**2*2*pi/n),k,0,n - 1);
2
2*k *pi
sum(cos(---------),k,0,n - 1)
n
sum(sin(k*pi/n),k,1,n - 1);
2*n*pi - pi pi
- cos(-------------) + cos(-----)
2*n 2*n
------------------------------------
pi
2*sin(-----)
2*n
% 3) Expressions including the factorial function.
for all n,m such that fixp m let
factorial(n+m)=if m > 0 then factorial(n+m-1)*(n+m)
else factorial(n+m+1)/(n+m+1);
sum(n*factorial(n),n);
factorial(n)*(n + 1)
sum(n/factorial(n+1),n);
- 1
----------------------
factorial(n)*(n + 1)
sum((n**2+n-1)/factorial(n+2),n);
- 1
----------------------
factorial(n)*(n + 2)
sum(n*2**n/factorial(n+2),n);
n
- 2*2
-----------------------------
2
factorial(n)*(n + 3*n + 2)
sum(n*x**n/factorial(n+2),n);
n
x *n
sum(-----------------------------------------------------,n)
2
factorial(n)*n + 3*factorial(n)*n + 2*factorial(n)
for all n,m such that fixp m and m > 3 let
factorial((n+m)/2)= factorial((n+m)/2-1)*((n+m)/2),
factorial((n-m)/2)= factorial((n-m)/2+1)/((n-m)/2+1);
sum(factorial(n-1/2)/factorial(n+1),n);
2*n - 1
factorial(---------)
2
sum(-------------------------------,n)
factorial(n)*n + factorial(n)
for all n,m such that fixp m and m > 3 clear factorial((n+m)/2);
for all n,m such that fixp m and m > 3 clear factorial((n-m)/2);
% 4) Expressions including combination.
operator comb;
% Combination function.
for all n ,m let comb(n,m)=factorial(n)/factorial(n-m)/factorial(m);
sum((-1)**k*comb(n,k),k,1,m);
m m
( - ( - 1) *factorial(n)*m + ( - 1) *factorial(n)*n
- factorial( - m + n)*factorial(m)*n)/(factorial( - m + n)*factorial(m)*n)
sum(comb(n + p,q)/comb(n + r,q + 2),n,1,m);
( - factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*m*p*q
- 2*factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*m*p
- factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*m*q
- 2*factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*m
2
+ factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*p*q
- factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*p*q*r
+ 2*factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*p*q
- 2*factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*p*r
2
+ factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*q
- factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*q*r
+ 2*factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*q
- 2*factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*r
2
- factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*m*q
+ factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*m*q*r
- 2*factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*m*q
+ 2*factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*m*r
2
- factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*p*q
+ factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*p*q*r
- 2*factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*p*q
+ 2*factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*p*r
2
- factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*q
+ factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*q*r
- 2*factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*q
+ 2*factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*r)/(
factorial(m + p - q)*factorial(m + r)*factorial(p - q)*factorial(r)*(m*p*q
2 2 2 2 2
- m*p*r - m*q*r + m*q + m*r - m*r - p*q + 2*p*q*r - p*r + q *r - q
2 3 2
- 2*q*r + 2*q*r + r - r ))
sum((-1)**(k + 1)*comb(n,k)/(k + 1),k,1,n);
n
-------
n + 1
for all n ,m clear comb(n,m);
for all n,m such that fixp m clear factorial(n+m);
% 3) Examples taken from
% "Decision procedure for indefinite hypergeometric summation"
% Proc. Natl. Acad. Sci. USA vol. 75, no. 1 pp.40-42 (1978)
% R. William Gosper, Jr.
%
% n
% ____ 2
% f = || (b*k +c*k+d)
% k=1
%
% n
% ____ 2
% g = || (b*k +c*k+e)
% k=1
%
operator f,gg;
% gg used to avoid possible conflict with high energy
% physics operator.
for all n,m such that fixp m let
f(n+m)=if m > 0 then f(n+m-1)*(b*(n+m)**2+c*(n+m)+d)
else f(n+m+1)/(b*(n+m+1)**2+c*(n+m+1)+d);
for all n,m such that fixp m let
gg(n+m)=if m > 0 then gg(n+m-1)*(b*(n+m)**2+c*(n+m)+e)
else gg(n+m+1)/(b*(n+m+1)**2+c*(n+m+1)+e);
sum(f(n-1)/gg(n),n);
f(n)
---------------
gg(n)*(d - e)
sum(f(n-1)/gg(n+1),n);
2 2 2 2
(f(n)*(2*b *n + 4*b *n + 2*b + 2*b*c*n + 2*b*c + 2*b*d*n + 3*b*d - 2*b*e*n
2 2 3 2 3 3
- b*e + c*d - c*e + d - 2*d*e + e ))/(gg(n)*(b *d*n + 2*b *d*n + b *d
3 2 3 3 2 2 2 2
- b *e*n - 2*b *e*n - b *e + b *c*d*n + b *c*d - b *c*e*n - b *c*e
2 2 2 2 2 2 2 2 2 2 2 2 2
+ 2*b *d *n + 4*b *d *n + 2*b *d + b *d*e - 2*b *e *n - 4*b *e *n
2 2 2 2 2 2 2 2 2
- 3*b *e - b*c *d*n - 2*b*c *d*n - b*c *d + b*c *e*n + 2*b*c *e*n
2 2 2 2 2 3 2
+ b*c *e + 2*b*c*d *n + 2*b*c*d - 2*b*c*e *n - 2*b*c*e + b*d *n
3 3 2 2 2 2 2 2
+ 2*b*d *n + b*d - 3*b*d *e*n - 6*b*d *e*n - b*d *e + 3*b*d*e *n
2 2 3 2 3 3 3 3
+ 6*b*d*e *n + 3*b*d*e - b*e *n - 2*b*e *n - 3*b*e - c *d*n - c *d
3 3 2 2 2 3 3 2 2
+ c *e*n + c *e - c *d*e + c *e + c*d *n + c*d - 3*c*d *e*n - 3*c*d *e
2 2 3 3 3 2 2 3 4
+ 3*c*d*e *n + 3*c*d*e - c*e *n - c*e + d *e - 3*d *e + 3*d*e - e ))
for all n,m such that fixp m clear f(n+m);
for all n,m such that fixp m clear gg(n+m);
clear f,gg;
% 4) Products.
prod(n/(n+2),n);
2
--------------
2
n + 3*n + 2
prod(x**n,n);
2
(n + n)/2
x
prod(e**(sin(n*x)),n);
1
----------------------------------
cos((2*n*x + x)/2)/(2*sin(x/2))
e
end;
Time for test: 130 ms