 LAPACK 3.11.0 LAPACK: Linear Algebra PACKage
Searching...
No Matches

## ◆ dlakf2()

 subroutine dlakf2 ( integer M, integer N, double precision, dimension( lda, * ) A, integer LDA, double precision, dimension( lda, * ) B, double precision, dimension( lda, * ) D, double precision, dimension( lda, * ) E, double precision, dimension( ldz, * ) Z, integer LDZ )

DLAKF2

Purpose:
``` Form the 2*M*N by 2*M*N matrix

Z = [ kron(In, A)  -kron(B', Im) ]
[ kron(In, D)  -kron(E', Im) ],

where In is the identity matrix of size n and X' is the transpose
of X. kron(X, Y) is the Kronecker product between the matrices X
and Y.```
Parameters
 [in] M ``` M is INTEGER Size of matrix, must be >= 1.``` [in] N ``` N is INTEGER Size of matrix, must be >= 1.``` [in] A ``` A is DOUBLE PRECISION, dimension ( LDA, M ) The matrix A in the output matrix Z.``` [in] LDA ``` LDA is INTEGER The leading dimension of A, B, D, and E. ( LDA >= M+N )``` [in] B ` B is DOUBLE PRECISION, dimension ( LDA, N )` [in] D ` D is DOUBLE PRECISION, dimension ( LDA, M )` [in] E ``` E is DOUBLE PRECISION, dimension ( LDA, N ) The matrices used in forming the output matrix Z.``` [out] Z ``` Z is DOUBLE PRECISION, dimension ( LDZ, 2*M*N ) The resultant Kronecker M*N*2 by M*N*2 matrix (see above.)``` [in] LDZ ``` LDZ is INTEGER The leading dimension of Z. ( LDZ >= 2*M*N )```

Definition at line 104 of file dlakf2.f.

105*
106* -- LAPACK computational routine --
107* -- LAPACK is a software package provided by Univ. of Tennessee, --
108* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
109*
110* .. Scalar Arguments ..
111 INTEGER LDA, LDZ, M, N
112* ..
113* .. Array Arguments ..
114 DOUBLE PRECISION A( LDA, * ), B( LDA, * ), D( LDA, * ),
115 \$ E( LDA, * ), Z( LDZ, * )
116* ..
117*
118* ====================================================================
119*
120* .. Parameters ..
121 DOUBLE PRECISION ZERO
122 parameter( zero = 0.0d+0 )
123* ..
124* .. Local Scalars ..
125 INTEGER I, IK, J, JK, L, MN, MN2
126* ..
127* .. External Subroutines ..
128 EXTERNAL dlaset
129* ..
130* .. Executable Statements ..
131*
132* Initialize Z
133*
134 mn = m*n
135 mn2 = 2*mn
136 CALL dlaset( 'Full', mn2, mn2, zero, zero, z, ldz )
137*
138 ik = 1
139 DO 50 l = 1, n
140*
141* form kron(In, A)
142*
143 DO 20 i = 1, m
144 DO 10 j = 1, m
145 z( ik+i-1, ik+j-1 ) = a( i, j )
146 10 CONTINUE
147 20 CONTINUE
148*
149* form kron(In, D)
150*
151 DO 40 i = 1, m
152 DO 30 j = 1, m
153 z( ik+mn+i-1, ik+j-1 ) = d( i, j )
154 30 CONTINUE
155 40 CONTINUE
156*
157 ik = ik + m
158 50 CONTINUE
159*
160 ik = 1
161 DO 90 l = 1, n
162 jk = mn + 1
163*
164 DO 80 j = 1, n
165*
166* form -kron(B', Im)
167*
168 DO 60 i = 1, m
169 z( ik+i-1, jk+i-1 ) = -b( j, l )
170 60 CONTINUE
171*
172* form -kron(E', Im)
173*
174 DO 70 i = 1, m
175 z( ik+mn+i-1, jk+i-1 ) = -e( j, l )
176 70 CONTINUE
177*
178 jk = jk + m
179 80 CONTINUE
180*
181 ik = ik + m
182 90 CONTINUE
183*
184 RETURN
185*
186* End of DLAKF2
187*
subroutine dlaset(UPLO, M, N, ALPHA, BETA, A, LDA)
DLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
Definition: dlaset.f:110
Here is the call graph for this function:
Here is the caller graph for this function: