1       SUBROUTINE ALAHDG( IOUNIT, PATH )
  2 *
  3 *  -- LAPACK test routine (version 3.1.1) --
  4 *     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
  5 *     November 2006
  6 *
  7 *     .. Scalar Arguments ..
  8       CHARACTER*3       PATH
  9       INTEGER           IOUNIT
 10 *     ..
 11 *
 12 *  Purpose
 13 *  =======
 14 *
 15 *  ALAHDG prints header information for the different test paths.
 16 *
 17 *  Arguments
 18 *  =========
 19 *
 20 *  IOUNIT  (input) INTEGER
 21 *          The unit number to which the header information should be
 22 *          printed.
 23 *
 24 *  PATH    (input) CHARACTER*3
 25 *          The name of the path for which the header information is to
 26 *          be printed.  Current paths are
 27 *             GQR:  GQR (general matrices)
 28 *             GRQ:  GRQ (general matrices)
 29 *             LSE:  LSE Problem
 30 *             GLM:  GLM Problem
 31 *             GSV:  Generalized Singular Value Decomposition
 32 *             CSD:  CS Decomposition
 33 *
 34 *  =====================================================================
 35 *
 36 *     .. Local Scalars ..
 37       CHARACTER*3       C2
 38       INTEGER           ITYPE
 39 *     ..
 40 *     .. External Functions ..
 41       LOGICAL           LSAMEN
 42       EXTERNAL          LSAMEN
 43 *     ..
 44 *     .. Executable Statements ..
 45 *
 46       IF( IOUNIT.LE.0 )
 47      $   RETURN
 48       C2 = PATH( 13 )
 49 *
 50 *     First line describing matrices in this path
 51 *
 52       IF( LSAMEN( 3, C2, 'GQR' ) ) THEN
 53          ITYPE = 1
 54          WRITE( IOUNIT, FMT = 9991 )PATH
 55       ELSE IF( LSAMEN( 3, C2, 'GRQ' ) ) THEN
 56          ITYPE = 2
 57          WRITE( IOUNIT, FMT = 9992 )PATH
 58       ELSE IF( LSAMEN( 3, C2, 'LSE' ) ) THEN
 59          ITYPE = 3
 60          WRITE( IOUNIT, FMT = 9993 )PATH
 61       ELSE IF( LSAMEN( 3, C2, 'GLM' ) ) THEN
 62          ITYPE = 4
 63          WRITE( IOUNIT, FMT = 9994 )PATH
 64       ELSE IF( LSAMEN( 3, C2, 'GSV' ) ) THEN
 65          ITYPE = 5
 66          WRITE( IOUNIT, FMT = 9995 )PATH
 67       ELSE IF( LSAMEN( 3, C2, 'CSD' ) ) THEN
 68          ITYPE = 6
 69          WRITE( IOUNIT, FMT = 9996 )PATH
 70       END IF
 71 *
 72 *     Matrix types
 73 *
 74       WRITE( IOUNIT, FMT = 9999 )'Matrix types: '
 75 *
 76       IF( ITYPE.EQ.1 )THEN
 77          WRITE( IOUNIT, FMT = 9950 )1
 78          WRITE( IOUNIT, FMT = 9952 )2
 79          WRITE( IOUNIT, FMT = 9954 )3
 80          WRITE( IOUNIT, FMT = 9955 )4
 81          WRITE( IOUNIT, FMT = 9956 )5
 82          WRITE( IOUNIT, FMT = 9957 )6
 83          WRITE( IOUNIT, FMT = 9961 )7
 84          WRITE( IOUNIT, FMT = 9962 )8
 85       ELSE IF( ITYPE.EQ.2 )THEN
 86          WRITE( IOUNIT, FMT = 9951 )1
 87          WRITE( IOUNIT, FMT = 9953 )2
 88          WRITE( IOUNIT, FMT = 9954 )3
 89          WRITE( IOUNIT, FMT = 9955 )4
 90          WRITE( IOUNIT, FMT = 9956 )5
 91          WRITE( IOUNIT, FMT = 9957 )6
 92          WRITE( IOUNIT, FMT = 9961 )7
 93          WRITE( IOUNIT, FMT = 9962 )8
 94       ELSE IF( ITYPE.EQ.3 )THEN
 95          WRITE( IOUNIT, FMT = 9950 )1
 96          WRITE( IOUNIT, FMT = 9952 )2
 97          WRITE( IOUNIT, FMT = 9954 )3
 98          WRITE( IOUNIT, FMT = 9955 )4
 99          WRITE( IOUNIT, FMT = 9955 )5
100          WRITE( IOUNIT, FMT = 9955 )6
101          WRITE( IOUNIT, FMT = 9955 )7
102          WRITE( IOUNIT, FMT = 9955 )8
103       ELSE IF( ITYPE.EQ.4 )THEN
104          WRITE( IOUNIT, FMT = 9951 )1
105          WRITE( IOUNIT, FMT = 9953 )2
106          WRITE( IOUNIT, FMT = 9954 )3
107          WRITE( IOUNIT, FMT = 9955 )4
108          WRITE( IOUNIT, FMT = 9955 )5
109          WRITE( IOUNIT, FMT = 9955 )6
110          WRITE( IOUNIT, FMT = 9955 )7
111          WRITE( IOUNIT, FMT = 9955 )8
112       ELSE IF( ITYPE.EQ.5 )THEN
113          WRITE( IOUNIT, FMT = 9950 )1
114          WRITE( IOUNIT, FMT = 9952 )2
115          WRITE( IOUNIT, FMT = 9954 )3
116          WRITE( IOUNIT, FMT = 9955 )4
117          WRITE( IOUNIT, FMT = 9956 )5
118          WRITE( IOUNIT, FMT = 9957 )6
119          WRITE( IOUNIT, FMT = 9959 )7
120          WRITE( IOUNIT, FMT = 9960 )8
121       ELSE IF( ITYPE.EQ.6 )THEN
122          WRITE( IOUNIT, FMT = 9963 )1
123          WRITE( IOUNIT, FMT = 9964 )2
124          WRITE( IOUNIT, FMT = 9965 )3
125       END IF
126 *
127 *     Tests performed
128 *
129       WRITE( IOUNIT, FMT = 9999 )'Test ratios: '
130 *
131       IF( ITYPE.EQ.1 ) THEN
132 *
133 *        GQR decomposition of rectangular matrices
134 *
135          WRITE( IOUNIT, FMT = 9930 )1
136          WRITE( IOUNIT, FMT = 9931 )2
137          WRITE( IOUNIT, FMT = 9932 )3
138          WRITE( IOUNIT, FMT = 9933 )4
139       ELSE IF( ITYPE.EQ.2 ) THEN
140 *
141 *        GRQ decomposition of rectangular matrices
142 *
143          WRITE( IOUNIT, FMT = 9934 )1
144          WRITE( IOUNIT, FMT = 9935 )2
145          WRITE( IOUNIT, FMT = 9932 )3
146          WRITE( IOUNIT, FMT = 9933 )4
147       ELSE IF( ITYPE.EQ.3 ) THEN
148 *
149 *        LSE Problem
150 *
151          WRITE( IOUNIT, FMT = 9937 )1
152          WRITE( IOUNIT, FMT = 9938 )2
153       ELSE IF( ITYPE.EQ.4 ) THEN
154 *
155 *        GLM Problem
156 *
157          WRITE( IOUNIT, FMT = 9939 )1
158       ELSE IF( ITYPE.EQ.5 ) THEN
159 *
160 *        GSVD
161 *
162          WRITE( IOUNIT, FMT = 9940 )1
163          WRITE( IOUNIT, FMT = 9941 )2
164          WRITE( IOUNIT, FMT = 9942 )3
165          WRITE( IOUNIT, FMT = 9943 )4
166          WRITE( IOUNIT, FMT = 9944 )5
167       ELSE IF( ITYPE.EQ.6 ) THEN
168 *
169 *        CSD
170 *
171          WRITE( IOUNIT, FMT = 9920 )1
172          WRITE( IOUNIT, FMT = 9921 )2
173          WRITE( IOUNIT, FMT = 9922 )3
174          WRITE( IOUNIT, FMT = 9923 )4
175          WRITE( IOUNIT, FMT = 9924 )5
176          WRITE( IOUNIT, FMT = 9925 )6
177          WRITE( IOUNIT, FMT = 9926 )7
178          WRITE( IOUNIT, FMT = 9927 )8
179       END IF
180 *
181  9999 FORMAT1X, A )
182  9991 FORMAT/ 1X, A3, ': GQR factorization of general matrices' )
183  9992 FORMAT/ 1X, A3, ': GRQ factorization of general matrices' )
184  9993 FORMAT/ 1X, A3, ': LSE Problem' )
185  9994 FORMAT/ 1X, A3, ': GLM Problem' )
186  9995 FORMAT/ 1X, A3, ': Generalized Singular Value Decomposition' )
187  9996 FORMAT/ 1X, A3, ': CS Decomposition' )
188 *
189  9950 FORMAT3X, I2, ': A-diagonal matrix  B-upper triangular' )
190  9951 FORMAT3X, I2, ': A-diagonal matrix  B-lower triangular' )
191  9952 FORMAT3X, I2, ': A-upper triangular B-upper triangular' )
192  9953 FORMAT3X, I2, ': A-lower triangular B-diagonal triangular' )
193  9954 FORMAT3X, I2, ': A-lower triangular B-upper triangular' )
194 *
195  9955 FORMAT3X, I2, ': Random matrices cond(A)=100, cond(B)=10,' )
196 *
197  9956 FORMAT3X, I2, ': Random matrices cond(A)= sqrt( 0.1/EPS ) ',
198      $      'cond(B)= sqrt( 0.1/EPS )' )
199  9957 FORMAT3X, I2, ': Random matrices cond(A)= 0.1/EPS ',
200      $      'cond(B)= 0.1/EPS' )
201  9959 FORMAT3X, I2, ': Random matrices cond(A)= sqrt( 0.1/EPS ) ',
202      $      'cond(B)=  0.1/EPS ' )
203  9960 FORMAT3X, I2, ': Random matrices cond(A)= 0.1/EPS ',
204      $      'cond(B)=  sqrt( 0.1/EPS )' )
205 *
206  9961 FORMAT3X, I2, ': Matrix scaled near underflow limit' )
207  9962 FORMAT3X, I2, ': Matrix scaled near overflow limit' )
208  9963 FORMAT3X, I2, ': Random orthogonal matrix (Haar measure)' )
209  9964 FORMAT3X, I2, ': Nearly orthogonal matrix with uniformly ',
210      $      'distributed angles atan2( S, C ) in CS decomposition' )
211  9965 FORMAT3X, I2, ': Random orthogonal matrix with clustered ',
212      $      'angles atan2( S, C ) in CS decomposition' )
213 *
214 *
215 *     GQR test ratio
216 *
217  9930 FORMAT3X, I2, ': norm( R - Q'' * A ) / ( min( N, M )*norm( A )',
218      $       '* EPS )' )
219  9931 FORMAT3X, I2, ': norm( T * Z - Q'' * B )  / ( min(P,N)*norm(B)',
220      $       '* EPS )' )
221  9932 FORMAT3X, I2, ': norm( I - Q''*Q )   / ( N * EPS )' )
222  9933 FORMAT3X, I2, ': norm( I - Z''*Z )   / ( P * EPS )' )
223 *
224 *     GRQ test ratio
225 *
226  9934 FORMAT3X, I2, ': norm( R - A * Q'' ) / ( min( N,M )*norm(A) * ',
227      $       'EPS )' )
228  9935 FORMAT3X, I2, ': norm( T * Q - Z'' * B )  / ( min( P,N ) * nor',
229      $       'm(B)*EPS )' )
230 *
231 *     LSE test ratio
232 *
233  9937 FORMAT3X, I2, ': norm( A*x - c )  / ( norm(A)*norm(x) * EPS )' )
234  9938 FORMAT3X, I2, ': norm( B*x - d )  / ( norm(B)*norm(x) * EPS )' )
235 *
236 *     GLM test ratio
237 *
238  9939 FORMAT3X, I2, ': norm( d - A*x - B*y ) / ( (norm(A)+norm(B) )*',
239      $       '(norm(x)+norm(y))*EPS )' )
240 *
241 *     GSVD test ratio
242 *
243  9940 FORMAT3X, I2, ': norm( U'' * A * Q - D1 * R ) / ( min( M, N )*',
244      $       'norm( A ) * EPS )' )
245  9941 FORMAT3X, I2, ': norm( V'' * B * Q - D2 * R ) / ( min( P, N )*',
246      $       'norm( B ) * EPS )' )
247  9942 FORMAT3X, I2, ': norm( I - U''*U )   / ( M * EPS )' )
248  9943 FORMAT3X, I2, ': norm( I - V''*V )   / ( P * EPS )' )
249  9944 FORMAT3X, I2, ': norm( I - Q''*Q )   / ( N * EPS )' )
250 *
251 *     CSD test ratio
252 *
253  9920 FORMAT3X, I2, ': norm( U1'' * X11 * V1 - C ) / ( max(  P,  Q)',
254      $       ' * max(norm(I-X''*X),EPS) )' )
255  9921 FORMAT3X, I2, ': norm( U1'' * X12 * V2-(-S)) / ( max(  P,',
256      $       'M-Q) * max(norm(I-X''*X),EPS) )' )
257  9922 FORMAT3X, I2, ': norm( U2'' * X21 * V1 - S ) / ( max(M-P,',
258      $       '  Q) * max(norm(I-X''*X),EPS) )' )
259  9923 FORMAT3X, I2, ': norm( U2'' * X22 * V2 - C ) / ( max(M-P,',
260      $       'M-Q) * max(norm(I-X''*X),EPS) )' )
261  9924 FORMAT3X, I2, ': norm( I - U1''*U1 ) / (   P   * EPS )' )
262  9925 FORMAT3X, I2, ': norm( I - U2''*U2 ) / ( (M-P) * EPS )' )
263  9926 FORMAT3X, I2, ': norm( I - V1''*V1 ) / (   Q   * EPS )' )
264  9927 FORMAT3X, I2, ': norm( I - V2''*V2 ) / ( (M-Q) * EPS )' )
265       RETURN
266 *
267 *     End of ALAHDG
268 *
269       END