59 INTEGER totmem, zplxsz, nin
60 parameter( totmem = 2000000, zplxsz = 16, nin = 11 )
62 parameter( memsiz = totmem / zplxsz )
66 CHARACTER*80 summry, usrinfo
67 INTEGER context, iam, info, isieee, maxnodes, nnocheck,
68 $ nout, npassed, nprocs, nskipped, ntests
73 COMPLEX*16 mem( memsiz )
83 $ igamn2d, pdlachkieee, pdlasnbt,
pzgsepreq
89 CALL blacs_pinfo( iam, nprocs )
96 OPEN( unit = nin, file = 'sep.dat
', STATUS = 'old
' )
97 READ( NIN, FMT = * )SUMMRY
102 READ( NIN, FMT = 9999 )USRINFO
106 READ( NIN, FMT = * )SUMMRY
107 READ( NIN, FMT = * )NOUT
108.NE..AND..NE.
IF( NOUT0 NOUT6 )
109 $ OPEN( NOUT, FILE = SUMMRY, STATUS = 'unknown
' )
110 READ( NIN, FMT = * )MAXNODES
111 READ( NIN, FMT = * )HETERO
114.LT.
IF( NPROCS1 ) THEN
115 CALL BLACS_SETUP( IAM, MAXNODES )
119 CALL BLACS_GET( -1, 0, CONTEXT )
120 CALL BLACS_GRIDINIT( CONTEXT, 'r
', 1, NPROCS )
122 CALL PDLASNBT( ISIEEE )
124 CALL IGAMN2D( CONTEXT, 'a
', ' ', 1, 1, ISIEEE, 1, 1, 1, -1, -1,
127.NE.
IF( ( ISIEEE0 ) ) THEN
129 WRITE( NOUT, FMT = 9998 )
130 WRITE( NOUT, FMT = 9997 )
131 WRITE( NOUT, FMT = 9996 )
132 WRITE( NOUT, FMT = 9995 )
133 WRITE( NOUT, FMT = 9994 )
134 WRITE( NOUT, FMT = 9993 )
135 WRITE( NOUT, FMT = 9992 )
136 WRITE( NOUT, FMT = 9991 )
137 WRITE( NOUT, FMT = 9990 )
140 CALL PDLACHKIEEE( ISIEEE, DLAMCH( 'o
' ), DLAMCH( 'u
' ) )
142 CALL IGAMN2D( CONTEXT, 'a
', ' ', 1, 1, ISIEEE, 1, 1, 1, -1, -1,
145.EQ.
IF( ISIEEE0 ) THEN
147 WRITE( NOUT, FMT = 9989 )
148 WRITE( NOUT, FMT = 9988 )
149 WRITE( NOUT, FMT = 9987 )
155 WRITE( NOUT, FMT = 9986 )
160 WRITE( NOUT, FMT = 9999 )
161 $ 'scalapack hermitian eigendecomposition routines.
'
162 WRITE( NOUT, FMT = 9999 )USRINFO
163 WRITE( NOUT, FMT = 9999 )' '
164 WRITE( NOUT, FMT = 9999 )'running tests of
the parallel
' //
165 $ 'generalized
' // 'hermitian eigenvalue routine:
pzhegvx.
'
166 WRITE( NOUT, FMT = 9999 )'a scaled residual check,
' //
168 WRITE( NOUT, FMT = 9999 )
169 WRITE( NOUT, FMT = 9999 )'an explanation of
the ' //
170 $ 'input/output parameters follows:
'
171 WRITE( NOUT, FMT = 9999 )'result : passed; or
' //
172 $ 'an indication of which eigen request test failed
'
173 WRITE( NOUT, FMT = 9999 )
174 $ 'n :
the number of rows and columns
' //
176 WRITE( NOUT, FMT = 9999 )
177 $ 'p :
the number of process rows.
'
178 WRITE( NOUT, FMT = 9999 )
179 $ 'q :
the number of process columns.
'
180 WRITE( NOUT, FMT = 9999 )
181 $ 'nb :
the size of
the square blocks
' //
183 WRITE( NOUT, FMT = 9999 )
184 $ 'thresh :
If a residual
value is less
' //
185 $ 'than thresh, result is flagged as passed.
'
186 WRITE( NOUT, FMT = 9999 )
187 $ ' :
the qtq
norm is allowed to exceed thresh
' //
188 $ ' for those eigenvectors
'
189 WRITE( NOUT, FMT = 9999 )' : which could not be
' //
190 $ 'reorthogonalized
for lack of workspace.
'
191 WRITE( NOUT, FMT = 9999 )
193 WRITE( NOUT, FMT = 9999 )
194 $ 'ibtype : generalized eigenproblem type
' //
196 WRITE( NOUT, FMT = 9999 )'sub : subtests
' //
198 WRITE( NOUT, FMT = 9999 )'chk :
the scaled residual
'
199 WRITE( NOUT, FMT = 9999 )' '
208 WRITE( NOUT, FMT = 9979 )
209 WRITE( NOUT, FMT = 9978 )
219 CALL PZGSEPREQ( NIN, MEM, MEMSIZ, NOUT, ISEED, NTESTS, NSKIPPED,
220 $ NNOCHECK, NPASSED, INFO )
225 WRITE( NOUT, FMT = 9985 )NTESTS
226 WRITE( NOUT, FMT = 9984 )NPASSED
227 WRITE( NOUT, FMT = 9983 )NNOCHECK
228 WRITE( NOUT, FMT = 9982 )NSKIPPED
229 WRITE( NOUT, FMT = 9981 )NTESTS - NPASSED - NSKIPPED -
231 WRITE( NOUT, FMT = * )
232 WRITE( NOUT, FMT = * )
233 WRITE( NOUT, FMT = 9980 )
245.NE..AND..NE.
IF( NOUT6 NOUT0 )
249 CALL BLACS_GRIDEXIT( CONTEXT )
256 9998 FORMAT( ' i am about to check to make sure that overflow
' )
257 9997 FORMAT( ' is handled in
the ieee default manner.
if this
' )
258 9996 FORMAT( ' is
the last output you see, you should assume
' )
259 9995 FORMAT( ' that overflow caused a floating point exception.
' )
260 9994 FORMAT( ' in that case, we recommend that you add -dno_ieee
' )
261 9993 FORMAT( ' to
the cdefs line in slmake.inc.
' )
262 9992 FORMAT( ' alternatively, you could set cdefs in slmake.inc
' )
263 9991 FORMAT( ' to enable
the default ieee behaviour, however, this
' )
264 9990 FORMAT( ' may result in good or very bad performance.
' )
265 9989 FORMAT( ' either signed zeroes or signed infinities
' )
266 9988 FORMAT( ' work incorrectly or your system. change your
' )
267 9987 FORMAT( ' slmake.inc as suggested above.
' )
269 9986 FORMAT( ' your system appears to handle ieee overflow.
' )
271 9985 FORMAT( 'finished
', I6, ' tests, with
the following results:
' )
272 9984 FORMAT( I5, ' completed and passed residual checks.
' )
273 9983 FORMAT( I5, ' tests completed without checking.
' )
274 9982 FORMAT( I5, ' tests skipped
for lack of memory.
' )
275 9981 FORMAT( I5, ' tests completed and failed.
' )
276 9980 FORMAT( 'end of tests.
' )
277 9979 FORMAT( ' n nb p q typ sub wall cpu
',
279 9978 FORMAT( ' ----- --- --- --- --- ------ --- -------- --------
',
280 $ ' --------- -----
' )
if(complex_arithmetic) id
end diagonal values have been computed in the(sparse) matrix id.SOL
norm(diag(diag(diag(inv(mat))) -id.SOL), 2) % destroy mumps instance id.JOB
double precision function dlamch(cmach)
DLAMCH
subroutine blacs_gridinit(cntxt, c, nprow, npcol)
subroutine blacs_gridexit(cntxt)
for(i8=*sizetab-1;i8 >=0;i8--)
void split(mapping_t *, PORD_INT, PORD_INT, PORD_INT, PORD_INT *, PORD_INT *, FLOAT *, PORD_INT)
subroutine pzgsepreq(nin, mem, memsize, nout, iseed, ntests, nskipped, nnocheck, npassed, info)
subroutine pzgseptst(desca, uplo, n, mattype, ibtype, subtests, thresh, order, abstol, iseed, a, copya, b, copyb, z, lda, win, wnew, ifail, iclustr, gap, iprepad, ipostpad, work, lwork, rwork, lrwork, iwork, liwork, nout, info)
subroutine pzhegvx(ibtype, jobz, range, uplo, n, a, ia, ja, desca, b, ib, jb, descb, vl, vu, il, iu, abstol, m, nz, w, orfac, z, iz, jz, descz, work, lwork, rwork, lrwork, iwork, liwork, ifail, iclustr, gap, info)