 LAPACK  3.8.0 LAPACK: Linear Algebra PACKage

## ◆ zlatsy()

 subroutine zlatsy ( character UPLO, integer N, complex*16, dimension( ldx, * ) X, integer LDX, integer, dimension( * ) ISEED )

ZLATSY

Purpose:
``` ZLATSY generates a special test matrix for the complex symmetric
(indefinite) factorization.  The pivot blocks of the generated matrix
will be in the following order:
2x2 pivot block, non diagonalizable
1x1 pivot block
2x2 pivot block, diagonalizable
(cycle repeats)
A row interchange is required for each non-diagonalizable 2x2 block.```
Parameters
 [in] UPLO ``` UPLO is CHARACTER Specifies whether the generated matrix is to be upper or lower triangular. = 'U': Upper triangular = 'L': Lower triangular``` [in] N ``` N is INTEGER The dimension of the matrix to be generated.``` [out] X ``` X is COMPLEX*16 array, dimension (LDX,N) The generated matrix, consisting of 3x3 and 2x2 diagonal blocks which result in the pivot sequence given above. The matrix outside of these diagonal blocks is zero.``` [in] LDX ``` LDX is INTEGER The leading dimension of the array X.``` [in,out] ISEED ``` ISEED is INTEGER array, dimension (4) On entry, the seed for the random number generator. The last of the four integers must be odd. (modified on exit)```
Date
December 2016

Definition at line 91 of file zlatsy.f.

