function x=t2(a,b,c,d) z=[a b b], y=[a;c;c], x=[a b;c d]*3.5
Translation procedure
-->lt2=list();
-->lt2(1)=list('1','m1','n1');
-->lt2(2)=list('1','m1','n2');
-->lt2(3)=list('1','m2','n1');
-->lt2(4)=list('1','m2','n2');
-->// show the initial data
-->printspecs(t2,lt2)
type and dimension of input parameters
---------------------------------------
| variable number | fortran type |# rows |# columns |
|1 |double precision |m1 |n1 |
|2 |double precision |m1 |n2 |
|3 |double precision |m2 |n1 |
|4 |double precision |m2 |n2 |
-->//translate
-->txt=sci2for(t2,'t2',lt2);
Generated Fortran code:
subroutine t2(a,b,c,d,x,m1,n1,n2,m2,work)
c!
c automatic translation
c
c! calling sequence
c ----------------
c
c a : double precision variable of size m1,n1
c b : double precision variable of size m1,n2
c c : double precision variable of size m2,n1
c d : double precision variable of size m2,n2
c x : double precision variable of size m1+m2,n1+n2
c m1 : integer variable
c n1 : integer variable
c n2 : integer variable
c m2 : integer variable
c work : working array :
c (m1+m2)*(n1+n2)+m1*(n1+n2+n2)+(m1+m2+m2)*n1
c
c dimension of local variables
c -----------------------------
c!
double precision a(m1,n1),b(m1,n2),c(m2,n1),d(m2,n2),x(m1+m2,n1+n
& 2),z(m1,n1+n2+n2),y(m1+m2+m2,n1),work(*)
integer m1,n1,n2,m2
c
c adress of local variables
iwz = 1
iwy = iwz+m1*(n1+n2+n2)
c
iw0 = iwy+(m1+m2+m2)*n1
c
call dmcopy(a,n1,work(iwz+1),m1,n1,m1)
call dmcopy(b,n2,work(iwz+n1*m1+1),m1,n2,m1)
call dmcopy(b,n2,work(iwz+(n2+n1)*m1+1),m1,n2,m1)
c
call dmcopy(a,n1,work(iwy+1),m1+m2+m2,n1,m1)
call dmcopy(c,n1,work(iwy+m1+1),m1+m2+m2,n1,m2)
call dmcopy(c,n1,work(iwy+m2+m1+1),m1+m2+m2,n1,m2)
c
iw1 = iw0+(m1+m2)*(n1+n2)
call dmcopy(a,n1,work(iw0+1),m1+m2,n1,m1)
call dmcopy(b,n2,work(iw0+n1*(m1+m2)+1),m1+m2,n2,m1)
call dmcopy(c,n1,work(iw0+m1+1),m1+m2,n1,m2)
call dmcopy(d,n2,work(iw0+n1*(m1+m2)+m1+1),m1+m2,n2,m2)
call dcopy((m1+m2)*(n1+n2),work(iw0),1,x,1)
call dscal((m1+m2)*(n1+n2),3.5,x,1)
c
return
c
end