```01:       SUBROUTINE SLAG2D( M, N, SA, LDSA, A, LDA, INFO )
02: *
03: *  -- LAPACK PROTOTYPE auxiliary routine (version 3.1.2) --
04: *     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
05: *     August 2007
06: *
07: *     ..
08: *     .. Scalar Arguments ..
09:       INTEGER            INFO, LDA, LDSA, M, N
10: *     ..
11: *     .. Array Arguments ..
12:       REAL               SA( LDSA, * )
13:       DOUBLE PRECISION   A( LDA, * )
14: *     ..
15: *
16: *  Purpose
17: *  =======
18: *
19: *  SLAG2D converts a SINGLE PRECISION matrix, SA, to a DOUBLE
20: *  PRECISION matrix, A.
21: *
22: *  Note that while it is possible to overflow while converting
23: *  from double to single, it is not possible to overflow when
24: *  converting from single to double.
25: *
26: *  This is an auxiliary routine so there is no argument checking.
27: *
28: *  Arguments
29: *  =========
30: *
31: *  M       (input) INTEGER
32: *          The number of lines of the matrix A.  M >= 0.
33: *
34: *  N       (input) INTEGER
35: *          The number of columns of the matrix A.  N >= 0.
36: *
37: *  SA      (input) REAL array, dimension (LDSA,N)
38: *          On entry, the M-by-N coefficient matrix SA.
39: *
40: *  LDSA    (input) INTEGER
41: *          The leading dimension of the array SA.  LDSA >= max(1,M).
42: *
43: *  A       (output) DOUBLE PRECISION array, dimension (LDA,N)
44: *          On exit, the M-by-N coefficient matrix A.
45: *
46: *  LDA     (input) INTEGER
47: *          The leading dimension of the array A.  LDA >= max(1,M).
48: *
49: *  INFO    (output) INTEGER
50: *          = 0:  successful exit
51: *  =========
52: *
53: *     .. Local Scalars ..
54:       INTEGER            I, J
55: *     ..
56: *     .. Executable Statements ..
57: *
58:       INFO = 0
59:       DO 20 J = 1, N
60:          DO 10 I = 1, M
61:             A( I, J ) = SA( I, J )
62:    10    CONTINUE
63:    20 CONTINUE
64:       RETURN
65: *
66: *     End of SLAG2D
67: *
68:       END
69: ```