LAPACK  3.10.1
LAPACK: Linear Algebra PACKage

◆ dlatb5()

subroutine dlatb5 ( character*3  PATH,
integer  IMAT,
integer  N,
character  TYPE,
integer  KL,
integer  KU,
double precision  ANORM,
integer  MODE,
double precision  CNDNUM,
character  DIST 
)

DLATB5

Purpose:
 DLATB5 sets parameters for the matrix generator based on the type
 of matrix to be generated.
Parameters
[in]PATH
          PATH is CHARACTER*3
          The LAPACK path name.
[in]IMAT
          IMAT is INTEGER
          An integer key describing which matrix to generate for this
          path.
[in]N
          N is INTEGER
          The number of rows and columns in the matrix to be generated.
[out]TYPE
          TYPE is CHARACTER*1
          The type of the matrix to be generated:
          = 'S':  symmetric matrix
          = 'P':  symmetric positive (semi)definite matrix
          = 'N':  nonsymmetric matrix
[out]KL
          KL is INTEGER
          The lower band width of the matrix to be generated.
[out]KU
          KU is INTEGER
          The upper band width of the matrix to be generated.
[out]ANORM
          ANORM is DOUBLE PRECISION
          The desired norm of the matrix to be generated.  The diagonal
          matrix of singular values or eigenvalues is scaled by this
          value.
[out]MODE
          MODE is INTEGER
          A key indicating how to choose the vector of eigenvalues.
[out]CNDNUM
          CNDNUM is DOUBLE PRECISION
          The desired condition number.
[out]DIST
          DIST is CHARACTER*1
          The type of distribution to be used by the random number
          generator.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.

Definition at line 112 of file dlatb5.f.

114 *
115 * -- LAPACK test routine --
116 * -- LAPACK is a software package provided by Univ. of Tennessee, --
117 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
118 *
119 * .. Scalar Arguments ..
120  DOUBLE PRECISION ANORM, CNDNUM
121  INTEGER IMAT, KL, KU, MODE, N
122  CHARACTER DIST, TYPE
123  CHARACTER*3 PATH
124 * ..
125 *
126 * =====================================================================
127 *
128 * .. Parameters ..
129  DOUBLE PRECISION SHRINK, TENTH
130  parameter( shrink = 0.25d0, tenth = 0.1d+0 )
131  DOUBLE PRECISION ONE
132  parameter( one = 1.0d+0 )
133  DOUBLE PRECISION TWO
134  parameter( two = 2.0d+0 )
135 * ..
136 * .. Local Scalars ..
137  DOUBLE PRECISION BADC1, BADC2, EPS, LARGE, SMALL
138  LOGICAL FIRST
139  CHARACTER*2 C2
140 * ..
141 * .. External Functions ..
142  DOUBLE PRECISION DLAMCH
143  EXTERNAL dlamch
144 * ..
145 * .. Intrinsic Functions ..
146  INTRINSIC max, sqrt
147 * ..
148 * .. External Subroutines ..
149  EXTERNAL dlabad
150 * ..
151 * .. Save statement ..
152  SAVE eps, small, large, badc1, badc2, first
153 * ..
154 * .. Data statements ..
155  DATA first / .true. /
156 * ..
157 * .. Executable Statements ..
158 *
159 * Set some constants for use in the subroutine.
160 *
161  IF( first ) THEN
162  first = .false.
163  eps = dlamch( 'Precision' )
164  badc2 = tenth / eps
165  badc1 = sqrt( badc2 )
166  small = dlamch( 'Safe minimum' )
167  large = one / small
168 *
169 * If it looks like we're on a Cray, take the square root of
170 * SMALL and LARGE to avoid overflow and underflow problems.
171 *
172  CALL dlabad( small, large )
173  small = shrink*( small / eps )
174  large = one / small
175  END IF
176 *
177  c2 = path( 2: 3 )
178 *
179 * Set some parameters
180 *
181  dist = 'S'
182  mode = 3
183 *
184 * Set TYPE, the type of matrix to be generated.
185 *
186  TYPE = c2( 1: 1 )
187 *
188 * Set the lower and upper bandwidths.
189 *
190  IF( imat.EQ.1 ) THEN
191  kl = 0
192  ELSE
193  kl = max( n-1, 0 )
194  END IF
195  ku = kl
196 *
197 * Set the condition number and norm.etc
198 *
199  IF( imat.EQ.3 ) THEN
200  cndnum = 1.0d12
201  mode = 2
202  ELSE IF( imat.EQ.4 ) THEN
203  cndnum = 1.0d12
204  mode = 1
205  ELSE IF( imat.EQ.5 ) THEN
206  cndnum = 1.0d12
207  mode = 3
208  ELSE IF( imat.EQ.6 ) THEN
209  cndnum = badc1
210  ELSE IF( imat.EQ.7 ) THEN
211  cndnum = badc2
212  ELSE
213  cndnum = two
214  END IF
215 *
216  IF( imat.EQ.8 ) THEN
217  anorm = small
218  ELSE IF( imat.EQ.9 ) THEN
219  anorm = large
220  ELSE
221  anorm = one
222  END IF
223 *
224  IF( n.LE.1 )
225  $ cndnum = one
226 *
227  RETURN
228 *
229 * End of DLATB5
230 *
double precision function dlamch(CMACH)
DLAMCH
Definition: dlamch.f:69
subroutine dlabad(SMALL, LARGE)
DLABAD
Definition: dlabad.f:74
Here is the call graph for this function:
Here is the caller graph for this function: