Fix parameter queries for TZRZF/UNMRZ in ?GELSY (Reference-LAPACK PR 1289&1325)
This commit is contained in:
+25
-18
@@ -5,7 +5,6 @@
|
||||
* Online html documentation available at
|
||||
* http://www.netlib.org/lapack/explore-html/
|
||||
*
|
||||
*> \htmlonly
|
||||
*> Download CGELSY + dependencies
|
||||
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/cgelsy.f">
|
||||
*> [TGZ]</a>
|
||||
@@ -13,7 +12,6 @@
|
||||
*> [ZIP]</a>
|
||||
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/cgelsy.f">
|
||||
*> [TXT]</a>
|
||||
*> \endhtmlonly
|
||||
*
|
||||
* Definition:
|
||||
* ===========
|
||||
@@ -197,7 +195,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup complexGEsolve
|
||||
*> \ingroup gelsy
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
@@ -207,8 +205,10 @@
|
||||
*> G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain \n
|
||||
*>
|
||||
* =====================================================================
|
||||
SUBROUTINE CGELSY( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK,
|
||||
SUBROUTINE CGELSY( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND,
|
||||
$ RANK,
|
||||
$ WORK, LWORK, RWORK, INFO )
|
||||
IMPLICIT NONE
|
||||
*
|
||||
* -- LAPACK driver routine --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
@@ -244,8 +244,9 @@
|
||||
COMPLEX C1, C2, S1, S2
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL CCOPY, CGEQP3, CLAIC1, CLASCL, CLASET, CTRSM,
|
||||
$ CTZRZF, CUNMQR, CUNMRZ, SLABAD, XERBLA
|
||||
EXTERNAL CCOPY, CGEQP3, CLAIC1, CLASCL, CLASET,
|
||||
$ CTRSM,
|
||||
$ CTZRZF, CUNMQR, CUNMRZ, XERBLA
|
||||
* ..
|
||||
* .. External Functions ..
|
||||
INTEGER ILAENV
|
||||
@@ -265,9 +266,9 @@
|
||||
*
|
||||
INFO = 0
|
||||
NB1 = ILAENV( 1, 'CGEQRF', ' ', M, N, -1, -1 )
|
||||
NB2 = ILAENV( 1, 'CGERQF', ' ', M, N, -1, -1 )
|
||||
NB2 = ILAENV( 1, 'CTZRZF', ' ', M, N, -1, -1 )
|
||||
NB3 = ILAENV( 1, 'CUNMQR', ' ', M, N, NRHS, -1 )
|
||||
NB4 = ILAENV( 1, 'CUNMRQ', ' ', M, N, NRHS, -1 )
|
||||
NB4 = ILAENV( 1, 'CUNMRZ', ' ', M, N, NRHS, -1 )
|
||||
NB = MAX( NB1, NB2, NB3, NB4 )
|
||||
LWKOPT = MAX( 1, MN+2*N+NB*(N+1), 2*MN+NB*NRHS )
|
||||
WORK( 1 ) = CMPLX( LWKOPT )
|
||||
@@ -305,7 +306,6 @@
|
||||
*
|
||||
SMLNUM = SLAMCH( 'S' ) / SLAMCH( 'P' )
|
||||
BIGNUM = ONE / SMLNUM
|
||||
CALL SLABAD( SMLNUM, BIGNUM )
|
||||
*
|
||||
* Scale A, B if max entries outside range [SMLNUM,BIGNUM]
|
||||
*
|
||||
@@ -338,13 +338,15 @@
|
||||
*
|
||||
* Scale matrix norm up to SMLNUM
|
||||
*
|
||||
CALL CLASCL( 'G', 0, 0, BNRM, SMLNUM, M, NRHS, B, LDB, INFO )
|
||||
CALL CLASCL( 'G', 0, 0, BNRM, SMLNUM, M, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
IBSCL = 1
|
||||
ELSE IF( BNRM.GT.BIGNUM ) THEN
|
||||
*
|
||||
* Scale matrix norm down to BIGNUM
|
||||
*
|
||||
CALL CLASCL( 'G', 0, 0, BNRM, BIGNUM, M, NRHS, B, LDB, INFO )
|
||||
CALL CLASCL( 'G', 0, 0, BNRM, BIGNUM, M, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
IBSCL = 2
|
||||
END IF
|
||||
*
|
||||
@@ -353,7 +355,7 @@
|
||||
*
|
||||
CALL CGEQP3( M, N, A, LDA, JPVT, WORK( 1 ), WORK( MN+1 ),
|
||||
$ LWORK-MN, RWORK, INFO )
|
||||
WSIZE = MN + REAL( WORK( MN+1 ) )
|
||||
WSIZE = REAL( MN ) + REAL( WORK( MN+1 ) )
|
||||
*
|
||||
* complex workspace: MN+NB*(N+1). real workspace 2*N.
|
||||
* Details of Householder rotations stored in WORK(1:MN).
|
||||
@@ -411,9 +413,10 @@
|
||||
*
|
||||
* B(1:M,1:NRHS) := Q**H * B(1:M,1:NRHS)
|
||||
*
|
||||
CALL CUNMQR( 'Left', 'Conjugate transpose', M, NRHS, MN, A, LDA,
|
||||
CALL CUNMQR( 'Left', 'Conjugate transpose', M, NRHS, MN, A,
|
||||
$ LDA,
|
||||
$ WORK( 1 ), B, LDB, WORK( 2*MN+1 ), LWORK-2*MN, INFO )
|
||||
WSIZE = MAX( WSIZE, 2*MN+REAL( WORK( 2*MN+1 ) ) )
|
||||
WSIZE = MAX( WSIZE, REAL( 2*MN )+REAL( WORK( 2*MN+1 ) ) )
|
||||
*
|
||||
* complex workspace: 2*MN+NB*NRHS.
|
||||
*
|
||||
@@ -452,18 +455,22 @@
|
||||
* Undo scaling
|
||||
*
|
||||
IF( IASCL.EQ.1 ) THEN
|
||||
CALL CLASCL( 'G', 0, 0, ANRM, SMLNUM, N, NRHS, B, LDB, INFO )
|
||||
CALL CLASCL( 'G', 0, 0, ANRM, SMLNUM, N, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
CALL CLASCL( 'U', 0, 0, SMLNUM, ANRM, RANK, RANK, A, LDA,
|
||||
$ INFO )
|
||||
ELSE IF( IASCL.EQ.2 ) THEN
|
||||
CALL CLASCL( 'G', 0, 0, ANRM, BIGNUM, N, NRHS, B, LDB, INFO )
|
||||
CALL CLASCL( 'G', 0, 0, ANRM, BIGNUM, N, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
CALL CLASCL( 'U', 0, 0, BIGNUM, ANRM, RANK, RANK, A, LDA,
|
||||
$ INFO )
|
||||
END IF
|
||||
IF( IBSCL.EQ.1 ) THEN
|
||||
CALL CLASCL( 'G', 0, 0, SMLNUM, BNRM, N, NRHS, B, LDB, INFO )
|
||||
CALL CLASCL( 'G', 0, 0, SMLNUM, BNRM, N, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
ELSE IF( IBSCL.EQ.2 ) THEN
|
||||
CALL CLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB, INFO )
|
||||
CALL CLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
END IF
|
||||
*
|
||||
70 CONTINUE
|
||||
|
||||
+22
-15
@@ -5,7 +5,6 @@
|
||||
* Online html documentation available at
|
||||
* http://www.netlib.org/lapack/explore-html/
|
||||
*
|
||||
*> \htmlonly
|
||||
*> Download DGELSY + dependencies
|
||||
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dgelsy.f">
|
||||
*> [TGZ]</a>
|
||||
@@ -13,7 +12,6 @@
|
||||
*> [ZIP]</a>
|
||||
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dgelsy.f">
|
||||
*> [TXT]</a>
|
||||
*> \endhtmlonly
|
||||
*
|
||||
* Definition:
|
||||
* ===========
|
||||
@@ -191,7 +189,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup doubleGEsolve
|
||||
*> \ingroup gelsy
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
@@ -201,8 +199,10 @@
|
||||
*> G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain \n
|
||||
*>
|
||||
* =====================================================================
|
||||
SUBROUTINE DGELSY( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK,
|
||||
SUBROUTINE DGELSY( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND,
|
||||
$ RANK,
|
||||
$ WORK, LWORK, INFO )
|
||||
IMPLICIT NONE
|
||||
*
|
||||
* -- LAPACK driver routine --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
@@ -238,7 +238,8 @@
|
||||
EXTERNAL ILAENV, DLAMCH, DLANGE
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL DCOPY, DGEQP3, DLABAD, DLAIC1, DLASCL, DLASET,
|
||||
EXTERNAL DCOPY, DGEQP3, DLAIC1, DLASCL,
|
||||
$ DLASET,
|
||||
$ DORMQR, DORMRZ, DTRSM, DTZRZF, XERBLA
|
||||
* ..
|
||||
* .. Intrinsic Functions ..
|
||||
@@ -274,9 +275,9 @@
|
||||
LWKOPT = 1
|
||||
ELSE
|
||||
NB1 = ILAENV( 1, 'DGEQRF', ' ', M, N, -1, -1 )
|
||||
NB2 = ILAENV( 1, 'DGERQF', ' ', M, N, -1, -1 )
|
||||
NB2 = ILAENV( 1, 'DTZRZF', ' ', M, N, -1, -1 )
|
||||
NB3 = ILAENV( 1, 'DORMQR', ' ', M, N, NRHS, -1 )
|
||||
NB4 = ILAENV( 1, 'DORMRQ', ' ', M, N, NRHS, -1 )
|
||||
NB4 = ILAENV( 1, 'DORMRZ', ' ', M, N, NRHS, -1 )
|
||||
NB = MAX( NB1, NB2, NB3, NB4 )
|
||||
LWKMIN = MN + MAX( 2*MN, N + 1, MN + NRHS )
|
||||
LWKOPT = MAX( LWKMIN,
|
||||
@@ -307,7 +308,6 @@
|
||||
*
|
||||
SMLNUM = DLAMCH( 'S' ) / DLAMCH( 'P' )
|
||||
BIGNUM = ONE / SMLNUM
|
||||
CALL DLABAD( SMLNUM, BIGNUM )
|
||||
*
|
||||
* Scale A, B if max entries outside range [SMLNUM,BIGNUM]
|
||||
*
|
||||
@@ -340,13 +340,15 @@
|
||||
*
|
||||
* Scale matrix norm up to SMLNUM
|
||||
*
|
||||
CALL DLASCL( 'G', 0, 0, BNRM, SMLNUM, M, NRHS, B, LDB, INFO )
|
||||
CALL DLASCL( 'G', 0, 0, BNRM, SMLNUM, M, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
IBSCL = 1
|
||||
ELSE IF( BNRM.GT.BIGNUM ) THEN
|
||||
*
|
||||
* Scale matrix norm down to BIGNUM
|
||||
*
|
||||
CALL DLASCL( 'G', 0, 0, BNRM, BIGNUM, M, NRHS, B, LDB, INFO )
|
||||
CALL DLASCL( 'G', 0, 0, BNRM, BIGNUM, M, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
IBSCL = 2
|
||||
END IF
|
||||
*
|
||||
@@ -413,7 +415,8 @@
|
||||
*
|
||||
* B(1:M,1:NRHS) := Q**T * B(1:M,1:NRHS)
|
||||
*
|
||||
CALL DORMQR( 'Left', 'Transpose', M, NRHS, MN, A, LDA, WORK( 1 ),
|
||||
CALL DORMQR( 'Left', 'Transpose', M, NRHS, MN, A, LDA,
|
||||
$ WORK( 1 ),
|
||||
$ B, LDB, WORK( 2*MN+1 ), LWORK-2*MN, INFO )
|
||||
WSIZE = MAX( WSIZE, 2*MN+WORK( 2*MN+1 ) )
|
||||
*
|
||||
@@ -454,18 +457,22 @@
|
||||
* Undo scaling
|
||||
*
|
||||
IF( IASCL.EQ.1 ) THEN
|
||||
CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, N, NRHS, B, LDB, INFO )
|
||||
CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, N, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
CALL DLASCL( 'U', 0, 0, SMLNUM, ANRM, RANK, RANK, A, LDA,
|
||||
$ INFO )
|
||||
ELSE IF( IASCL.EQ.2 ) THEN
|
||||
CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, N, NRHS, B, LDB, INFO )
|
||||
CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, N, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
CALL DLASCL( 'U', 0, 0, BIGNUM, ANRM, RANK, RANK, A, LDA,
|
||||
$ INFO )
|
||||
END IF
|
||||
IF( IBSCL.EQ.1 ) THEN
|
||||
CALL DLASCL( 'G', 0, 0, SMLNUM, BNRM, N, NRHS, B, LDB, INFO )
|
||||
CALL DLASCL( 'G', 0, 0, SMLNUM, BNRM, N, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
ELSE IF( IBSCL.EQ.2 ) THEN
|
||||
CALL DLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB, INFO )
|
||||
CALL DLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
END IF
|
||||
*
|
||||
70 CONTINUE
|
||||
|
||||
@@ -276,6 +276,16 @@
|
||||
ELSE
|
||||
NB = 32
|
||||
END IF
|
||||
ELSE IF( SUBNAM(2:6).EQ.'TZRZF' ) THEN
|
||||
IF( SNAME ) THEN
|
||||
NB = 64
|
||||
ELSE
|
||||
NB = 32
|
||||
END IF
|
||||
ELSE IF( SUBNAM(2:6).EQ.'ORMRZ' ) THEN
|
||||
NB = 64
|
||||
ELSE IF( SUBNAM(2:6).EQ.'UNMRZ' ) THEN
|
||||
NB = 32
|
||||
ELSE IF( C2.EQ.'GE' ) THEN
|
||||
IF( C3.EQ.'TRF' ) THEN
|
||||
IF( SNAME ) THEN
|
||||
|
||||
+25
-16
@@ -5,7 +5,6 @@
|
||||
* Online html documentation available at
|
||||
* http://www.netlib.org/lapack/explore-html/
|
||||
*
|
||||
*> \htmlonly
|
||||
*> Download SGELSY + dependencies
|
||||
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/sgelsy.f">
|
||||
*> [TGZ]</a>
|
||||
@@ -13,7 +12,6 @@
|
||||
*> [ZIP]</a>
|
||||
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/sgelsy.f">
|
||||
*> [TXT]</a>
|
||||
*> \endhtmlonly
|
||||
*
|
||||
* Definition:
|
||||
* ===========
|
||||
@@ -201,8 +199,10 @@
|
||||
*> G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain \n
|
||||
*>
|
||||
* =====================================================================
|
||||
SUBROUTINE SGELSY( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK,
|
||||
SUBROUTINE SGELSY( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND,
|
||||
$ RANK,
|
||||
$ WORK, LWORK, INFO )
|
||||
IMPLICIT NONE
|
||||
*
|
||||
* -- LAPACK driver routine --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
@@ -235,10 +235,12 @@
|
||||
* .. External Functions ..
|
||||
INTEGER ILAENV
|
||||
REAL SLAMCH, SLANGE, SROUNDUP_LWORK
|
||||
EXTERNAL ILAENV, SLAMCH, SLANGE, SROUNDUP_LWORK
|
||||
EXTERNAL ILAENV, SLAMCH, SLANGE,
|
||||
$ SROUNDUP_LWORK
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL SCOPY, SGEQP3, SLAIC1, SLASCL, SLASET,
|
||||
EXTERNAL SCOPY, SGEQP3, SLAIC1, SLASCL,
|
||||
$ SLASET,
|
||||
$ SORMQR, SORMRZ, STRSM, STZRZF, XERBLA
|
||||
* ..
|
||||
* .. Intrinsic Functions ..
|
||||
@@ -274,9 +276,9 @@
|
||||
LWKOPT = 1
|
||||
ELSE
|
||||
NB1 = ILAENV( 1, 'SGEQRF', ' ', M, N, -1, -1 )
|
||||
NB2 = ILAENV( 1, 'SGERQF', ' ', M, N, -1, -1 )
|
||||
NB2 = ILAENV( 1, 'STZRZF', ' ', M, N, -1, -1 )
|
||||
NB3 = ILAENV( 1, 'SORMQR', ' ', M, N, NRHS, -1 )
|
||||
NB4 = ILAENV( 1, 'SORMRQ', ' ', M, N, NRHS, -1 )
|
||||
NB4 = ILAENV( 1, 'SORMRZ', ' ', M, N, NRHS, -1 )
|
||||
NB = MAX( NB1, NB2, NB3, NB4 )
|
||||
LWKMIN = MN + MAX( 2*MN, N + 1, MN + NRHS )
|
||||
LWKOPT = MAX( LWKMIN,
|
||||
@@ -339,13 +341,15 @@
|
||||
*
|
||||
* Scale matrix norm up to SMLNUM
|
||||
*
|
||||
CALL SLASCL( 'G', 0, 0, BNRM, SMLNUM, M, NRHS, B, LDB, INFO )
|
||||
CALL SLASCL( 'G', 0, 0, BNRM, SMLNUM, M, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
IBSCL = 1
|
||||
ELSE IF( BNRM.GT.BIGNUM ) THEN
|
||||
*
|
||||
* Scale matrix norm down to BIGNUM
|
||||
*
|
||||
CALL SLASCL( 'G', 0, 0, BNRM, BIGNUM, M, NRHS, B, LDB, INFO )
|
||||
CALL SLASCL( 'G', 0, 0, BNRM, BIGNUM, M, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
IBSCL = 2
|
||||
END IF
|
||||
*
|
||||
@@ -354,7 +358,7 @@
|
||||
*
|
||||
CALL SGEQP3( M, N, A, LDA, JPVT, WORK( 1 ), WORK( MN+1 ),
|
||||
$ LWORK-MN, INFO )
|
||||
WSIZE = MN + WORK( MN+1 )
|
||||
WSIZE = REAL( MN ) + WORK( MN+1 )
|
||||
*
|
||||
* workspace: MN+2*N+NB*(N+1).
|
||||
* Details of Householder rotations stored in WORK(1:MN).
|
||||
@@ -412,9 +416,10 @@
|
||||
*
|
||||
* B(1:M,1:NRHS) := Q**T * B(1:M,1:NRHS)
|
||||
*
|
||||
CALL SORMQR( 'Left', 'Transpose', M, NRHS, MN, A, LDA, WORK( 1 ),
|
||||
CALL SORMQR( 'Left', 'Transpose', M, NRHS, MN, A, LDA,
|
||||
$ WORK( 1 ),
|
||||
$ B, LDB, WORK( 2*MN+1 ), LWORK-2*MN, INFO )
|
||||
WSIZE = MAX( WSIZE, 2*MN+WORK( 2*MN+1 ) )
|
||||
WSIZE = MAX( WSIZE, REAL( 2*MN )+WORK( 2*MN+1 ) )
|
||||
*
|
||||
* workspace: 2*MN+NB*NRHS.
|
||||
*
|
||||
@@ -453,18 +458,22 @@
|
||||
* Undo scaling
|
||||
*
|
||||
IF( IASCL.EQ.1 ) THEN
|
||||
CALL SLASCL( 'G', 0, 0, ANRM, SMLNUM, N, NRHS, B, LDB, INFO )
|
||||
CALL SLASCL( 'G', 0, 0, ANRM, SMLNUM, N, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
CALL SLASCL( 'U', 0, 0, SMLNUM, ANRM, RANK, RANK, A, LDA,
|
||||
$ INFO )
|
||||
ELSE IF( IASCL.EQ.2 ) THEN
|
||||
CALL SLASCL( 'G', 0, 0, ANRM, BIGNUM, N, NRHS, B, LDB, INFO )
|
||||
CALL SLASCL( 'G', 0, 0, ANRM, BIGNUM, N, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
CALL SLASCL( 'U', 0, 0, BIGNUM, ANRM, RANK, RANK, A, LDA,
|
||||
$ INFO )
|
||||
END IF
|
||||
IF( IBSCL.EQ.1 ) THEN
|
||||
CALL SLASCL( 'G', 0, 0, SMLNUM, BNRM, N, NRHS, B, LDB, INFO )
|
||||
CALL SLASCL( 'G', 0, 0, SMLNUM, BNRM, N, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
ELSE IF( IBSCL.EQ.2 ) THEN
|
||||
CALL SLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB, INFO )
|
||||
CALL SLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
END IF
|
||||
*
|
||||
70 CONTINUE
|
||||
|
||||
+22
-15
@@ -5,7 +5,6 @@
|
||||
* Online html documentation available at
|
||||
* http://www.netlib.org/lapack/explore-html/
|
||||
*
|
||||
*> \htmlonly
|
||||
*> Download ZGELSY + dependencies
|
||||
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zgelsy.f">
|
||||
*> [TGZ]</a>
|
||||
@@ -13,7 +12,6 @@
|
||||
*> [ZIP]</a>
|
||||
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zgelsy.f">
|
||||
*> [TXT]</a>
|
||||
*> \endhtmlonly
|
||||
*
|
||||
* Definition:
|
||||
* ===========
|
||||
@@ -197,7 +195,7 @@
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup complex16GEsolve
|
||||
*> \ingroup gelsy
|
||||
*
|
||||
*> \par Contributors:
|
||||
* ==================
|
||||
@@ -207,8 +205,10 @@
|
||||
*> G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain \n
|
||||
*>
|
||||
* =====================================================================
|
||||
SUBROUTINE ZGELSY( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK,
|
||||
SUBROUTINE ZGELSY( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND,
|
||||
$ RANK,
|
||||
$ WORK, LWORK, RWORK, INFO )
|
||||
IMPLICIT NONE
|
||||
*
|
||||
* -- LAPACK driver routine --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
@@ -244,7 +244,8 @@
|
||||
COMPLEX*16 C1, C2, S1, S2
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL DLABAD, XERBLA, ZCOPY, ZGEQP3, ZLAIC1, ZLASCL,
|
||||
EXTERNAL XERBLA, ZCOPY, ZGEQP3, ZLAIC1,
|
||||
$ ZLASCL,
|
||||
$ ZLASET, ZTRSM, ZTZRZF, ZUNMQR, ZUNMRZ
|
||||
* ..
|
||||
* .. External Functions ..
|
||||
@@ -265,9 +266,9 @@
|
||||
*
|
||||
INFO = 0
|
||||
NB1 = ILAENV( 1, 'ZGEQRF', ' ', M, N, -1, -1 )
|
||||
NB2 = ILAENV( 1, 'ZGERQF', ' ', M, N, -1, -1 )
|
||||
NB2 = ILAENV( 1, 'ZTZRZF', ' ', M, N, -1, -1 )
|
||||
NB3 = ILAENV( 1, 'ZUNMQR', ' ', M, N, NRHS, -1 )
|
||||
NB4 = ILAENV( 1, 'ZUNMRQ', ' ', M, N, NRHS, -1 )
|
||||
NB4 = ILAENV( 1, 'ZUNMRZ', ' ', M, N, NRHS, -1 )
|
||||
NB = MAX( NB1, NB2, NB3, NB4 )
|
||||
LWKOPT = MAX( 1, MN+2*N+NB*( N+1 ), 2*MN+NB*NRHS )
|
||||
WORK( 1 ) = DCMPLX( LWKOPT )
|
||||
@@ -305,7 +306,6 @@
|
||||
*
|
||||
SMLNUM = DLAMCH( 'S' ) / DLAMCH( 'P' )
|
||||
BIGNUM = ONE / SMLNUM
|
||||
CALL DLABAD( SMLNUM, BIGNUM )
|
||||
*
|
||||
* Scale A, B if max entries outside range [SMLNUM,BIGNUM]
|
||||
*
|
||||
@@ -338,13 +338,15 @@
|
||||
*
|
||||
* Scale matrix norm up to SMLNUM
|
||||
*
|
||||
CALL ZLASCL( 'G', 0, 0, BNRM, SMLNUM, M, NRHS, B, LDB, INFO )
|
||||
CALL ZLASCL( 'G', 0, 0, BNRM, SMLNUM, M, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
IBSCL = 1
|
||||
ELSE IF( BNRM.GT.BIGNUM ) THEN
|
||||
*
|
||||
* Scale matrix norm down to BIGNUM
|
||||
*
|
||||
CALL ZLASCL( 'G', 0, 0, BNRM, BIGNUM, M, NRHS, B, LDB, INFO )
|
||||
CALL ZLASCL( 'G', 0, 0, BNRM, BIGNUM, M, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
IBSCL = 2
|
||||
END IF
|
||||
*
|
||||
@@ -411,7 +413,8 @@
|
||||
*
|
||||
* B(1:M,1:NRHS) := Q**H * B(1:M,1:NRHS)
|
||||
*
|
||||
CALL ZUNMQR( 'Left', 'Conjugate transpose', M, NRHS, MN, A, LDA,
|
||||
CALL ZUNMQR( 'Left', 'Conjugate transpose', M, NRHS, MN, A,
|
||||
$ LDA,
|
||||
$ WORK( 1 ), B, LDB, WORK( 2*MN+1 ), LWORK-2*MN, INFO )
|
||||
WSIZE = MAX( WSIZE, 2*MN+DBLE( WORK( 2*MN+1 ) ) )
|
||||
*
|
||||
@@ -452,18 +455,22 @@
|
||||
* Undo scaling
|
||||
*
|
||||
IF( IASCL.EQ.1 ) THEN
|
||||
CALL ZLASCL( 'G', 0, 0, ANRM, SMLNUM, N, NRHS, B, LDB, INFO )
|
||||
CALL ZLASCL( 'G', 0, 0, ANRM, SMLNUM, N, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
CALL ZLASCL( 'U', 0, 0, SMLNUM, ANRM, RANK, RANK, A, LDA,
|
||||
$ INFO )
|
||||
ELSE IF( IASCL.EQ.2 ) THEN
|
||||
CALL ZLASCL( 'G', 0, 0, ANRM, BIGNUM, N, NRHS, B, LDB, INFO )
|
||||
CALL ZLASCL( 'G', 0, 0, ANRM, BIGNUM, N, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
CALL ZLASCL( 'U', 0, 0, BIGNUM, ANRM, RANK, RANK, A, LDA,
|
||||
$ INFO )
|
||||
END IF
|
||||
IF( IBSCL.EQ.1 ) THEN
|
||||
CALL ZLASCL( 'G', 0, 0, SMLNUM, BNRM, N, NRHS, B, LDB, INFO )
|
||||
CALL ZLASCL( 'G', 0, 0, SMLNUM, BNRM, N, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
ELSE IF( IBSCL.EQ.2 ) THEN
|
||||
CALL ZLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB, INFO )
|
||||
CALL ZLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB,
|
||||
$ INFO )
|
||||
END IF
|
||||
*
|
||||
70 CONTINUE
|
||||
|
||||
Reference in New Issue
Block a user