146 SUBROUTINE cggbak( JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V,
155 INTEGER IHI, ILO, INFO, LDV, M, N
158 REAL LSCALE( * ), RSCALE( * )
165 LOGICAL LEFTV, RIGHTV
182 rightv = lsame( side,
'R' )
183 leftv = lsame( side,
'L' )
186 IF( .NOT.lsame( job,
'N' ) .AND. .NOT.lsame( job,
'P' ) .AND.
187 $ .NOT.lsame( job,
'S' ) .AND. .NOT.lsame( job,
'B' ) )
THEN 189 ELSE IF( .NOT.rightv .AND. .NOT.leftv )
THEN 191 ELSE IF( n.LT.0 )
THEN 193 ELSE IF( ilo.LT.1 )
THEN 195 ELSE IF( n.EQ.0 .AND. ihi.EQ.0 .AND. ilo.NE.1 )
THEN 197 ELSE IF( n.GT.0 .AND. ( ihi.LT.ilo .OR. ihi.GT.max( 1, n ) ) )
200 ELSE IF( n.EQ.0 .AND. ilo.EQ.1 .AND. ihi.NE.0 )
THEN 202 ELSE IF( m.LT.0 )
THEN 204 ELSE IF( ldv.LT.max( 1, n ) )
THEN 208 CALL xerbla(
'CGGBAK', -info )
218 IF( lsame( job,
'N' ) )
226 IF( lsame( job,
'S' ) .OR. lsame( job,
'B' ) )
THEN 232 CALL csscal( m, rscale( i ), v( i, 1 ), ldv )
240 CALL csscal( m, lscale( i ), v( i, 1 ), ldv )
248 IF( lsame( job,
'P' ) .OR. lsame( job,
'B' ) )
THEN 255 DO 40 i = ilo - 1, 1, -1
256 k = int( rscale( i ) )
259 CALL cswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
266 k = int( rscale( i ) )
269 CALL cswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
279 DO 80 i = ilo - 1, 1, -1
280 k = int( lscale( i ) )
283 CALL cswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
289 DO 100 i = ihi + 1, n
290 k = int( lscale( i ) )
293 CALL cswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine csscal(N, SA, CX, INCX)
CSSCAL
subroutine cggbak(JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V, LDV, INFO)
CGGBAK
subroutine cswap(N, CX, INCX, CY, INCY)
CSWAP