You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

alahdg.f 11 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  1. *> \brief \b ALAHDG
  2. *
  3. * =========== DOCUMENTATION ===========
  4. *
  5. * Online html documentation available at
  6. * http://www.netlib.org/lapack/explore-html/
  7. *
  8. * Definition:
  9. * ===========
  10. *
  11. * SUBROUTINE ALAHDG( IOUNIT, PATH )
  12. *
  13. * .. Scalar Arguments ..
  14. * CHARACTER*3 PATH
  15. * INTEGER IOUNIT
  16. * ..
  17. *
  18. *
  19. *> \par Purpose:
  20. * =============
  21. *>
  22. *> \verbatim
  23. *>
  24. *> ALAHDG prints header information for the different test paths.
  25. *> \endverbatim
  26. *
  27. * Arguments:
  28. * ==========
  29. *
  30. *> \param[in] IOUNIT
  31. *> \verbatim
  32. *> IOUNIT is INTEGER
  33. *> The unit number to which the header information should be
  34. *> printed.
  35. *> \endverbatim
  36. *>
  37. *> \param[in] PATH
  38. *> \verbatim
  39. *> PATH is CHARACTER*3
  40. *> The name of the path for which the header information is to
  41. *> be printed. Current paths are
  42. *> GQR: GQR (general matrices)
  43. *> GRQ: GRQ (general matrices)
  44. *> LSE: LSE Problem
  45. *> GLM: GLM Problem
  46. *> GSV: Generalized Singular Value Decomposition
  47. *> CSD: CS Decomposition
  48. *> \endverbatim
  49. *
  50. * Authors:
  51. * ========
  52. *
  53. *> \author Univ. of Tennessee
  54. *> \author Univ. of California Berkeley
  55. *> \author Univ. of Colorado Denver
  56. *> \author NAG Ltd.
  57. *
  58. *> \date December 2016
  59. *
  60. *> \ingroup aux_eig
  61. *
  62. * =====================================================================
  63. SUBROUTINE ALAHDG( IOUNIT, PATH )
  64. *
  65. * -- LAPACK test routine (version 3.7.0) --
  66. * -- LAPACK is a software package provided by Univ. of Tennessee, --
  67. * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
  68. * December 2016
  69. *
  70. * .. Scalar Arguments ..
  71. CHARACTER*3 PATH
  72. INTEGER IOUNIT
  73. * ..
  74. *
  75. * =====================================================================
  76. *
  77. * .. Local Scalars ..
  78. CHARACTER*3 C2
  79. INTEGER ITYPE
  80. * ..
  81. * .. External Functions ..
  82. LOGICAL LSAMEN
  83. EXTERNAL LSAMEN
  84. * ..
  85. * .. Executable Statements ..
  86. *
  87. IF( IOUNIT.LE.0 )
  88. $ RETURN
  89. C2 = PATH( 1: 3 )
  90. *
  91. * First line describing matrices in this path
  92. *
  93. IF( LSAMEN( 3, C2, 'GQR' ) ) THEN
  94. ITYPE = 1
  95. WRITE( IOUNIT, FMT = 9991 )PATH
  96. ELSE IF( LSAMEN( 3, C2, 'GRQ' ) ) THEN
  97. ITYPE = 2
  98. WRITE( IOUNIT, FMT = 9992 )PATH
  99. ELSE IF( LSAMEN( 3, C2, 'LSE' ) ) THEN
  100. ITYPE = 3
  101. WRITE( IOUNIT, FMT = 9993 )PATH
  102. ELSE IF( LSAMEN( 3, C2, 'GLM' ) ) THEN
  103. ITYPE = 4
  104. WRITE( IOUNIT, FMT = 9994 )PATH
  105. ELSE IF( LSAMEN( 3, C2, 'GSV' ) ) THEN
  106. ITYPE = 5
  107. WRITE( IOUNIT, FMT = 9995 )PATH
  108. ELSE IF( LSAMEN( 3, C2, 'CSD' ) ) THEN
  109. ITYPE = 6
  110. WRITE( IOUNIT, FMT = 9996 )PATH
  111. END IF
  112. *
  113. * Matrix types
  114. *
  115. WRITE( IOUNIT, FMT = 9999 )'Matrix types: '
  116. *
  117. IF( ITYPE.EQ.1 )THEN
  118. WRITE( IOUNIT, FMT = 9950 )1
  119. WRITE( IOUNIT, FMT = 9952 )2
  120. WRITE( IOUNIT, FMT = 9954 )3
  121. WRITE( IOUNIT, FMT = 9955 )4
  122. WRITE( IOUNIT, FMT = 9956 )5
  123. WRITE( IOUNIT, FMT = 9957 )6
  124. WRITE( IOUNIT, FMT = 9961 )7
  125. WRITE( IOUNIT, FMT = 9962 )8
  126. ELSE IF( ITYPE.EQ.2 )THEN
  127. WRITE( IOUNIT, FMT = 9951 )1
  128. WRITE( IOUNIT, FMT = 9953 )2
  129. WRITE( IOUNIT, FMT = 9954 )3
  130. WRITE( IOUNIT, FMT = 9955 )4
  131. WRITE( IOUNIT, FMT = 9956 )5
  132. WRITE( IOUNIT, FMT = 9957 )6
  133. WRITE( IOUNIT, FMT = 9961 )7
  134. WRITE( IOUNIT, FMT = 9962 )8
  135. ELSE IF( ITYPE.EQ.3 )THEN
  136. WRITE( IOUNIT, FMT = 9950 )1
  137. WRITE( IOUNIT, FMT = 9952 )2
  138. WRITE( IOUNIT, FMT = 9954 )3
  139. WRITE( IOUNIT, FMT = 9955 )4
  140. WRITE( IOUNIT, FMT = 9955 )5
  141. WRITE( IOUNIT, FMT = 9955 )6
  142. WRITE( IOUNIT, FMT = 9955 )7
  143. WRITE( IOUNIT, FMT = 9955 )8
  144. ELSE IF( ITYPE.EQ.4 )THEN
  145. WRITE( IOUNIT, FMT = 9951 )1
  146. WRITE( IOUNIT, FMT = 9953 )2
  147. WRITE( IOUNIT, FMT = 9954 )3
  148. WRITE( IOUNIT, FMT = 9955 )4
  149. WRITE( IOUNIT, FMT = 9955 )5
  150. WRITE( IOUNIT, FMT = 9955 )6
  151. WRITE( IOUNIT, FMT = 9955 )7
  152. WRITE( IOUNIT, FMT = 9955 )8
  153. ELSE IF( ITYPE.EQ.5 )THEN
  154. WRITE( IOUNIT, FMT = 9950 )1
  155. WRITE( IOUNIT, FMT = 9952 )2
  156. WRITE( IOUNIT, FMT = 9954 )3
  157. WRITE( IOUNIT, FMT = 9955 )4
  158. WRITE( IOUNIT, FMT = 9956 )5
  159. WRITE( IOUNIT, FMT = 9957 )6
  160. WRITE( IOUNIT, FMT = 9959 )7
  161. WRITE( IOUNIT, FMT = 9960 )8
  162. ELSE IF( ITYPE.EQ.6 )THEN
  163. WRITE( IOUNIT, FMT = 9963 )1
  164. WRITE( IOUNIT, FMT = 9964 )2
  165. WRITE( IOUNIT, FMT = 9965 )3
  166. END IF
  167. *
  168. * Tests performed
  169. *
  170. WRITE( IOUNIT, FMT = 9999 )'Test ratios: '
  171. *
  172. IF( ITYPE.EQ.1 ) THEN
  173. *
  174. * GQR decomposition of rectangular matrices
  175. *
  176. WRITE( IOUNIT, FMT = 9930 )1
  177. WRITE( IOUNIT, FMT = 9931 )2
  178. WRITE( IOUNIT, FMT = 9932 )3
  179. WRITE( IOUNIT, FMT = 9933 )4
  180. ELSE IF( ITYPE.EQ.2 ) THEN
  181. *
  182. * GRQ decomposition of rectangular matrices
  183. *
  184. WRITE( IOUNIT, FMT = 9934 )1
  185. WRITE( IOUNIT, FMT = 9935 )2
  186. WRITE( IOUNIT, FMT = 9932 )3
  187. WRITE( IOUNIT, FMT = 9933 )4
  188. ELSE IF( ITYPE.EQ.3 ) THEN
  189. *
  190. * LSE Problem
  191. *
  192. WRITE( IOUNIT, FMT = 9937 )1
  193. WRITE( IOUNIT, FMT = 9938 )2
  194. ELSE IF( ITYPE.EQ.4 ) THEN
  195. *
  196. * GLM Problem
  197. *
  198. WRITE( IOUNIT, FMT = 9939 )1
  199. ELSE IF( ITYPE.EQ.5 ) THEN
  200. *
  201. * GSVD
  202. *
  203. WRITE( IOUNIT, FMT = 9940 )1
  204. WRITE( IOUNIT, FMT = 9941 )2
  205. WRITE( IOUNIT, FMT = 9942 )3
  206. WRITE( IOUNIT, FMT = 9943 )4
  207. WRITE( IOUNIT, FMT = 9944 )5
  208. ELSE IF( ITYPE.EQ.6 ) THEN
  209. *
  210. * CSD
  211. *
  212. WRITE( IOUNIT, FMT = 9910 )
  213. WRITE( IOUNIT, FMT = 9911 )1
  214. WRITE( IOUNIT, FMT = 9912 )2
  215. WRITE( IOUNIT, FMT = 9913 )3
  216. WRITE( IOUNIT, FMT = 9914 )4
  217. WRITE( IOUNIT, FMT = 9915 )5
  218. WRITE( IOUNIT, FMT = 9916 )6
  219. WRITE( IOUNIT, FMT = 9917 )7
  220. WRITE( IOUNIT, FMT = 9918 )8
  221. WRITE( IOUNIT, FMT = 9919 )9
  222. WRITE( IOUNIT, FMT = 9920 )
  223. WRITE( IOUNIT, FMT = 9921 )10
  224. WRITE( IOUNIT, FMT = 9922 )11
  225. WRITE( IOUNIT, FMT = 9923 )12
  226. WRITE( IOUNIT, FMT = 9924 )13
  227. WRITE( IOUNIT, FMT = 9925 )14
  228. WRITE( IOUNIT, FMT = 9926 )15
  229. END IF
  230. *
  231. 9999 FORMAT( 1X, A )
  232. 9991 FORMAT( / 1X, A3, ': GQR factorization of general matrices' )
  233. 9992 FORMAT( / 1X, A3, ': GRQ factorization of general matrices' )
  234. 9993 FORMAT( / 1X, A3, ': LSE Problem' )
  235. 9994 FORMAT( / 1X, A3, ': GLM Problem' )
  236. 9995 FORMAT( / 1X, A3, ': Generalized Singular Value Decomposition' )
  237. 9996 FORMAT( / 1X, A3, ': CS Decomposition' )
  238. *
  239. 9950 FORMAT( 3X, I2, ': A-diagonal matrix B-upper triangular' )
  240. 9951 FORMAT( 3X, I2, ': A-diagonal matrix B-lower triangular' )
  241. 9952 FORMAT( 3X, I2, ': A-upper triangular B-upper triangular' )
  242. 9953 FORMAT( 3X, I2, ': A-lower triangular B-diagonal triangular' )
  243. 9954 FORMAT( 3X, I2, ': A-lower triangular B-upper triangular' )
  244. *
  245. 9955 FORMAT( 3X, I2, ': Random matrices cond(A)=100, cond(B)=10,' )
  246. *
  247. 9956 FORMAT( 3X, I2, ': Random matrices cond(A)= sqrt( 0.1/EPS ) ',
  248. $ 'cond(B)= sqrt( 0.1/EPS )' )
  249. 9957 FORMAT( 3X, I2, ': Random matrices cond(A)= 0.1/EPS ',
  250. $ 'cond(B)= 0.1/EPS' )
  251. 9959 FORMAT( 3X, I2, ': Random matrices cond(A)= sqrt( 0.1/EPS ) ',
  252. $ 'cond(B)= 0.1/EPS ' )
  253. 9960 FORMAT( 3X, I2, ': Random matrices cond(A)= 0.1/EPS ',
  254. $ 'cond(B)= sqrt( 0.1/EPS )' )
  255. *
  256. 9961 FORMAT( 3X, I2, ': Matrix scaled near underflow limit' )
  257. 9962 FORMAT( 3X, I2, ': Matrix scaled near overflow limit' )
  258. 9963 FORMAT( 3X, I2, ': Random orthogonal matrix (Haar measure)' )
  259. 9964 FORMAT( 3X, I2, ': Nearly orthogonal matrix with uniformly ',
  260. $ 'distributed angles atan2( S, C ) in CS decomposition' )
  261. 9965 FORMAT( 3X, I2, ': Random orthogonal matrix with clustered ',
  262. $ 'angles atan2( S, C ) in CS decomposition' )
  263. *
  264. *
  265. * GQR test ratio
  266. *
  267. 9930 FORMAT( 3X, I2, ': norm( R - Q'' * A ) / ( min( N, M )*norm( A )',
  268. $ '* EPS )' )
  269. 9931 FORMAT( 3X, I2, ': norm( T * Z - Q'' * B ) / ( min(P,N)*norm(B)',
  270. $ '* EPS )' )
  271. 9932 FORMAT( 3X, I2, ': norm( I - Q''*Q ) / ( N * EPS )' )
  272. 9933 FORMAT( 3X, I2, ': norm( I - Z''*Z ) / ( P * EPS )' )
  273. *
  274. * GRQ test ratio
  275. *
  276. 9934 FORMAT( 3X, I2, ': norm( R - A * Q'' ) / ( min( N,M )*norm(A) * ',
  277. $ 'EPS )' )
  278. 9935 FORMAT( 3X, I2, ': norm( T * Q - Z'' * B ) / ( min( P,N ) * nor',
  279. $ 'm(B)*EPS )' )
  280. *
  281. * LSE test ratio
  282. *
  283. 9937 FORMAT( 3X, I2, ': norm( A*x - c ) / ( norm(A)*norm(x) * EPS )' )
  284. 9938 FORMAT( 3X, I2, ': norm( B*x - d ) / ( norm(B)*norm(x) * EPS )' )
  285. *
  286. * GLM test ratio
  287. *
  288. 9939 FORMAT( 3X, I2, ': norm( d - A*x - B*y ) / ( (norm(A)+norm(B) )*',
  289. $ '(norm(x)+norm(y))*EPS )' )
  290. *
  291. * GSVD test ratio
  292. *
  293. 9940 FORMAT( 3X, I2, ': norm( U'' * A * Q - D1 * R ) / ( min( M, N )*',
  294. $ 'norm( A ) * EPS )' )
  295. 9941 FORMAT( 3X, I2, ': norm( V'' * B * Q - D2 * R ) / ( min( P, N )*',
  296. $ 'norm( B ) * EPS )' )
  297. 9942 FORMAT( 3X, I2, ': norm( I - U''*U ) / ( M * EPS )' )
  298. 9943 FORMAT( 3X, I2, ': norm( I - V''*V ) / ( P * EPS )' )
  299. 9944 FORMAT( 3X, I2, ': norm( I - Q''*Q ) / ( N * EPS )' )
  300. *
  301. * CSD test ratio
  302. *
  303. 9910 FORMAT( 3X, '2-by-2 CSD' )
  304. 9911 FORMAT( 3X, I2, ': norm( U1'' * X11 * V1 - C ) / ( max( P, Q)',
  305. $ ' * max(norm(I-X''*X),EPS) )' )
  306. 9912 FORMAT( 3X, I2, ': norm( U1'' * X12 * V2-(-S)) / ( max( P,',
  307. $ 'M-Q) * max(norm(I-X''*X),EPS) )' )
  308. 9913 FORMAT( 3X, I2, ': norm( U2'' * X21 * V1 - S ) / ( max(M-P,',
  309. $ ' Q) * max(norm(I-X''*X),EPS) )' )
  310. 9914 FORMAT( 3X, I2, ': norm( U2'' * X22 * V2 - C ) / ( max(M-P,',
  311. $ 'M-Q) * max(norm(I-X''*X),EPS) )' )
  312. 9915 FORMAT( 3X, I2, ': norm( I - U1''*U1 ) / ( P * EPS )' )
  313. 9916 FORMAT( 3X, I2, ': norm( I - U2''*U2 ) / ( (M-P) * EPS )' )
  314. 9917 FORMAT( 3X, I2, ': norm( I - V1''*V1 ) / ( Q * EPS )' )
  315. 9918 FORMAT( 3X, I2, ': norm( I - V2''*V2 ) / ( (M-Q) * EPS )' )
  316. 9919 FORMAT( 3X, I2, ': principal angle ordering ( 0 or ULP )' )
  317. 9920 FORMAT( 3X, '2-by-1 CSD' )
  318. 9921 FORMAT( 3X, I2, ': norm( U1'' * X11 * V1 - C ) / ( max( P, Q)',
  319. $ ' * max(norm(I-X''*X),EPS) )' )
  320. 9922 FORMAT( 3X, I2, ': norm( U2'' * X21 * V1 - S ) / ( max( M-P,',
  321. $ 'Q) * max(norm(I-X''*X),EPS) )' )
  322. 9923 FORMAT( 3X, I2, ': norm( I - U1''*U1 ) / ( P * EPS )' )
  323. 9924 FORMAT( 3X, I2, ': norm( I - U2''*U2 ) / ( (M-P) * EPS )' )
  324. 9925 FORMAT( 3X, I2, ': norm( I - V1''*V1 ) / ( Q * EPS )' )
  325. 9926 FORMAT( 3X, I2, ': principal angle ordering ( 0 or ULP )' )
  326. RETURN
  327. *
  328. * End of ALAHDG
  329. *
  330. END