01:       SUBROUTINE DLASCL2 ( M, N, D, X, LDX )
02: *
03: *     -- LAPACK routine (version 3.2.1)                               --
04: *     -- Contributed by James Demmel, Deaglan Halligan, Yozo Hida and --
05: *     -- Jason Riedy of Univ. of California Berkeley.                 --
06: *     -- April 2009                                                   --
07: *
08: *     -- LAPACK is a software package provided by Univ. of Tennessee, --
09: *     -- 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( * ), X( LDX, * )
18: *     ..
19: *
20: *  Purpose
21: *  =======
22: *
23: *  DLASCL2 performs a diagonal scaling on a vector:
24: *    x <-- D * x
25: *  where the diagonal matrix D is stored as a vector.
26: *
27: *  Eventually to be replaced by BLAS_dge_diag_scale in the new BLAS
28: *  standard.
29: *
30: *  Arguments
31: *  =========
32: *
33: *     M       (input) INTEGER
34: *     The number of rows of D and X. M >= 0.
35: *
36: *     N       (input) INTEGER
37: *     The number of columns of D and X. N >= 0.
38: *
39: *     D       (input) DOUBLE PRECISION array, length M
40: *     Diagonal matrix D, stored as a vector of length M.
41: *
42: *     X       (input/output) DOUBLE PRECISION array, dimension (LDX,N)
43: *     On entry, the vector X to be scaled by D.
44: *     On exit, the scaled vector.
45: *
46: *     LDX     (input) INTEGER
47: *     The leading dimension of the vector X. LDX >= 0.
48: *
49: *  =====================================================================
50: *
51: *     .. Local Scalars ..
52:       INTEGER            I, J
53: *     ..
54: *     .. Executable Statements ..
55: *
56:       DO J = 1, N
57:          DO I = 1, M
58:             X( I, J ) = X( I, J ) * D( I )
59:          END DO
60:       END DO
61: 
62:       RETURN
63:       END
64: