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