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+00.0E+0 ) )
38 *     ..
39 *     .. Local Scalars ..
40       REAL               ZMAX
41 *     ..
42 *     .. Intrinsic Functions ..
43       INTRINSIC          ABSAIMAGMAX, REAL, SIGN
44 *     ..
45 *     .. Executable Statements ..
46 *
47       IF( D.EQ.CZERO ) THEN
48          CLCTES = ( REAL( Z ).LT.ZERO )
49       ELSE
50          IFREAL( Z ).EQ.ZERO .OR. REAL( D ).EQ.ZERO ) THEN
51             CLCTES = ( SIGN( ONE, AIMAG( Z ) ).NE.
52      $               SIGN( ONE, AIMAG( D ) ) )
53          ELSE IFAIMAG( 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 = MAXABSREAL( Z ) ), ABSAIMAG( 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