147 SUBROUTINE dggbak( JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V,
157 INTEGER ihi, ilo, info, ldv, m, n
160 DOUBLE PRECISION lscale( * ), rscale( * ), v( ldv, * )
166 LOGICAL leftv, rightv
183 rightv =
lsame( side,
'R' )
184 leftv =
lsame( side,
'L' )
187 IF( .NOT.
lsame( job,
'N' ) .AND. .NOT.
lsame( job,
'P' ) .AND.
188 $ .NOT.
lsame( job,
'S' ) .AND. .NOT.
lsame( job,
'B' ) )
THEN
190 ELSE IF( .NOT.rightv .AND. .NOT.leftv )
THEN
192 ELSE IF( n.LT.0 )
THEN
194 ELSE IF( ilo.LT.1 )
THEN
196 ELSE IF( n.EQ.0 .AND. ihi.EQ.0 .AND. ilo.NE.1 )
THEN
198 ELSE IF( n.GT.0 .AND. ( ihi.LT.ilo .OR. ihi.GT.max( 1, n ) ) )
201 ELSE IF( n.EQ.0 .AND. ilo.EQ.1 .AND. ihi.NE.0 )
THEN
203 ELSE IF( m.LT.0 )
THEN
205 ELSE IF( ldv.LT.max( 1, n ) )
THEN
209 CALL
xerbla(
'DGGBAK', -info )
219 IF(
lsame( job,
'N' ) )
227 IF(
lsame( job,
'S' ) .OR.
lsame( job,
'B' ) )
THEN
233 CALL
dscal( m, rscale( i ), v( i, 1 ), ldv )
241 CALL
dscal( m, lscale( i ), v( i, 1 ), ldv )
249 IF(
lsame( job,
'P' ) .OR.
lsame( job,
'B' ) )
THEN
257 DO 40 i = ilo - 1, 1, -1
261 CALL
dswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
271 CALL
dswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
281 DO 80 i = ilo - 1, 1, -1
285 CALL
dswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
291 DO 100 i = ihi + 1, n
295 CALL
dswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
subroutine xerbla(SRNAME, INFO)
XERBLA
logical function lsame(CA, CB)
LSAME
subroutine dscal(N, DA, DX, INCX)
DSCAL
subroutine dggbak(JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V, LDV, INFO)
DGGBAK
subroutine dswap(N, DX, INCX, DY, INCY)
DSWAP