Subversion Repositories wimsdev

Rev

Rev 20 | Rev 4158 | Go to most recent revision | Details | Compare with Previous | 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]
3265 bpr 12
slib_require=pari
20 reyssat 13
!exit
14
 
15
:proc
16
slib_cnt=!itemcnt $wims_read_parm
17
!for slib_i=1 to $slib_cnt
18
  slib_mat$slib_i = !item $slib_i of $wims_read_parm
19
!next 
20
 
21
slib_out=
22
 
23
slib_wm=
24
slib_wn=
25
!!inutile ? 
26
slib_data=
27
 
28
!for slib_i=1 to $slib_cnt
29
slib_N=!declosing $(slib_mat$slib_i)
30
slib_N = !translate internal ; to $\
31
$ in $slib_N
32
slib_N= !translate internal $\
33
$ to ; in $slib_N
34
slib_data=!append item [$slib_N] to $slib_data
35
!next slib_i
36
 
37
slib_out=!exec pari {slib_D=[$slib_data]; slib_R=Mat(slib_D[1]);\
38
slib_a=matsize(slib_R)[1];\
39
for(slib_i=2,$slib_cnt, slib_C= Mat(slib_D[slib_i]); slib_b=matsize(slib_C)[1];\
40
slib_R=mattranspose(concat(slib_R, matrix(slib_a,slib_b)));\
41
slib_S= mattranspose(concat(matrix(slib_b,slib_a), slib_C));\
42
slib_R=concat(slib_R,slib_S)~ ; slib_a=slib_a+slib_b);\
43
print(slib_R)}
44
 
45
slib_out=!trim $slib_out