subroutine rebak(nm,n,b,dl,m,z)
c
integer i,j,k,m,n,i1,ii,nm
double precision b(nm,n),dl(n),z(nm,m)
double precision x
c
c this subroutine is a translation of the algol procedure rebaka,
c num. math. 11, 99-110(1968) by martin and wilkinson.
c handbook for auto. comp., vol.ii-linear algebra, 303-314(1971).
c
c this subroutine forms the eigenvectors of a generalized
c symmetric eigensystem by back transforming those of the
c derived symmetric matrix determined by reduc.
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 system.
c
c b contains information about the similarity transformation
c (cholesky decomposition) used in the reduction by reduc
c in its strict lower triangle.
c
c dl contains further information about the transformation.
c
c m is the number of eigenvectors to be back transformed.
c
c z contains the eigenvectors to be back transformed
c in its first m columns.
c
c on output
c
c z contains the transformed eigenvectors
c 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
c
do 100 j = 1, m
c .......... for i=n step -1 until 1 do -- ..........
do 100 ii = 1, n
i = n + 1 - ii
i1 = i + 1
x = z(i,j)
if (i .eq. n) go to 80
c
do 60 k = i1, n
60 x = x - b(k,i) * z(k,j)
c
80 z(i,j) = x / dl(i)
100 continue
c
200 return
end