LAPACK  3.8.0
LAPACK: Linear Algebra PACKage

◆ derrpo()

subroutine derrpo ( character*3  PATH,
integer  NUNIT 
)

DERRPO

DERRPOX

Purpose:
 DERRPO tests the error exits for the DOUBLE PRECISION routines
 for symmetric 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.
Date
December 2016
Purpose:
 DERRPO tests the error exits for the DOUBLE PRECISION routines
 for symmetric positive definite matrices.

 Note that this file is used only when the XBLAS are available,
 otherwise derrpo.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.
Date
December 2016

Definition at line 57 of file derrpo.f.

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