Subversion Repositories wimsdev

Rev

Rev 3265 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
20 reyssat 1
!if $wims_read_parm!=slib_header
2
!goto proc
3
!endif
4
slib_title=concatenation
5
slib_parms=1\
6
,list of square matrices under matrix format\
7
 
8
slib_author=Bernadette PERRIN-RIOU
9
slib_out=block diagonal matrix with input matrices on the diagonal
10
slib_comment=
11
slib_example=[1,2;3,4], [1,2;3,4],[1]
12
!exit
13
 
14
:proc
15
slib_cnt=!itemcnt $wims_read_parm
16
!for slib_i=1 to $slib_cnt
17
  slib_mat$slib_i = !item $slib_i of $wims_read_parm
18
!next 
19
 
20
slib_out=
21
 
22
slib_wm=
23
slib_wn=
24
!!inutile ? 
25
slib_data=
26
 
27
!for slib_i=1 to $slib_cnt
28
slib_N=!declosing $(slib_mat$slib_i)
29
slib_N = !translate internal ; to $\
30
$ in $slib_N
31
slib_N= !translate internal $\
32
$ to ; in $slib_N
33
slib_data=!append item [$slib_N] to $slib_data
34
!next slib_i
35
 
36
slib_out=!exec pari {slib_D=[$slib_data]; slib_R=Mat(slib_D[1]);\
37
slib_a=matsize(slib_R)[1];\
38
for(slib_i=2,$slib_cnt, slib_C= Mat(slib_D[slib_i]); slib_b=matsize(slib_C)[1];\
39
slib_R=mattranspose(concat(slib_R, matrix(slib_a,slib_b)));\
40
slib_S= mattranspose(concat(matrix(slib_b,slib_a), slib_C));\
41
slib_R=concat(slib_R,slib_S)~ ; slib_a=slib_a+slib_b);\
42
print(slib_R)}
43
 
44
slib_out=!trim $slib_out