|
- *> \brief \b CLATB5
- *
- * =========== DOCUMENTATION ===========
- *
- * Online html documentation available at
- * http://www.netlib.org/lapack/explore-html/
- *
- * Definition:
- * ===========
- *
- * SUBROUTINE CLATB5( PATH, IMAT, N, TYPE, KL, KU, ANORM, MODE,
- * CNDNUM, DIST )
- *
- * .. Scalar Arguments ..
- * REAL ANORM, CNDNUM
- * INTEGER IMAT, KL, KU, MODE, N
- * CHARACTER DIST, TYPE
- * CHARACTER*3 PATH
- * ..
- *
- *
- *> \par Purpose:
- * =============
- *>
- *> \verbatim
- *>
- *> CLATB5 sets parameters for the matrix generator based on the type
- *> of matrix to be generated.
- *> \endverbatim
- *
- * Arguments:
- * ==========
- *
- *> \param[in] PATH
- *> \verbatim
- *> PATH is CHARACTER*3
- *> The LAPACK path name.
- *> \endverbatim
- *>
- *> \param[in] IMAT
- *> \verbatim
- *> IMAT is INTEGER
- *> An integer key describing which matrix to generate for this
- *> path.
- *> \endverbatim
- *>
- *> \param[in] N
- *> \verbatim
- *> N is INTEGER
- *> The number of rows and columns in the matrix to be generated.
- *> \endverbatim
- *>
- *> \param[out] TYPE
- *> \verbatim
- *> TYPE is CHARACTER*1
- *> The type of the matrix to be generated:
- *> = 'S': symmetric matrix
- *> = 'P': symmetric positive (semi)definite matrix
- *> = 'N': nonsymmetric matrix
- *> \endverbatim
- *>
- *> \param[out] KL
- *> \verbatim
- *> KL is INTEGER
- *> The lower band width of the matrix to be generated.
- *> \endverbatim
- *>
- *> \param[out] KU
- *> \verbatim
- *> KU is INTEGER
- *> The upper band width of the matrix to be generated.
- *> \endverbatim
- *>
- *> \param[out] ANORM
- *> \verbatim
- *> ANORM is REAL
- *> The desired norm of the matrix to be generated. The diagonal
- *> matrix of singular values or eigenvalues is scaled by this
- *> value.
- *> \endverbatim
- *>
- *> \param[out] MODE
- *> \verbatim
- *> MODE is INTEGER
- *> A key indicating how to choose the vector of eigenvalues.
- *> \endverbatim
- *>
- *> \param[out] CNDNUM
- *> \verbatim
- *> CNDNUM is REAL
- *> The desired condition number.
- *> \endverbatim
- *>
- *> \param[out] DIST
- *> \verbatim
- *> DIST is CHARACTER*1
- *> The type of distribution to be used by the random number
- *> generator.
- *> \endverbatim
- *
- * Authors:
- * ========
- *
- *> \author Univ. of Tennessee
- *> \author Univ. of California Berkeley
- *> \author Univ. of Colorado Denver
- *> \author NAG Ltd.
- *
- *> \date December 2016
- *
- *> \ingroup complex_lin
- *
- * =====================================================================
- SUBROUTINE CLATB5( PATH, IMAT, N, TYPE, KL, KU, ANORM, MODE,
- $ CNDNUM, DIST )
- *
- * -- LAPACK test routine (version 3.7.0) --
- * -- LAPACK is a software package provided by Univ. of Tennessee, --
- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
- * December 2016
- *
- * .. Scalar Arguments ..
- REAL ANORM, CNDNUM
- INTEGER IMAT, KL, KU, MODE, N
- CHARACTER DIST, TYPE
- CHARACTER*3 PATH
- * ..
- *
- * =====================================================================
- *
- * .. Parameters ..
- REAL SHRINK, TENTH
- PARAMETER ( SHRINK = 0.25E0, TENTH = 0.1E+0 )
- REAL ONE
- PARAMETER ( ONE = 1.0E+0 )
- REAL TWO
- PARAMETER ( TWO = 2.0E+0 )
- * ..
- * .. Local Scalars ..
- REAL BADC1, BADC2, EPS, LARGE, SMALL
- LOGICAL FIRST
- CHARACTER*2 C2
- * ..
- * .. External Functions ..
- REAL SLAMCH
- EXTERNAL SLAMCH
- * ..
- * .. Intrinsic Functions ..
- INTRINSIC MAX, SQRT
- * ..
- * .. External Subroutines ..
- EXTERNAL SLABAD
- * ..
- * .. Save statement ..
- SAVE EPS, SMALL, LARGE, BADC1, BADC2, FIRST
- * ..
- * .. Data statements ..
- DATA FIRST / .TRUE. /
- * ..
- * .. Executable Statements ..
- *
- * Set some constants for use in the subroutine.
- *
- IF( FIRST ) THEN
- FIRST = .FALSE.
- EPS = SLAMCH( 'Precision' )
- BADC2 = TENTH / EPS
- BADC1 = SQRT( BADC2 )
- SMALL = SLAMCH( 'Safe minimum' )
- LARGE = ONE / SMALL
- *
- * If it looks like we're on a Cray, take the square root of
- * SMALL and LARGE to avoid overflow and underflow problems.
- *
- CALL SLABAD( SMALL, LARGE )
- SMALL = SHRINK*( SMALL / EPS )
- LARGE = ONE / SMALL
- END IF
- *
- C2 = PATH( 2: 3 )
- *
- * Set some parameters
- *
- DIST = 'S'
- MODE = 3
- *
- * Set TYPE, the type of matrix to be generated.
- *
- TYPE = C2( 1: 1 )
- *
- * Set the lower and upper bandwidths.
- *
- IF( IMAT.EQ.1 ) THEN
- KL = 0
- ELSE
- KL = MAX( N-1, 0 )
- END IF
- KU = KL
- *
- * Set the condition number and norm.etc
- *
- IF( IMAT.EQ.3 ) THEN
- CNDNUM = 1.0E4
- MODE = 2
- ELSE IF( IMAT.EQ.4 ) THEN
- CNDNUM = 1.0E4
- MODE = 1
- ELSE IF( IMAT.EQ.5 ) THEN
- CNDNUM = 1.0E4
- MODE = 3
- ELSE IF( IMAT.EQ.6 ) THEN
- CNDNUM = BADC1
- ELSE IF( IMAT.EQ.7 ) THEN
- CNDNUM = BADC2
- ELSE
- CNDNUM = TWO
- END IF
- *
- IF( IMAT.EQ.8 ) THEN
- ANORM = SMALL
- ELSE IF( IMAT.EQ.9 ) THEN
- ANORM = LARGE
- ELSE
- ANORM = ONE
- END IF
- *
- IF( N.LE.1 )
- $ CNDNUM = ONE
- *
- RETURN
- *
- * End of SLATB5
- *
- END
|