1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
|
<HTML>
<HEAD><TITLE>UD01MD - SLICOT Library Routine Documentation</TITLE>
</HEAD>
<BODY>
<H2><A Name="UD01MD">UD01MD</A></H2>
<H3>
Printing a real matrix
</H3>
<A HREF ="#Specification"><B>[Specification]</B></A>
<A HREF ="#Arguments"><B>[Arguments]</B></A>
<A HREF ="#Method"><B>[Method]</B></A>
<A HREF ="#References"><B>[References]</B></A>
<A HREF ="#Comments"><B>[Comments]</B></A>
<A HREF ="#Example"><B>[Example]</B></A>
<P>
<B><FONT SIZE="+1">Purpose</FONT></B>
<PRE>
To print an M-by-N real matrix A row by row. The elements of A
are output to 7 significant figures.
</PRE>
<A name="Specification"><B><FONT SIZE="+1">Specification</FONT></B></A>
<PRE>
SUBROUTINE UD01MD( M, N, L, NOUT, A, LDA, TEXT, INFO )
C .. Scalar Arguments ..
INTEGER INFO, L, LDA, M, N, NOUT
CHARACTER*(*) TEXT
C .. Array Arguments ..
DOUBLE PRECISION A(LDA,*)
</PRE>
<A name="Arguments"><B><FONT SIZE="+1">Arguments</FONT></B></A>
<P>
</PRE>
<B>Input/Output Parameters</B>
<PRE>
M (input) INTEGER
The number of rows of matrix A to be printed. M >= 1.
N (input) INTEGER
The number of columns of matrix A to be printed. N >= 1.
L (input) INTEGER
The number of elements of matrix A to be printed per line.
1 <= L <= 5.
NOUT (input) INTEGER
The output channel to which the results are sent.
NOUT >= 0.
A (input) DOUBLE PRECISION array, dimension (LDA,N)
The leading M-by-N part of this array must contain the
matrix to be printed.
LDA INTEGER
The leading dimension of array A. LDA >= M.
TEXT (input) CHARACTER*72.
Title caption of the matrix to be printed (up to a
maximum of 72 characters). For example, TEXT = 'Matrix A'.
</PRE>
<B>Error Indicator</B>
<PRE>
INFO INTEGER
= 0: successful exit;
< 0: if INFO = -i, the i-th argument had an illegal
value.
</PRE>
<A name="Method"><B><FONT SIZE="+1">Method</FONT></B></A>
<PRE>
The routine first prints the contents of TEXT as a title, followed
by the elements of the matrix A such that
(i) if N <= L, the leading M-by-N part is printed;
(ii) if N = k*L + p (where k,p > 0), then k M-by-L blocks of
consecutive columns of A are printed one after another
followed by one M-by-p block containing the last p columns
of A.
Row numbers are printed on the left of each row and a column
number appears on top of each column.
The routine uses 2 + (k + 1)*(m + 1) lines and 8 + 15*c positions
per line where c is the actual number of columns, (i.e. c = L
or c = p).
</PRE>
<A name="References"><B><FONT SIZE="+1">References</FONT></B></A>
<PRE>
None.
</PRE>
<A name="Numerical Aspects"><B><FONT SIZE="+1">Numerical Aspects</FONT></B></A>
<PRE>
None.
</PRE>
<A name="Comments"><B><FONT SIZE="+1">Further Comments</FONT></B></A>
<PRE>
None
</PRE>
<A name="Example"><B><FONT SIZE="+1">Example</FONT></B></A>
<P>
<B>Program Text</B>
<PRE>
* UD01MD EXAMPLE PROGRAM TEXT
*
* .. Parameters ..
INTEGER NIN, NOUT
PARAMETER ( NIN = 5, NOUT = 6 )
INTEGER MMAX, NMAX
PARAMETER ( MMAX = 20, NMAX = 20 )
INTEGER LDA
PARAMETER ( LDA = MMAX )
* .. Local Scalars ..
INTEGER I, INFO, J, L, M, N
CHARACTER*72 TEXT
* .. Local Arrays ..
DOUBLE PRECISION A(LDA,NMAX)
* .. External Subroutines ..
EXTERNAL UD01MD
* .. Executable Statements ..
*
WRITE ( NOUT, FMT = 99999 )
* Skip the heading in the data file and read the data.
READ ( NIN, FMT = '()' )
READ ( NIN, FMT = * ) M, N, L, TEXT
IF ( M.LE.0 .OR. M.GT.MMAX ) THEN
WRITE ( NOUT, FMT = 99996 ) M
ELSE IF ( N.LE.0 .OR. N.GT.NMAX ) THEN
WRITE ( NOUT, FMT = 99997 ) N
ELSE
READ ( NIN, FMT = * ) ( ( A(I,J), J = 1,N ), I = 1,M )
* Print out the matrix A.
CALL UD01MD( M, N, L, NOUT, A, LDA, TEXT, INFO )
IF ( INFO.NE.0 ) WRITE ( NOUT, FMT = 99998 ) INFO
END IF
STOP
*
99999 FORMAT (' UD01MD EXAMPLE PROGRAM RESULTS',/1X)
99998 FORMAT (' INFO on exit from UD01MD = ',I2)
99997 FORMAT (/' N is out of range.',/' N = ',I5)
99996 FORMAT (/' M is out of range.',/' M = ',I5)
END
</PRE>
<B>Program Data</B>
<PRE>
UD01MD EXAMPLE PROGRAM DATA
4 4 4 'Matrix A'
1.0 2.0 3.0 4.0
5.0 6.0 7.0 8.0
9.0 10.0 11.0 12.0
13.0 14.0 15.0 16.0
</PRE>
<B>Program Results</B>
<PRE>
UD01MD EXAMPLE PROGRAM RESULTS
Matrix A ( 4X 4)
1 2 3 4
1 0.1000000D+01 0.2000000D+01 0.3000000D+01 0.4000000D+01
2 0.5000000D+01 0.6000000D+01 0.7000000D+01 0.8000000D+01
3 0.9000000D+01 0.1000000D+02 0.1100000D+02 0.1200000D+02
4 0.1300000D+02 0.1400000D+02 0.1500000D+02 0.1600000D+02
</PRE>
<HR>
<p>
<A HREF=..\libindex.html><B>Return to index</B></A></BODY>
</HTML>
|