3 * =========== DOCUMENTATION ===========
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
11 * SUBROUTINE ZGET23( COMP, ISRT, BALANC, JTYPE, THRESH, ISEED,
12 * NOUNIT, N, A, LDA, H, W, W1, VL, LDVL, VR,
13 * LDVR, LRE, LDLRE, RCONDV, RCNDV1, RCDVIN,
14 * RCONDE, RCNDE1, RCDEIN, SCALE, SCALE1, RESULT,
15 * WORK, LWORK, RWORK, INFO )
17 * .. Scalar Arguments ..
20 * INTEGER INFO, ISRT, JTYPE, LDA, LDLRE, LDVL, LDVR,
22 * DOUBLE PRECISION THRESH
24 * .. Array Arguments ..
26 * DOUBLE PRECISION RCDEIN( * ), RCDVIN( * ), RCNDE1( * ),
27 * $ RCNDV1( * ), RCONDE( * ), RCONDV( * ),
28 * $ RESULT( 11 ), RWORK( * ), SCALE( * ),
30 * COMPLEX*16 A( LDA, * ), H( LDA, * ), LRE( LDLRE, * ),
31 * $ VL( LDVL, * ), VR( LDVR, * ), W( * ), W1( * ),
41 *> ZGET23 checks the nonsymmetric eigenvalue problem driver CGEEVX.
42 *> If COMP = .FALSE., the first 8 of the following tests will be
43 *> performed on the input matrix A, and also test 9 if LWORK is
44 *> sufficiently large.
45 *> if COMP is .TRUE. all 11 tests will be performed.
47 *> (1) | A * VR - VR * W | / ( n |A| ulp )
49 *> Here VR is the matrix of unit right eigenvectors.
50 *> W is a diagonal matrix with diagonal entries W(j).
52 *> (2) | A**H * VL - VL * W**H | / ( n |A| ulp )
54 *> Here VL is the matrix of unit left eigenvectors, A**H is the
55 *> conjugate transpose of A, and W is as above.
57 *> (3) | |VR(i)| - 1 | / ulp and largest component real
59 *> VR(i) denotes the i-th column of VR.
61 *> (4) | |VL(i)| - 1 | / ulp and largest component real
63 *> VL(i) denotes the i-th column of VL.
65 *> (5) 0 if W(full) = W(partial), 1/ulp otherwise
67 *> W(full) denotes the eigenvalues computed when VR, VL, RCONDV
68 *> and RCONDE are also computed, and W(partial) denotes the
69 *> eigenvalues computed when only some of VR, VL, RCONDV, and
70 *> RCONDE are computed.
72 *> (6) 0 if VR(full) = VR(partial), 1/ulp otherwise
74 *> VR(full) denotes the right eigenvectors computed when VL, RCONDV
75 *> and RCONDE are computed, and VR(partial) denotes the result
76 *> when only some of VL and RCONDV are computed.
78 *> (7) 0 if VL(full) = VL(partial), 1/ulp otherwise
80 *> VL(full) denotes the left eigenvectors computed when VR, RCONDV
81 *> and RCONDE are computed, and VL(partial) denotes the result
82 *> when only some of VR and RCONDV are computed.
84 *> (8) 0 if SCALE, ILO, IHI, ABNRM (full) =
85 *> SCALE, ILO, IHI, ABNRM (partial)
88 *> SCALE, ILO, IHI and ABNRM describe how the matrix is balanced.
89 *> (full) is when VR, VL, RCONDE and RCONDV are also computed, and
90 *> (partial) is when some are not computed.
92 *> (9) 0 if RCONDV(full) = RCONDV(partial), 1/ulp otherwise
94 *> RCONDV(full) denotes the reciprocal condition numbers of the
95 *> right eigenvectors computed when VR, VL and RCONDE are also
96 *> computed. RCONDV(partial) denotes the reciprocal condition
97 *> numbers when only some of VR, VL and RCONDE are computed.
99 *> (10) |RCONDV - RCDVIN| / cond(RCONDV)
101 *> RCONDV is the reciprocal right eigenvector condition number
102 *> computed by ZGEEVX and RCDVIN (the precomputed true value)
103 *> is supplied as input. cond(RCONDV) is the condition number of
104 *> RCONDV, and takes errors in computing RCONDV into account, so
105 *> that the resulting quantity should be O(ULP). cond(RCONDV) is
106 *> essentially given by norm(A)/RCONDE.
108 *> (11) |RCONDE - RCDEIN| / cond(RCONDE)
110 *> RCONDE is the reciprocal eigenvalue condition number
111 *> computed by ZGEEVX and RCDEIN (the precomputed true value)
112 *> is supplied as input. cond(RCONDE) is the condition number
113 *> of RCONDE, and takes errors in computing RCONDE into account,
114 *> so that the resulting quantity should be O(ULP). cond(RCONDE)
115 *> is essentially given by norm(A)/RCONDV.
124 *> COMP describes which input tests to perform:
125 *> = .FALSE. if the computed condition numbers are not to
126 *> be tested against RCDVIN and RCDEIN
127 *> = .TRUE. if they are to be compared
133 *> If COMP = .TRUE., ISRT indicates in how the eigenvalues
134 *> corresponding to values in RCDVIN and RCDEIN are ordered:
135 *> = 0 means the eigenvalues are sorted by
136 *> increasing real part
137 *> = 1 means the eigenvalues are sorted by
138 *> increasing imaginary part
139 *> If COMP = .FALSE., ISRT is not referenced.
144 *> BALANC is CHARACTER
145 *> Describes the balancing option to be tested.
146 *> = 'N' for no permuting or diagonal scaling
147 *> = 'P' for permuting but no diagonal scaling
148 *> = 'S' for no permuting but diagonal scaling
149 *> = 'B' for permuting and diagonal scaling
155 *> Type of input matrix. Used to label output if error occurs.
160 *> THRESH is DOUBLE PRECISION
161 *> A test will count as "failed" if the "error", computed as
162 *> described above, exceeds THRESH. Note that the error
163 *> is scaled to be O(1), so THRESH should be a reasonably
164 *> small multiple of 1, e.g., 10 or 100. In particular,
165 *> it should not depend on the precision (single vs. double)
166 *> or the size of the matrix. It must be at least zero.
171 *> ISEED is INTEGER array, dimension (4)
172 *> If COMP = .FALSE., the random number generator seed
173 *> used to produce matrix.
174 *> If COMP = .TRUE., ISEED(1) = the number of the example.
175 *> Used to label output if error occurs.
181 *> The FORTRAN unit number for printing out error messages
182 *> (e.g., if a routine returns INFO not equal to 0.)
188 *> The dimension of A. N must be at least 0.
193 *> A is COMPLEX*16 array, dimension (LDA,N)
194 *> Used to hold the matrix whose eigenvalues are to be
201 *> The leading dimension of A, and H. LDA must be at
202 *> least 1 and at least N.
207 *> H is COMPLEX*16 array, dimension (LDA,N)
208 *> Another copy of the test matrix A, modified by ZGEEVX.
213 *> W is COMPLEX*16 array, dimension (N)
214 *> Contains the eigenvalues of A.
219 *> W1 is COMPLEX*16 array, dimension (N)
220 *> Like W, this array contains the eigenvalues of A,
221 *> but those computed when ZGEEVX only computes a partial
222 *> eigendecomposition, i.e. not the eigenvalues and left
223 *> and right eigenvectors.
228 *> VL is COMPLEX*16 array, dimension (LDVL,N)
229 *> VL holds the computed left eigenvectors.
235 *> Leading dimension of VL. Must be at least max(1,N).
240 *> VR is COMPLEX*16 array, dimension (LDVR,N)
241 *> VR holds the computed right eigenvectors.
247 *> Leading dimension of VR. Must be at least max(1,N).
252 *> LRE is COMPLEX*16 array, dimension (LDLRE,N)
253 *> LRE holds the computed right or left eigenvectors.
259 *> Leading dimension of LRE. Must be at least max(1,N).
262 *> \param[out] RCONDV
264 *> RCONDV is DOUBLE PRECISION array, dimension (N)
265 *> RCONDV holds the computed reciprocal condition numbers
269 *> \param[out] RCNDV1
271 *> RCNDV1 is DOUBLE PRECISION array, dimension (N)
272 *> RCNDV1 holds more computed reciprocal condition numbers
278 *> RCDVIN is DOUBLE PRECISION array, dimension (N)
279 *> When COMP = .TRUE. RCDVIN holds the precomputed reciprocal
280 *> condition numbers for eigenvectors to be compared with
284 *> \param[out] RCONDE
286 *> RCONDE is DOUBLE PRECISION array, dimension (N)
287 *> RCONDE holds the computed reciprocal condition numbers
291 *> \param[out] RCNDE1
293 *> RCNDE1 is DOUBLE PRECISION array, dimension (N)
294 *> RCNDE1 holds more computed reciprocal condition numbers
300 *> RCDEIN is DOUBLE PRECISION array, dimension (N)
301 *> When COMP = .TRUE. RCDEIN holds the precomputed reciprocal
302 *> condition numbers for eigenvalues to be compared with
308 *> SCALE is DOUBLE PRECISION array, dimension (N)
309 *> Holds information describing balancing of matrix.
312 *> \param[out] SCALE1
314 *> SCALE1 is DOUBLE PRECISION array, dimension (N)
315 *> Holds information describing balancing of matrix.
318 *> \param[out] RESULT
320 *> RESULT is DOUBLE PRECISION array, dimension (11)
321 *> The values computed by the 11 tests described above.
322 *> The values are currently limited to 1/ulp, to avoid
328 *> WORK is COMPLEX*16 array, dimension (LWORK)
334 *> The number of entries in WORK. This must be at least
335 *> 2*N, and 2*N+N**2 if tests 9, 10 or 11 are to be performed.
340 *> RWORK is DOUBLE PRECISION array, dimension (2*N)
346 *> If 0, successful exit.
347 *> If <0, input parameter -INFO had an incorrect value.
348 *> If >0, ZGEEVX returned an error code, the absolute
349 *> value of which is returned.
355 *> \author Univ. of Tennessee
356 *> \author Univ. of California Berkeley
357 *> \author Univ. of Colorado Denver
360 *> \date November 2011
362 *> \ingroup complex16_eig
364 * =====================================================================
365 SUBROUTINE ZGET23( COMP, ISRT, BALANC, JTYPE, THRESH, ISEED,
366 $ NOUNIT, N, A, LDA, H, W, W1, VL, LDVL, VR,
367 $ LDVR, LRE, LDLRE, RCONDV, RCNDV1, RCDVIN,
368 $ RCONDE, RCNDE1, RCDEIN, SCALE, SCALE1, RESULT,
369 $ WORK, LWORK, RWORK, INFO )
371 * -- LAPACK test routine (version 3.4.0) --
372 * -- LAPACK is a software package provided by Univ. of Tennessee, --
373 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
376 * .. Scalar Arguments ..
379 INTEGER INFO, ISRT, JTYPE, LDA, LDLRE, LDVL, LDVR,
381 DOUBLE PRECISION THRESH
383 * .. Array Arguments ..
385 DOUBLE PRECISION RCDEIN( * ), RCDVIN( * ), RCNDE1( * ),
386 $ RCNDV1( * ), RCONDE( * ), RCONDV( * ),
387 $ RESULT( 11 ), RWORK( * ), SCALE( * ),
389 COMPLEX*16 A( LDA, * ), H( LDA, * ), LRE( LDLRE, * ),
390 $ VL( LDVL, * ), VR( LDVR, * ), W( * ), W1( * ),
394 * =====================================================================
397 DOUBLE PRECISION ZERO, ONE, TWO
398 PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0, TWO = 2.0D0 )
399 DOUBLE PRECISION EPSIN
400 PARAMETER ( EPSIN = 5.9605D-8 )
402 * .. Local Scalars ..
405 INTEGER I, IHI, IHI1, IINFO, ILO, ILO1, ISENS, ISENSM,
407 DOUBLE PRECISION ABNRM, ABNRM1, EPS, SMLNUM, TNRM, TOL, TOLIN,
408 $ ULP, ULPINV, V, VMAX, VMX, VRICMP, VRIMIN,
414 DOUBLE PRECISION RES( 2 )
417 * .. External Functions ..
419 DOUBLE PRECISION DLAMCH, DZNRM2
420 EXTERNAL LSAME, DLAMCH, DZNRM2
422 * .. External Subroutines ..
423 EXTERNAL XERBLA, ZGEEVX, ZGET22, ZLACPY
425 * .. Intrinsic Functions ..
426 INTRINSIC ABS, DBLE, DIMAG, MAX, MIN
428 * .. Data statements ..
429 DATA SENS / 'N', 'V' /
431 * .. Executable Statements ..
435 NOBAL = LSAME( BALANC, 'N' )
436 BALOK = NOBAL .OR. LSAME( BALANC, 'P' ) .OR.
437 $ LSAME( BALANC, 'S' ) .OR. LSAME( BALANC, 'B' )
439 IF( ISRT.NE.0 .AND. ISRT.NE.1 ) THEN
441 ELSE IF( .NOT.BALOK ) THEN
443 ELSE IF( THRESH.LT.ZERO ) THEN
445 ELSE IF( NOUNIT.LE.0 ) THEN
447 ELSE IF( N.LT.0 ) THEN
449 ELSE IF( LDA.LT.1 .OR. LDA.LT.N ) THEN
451 ELSE IF( LDVL.LT.1 .OR. LDVL.LT.N ) THEN
453 ELSE IF( LDVR.LT.1 .OR. LDVR.LT.N ) THEN
455 ELSE IF( LDLRE.LT.1 .OR. LDLRE.LT.N ) THEN
457 ELSE IF( LWORK.LT.2*N .OR. ( COMP .AND. LWORK.LT.2*N+N*N ) ) THEN
462 CALL XERBLA( 'ZGET23', -INFO )
466 * Quick return if nothing to do
475 * More Important constants
477 ULP = DLAMCH( 'Precision' )
478 SMLNUM = DLAMCH( 'S' )
481 * Compute eigenvalues and eigenvectors, and test them
483 IF( LWORK.GE.2*N+N*N ) THEN
490 CALL ZLACPY( 'F', N, N, A, LDA, H, LDA )
491 CALL ZGEEVX( BALANC, 'V', 'V', SENSE, N, H, LDA, W, VL, LDVL, VR,
492 $ LDVR, ILO, IHI, SCALE, ABNRM, RCONDE, RCONDV, WORK,
493 $ LWORK, RWORK, IINFO )
494 IF( IINFO.NE.0 ) THEN
496 IF( JTYPE.NE.22 ) THEN
497 WRITE( NOUNIT, FMT = 9998 )'ZGEEVX1', IINFO, N, JTYPE,
500 WRITE( NOUNIT, FMT = 9999 )'ZGEEVX1', IINFO, N, ISEED( 1 )
508 CALL ZGET22( 'N', 'N', 'N', N, A, LDA, VR, LDVR, W, WORK, RWORK,
510 RESULT( 1 ) = RES( 1 )
514 CALL ZGET22( 'C', 'N', 'C', N, A, LDA, VL, LDVL, W, WORK, RWORK,
516 RESULT( 2 ) = RES( 1 )
521 TNRM = DZNRM2( N, VR( 1, J ), 1 )
522 RESULT( 3 ) = MAX( RESULT( 3 ),
523 $ MIN( ULPINV, ABS( TNRM-ONE ) / ULP ) )
527 VTST = ABS( VR( JJ, J ) )
530 IF( DIMAG( VR( JJ, J ) ).EQ.ZERO .AND.
531 $ ABS( DBLE( VR( JJ, J ) ) ).GT.VRMX )
532 $ VRMX = ABS( DBLE( VR( JJ, J ) ) )
534 IF( VRMX / VMX.LT.ONE-TWO*ULP )
535 $ RESULT( 3 ) = ULPINV
541 TNRM = DZNRM2( N, VL( 1, J ), 1 )
542 RESULT( 4 ) = MAX( RESULT( 4 ),
543 $ MIN( ULPINV, ABS( TNRM-ONE ) / ULP ) )
547 VTST = ABS( VL( JJ, J ) )
550 IF( DIMAG( VL( JJ, J ) ).EQ.ZERO .AND.
551 $ ABS( DBLE( VL( JJ, J ) ) ).GT.VRMX )
552 $ VRMX = ABS( DBLE( VL( JJ, J ) ) )
554 IF( VRMX / VMX.LT.ONE-TWO*ULP )
555 $ RESULT( 4 ) = ULPINV
558 * Test for all options of computing condition numbers
560 DO 200 ISENS = 1, ISENSM
562 SENSE = SENS( ISENS )
564 * Compute eigenvalues only, and test them
566 CALL ZLACPY( 'F', N, N, A, LDA, H, LDA )
567 CALL ZGEEVX( BALANC, 'N', 'N', SENSE, N, H, LDA, W1, CDUM, 1,
568 $ CDUM, 1, ILO1, IHI1, SCALE1, ABNRM1, RCNDE1,
569 $ RCNDV1, WORK, LWORK, RWORK, IINFO )
570 IF( IINFO.NE.0 ) THEN
572 IF( JTYPE.NE.22 ) THEN
573 WRITE( NOUNIT, FMT = 9998 )'ZGEEVX2', IINFO, N, JTYPE,
576 WRITE( NOUNIT, FMT = 9999 )'ZGEEVX2', IINFO, N,
586 IF( W( J ).NE.W1( J ) )
587 $ RESULT( 5 ) = ULPINV
592 IF( .NOT.NOBAL ) THEN
594 IF( SCALE( J ).NE.SCALE1( J ) )
595 $ RESULT( 8 ) = ULPINV
598 $ RESULT( 8 ) = ULPINV
600 $ RESULT( 8 ) = ULPINV
601 IF( ABNRM.NE.ABNRM1 )
602 $ RESULT( 8 ) = ULPINV
607 IF( ISENS.EQ.2 .AND. N.GT.1 ) THEN
609 IF( RCONDV( J ).NE.RCNDV1( J ) )
610 $ RESULT( 9 ) = ULPINV
614 * Compute eigenvalues and right eigenvectors, and test them
616 CALL ZLACPY( 'F', N, N, A, LDA, H, LDA )
617 CALL ZGEEVX( BALANC, 'N', 'V', SENSE, N, H, LDA, W1, CDUM, 1,
618 $ LRE, LDLRE, ILO1, IHI1, SCALE1, ABNRM1, RCNDE1,
619 $ RCNDV1, WORK, LWORK, RWORK, IINFO )
620 IF( IINFO.NE.0 ) THEN
622 IF( JTYPE.NE.22 ) THEN
623 WRITE( NOUNIT, FMT = 9998 )'ZGEEVX3', IINFO, N, JTYPE,
626 WRITE( NOUNIT, FMT = 9999 )'ZGEEVX3', IINFO, N,
636 IF( W( J ).NE.W1( J ) )
637 $ RESULT( 5 ) = ULPINV
644 IF( VR( J, JJ ).NE.LRE( J, JJ ) )
645 $ RESULT( 6 ) = ULPINV
651 IF( .NOT.NOBAL ) THEN
653 IF( SCALE( J ).NE.SCALE1( J ) )
654 $ RESULT( 8 ) = ULPINV
657 $ RESULT( 8 ) = ULPINV
659 $ RESULT( 8 ) = ULPINV
660 IF( ABNRM.NE.ABNRM1 )
661 $ RESULT( 8 ) = ULPINV
666 IF( ISENS.EQ.2 .AND. N.GT.1 ) THEN
668 IF( RCONDV( J ).NE.RCNDV1( J ) )
669 $ RESULT( 9 ) = ULPINV
673 * Compute eigenvalues and left eigenvectors, and test them
675 CALL ZLACPY( 'F', N, N, A, LDA, H, LDA )
676 CALL ZGEEVX( BALANC, 'V', 'N', SENSE, N, H, LDA, W1, LRE,
677 $ LDLRE, CDUM, 1, ILO1, IHI1, SCALE1, ABNRM1,
678 $ RCNDE1, RCNDV1, WORK, LWORK, RWORK, IINFO )
679 IF( IINFO.NE.0 ) THEN
681 IF( JTYPE.NE.22 ) THEN
682 WRITE( NOUNIT, FMT = 9998 )'ZGEEVX4', IINFO, N, JTYPE,
685 WRITE( NOUNIT, FMT = 9999 )'ZGEEVX4', IINFO, N,
695 IF( W( J ).NE.W1( J ) )
696 $ RESULT( 5 ) = ULPINV
703 IF( VL( J, JJ ).NE.LRE( J, JJ ) )
704 $ RESULT( 7 ) = ULPINV
710 IF( .NOT.NOBAL ) THEN
712 IF( SCALE( J ).NE.SCALE1( J ) )
713 $ RESULT( 8 ) = ULPINV
716 $ RESULT( 8 ) = ULPINV
718 $ RESULT( 8 ) = ULPINV
719 IF( ABNRM.NE.ABNRM1 )
720 $ RESULT( 8 ) = ULPINV
725 IF( ISENS.EQ.2 .AND. N.GT.1 ) THEN
727 IF( RCONDV( J ).NE.RCNDV1( J ) )
728 $ RESULT( 9 ) = ULPINV
736 * If COMP, compare condition numbers to precomputed ones
739 CALL ZLACPY( 'F', N, N, A, LDA, H, LDA )
740 CALL ZGEEVX( 'N', 'V', 'V', 'B', N, H, LDA, W, VL, LDVL, VR,
741 $ LDVR, ILO, IHI, SCALE, ABNRM, RCONDE, RCONDV,
742 $ WORK, LWORK, RWORK, IINFO )
743 IF( IINFO.NE.0 ) THEN
745 WRITE( NOUNIT, FMT = 9999 )'ZGEEVX5', IINFO, N, ISEED( 1 )
750 * Sort eigenvalues and condition numbers lexicographically
751 * to compare with inputs
756 VRIMIN = DBLE( W( I ) )
758 VRIMIN = DIMAG( W( I ) )
762 VRICMP = DBLE( W( J ) )
764 VRICMP = DIMAG( W( J ) )
766 IF( VRICMP.LT.VRIMIN ) THEN
774 VRIMIN = RCONDE( KMIN )
775 RCONDE( KMIN ) = RCONDE( I )
777 VRIMIN = RCONDV( KMIN )
778 RCONDV( KMIN ) = RCONDV( I )
782 * Compare condition numbers for eigenvectors
783 * taking their condition numbers into account
786 EPS = MAX( EPSIN, ULP )
787 V = MAX( DBLE( N )*EPS*ABNRM, SMLNUM )
791 IF( V.GT.RCONDV( I )*RCONDE( I ) ) THEN
794 TOL = V / RCONDE( I )
796 IF( V.GT.RCDVIN( I )*RCDEIN( I ) ) THEN
799 TOLIN = V / RCDEIN( I )
801 TOL = MAX( TOL, SMLNUM / EPS )
802 TOLIN = MAX( TOLIN, SMLNUM / EPS )
803 IF( EPS*( RCDVIN( I )-TOLIN ).GT.RCONDV( I )+TOL ) THEN
805 ELSE IF( RCDVIN( I )-TOLIN.GT.RCONDV( I )+TOL ) THEN
806 VMAX = ( RCDVIN( I )-TOLIN ) / ( RCONDV( I )+TOL )
807 ELSE IF( RCDVIN( I )+TOLIN.LT.EPS*( RCONDV( I )-TOL ) ) THEN
809 ELSE IF( RCDVIN( I )+TOLIN.LT.RCONDV( I )-TOL ) THEN
810 VMAX = ( RCONDV( I )-TOL ) / ( RCDVIN( I )+TOLIN )
814 RESULT( 10 ) = MAX( RESULT( 10 ), VMAX )
817 * Compare condition numbers for eigenvalues
818 * taking their condition numbers into account
822 IF( V.GT.RCONDV( I ) ) THEN
825 TOL = V / RCONDV( I )
827 IF( V.GT.RCDVIN( I ) ) THEN
830 TOLIN = V / RCDVIN( I )
832 TOL = MAX( TOL, SMLNUM / EPS )
833 TOLIN = MAX( TOLIN, SMLNUM / EPS )
834 IF( EPS*( RCDEIN( I )-TOLIN ).GT.RCONDE( I )+TOL ) THEN
836 ELSE IF( RCDEIN( I )-TOLIN.GT.RCONDE( I )+TOL ) THEN
837 VMAX = ( RCDEIN( I )-TOLIN ) / ( RCONDE( I )+TOL )
838 ELSE IF( RCDEIN( I )+TOLIN.LT.EPS*( RCONDE( I )-TOL ) ) THEN
840 ELSE IF( RCDEIN( I )+TOLIN.LT.RCONDE( I )-TOL ) THEN
841 VMAX = ( RCONDE( I )-TOL ) / ( RCDEIN( I )+TOLIN )
845 RESULT( 11 ) = MAX( RESULT( 11 ), VMAX )
851 9999 FORMAT( ' ZGET23: ', A, ' returned INFO=', I6, '.', / 9X, 'N=',
852 $ I6, ', INPUT EXAMPLE NUMBER = ', I4 )
853 9998 FORMAT( ' ZGET23: ', A, ' returned INFO=', I6, '.', / 9X, 'N=',
854 $ I6, ', JTYPE=', I6, ', BALANC = ', A, ', ISEED=(',
855 $ 3( I5, ',' ), I5, ')' )