comparison libcruft/arpack/util/dmout.f @ 12274:9f5d2ef078e8 release-3-4-x

import ARPACK sources to libcruft from Debian package libarpack2 2.1+parpack96.dfsg-3+b1
author John W. Eaton <jwe@octave.org>
date Fri, 28 Jan 2011 14:04:33 -0500
parents
children
comparison
equal deleted inserted replaced
12273:83133b5bf392 12274:9f5d2ef078e8
1 *-----------------------------------------------------------------------
2 * Routine: DMOUT
3 *
4 * Purpose: Real matrix output routine.
5 *
6 * Usage: CALL DMOUT (LOUT, M, N, A, LDA, IDIGIT, IFMT)
7 *
8 * Arguments
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.
18 *
19 *-----------------------------------------------------------------------
20 *
21 SUBROUTINE DMOUT( LOUT, M, N, A, LDA, IDIGIT, IFMT )
22 * ...
23 * ... SPECIFICATIONS FOR ARGUMENTS
24 * ...
25 * ... SPECIFICATIONS FOR LOCAL VARIABLES
26 * .. Scalar Arguments ..
27 CHARACTER*( * ) IFMT
28 INTEGER IDIGIT, LDA, LOUT, M, N
29 * ..
30 * .. Array Arguments ..
31 DOUBLE PRECISION A( LDA, * )
32 * ..
33 * .. Local Scalars ..
34 CHARACTER*80 LINE
35 INTEGER I, J, K1, K2, LLL, NDIGIT
36 * ..
37 * .. Local Arrays ..
38 CHARACTER ICOL( 3 )
39 * ..
40 * .. Intrinsic Functions ..
41 INTRINSIC LEN, MIN, MIN0
42 * ..
43 * .. Data statements ..
44 DATA ICOL( 1 ), ICOL( 2 ), ICOL( 3 ) / 'C', 'o',
45 $ 'l' /
46 * ..
47 * .. Executable Statements ..
48 * ...
49 * ... FIRST EXECUTABLE STATEMENT
50 *
51 LLL = MIN( LEN( IFMT ), 80 )
52 DO 10 I = 1, LLL
53 LINE( I: I ) = '-'
54 10 CONTINUE
55 *
56 DO 20 I = LLL + 1, 80
57 LINE( I: I ) = ' '
58 20 CONTINUE
59 *
60 WRITE( LOUT, FMT = 9999 )IFMT, LINE( 1: LLL )
61 9999 FORMAT( / 1X, A, / 1X, A )
62 *
63 IF( M.LE.0 .OR. N.LE.0 .OR. LDA.LE.0 )
64 $ RETURN
65 NDIGIT = IDIGIT
66 IF( IDIGIT.EQ.0 )
67 $ NDIGIT = 4
68 *
69 *=======================================================================
70 * CODE FOR OUTPUT USING 72 COLUMNS FORMAT
71 *=======================================================================
72 *
73 IF( IDIGIT.LT.0 ) THEN
74 NDIGIT = -IDIGIT
75 IF( NDIGIT.LE.4 ) THEN
76 DO 40 K1 = 1, N, 5
77 K2 = MIN0( N, K1+4 )
78 WRITE( LOUT, FMT = 9998 )( ICOL, I, I = K1, K2 )
79 DO 30 I = 1, M
80 WRITE( LOUT, FMT = 9994 )I, ( A( I, J ), J = K1, K2 )
81 30 CONTINUE
82 40 CONTINUE
83 *
84 ELSE IF( NDIGIT.LE.6 ) THEN
85 DO 60 K1 = 1, N, 4
86 K2 = MIN0( N, K1+3 )
87 WRITE( LOUT, FMT = 9997 )( ICOL, I, I = K1, K2 )
88 DO 50 I = 1, M
89 WRITE( LOUT, FMT = 9993 )I, ( A( I, J ), J = K1, K2 )
90 50 CONTINUE
91 60 CONTINUE
92 *
93 ELSE IF( NDIGIT.LE.10 ) THEN
94 DO 80 K1 = 1, N, 3
95 K2 = MIN0( N, K1+2 )
96 WRITE( LOUT, FMT = 9996 )( ICOL, I, I = K1, K2 )
97 DO 70 I = 1, M
98 WRITE( LOUT, FMT = 9992 )I, ( A( I, J ), J = K1, K2 )
99 70 CONTINUE
100 80 CONTINUE
101 *
102 ELSE
103 DO 100 K1 = 1, N, 2
104 K2 = MIN0( N, K1+1 )
105 WRITE( LOUT, FMT = 9995 )( ICOL, I, I = K1, K2 )
106 DO 90 I = 1, M
107 WRITE( LOUT, FMT = 9991 )I, ( A( I, J ), J = K1, K2 )
108 90 CONTINUE
109 100 CONTINUE
110 END IF
111 *
112 *=======================================================================
113 * CODE FOR OUTPUT USING 132 COLUMNS FORMAT
114 *=======================================================================
115 *
116 ELSE
117 IF( NDIGIT.LE.4 ) THEN
118 DO 120 K1 = 1, N, 10
119 K2 = MIN0( N, K1+9 )
120 WRITE( LOUT, FMT = 9998 )( ICOL, I, I = K1, K2 )
121 DO 110 I = 1, M
122 WRITE( LOUT, FMT = 9994 )I, ( A( I, J ), J = K1, K2 )
123 110 CONTINUE
124 120 CONTINUE
125 *
126 ELSE IF( NDIGIT.LE.6 ) THEN
127 DO 140 K1 = 1, N, 8
128 K2 = MIN0( N, K1+7 )
129 WRITE( LOUT, FMT = 9997 )( ICOL, I, I = K1, K2 )
130 DO 130 I = 1, M
131 WRITE( LOUT, FMT = 9993 )I, ( A( I, J ), J = K1, K2 )
132 130 CONTINUE
133 140 CONTINUE
134 *
135 ELSE IF( NDIGIT.LE.10 ) THEN
136 DO 160 K1 = 1, N, 6
137 K2 = MIN0( N, K1+5 )
138 WRITE( LOUT, FMT = 9996 )( ICOL, I, I = K1, K2 )
139 DO 150 I = 1, M
140 WRITE( LOUT, FMT = 9992 )I, ( A( I, J ), J = K1, K2 )
141 150 CONTINUE
142 160 CONTINUE
143 *
144 ELSE
145 DO 180 K1 = 1, N, 5
146 K2 = MIN0( N, K1+4 )
147 WRITE( LOUT, FMT = 9995 )( ICOL, I, I = K1, K2 )
148 DO 170 I = 1, M
149 WRITE( LOUT, FMT = 9991 )I, ( A( I, J ), J = K1, K2 )
150 170 CONTINUE
151 180 CONTINUE
152 END IF
153 END IF
154 WRITE( LOUT, FMT = 9990 )
155 *
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, ' ' )
165 *
166 RETURN
167 END