148 SUBROUTINE cggbak( JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V,
158 INTEGER ihi, ilo, info, ldv, m, n
161 REAL lscale( * ), rscale( * )
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(
'CGGBAK', -info )
221 IF(
lsame( job,
'N' ) )
229 IF(
lsame( job,
'S' ) .OR.
lsame( job,
'B' ) )
THEN
235 CALL
csscal( m, rscale( i ), v( i, 1 ), ldv )
243 CALL
csscal( 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
cswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
272 CALL
cswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
282 DO 80 i = ilo - 1, 1, -1
286 CALL
cswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
292 DO 100 i = ihi + 1, n
296 CALL
cswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )