00001 SUBROUTINE ZCKGSV( NM, MVAL, PVAL, NVAL, NMATS, ISEED, THRESH,
00002 $ NMAX, A, AF, B, BF, U, V, Q, ALPHA, BETA, R,
00003 $ IWORK, WORK, RWORK, NIN, NOUT, INFO )
00004
00005
00006
00007
00008
00009
00010 INTEGER INFO, NIN, NM, NMATS, NMAX, NOUT
00011 DOUBLE PRECISION THRESH
00012
00013
00014 INTEGER ISEED( 4 ), IWORK( * ), MVAL( * ), NVAL( * ),
00015 $ PVAL( * )
00016 DOUBLE PRECISION ALPHA( * ), BETA( * ), RWORK( * )
00017 COMPLEX*16 A( * ), AF( * ), B( * ), BF( * ), Q( * ),
00018 $ R( * ), U( * ), V( * ), WORK( * )
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105 INTEGER NTESTS
00106 PARAMETER ( NTESTS = 7 )
00107 INTEGER NTYPES
00108 PARAMETER ( NTYPES = 8 )
00109
00110
00111 LOGICAL FIRSTT
00112 CHARACTER DISTA, DISTB, TYPE
00113 CHARACTER*3 PATH
00114 INTEGER I, IINFO, IM, IMAT, KLA, KLB, KUA, KUB, LDA,
00115 $ LDB, LDQ, LDR, LDU, LDV, LWORK, M, MODEA,
00116 $ MODEB, N, NFAIL, NRUN, NT, P
00117 DOUBLE PRECISION ANORM, BNORM, CNDNMA, CNDNMB
00118
00119
00120 LOGICAL DOTYPE( NTYPES )
00121 DOUBLE PRECISION RESULT( NTESTS )
00122
00123
00124 EXTERNAL ALAHDG, ALAREQ, ALASUM, DLATB9, ZGSVTS, ZLATMS
00125
00126
00127 INTRINSIC ABS
00128
00129
00130
00131
00132
00133 PATH( 1: 3 ) = 'GSV'
00134 INFO = 0
00135 NRUN = 0
00136 NFAIL = 0
00137 FIRSTT = .TRUE.
00138 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
00139 LDA = NMAX
00140 LDB = NMAX
00141 LDU = NMAX
00142 LDV = NMAX
00143 LDQ = NMAX
00144 LDR = NMAX
00145 LWORK = NMAX*NMAX
00146
00147
00148
00149 DO 30 IM = 1, NM
00150 M = MVAL( IM )
00151 P = PVAL( IM )
00152 N = NVAL( IM )
00153
00154 DO 20 IMAT = 1, NTYPES
00155
00156
00157
00158 IF( .NOT.DOTYPE( IMAT ) )
00159 $ GO TO 20
00160
00161
00162
00163
00164 CALL DLATB9( PATH, IMAT, M, P, N, TYPE, KLA, KUA, KLB, KUB,
00165 $ ANORM, BNORM, MODEA, MODEB, CNDNMA, CNDNMB,
00166 $ DISTA, DISTB )
00167
00168
00169
00170 CALL ZLATMS( M, N, DISTA, ISEED, TYPE, RWORK, MODEA, CNDNMA,
00171 $ ANORM, KLA, KUA, 'No packing', A, LDA, WORK,
00172 $ IINFO )
00173 IF( IINFO.NE.0 ) THEN
00174 WRITE( NOUT, FMT = 9999 )IINFO
00175 INFO = ABS( IINFO )
00176 GO TO 20
00177 END IF
00178
00179
00180
00181 CALL ZLATMS( P, N, DISTB, ISEED, TYPE, RWORK, MODEB, CNDNMB,
00182 $ BNORM, KLB, KUB, 'No packing', B, LDB, WORK,
00183 $ IINFO )
00184 IF( IINFO.NE.0 ) THEN
00185 WRITE( NOUT, FMT = 9999 )IINFO
00186 INFO = ABS( IINFO )
00187 GO TO 20
00188 END IF
00189
00190 NT = 6
00191
00192 CALL ZGSVTS( M, P, N, A, AF, LDA, B, BF, LDB, U, LDU, V,
00193 $ LDV, Q, LDQ, ALPHA, BETA, R, LDR, IWORK, WORK,
00194 $ LWORK, RWORK, RESULT )
00195
00196
00197
00198
00199 DO 10 I = 1, NT
00200 IF( RESULT( I ).GE.THRESH ) THEN
00201 IF( NFAIL.EQ.0 .AND. FIRSTT ) THEN
00202 FIRSTT = .FALSE.
00203 CALL ALAHDG( NOUT, PATH )
00204 END IF
00205 WRITE( NOUT, FMT = 9998 )M, P, N, IMAT, I,
00206 $ RESULT( I )
00207 NFAIL = NFAIL + 1
00208 END IF
00209 10 CONTINUE
00210 NRUN = NRUN + NT
00211
00212 20 CONTINUE
00213 30 CONTINUE
00214
00215
00216
00217 CALL ALASUM( PATH, NOUT, NFAIL, NRUN, 0 )
00218
00219 9999 FORMAT( ' ZLATMS in ZCKGSV INFO = ', I5 )
00220 9998 FORMAT( ' M=', I4, ' P=', I4, ', N=', I4, ', type ', I2,
00221 $ ', test ', I2, ', ratio=', G13.6 )
00222 RETURN
00223
00224
00225
00226 END