LAPACK  3.10.0 LAPACK: Linear Algebra PACKage
sslect.f
Go to the documentation of this file.
1 *> \brief \b SSLECT
2 *
3 * =========== DOCUMENTATION ===========
4 *
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
7 *
8 * Definition:
9 * ===========
10 *
11 * LOGICAL FUNCTION SSLECT( ZR, ZI )
12 *
13 * .. Scalar Arguments ..
14 * REAL ZI, ZR
15 * ..
16 *
17 *
18 *> \par Purpose:
19 * =============
20 *>
21 *> \verbatim
22 *>
23 *> SSLECT returns .TRUE. if the eigenvalue ZR+sqrt(-1)*ZI is to be
24 *> selected, and otherwise it returns .FALSE.
25 *> It is used by SCHK41 to test if SGEES successfully sorts eigenvalues,
26 *> and by SCHK43 to test if SGEESX successfully sorts eigenvalues.
27 *>
28 *> The common block /SSLCT/ controls how eigenvalues are selected.
29 *> If SELOPT = 0, then SSLECT return .TRUE. when ZR is less than zero,
30 *> and .FALSE. otherwise.
31 *> If SELOPT is at least 1, SSLECT returns SELVAL(SELOPT) and adds 1
32 *> to SELOPT, cycling back to 1 at SELMAX.
33 *> \endverbatim
34 *
35 * Arguments:
36 * ==========
37 *
38 *> \param[in] ZR
39 *> \verbatim
40 *> ZR is REAL
41 *> The real part of a complex eigenvalue ZR + i*ZI.
42 *> \endverbatim
43 *>
44 *> \param[in] ZI
45 *> \verbatim
46 *> ZI is REAL
47 *> The imaginary part of a complex eigenvalue ZR + i*ZI.
48 *> \endverbatim
49 *
50 * Authors:
51 * ========
52 *
53 *> \author Univ. of Tennessee
54 *> \author Univ. of California Berkeley
55 *> \author Univ. of Colorado Denver
56 *> \author NAG Ltd.
57 *
58 *> \ingroup single_eig
59 *
60 * =====================================================================
61  LOGICAL FUNCTION sslect( ZR, ZI )
62 *
63 * -- LAPACK test routine --
64 * -- LAPACK is a software package provided by Univ. of Tennessee, --
65 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
66 *
67 * .. Scalar Arguments ..
68  REAL zi, zr
69 * ..
70 *
71 * =====================================================================
72 *
73 * .. Arrays in Common ..
74  LOGICAL selval( 20 )
75  REAL selwi( 20 ), selwr( 20 )
76 * ..
77 * .. Scalars in Common ..
78  INTEGER seldim, selopt
79 * ..
80 * .. Common blocks ..
81  COMMON / sslct / selopt, seldim, selval, selwr, selwi
82 * ..
83 * .. Local Scalars ..
84  INTEGER i
85  REAL rmin, x
86 * ..
87 * .. Parameters ..
88  REAL zero
89  parameter( zero = 0.0e0 )
90 * ..
91 * .. External Functions ..
92  REAL slapy2
93  EXTERNAL slapy2
94 * ..
95 * .. Executable Statements ..
96 *
97  IF( selopt.EQ.0 ) THEN
98  sslect = ( zr.LT.zero )
99  ELSE
100  rmin = slapy2( zr-selwr( 1 ), zi-selwi( 1 ) )
101  sslect = selval( 1 )
102  DO 10 i = 2, seldim
103  x = slapy2( zr-selwr( i ), zi-selwi( i ) )
104  IF( x.LE.rmin ) THEN
105  rmin = x
106  sslect = selval( i )
107  END IF
108  10 CONTINUE
109  END IF
110  RETURN
111 *
112 * End of SSLECT
113 *
114  END
real function slapy2(X, Y)
SLAPY2 returns sqrt(x2+y2).
Definition: slapy2.f:63
logical function sslect(ZR, ZI)
SSLECT
Definition: sslect.f:62