118 REAL function
sqpt01( m, n, k, a, af, , tau, jpvt,
130 REAL a( lda, * ), af( lda, * ), tau( * ),
138 parameter( zero = 0.0e0, one = 1.0e0 )
163 IF( lwork.LT.m*n+n )
THEN
164 CALL xerbla(
'SQPT01', 10 )
170 IF( m.LE.0 .OR. n.LE.0 )
173 norma =
slange(
'One-norm', m, n, a, lda, rwork )
176 DO 10 i = 1,
min( j, m )
177 work( ( j-1 )*m+i ) = af( i, j )
180 work( ( j-1 )*m+i ) = zero
184 CALL scopy( m, af( 1, j ), 1, work( ( j-1 )*m+1 ), 1 )
187 CALL sormqr(
'Left',
'No transpose', m, n, k, af, lda, tau, work,
188 $ m, work( m*n+1 ), lwork-m*n, info )
194 CALL saxpy( m, -one, a( 1, jpvt( j ) ), 1, work( ( j-1 )*m+1 ),
199 $ ( REAL( MAX( M, N ) )*SLAMCH( 'epsilon
' ) )
201 $ SQPT01 = SQPT01 / NORMA
norm(diag(diag(diag(inv(mat))) -id.SOL), 2) % destroy mumps instance id.JOB
subroutine xerbla(srname, info)
XERBLA
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 sormqr(side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
SORMQR
subroutine scopy(n, sx, incx, sy, incy)
SCOPY
subroutine saxpy(n, sa, sx, incx, sy, incy)
SAXPY
real function sqpt01(m, n, k, a, af, lda, tau, jpvt, work, lwork)
SQPT01
real function slamch(cmach)
SLAMCH