sparse.rlg 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618
  1. Tue Apr 15 00:34:43 2008 run on win32
  2. % Test file for Sparse Matrices and the Linear Algebra Package for
  3. % Sparse Matrices.
  4. % Author: Stephen Scowcroft. Date: June 1995.
  5. % Firstly, the matrices need to be created.
  6. % This is the standard way to create a sparse matrix.
  7. % Create a sparse matrix.
  8. sparse mat1(5,5);
  9. %Fill the sparse matrix with data
  10. mat1(1,1):=2;
  11. mat1(1,1) := 2
  12. mat1(2,2):=4;
  13. mat1(2,2) := 4
  14. mat1(3,3):=6;
  15. mat1(3,3) := 6
  16. mat1(4,4):=8;
  17. mat1(4,4) := 8
  18. mat1(5,5):=10;
  19. mat1(5,5) := 10
  20. sparse mat4(5,5);
  21. mat4(1,1):=x;
  22. mat4(1,1) := x
  23. mat4(2,2):=x;
  24. mat4(2,2) := x
  25. mat4(3,3):=x;
  26. mat4(3,3) := x
  27. mat4(4,4):=x;
  28. mat4(4,4) := x
  29. mat4(5,5):=x;
  30. mat4(5,5) := x
  31. % A small function to automatically fill a sparse matrix with data.
  32. procedure makematsp(nam,row);
  33. begin;
  34. sparse nam(row,row);
  35. for i := 1:row do <<nam(i,i):=i>>
  36. end;
  37. makematsp
  38. clear mat2;
  39. makematsp(mat2,100);
  40. % Matrices created in the standard Matrix way.
  41. zz1:=mat((1,2),(3,4));
  42. [1 2]
  43. zz1 := [ ]
  44. [3 4]
  45. zz2:=mat((x,x),(x,x));
  46. [x x]
  47. zz2 := [ ]
  48. [x x]
  49. zz3:=mat((i+1,i+2,i+3),(4,5,2),(1,i,0));
  50. [i + 1 i + 2 i + 3]
  51. [ ]
  52. zz3 := [ 4 5 2 ]
  53. [ ]
  54. [ 1 i 0 ]
  55. % I have taken advantage of the Linear Algebra Package (Matt Rebbeck)
  56. % in order to create some Sparse Matrices.
  57. mat3:=diagonal(zz1,zz1,zz1);
  58. [1 2 0 0 0 0]
  59. [ ]
  60. [3 4 0 0 0 0]
  61. [ ]
  62. [0 0 1 2 0 0]
  63. mat3 := [ ]
  64. [0 0 3 4 0 0]
  65. [ ]
  66. [0 0 0 0 1 2]
  67. [ ]
  68. [0 0 0 0 3 4]
  69. mat5:=band_matrix({1,3,1},100)$
  70. mat6:=diagonal(zz3,zz3);
  71. [i + 1 i + 2 i + 3 0 0 0 ]
  72. [ ]
  73. [ 4 5 2 0 0 0 ]
  74. [ ]
  75. [ 1 i 0 0 0 0 ]
  76. mat6 := [ ]
  77. [ 0 0 0 i + 1 i + 2 i + 3]
  78. [ ]
  79. [ 0 0 0 4 5 2 ]
  80. [ ]
  81. [ 0 0 0 1 i 0 ]
  82. mat7:=band_matrix({a,b,c},4);
  83. [b c 0 0]
  84. [ ]
  85. [a b c 0]
  86. mat7 := [ ]
  87. [0 a b c]
  88. [ ]
  89. [0 0 a b]
  90. % These are then "translated" into the Sparse operator using the
  91. % function transmat.
  92. % This is a destructive function in the sense that the matrices are no
  93. % longer of type 'matrix but are now 'sparse.
  94. transmat mat3;
  95. transmat mat5;
  96. transmat mat6;
  97. transmat mat7;
  98. poly := x^7+x^5+4*x^4+5*x^3+12;
  99. 7 5 4 3
  100. poly := x + x + 4*x + 5*x + 12
  101. poly1 := x^2+x*y^3+x*y*z^3+y*x+2+y*3;
  102. 2 3 3
  103. poly1 := x + x*y + x*y*z + x*y + 3*y + 2
  104. % Firstly some basic matrix operations.
  105. % These are the same as the present matrix package
  106. mat1^-1;
  107. 1
  108. spm(1,1) := ---$
  109. 2
  110. 1
  111. spm(2,2) := ---$
  112. 4
  113. 1
  114. spm(3,3) := ---$
  115. 6
  116. 1
  117. spm(4,4) := ---$
  118. 8
  119. 1
  120. spm(5,5) := ----$
  121. 10
  122. mat4^-1;
  123. 1
  124. spm(1,1) := ---$
  125. x
  126. 1
  127. spm(2,2) := ---$
  128. x
  129. 1
  130. spm(3,3) := ---$
  131. x
  132. 1
  133. spm(4,4) := ---$
  134. x
  135. 1
  136. spm(5,5) := ---$
  137. x
  138. mat2 + mat5$
  139. mat2 - mat5$
  140. mat1-mat1;
  141. "Empty Matrix"
  142. mat4 + mat1;
  143. spm(1,1) := x + 2$
  144. spm(2,2) := x + 4$
  145. spm(3,3) := x + 6$
  146. spm(4,4) := x + 8$
  147. spm(5,5) := x + 10$
  148. mat4 * mat1;
  149. spm(1,1) := 2*x$
  150. spm(2,2) := 4*x$
  151. spm(3,3) := 6*x$
  152. spm(4,4) := 8*x$
  153. spm(5,5) := 10*x$
  154. 2*mat1 + (3*mat4 + mat1);
  155. spm(1,1) := 3*(x + 2)$
  156. spm(2,2) := 3*(x + 4)$
  157. spm(3,3) := 3*(x + 6)$
  158. spm(4,4) := 3*(x + 8)$
  159. spm(5,5) := 3*(x + 10)$
  160. % It is also possible to combine both 'matrix and 'sparse type matrices
  161. % in these operations.
  162. pp:=band_matrix({1,3,1},100)$
  163. mat5*pp;
  164. spm(1,1) := 10$
  165. spm(1,2) := 6$
  166. spm(1,3) := 1$
  167. spm(2,1) := 6$
  168. spm(2,2) := 11$
  169. spm(2,3) := 6$
  170. spm(2,4) := 1$
  171. spm(3,1) := 1$
  172. spm(3,2) := 6$
  173. spm(3,3) := 11$
  174. spm(3,4) := 6$
  175. spm(3,5) := 1$
  176. spm(4,2) := 1$
  177. spm(4,3) := 6$
  178. spm(4,4) := 11$
  179. spm(4,5) := 6$
  180. spm(4,6) := 1$
  181. spm(5,3) := 1$
  182. spm(5,4) := 6$
  183. spm(5,5) := 11$
  184. spm(5,6) := 6$
  185. spm(5,7) := 1$
  186. spm(6,4) := 1$
  187. spm(6,5) := 6$
  188. spm(6,6) := 11$
  189. spm(6,7) := 6$
  190. spm(6,8) := 1$
  191. spm(7,5) := 1$
  192. spm(7,6) := 6$
  193. spm(7,7) := 11$
  194. spm(7,8) := 6$
  195. spm(7,9) := 1$
  196. spm(8,6) := 1$
  197. spm(8,7) := 6$
  198. spm(8,8) := 11$
  199. spm(8,9) := 6$
  200. spm(8,10) := 1$
  201. spm(9,7) := 1$
  202. spm(9,8) := 6$
  203. spm(9,9) := 11$
  204. spm(9,10) := 6$
  205. spm(9,11) := 1$
  206. spm(10,8) := 1$
  207. spm(10,9) := 6$
  208. spm(10,10) := 11$
  209. spm(10,11) := 6$
  210. spm(10,12) := 1$
  211. spm(11,9) := 1$
  212. spm(11,10) := 6$
  213. spm(11,11) := 11$
  214. spm(11,12) := 6$
  215. spm(11,13) := 1$
  216. spm(12,10) := 1$
  217. spm(12,11) := 6$
  218. spm(12,12) := 11$
  219. spm(12,13) := 6$
  220. spm(12,14) := 1$
  221. spm(13,11) := 1$
  222. spm(13,12) := 6$
  223. spm(13,13) := 11$
  224. spm(13,14) := 6$
  225. spm(13,15) := 1$
  226. spm(14,12) := 1$
  227. spm(14,13) := 6$
  228. spm(14,14) := 11$
  229. spm(14,15) := 6$
  230. spm(14,16) := 1$
  231. spm(15,13) := 1$
  232. spm(15,14) := 6$
  233. spm(15,15) := 11$
  234. spm(15,16) := 6$
  235. spm(15,17) := 1$
  236. spm(16,14) := 1$
  237. spm(16,15) := 6$
  238. spm(16,16) := 11$
  239. spm(16,17) := 6$
  240. spm(16,18) := 1$
  241. spm(17,15) := 1$
  242. spm(17,16) := 6$
  243. spm(17,17) := 11$
  244. spm(17,18) := 6$
  245. spm(17,19) := 1$
  246. spm(18,16) := 1$
  247. spm(18,17) := 6$
  248. spm(18,18) := 11$
  249. spm(18,19) := 6$
  250. spm(18,20) := 1$
  251. spm(19,17) := 1$
  252. spm(19,18) := 6$
  253. spm(19,19) := 11$
  254. spm(19,20) := 6$
  255. spm(19,21) := 1$
  256. spm(20,18) := 1$
  257. spm(20,19) := 6$
  258. spm(20,20) := 11$
  259. spm(20,21) := 6$
  260. spm(20,22) := 1$
  261. spm(21,19) := 1$
  262. spm(21,20) := 6$
  263. spm(21,21) := 11$
  264. spm(21,22) := 6$
  265. spm(21,23) := 1$
  266. spm(22,20) := 1$
  267. spm(22,21) := 6$
  268. spm(22,22) := 11$
  269. spm(22,23) := 6$
  270. spm(22,24) := 1$
  271. spm(23,21) := 1$
  272. spm(23,22) := 6$
  273. spm(23,23) := 11$
  274. spm(23,24) := 6$
  275. spm(23,25) := 1$
  276. spm(24,22) := 1$
  277. spm(24,23) := 6$
  278. spm(24,24) := 11$
  279. spm(24,25) := 6$
  280. spm(24,26) := 1$
  281. spm(25,23) := 1$
  282. spm(25,24) := 6$
  283. spm(25,25) := 11$
  284. spm(25,26) := 6$
  285. spm(25,27) := 1$
  286. spm(26,24) := 1$
  287. spm(26,25) := 6$
  288. spm(26,26) := 11$
  289. spm(26,27) := 6$
  290. spm(26,28) := 1$
  291. spm(27,25) := 1$
  292. spm(27,26) := 6$
  293. spm(27,27) := 11$
  294. spm(27,28) := 6$
  295. spm(27,29) := 1$
  296. spm(28,26) := 1$
  297. spm(28,27) := 6$
  298. spm(28,28) := 11$
  299. spm(28,29) := 6$
  300. spm(28,30) := 1$
  301. spm(29,27) := 1$
  302. spm(29,28) := 6$
  303. spm(29,29) := 11$
  304. spm(29,30) := 6$
  305. spm(29,31) := 1$
  306. spm(30,28) := 1$
  307. spm(30,29) := 6$
  308. spm(30,30) := 11$
  309. spm(30,31) := 6$
  310. spm(30,32) := 1$
  311. spm(31,29) := 1$
  312. spm(31,30) := 6$
  313. spm(31,31) := 11$
  314. spm(31,32) := 6$
  315. spm(31,33) := 1$
  316. spm(32,30) := 1$
  317. spm(32,31) := 6$
  318. spm(32,32) := 11$
  319. spm(32,33) := 6$
  320. spm(32,34) := 1$
  321. spm(33,31) := 1$
  322. spm(33,32) := 6$
  323. spm(33,33) := 11$
  324. spm(33,34) := 6$
  325. spm(33,35) := 1$
  326. spm(34,32) := 1$
  327. spm(34,33) := 6$
  328. spm(34,34) := 11$
  329. spm(34,35) := 6$
  330. spm(34,36) := 1$
  331. spm(35,33) := 1$
  332. spm(35,34) := 6$
  333. spm(35,35) := 11$
  334. spm(35,36) := 6$
  335. spm(35,37) := 1$
  336. spm(36,34) := 1$
  337. spm(36,35) := 6$
  338. spm(36,36) := 11$
  339. spm(36,37) := 6$
  340. spm(36,38) := 1$
  341. spm(37,35) := 1$
  342. spm(37,36) := 6$
  343. spm(37,37) := 11$
  344. spm(37,38) := 6$
  345. spm(37,39) := 1$
  346. spm(38,36) := 1$
  347. spm(38,37) := 6$
  348. spm(38,38) := 11$
  349. spm(38,39) := 6$
  350. spm(38,40) := 1$
  351. spm(39,37) := 1$
  352. spm(39,38) := 6$
  353. spm(39,39) := 11$
  354. spm(39,40) := 6$
  355. spm(39,41) := 1$
  356. spm(40,38) := 1$
  357. spm(40,39) := 6$
  358. spm(40,40) := 11$
  359. spm(40,41) := 6$
  360. spm(40,42) := 1$
  361. spm(41,39) := 1$
  362. spm(41,40) := 6$
  363. spm(41,41) := 11$
  364. spm(41,42) := 6$
  365. spm(41,43) := 1$
  366. spm(42,40) := 1$
  367. spm(42,41) := 6$
  368. spm(42,42) := 11$
  369. spm(42,43) := 6$
  370. spm(42,44) := 1$
  371. spm(43,41) := 1$
  372. spm(43,42) := 6$
  373. spm(43,43) := 11$
  374. spm(43,44) := 6$
  375. spm(43,45) := 1$
  376. spm(44,42) := 1$
  377. spm(44,43) := 6$
  378. spm(44,44) := 11$
  379. spm(44,45) := 6$
  380. spm(44,46) := 1$
  381. spm(45,43) := 1$
  382. spm(45,44) := 6$
  383. spm(45,45) := 11$
  384. spm(45,46) := 6$
  385. spm(45,47) := 1$
  386. spm(46,44) := 1$
  387. spm(46,45) := 6$
  388. spm(46,46) := 11$
  389. spm(46,47) := 6$
  390. spm(46,48) := 1$
  391. spm(47,45) := 1$
  392. spm(47,46) := 6$
  393. spm(47,47) := 11$
  394. spm(47,48) := 6$
  395. spm(47,49) := 1$
  396. spm(48,46) := 1$
  397. spm(48,47) := 6$
  398. spm(48,48) := 11$
  399. spm(48,49) := 6$
  400. spm(48,50) := 1$
  401. spm(49,47) := 1$
  402. spm(49,48) := 6$
  403. spm(49,49) := 11$
  404. spm(49,50) := 6$
  405. spm(49,51) := 1$
  406. spm(50,48) := 1$
  407. spm(50,49) := 6$
  408. spm(50,50) := 11$
  409. spm(50,51) := 6$
  410. spm(50,52) := 1$
  411. spm(51,49) := 1$
  412. spm(51,50) := 6$
  413. spm(51,51) := 11$
  414. spm(51,52) := 6$
  415. spm(51,53) := 1$
  416. spm(52,50) := 1$
  417. spm(52,51) := 6$
  418. spm(52,52) := 11$
  419. spm(52,53) := 6$
  420. spm(52,54) := 1$
  421. spm(53,51) := 1$
  422. spm(53,52) := 6$
  423. spm(53,53) := 11$
  424. spm(53,54) := 6$
  425. spm(53,55) := 1$
  426. spm(54,52) := 1$
  427. spm(54,53) := 6$
  428. spm(54,54) := 11$
  429. spm(54,55) := 6$
  430. spm(54,56) := 1$
  431. spm(55,53) := 1$
  432. spm(55,54) := 6$
  433. spm(55,55) := 11$
  434. spm(55,56) := 6$
  435. spm(55,57) := 1$
  436. spm(56,54) := 1$
  437. spm(56,55) := 6$
  438. spm(56,56) := 11$
  439. spm(56,57) := 6$
  440. spm(56,58) := 1$
  441. spm(57,55) := 1$
  442. spm(57,56) := 6$
  443. spm(57,57) := 11$
  444. spm(57,58) := 6$
  445. spm(57,59) := 1$
  446. spm(58,56) := 1$
  447. spm(58,57) := 6$
  448. spm(58,58) := 11$
  449. spm(58,59) := 6$
  450. spm(58,60) := 1$
  451. spm(59,57) := 1$
  452. spm(59,58) := 6$
  453. spm(59,59) := 11$
  454. spm(59,60) := 6$
  455. spm(59,61) := 1$
  456. spm(60,58) := 1$
  457. spm(60,59) := 6$
  458. spm(60,60) := 11$
  459. spm(60,61) := 6$
  460. spm(60,62) := 1$
  461. spm(61,59) := 1$
  462. spm(61,60) := 6$
  463. spm(61,61) := 11$
  464. spm(61,62) := 6$
  465. spm(61,63) := 1$
  466. spm(62,60) := 1$
  467. spm(62,61) := 6$
  468. spm(62,62) := 11$
  469. spm(62,63) := 6$
  470. spm(62,64) := 1$
  471. spm(63,61) := 1$
  472. spm(63,62) := 6$
  473. spm(63,63) := 11$
  474. spm(63,64) := 6$
  475. spm(63,65) := 1$
  476. spm(64,62) := 1$
  477. spm(64,63) := 6$
  478. spm(64,64) := 11$
  479. spm(64,65) := 6$
  480. spm(64,66) := 1$
  481. spm(65,63) := 1$
  482. spm(65,64) := 6$
  483. spm(65,65) := 11$
  484. spm(65,66) := 6$
  485. spm(65,67) := 1$
  486. spm(66,64) := 1$
  487. spm(66,65) := 6$
  488. spm(66,66) := 11$
  489. spm(66,67) := 6$
  490. spm(66,68) := 1$
  491. spm(67,65) := 1$
  492. spm(67,66) := 6$
  493. spm(67,67) := 11$
  494. spm(67,68) := 6$
  495. spm(67,69) := 1$
  496. spm(68,66) := 1$
  497. spm(68,67) := 6$
  498. spm(68,68) := 11$
  499. spm(68,69) := 6$
  500. spm(68,70) := 1$
  501. spm(69,67) := 1$
  502. spm(69,68) := 6$
  503. spm(69,69) := 11$
  504. spm(69,70) := 6$
  505. spm(69,71) := 1$
  506. spm(70,68) := 1$
  507. spm(70,69) := 6$
  508. spm(70,70) := 11$
  509. spm(70,71) := 6$
  510. spm(70,72) := 1$
  511. spm(71,69) := 1$
  512. spm(71,70) := 6$
  513. spm(71,71) := 11$
  514. spm(71,72) := 6$
  515. spm(71,73) := 1$
  516. spm(72,70) := 1$
  517. spm(72,71) := 6$
  518. spm(72,72) := 11$
  519. spm(72,73) := 6$
  520. spm(72,74) := 1$
  521. spm(73,71) := 1$
  522. spm(73,72) := 6$
  523. spm(73,73) := 11$
  524. spm(73,74) := 6$
  525. spm(73,75) := 1$
  526. spm(74,72) := 1$
  527. spm(74,73) := 6$
  528. spm(74,74) := 11$
  529. spm(74,75) := 6$
  530. spm(74,76) := 1$
  531. spm(75,73) := 1$
  532. spm(75,74) := 6$
  533. spm(75,75) := 11$
  534. spm(75,76) := 6$
  535. spm(75,77) := 1$
  536. spm(76,74) := 1$
  537. spm(76,75) := 6$
  538. spm(76,76) := 11$
  539. spm(76,77) := 6$
  540. spm(76,78) := 1$
  541. spm(77,75) := 1$
  542. spm(77,76) := 6$
  543. spm(77,77) := 11$
  544. spm(77,78) := 6$
  545. spm(77,79) := 1$
  546. spm(78,76) := 1$
  547. spm(78,77) := 6$
  548. spm(78,78) := 11$
  549. spm(78,79) := 6$
  550. spm(78,80) := 1$
  551. spm(79,77) := 1$
  552. spm(79,78) := 6$
  553. spm(79,79) := 11$
  554. spm(79,80) := 6$
  555. spm(79,81) := 1$
  556. spm(80,78) := 1$
  557. spm(80,79) := 6$
  558. spm(80,80) := 11$
  559. spm(80,81) := 6$
  560. spm(80,82) := 1$
  561. spm(81,79) := 1$
  562. spm(81,80) := 6$
  563. spm(81,81) := 11$
  564. spm(81,82) := 6$
  565. spm(81,83) := 1$
  566. spm(82,80) := 1$
  567. spm(82,81) := 6$
  568. spm(82,82) := 11$
  569. spm(82,83) := 6$
  570. spm(82,84) := 1$
  571. spm(83,81) := 1$
  572. spm(83,82) := 6$
  573. spm(83,83) := 11$
  574. spm(83,84) := 6$
  575. spm(83,85) := 1$
  576. spm(84,82) := 1$
  577. spm(84,83) := 6$
  578. spm(84,84) := 11$
  579. spm(84,85) := 6$
  580. spm(84,86) := 1$
  581. spm(85,83) := 1$
  582. spm(85,84) := 6$
  583. spm(85,85) := 11$
  584. spm(85,86) := 6$
  585. spm(85,87) := 1$
  586. spm(86,84) := 1$
  587. spm(86,85) := 6$
  588. spm(86,86) := 11$
  589. spm(86,87) := 6$
  590. spm(86,88) := 1$
  591. spm(87,85) := 1$
  592. spm(87,86) := 6$
  593. spm(87,87) := 11$
  594. spm(87,88) := 6$
  595. spm(87,89) := 1$
  596. spm(88,86) := 1$
  597. spm(88,87) := 6$
  598. spm(88,88) := 11$
  599. spm(88,89) := 6$
  600. spm(88,90) := 1$
  601. spm(89,87) := 1$
  602. spm(89,88) := 6$
  603. spm(89,89) := 11$
  604. spm(89,90) := 6$
  605. spm(89,91) := 1$
  606. spm(90,88) := 1$
  607. spm(90,89) := 6$
  608. spm(90,90) := 11$
  609. spm(90,91) := 6$
  610. spm(90,92) := 1$
  611. spm(91,89) := 1$
  612. spm(91,90) := 6$
  613. spm(91,91) := 11$
  614. spm(91,92) := 6$
  615. spm(91,93) := 1$
  616. spm(92,90) := 1$
  617. spm(92,91) := 6$
  618. spm(92,92) := 11$
  619. spm(92,93) := 6$
  620. spm(92,94) := 1$
  621. spm(93,91) := 1$
  622. spm(93,92) := 6$
  623. spm(93,93) := 11$
  624. spm(93,94) := 6$
  625. spm(93,95) := 1$
  626. spm(94,92) := 1$
  627. spm(94,93) := 6$
  628. spm(94,94) := 11$
  629. spm(94,95) := 6$
  630. spm(94,96) := 1$
  631. spm(95,93) := 1$
  632. spm(95,94) := 6$
  633. spm(95,95) := 11$
  634. spm(95,96) := 6$
  635. spm(95,97) := 1$
  636. spm(96,94) := 1$
  637. spm(96,95) := 6$
  638. spm(96,96) := 11$
  639. spm(96,97) := 6$
  640. spm(96,98) := 1$
  641. spm(97,95) := 1$
  642. spm(97,96) := 6$
  643. spm(97,97) := 11$
  644. spm(97,98) := 6$
  645. spm(97,99) := 1$
  646. spm(98,96) := 1$
  647. spm(98,97) := 6$
  648. spm(98,98) := 11$
  649. spm(98,99) := 6$
  650. spm(98,100) := 1$
  651. spm(99,97) := 1$
  652. spm(99,98) := 6$
  653. spm(99,99) := 11$
  654. spm(99,100) := 6$
  655. spm(100,98) := 1$
  656. spm(100,99) := 6$
  657. spm(100,100) := 10$
  658. mat5^2$
  659. det(mat1);
  660. 3840
  661. det(mat4);
  662. 5
  663. x
  664. trace(mat1);
  665. 30
  666. trace(mat4);
  667. 5*x
  668. rank(mat1);
  669. 5
  670. rank mat5;
  671. 100
  672. tp(mat3);
  673. spm(1,1) := 1$
  674. spm(1,2) := 3$
  675. spm(2,1) := 2$
  676. spm(2,2) := 4$
  677. spm(3,3) := 1$
  678. spm(3,4) := 3$
  679. spm(4,3) := 2$
  680. spm(4,4) := 4$
  681. spm(5,5) := 1$
  682. spm(5,6) := 3$
  683. spm(6,5) := 2$
  684. spm(6,6) := 4$
  685. spmateigen(mat3,eta);
  686. 2
  687. {{eta - 5*eta - 2,3,
  688. 2*arbcomplex(1)*(eta + 1)
  689. spm(1,1) := ---------------------------$
  690. 5*eta + 1
  691. spm(2,1) := arbcomplex(1)$
  692. 2*arbcomplex(2)*(eta + 1)
  693. spm(3,1) := ---------------------------$
  694. 5*eta + 1
  695. spm(4,1) := arbcomplex(2)$
  696. 2*arbcomplex(3)*(eta + 1)
  697. spm(5,1) := ---------------------------$
  698. 5*eta + 1
  699. spm(6,1) := arbcomplex(3)$
  700. }}
  701. % Next, tests for the Linear Algebra Package for Sparse Matrices.
  702. %Basic matrix manipulations.
  703. spadd_columns(mat1,1,2,5*y);
  704. spm(1,1) := 2$
  705. spm(1,2) := 10*y$
  706. spm(2,2) := 4$
  707. spm(3,3) := 6$
  708. spm(4,4) := 8$
  709. spm(5,5) := 10$
  710. spadd_rows(mat1,1,2,x);
  711. spm(1,1) := 2$
  712. spm(2,1) := 2*x$
  713. spm(2,2) := 4$
  714. spm(3,3) := 6$
  715. spm(4,4) := 8$
  716. spm(5,5) := 10$
  717. spadd_to_columns(mat1,3,1000);
  718. spm(1,1) := 2$
  719. spm(1,3) := 1000$
  720. spm(2,2) := 4$
  721. spm(2,3) := 1000$
  722. spm(3,3) := 1006$
  723. spm(4,3) := 1000$
  724. spm(4,4) := 8$
  725. spm(5,3) := 1000$
  726. spm(5,5) := 10$
  727. spadd_to_columns(mat5,{1,2,3},y)$
  728. spadd_to_rows(mat1,2,1000);
  729. spm(1,1) := 2$
  730. spm(2,1) := 1000$
  731. spm(2,2) := 1004$
  732. spm(2,3) := 1000$
  733. spm(2,4) := 1000$
  734. spm(2,5) := 1000$
  735. spm(3,3) := 6$
  736. spm(4,4) := 8$
  737. spm(5,5) := 10$
  738. spadd_to_rows(mat5,{1,2,3},x)$
  739. spaugment_columns(mat3,2);
  740. spm(1,1) := 2$
  741. spm(2,1) := 4$
  742. spaugment_columns(mat1,{1,2,5});
  743. spm(1,1) := 2$
  744. spm(2,2) := 4$
  745. spm(5,3) := 10$
  746. spstack_rows(mat1,3);
  747. spm(1,3) := 6$
  748. spstack_rows(mat1,{1,3,5});
  749. spm(1,1) := 2$
  750. spm(2,3) := 6$
  751. spm(3,5) := 10$
  752. spchar_poly(mat1,x);
  753. 5 4 3 2
  754. x - 30*x + 340*x - 1800*x + 4384*x - 3840
  755. spcol_dim(mat2);
  756. 100
  757. sprow_dim(mat1);
  758. 5
  759. spcopy_into(mat7,mat1,2,2);
  760. spm(1,1) := 2$
  761. spm(2,2) := b$
  762. spm(2,3) := c$
  763. spm(3,2) := a$
  764. spm(3,3) := b$
  765. spm(3,4) := c$
  766. spm(4,3) := a$
  767. spm(4,4) := b$
  768. spm(4,5) := c$
  769. spm(5,4) := a$
  770. spm(5,5) := b$
  771. spcopy_into(mat7,mat1,5,5);
  772. ***** Error in spcopy_into: the matrix
  773. spm(1,1) := b$
  774. spm(1,2) := c$
  775. spm(2,1) := a$
  776. spm(2,2) := b$
  777. spm(2,3) := c$
  778. spm(3,2) := a$
  779. spm(3,3) := b$
  780. spm(3,4) := c$
  781. spm(4,3) := a$
  782. spm(4,4) := b$
  783. does not fit into
  784. spm(1,1) := 2$
  785. spm(2,2) := 4$
  786. spm(3,3) := 6$
  787. spm(4,4) := 8$
  788. spm(5,5) := 10$
  789. at position 5,5.
  790. spcopy_into(zz1,mat1,1,1);
  791. spm(1,1) := 1$
  792. spm(1,2) := 2$
  793. spm(2,1) := 3$
  794. spm(2,2) := 4$
  795. spm(3,3) := 6$
  796. spm(4,4) := 8$
  797. spm(5,5) := 10$
  798. spdiagonal(3);
  799. spm(1,1) := 3$
  800. % spdiagonal can take both a list of arguments or just the arguments.
  801. spdiagonal({mat2,mat5})$
  802. spdiagonal(mat2,mat5)$
  803. % spdiagonal can also take a mixture of 'sparse and 'matrix types.
  804. spdiagonal(zz1,mat4,zz1);
  805. spm(1,1) := 1$
  806. spm(1,2) := 2$
  807. spm(2,1) := 3$
  808. spm(2,2) := 4$
  809. spm(3,3) := x$
  810. spm(4,4) := x$
  811. spm(5,5) := x$
  812. spm(6,6) := x$
  813. spm(7,7) := x$
  814. spm(8,8) := 1$
  815. spm(8,9) := 2$
  816. spm(9,8) := 3$
  817. spm(9,9) := 4$
  818. spextend(mat1,3,2,x);
  819. spm(1,1) := 2$
  820. spm(2,2) := 4$
  821. spm(3,3) := 6$
  822. spm(4,4) := 8$
  823. spm(5,5) := 10$
  824. spm(6,6) := x$
  825. spm(6,7) := x$
  826. spm(7,6) := x$
  827. spm(7,7) := x$
  828. spm(8,6) := x$
  829. spm(8,7) := x$
  830. spfind_companion(mat5,x);
  831. 98 2
  832. x *(x - 3*x - 1)
  833. spget_columns(mat1,1);
  834. {
  835. spm(1,1) := 2$
  836. }
  837. spget_columns(mat1,{1,2});
  838. {
  839. spm(1,1) := 2$
  840. ,
  841. spm(2,1) := 4$
  842. }
  843. spget_rows(mat1,3);
  844. {
  845. spm(1,3) := 6$
  846. }
  847. spget_rows(mat1,{1,3});
  848. {
  849. spm(1,1) := 2$
  850. ,
  851. spm(1,3) := 6$
  852. }
  853. sphermitian_tp(mat6);
  854. spm(1,1) := - i + 1$
  855. spm(1,2) := 4$
  856. spm(1,3) := 1$
  857. spm(2,1) := - i + 2$
  858. spm(2,2) := 5$
  859. spm(2,3) := - i$
  860. spm(3,1) := - i + 3$
  861. spm(3,2) := 2$
  862. spm(4,4) := - i + 1$
  863. spm(4,5) := 4$
  864. spm(4,6) := 1$
  865. spm(5,4) := - i + 2$
  866. spm(5,5) := 5$
  867. spm(5,6) := - i$
  868. spm(6,4) := - i + 3$
  869. spm(6,5) := 2$
  870. % matrix_augment and matrix_stack can take both a list of arguments
  871. % or just the arguments.
  872. spmatrix_augment({mat1,mat1});
  873. spm(1,1) := 2$
  874. spm(1,6) := 2$
  875. spm(2,2) := 4$
  876. spm(2,7) := 4$
  877. spm(3,3) := 6$
  878. spm(3,8) := 6$
  879. spm(4,4) := 8$
  880. spm(4,9) := 8$
  881. spm(5,5) := 10$
  882. spm(5,10) := 10$
  883. spmatrix_augment(mat5,mat2,mat5)$
  884. spmatrix_stack(mat2,mat2)$
  885. spminor(mat1,2,3);
  886. spm(1,1) := 2$
  887. spm(3,3) := 8$
  888. spm(4,4) := 10$
  889. spmult_columns(mat1,3,y);
  890. spm(1,1) := 2$
  891. spm(2,2) := 4$
  892. spm(3,3) := 6*y$
  893. spm(4,4) := 8$
  894. spm(5,5) := 10$
  895. spmult_columns(mat2,{2,3,4},100)$
  896. spmult_rows(mat2,2,x);
  897. spm(1,1) := 1$
  898. spm(2,2) := 2*x$
  899. spm(3,3) := 3$
  900. spm(4,4) := 4$
  901. spm(5,5) := 5$
  902. spm(6,6) := 6$
  903. spm(7,7) := 7$
  904. spm(8,8) := 8$
  905. spm(9,9) := 9$
  906. spm(10,10) := 10$
  907. spm(11,11) := 11$
  908. spm(12,12) := 12$
  909. spm(13,13) := 13$
  910. spm(14,14) := 14$
  911. spm(15,15) := 15$
  912. spm(16,16) := 16$
  913. spm(17,17) := 17$
  914. spm(18,18) := 18$
  915. spm(19,19) := 19$
  916. spm(20,20) := 20$
  917. spm(21,21) := 21$
  918. spm(22,22) := 22$
  919. spm(23,23) := 23$
  920. spm(24,24) := 24$
  921. spm(25,25) := 25$
  922. spm(26,26) := 26$
  923. spm(27,27) := 27$
  924. spm(28,28) := 28$
  925. spm(29,29) := 29$
  926. spm(30,30) := 30$
  927. spm(31,31) := 31$
  928. spm(32,32) := 32$
  929. spm(33,33) := 33$
  930. spm(34,34) := 34$
  931. spm(35,35) := 35$
  932. spm(36,36) := 36$
  933. spm(37,37) := 37$
  934. spm(38,38) := 38$
  935. spm(39,39) := 39$
  936. spm(40,40) := 40$
  937. spm(41,41) := 41$
  938. spm(42,42) := 42$
  939. spm(43,43) := 43$
  940. spm(44,44) := 44$
  941. spm(45,45) := 45$
  942. spm(46,46) := 46$
  943. spm(47,47) := 47$
  944. spm(48,48) := 48$
  945. spm(49,49) := 49$
  946. spm(50,50) := 50$
  947. spm(51,51) := 51$
  948. spm(52,52) := 52$
  949. spm(53,53) := 53$
  950. spm(54,54) := 54$
  951. spm(55,55) := 55$
  952. spm(56,56) := 56$
  953. spm(57,57) := 57$
  954. spm(58,58) := 58$
  955. spm(59,59) := 59$
  956. spm(60,60) := 60$
  957. spm(61,61) := 61$
  958. spm(62,62) := 62$
  959. spm(63,63) := 63$
  960. spm(64,64) := 64$
  961. spm(65,65) := 65$
  962. spm(66,66) := 66$
  963. spm(67,67) := 67$
  964. spm(68,68) := 68$
  965. spm(69,69) := 69$
  966. spm(70,70) := 70$
  967. spm(71,71) := 71$
  968. spm(72,72) := 72$
  969. spm(73,73) := 73$
  970. spm(74,74) := 74$
  971. spm(75,75) := 75$
  972. spm(76,76) := 76$
  973. spm(77,77) := 77$
  974. spm(78,78) := 78$
  975. spm(79,79) := 79$
  976. spm(80,80) := 80$
  977. spm(81,81) := 81$
  978. spm(82,82) := 82$
  979. spm(83,83) := 83$
  980. spm(84,84) := 84$
  981. spm(85,85) := 85$
  982. spm(86,86) := 86$
  983. spm(87,87) := 87$
  984. spm(88,88) := 88$
  985. spm(89,89) := 89$
  986. spm(90,90) := 90$
  987. spm(91,91) := 91$
  988. spm(92,92) := 92$
  989. spm(93,93) := 93$
  990. spm(94,94) := 94$
  991. spm(95,95) := 95$
  992. spm(96,96) := 96$
  993. spm(97,97) := 97$
  994. spm(98,98) := 98$
  995. spm(99,99) := 99$
  996. spm(100,100) := 100$
  997. spmult_rows(mat1,{1,3,5},10);
  998. spm(1,1) := 20$
  999. spm(2,2) := 4$
  1000. spm(3,3) := 60$
  1001. spm(4,4) := 8$
  1002. spm(5,5) := 100$
  1003. sppivot(mat3,3,3);
  1004. spm(1,1) := 1$
  1005. spm(1,2) := 2$
  1006. spm(2,1) := 3$
  1007. spm(2,2) := 4$
  1008. spm(3,3) := 1$
  1009. spm(3,4) := 2$
  1010. spm(4,4) := -2$
  1011. spm(5,5) := 1$
  1012. spm(5,6) := 2$
  1013. spm(6,5) := 3$
  1014. spm(6,6) := 4$
  1015. sprows_pivot(mat3,1,1,{2,4});
  1016. spm(1,1) := 1$
  1017. spm(1,2) := 2$
  1018. spm(2,2) := -2$
  1019. spm(3,3) := 1$
  1020. spm(3,4) := 2$
  1021. spm(4,3) := 3$
  1022. spm(4,4) := 4$
  1023. spm(5,5) := 1$
  1024. spm(5,6) := 2$
  1025. spm(6,5) := 3$
  1026. spm(6,6) := 4$
  1027. spremove_columns(mat1,3);
  1028. spm(1,1) := 2$
  1029. spm(2,2) := 4$
  1030. spm(4,3) := 8$
  1031. spm(5,4) := 10$
  1032. spremove_columns(mat3,{2,3,4});
  1033. spm(1,1) := 1$
  1034. spm(2,1) := 3$
  1035. spm(5,2) := 1$
  1036. spm(5,3) := 2$
  1037. spm(6,2) := 3$
  1038. spm(6,3) := 4$
  1039. spremove_rows(mat1,2);
  1040. spm(1,1) := 2$
  1041. spm(2,3) := 6$
  1042. spm(3,4) := 8$
  1043. spm(4,5) := 10$
  1044. spremove_rows(mat2,{1,3})$
  1045. spremove_rows(mat1,{1,2,3,4,5});
  1046. ***** Warning in spremove_rows:
  1047. all the rows have been removed. Returning nil.
  1048. spswap_cols(mat1,2,4);
  1049. spm(1,1) := 2$
  1050. spm(2,4) := 4$
  1051. spm(3,3) := 6$
  1052. spm(4,2) := 8$
  1053. spm(5,5) := 10$
  1054. spswap_rows(mat5,1,2)$
  1055. spswap_entries(mat1,{1,1},{5,5});
  1056. spm(1,1) := 10$
  1057. spm(2,2) := 4$
  1058. spm(3,3) := 6$
  1059. spm(4,4) := 8$
  1060. spm(5,5) := 2$
  1061. % Constructors - functions that create matrices.
  1062. spband_matrix(x,500)$
  1063. spband_matrix({x,y,z},6000)$
  1064. spblock_matrix(1,2,{mat1,mat1});
  1065. spm(1,1) := 2$
  1066. spm(1,6) := 2$
  1067. spm(2,2) := 4$
  1068. spm(2,7) := 4$
  1069. spm(3,3) := 6$
  1070. spm(3,8) := 6$
  1071. spm(4,4) := 8$
  1072. spm(4,9) := 8$
  1073. spm(5,5) := 10$
  1074. spm(5,10) := 10$
  1075. spblock_matrix(2,3,{mat3,mat6,mat3,mat6,mat3,mat6});
  1076. spm(1,1) := 1$
  1077. spm(1,2) := 2$
  1078. spm(1,7) := i + 1$
  1079. spm(1,8) := i + 2$
  1080. spm(1,9) := i + 3$
  1081. spm(1,13) := 1$
  1082. spm(1,14) := 2$
  1083. spm(2,1) := 3$
  1084. spm(2,2) := 4$
  1085. spm(2,7) := 4$
  1086. spm(2,8) := 5$
  1087. spm(2,9) := 2$
  1088. spm(2,13) := 3$
  1089. spm(2,14) := 4$
  1090. spm(3,3) := 1$
  1091. spm(3,4) := 2$
  1092. spm(3,7) := 1$
  1093. spm(3,8) := i$
  1094. spm(3,15) := 1$
  1095. spm(3,16) := 2$
  1096. spm(4,3) := 3$
  1097. spm(4,4) := 4$
  1098. spm(4,10) := i + 1$
  1099. spm(4,11) := i + 2$
  1100. spm(4,12) := i + 3$
  1101. spm(4,15) := 3$
  1102. spm(4,16) := 4$
  1103. spm(5,5) := 1$
  1104. spm(5,6) := 2$
  1105. spm(5,10) := 4$
  1106. spm(5,11) := 5$
  1107. spm(5,12) := 2$
  1108. spm(5,17) := 1$
  1109. spm(5,18) := 2$
  1110. spm(6,5) := 3$
  1111. spm(6,6) := 4$
  1112. spm(6,10) := 1$
  1113. spm(6,11) := i$
  1114. spm(6,17) := 3$
  1115. spm(6,18) := 4$
  1116. spm(7,1) := i + 1$
  1117. spm(7,2) := i + 2$
  1118. spm(7,3) := i + 3$
  1119. spm(7,7) := 1$
  1120. spm(7,8) := 2$
  1121. spm(7,13) := i + 1$
  1122. spm(7,14) := i + 2$
  1123. spm(7,15) := i + 3$
  1124. spm(8,1) := 4$
  1125. spm(8,2) := 5$
  1126. spm(8,3) := 2$
  1127. spm(8,7) := 3$
  1128. spm(8,8) := 4$
  1129. spm(8,13) := 4$
  1130. spm(8,14) := 5$
  1131. spm(8,15) := 2$
  1132. spm(9,1) := 1$
  1133. spm(9,2) := i$
  1134. spm(9,9) := 1$
  1135. spm(9,10) := 2$
  1136. spm(9,13) := 1$
  1137. spm(9,14) := i$
  1138. spm(10,4) := i + 1$
  1139. spm(10,5) := i + 2$
  1140. spm(10,6) := i + 3$
  1141. spm(10,9) := 3$
  1142. spm(10,10) := 4$
  1143. spm(10,16) := i + 1$
  1144. spm(10,17) := i + 2$
  1145. spm(10,18) := i + 3$
  1146. spm(11,4) := 4$
  1147. spm(11,5) := 5$
  1148. spm(11,6) := 2$
  1149. spm(11,11) := 1$
  1150. spm(11,12) := 2$
  1151. spm(11,16) := 4$
  1152. spm(11,17) := 5$
  1153. spm(11,18) := 2$
  1154. spm(12,4) := 1$
  1155. spm(12,5) := i$
  1156. spm(12,11) := 3$
  1157. spm(12,12) := 4$
  1158. spm(12,16) := 1$
  1159. spm(12,17) := i$
  1160. spchar_matrix(mat3,x);
  1161. spm(1,1) := x - 1$
  1162. spm(1,2) := -2$
  1163. spm(2,1) := -3$
  1164. spm(2,2) := x - 4$
  1165. spm(3,3) := x - 1$
  1166. spm(3,4) := -2$
  1167. spm(4,3) := -3$
  1168. spm(4,4) := x - 4$
  1169. spm(5,5) := x - 1$
  1170. spm(5,6) := -2$
  1171. spm(6,5) := -3$
  1172. spm(6,6) := x - 4$
  1173. cfmat := spcoeff_matrix({y+4*+-5*w=10,y-z=20,y+4+3*z,w+x+50});
  1174. {
  1175. spm(1,1) := 1$
  1176. spm(1,2) := -20$
  1177. spm(2,1) := 1$
  1178. spm(2,3) := -1$
  1179. spm(3,1) := 1$
  1180. spm(3,3) := 3$
  1181. spm(4,2) := 1$
  1182. spm(4,4) := 1$
  1183. ,
  1184. spm(1,1) := y$
  1185. spm(2,1) := w$
  1186. spm(3,1) := z$
  1187. spm(4,1) := x$
  1188. ,
  1189. spm(1,1) := 10$
  1190. spm(2,1) := 20$
  1191. spm(3,1) := -4$
  1192. spm(4,1) := -50$
  1193. cfmat := }
  1194. first cfmat * second cfmat;
  1195. spm(1,1) := - 20*w + y$
  1196. spm(2,1) := y - z$
  1197. spm(3,1) := y + 3*z$
  1198. spm(4,1) := w + x$
  1199. third cfmat;
  1200. spm(1,1) := 10$
  1201. spm(2,1) := 20$
  1202. spm(3,1) := -4$
  1203. spm(4,1) := -50$
  1204. spcompanion(poly,x);
  1205. spm(1,7) := -12$
  1206. spm(2,1) := 1$
  1207. spm(3,2) := 1$
  1208. spm(4,3) := 1$
  1209. spm(4,7) := -5$
  1210. spm(5,4) := 1$
  1211. spm(5,7) := -4$
  1212. spm(6,5) := 1$
  1213. spm(6,7) := -1$
  1214. spm(7,6) := 1$
  1215. sphessian(poly1,{w,x,y,z});
  1216. spm(2,2) := 2$
  1217. 2 3
  1218. spm(2,3) := 3*y + z + 1$
  1219. 2
  1220. spm(2,4) := 3*y*z $
  1221. 2 3
  1222. spm(3,2) := 3*y + z + 1$
  1223. spm(3,3) := 6*x*y$
  1224. 2
  1225. spm(3,4) := 3*x*z $
  1226. 2
  1227. spm(4,2) := 3*y*z $
  1228. 2
  1229. spm(4,3) := 3*x*z $
  1230. spm(4,4) := 6*x*y*z$
  1231. spjacobian({x^4,x*y^2,x*y*z^3},{w,x,y,z});
  1232. 3
  1233. spm(1,2) := 4*x $
  1234. 2
  1235. spm(2,2) := y $
  1236. spm(2,3) := 2*x*y$
  1237. 3
  1238. spm(3,2) := y*z $
  1239. 3
  1240. spm(3,3) := x*z $
  1241. 2
  1242. spm(3,4) := 3*x*y*z $
  1243. spjordan_block(x,500)$
  1244. spmake_identity(1000)$
  1245. on rounded;
  1246. % makes output easier to read.
  1247. ch := spcholesky(mat1);
  1248. {
  1249. spm(1,1) := 1.41421356237$
  1250. spm(2,2) := 2.0$
  1251. spm(3,3) := 2.44948974278$
  1252. spm(4,4) := 2.82842712475$
  1253. spm(5,5) := 3.16227766017$
  1254. ,
  1255. spm(1,1) := 1.41421356237$
  1256. spm(2,2) := 2.0$
  1257. spm(3,3) := 2.44948974278$
  1258. spm(4,4) := 2.82842712475$
  1259. spm(5,5) := 3.16227766017$
  1260. ch := }
  1261. tp first ch - second ch;
  1262. "Empty Matrix"
  1263. tmp := first ch * second ch;
  1264. spm(1,1) := 2.0$
  1265. spm(2,2) := 4.0$
  1266. spm(3,3) := 6.0$
  1267. spm(4,4) := 8.0$
  1268. spm(5,5) := 10.0$
  1269. tmp :=
  1270. tmp - mat1;
  1271. "Empty Matrix"
  1272. off rounded;
  1273. % The gram schmidt functions takes a list of vectors.
  1274. % These vectors are matrices of type 'sparse with column dimension 1.
  1275. %Create the "vectors".
  1276. sparse a(4,1);
  1277. sparse b(4,1);
  1278. sparse c(4,1);
  1279. sparse d(4,1);
  1280. %Fill the "vectors" with data.
  1281. a(1,1):=1;
  1282. a(1,1) := 1
  1283. b(1,1):=1;
  1284. b(1,1) := 1
  1285. b(2,1):=1;
  1286. b(2,1) := 1
  1287. c(1,1):=1;
  1288. c(1,1) := 1
  1289. c(2,1):=1;
  1290. c(2,1) := 1
  1291. c(3,1):=1;
  1292. c(3,1) := 1
  1293. d(1,1):=1;
  1294. d(1,1) := 1
  1295. d(2,1):=1;
  1296. d(2,1) := 1
  1297. d(3,1):=1;
  1298. d(3,1) := 1
  1299. d(4,1):=1;
  1300. d(4,1) := 1
  1301. spgram_schmidt({{a},{b},{c},{d}});
  1302. {
  1303. spm(1,1) := 1$
  1304. ,
  1305. spm(2,1) := 1$
  1306. ,
  1307. spm(3,1) := 1$
  1308. ,
  1309. spm(4,1) := 1$
  1310. }
  1311. on rounded;
  1312. % again, makes large quotients a bit more readable.
  1313. % The algorithm used for splu_decom sometimes swaps the rows of the
  1314. % input matrix so that (given matrix A, splu_decom(A) = {L,U,vec}),
  1315. % we find L*U does not equal A but a row equivalent of it. The call
  1316. % spconvert(A,vec) will return this row equivalent
  1317. % (ie: L*U = convert(A,vec)).
  1318. lu := splu_decom(mat5)$
  1319. tmp := first lu * second lu$
  1320. tmp1 := spconvert(mat5,third lu);
  1321. spm(1,1) := 3$
  1322. spm(1,2) := 1$
  1323. spm(2,1) := 1$
  1324. spm(2,2) := 3$
  1325. spm(2,3) := 1$
  1326. spm(3,2) := 1$
  1327. spm(3,3) := 3$
  1328. spm(3,4) := 1$
  1329. spm(4,3) := 1$
  1330. spm(4,4) := 3$
  1331. spm(4,5) := 1$
  1332. spm(5,4) := 1$
  1333. spm(5,5) := 3$
  1334. spm(5,6) := 1$
  1335. spm(6,5) := 1$
  1336. spm(6,6) := 3$
  1337. spm(6,7) := 1$
  1338. spm(7,6) := 1$
  1339. spm(7,7) := 3$
  1340. spm(7,8) := 1$
  1341. spm(8,7) := 1$
  1342. spm(8,8) := 3$
  1343. spm(8,9) := 1$
  1344. spm(9,8) := 1$
  1345. spm(9,9) := 3$
  1346. spm(9,10) := 1$
  1347. spm(10,9) := 1$
  1348. spm(10,10) := 3$
  1349. spm(10,11) := 1$
  1350. spm(11,10) := 1$
  1351. spm(11,11) := 3$
  1352. spm(11,12) := 1$
  1353. spm(12,11) := 1$
  1354. spm(12,12) := 3$
  1355. spm(12,13) := 1$
  1356. spm(13,12) := 1$
  1357. spm(13,13) := 3$
  1358. spm(13,14) := 1$
  1359. spm(14,13) := 1$
  1360. spm(14,14) := 3$
  1361. spm(14,15) := 1$
  1362. spm(15,14) := 1$
  1363. spm(15,15) := 3$
  1364. spm(15,16) := 1$
  1365. spm(16,15) := 1$
  1366. spm(16,16) := 3$
  1367. spm(16,17) := 1$
  1368. spm(17,16) := 1$
  1369. spm(17,17) := 3$
  1370. spm(17,18) := 1$
  1371. spm(18,17) := 1$
  1372. spm(18,18) := 3$
  1373. spm(18,19) := 1$
  1374. spm(19,18) := 1$
  1375. spm(19,19) := 3$
  1376. spm(19,20) := 1$
  1377. spm(20,19) := 1$
  1378. spm(20,20) := 3$
  1379. spm(20,21) := 1$
  1380. spm(21,20) := 1$
  1381. spm(21,21) := 3$
  1382. spm(21,22) := 1$
  1383. spm(22,21) := 1$
  1384. spm(22,22) := 3$
  1385. spm(22,23) := 1$
  1386. spm(23,22) := 1$
  1387. spm(23,23) := 3$
  1388. spm(23,24) := 1$
  1389. spm(24,23) := 1$
  1390. spm(24,24) := 3$
  1391. spm(24,25) := 1$
  1392. spm(25,24) := 1$
  1393. spm(25,25) := 3$
  1394. spm(25,26) := 1$
  1395. spm(26,25) := 1$
  1396. spm(26,26) := 3$
  1397. spm(26,27) := 1$
  1398. spm(27,26) := 1$
  1399. spm(27,27) := 3$
  1400. spm(27,28) := 1$
  1401. spm(28,27) := 1$
  1402. spm(28,28) := 3$
  1403. spm(28,29) := 1$
  1404. spm(29,28) := 1$
  1405. spm(29,29) := 3$
  1406. spm(29,30) := 1$
  1407. spm(30,29) := 1$
  1408. spm(30,30) := 3$
  1409. spm(30,31) := 1$
  1410. spm(31,30) := 1$
  1411. spm(31,31) := 3$
  1412. spm(31,32) := 1$
  1413. spm(32,31) := 1$
  1414. spm(32,32) := 3$
  1415. spm(32,33) := 1$
  1416. spm(33,32) := 1$
  1417. spm(33,33) := 3$
  1418. spm(33,34) := 1$
  1419. spm(34,33) := 1$
  1420. spm(34,34) := 3$
  1421. spm(34,35) := 1$
  1422. spm(35,34) := 1$
  1423. spm(35,35) := 3$
  1424. spm(35,36) := 1$
  1425. spm(36,35) := 1$
  1426. spm(36,36) := 3$
  1427. spm(36,37) := 1$
  1428. spm(37,36) := 1$
  1429. spm(37,37) := 3$
  1430. spm(37,38) := 1$
  1431. spm(38,37) := 1$
  1432. spm(38,38) := 3$
  1433. spm(38,39) := 1$
  1434. spm(39,38) := 1$
  1435. spm(39,39) := 3$
  1436. spm(39,40) := 1$
  1437. spm(40,39) := 1$
  1438. spm(40,40) := 3$
  1439. spm(40,41) := 1$
  1440. spm(41,40) := 1$
  1441. spm(41,41) := 3$
  1442. spm(41,42) := 1$
  1443. spm(42,41) := 1$
  1444. spm(42,42) := 3$
  1445. spm(42,43) := 1$
  1446. spm(43,42) := 1$
  1447. spm(43,43) := 3$
  1448. spm(43,44) := 1$
  1449. spm(44,43) := 1$
  1450. spm(44,44) := 3$
  1451. spm(44,45) := 1$
  1452. spm(45,44) := 1$
  1453. spm(45,45) := 3$
  1454. spm(45,46) := 1$
  1455. spm(46,45) := 1$
  1456. spm(46,46) := 3$
  1457. spm(46,47) := 1$
  1458. spm(47,46) := 1$
  1459. spm(47,47) := 3$
  1460. spm(47,48) := 1$
  1461. spm(48,47) := 1$
  1462. spm(48,48) := 3$
  1463. spm(48,49) := 1$
  1464. spm(49,48) := 1$
  1465. spm(49,49) := 3$
  1466. spm(49,50) := 1$
  1467. spm(50,49) := 1$
  1468. spm(50,50) := 3$
  1469. spm(50,51) := 1$
  1470. spm(51,50) := 1$
  1471. spm(51,51) := 3$
  1472. spm(51,52) := 1$
  1473. spm(52,51) := 1$
  1474. spm(52,52) := 3$
  1475. spm(52,53) := 1$
  1476. spm(53,52) := 1$
  1477. spm(53,53) := 3$
  1478. spm(53,54) := 1$
  1479. spm(54,53) := 1$
  1480. spm(54,54) := 3$
  1481. spm(54,55) := 1$
  1482. spm(55,54) := 1$
  1483. spm(55,55) := 3$
  1484. spm(55,56) := 1$
  1485. spm(56,55) := 1$
  1486. spm(56,56) := 3$
  1487. spm(56,57) := 1$
  1488. spm(57,56) := 1$
  1489. spm(57,57) := 3$
  1490. spm(57,58) := 1$
  1491. spm(58,57) := 1$
  1492. spm(58,58) := 3$
  1493. spm(58,59) := 1$
  1494. spm(59,58) := 1$
  1495. spm(59,59) := 3$
  1496. spm(59,60) := 1$
  1497. spm(60,59) := 1$
  1498. spm(60,60) := 3$
  1499. spm(60,61) := 1$
  1500. spm(61,60) := 1$
  1501. spm(61,61) := 3$
  1502. spm(61,62) := 1$
  1503. spm(62,61) := 1$
  1504. spm(62,62) := 3$
  1505. spm(62,63) := 1$
  1506. spm(63,62) := 1$
  1507. spm(63,63) := 3$
  1508. spm(63,64) := 1$
  1509. spm(64,63) := 1$
  1510. spm(64,64) := 3$
  1511. spm(64,65) := 1$
  1512. spm(65,64) := 1$
  1513. spm(65,65) := 3$
  1514. spm(65,66) := 1$
  1515. spm(66,65) := 1$
  1516. spm(66,66) := 3$
  1517. spm(66,67) := 1$
  1518. spm(67,66) := 1$
  1519. spm(67,67) := 3$
  1520. spm(67,68) := 1$
  1521. spm(68,67) := 1$
  1522. spm(68,68) := 3$
  1523. spm(68,69) := 1$
  1524. spm(69,68) := 1$
  1525. spm(69,69) := 3$
  1526. spm(69,70) := 1$
  1527. spm(70,69) := 1$
  1528. spm(70,70) := 3$
  1529. spm(70,71) := 1$
  1530. spm(71,70) := 1$
  1531. spm(71,71) := 3$
  1532. spm(71,72) := 1$
  1533. spm(72,71) := 1$
  1534. spm(72,72) := 3$
  1535. spm(72,73) := 1$
  1536. spm(73,72) := 1$
  1537. spm(73,73) := 3$
  1538. spm(73,74) := 1$
  1539. spm(74,73) := 1$
  1540. spm(74,74) := 3$
  1541. spm(74,75) := 1$
  1542. spm(75,74) := 1$
  1543. spm(75,75) := 3$
  1544. spm(75,76) := 1$
  1545. spm(76,75) := 1$
  1546. spm(76,76) := 3$
  1547. spm(76,77) := 1$
  1548. spm(77,76) := 1$
  1549. spm(77,77) := 3$
  1550. spm(77,78) := 1$
  1551. spm(78,77) := 1$
  1552. spm(78,78) := 3$
  1553. spm(78,79) := 1$
  1554. spm(79,78) := 1$
  1555. spm(79,79) := 3$
  1556. spm(79,80) := 1$
  1557. spm(80,79) := 1$
  1558. spm(80,80) := 3$
  1559. spm(80,81) := 1$
  1560. spm(81,80) := 1$
  1561. spm(81,81) := 3$
  1562. spm(81,82) := 1$
  1563. spm(82,81) := 1$
  1564. spm(82,82) := 3$
  1565. spm(82,83) := 1$
  1566. spm(83,82) := 1$
  1567. spm(83,83) := 3$
  1568. spm(83,84) := 1$
  1569. spm(84,83) := 1$
  1570. spm(84,84) := 3$
  1571. spm(84,85) := 1$
  1572. spm(85,84) := 1$
  1573. spm(85,85) := 3$
  1574. spm(85,86) := 1$
  1575. spm(86,85) := 1$
  1576. spm(86,86) := 3$
  1577. spm(86,87) := 1$
  1578. spm(87,86) := 1$
  1579. spm(87,87) := 3$
  1580. spm(87,88) := 1$
  1581. spm(88,87) := 1$
  1582. spm(88,88) := 3$
  1583. spm(88,89) := 1$
  1584. spm(89,88) := 1$
  1585. spm(89,89) := 3$
  1586. spm(89,90) := 1$
  1587. spm(90,89) := 1$
  1588. spm(90,90) := 3$
  1589. spm(90,91) := 1$
  1590. spm(91,90) := 1$
  1591. spm(91,91) := 3$
  1592. spm(91,92) := 1$
  1593. spm(92,91) := 1$
  1594. spm(92,92) := 3$
  1595. spm(92,93) := 1$
  1596. spm(93,92) := 1$
  1597. spm(93,93) := 3$
  1598. spm(93,94) := 1$
  1599. spm(94,93) := 1$
  1600. spm(94,94) := 3$
  1601. spm(94,95) := 1$
  1602. spm(95,94) := 1$
  1603. spm(95,95) := 3$
  1604. spm(95,96) := 1$
  1605. spm(96,95) := 1$
  1606. spm(96,96) := 3$
  1607. spm(96,97) := 1$
  1608. spm(97,96) := 1$
  1609. spm(97,97) := 3$
  1610. spm(97,98) := 1$
  1611. spm(98,97) := 1$
  1612. spm(98,98) := 3$
  1613. spm(98,99) := 1$
  1614. spm(99,98) := 1$
  1615. spm(99,99) := 3$
  1616. spm(99,100) := 1$
  1617. spm(100,99) := 1$
  1618. spm(100,100) := 3$
  1619. tmp1 :=
  1620. tmp - tmp1;
  1621. "Empty Matrix"
  1622. % and the complex case..
  1623. on complex;
  1624. *** Domain mode rounded changed to complex-rounded
  1625. lu1 := splu_decom(mat6);
  1626. {
  1627. spm(1,1) := 1$
  1628. spm(2,1) := 4$
  1629. spm(2,2) := 5 - 4*i$
  1630. spm(3,1) := 1 + i$
  1631. spm(3,2) := 3$
  1632. spm(3,3) := 2.26829268293 + 0.414634146341*i$
  1633. spm(4,4) := 1$
  1634. spm(5,4) := 4$
  1635. spm(5,5) := 5 - 4*i$
  1636. spm(6,4) := 1 + i$
  1637. spm(6,5) := 3$
  1638. spm(6,6) := 2.26829268293 + 0.414634146341*i$
  1639. ,
  1640. spm(1,1) := 1$
  1641. spm(1,2) := i$
  1642. spm(2,2) := 1$
  1643. spm(2,3) := 0.243902439024 + 0.19512195122*i$
  1644. spm(3,3) := 1$
  1645. spm(4,4) := 1$
  1646. spm(4,5) := i$
  1647. spm(5,5) := 1$
  1648. spm(5,6) := 0.243902439024 + 0.19512195122*i$
  1649. spm(6,6) := 1$
  1650. lu1 := ,[3,2,3,6,5,6]}
  1651. mat6;
  1652. spm(1,1) := i + 1$
  1653. spm(1,2) := i + 2$
  1654. spm(1,3) := i + 3$
  1655. spm(2,1) := 4$
  1656. spm(2,2) := 5$
  1657. spm(2,3) := 2$
  1658. spm(3,1) := 1$
  1659. spm(3,2) := i$
  1660. spm(4,4) := i + 1$
  1661. spm(4,5) := i + 2$
  1662. spm(4,6) := i + 3$
  1663. spm(5,4) := 4$
  1664. spm(5,5) := 5$
  1665. spm(5,6) := 2$
  1666. spm(6,4) := 1$
  1667. spm(6,5) := i$
  1668. tmp := first lu1 * second lu1;
  1669. spm(1,1) := 1$
  1670. spm(1,2) := i$
  1671. spm(2,1) := 4$
  1672. spm(2,2) := 5$
  1673. spm(2,3) := 2.0$
  1674. spm(3,1) := 1 + i$
  1675. spm(3,2) := 2 + i$
  1676. spm(3,3) := 3.0 + i$
  1677. spm(4,4) := 1$
  1678. spm(4,5) := i$
  1679. spm(5,4) := 4$
  1680. spm(5,5) := 5$
  1681. spm(5,6) := 2.0$
  1682. spm(6,4) := 1 + i$
  1683. spm(6,5) := 2 + i$
  1684. spm(6,6) := 3.0 + i$
  1685. tmp :=
  1686. tmp1 := spconvert(mat6,third lu1);
  1687. spm(1,1) := 1$
  1688. spm(1,2) := i$
  1689. spm(2,1) := 4$
  1690. spm(2,2) := 5$
  1691. spm(2,3) := 2$
  1692. spm(3,1) := i + 1$
  1693. spm(3,2) := i + 2$
  1694. spm(3,3) := i + 3$
  1695. spm(4,4) := 1$
  1696. spm(4,5) := i$
  1697. spm(5,4) := 4$
  1698. spm(5,5) := 5$
  1699. spm(5,6) := 2$
  1700. spm(6,4) := i + 1$
  1701. spm(6,5) := i + 2$
  1702. spm(6,6) := i + 3$
  1703. tmp1 :=
  1704. tmp - tmp1;
  1705. "Empty Matrix"
  1706. off complex;
  1707. *** Domain mode complex-rounded changed to rounded
  1708. mat3inv := sppseudo_inverse(mat3);
  1709. spm(1,1) := - 2.0$
  1710. spm(1,2) := 1$
  1711. spm(2,1) := 1.5$
  1712. spm(2,2) := - 0.5$
  1713. spm(3,3) := - 2.0$
  1714. spm(3,4) := 1$
  1715. spm(4,3) := 1.5$
  1716. spm(4,4) := - 0.5$
  1717. spm(5,5) := - 2.0$
  1718. spm(5,6) := 1$
  1719. spm(6,5) := 1.5$
  1720. spm(6,6) := - 0.5$
  1721. mat3inv :=
  1722. mat3 * mat3inv;
  1723. spm(1,1) := 1$
  1724. spm(2,2) := 1$
  1725. spm(3,3) := 1$
  1726. spm(4,4) := 1$
  1727. spm(5,5) := 1$
  1728. spm(6,6) := 1$
  1729. % Predicates.
  1730. matrixp(mat1);
  1731. t
  1732. matrixp(poly);
  1733. squarep(mat2);
  1734. t
  1735. squarep(mat3);
  1736. t
  1737. symmetricp(mat1);
  1738. t
  1739. symmetricp(mat3);
  1740. sparsematp(mat1);
  1741. t
  1742. sparsematp(poly);
  1743. off rounded;
  1744. end;
  1745. Time for test: 427 ms, plus GC time: 26 ms