Refs #247. Included lapack source codes. Avoid downloading tar.gz from netlib.org
Based on 3.4.2 version, apply patch.for_lapack-3.4.2.
This commit is contained in:
204
lapack-netlib/SRC/dlapmr.f
Normal file
204
lapack-netlib/SRC/dlapmr.f
Normal file
@@ -0,0 +1,204 @@
|
||||
*> \brief \b DLAPMR rearranges rows of a matrix as specified by a permutation vector.
|
||||
*
|
||||
* =========== DOCUMENTATION ===========
|
||||
*
|
||||
* Online html documentation available at
|
||||
* http://www.netlib.org/lapack/explore-html/
|
||||
*
|
||||
*> \htmlonly
|
||||
*> Download DLAPMR + dependencies
|
||||
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlapmr.f">
|
||||
*> [TGZ]</a>
|
||||
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlapmr.f">
|
||||
*> [ZIP]</a>
|
||||
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlapmr.f">
|
||||
*> [TXT]</a>
|
||||
*> \endhtmlonly
|
||||
*
|
||||
* Definition:
|
||||
* ===========
|
||||
*
|
||||
* SUBROUTINE DLAPMR( FORWRD, M, N, X, LDX, K )
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
* LOGICAL FORWRD
|
||||
* INTEGER LDX, M, N
|
||||
* ..
|
||||
* .. Array Arguments ..
|
||||
* INTEGER K( * )
|
||||
* DOUBLE PRECISION X( LDX, * )
|
||||
* ..
|
||||
*
|
||||
*
|
||||
*> \par Purpose:
|
||||
* =============
|
||||
*>
|
||||
*> \verbatim
|
||||
*>
|
||||
*> DLAPMR rearranges the rows of the M by N matrix X as specified
|
||||
*> by the permutation K(1),K(2),...,K(M) of the integers 1,...,M.
|
||||
*> If FORWRD = .TRUE., forward permutation:
|
||||
*>
|
||||
*> X(K(I),*) is moved X(I,*) for I = 1,2,...,M.
|
||||
*>
|
||||
*> If FORWRD = .FALSE., backward permutation:
|
||||
*>
|
||||
*> X(I,*) is moved to X(K(I),*) for I = 1,2,...,M.
|
||||
*> \endverbatim
|
||||
*
|
||||
* Arguments:
|
||||
* ==========
|
||||
*
|
||||
*> \param[in] FORWRD
|
||||
*> \verbatim
|
||||
*> FORWRD is LOGICAL
|
||||
*> = .TRUE., forward permutation
|
||||
*> = .FALSE., backward permutation
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] M
|
||||
*> \verbatim
|
||||
*> M is INTEGER
|
||||
*> The number of rows of the matrix X. M >= 0.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] N
|
||||
*> \verbatim
|
||||
*> N is INTEGER
|
||||
*> The number of columns of the matrix X. N >= 0.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] X
|
||||
*> \verbatim
|
||||
*> X is DOUBLE PRECISION array, dimension (LDX,N)
|
||||
*> On entry, the M by N matrix X.
|
||||
*> On exit, X contains the permuted matrix X.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] LDX
|
||||
*> \verbatim
|
||||
*> LDX is INTEGER
|
||||
*> The leading dimension of the array X, LDX >= MAX(1,M).
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] K
|
||||
*> \verbatim
|
||||
*> K is INTEGER array, dimension (M)
|
||||
*> On entry, K contains the permutation vector. K is used as
|
||||
*> internal workspace, but reset to its original value on
|
||||
*> output.
|
||||
*> \endverbatim
|
||||
*
|
||||
* Authors:
|
||||
* ========
|
||||
*
|
||||
*> \author Univ. of Tennessee
|
||||
*> \author Univ. of California Berkeley
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*
|
||||
*> \ingroup doubleOTHERauxiliary
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE DLAPMR( FORWRD, M, N, X, LDX, K )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.4.2) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
LOGICAL FORWRD
|
||||
INTEGER LDX, M, N
|
||||
* ..
|
||||
* .. Array Arguments ..
|
||||
INTEGER K( * )
|
||||
DOUBLE PRECISION X( LDX, * )
|
||||
* ..
|
||||
*
|
||||
* =====================================================================
|
||||
*
|
||||
* .. Local Scalars ..
|
||||
INTEGER I, IN, J, JJ
|
||||
DOUBLE PRECISION TEMP
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
IF( M.LE.1 )
|
||||
$ RETURN
|
||||
*
|
||||
DO 10 I = 1, M
|
||||
K( I ) = -K( I )
|
||||
10 CONTINUE
|
||||
*
|
||||
IF( FORWRD ) THEN
|
||||
*
|
||||
* Forward permutation
|
||||
*
|
||||
DO 50 I = 1, M
|
||||
*
|
||||
IF( K( I ).GT.0 )
|
||||
$ GO TO 40
|
||||
*
|
||||
J = I
|
||||
K( J ) = -K( J )
|
||||
IN = K( J )
|
||||
*
|
||||
20 CONTINUE
|
||||
IF( K( IN ).GT.0 )
|
||||
$ GO TO 40
|
||||
*
|
||||
DO 30 JJ = 1, N
|
||||
TEMP = X( J, JJ )
|
||||
X( J, JJ ) = X( IN, JJ )
|
||||
X( IN, JJ ) = TEMP
|
||||
30 CONTINUE
|
||||
*
|
||||
K( IN ) = -K( IN )
|
||||
J = IN
|
||||
IN = K( IN )
|
||||
GO TO 20
|
||||
*
|
||||
40 CONTINUE
|
||||
*
|
||||
50 CONTINUE
|
||||
*
|
||||
ELSE
|
||||
*
|
||||
* Backward permutation
|
||||
*
|
||||
DO 90 I = 1, M
|
||||
*
|
||||
IF( K( I ).GT.0 )
|
||||
$ GO TO 80
|
||||
*
|
||||
K( I ) = -K( I )
|
||||
J = K( I )
|
||||
60 CONTINUE
|
||||
IF( J.EQ.I )
|
||||
$ GO TO 80
|
||||
*
|
||||
DO 70 JJ = 1, N
|
||||
TEMP = X( I, JJ )
|
||||
X( I, JJ ) = X( J, JJ )
|
||||
X( J, JJ ) = TEMP
|
||||
70 CONTINUE
|
||||
*
|
||||
K( J ) = -K( J )
|
||||
J = K( J )
|
||||
GO TO 60
|
||||
*
|
||||
80 CONTINUE
|
||||
*
|
||||
90 CONTINUE
|
||||
*
|
||||
END IF
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
* End of ZLAPMT
|
||||
*
|
||||
END
|
||||
|
||||
Reference in New Issue
Block a user