STYLE: Remove trailing whitespace in Fortran files
[platform/upstream/lapack.git] / TESTING / EIG / schkbk.f
1 *> \brief \b SCHKBK
2 *
3 *  =========== DOCUMENTATION ===========
4 *
5 * Online html documentation available at
6 *            http://www.netlib.org/lapack/explore-html/
7 *
8 *  Definition:
9 *  ===========
10 *
11 *       SUBROUTINE SCHKBK( NIN, NOUT )
12 *
13 *       .. Scalar Arguments ..
14 *       INTEGER            NIN, NOUT
15 *       ..
16 *
17 *
18 *> \par Purpose:
19 *  =============
20 *>
21 *> \verbatim
22 *>
23 *> SCHKBK tests SGEBAK, a routine for backward transformation of
24 *> the computed right or left eigenvectors if the original matrix
25 *> was preprocessed by balance subroutine SGEBAL.
26 *> \endverbatim
27 *
28 *  Arguments:
29 *  ==========
30 *
31 *> \param[in] NIN
32 *> \verbatim
33 *>          NIN is INTEGER
34 *>          The logical unit number for input.  NIN > 0.
35 *> \endverbatim
36 *>
37 *> \param[in] NOUT
38 *> \verbatim
39 *>          NOUT is INTEGER
40 *>          The logical unit number for output.  NOUT > 0.
41 *> \endverbatim
42 *
43 *  Authors:
44 *  ========
45 *
46 *> \author Univ. of Tennessee
47 *> \author Univ. of California Berkeley
48 *> \author Univ. of Colorado Denver
49 *> \author NAG Ltd.
50 *
51 *> \date November 2011
52 *
53 *> \ingroup single_eig
54 *
55 *  =====================================================================
56       SUBROUTINE SCHKBK( NIN, NOUT )
57 *
58 *  -- LAPACK test routine (version 3.4.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 *     November 2011
62 *
63 *     .. Scalar Arguments ..
64       INTEGER            NIN, NOUT
65 *     ..
66 *
67 * ======================================================================
68 *
69 *     .. Parameters ..
70       INTEGER            LDE
71       PARAMETER          ( LDE = 20 )
72       REAL               ZERO
73       PARAMETER          ( ZERO = 0.0E0 )
74 *     ..
75 *     .. Local Scalars ..
76       INTEGER            I, IHI, ILO, INFO, J, KNT, N, NINFO
77       REAL               EPS, RMAX, SAFMIN, VMAX, X
78 *     ..
79 *     .. Local Arrays ..
80       INTEGER            LMAX( 2 )
81       REAL               E( LDE, LDE ), EIN( LDE, LDE ), SCALE( LDE )
82 *     ..
83 *     .. External Functions ..
84       REAL               SLAMCH
85       EXTERNAL           SLAMCH
86 *     ..
87 *     .. External Subroutines ..
88       EXTERNAL           SGEBAK
89 *     ..
90 *     .. Intrinsic Functions ..
91       INTRINSIC          ABS, MAX
92 *     ..
93 *     .. Executable Statements ..
94 *
95       LMAX( 1 ) = 0
96       LMAX( 2 ) = 0
97       NINFO = 0
98       KNT = 0
99       RMAX = ZERO
100       EPS = SLAMCH( 'E' )
101       SAFMIN = SLAMCH( 'S' )
102 *
103    10 CONTINUE
104 *
105       READ( NIN, FMT = * )N, ILO, IHI
106       IF( N.EQ.0 )
107      $   GO TO 60
108 *
109       READ( NIN, FMT = * )( SCALE( I ), I = 1, N )
110       DO 20 I = 1, N
111          READ( NIN, FMT = * )( E( I, J ), J = 1, N )
112    20 CONTINUE
113 *
114       DO 30 I = 1, N
115          READ( NIN, FMT = * )( EIN( I, J ), J = 1, N )
116    30 CONTINUE
117 *
118       KNT = KNT + 1
119       CALL SGEBAK( 'B', 'R', N, ILO, IHI, SCALE, N, E, LDE, INFO )
120 *
121       IF( INFO.NE.0 ) THEN
122          NINFO = NINFO + 1
123          LMAX( 1 ) = KNT
124       END IF
125 *
126       VMAX = ZERO
127       DO 50 I = 1, N
128          DO 40 J = 1, N
129             X = ABS( E( I, J )-EIN( I, J ) ) / EPS
130             IF( ABS( E( I, J ) ).GT.SAFMIN )
131      $         X = X / ABS( E( I, J ) )
132             VMAX = MAX( VMAX, X )
133    40    CONTINUE
134    50 CONTINUE
135 *
136       IF( VMAX.GT.RMAX ) THEN
137          LMAX( 2 ) = KNT
138          RMAX = VMAX
139       END IF
140 *
141       GO TO 10
142 *
143    60 CONTINUE
144 *
145       WRITE( NOUT, FMT = 9999 )
146  9999 FORMAT( 1X, '.. test output of SGEBAK .. ' )
147 *
148       WRITE( NOUT, FMT = 9998 )RMAX
149  9998 FORMAT( 1X, 'value of largest test error             = ', E12.3 )
150       WRITE( NOUT, FMT = 9997 )LMAX( 1 )
151  9997 FORMAT( 1X, 'example number where info is not zero   = ', I4 )
152       WRITE( NOUT, FMT = 9996 )LMAX( 2 )
153  9996 FORMAT( 1X, 'example number having largest error     = ', I4 )
154       WRITE( NOUT, FMT = 9995 )NINFO
155  9995 FORMAT( 1X, 'number of examples where info is not 0  = ', I4 )
156       WRITE( NOUT, FMT = 9994 )KNT
157  9994 FORMAT( 1X, 'total number of examples tested         = ', I4 )
158 *
159       RETURN
160 *
161 *     End of SCHKBK
162 *
163       END