3 * =========== DOCUMENTATION ===========
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
11 * SUBROUTINE DLAKF2( M, N, A, LDA, B, D, E, Z, LDZ )
13 * .. Scalar Arguments ..
14 * INTEGER LDA, LDZ, M, N
16 * .. Array Arguments ..
17 * DOUBLE PRECISION A( LDA, * ), B( LDA, * ), D( LDA, * ),
18 * $ E( LDA, * ), Z( LDZ, * )
27 *> Form the 2*M*N by 2*M*N matrix
29 *> Z = [ kron(In, A) -kron(B', Im) ]
30 *> [ kron(In, D) -kron(E', Im) ],
32 *> where In is the identity matrix of size n and X' is the transpose
33 *> of X. kron(X, Y) is the Kronecker product between the matrices X
43 *> Size of matrix, must be >= 1.
49 *> Size of matrix, must be >= 1.
54 *> A is DOUBLE PRECISION, dimension ( LDA, M )
55 *> The matrix A in the output matrix Z.
61 *> The leading dimension of A, B, D, and E. ( LDA >= M+N )
66 *> B is DOUBLE PRECISION, dimension ( LDA, N )
71 *> D is DOUBLE PRECISION, dimension ( LDA, M )
76 *> E is DOUBLE PRECISION, dimension ( LDA, N )
78 *> The matrices used in forming the output matrix Z.
83 *> Z is DOUBLE PRECISION, dimension ( LDZ, 2*M*N )
84 *> The resultant Kronecker M*N*2 by M*N*2 matrix (see above.)
90 *> The leading dimension of Z. ( LDZ >= 2*M*N )
96 *> \author Univ. of Tennessee
97 *> \author Univ. of California Berkeley
98 *> \author Univ. of Colorado Denver
101 *> \date November 2011
103 *> \ingroup double_matgen
105 * =====================================================================
106 SUBROUTINE DLAKF2( M, N, A, LDA, B, D, E, Z, LDZ )
108 * -- LAPACK computational routine (version 3.4.0) --
109 * -- LAPACK is a software package provided by Univ. of Tennessee, --
110 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
113 * .. Scalar Arguments ..
114 INTEGER LDA, LDZ, M, N
116 * .. Array Arguments ..
117 DOUBLE PRECISION A( LDA, * ), B( LDA, * ), D( LDA, * ),
118 $ E( LDA, * ), Z( LDZ, * )
121 * ====================================================================
124 DOUBLE PRECISION ZERO
125 PARAMETER ( ZERO = 0.0D+0 )
127 * .. Local Scalars ..
128 INTEGER I, IK, J, JK, L, MN, MN2
130 * .. External Subroutines ..
133 * .. Executable Statements ..
139 CALL DLASET( 'Full', MN2, MN2, ZERO, ZERO, Z, LDZ )
148 Z( IK+I-1, IK+J-1 ) = A( I, J )
156 Z( IK+MN+I-1, IK+J-1 ) = D( I, J )
172 Z( IK+I-1, JK+I-1 ) = -B( J, L )
178 Z( IK+MN+I-1, JK+I-1 ) = -E( J, L )