~ubuntu-branches/debian/squeeze/maxima/squeeze

« back to all changes in this revision

Viewing changes to share/matrix/nchrpl.mac

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2006-10-18 14:52:42 UTC
  • mto: (1.1.5 upstream)
  • mto: This revision was merged to the branch mainline in revision 4.
  • Revision ID: james.westby@ubuntu.com-20061018145242-vzyrm5hmxr8kiosf
ImportĀ upstreamĀ versionĀ 5.10.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
 
13
13
Programmed by DRB@MC. */
14
14
 
15
 
MATTRACE(A):=BLOCK([ANS:0],FOR I THRU LENGTH(A) DO ANS:ANS+A[I,I],ANS);
 
15
mattrace(a):=block([ans:0],for i thru length(a) do ans:ans+a[i,i],ans);
16
16
 
17
 
NCHARPOLY(A,VAR):=
18
 
  BLOCK
19
 
    ([AK:A,TRLIST:[MATTRACE(A)],
20
 
      SYMLIST:[1],
21
 
      K:0,P:0,
22
 
      MAPERROR:FALSE,MAPPRINT:FALSE],
23
 
     THRU LENGTH(A)-1 DO BLOCK([],AK:A.AK,TRLIST:CONS(MATTRACE(AK),TRLIST)),
24
 
     TRLIST:REVERSE(TRLIST), 
 
17
ncharpoly(a,var):=
 
18
  block
 
19
    ([ak:a,trlist:[mattrace(a)],
 
20
      symlist:[1],
 
21
      k:0,p:0,
 
22
      maperror:false,mapprint:false],
 
23
     thru length(a)-1 do block([],ak:a.ak,trlist:cons(mattrace(ak),trlist)),
 
24
     trlist:reverse(trlist), 
25
25
      /*
26
26
     MAP(LAMBDA([X],K:K+1,SYMLIST:
27
27
     CONS(APPLY("+",MAPLIST("*",SYMLIST,TRLIST))/-K,SYMLIST)),TRLIST),
28
28
    */
29
 
     FOR I IN TRLIST DO (K:K+1,SYMLIST:
30
 
       CONS(APPLY("+",MAPLIST("*",SYMLIST,TRLIST))/-K,SYMLIST)),
31
 
     FOR I:0 UNLESS SYMLIST=[] DO
32
 
       BLOCK([],P:P+FIRST(SYMLIST)*VAR^I,SYMLIST:REST(SYMLIST)),
33
 
     RATSIMP(P,VAR));
 
29
     for i in trlist do (k:k+1,symlist:
 
30
       cons(apply("+",maplist("*",symlist,trlist))/-k,symlist)),
 
31
     for i:0 unless symlist=[] do
 
32
       block([],p:p+first(symlist)*var^i,symlist:rest(symlist)),
 
33
     ratsimp(p,var));
34
34
 
35
35