1
*-----------------------------------------------------------------------
4
* Purpose: Real matrix output routine.
6
* Usage: CALL DMOUT (LOUT, M, N, A, LDA, IDIGIT, IFMT)
9
* M - Number of rows of A. (Input)
10
* N - Number of columns of A. (Input)
11
* A - Real M by N matrix to be printed. (Input)
12
* LDA - Leading dimension of A exactly as specified in the
13
* dimension statement of the calling program. (Input)
14
* IFMT - Format to be used in printing matrix A. (Input)
15
* IDIGIT - Print up to IABS(IDIGIT) decimal digits per number. (In)
16
* If IDIGIT .LT. 0, printing is done with 72 columns.
17
* If IDIGIT .GT. 0, printing is done with 132 columns.
19
*-----------------------------------------------------------------------
21
SUBROUTINE DMOUT( LOUT, M, N, A, LDA, IDIGIT, IFMT )
23
* ... SPECIFICATIONS FOR ARGUMENTS
25
* ... SPECIFICATIONS FOR LOCAL VARIABLES
26
* .. Scalar Arguments ..
28
INTEGER IDIGIT, LDA, LOUT, M, N
30
* .. Array Arguments ..
31
DOUBLE PRECISION A( LDA, * )
35
INTEGER I, J, K1, K2, LLL, NDIGIT
40
* .. Intrinsic Functions ..
41
INTRINSIC LEN, MIN, MIN0
43
* .. Data statements ..
44
DATA ICOL( 1 ), ICOL( 2 ), ICOL( 3 ) / 'C', 'o',
47
* .. Executable Statements ..
49
* ... FIRST EXECUTABLE STATEMENT
51
LLL = MIN( LEN( IFMT ), 80 )
60
WRITE( LOUT, FMT = 9999 )IFMT, LINE( 1: LLL )
61
9999 FORMAT( / 1X, A, / 1X, A )
63
IF( M.LE.0 .OR. N.LE.0 .OR. LDA.LE.0 )
69
*=======================================================================
70
* CODE FOR OUTPUT USING 72 COLUMNS FORMAT
71
*=======================================================================
73
IF( IDIGIT.LT.0 ) THEN
75
IF( NDIGIT.LE.4 ) THEN
78
WRITE( LOUT, FMT = 9998 )( ICOL, I, I = K1, K2 )
80
WRITE( LOUT, FMT = 9994 )I, ( A( I, J ), J = K1, K2 )
84
ELSE IF( NDIGIT.LE.6 ) THEN
87
WRITE( LOUT, FMT = 9997 )( ICOL, I, I = K1, K2 )
89
WRITE( LOUT, FMT = 9993 )I, ( A( I, J ), J = K1, K2 )
93
ELSE IF( NDIGIT.LE.10 ) THEN
96
WRITE( LOUT, FMT = 9996 )( ICOL, I, I = K1, K2 )
98
WRITE( LOUT, FMT = 9992 )I, ( A( I, J ), J = K1, K2 )
105
WRITE( LOUT, FMT = 9995 )( ICOL, I, I = K1, K2 )
107
WRITE( LOUT, FMT = 9991 )I, ( A( I, J ), J = K1, K2 )
112
*=======================================================================
113
* CODE FOR OUTPUT USING 132 COLUMNS FORMAT
114
*=======================================================================
117
IF( NDIGIT.LE.4 ) THEN
120
WRITE( LOUT, FMT = 9998 )( ICOL, I, I = K1, K2 )
122
WRITE( LOUT, FMT = 9994 )I, ( A( I, J ), J = K1, K2 )
126
ELSE IF( NDIGIT.LE.6 ) THEN
129
WRITE( LOUT, FMT = 9997 )( ICOL, I, I = K1, K2 )
131
WRITE( LOUT, FMT = 9993 )I, ( A( I, J ), J = K1, K2 )
135
ELSE IF( NDIGIT.LE.10 ) THEN
138
WRITE( LOUT, FMT = 9996 )( ICOL, I, I = K1, K2 )
140
WRITE( LOUT, FMT = 9992 )I, ( A( I, J ), J = K1, K2 )
147
WRITE( LOUT, FMT = 9995 )( ICOL, I, I = K1, K2 )
149
WRITE( LOUT, FMT = 9991 )I, ( A( I, J ), J = K1, K2 )
154
WRITE( LOUT, FMT = 9990 )
156
9998 FORMAT( 10X, 10( 4X, 3A1, I4, 1X ) )
157
9997 FORMAT( 10X, 8( 5X, 3A1, I4, 2X ) )
158
9996 FORMAT( 10X, 6( 7X, 3A1, I4, 4X ) )
159
9995 FORMAT( 10X, 5( 9X, 3A1, I4, 6X ) )
160
9994 FORMAT( 1X, ' Row', I4, ':', 1X, 1P, 10D12.3 )
161
9993 FORMAT( 1X, ' Row', I4, ':', 1X, 1P, 8D14.5 )
162
9992 FORMAT( 1X, ' Row', I4, ':', 1X, 1P, 6D18.9 )
163
9991 FORMAT( 1X, ' Row', I4, ':', 1X, 1P, 5D22.13 )
164
9990 FORMAT( 1X, ' ' )