1% Test file for Sparse Matrices and the Linear Algebra Package for 2% Sparse Matrices. 3 4% Author: Stephen Scowcroft. Date: June 1995. 5 6% Firstly, the matrices need to be created. 7 8% This is the standard way to create a sparse matrix. 9 10% Create a sparse matrix. 11 12sparse mat1(5,5); 13 14 15 16%Fill the sparse matrix with data 17 18mat1(1,1):=2; 19 20 21mat1(1,1) := 2 22 23mat1(2,2):=4; 24 25 26mat1(2,2) := 4 27 28mat1(3,3):=6; 29 30 31mat1(3,3) := 6 32 33mat1(4,4):=8; 34 35 36mat1(4,4) := 8 37 38mat1(5,5):=10; 39 40 41mat1(5,5) := 10 42 43 44sparse mat4(5,5); 45 46 47 48mat4(1,1):=x; 49 50 51mat4(1,1) := x 52 53mat4(2,2):=x; 54 55 56mat4(2,2) := x 57 58mat4(3,3):=x; 59 60 61mat4(3,3) := x 62 63mat4(4,4):=x; 64 65 66mat4(4,4) := x 67 68mat4(5,5):=x; 69 70 71mat4(5,5) := x 72 73 74% A small function to automatically fill a sparse matrix with data. 75 76procedure makematsp(nam,row); 77 begin; 78 sparse nam(row,row); 79 for i := 1:row do <<nam(i,i):=i>> 80 end; 81 82 83makematsp 84 85 86clear mat2; 87 88 89makematsp(mat2,100); 90 91 92 93% Matrices created in the standard Matrix way. 94 95zz1:=mat((1,2),(3,4)); 96 97 98 [1 2] 99zz1 := [ ] 100 [3 4] 101 102 103zz2:=mat((x,x),(x,x)); 104 105 106 [x x] 107zz2 := [ ] 108 [x x] 109 110 111zz3:=mat((i+1,i+2,i+3),(4,5,2),(1,i,0)); 112 113 114 [i + 1 i + 2 i + 3] 115 [ ] 116zz3 := [ 4 5 2 ] 117 [ ] 118 [ 1 i 0 ] 119 120 121 122% I have taken advantage of the Linear Algebra Package (Matt Rebbeck) 123% in order to create some Sparse Matrices. 124 125mat3:=diagonal(zz1,zz1,zz1); 126 127 128 [1 2 0 0 0 0] 129 [ ] 130 [3 4 0 0 0 0] 131 [ ] 132 [0 0 1 2 0 0] 133mat3 := [ ] 134 [0 0 3 4 0 0] 135 [ ] 136 [0 0 0 0 1 2] 137 [ ] 138 [0 0 0 0 3 4] 139 140 141mat5:=band_matrix({1,3,1},100)$ 142 143 144mat6:=diagonal(zz3,zz3); 145 146 147 [i + 1 i + 2 i + 3 0 0 0 ] 148 [ ] 149 [ 4 5 2 0 0 0 ] 150 [ ] 151 [ 1 i 0 0 0 0 ] 152mat6 := [ ] 153 [ 0 0 0 i + 1 i + 2 i + 3] 154 [ ] 155 [ 0 0 0 4 5 2 ] 156 [ ] 157 [ 0 0 0 1 i 0 ] 158 159 160mat7:=band_matrix({a,b,c},4); 161 162 163 [b c 0 0] 164 [ ] 165 [a b c 0] 166mat7 := [ ] 167 [0 a b c] 168 [ ] 169 [0 0 a b] 170 171 172 173% These are then "translated" into the Sparse operator using the 174% function transmat. 175% This is a destructive function in the sense that the matrices are no 176% longer of type 'matrix but are now 'sparse. 177 178transmat mat3; 179 180 181transmat mat5; 182 183 184transmat mat6; 185 186 187transmat mat7; 188 189 190 191poly := x^7+x^5+4*x^4+5*x^3+12; 192 193 194 7 5 4 3 195poly := x + x + 4*x + 5*x + 12 196 197poly1 := x^2+x*y^3+x*y*z^3+y*x+2+y*3; 198 199 200 2 3 3 201poly1 := x + x*y + x*y*z + x*y + 3*y + 2 202 203 204% Firstly some basic matrix operations. 205% These are the same as the present matrix package 206 207mat1^-1; 208 209 210 211 1 212spm(1,1) := ---$ 213 2 214 215 1 216spm(2,2) := ---$ 217 4 218 219 1 220spm(3,3) := ---$ 221 6 222 223 1 224spm(4,4) := ---$ 225 8 226 227 1 228spm(5,5) := ----$ 229 10 230 231mat4^-1; 232 233 234 235 1 236spm(1,1) := ---$ 237 x 238 239 1 240spm(2,2) := ---$ 241 x 242 243 1 244spm(3,3) := ---$ 245 x 246 247 1 248spm(4,4) := ---$ 249 x 250 251 1 252spm(5,5) := ---$ 253 x 254 255mat2 + mat5$ 256 257 258mat2 - mat5$ 259 260 261mat1-mat1; 262 263 264"Empty Matrix" 265 266mat4 + mat1; 267 268 269 270spm(1,1) := x + 2$ 271 272spm(2,2) := x + 4$ 273 274spm(3,3) := x + 6$ 275 276spm(4,4) := x + 8$ 277 278spm(5,5) := x + 10$ 279 280mat4 * mat1; 281 282 283 284spm(1,1) := 2*x$ 285 286spm(2,2) := 4*x$ 287 288spm(3,3) := 6*x$ 289 290spm(4,4) := 8*x$ 291 292spm(5,5) := 10*x$ 293 294 2952*mat1 + (3*mat4 + mat1); 296 297 298 299spm(1,1) := 3*(x + 2)$ 300 301spm(2,2) := 3*(x + 4)$ 302 303spm(3,3) := 3*(x + 6)$ 304 305spm(4,4) := 3*(x + 8)$ 306 307spm(5,5) := 3*(x + 10)$ 308 309% It is also possible to combine both 'matrix and 'sparse type matrices 310% in these operations. 311 312pp:=band_matrix({1,3,1},100)$ 313 314 315mat5*pp; 316 317 318 319spm(1,1) := 10$ 320 321spm(1,2) := 6$ 322 323spm(1,3) := 1$ 324 325spm(2,1) := 6$ 326 327spm(2,2) := 11$ 328 329spm(2,3) := 6$ 330 331spm(2,4) := 1$ 332 333spm(3,1) := 1$ 334 335spm(3,2) := 6$ 336 337spm(3,3) := 11$ 338 339spm(3,4) := 6$ 340 341spm(3,5) := 1$ 342 343spm(4,2) := 1$ 344 345spm(4,3) := 6$ 346 347spm(4,4) := 11$ 348 349spm(4,5) := 6$ 350 351spm(4,6) := 1$ 352 353spm(5,3) := 1$ 354 355spm(5,4) := 6$ 356 357spm(5,5) := 11$ 358 359spm(5,6) := 6$ 360 361spm(5,7) := 1$ 362 363spm(6,4) := 1$ 364 365spm(6,5) := 6$ 366 367spm(6,6) := 11$ 368 369spm(6,7) := 6$ 370 371spm(6,8) := 1$ 372 373spm(7,5) := 1$ 374 375spm(7,6) := 6$ 376 377spm(7,7) := 11$ 378 379spm(7,8) := 6$ 380 381spm(7,9) := 1$ 382 383spm(8,6) := 1$ 384 385spm(8,7) := 6$ 386 387spm(8,8) := 11$ 388 389spm(8,9) := 6$ 390 391spm(8,10) := 1$ 392 393spm(9,7) := 1$ 394 395spm(9,8) := 6$ 396 397spm(9,9) := 11$ 398 399spm(9,10) := 6$ 400 401spm(9,11) := 1$ 402 403spm(10,8) := 1$ 404 405spm(10,9) := 6$ 406 407spm(10,10) := 11$ 408 409spm(10,11) := 6$ 410 411spm(10,12) := 1$ 412 413spm(11,9) := 1$ 414 415spm(11,10) := 6$ 416 417spm(11,11) := 11$ 418 419spm(11,12) := 6$ 420 421spm(11,13) := 1$ 422 423spm(12,10) := 1$ 424 425spm(12,11) := 6$ 426 427spm(12,12) := 11$ 428 429spm(12,13) := 6$ 430 431spm(12,14) := 1$ 432 433spm(13,11) := 1$ 434 435spm(13,12) := 6$ 436 437spm(13,13) := 11$ 438 439spm(13,14) := 6$ 440 441spm(13,15) := 1$ 442 443spm(14,12) := 1$ 444 445spm(14,13) := 6$ 446 447spm(14,14) := 11$ 448 449spm(14,15) := 6$ 450 451spm(14,16) := 1$ 452 453spm(15,13) := 1$ 454 455spm(15,14) := 6$ 456 457spm(15,15) := 11$ 458 459spm(15,16) := 6$ 460 461spm(15,17) := 1$ 462 463spm(16,14) := 1$ 464 465spm(16,15) := 6$ 466 467spm(16,16) := 11$ 468 469spm(16,17) := 6$ 470 471spm(16,18) := 1$ 472 473spm(17,15) := 1$ 474 475spm(17,16) := 6$ 476 477spm(17,17) := 11$ 478 479spm(17,18) := 6$ 480 481spm(17,19) := 1$ 482 483spm(18,16) := 1$ 484 485spm(18,17) := 6$ 486 487spm(18,18) := 11$ 488 489spm(18,19) := 6$ 490 491spm(18,20) := 1$ 492 493spm(19,17) := 1$ 494 495spm(19,18) := 6$ 496 497spm(19,19) := 11$ 498 499spm(19,20) := 6$ 500 501spm(19,21) := 1$ 502 503spm(20,18) := 1$ 504 505spm(20,19) := 6$ 506 507spm(20,20) := 11$ 508 509spm(20,21) := 6$ 510 511spm(20,22) := 1$ 512 513spm(21,19) := 1$ 514 515spm(21,20) := 6$ 516 517spm(21,21) := 11$ 518 519spm(21,22) := 6$ 520 521spm(21,23) := 1$ 522 523spm(22,20) := 1$ 524 525spm(22,21) := 6$ 526 527spm(22,22) := 11$ 528 529spm(22,23) := 6$ 530 531spm(22,24) := 1$ 532 533spm(23,21) := 1$ 534 535spm(23,22) := 6$ 536 537spm(23,23) := 11$ 538 539spm(23,24) := 6$ 540 541spm(23,25) := 1$ 542 543spm(24,22) := 1$ 544 545spm(24,23) := 6$ 546 547spm(24,24) := 11$ 548 549spm(24,25) := 6$ 550 551spm(24,26) := 1$ 552 553spm(25,23) := 1$ 554 555spm(25,24) := 6$ 556 557spm(25,25) := 11$ 558 559spm(25,26) := 6$ 560 561spm(25,27) := 1$ 562 563spm(26,24) := 1$ 564 565spm(26,25) := 6$ 566 567spm(26,26) := 11$ 568 569spm(26,27) := 6$ 570 571spm(26,28) := 1$ 572 573spm(27,25) := 1$ 574 575spm(27,26) := 6$ 576 577spm(27,27) := 11$ 578 579spm(27,28) := 6$ 580 581spm(27,29) := 1$ 582 583spm(28,26) := 1$ 584 585spm(28,27) := 6$ 586 587spm(28,28) := 11$ 588 589spm(28,29) := 6$ 590 591spm(28,30) := 1$ 592 593spm(29,27) := 1$ 594 595spm(29,28) := 6$ 596 597spm(29,29) := 11$ 598 599spm(29,30) := 6$ 600 601spm(29,31) := 1$ 602 603spm(30,28) := 1$ 604 605spm(30,29) := 6$ 606 607spm(30,30) := 11$ 608 609spm(30,31) := 6$ 610 611spm(30,32) := 1$ 612 613spm(31,29) := 1$ 614 615spm(31,30) := 6$ 616 617spm(31,31) := 11$ 618 619spm(31,32) := 6$ 620 621spm(31,33) := 1$ 622 623spm(32,30) := 1$ 624 625spm(32,31) := 6$ 626 627spm(32,32) := 11$ 628 629spm(32,33) := 6$ 630 631spm(32,34) := 1$ 632 633spm(33,31) := 1$ 634 635spm(33,32) := 6$ 636 637spm(33,33) := 11$ 638 639spm(33,34) := 6$ 640 641spm(33,35) := 1$ 642 643spm(34,32) := 1$ 644 645spm(34,33) := 6$ 646 647spm(34,34) := 11$ 648 649spm(34,35) := 6$ 650 651spm(34,36) := 1$ 652 653spm(35,33) := 1$ 654 655spm(35,34) := 6$ 656 657spm(35,35) := 11$ 658 659spm(35,36) := 6$ 660 661spm(35,37) := 1$ 662 663spm(36,34) := 1$ 664 665spm(36,35) := 6$ 666 667spm(36,36) := 11$ 668 669spm(36,37) := 6$ 670 671spm(36,38) := 1$ 672 673spm(37,35) := 1$ 674 675spm(37,36) := 6$ 676 677spm(37,37) := 11$ 678 679spm(37,38) := 6$ 680 681spm(37,39) := 1$ 682 683spm(38,36) := 1$ 684 685spm(38,37) := 6$ 686 687spm(38,38) := 11$ 688 689spm(38,39) := 6$ 690 691spm(38,40) := 1$ 692 693spm(39,37) := 1$ 694 695spm(39,38) := 6$ 696 697spm(39,39) := 11$ 698 699spm(39,40) := 6$ 700 701spm(39,41) := 1$ 702 703spm(40,38) := 1$ 704 705spm(40,39) := 6$ 706 707spm(40,40) := 11$ 708 709spm(40,41) := 6$ 710 711spm(40,42) := 1$ 712 713spm(41,39) := 1$ 714 715spm(41,40) := 6$ 716 717spm(41,41) := 11$ 718 719spm(41,42) := 6$ 720 721spm(41,43) := 1$ 722 723spm(42,40) := 1$ 724 725spm(42,41) := 6$ 726 727spm(42,42) := 11$ 728 729spm(42,43) := 6$ 730 731spm(42,44) := 1$ 732 733spm(43,41) := 1$ 734 735spm(43,42) := 6$ 736 737spm(43,43) := 11$ 738 739spm(43,44) := 6$ 740 741spm(43,45) := 1$ 742 743spm(44,42) := 1$ 744 745spm(44,43) := 6$ 746 747spm(44,44) := 11$ 748 749spm(44,45) := 6$ 750 751spm(44,46) := 1$ 752 753spm(45,43) := 1$ 754 755spm(45,44) := 6$ 756 757spm(45,45) := 11$ 758 759spm(45,46) := 6$ 760 761spm(45,47) := 1$ 762 763spm(46,44) := 1$ 764 765spm(46,45) := 6$ 766 767spm(46,46) := 11$ 768 769spm(46,47) := 6$ 770 771spm(46,48) := 1$ 772 773spm(47,45) := 1$ 774 775spm(47,46) := 6$ 776 777spm(47,47) := 11$ 778 779spm(47,48) := 6$ 780 781spm(47,49) := 1$ 782 783spm(48,46) := 1$ 784 785spm(48,47) := 6$ 786 787spm(48,48) := 11$ 788 789spm(48,49) := 6$ 790 791spm(48,50) := 1$ 792 793spm(49,47) := 1$ 794 795spm(49,48) := 6$ 796 797spm(49,49) := 11$ 798 799spm(49,50) := 6$ 800 801spm(49,51) := 1$ 802 803spm(50,48) := 1$ 804 805spm(50,49) := 6$ 806 807spm(50,50) := 11$ 808 809spm(50,51) := 6$ 810 811spm(50,52) := 1$ 812 813spm(51,49) := 1$ 814 815spm(51,50) := 6$ 816 817spm(51,51) := 11$ 818 819spm(51,52) := 6$ 820 821spm(51,53) := 1$ 822 823spm(52,50) := 1$ 824 825spm(52,51) := 6$ 826 827spm(52,52) := 11$ 828 829spm(52,53) := 6$ 830 831spm(52,54) := 1$ 832 833spm(53,51) := 1$ 834 835spm(53,52) := 6$ 836 837spm(53,53) := 11$ 838 839spm(53,54) := 6$ 840 841spm(53,55) := 1$ 842 843spm(54,52) := 1$ 844 845spm(54,53) := 6$ 846 847spm(54,54) := 11$ 848 849spm(54,55) := 6$ 850 851spm(54,56) := 1$ 852 853spm(55,53) := 1$ 854 855spm(55,54) := 6$ 856 857spm(55,55) := 11$ 858 859spm(55,56) := 6$ 860 861spm(55,57) := 1$ 862 863spm(56,54) := 1$ 864 865spm(56,55) := 6$ 866 867spm(56,56) := 11$ 868 869spm(56,57) := 6$ 870 871spm(56,58) := 1$ 872 873spm(57,55) := 1$ 874 875spm(57,56) := 6$ 876 877spm(57,57) := 11$ 878 879spm(57,58) := 6$ 880 881spm(57,59) := 1$ 882 883spm(58,56) := 1$ 884 885spm(58,57) := 6$ 886 887spm(58,58) := 11$ 888 889spm(58,59) := 6$ 890 891spm(58,60) := 1$ 892 893spm(59,57) := 1$ 894 895spm(59,58) := 6$ 896 897spm(59,59) := 11$ 898 899spm(59,60) := 6$ 900 901spm(59,61) := 1$ 902 903spm(60,58) := 1$ 904 905spm(60,59) := 6$ 906 907spm(60,60) := 11$ 908 909spm(60,61) := 6$ 910 911spm(60,62) := 1$ 912 913spm(61,59) := 1$ 914 915spm(61,60) := 6$ 916 917spm(61,61) := 11$ 918 919spm(61,62) := 6$ 920 921spm(61,63) := 1$ 922 923spm(62,60) := 1$ 924 925spm(62,61) := 6$ 926 927spm(62,62) := 11$ 928 929spm(62,63) := 6$ 930 931spm(62,64) := 1$ 932 933spm(63,61) := 1$ 934 935spm(63,62) := 6$ 936 937spm(63,63) := 11$ 938 939spm(63,64) := 6$ 940 941spm(63,65) := 1$ 942 943spm(64,62) := 1$ 944 945spm(64,63) := 6$ 946 947spm(64,64) := 11$ 948 949spm(64,65) := 6$ 950 951spm(64,66) := 1$ 952 953spm(65,63) := 1$ 954 955spm(65,64) := 6$ 956 957spm(65,65) := 11$ 958 959spm(65,66) := 6$ 960 961spm(65,67) := 1$ 962 963spm(66,64) := 1$ 964 965spm(66,65) := 6$ 966 967spm(66,66) := 11$ 968 969spm(66,67) := 6$ 970 971spm(66,68) := 1$ 972 973spm(67,65) := 1$ 974 975spm(67,66) := 6$ 976 977spm(67,67) := 11$ 978 979spm(67,68) := 6$ 980 981spm(67,69) := 1$ 982 983spm(68,66) := 1$ 984 985spm(68,67) := 6$ 986 987spm(68,68) := 11$ 988 989spm(68,69) := 6$ 990 991spm(68,70) := 1$ 992 993spm(69,67) := 1$ 994 995spm(69,68) := 6$ 996 997spm(69,69) := 11$ 998 999spm(69,70) := 6$ 1000 1001spm(69,71) := 1$ 1002 1003spm(70,68) := 1$ 1004 1005spm(70,69) := 6$ 1006 1007spm(70,70) := 11$ 1008 1009spm(70,71) := 6$ 1010 1011spm(70,72) := 1$ 1012 1013spm(71,69) := 1$ 1014 1015spm(71,70) := 6$ 1016 1017spm(71,71) := 11$ 1018 1019spm(71,72) := 6$ 1020 1021spm(71,73) := 1$ 1022 1023spm(72,70) := 1$ 1024 1025spm(72,71) := 6$ 1026 1027spm(72,72) := 11$ 1028 1029spm(72,73) := 6$ 1030 1031spm(72,74) := 1$ 1032 1033spm(73,71) := 1$ 1034 1035spm(73,72) := 6$ 1036 1037spm(73,73) := 11$ 1038 1039spm(73,74) := 6$ 1040 1041spm(73,75) := 1$ 1042 1043spm(74,72) := 1$ 1044 1045spm(74,73) := 6$ 1046 1047spm(74,74) := 11$ 1048 1049spm(74,75) := 6$ 1050 1051spm(74,76) := 1$ 1052 1053spm(75,73) := 1$ 1054 1055spm(75,74) := 6$ 1056 1057spm(75,75) := 11$ 1058 1059spm(75,76) := 6$ 1060 1061spm(75,77) := 1$ 1062 1063spm(76,74) := 1$ 1064 1065spm(76,75) := 6$ 1066 1067spm(76,76) := 11$ 1068 1069spm(76,77) := 6$ 1070 1071spm(76,78) := 1$ 1072 1073spm(77,75) := 1$ 1074 1075spm(77,76) := 6$ 1076 1077spm(77,77) := 11$ 1078 1079spm(77,78) := 6$ 1080 1081spm(77,79) := 1$ 1082 1083spm(78,76) := 1$ 1084 1085spm(78,77) := 6$ 1086 1087spm(78,78) := 11$ 1088 1089spm(78,79) := 6$ 1090 1091spm(78,80) := 1$ 1092 1093spm(79,77) := 1$ 1094 1095spm(79,78) := 6$ 1096 1097spm(79,79) := 11$ 1098 1099spm(79,80) := 6$ 1100 1101spm(79,81) := 1$ 1102 1103spm(80,78) := 1$ 1104 1105spm(80,79) := 6$ 1106 1107spm(80,80) := 11$ 1108 1109spm(80,81) := 6$ 1110 1111spm(80,82) := 1$ 1112 1113spm(81,79) := 1$ 1114 1115spm(81,80) := 6$ 1116 1117spm(81,81) := 11$ 1118 1119spm(81,82) := 6$ 1120 1121spm(81,83) := 1$ 1122 1123spm(82,80) := 1$ 1124 1125spm(82,81) := 6$ 1126 1127spm(82,82) := 11$ 1128 1129spm(82,83) := 6$ 1130 1131spm(82,84) := 1$ 1132 1133spm(83,81) := 1$ 1134 1135spm(83,82) := 6$ 1136 1137spm(83,83) := 11$ 1138 1139spm(83,84) := 6$ 1140 1141spm(83,85) := 1$ 1142 1143spm(84,82) := 1$ 1144 1145spm(84,83) := 6$ 1146 1147spm(84,84) := 11$ 1148 1149spm(84,85) := 6$ 1150 1151spm(84,86) := 1$ 1152 1153spm(85,83) := 1$ 1154 1155spm(85,84) := 6$ 1156 1157spm(85,85) := 11$ 1158 1159spm(85,86) := 6$ 1160 1161spm(85,87) := 1$ 1162 1163spm(86,84) := 1$ 1164 1165spm(86,85) := 6$ 1166 1167spm(86,86) := 11$ 1168 1169spm(86,87) := 6$ 1170 1171spm(86,88) := 1$ 1172 1173spm(87,85) := 1$ 1174 1175spm(87,86) := 6$ 1176 1177spm(87,87) := 11$ 1178 1179spm(87,88) := 6$ 1180 1181spm(87,89) := 1$ 1182 1183spm(88,86) := 1$ 1184 1185spm(88,87) := 6$ 1186 1187spm(88,88) := 11$ 1188 1189spm(88,89) := 6$ 1190 1191spm(88,90) := 1$ 1192 1193spm(89,87) := 1$ 1194 1195spm(89,88) := 6$ 1196 1197spm(89,89) := 11$ 1198 1199spm(89,90) := 6$ 1200 1201spm(89,91) := 1$ 1202 1203spm(90,88) := 1$ 1204 1205spm(90,89) := 6$ 1206 1207spm(90,90) := 11$ 1208 1209spm(90,91) := 6$ 1210 1211spm(90,92) := 1$ 1212 1213spm(91,89) := 1$ 1214 1215spm(91,90) := 6$ 1216 1217spm(91,91) := 11$ 1218 1219spm(91,92) := 6$ 1220 1221spm(91,93) := 1$ 1222 1223spm(92,90) := 1$ 1224 1225spm(92,91) := 6$ 1226 1227spm(92,92) := 11$ 1228 1229spm(92,93) := 6$ 1230 1231spm(92,94) := 1$ 1232 1233spm(93,91) := 1$ 1234 1235spm(93,92) := 6$ 1236 1237spm(93,93) := 11$ 1238 1239spm(93,94) := 6$ 1240 1241spm(93,95) := 1$ 1242 1243spm(94,92) := 1$ 1244 1245spm(94,93) := 6$ 1246 1247spm(94,94) := 11$ 1248 1249spm(94,95) := 6$ 1250 1251spm(94,96) := 1$ 1252 1253spm(95,93) := 1$ 1254 1255spm(95,94) := 6$ 1256 1257spm(95,95) := 11$ 1258 1259spm(95,96) := 6$ 1260 1261spm(95,97) := 1$ 1262 1263spm(96,94) := 1$ 1264 1265spm(96,95) := 6$ 1266 1267spm(96,96) := 11$ 1268 1269spm(96,97) := 6$ 1270 1271spm(96,98) := 1$ 1272 1273spm(97,95) := 1$ 1274 1275spm(97,96) := 6$ 1276 1277spm(97,97) := 11$ 1278 1279spm(97,98) := 6$ 1280 1281spm(97,99) := 1$ 1282 1283spm(98,96) := 1$ 1284 1285spm(98,97) := 6$ 1286 1287spm(98,98) := 11$ 1288 1289spm(98,99) := 6$ 1290 1291spm(98,100) := 1$ 1292 1293spm(99,97) := 1$ 1294 1295spm(99,98) := 6$ 1296 1297spm(99,99) := 11$ 1298 1299spm(99,100) := 6$ 1300 1301spm(100,98) := 1$ 1302 1303spm(100,99) := 6$ 1304 1305spm(100,100) := 10$ 1306 1307 1308mat5^2$ 1309 1310 1311 1312det(mat1); 1313 1314 13153840 1316 1317det(mat4); 1318 1319 1320 5 1321x 1322 1323trace(mat1); 1324 1325 132630 1327 1328trace(mat4); 1329 1330 13315*x 1332 1333 1334rank(mat1); 1335 1336 13375 1338 1339rank mat5; 1340 1341 1342100 1343 1344 1345tp(mat3); 1346 1347 1348 1349spm(1,1) := 1$ 1350 1351spm(1,2) := 3$ 1352 1353spm(2,1) := 2$ 1354 1355spm(2,2) := 4$ 1356 1357spm(3,3) := 1$ 1358 1359spm(3,4) := 3$ 1360 1361spm(4,3) := 2$ 1362 1363spm(4,4) := 4$ 1364 1365spm(5,5) := 1$ 1366 1367spm(5,6) := 3$ 1368 1369spm(6,5) := 2$ 1370 1371spm(6,6) := 4$ 1372 1373 1374spmateigen(mat3,eta); 1375 1376 1377 2 1378{{eta - 5*eta - 2,3, 1379 1380 2*arbcomplex(1)*(eta + 1) 1381 spm(1,1) := ---------------------------$ 1382 5*eta + 1 1383 1384 spm(2,1) := arbcomplex(1)$ 1385 1386 2*arbcomplex(2)*(eta + 1) 1387 spm(3,1) := ---------------------------$ 1388 5*eta + 1 1389 1390 spm(4,1) := arbcomplex(2)$ 1391 1392 2*arbcomplex(3)*(eta + 1) 1393 spm(5,1) := ---------------------------$ 1394 5*eta + 1 1395 1396 spm(6,1) := arbcomplex(3)$ 1397 }} 1398 1399 1400% Next, tests for the Linear Algebra Package for Sparse Matrices. 1401 1402%Basic matrix manipulations. 1403 1404spadd_columns(mat1,1,2,5*y); 1405 1406 1407 1408spm(1,1) := 2$ 1409 1410spm(1,2) := 10*y$ 1411 1412spm(2,2) := 4$ 1413 1414spm(3,3) := 6$ 1415 1416spm(4,4) := 8$ 1417 1418spm(5,5) := 10$ 1419 1420spadd_rows(mat1,1,2,x); 1421 1422 1423 1424spm(1,1) := 2$ 1425 1426spm(2,1) := 2*x$ 1427 1428spm(2,2) := 4$ 1429 1430spm(3,3) := 6$ 1431 1432spm(4,4) := 8$ 1433 1434spm(5,5) := 10$ 1435 1436 1437spadd_to_columns(mat1,3,1000); 1438 1439 1440 1441spm(1,1) := 2$ 1442 1443spm(1,3) := 1000$ 1444 1445spm(2,2) := 4$ 1446 1447spm(2,3) := 1000$ 1448 1449spm(3,3) := 1006$ 1450 1451spm(4,3) := 1000$ 1452 1453spm(4,4) := 8$ 1454 1455spm(5,3) := 1000$ 1456 1457spm(5,5) := 10$ 1458 1459spadd_to_columns(mat5,{1,2,3},y)$ 1460 1461 1462spadd_to_rows(mat1,2,1000); 1463 1464 1465 1466spm(1,1) := 2$ 1467 1468spm(2,1) := 1000$ 1469 1470spm(2,2) := 1004$ 1471 1472spm(2,3) := 1000$ 1473 1474spm(2,4) := 1000$ 1475 1476spm(2,5) := 1000$ 1477 1478spm(3,3) := 6$ 1479 1480spm(4,4) := 8$ 1481 1482spm(5,5) := 10$ 1483 1484spadd_to_rows(mat5,{1,2,3},x)$ 1485 1486 1487 1488spaugment_columns(mat3,2); 1489 1490 1491 1492spm(1,1) := 2$ 1493 1494spm(2,1) := 4$ 1495 1496spaugment_columns(mat1,{1,2,5}); 1497 1498 1499 1500spm(1,1) := 2$ 1501 1502spm(2,2) := 4$ 1503 1504spm(5,3) := 10$ 1505 1506spstack_rows(mat1,3); 1507 1508 1509 1510spm(1,3) := 6$ 1511 1512spstack_rows(mat1,{1,3,5}); 1513 1514 1515 1516spm(1,1) := 2$ 1517 1518spm(2,3) := 6$ 1519 1520spm(3,5) := 10$ 1521 1522 1523spchar_poly(mat1,x); 1524 1525 1526 5 4 3 2 1527x - 30*x + 340*x - 1800*x + 4384*x - 3840 1528 1529 1530spcol_dim(mat2); 1531 1532 1533100 1534 1535sprow_dim(mat1); 1536 1537 15385 1539 1540 1541spcopy_into(mat7,mat1,2,2); 1542 1543 1544 1545spm(1,1) := 2$ 1546 1547spm(2,2) := b$ 1548 1549spm(2,3) := c$ 1550 1551spm(3,2) := a$ 1552 1553spm(3,3) := b$ 1554 1555spm(3,4) := c$ 1556 1557spm(4,3) := a$ 1558 1559spm(4,4) := b$ 1560 1561spm(4,5) := c$ 1562 1563spm(5,4) := a$ 1564 1565spm(5,5) := b$ 1566 1567spcopy_into(mat7,mat1,5,5); 1568 1569***** Error in spcopy_into: the matrix 1570 1571spm(1,1) := b$ 1572 1573spm(1,2) := c$ 1574 1575spm(2,1) := a$ 1576 1577spm(2,2) := b$ 1578 1579spm(2,3) := c$ 1580 1581spm(3,2) := a$ 1582 1583spm(3,3) := b$ 1584 1585spm(3,4) := c$ 1586 1587spm(4,3) := a$ 1588 1589spm(4,4) := b$ 1590 does not fit into 1591 1592spm(1,1) := 2$ 1593 1594spm(2,2) := 4$ 1595 1596spm(3,3) := 6$ 1597 1598spm(4,4) := 8$ 1599 1600spm(5,5) := 10$ 1601 at position 5,5. 1602 1603spcopy_into(zz1,mat1,1,1); 1604 1605 1606 1607spm(1,1) := 1$ 1608 1609spm(1,2) := 2$ 1610 1611spm(2,1) := 3$ 1612 1613spm(2,2) := 4$ 1614 1615spm(3,3) := 6$ 1616 1617spm(4,4) := 8$ 1618 1619spm(5,5) := 10$ 1620 1621 1622spdiagonal(3); 1623 1624 1625 1626spm(1,1) := 3$ 1627 1628% spdiagonal can take both a list of arguments or just the arguments. 1629spdiagonal({mat2,mat5})$ 1630 1631 1632spdiagonal(mat2,mat5)$ 1633 1634 1635% spdiagonal can also take a mixture of 'sparse and 'matrix types. 1636spdiagonal(zz1,mat4,zz1); 1637 1638 1639 1640spm(1,1) := 1$ 1641 1642spm(1,2) := 2$ 1643 1644spm(2,1) := 3$ 1645 1646spm(2,2) := 4$ 1647 1648spm(3,3) := x$ 1649 1650spm(4,4) := x$ 1651 1652spm(5,5) := x$ 1653 1654spm(6,6) := x$ 1655 1656spm(7,7) := x$ 1657 1658spm(8,8) := 1$ 1659 1660spm(8,9) := 2$ 1661 1662spm(9,8) := 3$ 1663 1664spm(9,9) := 4$ 1665 1666 1667spextend(mat1,3,2,x); 1668 1669 1670 1671spm(1,1) := 2$ 1672 1673spm(2,2) := 4$ 1674 1675spm(3,3) := 6$ 1676 1677spm(4,4) := 8$ 1678 1679spm(5,5) := 10$ 1680 1681spm(6,6) := x$ 1682 1683spm(6,7) := x$ 1684 1685spm(7,6) := x$ 1686 1687spm(7,7) := x$ 1688 1689spm(8,6) := x$ 1690 1691spm(8,7) := x$ 1692 1693 1694spfind_companion(mat5,x); 1695 1696 1697 98 2 1698x *(x - 3*x - 1) 1699 1700 1701spget_columns(mat1,1); 1702 1703 1704{ 1705 1706 spm(1,1) := 2$ 1707 } 1708 1709spget_columns(mat1,{1,2}); 1710 1711 1712{ 1713 1714 spm(1,1) := 2$ 1715 , 1716 1717 spm(2,1) := 4$ 1718 } 1719 1720spget_rows(mat1,3); 1721 1722 1723{ 1724 1725 spm(1,3) := 6$ 1726 } 1727 1728spget_rows(mat1,{1,3}); 1729 1730 1731{ 1732 1733 spm(1,1) := 2$ 1734 , 1735 1736 spm(1,3) := 6$ 1737 } 1738 1739 1740sphermitian_tp(mat6); 1741 1742 1743 1744spm(1,1) := - i + 1$ 1745 1746spm(1,2) := 4$ 1747 1748spm(1,3) := 1$ 1749 1750spm(2,1) := - i + 2$ 1751 1752spm(2,2) := 5$ 1753 1754spm(2,3) := - i$ 1755 1756spm(3,1) := - i + 3$ 1757 1758spm(3,2) := 2$ 1759 1760spm(4,4) := - i + 1$ 1761 1762spm(4,5) := 4$ 1763 1764spm(4,6) := 1$ 1765 1766spm(5,4) := - i + 2$ 1767 1768spm(5,5) := 5$ 1769 1770spm(5,6) := - i$ 1771 1772spm(6,4) := - i + 3$ 1773 1774spm(6,5) := 2$ 1775 1776 1777% matrix_augment and matrix_stack can take both a list of arguments 1778% or just the arguments. 1779 1780spmatrix_augment({mat1,mat1}); 1781 1782 1783 1784spm(1,1) := 2$ 1785 1786spm(1,6) := 2$ 1787 1788spm(2,2) := 4$ 1789 1790spm(2,7) := 4$ 1791 1792spm(3,3) := 6$ 1793 1794spm(3,8) := 6$ 1795 1796spm(4,4) := 8$ 1797 1798spm(4,9) := 8$ 1799 1800spm(5,5) := 10$ 1801 1802spm(5,10) := 10$ 1803 1804spmatrix_augment(mat5,mat2,mat5)$ 1805 1806 1807spmatrix_stack(mat2,mat2)$ 1808 1809 1810 1811spminor(mat1,2,3); 1812 1813 1814 1815spm(1,1) := 2$ 1816 1817spm(3,3) := 8$ 1818 1819spm(4,4) := 10$ 1820 1821 1822spmult_columns(mat1,3,y); 1823 1824 1825 1826spm(1,1) := 2$ 1827 1828spm(2,2) := 4$ 1829 1830spm(3,3) := 6*y$ 1831 1832spm(4,4) := 8$ 1833 1834spm(5,5) := 10$ 1835 1836spmult_columns(mat2,{2,3,4},100)$ 1837 1838 1839spmult_rows(mat2,2,x); 1840 1841 1842 1843spm(1,1) := 1$ 1844 1845spm(2,2) := 2*x$ 1846 1847spm(3,3) := 3$ 1848 1849spm(4,4) := 4$ 1850 1851spm(5,5) := 5$ 1852 1853spm(6,6) := 6$ 1854 1855spm(7,7) := 7$ 1856 1857spm(8,8) := 8$ 1858 1859spm(9,9) := 9$ 1860 1861spm(10,10) := 10$ 1862 1863spm(11,11) := 11$ 1864 1865spm(12,12) := 12$ 1866 1867spm(13,13) := 13$ 1868 1869spm(14,14) := 14$ 1870 1871spm(15,15) := 15$ 1872 1873spm(16,16) := 16$ 1874 1875spm(17,17) := 17$ 1876 1877spm(18,18) := 18$ 1878 1879spm(19,19) := 19$ 1880 1881spm(20,20) := 20$ 1882 1883spm(21,21) := 21$ 1884 1885spm(22,22) := 22$ 1886 1887spm(23,23) := 23$ 1888 1889spm(24,24) := 24$ 1890 1891spm(25,25) := 25$ 1892 1893spm(26,26) := 26$ 1894 1895spm(27,27) := 27$ 1896 1897spm(28,28) := 28$ 1898 1899spm(29,29) := 29$ 1900 1901spm(30,30) := 30$ 1902 1903spm(31,31) := 31$ 1904 1905spm(32,32) := 32$ 1906 1907spm(33,33) := 33$ 1908 1909spm(34,34) := 34$ 1910 1911spm(35,35) := 35$ 1912 1913spm(36,36) := 36$ 1914 1915spm(37,37) := 37$ 1916 1917spm(38,38) := 38$ 1918 1919spm(39,39) := 39$ 1920 1921spm(40,40) := 40$ 1922 1923spm(41,41) := 41$ 1924 1925spm(42,42) := 42$ 1926 1927spm(43,43) := 43$ 1928 1929spm(44,44) := 44$ 1930 1931spm(45,45) := 45$ 1932 1933spm(46,46) := 46$ 1934 1935spm(47,47) := 47$ 1936 1937spm(48,48) := 48$ 1938 1939spm(49,49) := 49$ 1940 1941spm(50,50) := 50$ 1942 1943spm(51,51) := 51$ 1944 1945spm(52,52) := 52$ 1946 1947spm(53,53) := 53$ 1948 1949spm(54,54) := 54$ 1950 1951spm(55,55) := 55$ 1952 1953spm(56,56) := 56$ 1954 1955spm(57,57) := 57$ 1956 1957spm(58,58) := 58$ 1958 1959spm(59,59) := 59$ 1960 1961spm(60,60) := 60$ 1962 1963spm(61,61) := 61$ 1964 1965spm(62,62) := 62$ 1966 1967spm(63,63) := 63$ 1968 1969spm(64,64) := 64$ 1970 1971spm(65,65) := 65$ 1972 1973spm(66,66) := 66$ 1974 1975spm(67,67) := 67$ 1976 1977spm(68,68) := 68$ 1978 1979spm(69,69) := 69$ 1980 1981spm(70,70) := 70$ 1982 1983spm(71,71) := 71$ 1984 1985spm(72,72) := 72$ 1986 1987spm(73,73) := 73$ 1988 1989spm(74,74) := 74$ 1990 1991spm(75,75) := 75$ 1992 1993spm(76,76) := 76$ 1994 1995spm(77,77) := 77$ 1996 1997spm(78,78) := 78$ 1998 1999spm(79,79) := 79$ 2000 2001spm(80,80) := 80$ 2002 2003spm(81,81) := 81$ 2004 2005spm(82,82) := 82$ 2006 2007spm(83,83) := 83$ 2008 2009spm(84,84) := 84$ 2010 2011spm(85,85) := 85$ 2012 2013spm(86,86) := 86$ 2014 2015spm(87,87) := 87$ 2016 2017spm(88,88) := 88$ 2018 2019spm(89,89) := 89$ 2020 2021spm(90,90) := 90$ 2022 2023spm(91,91) := 91$ 2024 2025spm(92,92) := 92$ 2026 2027spm(93,93) := 93$ 2028 2029spm(94,94) := 94$ 2030 2031spm(95,95) := 95$ 2032 2033spm(96,96) := 96$ 2034 2035spm(97,97) := 97$ 2036 2037spm(98,98) := 98$ 2038 2039spm(99,99) := 99$ 2040 2041spm(100,100) := 100$ 2042 2043spmult_rows(mat1,{1,3,5},10); 2044 2045 2046 2047spm(1,1) := 20$ 2048 2049spm(2,2) := 4$ 2050 2051spm(3,3) := 60$ 2052 2053spm(4,4) := 8$ 2054 2055spm(5,5) := 100$ 2056 2057 2058sppivot(mat3,3,3); 2059 2060 2061 2062spm(1,1) := 1$ 2063 2064spm(1,2) := 2$ 2065 2066spm(2,1) := 3$ 2067 2068spm(2,2) := 4$ 2069 2070spm(3,3) := 1$ 2071 2072spm(3,4) := 2$ 2073 2074spm(4,4) := -2$ 2075 2076spm(5,5) := 1$ 2077 2078spm(5,6) := 2$ 2079 2080spm(6,5) := 3$ 2081 2082spm(6,6) := 4$ 2083 2084sprows_pivot(mat3,1,1,{2,4}); 2085 2086 2087 2088spm(1,1) := 1$ 2089 2090spm(1,2) := 2$ 2091 2092spm(2,2) := -2$ 2093 2094spm(3,3) := 1$ 2095 2096spm(3,4) := 2$ 2097 2098spm(4,3) := 3$ 2099 2100spm(4,4) := 4$ 2101 2102spm(5,5) := 1$ 2103 2104spm(5,6) := 2$ 2105 2106spm(6,5) := 3$ 2107 2108spm(6,6) := 4$ 2109 2110 2111spremove_columns(mat1,3); 2112 2113 2114 2115spm(1,1) := 2$ 2116 2117spm(2,2) := 4$ 2118 2119spm(4,3) := 8$ 2120 2121spm(5,4) := 10$ 2122 2123spremove_columns(mat3,{2,3,4}); 2124 2125 2126 2127spm(1,1) := 1$ 2128 2129spm(2,1) := 3$ 2130 2131spm(5,2) := 1$ 2132 2133spm(5,3) := 2$ 2134 2135spm(6,2) := 3$ 2136 2137spm(6,3) := 4$ 2138 2139spremove_rows(mat1,2); 2140 2141 2142 2143spm(1,1) := 2$ 2144 2145spm(2,3) := 6$ 2146 2147spm(3,4) := 8$ 2148 2149spm(4,5) := 10$ 2150 2151spremove_rows(mat2,{1,3})$ 2152 2153 2154spremove_rows(mat1,{1,2,3,4,5}); 2155 2156***** Warning in spremove_rows: 2157 all the rows have been removed. Returning nil. 2158 2159 2160spswap_cols(mat1,2,4); 2161 2162 2163 2164spm(1,1) := 2$ 2165 2166spm(2,4) := 4$ 2167 2168spm(3,3) := 6$ 2169 2170spm(4,2) := 8$ 2171 2172spm(5,5) := 10$ 2173 2174spswap_rows(mat5,1,2)$ 2175 2176 2177spswap_entries(mat1,{1,1},{5,5}); 2178 2179 2180 2181spm(1,1) := 10$ 2182 2183spm(2,2) := 4$ 2184 2185spm(3,3) := 6$ 2186 2187spm(4,4) := 8$ 2188 2189spm(5,5) := 2$ 2190 2191 2192 2193 2194% Constructors - functions that create matrices. 2195 2196spband_matrix(x,500)$ 2197 2198 2199spband_matrix({x,y,z},6000)$ 2200 2201 2202 2203spblock_matrix(1,2,{mat1,mat1}); 2204 2205 2206 2207spm(1,1) := 2$ 2208 2209spm(1,6) := 2$ 2210 2211spm(2,2) := 4$ 2212 2213spm(2,7) := 4$ 2214 2215spm(3,3) := 6$ 2216 2217spm(3,8) := 6$ 2218 2219spm(4,4) := 8$ 2220 2221spm(4,9) := 8$ 2222 2223spm(5,5) := 10$ 2224 2225spm(5,10) := 10$ 2226 2227spblock_matrix(2,3,{mat3,mat6,mat3,mat6,mat3,mat6}); 2228 2229 2230 2231spm(1,1) := 1$ 2232 2233spm(1,2) := 2$ 2234 2235spm(1,7) := i + 1$ 2236 2237spm(1,8) := i + 2$ 2238 2239spm(1,9) := i + 3$ 2240 2241spm(1,13) := 1$ 2242 2243spm(1,14) := 2$ 2244 2245spm(2,1) := 3$ 2246 2247spm(2,2) := 4$ 2248 2249spm(2,7) := 4$ 2250 2251spm(2,8) := 5$ 2252 2253spm(2,9) := 2$ 2254 2255spm(2,13) := 3$ 2256 2257spm(2,14) := 4$ 2258 2259spm(3,3) := 1$ 2260 2261spm(3,4) := 2$ 2262 2263spm(3,7) := 1$ 2264 2265spm(3,8) := i$ 2266 2267spm(3,15) := 1$ 2268 2269spm(3,16) := 2$ 2270 2271spm(4,3) := 3$ 2272 2273spm(4,4) := 4$ 2274 2275spm(4,10) := i + 1$ 2276 2277spm(4,11) := i + 2$ 2278 2279spm(4,12) := i + 3$ 2280 2281spm(4,15) := 3$ 2282 2283spm(4,16) := 4$ 2284 2285spm(5,5) := 1$ 2286 2287spm(5,6) := 2$ 2288 2289spm(5,10) := 4$ 2290 2291spm(5,11) := 5$ 2292 2293spm(5,12) := 2$ 2294 2295spm(5,17) := 1$ 2296 2297spm(5,18) := 2$ 2298 2299spm(6,5) := 3$ 2300 2301spm(6,6) := 4$ 2302 2303spm(6,10) := 1$ 2304 2305spm(6,11) := i$ 2306 2307spm(6,17) := 3$ 2308 2309spm(6,18) := 4$ 2310 2311spm(7,1) := i + 1$ 2312 2313spm(7,2) := i + 2$ 2314 2315spm(7,3) := i + 3$ 2316 2317spm(7,7) := 1$ 2318 2319spm(7,8) := 2$ 2320 2321spm(7,13) := i + 1$ 2322 2323spm(7,14) := i + 2$ 2324 2325spm(7,15) := i + 3$ 2326 2327spm(8,1) := 4$ 2328 2329spm(8,2) := 5$ 2330 2331spm(8,3) := 2$ 2332 2333spm(8,7) := 3$ 2334 2335spm(8,8) := 4$ 2336 2337spm(8,13) := 4$ 2338 2339spm(8,14) := 5$ 2340 2341spm(8,15) := 2$ 2342 2343spm(9,1) := 1$ 2344 2345spm(9,2) := i$ 2346 2347spm(9,9) := 1$ 2348 2349spm(9,10) := 2$ 2350 2351spm(9,13) := 1$ 2352 2353spm(9,14) := i$ 2354 2355spm(10,4) := i + 1$ 2356 2357spm(10,5) := i + 2$ 2358 2359spm(10,6) := i + 3$ 2360 2361spm(10,9) := 3$ 2362 2363spm(10,10) := 4$ 2364 2365spm(10,16) := i + 1$ 2366 2367spm(10,17) := i + 2$ 2368 2369spm(10,18) := i + 3$ 2370 2371spm(11,4) := 4$ 2372 2373spm(11,5) := 5$ 2374 2375spm(11,6) := 2$ 2376 2377spm(11,11) := 1$ 2378 2379spm(11,12) := 2$ 2380 2381spm(11,16) := 4$ 2382 2383spm(11,17) := 5$ 2384 2385spm(11,18) := 2$ 2386 2387spm(12,4) := 1$ 2388 2389spm(12,5) := i$ 2390 2391spm(12,11) := 3$ 2392 2393spm(12,12) := 4$ 2394 2395spm(12,16) := 1$ 2396 2397spm(12,17) := i$ 2398 2399 2400spchar_matrix(mat3,x); 2401 2402 2403 2404spm(1,1) := x - 1$ 2405 2406spm(1,2) := -2$ 2407 2408spm(2,1) := -3$ 2409 2410spm(2,2) := x - 4$ 2411 2412spm(3,3) := x - 1$ 2413 2414spm(3,4) := -2$ 2415 2416spm(4,3) := -3$ 2417 2418spm(4,4) := x - 4$ 2419 2420spm(5,5) := x - 1$ 2421 2422spm(5,6) := -2$ 2423 2424spm(6,5) := -3$ 2425 2426spm(6,6) := x - 4$ 2427 2428 2429cfmat := spcoeff_matrix({y+4*+-5*w=10,y-z=20,y+4+3*z,w+x+50}); 2430 2431 2432{ 2433 2434 spm(1,1) := 1$ 2435 2436 spm(1,2) := -20$ 2437 2438 spm(2,1) := 1$ 2439 2440 spm(2,3) := -1$ 2441 2442 spm(3,1) := 1$ 2443 2444 spm(3,3) := 3$ 2445 2446 spm(4,2) := 1$ 2447 2448 spm(4,4) := 1$ 2449 , 2450 2451 spm(1,1) := y$ 2452 2453 spm(2,1) := w$ 2454 2455 spm(3,1) := z$ 2456 2457 spm(4,1) := x$ 2458 , 2459 2460 spm(1,1) := 10$ 2461 2462 spm(2,1) := 20$ 2463 2464 spm(3,1) := -4$ 2465 2466 spm(4,1) := -50$ 2467cfmat := } 2468 2469first cfmat * second cfmat; 2470 2471 2472 2473spm(1,1) := - 20*w + y$ 2474 2475spm(2,1) := y - z$ 2476 2477spm(3,1) := y + 3*z$ 2478 2479spm(4,1) := w + x$ 2480 2481third cfmat; 2482 2483 2484 2485spm(1,1) := 10$ 2486 2487spm(2,1) := 20$ 2488 2489spm(3,1) := -4$ 2490 2491spm(4,1) := -50$ 2492 2493 2494spcompanion(poly,x); 2495 2496 2497 2498spm(1,7) := -12$ 2499 2500spm(2,1) := 1$ 2501 2502spm(3,2) := 1$ 2503 2504spm(4,3) := 1$ 2505 2506spm(4,7) := -5$ 2507 2508spm(5,4) := 1$ 2509 2510spm(5,7) := -4$ 2511 2512spm(6,5) := 1$ 2513 2514spm(6,7) := -1$ 2515 2516spm(7,6) := 1$ 2517 2518 2519sphessian(poly1,{w,x,y,z}); 2520 2521 2522 2523spm(2,2) := 2$ 2524 2525 2 3 2526spm(2,3) := 3*y + z + 1$ 2527 2528 2 2529spm(2,4) := 3*y*z $ 2530 2531 2 3 2532spm(3,2) := 3*y + z + 1$ 2533 2534spm(3,3) := 6*x*y$ 2535 2536 2 2537spm(3,4) := 3*x*z $ 2538 2539 2 2540spm(4,2) := 3*y*z $ 2541 2542 2 2543spm(4,3) := 3*x*z $ 2544 2545spm(4,4) := 6*x*y*z$ 2546 2547 2548spjacobian({x^4,x*y^2,x*y*z^3},{w,x,y,z}); 2549 2550 2551 2552 3 2553spm(1,2) := 4*x $ 2554 2555 2 2556spm(2,2) := y $ 2557 2558spm(2,3) := 2*x*y$ 2559 2560 3 2561spm(3,2) := y*z $ 2562 2563 3 2564spm(3,3) := x*z $ 2565 2566 2 2567spm(3,4) := 3*x*y*z $ 2568 2569 2570spjordan_block(x,500)$ 2571 2572 2573 2574spmake_identity(1000)$ 2575 2576 2577 2578on rounded; 2579 2580 % makes output easier to read. 2581ch := spcholesky(mat1); 2582 2583 2584{ 2585 2586 spm(1,1) := 1.41421356237$ 2587 2588 spm(2,2) := 2.0$ 2589 2590 spm(3,3) := 2.44948974278$ 2591 2592 spm(4,4) := 2.82842712475$ 2593 2594 spm(5,5) := 3.16227766017$ 2595 , 2596 2597 spm(1,1) := 1.41421356237$ 2598 2599 spm(2,2) := 2.0$ 2600 2601 spm(3,3) := 2.44948974278$ 2602 2603 spm(4,4) := 2.82842712475$ 2604 2605 spm(5,5) := 3.16227766017$ 2606ch := } 2607 2608tp first ch - second ch; 2609 2610 2611"Empty Matrix" 2612 2613tmp := first ch * second ch; 2614 2615 2616 2617spm(1,1) := 2.0$ 2618 2619spm(2,2) := 4.0$ 2620 2621spm(3,3) := 6.0$ 2622 2623spm(4,4) := 8.0$ 2624 2625spm(5,5) := 10.0$ 2626tmp := 2627 2628tmp - mat1; 2629 2630 2631"Empty Matrix" 2632 2633off rounded; 2634 2635 2636 2637% The gram schmidt functions takes a list of vectors. 2638% These vectors are matrices of type 'sparse with column dimension 1. 2639 2640%Create the "vectors". 2641sparse a(4,1); 2642 2643 2644sparse b(4,1); 2645 2646 2647sparse c(4,1); 2648 2649 2650sparse d(4,1); 2651 2652 2653 2654%Fill the "vectors" with data. 2655a(1,1):=1; 2656 2657 2658a(1,1) := 1 2659 2660b(1,1):=1; 2661 2662 2663b(1,1) := 1 2664 2665b(2,1):=1; 2666 2667 2668b(2,1) := 1 2669 2670c(1,1):=1; 2671 2672 2673c(1,1) := 1 2674 2675c(2,1):=1; 2676 2677 2678c(2,1) := 1 2679 2680c(3,1):=1; 2681 2682 2683c(3,1) := 1 2684 2685d(1,1):=1; 2686 2687 2688d(1,1) := 1 2689 2690d(2,1):=1; 2691 2692 2693d(2,1) := 1 2694 2695d(3,1):=1; 2696 2697 2698d(3,1) := 1 2699 2700d(4,1):=1; 2701 2702 2703d(4,1) := 1 2704 2705 2706spgram_schmidt({{a},{b},{c},{d}}); 2707 2708 2709{ 2710 2711 spm(1,1) := 1$ 2712 , 2713 2714 spm(2,1) := 1$ 2715 , 2716 2717 spm(3,1) := 1$ 2718 , 2719 2720 spm(4,1) := 1$ 2721 } 2722 2723 2724on rounded; 2725 2726 % again, makes large quotients a bit more readable. 2727% The algorithm used for splu_decom sometimes swaps the rows of the 2728% input matrix so that (given matrix A, splu_decom(A) = {L,U,vec}), 2729% we find L*U does not equal A but a row equivalent of it. The call 2730% spconvert(A,vec) will return this row equivalent 2731% (ie: L*U = convert(A,vec)). 2732lu := splu_decom(mat5)$ 2733 2734 2735tmp := first lu * second lu$ 2736 2737 2738tmp1 := spconvert(mat5,third lu); 2739 2740 2741 2742spm(1,1) := 3$ 2743 2744spm(1,2) := 1$ 2745 2746spm(2,1) := 1$ 2747 2748spm(2,2) := 3$ 2749 2750spm(2,3) := 1$ 2751 2752spm(3,2) := 1$ 2753 2754spm(3,3) := 3$ 2755 2756spm(3,4) := 1$ 2757 2758spm(4,3) := 1$ 2759 2760spm(4,4) := 3$ 2761 2762spm(4,5) := 1$ 2763 2764spm(5,4) := 1$ 2765 2766spm(5,5) := 3$ 2767 2768spm(5,6) := 1$ 2769 2770spm(6,5) := 1$ 2771 2772spm(6,6) := 3$ 2773 2774spm(6,7) := 1$ 2775 2776spm(7,6) := 1$ 2777 2778spm(7,7) := 3$ 2779 2780spm(7,8) := 1$ 2781 2782spm(8,7) := 1$ 2783 2784spm(8,8) := 3$ 2785 2786spm(8,9) := 1$ 2787 2788spm(9,8) := 1$ 2789 2790spm(9,9) := 3$ 2791 2792spm(9,10) := 1$ 2793 2794spm(10,9) := 1$ 2795 2796spm(10,10) := 3$ 2797 2798spm(10,11) := 1$ 2799 2800spm(11,10) := 1$ 2801 2802spm(11,11) := 3$ 2803 2804spm(11,12) := 1$ 2805 2806spm(12,11) := 1$ 2807 2808spm(12,12) := 3$ 2809 2810spm(12,13) := 1$ 2811 2812spm(13,12) := 1$ 2813 2814spm(13,13) := 3$ 2815 2816spm(13,14) := 1$ 2817 2818spm(14,13) := 1$ 2819 2820spm(14,14) := 3$ 2821 2822spm(14,15) := 1$ 2823 2824spm(15,14) := 1$ 2825 2826spm(15,15) := 3$ 2827 2828spm(15,16) := 1$ 2829 2830spm(16,15) := 1$ 2831 2832spm(16,16) := 3$ 2833 2834spm(16,17) := 1$ 2835 2836spm(17,16) := 1$ 2837 2838spm(17,17) := 3$ 2839 2840spm(17,18) := 1$ 2841 2842spm(18,17) := 1$ 2843 2844spm(18,18) := 3$ 2845 2846spm(18,19) := 1$ 2847 2848spm(19,18) := 1$ 2849 2850spm(19,19) := 3$ 2851 2852spm(19,20) := 1$ 2853 2854spm(20,19) := 1$ 2855 2856spm(20,20) := 3$ 2857 2858spm(20,21) := 1$ 2859 2860spm(21,20) := 1$ 2861 2862spm(21,21) := 3$ 2863 2864spm(21,22) := 1$ 2865 2866spm(22,21) := 1$ 2867 2868spm(22,22) := 3$ 2869 2870spm(22,23) := 1$ 2871 2872spm(23,22) := 1$ 2873 2874spm(23,23) := 3$ 2875 2876spm(23,24) := 1$ 2877 2878spm(24,23) := 1$ 2879 2880spm(24,24) := 3$ 2881 2882spm(24,25) := 1$ 2883 2884spm(25,24) := 1$ 2885 2886spm(25,25) := 3$ 2887 2888spm(25,26) := 1$ 2889 2890spm(26,25) := 1$ 2891 2892spm(26,26) := 3$ 2893 2894spm(26,27) := 1$ 2895 2896spm(27,26) := 1$ 2897 2898spm(27,27) := 3$ 2899 2900spm(27,28) := 1$ 2901 2902spm(28,27) := 1$ 2903 2904spm(28,28) := 3$ 2905 2906spm(28,29) := 1$ 2907 2908spm(29,28) := 1$ 2909 2910spm(29,29) := 3$ 2911 2912spm(29,30) := 1$ 2913 2914spm(30,29) := 1$ 2915 2916spm(30,30) := 3$ 2917 2918spm(30,31) := 1$ 2919 2920spm(31,30) := 1$ 2921 2922spm(31,31) := 3$ 2923 2924spm(31,32) := 1$ 2925 2926spm(32,31) := 1$ 2927 2928spm(32,32) := 3$ 2929 2930spm(32,33) := 1$ 2931 2932spm(33,32) := 1$ 2933 2934spm(33,33) := 3$ 2935 2936spm(33,34) := 1$ 2937 2938spm(34,33) := 1$ 2939 2940spm(34,34) := 3$ 2941 2942spm(34,35) := 1$ 2943 2944spm(35,34) := 1$ 2945 2946spm(35,35) := 3$ 2947 2948spm(35,36) := 1$ 2949 2950spm(36,35) := 1$ 2951 2952spm(36,36) := 3$ 2953 2954spm(36,37) := 1$ 2955 2956spm(37,36) := 1$ 2957 2958spm(37,37) := 3$ 2959 2960spm(37,38) := 1$ 2961 2962spm(38,37) := 1$ 2963 2964spm(38,38) := 3$ 2965 2966spm(38,39) := 1$ 2967 2968spm(39,38) := 1$ 2969 2970spm(39,39) := 3$ 2971 2972spm(39,40) := 1$ 2973 2974spm(40,39) := 1$ 2975 2976spm(40,40) := 3$ 2977 2978spm(40,41) := 1$ 2979 2980spm(41,40) := 1$ 2981 2982spm(41,41) := 3$ 2983 2984spm(41,42) := 1$ 2985 2986spm(42,41) := 1$ 2987 2988spm(42,42) := 3$ 2989 2990spm(42,43) := 1$ 2991 2992spm(43,42) := 1$ 2993 2994spm(43,43) := 3$ 2995 2996spm(43,44) := 1$ 2997 2998spm(44,43) := 1$ 2999 3000spm(44,44) := 3$ 3001 3002spm(44,45) := 1$ 3003 3004spm(45,44) := 1$ 3005 3006spm(45,45) := 3$ 3007 3008spm(45,46) := 1$ 3009 3010spm(46,45) := 1$ 3011 3012spm(46,46) := 3$ 3013 3014spm(46,47) := 1$ 3015 3016spm(47,46) := 1$ 3017 3018spm(47,47) := 3$ 3019 3020spm(47,48) := 1$ 3021 3022spm(48,47) := 1$ 3023 3024spm(48,48) := 3$ 3025 3026spm(48,49) := 1$ 3027 3028spm(49,48) := 1$ 3029 3030spm(49,49) := 3$ 3031 3032spm(49,50) := 1$ 3033 3034spm(50,49) := 1$ 3035 3036spm(50,50) := 3$ 3037 3038spm(50,51) := 1$ 3039 3040spm(51,50) := 1$ 3041 3042spm(51,51) := 3$ 3043 3044spm(51,52) := 1$ 3045 3046spm(52,51) := 1$ 3047 3048spm(52,52) := 3$ 3049 3050spm(52,53) := 1$ 3051 3052spm(53,52) := 1$ 3053 3054spm(53,53) := 3$ 3055 3056spm(53,54) := 1$ 3057 3058spm(54,53) := 1$ 3059 3060spm(54,54) := 3$ 3061 3062spm(54,55) := 1$ 3063 3064spm(55,54) := 1$ 3065 3066spm(55,55) := 3$ 3067 3068spm(55,56) := 1$ 3069 3070spm(56,55) := 1$ 3071 3072spm(56,56) := 3$ 3073 3074spm(56,57) := 1$ 3075 3076spm(57,56) := 1$ 3077 3078spm(57,57) := 3$ 3079 3080spm(57,58) := 1$ 3081 3082spm(58,57) := 1$ 3083 3084spm(58,58) := 3$ 3085 3086spm(58,59) := 1$ 3087 3088spm(59,58) := 1$ 3089 3090spm(59,59) := 3$ 3091 3092spm(59,60) := 1$ 3093 3094spm(60,59) := 1$ 3095 3096spm(60,60) := 3$ 3097 3098spm(60,61) := 1$ 3099 3100spm(61,60) := 1$ 3101 3102spm(61,61) := 3$ 3103 3104spm(61,62) := 1$ 3105 3106spm(62,61) := 1$ 3107 3108spm(62,62) := 3$ 3109 3110spm(62,63) := 1$ 3111 3112spm(63,62) := 1$ 3113 3114spm(63,63) := 3$ 3115 3116spm(63,64) := 1$ 3117 3118spm(64,63) := 1$ 3119 3120spm(64,64) := 3$ 3121 3122spm(64,65) := 1$ 3123 3124spm(65,64) := 1$ 3125 3126spm(65,65) := 3$ 3127 3128spm(65,66) := 1$ 3129 3130spm(66,65) := 1$ 3131 3132spm(66,66) := 3$ 3133 3134spm(66,67) := 1$ 3135 3136spm(67,66) := 1$ 3137 3138spm(67,67) := 3$ 3139 3140spm(67,68) := 1$ 3141 3142spm(68,67) := 1$ 3143 3144spm(68,68) := 3$ 3145 3146spm(68,69) := 1$ 3147 3148spm(69,68) := 1$ 3149 3150spm(69,69) := 3$ 3151 3152spm(69,70) := 1$ 3153 3154spm(70,69) := 1$ 3155 3156spm(70,70) := 3$ 3157 3158spm(70,71) := 1$ 3159 3160spm(71,70) := 1$ 3161 3162spm(71,71) := 3$ 3163 3164spm(71,72) := 1$ 3165 3166spm(72,71) := 1$ 3167 3168spm(72,72) := 3$ 3169 3170spm(72,73) := 1$ 3171 3172spm(73,72) := 1$ 3173 3174spm(73,73) := 3$ 3175 3176spm(73,74) := 1$ 3177 3178spm(74,73) := 1$ 3179 3180spm(74,74) := 3$ 3181 3182spm(74,75) := 1$ 3183 3184spm(75,74) := 1$ 3185 3186spm(75,75) := 3$ 3187 3188spm(75,76) := 1$ 3189 3190spm(76,75) := 1$ 3191 3192spm(76,76) := 3$ 3193 3194spm(76,77) := 1$ 3195 3196spm(77,76) := 1$ 3197 3198spm(77,77) := 3$ 3199 3200spm(77,78) := 1$ 3201 3202spm(78,77) := 1$ 3203 3204spm(78,78) := 3$ 3205 3206spm(78,79) := 1$ 3207 3208spm(79,78) := 1$ 3209 3210spm(79,79) := 3$ 3211 3212spm(79,80) := 1$ 3213 3214spm(80,79) := 1$ 3215 3216spm(80,80) := 3$ 3217 3218spm(80,81) := 1$ 3219 3220spm(81,80) := 1$ 3221 3222spm(81,81) := 3$ 3223 3224spm(81,82) := 1$ 3225 3226spm(82,81) := 1$ 3227 3228spm(82,82) := 3$ 3229 3230spm(82,83) := 1$ 3231 3232spm(83,82) := 1$ 3233 3234spm(83,83) := 3$ 3235 3236spm(83,84) := 1$ 3237 3238spm(84,83) := 1$ 3239 3240spm(84,84) := 3$ 3241 3242spm(84,85) := 1$ 3243 3244spm(85,84) := 1$ 3245 3246spm(85,85) := 3$ 3247 3248spm(85,86) := 1$ 3249 3250spm(86,85) := 1$ 3251 3252spm(86,86) := 3$ 3253 3254spm(86,87) := 1$ 3255 3256spm(87,86) := 1$ 3257 3258spm(87,87) := 3$ 3259 3260spm(87,88) := 1$ 3261 3262spm(88,87) := 1$ 3263 3264spm(88,88) := 3$ 3265 3266spm(88,89) := 1$ 3267 3268spm(89,88) := 1$ 3269 3270spm(89,89) := 3$ 3271 3272spm(89,90) := 1$ 3273 3274spm(90,89) := 1$ 3275 3276spm(90,90) := 3$ 3277 3278spm(90,91) := 1$ 3279 3280spm(91,90) := 1$ 3281 3282spm(91,91) := 3$ 3283 3284spm(91,92) := 1$ 3285 3286spm(92,91) := 1$ 3287 3288spm(92,92) := 3$ 3289 3290spm(92,93) := 1$ 3291 3292spm(93,92) := 1$ 3293 3294spm(93,93) := 3$ 3295 3296spm(93,94) := 1$ 3297 3298spm(94,93) := 1$ 3299 3300spm(94,94) := 3$ 3301 3302spm(94,95) := 1$ 3303 3304spm(95,94) := 1$ 3305 3306spm(95,95) := 3$ 3307 3308spm(95,96) := 1$ 3309 3310spm(96,95) := 1$ 3311 3312spm(96,96) := 3$ 3313 3314spm(96,97) := 1$ 3315 3316spm(97,96) := 1$ 3317 3318spm(97,97) := 3$ 3319 3320spm(97,98) := 1$ 3321 3322spm(98,97) := 1$ 3323 3324spm(98,98) := 3$ 3325 3326spm(98,99) := 1$ 3327 3328spm(99,98) := 1$ 3329 3330spm(99,99) := 3$ 3331 3332spm(99,100) := 1$ 3333 3334spm(100,99) := 1$ 3335 3336spm(100,100) := 3$ 3337tmp1 := 3338 3339tmp - tmp1; 3340 3341 3342"Empty Matrix" 3343 3344% and the complex case.. 3345on complex; 3346 3347 3348*** Domain mode rounded changed to complex-rounded 3349 3350lu1 := splu_decom(mat6); 3351 3352 3353{ 3354 3355 spm(1,1) := 1$ 3356 3357 spm(2,1) := 4$ 3358 3359 spm(2,2) := 5 - 4*i$ 3360 3361 spm(3,1) := 1 + i$ 3362 3363 spm(3,2) := 3$ 3364 3365 spm(3,3) := 2.26829268293 + 0.414634146341*i$ 3366 3367 spm(4,4) := 1$ 3368 3369 spm(5,4) := 4$ 3370 3371 spm(5,5) := 5 - 4*i$ 3372 3373 spm(6,4) := 1 + i$ 3374 3375 spm(6,5) := 3$ 3376 3377 spm(6,6) := 2.26829268293 + 0.414634146341*i$ 3378 , 3379 3380 spm(1,1) := 1$ 3381 3382 spm(1,2) := i$ 3383 3384 spm(2,2) := 1$ 3385 3386 spm(2,3) := 0.243902439024 + 0.19512195122*i$ 3387 3388 spm(3,3) := 1$ 3389 3390 spm(4,4) := 1$ 3391 3392 spm(4,5) := i$ 3393 3394 spm(5,5) := 1$ 3395 3396 spm(5,6) := 0.243902439024 + 0.19512195122*i$ 3397 3398 spm(6,6) := 1$ 3399lu1 := ,[3,2,3,6,5,6]} 3400 3401mat6; 3402 3403 3404 3405spm(1,1) := i + 1$ 3406 3407spm(1,2) := i + 2$ 3408 3409spm(1,3) := i + 3$ 3410 3411spm(2,1) := 4$ 3412 3413spm(2,2) := 5$ 3414 3415spm(2,3) := 2$ 3416 3417spm(3,1) := 1$ 3418 3419spm(3,2) := i$ 3420 3421spm(4,4) := i + 1$ 3422 3423spm(4,5) := i + 2$ 3424 3425spm(4,6) := i + 3$ 3426 3427spm(5,4) := 4$ 3428 3429spm(5,5) := 5$ 3430 3431spm(5,6) := 2$ 3432 3433spm(6,4) := 1$ 3434 3435spm(6,5) := i$ 3436 3437tmp := first lu1 * second lu1; 3438 3439 3440 3441spm(1,1) := 1$ 3442 3443spm(1,2) := i$ 3444 3445spm(2,1) := 4$ 3446 3447spm(2,2) := 5$ 3448 3449spm(2,3) := 2.0$ 3450 3451spm(3,1) := 1 + i$ 3452 3453spm(3,2) := 2 + i$ 3454 3455spm(3,3) := 3.0 + i$ 3456 3457spm(4,4) := 1$ 3458 3459spm(4,5) := i$ 3460 3461spm(5,4) := 4$ 3462 3463spm(5,5) := 5$ 3464 3465spm(5,6) := 2.0$ 3466 3467spm(6,4) := 1 + i$ 3468 3469spm(6,5) := 2 + i$ 3470 3471spm(6,6) := 3.0 + i$ 3472tmp := 3473 3474tmp1 := spconvert(mat6,third lu1); 3475 3476 3477 3478spm(1,1) := 1$ 3479 3480spm(1,2) := i$ 3481 3482spm(2,1) := 4$ 3483 3484spm(2,2) := 5$ 3485 3486spm(2,3) := 2$ 3487 3488spm(3,1) := i + 1$ 3489 3490spm(3,2) := i + 2$ 3491 3492spm(3,3) := i + 3$ 3493 3494spm(4,4) := 1$ 3495 3496spm(4,5) := i$ 3497 3498spm(5,4) := 4$ 3499 3500spm(5,5) := 5$ 3501 3502spm(5,6) := 2$ 3503 3504spm(6,4) := i + 1$ 3505 3506spm(6,5) := i + 2$ 3507 3508spm(6,6) := i + 3$ 3509tmp1 := 3510 3511tmp - tmp1; 3512 3513 3514"Empty Matrix" 3515 3516off complex; 3517 3518 3519*** Domain mode complex-rounded changed to rounded 3520 3521 3522mat3inv := sppseudo_inverse(mat3); 3523 3524 3525 3526spm(1,1) := - 2.0$ 3527 3528spm(1,2) := 1$ 3529 3530spm(2,1) := 1.5$ 3531 3532spm(2,2) := - 0.5$ 3533 3534spm(3,3) := - 2.0$ 3535 3536spm(3,4) := 1$ 3537 3538spm(4,3) := 1.5$ 3539 3540spm(4,4) := - 0.5$ 3541 3542spm(5,5) := - 2.0$ 3543 3544spm(5,6) := 1$ 3545 3546spm(6,5) := 1.5$ 3547 3548spm(6,6) := - 0.5$ 3549mat3inv := 3550 3551mat3 * mat3inv; 3552 3553 3554 3555spm(1,1) := 1$ 3556 3557spm(2,2) := 1$ 3558 3559spm(3,3) := 1$ 3560 3561spm(4,4) := 1$ 3562 3563spm(5,5) := 1$ 3564 3565spm(6,6) := 1$ 3566 3567 3568 3569% Predicates. 3570 3571matrixp(mat1); 3572 3573 3574t 3575 3576matrixp(poly); 3577 3578 3579 3580squarep(mat2); 3581 3582 3583t 3584 3585squarep(mat3); 3586 3587 3588t 3589 3590 3591symmetricp(mat1); 3592 3593 3594t 3595 3596symmetricp(mat3); 3597 3598 3599 3600sparsematp(mat1); 3601 3602 3603t 3604 3605sparsematp(poly); 3606 3607 3608 3609off rounded; 3610 3611 3612 3613end; 3614 3615Tested on x86_64-pc-windows CSL 3616Time (counter 1): 48 ms 3617 3618End of Lisp run after 0.04+0.06 seconds 3619real 0.27 3620user 0.03 3621sys 0.06 3622