91 *
92 * -- LAPACK test routine (version 3.7.0) --
93 * -- LAPACK is a software package provided by Univ. of Tennessee, --
94 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
95 * December 2016
96 *
97 * .. Scalar Arguments ..
98  CHARACTER uplo
99  INTEGER ldx, n
100 * ..
101 * .. Array Arguments ..
102  INTEGER iseed( * )
103  COMPLEX*16 x( ldx, * )
104 * ..
105 *
106 * =====================================================================
107 *
108 * .. Parameters ..
109  COMPLEX*16 eye
110  parameter( eye = ( 0.0d0, 1.0d0 ) )
111 * ..
112 * .. Local Scalars ..
113  INTEGER i, j, n5
114  DOUBLE PRECISION alpha, alpha3, beta
115  COMPLEX*16 a, b, c, r
116 * ..
117 * .. External Functions ..
118  COMPLEX*16 zlarnd
119  EXTERNAL zlarnd
120 * ..
121 * .. Intrinsic Functions ..
122  INTRINSIC abs, sqrt
123 * ..
124 * .. Executable Statements ..
125 *
126 * Initialize constants
127 *
128  alpha = ( 1.d0+sqrt( 17.d0 ) ) / 8.d0
129  beta = alpha - 1.d0 / 1000.d0
130  alpha3 = alpha*alpha*alpha
131 *
132 * UPLO = 'U': Upper triangular storage
133 *
134  IF( uplo.EQ.'U' ) THEN
135 *
136 * Fill the upper triangle of the matrix with zeros.
137 *
138  DO 20 j = 1, n
139  DO 10 i = 1, j
140  x( i, j ) = 0.0d0
141  10 CONTINUE
142  20 CONTINUE
143  n5 = n / 5
144  n5 = n - 5*n5 + 1
145 *
146  DO 30 i = n, n5, -5
147  a = alpha3*zlarnd( 5, iseed )
148  b = zlarnd( 5, iseed ) / alpha
149  c = a - 2.d0*b*eye
150  r = c / beta
151  x( i, i ) = a
152  x( i-2, i ) = b
153  x( i-2, i-1 ) = r
154  x( i-2, i-2 ) = c
155  x( i-1, i-1 ) = zlarnd( 2, iseed )
156  x( i-3, i-3 ) = zlarnd( 2, iseed )
157  x( i-4, i-4 ) = zlarnd( 2, iseed )
158  IF( abs( x( i-3, i-3 ) ).GT.abs( x( i-4, i-4 ) ) ) THEN
159  x( i-4, i-3 ) = 2.0d0*x( i-3, i-3 )
160  ELSE
161  x( i-4, i-3 ) = 2.0d0*x( i-4, i-4 )
162  END IF
163  30 CONTINUE
164 *
165 * Clean-up for N not a multiple of 5.
166 *
167  i = n5 - 1
168  IF( i.GT.2 ) THEN
169  a = alpha3*zlarnd( 5, iseed )
170  b = zlarnd( 5, iseed ) / alpha
171  c = a - 2.d0*b*eye
172  r = c / beta
173  x( i, i ) = a
174  x( i-2, i ) = b
175  x( i-2, i-1 ) = r
176  x( i-2, i-2 ) = c
177  x( i-1, i-1 ) = zlarnd( 2, iseed )
178  i = i - 3
179  END IF
180  IF( i.GT.1 ) THEN
181  x( i, i ) = zlarnd( 2, iseed )
182  x( i-1, i-1 ) = zlarnd( 2, iseed )
183  IF( abs( x( i, i ) ).GT.abs( x( i-1, i-1 ) ) ) THEN
184  x( i-1, i ) = 2.0d0*x( i, i )
185  ELSE
186  x( i-1, i ) = 2.0d0*x( i-1, i-1 )
187  END IF
188  i = i - 2
189  ELSE IF( i.EQ.1 ) THEN
190  x( i, i ) = zlarnd( 2, iseed )
191  i = i - 1
192  END IF
193 *
194 * UPLO = 'L': Lower triangular storage
195 *
196  ELSE
197 *
198 * Fill the lower triangle of the matrix with zeros.
199 *
200  DO 50 j = 1, n
201  DO 40 i = j, n
202  x( i, j ) = 0.0d0
203  40 CONTINUE
204  50 CONTINUE
205  n5 = n / 5
206  n5 = n5*5
207 *
208  DO 60 i = 1, n5, 5
209  a = alpha3*zlarnd( 5, iseed )
210  b = zlarnd( 5, iseed ) / alpha
211  c = a - 2.d0*b*eye
212  r = c / beta
213  x( i, i ) = a
214  x( i+2, i ) = b
215  x( i+2, i+1 ) = r
216  x( i+2, i+2 ) = c
217  x( i+1, i+1 ) = zlarnd( 2, iseed )
218  x( i+3, i+3 ) = zlarnd( 2, iseed )
219  x( i+4, i+4 ) = zlarnd( 2, iseed )
220  IF( abs( x( i+3, i+3 ) ).GT.abs( x( i+4, i+4 ) ) ) THEN
221  x( i+4, i+3 ) = 2.0d0*x( i+3, i+3 )
222  ELSE
223  x( i+4, i+3 ) = 2.0d0*x( i+4, i+4 )
224  END IF
225  60 CONTINUE
226 *
227 * Clean-up for N not a multiple of 5.
228 *
229  i = n5 + 1
230  IF( i.LT.n-1 ) THEN
231  a = alpha3*zlarnd( 5, iseed )
232  b = zlarnd( 5, iseed ) / alpha
233  c = a - 2.d0*b*eye
234  r = c / beta
235  x( i, i ) = a
236  x( i+2, i ) = b
237  x( i+2, i+1 ) = r
238  x( i+2, i+2 ) = c
239  x( i+1, i+1 ) = zlarnd( 2, iseed )
240  i = i + 3
241  END IF
242  IF( i.LT.n ) THEN
243  x( i, i ) = zlarnd( 2, iseed )
244  x( i+1, i+1 ) = zlarnd( 2, iseed )
245  IF( abs( x( i, i ) ).GT.abs( x( i+1, i+1 ) ) ) THEN
246  x( i+1, i ) = 2.0d0*x( i, i )
247  ELSE
248  x( i+1, i ) = 2.0d0*x( i+1, i+1 )
249  END IF
250  i = i + 2
251  ELSE IF( i.EQ.n ) THEN
252  x( i, i ) = zlarnd( 2, iseed )
253  i = i + 1
254  END IF
255  END IF
256 *
257  RETURN
258 *
259 * End of ZLATSY
260 *
complex *16 function zlarnd(IDIST, ISEED)
ZLARND
Definition: zlarnd.f:77
Here is the caller graph for this function: