13
13
Programmed by DRB@MC. */
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);
19
([AK:A,TRLIST:[MATTRACE(A)],
22
MAPERROR:FALSE,MAPPRINT:FALSE],
23
THRU LENGTH(A)-1 DO BLOCK([],AK:A.AK,TRLIST:CONS(MATTRACE(AK),TRLIST)),
24
TRLIST:REVERSE(TRLIST),
19
([ak:a,trlist:[mattrace(a)],
22
maperror:false,mapprint:false],
23
thru length(a)-1 do block([],ak:a.ak,trlist:cons(mattrace(ak),trlist)),
24
trlist:reverse(trlist),
26
26
MAP(LAMBDA([X],K:K+1,SYMLIST:
27
27
CONS(APPLY("+",MAPLIST("*",SYMLIST,TRLIST))/-K,SYMLIST)),TRLIST),
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)),
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)),