148 REAL function
sqrt17( trans, iresid, m, n, nrhs, a,
149 $ lda, x, ldx, b, ldb, c, work, lwork )
157 INTEGER iresid, lda, ldb, ldx, lwork, m, n, nrhs
160 REAL a( lda, * ), b( ldb, * ), c( ldb, * ),
161 $ work( lwork ), x( ldx, * )
168 parameter( zero = 0.0e0, one = 1.0e0 )
171 INTEGER info, iscl, ncols, nrows
172 REAL bignum, err, norma, normb, normrs, smlnum
192 IF(
lsame( trans,
'N' ) )
THEN
195 ELSE IF(
lsame( trans,
'T' ) )
THEN
199 CALL xerbla(
'SQRT17', 1 )
203 IF( lwork.LT.ncols*nrhs )
THEN
204 CALL xerbla(
'SQRT17', 13 )
208 IF( m.LE.0 .OR. n.LE.0 .OR. nrhs.LE.0 )
THEN
212 norma =
slange(
'One-norm', m, n, a, lda, rwork )
213 smlnum =
slamch(
'Safe minimum' ) /
slamch(
'Precision' )
214 bignum = one / smlnum
219 CALL slacpy(
'All', nrows, nrhs, b, ldb, c, ldb )
220 CALL sgemm( trans,
'No transpose', nrows, nrhs, ncols, -one, a,
221 $ lda, x, ldx, one, c, ldb )
222 normrs =
slange(
'Max', nrows, nrhs, c, ldb, rwork )
223 IF( normrs.GT.smlnum )
THEN
225 CALL slascl(
'General', 0, 0, normrs, one, nrows, nrhs, c, ldb,
231 CALL sgemm(
'Transpose', trans, nrhs, ncols, nrows, one, c, ldb,
232 $ a, lda, zero, work, nrhs )
236 err =
slange(
'One-norm', nrhs, ncols, work, nrhs, rwork )
243 IF( iresid.EQ.1 )
THEN
244 normb =
slange(
'One-norm', nrows, nrhs, b, ldb, rwork )
252 sqrt17 = err / (
slamch(
'Epsilon' )*real( max( m, n, nrhs ) ) )
subroutine slascl(TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO)
SLASCL multiplies a general rectangular matrix by a real scalar defined as cto/cfrom.
subroutine slacpy(UPLO, M, N, A, LDA, B, LDB)
SLACPY copies all or part of one two-dimensional array to another.
subroutine xerbla(SRNAME, INFO)
XERBLA
logical function lsame(CA, CB)
LSAME
real function slange(NORM, M, N, A, LDA, WORK)
SLANGE returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value ...
subroutine sgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
SGEMM
real function sqrt17(TRANS, IRESID, M, N, NRHS, A, LDA, X, LDX, B, LDB, C, WORK, LWORK)
SQRT17
real function slamch(CMACH)
SLAMCH