Add some basic letsimp tests based on bug #3950
[maxima.git] / share / solve_rec / simplify_sum_test.mac
blob580ef8426d427dc812549fab46e17919a0ee4bfe
1 /***************************************
2  *
3  * This file contains some examples for simplify_sum function
4  *
5  * Use:
6  *   load("simplify_sum");
7  *   load("simplify_sum_test");
8  *
9  ***************************************/
11 test_sum(sm, ass, use_gamma, smp, [comment]) := block(
12   [product_use_gamma : use_gamma, cs, f],
13   if length(ass)>0 then apply(assume, ass),
14   cs : simplify_sum(sm),
15   for f in smp do cs : apply(f, [cs]),
16   print("|----------------------------------------------------------|"),
17   if length(comment)>0 then apply(print, comment),
18   if length(ass)>0 then print("Assuming:", ass),
19   print(sm = cs),
20   print("|----------------------------------------------------------|"),
21   if length(ass)>0 then apply(forget, ass)
22   )$
24 test_sum(
25   sum(r/k*binomial(n,r)*binomial(m,k-r)/binomial(n+m,k),r,0,k),
26   [n>k, m>k-1, m>k],
27   true,
28   [makefact, minfactorial]
31 test_sum(
32   sum(binomial(n,k)/(k+1), k, 0, n),
33   [],
34   true,
35   []
38 test_sum(
39   sum((-1)^k * binomial(a+b, a+k) * binomial(b+c, b+k) * binomial(c+a, c+k), k, -a, a),
40   [a<b, a<c],
41   true,
42   [factcomb]
45 test_sum(
46   sum((-1)^k * binomial(n,k)*x/(x+k), k, 0, n),
47   [],
48   true,
49   [factcomb]
52 test_sum(
53   sum((-1)^k * binomial(2*n, k)^2, k, 0, 2*n),
54   [],
55   false,
56   []
59 test_sum(
60   sum((binomial(3*k+1,k)*binomial(3*(n-k),n-k))/(3*k+1), k, 0, n),
61   [],
62   false,
63   []
66 test_sum(
67   sum(binomial(n, k) * binomial(m, r - k), k, 0, r),
68   [m>r, n>r],
69   true,
70   [factcomb]
73 test_sum(
74   sum(binomial(2*n,2*k), k, 0, n),
75   [n>0],
76   true,
77   []
80 test_sum(
81   sum((-1)^k*binomial(x-2*k,n-k)*binomial(x-k+1,k),k,0,n),
82   [x>2*n, x>2*n-1, x>n-1],
83   true,
84   []
87 test_sum(
88   sum((-1)^s*binomial(2*m, s)^3, s, 0, 2*m),
89   [],
90   false,
91   []
94 test_sum(
95   sum((-1)^k*binomial(k,n-k), k, 0, n),
96   [],
97   true,
98   [rectform, trigreduce]
101 test_sum(
102   sum(binomial(n,k)^2*binomial(3*n+k,2*n), k, -inf, inf),
103   [n>0],
104   false,
105   []
108 test_sum(
109   sum((-1)^k*binomial(n-k,k)*2^(n-2*k), k, 0, n),
110   [],
111   true,
112   []
115 test_sum(
116   sum(binomial(x,k)*binomial(y,k), k, 0, y),
117   [x>y],
118   true,
119   [factcomb]
122 test_sum(
123   sum((-1)^(n-k)*binomial(n,k)*binomial(k+b,k), k, 0, n),
124   [b>0],
125   true,
126   [factcomb]
129 test_sum(
130   sum(binomial(n+k,k)/2^k,k,0,n),
131   [],
132   true,
133   []
136 test_sum(
137   sum((2^(4*k)*binomial(2*n-2*k,n-k))/(2*k*(2*k+1)*binomial(2*k,k)), k, 1, n),
138   [],
139   true,
140   []
143 test_sum(
144   sum(k^2 * binomial(n, k), k, 1, n),
145   [],
146   true,
147   []
150 test_sum(
151   sum(2^(n-k)*binomial(n+k,2*k),k,-inf,inf),
152   [n>0],
153   true,
154   []
157 test_sum(
158   sum(((-1)^k*binomial(2*k,k)*binomial(n,k))/4^k,k,0,n),
159   [],
160   true,
161   []
164 test_sum(
165   sum((-1)^k*binomial(2*k,k)*binomial(2*n,k)*binomial(4*n-2*k,2*n-k),k,0,2*n),
166   [],
167   true,
168   []
171 test_sum(
172   sum(binomial(l+j,j)*(-1)^(n-l-j)*binomial(n+1,l+j+1),l,0,n-j),
173   [j>0],
174   true,
175   []
178 test_sum(
179   sum(binomial(n,4*k),k,0,inf),
180   [],
181   true,
182   [rectform]
185 (assume(n>0), declare(n, integer), 0);
188 test_sum(
189   sum(binomial(n, k)/binomial(2*n, k)/k!*(2*x)^k, k, 0, inf),
190   [],
191   true,
192   []
193   );
196 (kill(n), 0);
199 test_sum(
200   sum((n^2+n+1)/(n^4-2*n^2+1),n,2,inf),
201   [],
202   true,
203   [ratsimp, multthru]
206 test_sum(
207   sum(1/n/(2*n+1),n,1,inf),
208   [],
209   true,
210   [ratsimp, multthru]
213 test_sum(
214   sum(1/(5*n^2-1),n,1,inf),
215   [],
216   true,
217   [ratsimp, multthru]
220 test_sum(
221   sum(1/(5*n^2-3),n,1,inf),
222   [],
223   true,
224   [ratsimp, multthru]
228 test_sum(
229   sum(1/(n^2+1),n,1,inf),
230   [],
231   true,
232   [ratsimp, multthru]
235 test_sum(
236   sum(1/n/(n+a), n, 1, inf),
237   [],
238   true,
239   [ratsimp, multthru]
242 test_sum(
243   sum((-1)^(n+1)/n, n, 1, inf),
244   [],
245   true,
246   [ratsimp, multthru]
249 test_sum(
250   sum((-1)^k*(k+5)/(2*k+1)/(2*k+3), k, 1, inf),
251   [],
252   true,
253   [ratsimp, multthru]
256 test_sum(
257   sum((-1)^(k+1)/(2*k-1)^3, k, 1, inf),
258   [],
259   true,
260   [ratsimp, multthru]
263 test_sum(
264   sum(x^n/n!, n, 0, inf),
265   [],
266   false,
267   []
270 test_sum(
271   -sum(((-1)^i*x^(2*i))/i,i,1,inf),
272   [],
273   false,
274   []
277 test_sum(
278   sum(n/((n+1)*2^n),n,1,inf),
279   [],
280   false,
281   [ratsimp]
284 test_sum(
285   sum(n/((2*n+1)*2^n),n,0,inf),
286   [],
287   false,
288   [ratsimp]
291 test_sum(
292   sum((4^(-i-1)*(-1)^i*x^(i+1))/(i+1),i,0,inf),
293   [],
294   false,
295   []
299 test_sum(
300   'sum('sum(n!/(k!^2*(n - 2*k)!)*(x/y)^k*(x*y)^(n - k), n, 2*k, inf), k, 0, inf),
301   [x*y<1],
302   false,
303   [lambda([u], scanmap(factor, u, 'bottomup))]
304 ), use_zeilberger=false$
306 test_sum(
307   sum(1/k, k, 1, n),
308   [],
309   false,
310   []
313 test_sum(
314   sum(k*harmonic_number(k),k,1,n),
315   [],
316   false,
317   [ratsimp]
320 test_sum(
321   sum(k^2*harmonic_number(k),k,1,n),
322   [],
323   false,
324   [ratsimp]
327 test_sum(
328   sum(k^2*harmonic_number(n+k),k,1,n),
329   [],
330   false,
331   [lambda([u], u:ev(u, harmonic_number_expand=true), ratsimp(u))]
334 test_sum(
335   sum(((-4)^k*binomial(k,m)*binomial(n+k,2*k))*n/(n+k),k,m,n),
336   [m>1, n>0],
337   false,
338   [factcomb, radcan],
339   "With sum_min=m"
340 ), sum_min=m;
343 test_sum(
344   sum(harmonic_number(n)/2^n, n, 1, inf),
345   [],
346   false,
347   []
350 test_sum(
351   sum(harmonic_number(n)/n/(n+1), n, 1, inf),
352   [],
353   false,
354   []
357 test_sum(
358   sum(n*harmonic_number(n)/2^n, n, 1, inf),
359   [],
360   false,
361   []
364 test_sum(
365   sum(harmonic_number(n)/n/2^n, n, 1, inf),
366   [],
367   false,
368   [],
369   "With sum_by_integral_transforms=[logcontract]"
370 ), sum_by_integral_transforms=[logcontract];
372 test_sum(
373   sum(n^2*harmonic_number(2*n)/2^n, n, 1, inf),
374   [],
375   false,
376   []
380 test_sum(
381   sum(((x-1)^(2*n+1)*(x+1)^(-2*n-1))/(2*n+1),n,0,inf),
382   [x<1, x>0],
383   false,
384   [rootscontract, lambda([u], scanmap(factor, u)), ratsimp]
387 test_sum(
388   sum(-1/(2*k)+1/(2*2*k+1)+1/(2*2*k+3), k, 1, inf),
389   [],
390   false,
391   [ratsimp]
394 test_sum(
395   sum(k*(k/2)!,k,1,n),
396   [],
397   false,
398   []
401 test_sum(
402   sum(i*fib(i-1)/2^i,i,1,inf),
403   [],
404   false,
405   []
408 test_sum(
409   sum(1/sqrt(k)/sqrt(k+1)/(sqrt(k)+sqrt(k+1)),k,1,inf),
410   [],
411   false,
412   []