LAPACK  3.6.1 LAPACK: Linear Algebra PACKage
zlat2c.f
Go to the documentation of this file.
1 *> \brief \b ZLAT2C converts a double complex triangular matrix to a complex triangular matrix.
2 *
3 * =========== DOCUMENTATION ===========
4 *
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
7 *
8 *> \htmlonly
10 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zlat2c.f">
11 *> [TGZ]</a>
12 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zlat2c.f">
13 *> [ZIP]</a>
14 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zlat2c.f">
15 *> [TXT]</a>
16 *> \endhtmlonly
17 *
18 * Definition:
19 * ===========
20 *
21 * SUBROUTINE ZLAT2C( UPLO, N, A, LDA, SA, LDSA, INFO )
22 *
23 * .. Scalar Arguments ..
24 * CHARACTER UPLO
25 * INTEGER INFO, LDA, LDSA, N
26 * ..
27 * .. Array Arguments ..
28 * COMPLEX SA( LDSA, * )
29 * COMPLEX*16 A( LDA, * )
30 * ..
31 *
32 *
33 *> \par Purpose:
34 * =============
35 *>
36 *> \verbatim
37 *>
38 *> ZLAT2C converts a COMPLEX*16 triangular matrix, SA, to a COMPLEX
39 *> triangular matrix, A.
40 *>
41 *> RMAX is the overflow for the SINGLE PRECISION arithmetic
42 *> ZLAT2C checks that all the entries of A are between -RMAX and
43 *> RMAX. If not the convertion is aborted and a flag is raised.
44 *>
45 *> This is an auxiliary routine so there is no argument checking.
46 *> \endverbatim
47 *
48 * Arguments:
49 * ==========
50 *
51 *> \param[in] UPLO
52 *> \verbatim
53 *> UPLO is CHARACTER*1
54 *> = 'U': A is upper triangular;
55 *> = 'L': A is lower triangular.
56 *> \endverbatim
57 *>
58 *> \param[in] N
59 *> \verbatim
60 *> N is INTEGER
61 *> The number of rows and columns of the matrix A. N >= 0.
62 *> \endverbatim
63 *>
64 *> \param[in] A
65 *> \verbatim
66 *> A is COMPLEX*16 array, dimension (LDA,N)
67 *> On entry, the N-by-N triangular coefficient matrix A.
68 *> \endverbatim
69 *>
70 *> \param[in] LDA
71 *> \verbatim
72 *> LDA is INTEGER
73 *> The leading dimension of the array A. LDA >= max(1,N).
74 *> \endverbatim
75 *>
76 *> \param[out] SA
77 *> \verbatim
78 *> SA is COMPLEX array, dimension (LDSA,N)
79 *> Only the UPLO part of SA is referenced. On exit, if INFO=0,
80 *> the N-by-N coefficient matrix SA; if INFO>0, the content of
81 *> the UPLO part of SA is unspecified.
82 *> \endverbatim
83 *>
84 *> \param[in] LDSA
85 *> \verbatim
86 *> LDSA is INTEGER
87 *> The leading dimension of the array SA. LDSA >= max(1,M).
88 *> \endverbatim
89 *>
90 *> \param[out] INFO
91 *> \verbatim
92 *> INFO is INTEGER
93 *> = 0: successful exit.
94 *> = 1: an entry of the matrix A is greater than the SINGLE
95 *> PRECISION overflow threshold, in this case, the content
96 *> of the UPLO part of SA in exit is unspecified.
97 *> \endverbatim
98 *
99 * Authors:
100 * ========
101 *
102 *> \author Univ. of Tennessee
103 *> \author Univ. of California Berkeley
104 *> \author Univ. of Colorado Denver
105 *> \author NAG Ltd.
106 *
107 *> \date September 2012
108 *
109 *> \ingroup complex16OTHERauxiliary
110 *
111 * =====================================================================
112  SUBROUTINE zlat2c( UPLO, N, A, LDA, SA, LDSA, INFO )
113 *
114 * -- LAPACK auxiliary routine (version 3.4.2) --
115 * -- LAPACK is a software package provided by Univ. of Tennessee, --
116 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
117 * September 2012
118 *
119 * .. Scalar Arguments ..
120  CHARACTER UPLO
121  INTEGER INFO, LDA, LDSA, N
122 * ..
123 * .. Array Arguments ..
124  COMPLEX SA( ldsa, * )
125  COMPLEX*16 A( lda, * )
126 * ..
127 *
128 * =====================================================================
129 *
130 * .. Local Scalars ..
131  INTEGER I, J
132  DOUBLE PRECISION RMAX
133  LOGICAL UPPER
134 * ..
135 * .. Intrinsic Functions ..
136  INTRINSIC dble, dimag
137 * ..
138 * .. External Functions ..
139  REAL SLAMCH
140  LOGICAL LSAME
141  EXTERNAL slamch, lsame
142 * ..
143 * .. Executable Statements ..
144 *
145  rmax = slamch( 'O' )
146  upper = lsame( uplo, 'U' )
147  IF( upper ) THEN
148  DO 20 j = 1, n
149  DO 10 i = 1, j
150  IF( ( dble( a( i, j ) ).LT.-rmax ) .OR.
151  \$ ( dble( a( i, j ) ).GT.rmax ) .OR.
152  \$ ( dimag( a( i, j ) ).LT.-rmax ) .OR.
153  \$ ( dimag( a( i, j ) ).GT.rmax ) ) THEN
154  info = 1
155  GO TO 50
156  END IF
157  sa( i, j ) = a( i, j )
158  10 CONTINUE
159  20 CONTINUE
160  ELSE
161  DO 40 j = 1, n
162  DO 30 i = j, n
163  IF( ( dble( a( i, j ) ).LT.-rmax ) .OR.
164  \$ ( dble( a( i, j ) ).GT.rmax ) .OR.
165  \$ ( dimag( a( i, j ) ).LT.-rmax ) .OR.
166  \$ ( dimag( a( i, j ) ).GT.rmax ) ) THEN
167  info = 1
168  GO TO 50
169  END IF
170  sa( i, j ) = a( i, j )
171  30 CONTINUE
172  40 CONTINUE
173  END IF
174  50 CONTINUE
175 *
176  RETURN
177 *
178 * End of ZLAT2C
179 *
180  END
subroutine zlat2c(UPLO, N, A, LDA, SA, LDSA, INFO)
ZLAT2C converts a double complex triangular matrix to a complex triangular matrix.
Definition: zlat2c.f:113