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 )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine cggbak(JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V, LDV, INFO)
CGGBAK
subroutine cswap(N, CX, INCX, CY, INCY)
CSWAP
subroutine csscal(N, SA, CX, INCX)
CSSCAL