]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MINICERN/mathlib/gen/divon/nodaud.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / divon / nodaud.F
diff --git a/MINICERN/mathlib/gen/divon/nodaud.F b/MINICERN/mathlib/gen/divon/nodaud.F
new file mode 100644 (file)
index 0000000..cd66c19
--- /dev/null
@@ -0,0 +1,80 @@
+*
+* $Id$
+*
+* $Log$
+* Revision 1.1.1.1  1996/04/01 15:03:25  mclareni
+* Mathlib gen
+*
+*
+#include "gen/pilot.h"
+      SUBROUTINE NODAUD (PARENT,TNODE,NEWNOD,NEWLFT,TREE)
+      INTEGER PARENT,TNODE,NEWNOD,TREE(4,1000),SON,NEWLFT
+      INTEGER SNODES(100)
+      INTEGER PNODES,MNODES
+      IF(100.GT.100) GOTO 200
+      PNODES=0
+      MNODES=100
+      PNODES=PNODES+1
+      IF(PNODES.GT.MNODES) GOTO 160
+      SNODES(PNODES)=PARENT
+ 10   IF(TNODE.GT.TREE(1,PARENT)) GOTO 40
+      IF(PNODES.LE.0) GOTO 150
+      PARENT=SNODES(PNODES)
+      IF(TREE(4,PARENT).GE.0) GOTO 20
+      SON=TREE(2,PARENT)
+      GOTO 30
+ 20   SON=TREE(3,PARENT)
+ 30   IF(SON.LE.0) GOTO 70
+      PARENT=SON
+      PNODES=PNODES+1
+      IF(PNODES.GT.MNODES) GOTO 160
+      SNODES(PNODES)=PARENT
+      GOTO 70
+ 40   IF(PNODES.LE.0) GOTO 150
+      PARENT=SNODES(PNODES)
+      IF(TREE(4,PARENT).LE.0) GOTO 50
+      SON=TREE(2,PARENT)
+      GOTO 60
+ 50   SON=TREE(3,PARENT)
+ 60   IF(SON.LE.0) GOTO 70
+      PARENT=SON
+      PNODES=PNODES+1
+      IF(PNODES.GT.MNODES) GOTO 160
+      SNODES(PNODES)=PARENT
+ 70   IF(SON.GE.0) GOTO 10
+      IF(TNODE.NE.-SON) GOTO 220
+      GOTO 80
+ 80   IF(TREE(4,PARENT).GE.0) GOTO 100
+      IF(SON.NE.TREE(3,PARENT)) GOTO 90
+      TREE(3,PARENT)=NEWNOD
+      GOTO 120
+ 90   TREE(2,PARENT)=NEWNOD
+      GOTO 120
+ 100  IF(SON.NE.TREE(2,PARENT)) GOTO 110
+      TREE(2,PARENT)=NEWNOD
+      GOTO 120
+ 110  TREE(3,PARENT)=NEWNOD
+ 120  SON=NEWNOD
+ 130  IF(TREE(2,PARENT).EQ.SON.AND.TREE(4,PARENT).LT.0.OR.TREE(3,PARENT
+     1).EQ.SON.AND.TREE(4,PARENT).GT.0) GOTO 140
+      SON=PARENT
+      PNODES=PNODES-1
+      IF(PNODES.LT.0) GOTO 180
+      IF(PNODES.LE.0) GOTO 150
+      PARENT=SNODES(PNODES)
+      GOTO 130
+ 140  TREE(1,PARENT)=NEWLFT
+ 150  RETURN
+ 160  WRITE(6,170)
+ 170  FORMAT(' NODAUD STACK OVERFLOW')
+      STOP
+ 180  WRITE(6,190)
+ 190  FORMAT(' NODAUD STACK UNDERFLOW')
+      STOP
+ 200  WRITE(6,210)
+ 210  FORMAT(' NODAUD IMPOSSIBLE')
+      STOP
+ 220  WRITE(6,230) TNODE,TREE(SON,PARENT)
+ 230  FORMAT(' LOOKING FOR BUCKET ',I10,'  BUT FOUND ',I10)
+      STOP
+      END