File: fpadno.f

package info (click to toggle)
python-scipy 0.18.1-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 75,464 kB
  • ctags: 79,406
  • sloc: python: 143,495; cpp: 89,357; fortran: 81,650; ansic: 79,778; makefile: 364; sh: 265
file content (59 lines) | stat: -rw-r--r-- 1,800 bytes parent folder | download | duplicates (11)
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
58
59
      subroutine fpadno(maxtr,up,left,right,info,count,merk,jbind,
     * n1,ier)
c  subroutine fpadno adds a branch of length n1 to the triply linked
c  tree,the information of which is kept in the arrays up,left,right
c  and info. the information field of the nodes of this new branch is
c  given in the array jbind. in linking the new branch fpadno takes
c  account of the property of the tree that
c    info(k) < info(right(k)) ; info(k) < info(left(k))
c  if necessary the subroutine calls subroutine fpfrno to collect the
c  free nodes of the tree. if no computer words are available at that
c  moment, the error parameter ier is set to 1.
c  ..
c  ..scalar arguments..
      integer maxtr,count,merk,n1,ier
c  ..array arguments..
      integer up(maxtr),left(maxtr),right(maxtr),info(maxtr),jbind(n1)
c  ..local scalars..
      integer k,niveau,point
      logical bool
c  ..subroutine references..
c    fpfrno
c  ..
      point = 1
      niveau = 1
  10  k = left(point)
      bool = .true.
  20  if(k.eq.0) go to 50
      if (info(k)-jbind(niveau).lt.0) go to 30
      if (info(k)-jbind(niveau).eq.0) go to 40
      go to 50
  30  point = k
      k = right(point)
      bool = .false.
      go to 20
  40  point = k
      niveau = niveau+1
      go to 10
  50  if(niveau.gt.n1) go to 90
      count = count+1
      if(count.le.maxtr) go to 60
      call fpfrno(maxtr,up,left,right,info,point,merk,n1,count,ier)
      if(ier.ne.0) go to 100
  60  info(count) = jbind(niveau)
      left(count) = 0
      right(count) = k
      if(bool) go to 70
      bool = .true.
      right(point) = count
      up(count) = up(point)
      go to 80
  70  up(count) = point
      left(point) = count
  80  point = count
      niveau = niveau+1
      k = 0
      go to 50
  90  ier = 0
 100  return
      end