1% Tests of the SUM package.
2
3% Author: Fujio Kako (kako@kako.math.sci.hiroshima-u.ac.jp)
4
5% 1) Summations.
6
7sum(n,n);
8
9
10 n*(n + 1)
11-----------
12     2
13
14
15for i:=2:10 do write sum(n**i,n);
16
17
18       2
19 n*(2*n  + 3*n + 1)
20--------------------
21         6
22
23  2   2
24 n *(n  + 2*n + 1)
25-------------------
26         4
27
28       4       3       2
29 n*(6*n  + 15*n  + 10*n  - 1)
30------------------------------
31              30
32
33  2     4      3      2
34 n *(2*n  + 6*n  + 5*n  - 1)
35-----------------------------
36             12
37
38       6       5       4      2
39 n*(6*n  + 21*n  + 21*n  - 7*n  + 1)
40-------------------------------------
41                 42
42
43  2     6       5       4      2
44 n *(3*n  + 12*n  + 14*n  - 7*n  + 2)
45--------------------------------------
46                  24
47
48        8       7       6       4       2
49 n*(10*n  + 45*n  + 60*n  - 42*n  + 20*n  - 3)
50-----------------------------------------------
51                      90
52
53  2     8       7       6       4       2
54 n *(2*n  + 10*n  + 15*n  - 14*n  + 10*n  - 3)
55-----------------------------------------------
56                      20
57
58       10       9       8       6       4       2
59 n*(6*n   + 33*n  + 55*n  - 66*n  + 66*n  - 33*n  + 5)
60-------------------------------------------------------
61                          66
62
63
64sum((n+1)**3,n);
65
66
67     3      2
68 n*(n  + 6*n  + 13*n + 12)
69---------------------------
70             4
71
72
73sum(x**n,n);
74
75
76  n
77 x *x
78-------
79 x - 1
80
81
82sum(n**2*x**n,n);
83
84
85  n     2  2      2      2
86 x *x*(n *x  - 2*n *x + n  - 2*n*x + 2*n + x + 1)
87--------------------------------------------------
88                3      2
89               x  - 3*x  + 3*x - 1
90
91
92sum(1/n,n);
93
94
95     1
96sum(---,n)
97     n
98
99
100sum(1/n/(n+2),n);
101
102
103   n*(3*n + 5)
104------------------
105     2
106 4*(n  + 3*n + 2)
107
108
109sum(log (n/(n+1)),n);
110
111
112       1
113log(-------)
114     n + 1
115
116
117% 2) Expressions including trigonometric functions.
118
119sum(sin(n*x),n);
120
121
122         2*n*x + x
123  - cos(-----------)
124             2
125---------------------
126            x
127     2*sin(---)
128            2
129
130
131sum(n*sin(n*x),n,1,k);
132
133
134 sin(k*x + x)*k - sin(k*x)*k - sin(k*x)
135----------------------------------------
136             2*(cos(x) - 1)
137
138
139sum(cos((2*r-1)*pi/n),r);
140
141
142      2*pi*r
143 sin(--------)
144        n
145---------------
146         pi
147  2*sin(----)
148         n
149
150
151sum(cos((2*r-1)*pi/n),r,1,n);
152
153
1540
155
156
157sum(cos((2*r-1)*pi/(2*n+1)),r);
158
159
160       2*pi*r
161  sin(---------)
162       2*n + 1
163------------------
164          pi
165 2*sin(---------)
166        2*n + 1
167
168
169sum(cos((2*r-1)*pi/(2*n+1)),r,1,n);
170
171
172       2*n*pi
173  sin(---------)
174       2*n + 1
175------------------
176          pi
177 2*sin(---------)
178        2*n + 1
179
180
181sum(sin((2*r-1)*x),r,1,n);
182
183
184  - cos(2*n*x) + 1
185-------------------
186     2*sin(x)
187
188
189sum(cos((2*r-1)*x),r,1,n);
190
191
192 sin(2*n*x)
193------------
194  2*sin(x)
195
196
197sum(sin(n*x)**2,n);
198
199
200  - sin(2*n*x + x) + 2*sin(x)*n
201--------------------------------
202            4*sin(x)
203
204
205sum(cos(n*x)**2,n);
206
207
208 sin(2*n*x + x) + 2*sin(x)*n
209-----------------------------
210          4*sin(x)
211
212
213sum(sin(n*x)*sin((n+1)*x),n);
214
215
216  - sin(2*n*x + 2*x) + sin(2*x)*n
217----------------------------------
218             4*sin(x)
219
220
221sum(sec(n*x)*sec((n+1)*x),n);
222
223
224sum(sec(n*x + x)*sec(n*x),n)
225
226
227sum(1/2**n*tan(x/2**n),n);
228
229
230          x
231     tan(----)
232           n
233          2
234sum(-----------,n)
235         n
236        2
237
238
239sum(sin(r*x)*sin((r+1)*x),r,1,n);
240
241
242  - sin(2*n*x + 2*x) + sin(2*x)*n + sin(2*x)
243---------------------------------------------
244                  4*sin(x)
245
246
247sum(sec(r*x)*sec((r+1)*x),r,1,n);
248
249
250sum(sec(r*x + x)*sec(r*x),r,1,n)
251
252
253sum(1/2**r*tan(x/2**r),r,1,n);
254
255
256          x
257     tan(----)
258           r
259          2
260sum(-----------,r,1,n)
261         r
262        2
263
264
265sum(k*sin(k*x),k,1,n - 1);
266
267
268  - sin(n*x - x)*n + sin(n*x)*n - sin(n*x)
269-------------------------------------------
270              2*(cos(x) - 1)
271
272
273sum(k*cos(k*x),k,1,n - 1);
274
275
276  - cos(n*x - x)*n + cos(n*x)*n - cos(n*x) + 1
277-----------------------------------------------
278                2*(cos(x) - 1)
279
280
281sum(sin((2k - 1)*x),k,1,n);
282
283
284  - cos(2*n*x) + 1
285-------------------
286     2*sin(x)
287
288
289sum(sin(x + k*y),k,0,n);
290
291
292         2*n*y + 2*x + y          2*x - y
293  - cos(-----------------) + cos(---------)
294                2                    2
295--------------------------------------------
296                        y
297                 2*sin(---)
298                        2
299
300
301sum(cos(x + k*y),k,0,n);
302
303
304      2*n*y + 2*x + y          2*x - y
305 sin(-----------------) - sin(---------)
306             2                    2
307-----------------------------------------
308                      y
309               2*sin(---)
310                      2
311
312
313sum((-1)**(k - 1)*sin((2k - 1)*x),k,1,n + 1);
314
315
316       n
317 ( - 1) *sin(2*n*x + 2*x)
318--------------------------
319         2*cos(x)
320
321
322sum((-1)**(k - 1)*cos((2k - 1)*x),k,1,n + 1);
323
324
325       n
326 ( - 1) *cos(2*n*x + 2*x) + 1
327------------------------------
328           2*cos(x)
329
330
331sum(r**k*sin(k*x),k,1,n - 1);
332
333
334     n                   n
335  - r *sin(n*x - x)*r + r *sin(n*x) - sin(x)*r
336-----------------------------------------------
337                            2
338              2*cos(x)*r - r  - 1
339
340
341sum(r**k*cos(k*x),k,0,n - 1);
342
343
344     n                   n
345  - r *cos(n*x - x)*r + r *cos(n*x) + cos(x)*r - 1
346---------------------------------------------------
347                              2
348                2*cos(x)*r - r  - 1
349
350
351sum(sin(k*x)*sin((k + 1)*x),k,1,n);
352
353
354  - sin(2*n*x + 2*x) + sin(2*x)*n + sin(2*x)
355---------------------------------------------
356                  4*sin(x)
357
358
359sum(sin(k*x)*sin((k + 2)*x),k,1,n);
360
361
362  - sin(2*n*x + 3*x) + sin(3*x)*n + sin(3*x) - sin(x)*n
363--------------------------------------------------------
364                        4*sin(x)
365
366
367sum(sin(k*x)*sin((2k - 1)*x),k,1,n);
368
369
370         6*n*x + x          2*n*x - 3*x          2*n*x - x          2*n*x + x
371( - sin(-----------) + sin(-------------) + sin(-----------) + sin(-----------)
372             2                   2                   2                  2
373
374         3*x          x            3*x
375  + sin(-----) + sin(---))/(4*sin(-----))
376          2           2             2
377
378
379
380% The next examples cannot be summed in closed form.
381
382sum(1/(cos(x/2**k)*2**k)**2,k,1,n);
383
384
385            1
386sum(-----------------,k,1,n)
387      2*k      x   2
388     2   *cos(----)
389                k
390               2
391
392
393sum((2**k*sin(x/2**k)**2)**2,k,1,n);
394
395
396     2*k      x   4
397sum(2   *sin(----) ,k,1,n)
398               k
399              2
400
401
402sum(tan(x/2**k)/2**k,k,0,n);
403
404
405          x
406     tan(----)
407           k
408          2
409sum(-----------,k,0,n)
410         k
411        2
412
413
414sum(cos(k**2*2*pi/n),k,0,n - 1);
415
416
417            2
418         2*k *pi
419sum(cos(---------),k,0,n - 1)
420            n
421
422
423sum(sin(k*pi/n),k,1,n - 1);
424
425
426         2*n*pi - pi          pi
427  - cos(-------------) + cos(-----)
428             2*n              2*n
429------------------------------------
430                   pi
431            2*sin(-----)
432                   2*n
433
434
435% 3) Expressions including the factorial function.
436
437for all n,m such that fixp m let
438	factorial(n+m)=if m > 0 then factorial(n+m-1)*(n+m)
439		   else factorial(n+m+1)/(n+m+1);
440
441
442
443sum(n*factorial(n),n);
444
445
446factorial(n)*(n + 1)
447
448
449sum(n/factorial(n+1),n);
450
451
452          - 1
453----------------------
454 factorial(n)*(n + 1)
455
456
457sum((n**2+n-1)/factorial(n+2),n);
458
459
460          - 1
461----------------------
462 factorial(n)*(n + 2)
463
464
465sum(n*2**n/factorial(n+2),n);
466
467
468                 n
469            - 2*2
470-----------------------------
471                2
472 factorial(n)*(n  + 3*n + 2)
473
474
475sum(n*x**n/factorial(n+2),n);
476
477
478                             n
479                            x *n
480sum(-----------------------------------------------------,n)
481                   2
482     factorial(n)*n  + 3*factorial(n)*n + 2*factorial(n)
483
484
485for all n,m such that fixp m and m > 3 let
486	factorial((n+m)/2)= factorial((n+m)/2-1)*((n+m)/2),
487	factorial((n-m)/2)= factorial((n-m)/2+1)/((n-m)/2+1);
488
489
490
491sum(factorial(n-1/2)/factorial(n+1),n);
492
493
494                    2*n - 1
495         factorial(---------)
496                       2
497sum(-------------------------------,n)
498     factorial(n)*n + factorial(n)
499
500
501for all n,m such that fixp m and m > 3 clear factorial((n+m)/2);
502
503
504
505for all n,m such that fixp m and m > 3 clear factorial((n-m)/2);
506
507
508
509% 4) Expressions including combination.
510
511operator comb;
512
513          % Combination function.
514
515for all n ,m let comb(n,m)=factorial(n)/factorial(n-m)/factorial(m);
516
517
518
519sum((-1)**k*comb(n,k),k,1,m);
520
521
522          m                        m
523( - ( - 1) *factorial(n)*m + ( - 1) *factorial(n)*n
524
525  - factorial( - m + n)*factorial(m)*n)/(factorial( - m + n)*factorial(m)*n)
526
527
528sum(comb(n + p,q)/comb(n + r,q + 2),n,1,m);
529
530
531( - factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*m*p*q
532
533  - 2*factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*m*p
534
535  - factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*m*q
536
537  - 2*factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*m
538
539                                                                              2
540  + factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*p*q
541
542  - factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*p*q*r
543
544  + 2*factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*p*q
545
546  - 2*factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*p*r
547
548                                                                            2
549  + factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*q
550
551  - factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*q*r
552
553  + 2*factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*q
554
555  - 2*factorial( - q + r)*factorial(m + p - q)*factorial(m + r)*factorial(p)*r
556
557                                                                           2
558  - factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*m*q
559
560  + factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*m*q*r
561
562  - 2*factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*m*q
563
564  + 2*factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*m*r
565
566                                                                           2
567  - factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*p*q
568
569  + factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*p*q*r
570
571  - 2*factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*p*q
572
573  + 2*factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*p*r
574
575                                                                         2
576  - factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*q
577
578  + factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*q*r
579
580  - 2*factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*q
581
582  + 2*factorial(m - q + r)*factorial(m + p)*factorial(p - q)*factorial(r)*r)/(
583
584   factorial(m + p - q)*factorial(m + r)*factorial(p - q)*factorial(r)*(m*p*q
585
586                                  2            2                2    2      2
587       - m*p*r - m*q*r + m*q + m*r  - m*r - p*q  + 2*p*q*r - p*r  + q *r - q
588
589              2            3    2
590       - 2*q*r  + 2*q*r + r  - r ))
591
592
593sum((-1)**(k + 1)*comb(n,k)/(k + 1),k,1,n);
594
595
596   n
597-------
598 n + 1
599
600
601for all n ,m clear comb(n,m);
602
603
604
605for all n,m such that fixp m clear factorial(n+m);
606
607
608
609% 3) Examples taken from
610%         "Decision procedure for indefinite hypergeometric summation"
611%          Proc. Natl. Acad. Sci. USA  vol. 75, no. 1 pp.40-42 (1978)
612%          R. William Gosper, Jr.
613%
614
615%            n
616%           ____     2
617%       f =  ||  (b*k +c*k+d)
618%           k=1
619%
620%            n
621%           ____     2
622%       g =  ||  (b*k +c*k+e)
623%           k=1
624%
625operator f,gg;
626
627  % gg used to avoid possible conflict with high energy
628		% physics operator.
629
630for all n,m such that fixp m let
631        f(n+m)=if m > 0 then f(n+m-1)*(b*(n+m)**2+c*(n+m)+d)
632                   else f(n+m+1)/(b*(n+m+1)**2+c*(n+m+1)+d);
633
634
635
636for all n,m such that fixp m let
637	gg(n+m)=if m > 0 then gg(n+m-1)*(b*(n+m)**2+c*(n+m)+e)
638		   else gg(n+m+1)/(b*(n+m+1)**2+c*(n+m+1)+e);
639
640
641
642sum(f(n-1)/gg(n),n);
643
644
645     f(n)
646---------------
647 gg(n)*(d - e)
648
649
650sum(f(n-1)/gg(n+1),n);
651
652
653          2  2      2        2
654(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
655
656                             2            2            3    2      3        3
657        - b*e + c*d - c*e + d  - 2*d*e + e ))/(gg(n)*(b *d*n  + 2*b *d*n + b *d
658
659          3    2      3        3      2          2        2          2
660       - b *e*n  - 2*b *e*n - b *e + b *c*d*n + b *c*d - b *c*e*n - b *c*e
661
662            2  2  2      2  2        2  2    2          2  2  2      2  2
663       + 2*b *d *n  + 4*b *d *n + 2*b *d  + b *d*e - 2*b *e *n  - 4*b *e *n
664
665            2  2      2    2        2          2        2    2        2
666       - 3*b *e  - b*c *d*n  - 2*b*c *d*n - b*c *d + b*c *e*n  + 2*b*c *e*n
667
668            2            2            2          2            2      3  2
669       + b*c *e + 2*b*c*d *n + 2*b*c*d  - 2*b*c*e *n - 2*b*c*e  + b*d *n
670
671              3        3        2    2        2          2            2  2
672       + 2*b*d *n + b*d  - 3*b*d *e*n  - 6*b*d *e*n - b*d *e + 3*b*d*e *n
673
674                2            2      3  2        3          3    3        3
675       + 6*b*d*e *n + 3*b*d*e  - b*e *n  - 2*b*e *n - 3*b*e  - c *d*n - c *d
676
677          3        3      2        2  2      3        3        2            2
678       + c *e*n + c *e - c *d*e + c *e  + c*d *n + c*d  - 3*c*d *e*n - 3*c*d *e
679
680                2            2      3        3    3        2  2        3    4
681       + 3*c*d*e *n + 3*c*d*e  - c*e *n - c*e  + d *e - 3*d *e  + 3*d*e  - e ))
682
683
684for all n,m such that fixp m clear f(n+m);
685
686
687
688for all n,m such that fixp m clear gg(n+m);
689
690
691
692clear f,gg;
693
694
695
696% 4) Products.
697
698prod(n/(n+2),n);
699
700
701      2
702--------------
703  2
704 n  + 3*n + 2
705
706
707prod(x**n,n);
708
709
710   2
711 (n  + n)/2
712x
713
714
715prod(e**(sin(n*x)),n);
716
717
718                1
719----------------------------------
720  cos((2*n*x + x)/2)/(2*sin(x/2))
721 e
722
723
724end;
725
726Tested on x86_64-pc-windows CSL
727Time (counter 1): 31 ms
728
729End of Lisp run after 0.03+0.06 seconds
730real 0.24
731user 0.00
732sys 0.06
733