10133
10134
10135
10136
10137
10138
10139
10140 CHARACTER*1 UPLO, DIAG
10141 INTEGER M, N, LDA, RSRC, CSRC, MYROW, MYCOL, TESTNUM
10142 INTEGER MAXERR, NERR
10143
10144
10145 INTEGER ERRIBUF(6, MAXERR)
10146 COMPLEX A(LDA,N), ERRDBUF(2, MAXERR)
10147
10148
10149
10150
10151
10152
10153
10154
10155
10156
10157
10158
10159
10160
10161
10162
10163
10164
10165
10166
10167
10168
10169
10170
10171
10172
10173
10174
10175
10176
10177
10178
10179
10180
10181
10182
10183
10184
10185
10186
10187
10188
10189
10190
10191
10192
10193
10194
10195
10196
10197
10198
10199
10200
10201
10202
10203
10204
10205
10206
10207
10208
10209
10210
10211
10212
10213
10214
10215
10216
10217
10218
10219
10220
10221
10222
10223
10224
10225 INTEGER I, J, NPROCS, SRC, DEST
10226 LOGICAL USEIT
10227 COMPLEX COMPVAL
10228
10229
10230 INTEGER ISEED(4)
10231
10232
10233 INTEGER IBTNPROCS
10234 COMPLEX CBTRAN
10236
10237
10238
10240 src = rsrc * nprocs + csrc
10241 dest = myrow * nprocs + mycol
10242
10243
10244
10245 iseed(1) = mod( 1002 + testnum*5 + src*3, 4096 )
10246 iseed(2) = mod( 2027 + testnum*7 + src, 4096 )
10247 iseed(3) = mod( 1234 + testnum + src*3, 4096 )
10248 iseed(4) = mod( 4311 + testnum*10 + src*2, 4096 )
10249
10250
10251
10252
10253
10254 DO 100 j = 1, n
10255 DO 105 i = 1, m
10256 compval =
cbtran( iseed )
10257
10258
10259
10260
10261
10262 useit = .true.
10263 IF( uplo .EQ. 'U' ) THEN
10264 IF( m .LE. n ) THEN
10265 IF( diag .EQ. 'U' ) THEN
10266 IF( i .GE. j ) THEN
10267 useit = .false.
10268 END IF
10269 ELSE
10270 IF( i .GT. j ) THEN
10271 useit = .false.
10272 END IF
10273 END IF
10274 ELSE
10275 IF( diag .EQ. 'U' ) THEN
10276 IF( i .GE. m-n+j ) THEN
10277 useit = .false.
10278 END IF
10279 ELSE
10280 IF( i .GT. m-n+j ) THEN
10281 useit = .false.
10282 END IF
10283 END IF
10284 END IF
10285 ELSE IF( uplo .EQ. 'L' ) THEN
10286 IF( m .LE. n ) THEN
10287 IF( diag .EQ. 'U' ) THEN
10288 IF( j. ge. i+(n-m) ) THEN
10289 useit = .false.
10290 END IF
10291 ELSE
10292 IF( j .GT. i+(n-m) ) THEN
10293 useit = .false.
10294 END IF
10295 END IF
10296 ELSE
10297 IF( diag .EQ. 'U' ) THEN
10298 IF( j .GE. i ) THEN
10299 useit = .false.
10300 END IF
10301 ELSE
10302 IF( j .GT. i ) THEN
10303 useit = .false.
10304 END IF
10305 END IF
10306 END IF
10307 END IF
10308
10309
10310
10311
10312
10313 IF( useit ) THEN
10314 IF( a(i,j) .NE. compval ) THEN
10315 nerr = nerr + 1
10316 IF( nerr .LE. maxerr ) THEN
10317 erribuf(1, nerr) = testnum
10318 erribuf(2, nerr) = src
10319 erribuf(3, nerr) = dest
10320 erribuf(4, nerr) = i
10321 erribuf(5, nerr) = j
10322 erribuf(6, nerr) = 5
10323 errdbuf(1, nerr) = a(i, j)
10324 errdbuf(2, nerr) = compval
10325 END IF
10326 END IF
10327 END IF
10328 105 CONTINUE
10329 100 CONTINUE
10330 RETURN
10331
10332
10333
complex function cbtran(iseed)
integer function ibtnprocs()