147 SUBROUTINE sggbak( JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V,
157 INTEGER ihi, ilo, info, ldv, m, n
160 REAL 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(
'SGGBAK', -info )
219 IF(
lsame( job,
'N' ) )
227 IF(
lsame( job,
'S' ) .OR.
lsame( job,
'B' ) )
THEN
233 CALL
sscal( m, rscale( i ), v( i, 1 ), ldv )
241 CALL
sscal( 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
sswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
271 CALL
sswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
281 DO 80 i = ilo - 1, 1, -1
285 CALL
sswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
291 DO 100 i = ihi + 1, n
295 CALL
sswap( m, v( i, 1 ), ldv, v( k, 1 ), ldv )
LOGICAL function lsame(CA, CB)
LSAME
subroutine sswap(N, SX, INCX, SY, INCY)
SSWAP
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine sggbak(JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V, LDV, INFO)
SGGBAK
subroutine sscal(N, SA, SX, INCX)
SSCAL