File: getwrk.sci

package info (click to toggle)
scilab 2.6-4
  • links: PTS
  • area: non-free
  • in suites: woody
  • size: 54,632 kB
  • ctags: 40,267
  • sloc: ansic: 267,851; fortran: 166,549; sh: 10,005; makefile: 4,119; tcl: 1,070; cpp: 233; csh: 143; asm: 135; perl: 130; java: 39
file content (57 lines) | stat: -rw-r--r-- 1,469 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
function [out,nwrk,txt]=getwrk(nwrk,typ,m,n)
//Cette macro alloue une matrice de taille m*n de type fortran typ dans le
//    tableau de travail correspondant (modifie en consequence nwrk)
//    et retourne
//      -dans out une chaine de la forme 'work(iwn)' ou 'iwork(iiwn)'
//        le n etant defini automatiquement.
//      -dans txt les lignes fortran permettant de definir iwn ou iiwn
//
//!
// Copyright INRIA
mn=mulf(m,n)
if typ=='1' then
  i=nwrk(1)
  nw2=nwrk(2);[m2,n2]=size(nw2)
  if n2==0 then i=0,end
  if n2>0 then
    free=find(nw2(2,:)=='0')
    k=find(nw2(1,free)==mn)
    if k==[] then
       nwrk(1)=nwrk(1)+1
       nwrk(2)=[nwrk(2) [mn;'1']]
       txt=[' iw'+string(i+1)+' = '+addf('iw'+string(i),mn)];
    else
       i=free(k(1))
       nw2(2,i)='1';nwrk(2)=nw2
    end
  else
    nwrk(1)=nwrk(1)+1
    nwrk(2)=[nwrk(2) [mn;'1']]
    txt=[' iw'+string(i+1)+' = '+addf('iw'+string(i),mn)];
  end
  out='work(iw'+string(i)+')'
else
  i=nwrk(4)
  nw5=nwrk(5);[m5,n5]=size(nw5)
  if n5==0 then i=0,end
  if n5>0 then
    free=find(nw5(2,:)=='0')
    k=find(nw5(1,free)==mn)
    if k==[] then
      nwrk(4)=nwrk(4)+1
      nwrk(5)=[nwrk(5),[mn;'1']];
      txt=[' iiw'+string(i+1)+' = '+addf('iiw'+string(i),mn)];
    else
      i=free(k(1))
      nw5(2,i)='1';nwrk(5)=nw5
    end
  else
    nwrk(4)=nwrk(4)+1
    nwrk(5)=[nwrk(5),[mn;'1']]
    txt=[' iiw'+string(i+1)+' = '+addf('iiw'+string(i),mn)];
  end
  out='iwork(iiw'+string(i)+')'
end