1       SUBROUTINE ZLASCL2 ( M, N, D, X, LDX )
 2 *
 3 *     -- LAPACK routine (version 3.2.1)                               --
 4 *     -- Contributed by James Demmel, Deaglan Halligan, Yozo Hida and --
 5 *     -- Jason Riedy of Univ. of California Berkeley.                 --
 6 *     -- April 2009                                                   --
 7 *
 8 *     -- LAPACK is a software package provided by Univ. of Tennessee, --
 9 *     -- Univ. of California Berkeley and NAG Ltd.                    --
10 *
11       IMPLICIT NONE
12 *     ..
13 *     .. Scalar Arguments ..
14       INTEGER            M, N, LDX
15 *     ..
16 *     .. Array Arguments ..
17       DOUBLE PRECISION   D( * )
18       COMPLEX*16         X( LDX, * )
19 *     ..
20 *
21 *  Purpose
22 *  =======
23 *
24 *  ZLASCL2 performs a diagonal scaling on a vector:
25 *    x <-- D * x
26 *  where the DOUBLE PRECISION diagonal matrix D is stored as a vector.
27 *
28 *  Eventually to be replaced by BLAS_zge_diag_scale in the new BLAS
29 *  standard.
30 *
31 *  Arguments
32 *  =========
33 *
34 *     M       (input) INTEGER
35 *     The number of rows of D and X. M >= 0.
36 *
37 *     N       (input) INTEGER
38 *     The number of columns of D and X. N >= 0.
39 *
40 *     D       (input) DOUBLE PRECISION array, length M
41 *     Diagonal matrix D, stored as a vector of length M.
42 *
43 *     X       (input/output) COMPLEX*16 array, dimension (LDX,N)
44 *     On entry, the vector X to be scaled by D.
45 *     On exit, the scaled vector.
46 *
47 *     LDX     (input) INTEGER
48 *     The leading dimension of the vector X. LDX >= 0.
49 *
50 *  =====================================================================
51 *
52 *     .. Local Scalars ..
53       INTEGER            I, J
54 *     ..
55 *     .. Executable Statements ..
56 *
57       DO J = 1, N
58          DO I = 1, M
59             X( I, J ) = X( I, J ) * D( I )
60          END DO
61       END DO
62 
63       RETURN
64       END
65