LAPACK  3.10.0
LAPACK: Linear Algebra PACKage

◆ zerrpo()

subroutine zerrpo ( character*3  PATH,
integer  NUNIT 
)

ZERRPO

ZERRPOX

Purpose:
 ZERRPO tests the error exits for the COMPLEX*16 routines
 for Hermitian positive definite matrices.
Parameters
[in]PATH
          PATH is CHARACTER*3
          The LAPACK path name for the routines to be tested.
[in]NUNIT
          NUNIT is INTEGER
          The unit number for output.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Purpose:
 ZERRPO tests the error exits for the COMPLEX*16 routines
 for Hermitian positive definite matrices.

 Note that this file is used only when the XBLAS are available,
 otherwise zerrpo.f defines this subroutine.
Parameters
[in]PATH
          PATH is CHARACTER*3
          The LAPACK path name for the routines to be tested.
[in]NUNIT
          NUNIT is INTEGER
          The unit number for output.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.

Definition at line 54 of file zerrpo.f.

55 *
56 * -- LAPACK test routine --
57 * -- LAPACK is a software package provided by Univ. of Tennessee, --
58 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
59 *
60 * .. Scalar Arguments ..
61  CHARACTER*3 PATH
62  INTEGER NUNIT
63 * ..
64 *
65 * =====================================================================
66 *
67 * .. Parameters ..
68  INTEGER NMAX
69  parameter( nmax = 4 )
70 * ..
71 * .. Local Scalars ..
72  CHARACTER*2 C2
73  INTEGER I, INFO, J
74  DOUBLE PRECISION ANRM, RCOND
75 * ..
76 * .. Local Arrays ..
77  DOUBLE PRECISION R( NMAX ), R1( NMAX ), R2( NMAX )
78  COMPLEX*16 A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
79  $ W( 2*NMAX ), X( NMAX )
80 * ..
81 * .. External Functions ..
82  LOGICAL LSAMEN
83  EXTERNAL lsamen
84 * ..
85 * .. External Subroutines ..
86  EXTERNAL alaesm, chkxer, zpbcon, zpbequ, zpbrfs, zpbtf2,
89  $ zpptrf, zpptri, zpptrs
90 * ..
91 * .. Scalars in Common ..
92  LOGICAL LERR, OK
93  CHARACTER*32 SRNAMT
94  INTEGER INFOT, NOUT
95 * ..
96 * .. Common blocks ..
97  COMMON / infoc / infot, nout, ok, lerr
98  COMMON / srnamc / srnamt
99 * ..
100 * .. Intrinsic Functions ..
101  INTRINSIC dble, dcmplx
102 * ..
103 * .. Executable Statements ..
104 *
105  nout = nunit
106  WRITE( nout, fmt = * )
107  c2 = path( 2: 3 )
108 *
109 * Set the variables to innocuous values.
110 *
111  DO 20 j = 1, nmax
112  DO 10 i = 1, nmax
113  a( i, j ) = dcmplx( 1.d0 / dble( i+j ),
114  $ -1.d0 / dble( i+j ) )
115  af( i, j ) = dcmplx( 1.d0 / dble( i+j ),
116  $ -1.d0 / dble( i+j ) )
117  10 CONTINUE
118  b( j ) = 0.d0
119  r1( j ) = 0.d0
120  r2( j ) = 0.d0
121  w( j ) = 0.d0
122  x( j ) = 0.d0
123  20 CONTINUE
124  anrm = 1.d0
125  ok = .true.
126 *
127 * Test error exits of the routines that use the Cholesky
128 * decomposition of a Hermitian positive definite matrix.
129 *
130  IF( lsamen( 2, c2, 'PO' ) ) THEN
131 *
132 * ZPOTRF
133 *
134  srnamt = 'ZPOTRF'
135  infot = 1
136  CALL zpotrf( '/', 0, a, 1, info )
137  CALL chkxer( 'ZPOTRF', infot, nout, lerr, ok )
138  infot = 2
139  CALL zpotrf( 'U', -1, a, 1, info )
140  CALL chkxer( 'ZPOTRF', infot, nout, lerr, ok )
141  infot = 4
142  CALL zpotrf( 'U', 2, a, 1, info )
143  CALL chkxer( 'ZPOTRF', infot, nout, lerr, ok )
144 *
145 * ZPOTF2
146 *
147  srnamt = 'ZPOTF2'
148  infot = 1
149  CALL zpotf2( '/', 0, a, 1, info )
150  CALL chkxer( 'ZPOTF2', infot, nout, lerr, ok )
151  infot = 2
152  CALL zpotf2( 'U', -1, a, 1, info )
153  CALL chkxer( 'ZPOTF2', infot, nout, lerr, ok )
154  infot = 4
155  CALL zpotf2( 'U', 2, a, 1, info )
156  CALL chkxer( 'ZPOTF2', infot, nout, lerr, ok )
157 *
158 * ZPOTRI
159 *
160  srnamt = 'ZPOTRI'
161  infot = 1
162  CALL zpotri( '/', 0, a, 1, info )
163  CALL chkxer( 'ZPOTRI', infot, nout, lerr, ok )
164  infot = 2
165  CALL zpotri( 'U', -1, a, 1, info )
166  CALL chkxer( 'ZPOTRI', infot, nout, lerr, ok )
167  infot = 4
168  CALL zpotri( 'U', 2, a, 1, info )
169  CALL chkxer( 'ZPOTRI', infot, nout, lerr, ok )
170 *
171 * ZPOTRS
172 *
173  srnamt = 'ZPOTRS'
174  infot = 1
175  CALL zpotrs( '/', 0, 0, a, 1, b, 1, info )
176  CALL chkxer( 'ZPOTRS', infot, nout, lerr, ok )
177  infot = 2
178  CALL zpotrs( 'U', -1, 0, a, 1, b, 1, info )
179  CALL chkxer( 'ZPOTRS', infot, nout, lerr, ok )
180  infot = 3
181  CALL zpotrs( 'U', 0, -1, a, 1, b, 1, info )
182  CALL chkxer( 'ZPOTRS', infot, nout, lerr, ok )
183  infot = 5
184  CALL zpotrs( 'U', 2, 1, a, 1, b, 2, info )
185  CALL chkxer( 'ZPOTRS', infot, nout, lerr, ok )
186  infot = 7
187  CALL zpotrs( 'U', 2, 1, a, 2, b, 1, info )
188  CALL chkxer( 'ZPOTRS', infot, nout, lerr, ok )
189 *
190 * ZPORFS
191 *
192  srnamt = 'ZPORFS'
193  infot = 1
194  CALL zporfs( '/', 0, 0, a, 1, af, 1, b, 1, x, 1, r1, r2, w, r,
195  $ info )
196  CALL chkxer( 'ZPORFS', infot, nout, lerr, ok )
197  infot = 2
198  CALL zporfs( 'U', -1, 0, a, 1, af, 1, b, 1, x, 1, r1, r2, w, r,
199  $ info )
200  CALL chkxer( 'ZPORFS', infot, nout, lerr, ok )
201  infot = 3
202  CALL zporfs( 'U', 0, -1, a, 1, af, 1, b, 1, x, 1, r1, r2, w, r,
203  $ info )
204  CALL chkxer( 'ZPORFS', infot, nout, lerr, ok )
205  infot = 5
206  CALL zporfs( 'U', 2, 1, a, 1, af, 2, b, 2, x, 2, r1, r2, w, r,
207  $ info )
208  CALL chkxer( 'ZPORFS', infot, nout, lerr, ok )
209  infot = 7
210  CALL zporfs( 'U', 2, 1, a, 2, af, 1, b, 2, x, 2, r1, r2, w, r,
211  $ info )
212  CALL chkxer( 'ZPORFS', infot, nout, lerr, ok )
213  infot = 9
214  CALL zporfs( 'U', 2, 1, a, 2, af, 2, b, 1, x, 2, r1, r2, w, r,
215  $ info )
216  CALL chkxer( 'ZPORFS', infot, nout, lerr, ok )
217  infot = 11
218  CALL zporfs( 'U', 2, 1, a, 2, af, 2, b, 2, x, 1, r1, r2, w, r,
219  $ info )
220  CALL chkxer( 'ZPORFS', infot, nout, lerr, ok )
221 *
222 * ZPOCON
223 *
224  srnamt = 'ZPOCON'
225  infot = 1
226  CALL zpocon( '/', 0, a, 1, anrm, rcond, w, r, info )
227  CALL chkxer( 'ZPOCON', infot, nout, lerr, ok )
228  infot = 2
229  CALL zpocon( 'U', -1, a, 1, anrm, rcond, w, r, info )
230  CALL chkxer( 'ZPOCON', infot, nout, lerr, ok )
231  infot = 4
232  CALL zpocon( 'U', 2, a, 1, anrm, rcond, w, r, info )
233  CALL chkxer( 'ZPOCON', infot, nout, lerr, ok )
234  infot = 5
235  CALL zpocon( 'U', 1, a, 1, -anrm, rcond, w, r, info )
236  CALL chkxer( 'ZPOCON', infot, nout, lerr, ok )
237 *
238 * ZPOEQU
239 *
240  srnamt = 'ZPOEQU'
241  infot = 1
242  CALL zpoequ( -1, a, 1, r1, rcond, anrm, info )
243  CALL chkxer( 'ZPOEQU', infot, nout, lerr, ok )
244  infot = 3
245  CALL zpoequ( 2, a, 1, r1, rcond, anrm, info )
246  CALL chkxer( 'ZPOEQU', infot, nout, lerr, ok )
247 *
248 * Test error exits of the routines that use the Cholesky
249 * decomposition of a Hermitian positive definite packed matrix.
250 *
251  ELSE IF( lsamen( 2, c2, 'PP' ) ) THEN
252 *
253 * ZPPTRF
254 *
255  srnamt = 'ZPPTRF'
256  infot = 1
257  CALL zpptrf( '/', 0, a, info )
258  CALL chkxer( 'ZPPTRF', infot, nout, lerr, ok )
259  infot = 2
260  CALL zpptrf( 'U', -1, a, info )
261  CALL chkxer( 'ZPPTRF', infot, nout, lerr, ok )
262 *
263 * ZPPTRI
264 *
265  srnamt = 'ZPPTRI'
266  infot = 1
267  CALL zpptri( '/', 0, a, info )
268  CALL chkxer( 'ZPPTRI', infot, nout, lerr, ok )
269  infot = 2
270  CALL zpptri( 'U', -1, a, info )
271  CALL chkxer( 'ZPPTRI', infot, nout, lerr, ok )
272 *
273 * ZPPTRS
274 *
275  srnamt = 'ZPPTRS'
276  infot = 1
277  CALL zpptrs( '/', 0, 0, a, b, 1, info )
278  CALL chkxer( 'ZPPTRS', infot, nout, lerr, ok )
279  infot = 2
280  CALL zpptrs( 'U', -1, 0, a, b, 1, info )
281  CALL chkxer( 'ZPPTRS', infot, nout, lerr, ok )
282  infot = 3
283  CALL zpptrs( 'U', 0, -1, a, b, 1, info )
284  CALL chkxer( 'ZPPTRS', infot, nout, lerr, ok )
285  infot = 6
286  CALL zpptrs( 'U', 2, 1, a, b, 1, info )
287  CALL chkxer( 'ZPPTRS', infot, nout, lerr, ok )
288 *
289 * ZPPRFS
290 *
291  srnamt = 'ZPPRFS'
292  infot = 1
293  CALL zpprfs( '/', 0, 0, a, af, b, 1, x, 1, r1, r2, w, r, info )
294  CALL chkxer( 'ZPPRFS', infot, nout, lerr, ok )
295  infot = 2
296  CALL zpprfs( 'U', -1, 0, a, af, b, 1, x, 1, r1, r2, w, r,
297  $ info )
298  CALL chkxer( 'ZPPRFS', infot, nout, lerr, ok )
299  infot = 3
300  CALL zpprfs( 'U', 0, -1, a, af, b, 1, x, 1, r1, r2, w, r,
301  $ info )
302  CALL chkxer( 'ZPPRFS', infot, nout, lerr, ok )
303  infot = 7
304  CALL zpprfs( 'U', 2, 1, a, af, b, 1, x, 2, r1, r2, w, r, info )
305  CALL chkxer( 'ZPPRFS', infot, nout, lerr, ok )
306  infot = 9
307  CALL zpprfs( 'U', 2, 1, a, af, b, 2, x, 1, r1, r2, w, r, info )
308  CALL chkxer( 'ZPPRFS', infot, nout, lerr, ok )
309 *
310 * ZPPCON
311 *
312  srnamt = 'ZPPCON'
313  infot = 1
314  CALL zppcon( '/', 0, a, anrm, rcond, w, r, info )
315  CALL chkxer( 'ZPPCON', infot, nout, lerr, ok )
316  infot = 2
317  CALL zppcon( 'U', -1, a, anrm, rcond, w, r, info )
318  CALL chkxer( 'ZPPCON', infot, nout, lerr, ok )
319  infot = 4
320  CALL zppcon( 'U', 1, a, -anrm, rcond, w, r, info )
321  CALL chkxer( 'ZPPCON', infot, nout, lerr, ok )
322 *
323 * ZPPEQU
324 *
325  srnamt = 'ZPPEQU'
326  infot = 1
327  CALL zppequ( '/', 0, a, r1, rcond, anrm, info )
328  CALL chkxer( 'ZPPEQU', infot, nout, lerr, ok )
329  infot = 2
330  CALL zppequ( 'U', -1, a, r1, rcond, anrm, info )
331  CALL chkxer( 'ZPPEQU', infot, nout, lerr, ok )
332 *
333 * Test error exits of the routines that use the Cholesky
334 * decomposition of a Hermitian positive definite band matrix.
335 *
336  ELSE IF( lsamen( 2, c2, 'PB' ) ) THEN
337 *
338 * ZPBTRF
339 *
340  srnamt = 'ZPBTRF'
341  infot = 1
342  CALL zpbtrf( '/', 0, 0, a, 1, info )
343  CALL chkxer( 'ZPBTRF', infot, nout, lerr, ok )
344  infot = 2
345  CALL zpbtrf( 'U', -1, 0, a, 1, info )
346  CALL chkxer( 'ZPBTRF', infot, nout, lerr, ok )
347  infot = 3
348  CALL zpbtrf( 'U', 1, -1, a, 1, info )
349  CALL chkxer( 'ZPBTRF', infot, nout, lerr, ok )
350  infot = 5
351  CALL zpbtrf( 'U', 2, 1, a, 1, info )
352  CALL chkxer( 'ZPBTRF', infot, nout, lerr, ok )
353 *
354 * ZPBTF2
355 *
356  srnamt = 'ZPBTF2'
357  infot = 1
358  CALL zpbtf2( '/', 0, 0, a, 1, info )
359  CALL chkxer( 'ZPBTF2', infot, nout, lerr, ok )
360  infot = 2
361  CALL zpbtf2( 'U', -1, 0, a, 1, info )
362  CALL chkxer( 'ZPBTF2', infot, nout, lerr, ok )
363  infot = 3
364  CALL zpbtf2( 'U', 1, -1, a, 1, info )
365  CALL chkxer( 'ZPBTF2', infot, nout, lerr, ok )
366  infot = 5
367  CALL zpbtf2( 'U', 2, 1, a, 1, info )
368  CALL chkxer( 'ZPBTF2', infot, nout, lerr, ok )
369 *
370 * ZPBTRS
371 *
372  srnamt = 'ZPBTRS'
373  infot = 1
374  CALL zpbtrs( '/', 0, 0, 0, a, 1, b, 1, info )
375  CALL chkxer( 'ZPBTRS', infot, nout, lerr, ok )
376  infot = 2
377  CALL zpbtrs( 'U', -1, 0, 0, a, 1, b, 1, info )
378  CALL chkxer( 'ZPBTRS', infot, nout, lerr, ok )
379  infot = 3
380  CALL zpbtrs( 'U', 1, -1, 0, a, 1, b, 1, info )
381  CALL chkxer( 'ZPBTRS', infot, nout, lerr, ok )
382  infot = 4
383  CALL zpbtrs( 'U', 0, 0, -1, a, 1, b, 1, info )
384  CALL chkxer( 'ZPBTRS', infot, nout, lerr, ok )
385  infot = 6
386  CALL zpbtrs( 'U', 2, 1, 1, a, 1, b, 1, info )
387  CALL chkxer( 'ZPBTRS', infot, nout, lerr, ok )
388  infot = 8
389  CALL zpbtrs( 'U', 2, 0, 1, a, 1, b, 1, info )
390  CALL chkxer( 'ZPBTRS', infot, nout, lerr, ok )
391 *
392 * ZPBRFS
393 *
394  srnamt = 'ZPBRFS'
395  infot = 1
396  CALL zpbrfs( '/', 0, 0, 0, a, 1, af, 1, b, 1, x, 1, r1, r2, w,
397  $ r, info )
398  CALL chkxer( 'ZPBRFS', infot, nout, lerr, ok )
399  infot = 2
400  CALL zpbrfs( 'U', -1, 0, 0, a, 1, af, 1, b, 1, x, 1, r1, r2, w,
401  $ r, info )
402  CALL chkxer( 'ZPBRFS', infot, nout, lerr, ok )
403  infot = 3
404  CALL zpbrfs( 'U', 1, -1, 0, a, 1, af, 1, b, 1, x, 1, r1, r2, w,
405  $ r, info )
406  CALL chkxer( 'ZPBRFS', infot, nout, lerr, ok )
407  infot = 4
408  CALL zpbrfs( 'U', 0, 0, -1, a, 1, af, 1, b, 1, x, 1, r1, r2, w,
409  $ r, info )
410  CALL chkxer( 'ZPBRFS', infot, nout, lerr, ok )
411  infot = 6
412  CALL zpbrfs( 'U', 2, 1, 1, a, 1, af, 2, b, 2, x, 2, r1, r2, w,
413  $ r, info )
414  CALL chkxer( 'ZPBRFS', infot, nout, lerr, ok )
415  infot = 8
416  CALL zpbrfs( 'U', 2, 1, 1, a, 2, af, 1, b, 2, x, 2, r1, r2, w,
417  $ r, info )
418  CALL chkxer( 'ZPBRFS', infot, nout, lerr, ok )
419  infot = 10
420  CALL zpbrfs( 'U', 2, 0, 1, a, 1, af, 1, b, 1, x, 2, r1, r2, w,
421  $ r, info )
422  CALL chkxer( 'ZPBRFS', infot, nout, lerr, ok )
423  infot = 12
424  CALL zpbrfs( 'U', 2, 0, 1, a, 1, af, 1, b, 2, x, 1, r1, r2, w,
425  $ r, info )
426  CALL chkxer( 'ZPBRFS', infot, nout, lerr, ok )
427 *
428 * ZPBCON
429 *
430  srnamt = 'ZPBCON'
431  infot = 1
432  CALL zpbcon( '/', 0, 0, a, 1, anrm, rcond, w, r, info )
433  CALL chkxer( 'ZPBCON', infot, nout, lerr, ok )
434  infot = 2
435  CALL zpbcon( 'U', -1, 0, a, 1, anrm, rcond, w, r, info )
436  CALL chkxer( 'ZPBCON', infot, nout, lerr, ok )
437  infot = 3
438  CALL zpbcon( 'U', 1, -1, a, 1, anrm, rcond, w, r, info )
439  CALL chkxer( 'ZPBCON', infot, nout, lerr, ok )
440  infot = 5
441  CALL zpbcon( 'U', 2, 1, a, 1, anrm, rcond, w, r, info )
442  CALL chkxer( 'ZPBCON', infot, nout, lerr, ok )
443  infot = 6
444  CALL zpbcon( 'U', 1, 0, a, 1, -anrm, rcond, w, r, info )
445  CALL chkxer( 'ZPBCON', infot, nout, lerr, ok )
446 *
447 * ZPBEQU
448 *
449  srnamt = 'ZPBEQU'
450  infot = 1
451  CALL zpbequ( '/', 0, 0, a, 1, r1, rcond, anrm, info )
452  CALL chkxer( 'ZPBEQU', infot, nout, lerr, ok )
453  infot = 2
454  CALL zpbequ( 'U', -1, 0, a, 1, r1, rcond, anrm, info )
455  CALL chkxer( 'ZPBEQU', infot, nout, lerr, ok )
456  infot = 3
457  CALL zpbequ( 'U', 1, -1, a, 1, r1, rcond, anrm, info )
458  CALL chkxer( 'ZPBEQU', infot, nout, lerr, ok )
459  infot = 5
460  CALL zpbequ( 'U', 2, 1, a, 1, r1, rcond, anrm, info )
461  CALL chkxer( 'ZPBEQU', infot, nout, lerr, ok )
462  END IF
463 *
464 * Print a summary line.
465 *
466  CALL alaesm( path, ok, nout )
467 *
468  RETURN
469 *
470 * End of ZERRPO
471 *
subroutine chkxer(SRNAMT, INFOT, NOUT, LERR, OK)
Definition: cblat2.f:3196
logical function lsamen(N, CA, CB)
LSAMEN
Definition: lsamen.f:74
subroutine alaesm(PATH, OK, NOUT)
ALAESM
Definition: alaesm.f:63
subroutine zpbcon(UPLO, N, KD, AB, LDAB, ANORM, RCOND, WORK, RWORK, INFO)
ZPBCON
Definition: zpbcon.f:133
subroutine zpbtf2(UPLO, N, KD, AB, LDAB, INFO)
ZPBTF2 computes the Cholesky factorization of a symmetric/Hermitian positive definite band matrix (un...
Definition: zpbtf2.f:142
subroutine zppcon(UPLO, N, AP, ANORM, RCOND, WORK, RWORK, INFO)
ZPPCON
Definition: zppcon.f:118
subroutine zpptrs(UPLO, N, NRHS, AP, B, LDB, INFO)
ZPPTRS
Definition: zpptrs.f:108
subroutine zppequ(UPLO, N, AP, S, SCOND, AMAX, INFO)
ZPPEQU
Definition: zppequ.f:117
subroutine zpbrfs(UPLO, N, KD, NRHS, AB, LDAB, AFB, LDAFB, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO)
ZPBRFS
Definition: zpbrfs.f:189
subroutine zpptri(UPLO, N, AP, INFO)
ZPPTRI
Definition: zpptri.f:93
subroutine zpbtrf(UPLO, N, KD, AB, LDAB, INFO)
ZPBTRF
Definition: zpbtrf.f:142
subroutine zpptrf(UPLO, N, AP, INFO)
ZPPTRF
Definition: zpptrf.f:119
subroutine zpprfs(UPLO, N, NRHS, AP, AFP, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO)
ZPPRFS
Definition: zpprfs.f:171
subroutine zpbequ(UPLO, N, KD, AB, LDAB, S, SCOND, AMAX, INFO)
ZPBEQU
Definition: zpbequ.f:130
subroutine zpbtrs(UPLO, N, KD, NRHS, AB, LDAB, B, LDB, INFO)
ZPBTRS
Definition: zpbtrs.f:121
subroutine zpotf2(UPLO, N, A, LDA, INFO)
ZPOTF2 computes the Cholesky factorization of a symmetric/Hermitian positive definite matrix (unblock...
Definition: zpotf2.f:109
subroutine zpotrs(UPLO, N, NRHS, A, LDA, B, LDB, INFO)
ZPOTRS
Definition: zpotrs.f:110
subroutine zpocon(UPLO, N, A, LDA, ANORM, RCOND, WORK, RWORK, INFO)
ZPOCON
Definition: zpocon.f:121
subroutine zpoequ(N, A, LDA, S, SCOND, AMAX, INFO)
ZPOEQU
Definition: zpoequ.f:113
subroutine zporfs(UPLO, N, NRHS, A, LDA, AF, LDAF, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO)
ZPORFS
Definition: zporfs.f:183
subroutine zpotri(UPLO, N, A, LDA, INFO)
ZPOTRI
Definition: zpotri.f:95
subroutine zpotrf(UPLO, N, A, LDA, INFO)
ZPOTRF VARIANT: right looking block version of the algorithm, calling Level 3 BLAS.
Definition: zpotrf.f:102
Here is the call graph for this function:
Here is the caller graph for this function: