      SUBROUTINE BALBAK(NM,N,LOW,IGH,SCALE,M,Z)
C
      INTEGER I,J,K,M,N,II,NM,IGH,LOW
      REAL    SCALE(N),Z(NM,M)
      REAL    S
C
C     THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE BALBAK,
C     NUM. MATH. 13, 293-304(1969) BY PARLETT AND REINSCH.
C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 315-326(1971).
C
C     THIS SUBROUTINE FORMS THE EIGENVECTORS OF A REAL GENERAL
C     MATRIX BY BACK TRANSFORMING THOSE OF THE CORRESPONDING
C     BALANCED MATRIX DETERMINED BY  BALANC.
C
C     ON INPUT
C
C	 NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
C	   ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
C	   DIMENSION STATEMENT.
C
C	 N IS THE ORDER OF THE MATRIX.
C
C	 LOW AND IGH ARE INTEGERS DETERMINED BY  BALANC.
C
C	 SCALE CONTAINS INFORMATION DETERMINING THE PERMUTATIONS
C	   AND SCALING FACTORS USED BY	BALANC.
C
C	 M IS THE NUMBER OF COLUMNS OF Z TO BE BACK TRANSFORMED.
C
C	 Z CONTAINS THE REAL AND IMAGINARY PARTS OF THE EIGEN-
C	   VECTORS TO BE BACK TRANSFORMED IN ITS FIRST M COLUMNS.
C
C     ON OUTPUT
C
C	 Z CONTAINS THE REAL AND IMAGINARY PARTS OF THE
C	   TRANSFORMED EIGENVECTORS IN ITS FIRST M COLUMNS.
C
C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
C
C     THIS VERSION DATED AUGUST 1983.
C
C     ------------------------------------------------------------------
C
      IF (M .EQ. 0) GO TO 200
      IF (IGH .EQ. LOW) GO TO 120
C
      DO 110 I = LOW, IGH
	 S = SCALE(I)
C     .......... LEFT HAND EIGENVECTORS ARE BACK TRANSFORMED
C		 IF THE FOREGOING STATEMENT IS REPLACED BY
C		 S=1.0D0/SCALE(I). ..........
	 DO 100 J = 1, M
  100	 Z(I,J) = Z(I,J) * S
C
  110 CONTINUE
C     ......... FOR I=LOW-1 STEP -1 UNTIL 1,
C		IGH+1 STEP 1 UNTIL N DO -- ..........
  120 DO 140 II = 1, N
	 I = II
	 IF (I .GE. LOW .AND. I .LE. IGH) GO TO 140
	 IF (I .LT. LOW) I = LOW - II
	 K = SCALE(I)
	 IF (K .EQ. I) GO TO 140
C
	 DO 130 J = 1, M
	    S = Z(I,J)
	    Z(I,J) = Z(K,J)
	    Z(K,J) = S
  130	 CONTINUE
C
  140 CONTINUE
C
  200 RETURN
C  END OF BALBAK
      END

