LAPACK  3.10.1
LAPACK: Linear Algebra PACKage
sqrt13.f
Go to the documentation of this file.
1 *> \brief \b SQRT13
2 *
3 * =========== DOCUMENTATION ===========
4 *
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
7 *
8 * Definition:
9 * ===========
10 *
11 * SUBROUTINE SQRT13( SCALE, M, N, A, LDA, NORMA, ISEED )
12 *
13 * .. Scalar Arguments ..
14 * INTEGER LDA, M, N, SCALE
15 * REAL NORMA
16 * ..
17 * .. Array Arguments ..
18 * INTEGER ISEED( 4 )
19 * REAL A( LDA, * )
20 * ..
21 *
22 *
23 *> \par Purpose:
24 * =============
25 *>
26 *> \verbatim
27 *>
28 *> SQRT13 generates a full-rank matrix that may be scaled to have large
29 *> or small norm.
30 *> \endverbatim
31 *
32 * Arguments:
33 * ==========
34 *
35 *> \param[in] SCALE
36 *> \verbatim
37 *> SCALE is INTEGER
38 *> SCALE = 1: normally scaled matrix
39 *> SCALE = 2: matrix scaled up
40 *> SCALE = 3: matrix scaled down
41 *> \endverbatim
42 *>
43 *> \param[in] M
44 *> \verbatim
45 *> M is INTEGER
46 *> The number of rows of the matrix A.
47 *> \endverbatim
48 *>
49 *> \param[in] N
50 *> \verbatim
51 *> N is INTEGER
52 *> The number of columns of A.
53 *> \endverbatim
54 *>
55 *> \param[out] A
56 *> \verbatim
57 *> A is REAL array, dimension (LDA,N)
58 *> The M-by-N matrix A.
59 *> \endverbatim
60 *>
61 *> \param[in] LDA
62 *> \verbatim
63 *> LDA is INTEGER
64 *> The leading dimension of the array A.
65 *> \endverbatim
66 *>
67 *> \param[out] NORMA
68 *> \verbatim
69 *> NORMA is REAL
70 *> The one-norm of A.
71 *> \endverbatim
72 *>
73 *> \param[in,out] ISEED
74 *> \verbatim
75 *> ISEED is integer array, dimension (4)
76 *> Seed for random number generator
77 *> \endverbatim
78 *
79 * Authors:
80 * ========
81 *
82 *> \author Univ. of Tennessee
83 *> \author Univ. of California Berkeley
84 *> \author Univ. of Colorado Denver
85 *> \author NAG Ltd.
86 *
87 *> \ingroup single_lin
88 *
89 * =====================================================================
90  SUBROUTINE sqrt13( SCALE, M, N, A, LDA, NORMA, ISEED )
91 *
92 * -- LAPACK test routine --
93 * -- LAPACK is a software package provided by Univ. of Tennessee, --
94 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
95 *
96 * .. Scalar Arguments ..
97  INTEGER LDA, M, N, SCALE
98  REAL NORMA
99 * ..
100 * .. Array Arguments ..
101  INTEGER ISEED( 4 )
102  REAL A( LDA, * )
103 * ..
104 *
105 * =====================================================================
106 *
107 * .. Parameters ..
108  REAL ONE
109  parameter( one = 1.0e0 )
110 * ..
111 * .. Local Scalars ..
112  INTEGER INFO, J
113  REAL BIGNUM, SMLNUM
114 * ..
115 * .. External Functions ..
116  REAL SASUM, SLAMCH, SLANGE
117  EXTERNAL sasum, slamch, slange
118 * ..
119 * .. External Subroutines ..
120  EXTERNAL slabad, slarnv, slascl
121 * ..
122 * .. Intrinsic Functions ..
123  INTRINSIC sign
124 * ..
125 * .. Local Arrays ..
126  REAL DUMMY( 1 )
127 * ..
128 * .. Executable Statements ..
129 *
130  IF( m.LE.0 .OR. n.LE.0 )
131  $ RETURN
132 *
133 * benign matrix
134 *
135  DO 10 j = 1, n
136  CALL slarnv( 2, iseed, m, a( 1, j ) )
137  IF( j.LE.m ) THEN
138  a( j, j ) = a( j, j ) + sign( sasum( m, a( 1, j ), 1 ),
139  $ a( j, j ) )
140  END IF
141  10 CONTINUE
142 *
143 * scaled versions
144 *
145  IF( scale.NE.1 ) THEN
146  norma = slange( 'Max', m, n, a, lda, dummy )
147  smlnum = slamch( 'Safe minimum' )
148  bignum = one / smlnum
149  CALL slabad( smlnum, bignum )
150  smlnum = smlnum / slamch( 'Epsilon' )
151  bignum = one / smlnum
152 *
153  IF( scale.EQ.2 ) THEN
154 *
155 * matrix scaled up
156 *
157  CALL slascl( 'General', 0, 0, norma, bignum, m, n, a, lda,
158  $ info )
159  ELSE IF( scale.EQ.3 ) THEN
160 *
161 * matrix scaled down
162 *
163  CALL slascl( 'General', 0, 0, norma, smlnum, m, n, a, lda,
164  $ info )
165  END IF
166  END IF
167 *
168  norma = slange( 'One-norm', m, n, a, lda, dummy )
169  RETURN
170 *
171 * End of SQRT13
172 *
173  END
subroutine slabad(SMALL, LARGE)
SLABAD
Definition: slabad.f:74
subroutine slascl(TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO)
SLASCL multiplies a general rectangular matrix by a real scalar defined as cto/cfrom.
Definition: slascl.f:143
subroutine slarnv(IDIST, ISEED, N, X)
SLARNV returns a vector of random numbers from a uniform or normal distribution.
Definition: slarnv.f:97
subroutine sqrt13(SCALE, M, N, A, LDA, NORMA, ISEED)
SQRT13
Definition: sqrt13.f:91