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