8007
8008
8009
8010
8011
8012
8013
8014 CHARACTER*1 UPLO, DIAG
8015 INTEGER M, N, LDA, RSRC, CSRC, MYROW, MYCOL, TESTNUM
8016 INTEGER MAXERR, NERR
8017
8018
8019 INTEGER ERRIBUF(6, MAXERR)
8020 REAL A(LDA,N), ERRDBUF(2, MAXERR)
8021
8022
8023
8024
8025
8026
8027
8028
8029
8030
8031
8032
8033
8034
8035
8036
8037
8038
8039
8040
8041
8042
8043
8044
8045
8046
8047
8048
8049
8050
8051
8052
8053
8054
8055
8056
8057
8058
8059
8060
8061
8062
8063
8064
8065
8066
8067
8068
8069
8070
8071
8072
8073
8074
8075
8076
8077
8078
8079
8080
8081
8082
8083
8084
8085
8086
8087
8088
8089
8090
8091
8092
8093
8094
8095
8096
8097
8098
8099 INTEGER I, J, NPROCS, SRC, DEST
8100 LOGICAL USEIT
8101 REAL COMPVAL
8102
8103
8104 INTEGER ISEED(4)
8105
8106
8107 INTEGER IBTNPROCS
8108 REAL SBTRAN
8110
8111
8112
8114 src = rsrc * nprocs + csrc
8115 dest = myrow * nprocs + mycol
8116
8117
8118
8119 iseed(1) = mod( 1002 + testnum*5 + src*3, 4096 )
8120 iseed(2) = mod( 2027 + testnum*7 + src, 4096 )
8121 iseed(3) = mod( 1234 + testnum + src*3, 4096 )
8122 iseed(4) = mod( 4311 + testnum*10 + src*2, 4096 )
8123
8124
8125
8126
8127
8128 DO 100 j = 1, n
8129 DO 105 i = 1, m
8130 compval =
sbtran( iseed )
8131
8132
8133
8134
8135
8136 useit = .true.
8137 IF( uplo .EQ. 'U' ) THEN
8138 IF( m .LE. n ) THEN
8139 IF( diag .EQ. 'U' ) THEN
8140 IF( i .GE. j ) THEN
8141 useit = .false.
8142 END IF
8143 ELSE
8144 IF( i .GT. j ) THEN
8145 useit = .false.
8146 END IF
8147 END IF
8148 ELSE
8149 IF( diag .EQ. 'U' ) THEN
8150 IF( i .GE. m-n+j ) THEN
8151 useit = .false.
8152 END IF
8153 ELSE
8154 IF( i .GT. m-n+j ) THEN
8155 useit = .false.
8156 END IF
8157 END IF
8158 END IF
8159 ELSE IF( uplo .EQ. 'L' ) THEN
8160 IF( m .LE. n ) THEN
8161 IF( diag .EQ. 'U' ) THEN
8162 IF( j. ge. i+(n-m) ) THEN
8163 useit = .false.
8164 END IF
8165 ELSE
8166 IF( j .GT. i+(n-m) ) THEN
8167 useit = .false.
8168 END IF
8169 END IF
8170 ELSE
8171 IF( diag .EQ. 'U' ) THEN
8172 IF( j .GE. i ) THEN
8173 useit = .false.
8174 END IF
8175 ELSE
8176 IF( j .GT. i ) THEN
8177 useit = .false.
8178 END IF
8179 END IF
8180 END IF
8181 END IF
8182
8183
8184
8185
8186
8187 IF( useit ) THEN
8188 IF( a(i,j) .NE. compval ) THEN
8189 nerr = nerr + 1
8190 IF( nerr .LE. maxerr ) THEN
8191 erribuf(1, nerr) = testnum
8192 erribuf(2, nerr) = src
8193 erribuf(3, nerr) = dest
8194 erribuf(4, nerr) = i
8195 erribuf(5, nerr) = j
8196 erribuf(6, nerr) = 5
8197 errdbuf(1, nerr) = a(i, j)
8198 errdbuf(2, nerr) = compval
8199 END IF
8200 END IF
8201 END IF
8202 105 CONTINUE
8203 100 CONTINUE
8204 RETURN
8205
8206
8207
real function sbtran(iseed)
integer function ibtnprocs()