1 LOGICAL FUNCTION CLCTES( Z, D )
2 *
3 * -- LAPACK test routine (version 3.1) --
4 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
5 * November 2006
6 *
7 * .. Scalar Arguments ..
8 COMPLEX D, Z
9 * ..
10 *
11 * Purpose
12 * =======
13 *
14 * CLCTES returns .TRUE. if the eigenvalue Z/D is to be selected
15 * (specifically, in this subroutine, if the real part of the
16 * eigenvalue is negative), and otherwise it returns .FALSE..
17 *
18 * It is used by the test routine CDRGES to test whether the driver
19 * routine CGGES succesfully sorts eigenvalues.
20 *
21 * Arguments
22 * =========
23 *
24 * Z (input) COMPLEX
25 * The numerator part of a complex eigenvalue Z/D.
26 *
27 * D (input) COMPLEX
28 * The denominator part of a complex eigenvalue Z/D.
29 *
30 * =====================================================================
31 *
32 * .. Parameters ..
33 *
34 REAL ZERO, ONE
35 PARAMETER ( ZERO = 0.0E+0, ONE = 1.0E+0 )
36 COMPLEX CZERO
37 PARAMETER ( CZERO = ( 0.0E+0, 0.0E+0 ) )
38 * ..
39 * .. Local Scalars ..
40 REAL ZMAX
41 * ..
42 * .. Intrinsic Functions ..
43 INTRINSIC ABS, AIMAG, MAX, REAL, SIGN
44 * ..
45 * .. Executable Statements ..
46 *
47 IF( D.EQ.CZERO ) THEN
48 CLCTES = ( REAL( Z ).LT.ZERO )
49 ELSE
50 IF( REAL( Z ).EQ.ZERO .OR. REAL( D ).EQ.ZERO ) THEN
51 CLCTES = ( SIGN( ONE, AIMAG( Z ) ).NE.
52 $ SIGN( ONE, AIMAG( D ) ) )
53 ELSE IF( AIMAG( Z ).EQ.ZERO .OR. AIMAG( D ).EQ.ZERO ) THEN
54 CLCTES = ( SIGN( ONE, REAL( Z ) ).NE.
55 $ SIGN( ONE, REAL( D ) ) )
56 ELSE
57 ZMAX = MAX( ABS( REAL( Z ) ), ABS( AIMAG( Z ) ) )
58 CLCTES = ( ( REAL( Z ) / ZMAX )*REAL( D )+
59 $ ( AIMAG( Z ) / ZMAX )*AIMAG( D ).LT.ZERO )
60 END IF
61 END IF
62 *
63 RETURN
64 *
65 * End of CLCTES
66 *
67 END
2 *
3 * -- LAPACK test routine (version 3.1) --
4 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
5 * November 2006
6 *
7 * .. Scalar Arguments ..
8 COMPLEX D, Z
9 * ..
10 *
11 * Purpose
12 * =======
13 *
14 * CLCTES returns .TRUE. if the eigenvalue Z/D is to be selected
15 * (specifically, in this subroutine, if the real part of the
16 * eigenvalue is negative), and otherwise it returns .FALSE..
17 *
18 * It is used by the test routine CDRGES to test whether the driver
19 * routine CGGES succesfully sorts eigenvalues.
20 *
21 * Arguments
22 * =========
23 *
24 * Z (input) COMPLEX
25 * The numerator part of a complex eigenvalue Z/D.
26 *
27 * D (input) COMPLEX
28 * The denominator part of a complex eigenvalue Z/D.
29 *
30 * =====================================================================
31 *
32 * .. Parameters ..
33 *
34 REAL ZERO, ONE
35 PARAMETER ( ZERO = 0.0E+0, ONE = 1.0E+0 )
36 COMPLEX CZERO
37 PARAMETER ( CZERO = ( 0.0E+0, 0.0E+0 ) )
38 * ..
39 * .. Local Scalars ..
40 REAL ZMAX
41 * ..
42 * .. Intrinsic Functions ..
43 INTRINSIC ABS, AIMAG, MAX, REAL, SIGN
44 * ..
45 * .. Executable Statements ..
46 *
47 IF( D.EQ.CZERO ) THEN
48 CLCTES = ( REAL( Z ).LT.ZERO )
49 ELSE
50 IF( REAL( Z ).EQ.ZERO .OR. REAL( D ).EQ.ZERO ) THEN
51 CLCTES = ( SIGN( ONE, AIMAG( Z ) ).NE.
52 $ SIGN( ONE, AIMAG( D ) ) )
53 ELSE IF( AIMAG( Z ).EQ.ZERO .OR. AIMAG( D ).EQ.ZERO ) THEN
54 CLCTES = ( SIGN( ONE, REAL( Z ) ).NE.
55 $ SIGN( ONE, REAL( D ) ) )
56 ELSE
57 ZMAX = MAX( ABS( REAL( Z ) ), ABS( AIMAG( Z ) ) )
58 CLCTES = ( ( REAL( Z ) / ZMAX )*REAL( D )+
59 $ ( AIMAG( Z ) / ZMAX )*AIMAG( D ).LT.ZERO )
60 END IF
61 END IF
62 *
63 RETURN
64 *
65 * End of CLCTES
66 *
67 END