LAPACK  3.10.0
LAPACK: Linear Algebra PACKage

◆ slatb5()

subroutine slatb5 ( character*3  PATH,
integer  IMAT,
integer  N,
character  TYPE,
integer  KL,
integer  KU,
real  ANORM,
integer  MODE,
real  CNDNUM,
character  DIST 
)

SLATB5

Purpose:
 SLATB5 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 REAL
          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 REAL
          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 slatb5.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  REAL ANORM, CNDNUM
121  INTEGER IMAT, KL, KU, MODE, N
122  CHARACTER DIST, TYPE
123  CHARACTER*3 PATH
124 * ..
125 *
126 * =====================================================================
127 *
128 * .. Parameters ..
129  REAL SHRINK, TENTH
130  parameter( shrink = 0.25e0, tenth = 0.1e+0 )
131  REAL ONE
132  parameter( one = 1.0e+0 )
133  REAL TWO
134  parameter( two = 2.0e+0 )
135 * ..
136 * .. Local Scalars ..
137  REAL BADC1, BADC2, EPS, LARGE, SMALL
138  LOGICAL FIRST
139  CHARACTER*2 C2
140 * ..
141 * .. External Functions ..
142  REAL SLAMCH
143  EXTERNAL slamch
144 * ..
145 * .. Intrinsic Functions ..
146  INTRINSIC max, sqrt
147 * ..
148 * .. External Subroutines ..
149  EXTERNAL slabad
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 = slamch( 'Precision' )
164  badc2 = tenth / eps
165  badc1 = sqrt( badc2 )
166  small = slamch( '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 slabad( 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.0e4
201  mode = 2
202  ELSE IF( imat.EQ.4 ) THEN
203  cndnum = 1.0e4
204  mode = 1
205  ELSE IF( imat.EQ.5 ) THEN
206  cndnum = 1.0e4
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 SLATB5
230 *
subroutine slabad(SMALL, LARGE)
SLABAD
Definition: slabad.f:74
real function slamch(CMACH)
SLAMCH
Definition: slamch.f:68
Here is the call graph for this function:
Here is the caller graph for this function: