148 SUBROUTINE zggbak( JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V,
158 INTEGER ihi, ilo, info, ldv, m, n
161 DOUBLE PRECISION lscale( * ), rscale( * )
162 COMPLEX*16 v( ldv, * )
168 LOGICAL leftv, rightv
185 rightv =
lsame( side,
'R' )
186 leftv =
lsame( side,
'L' )
189 IF( .NOT.
lsame( job,
'N' ) .AND. .NOT.
lsame( job,
'P' ) .AND.
190 $ .NOT.
lsame( job,
'S' ) .AND. .NOT.
lsame( job,
'B' ) )
THEN
192 ELSE IF( .NOT.rightv .AND. .NOT.leftv )
THEN
194 ELSE IF( n.LT.0 )
THEN
196 ELSE IF( ilo.LT.1 )
THEN
198 ELSE IF( n.EQ.0 .AND. ihi.EQ.0 .AND. ilo.NE.1 )
THEN
200 ELSE IF( n.GT.0 .AND. ( ihi.LT.ilo .OR. ihi.GT.max( 1, n ) ) )
203 ELSE IF( n.EQ.0 .AND. ilo.EQ.1 .AND. ihi.NE.0 )
THEN
205 ELSE IF( m.LT.0 )
THEN
207 ELSE IF( ldv.LT.max( 1, n ) )
THEN
211 CALL
xerbla(
'ZGGBAK', -info )
221 IF(
lsame( job,
'N' ) )
229 IF(
lsame( job,
'S' ) .OR.
lsame( job,
'B' ) )
THEN
235 CALL
zdscal( m, rscale( i ), v( i, 1 ), ldv )
243 CALL
zdscal( m, lscale( i ), v( i, 1 ), ldv )
251 IF(
lsame( job,
'P' ) .OR.
lsame( job,
'B' ) )
THEN
258 DO 40 i = ilo - 1, 1, -1
262 CALL
zswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
272 CALL
zswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
282 DO 80 i = ilo - 1, 1, -1
286 CALL
zswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
292 DO 100 i = ihi + 1, n
296 CALL
zswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
subroutine zswap(N, ZX, INCX, ZY, INCY)
ZSWAP
subroutine zdscal(N, DA, ZX, INCX)
ZDSCAL
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zggbak(JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V, LDV, INFO)
ZGGBAK
logical function lsame(CA, CB)
LSAME