68 lines
1.9 KiB
FortranFixed
68 lines
1.9 KiB
FortranFixed
LOGICAL FUNCTION CLCTES( Z, D )
|
|
*
|
|
* -- LAPACK test routine (version 3.1) --
|
|
* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
|
|
* November 2006
|
|
*
|
|
* .. Scalar Arguments ..
|
|
COMPLEX D, Z
|
|
* ..
|
|
*
|
|
* Purpose
|
|
* =======
|
|
*
|
|
* CLCTES returns .TRUE. if the eigenvalue Z/D is to be selected
|
|
* (specifically, in this subroutine, if the real part of the
|
|
* eigenvalue is negative), and otherwise it returns .FALSE..
|
|
*
|
|
* It is used by the test routine CDRGES to test whether the driver
|
|
* routine CGGES succesfully sorts eigenvalues.
|
|
*
|
|
* Arguments
|
|
* =========
|
|
*
|
|
* Z (input) COMPLEX
|
|
* The numerator part of a complex eigenvalue Z/D.
|
|
*
|
|
* D (input) COMPLEX
|
|
* The denominator part of a complex eigenvalue Z/D.
|
|
*
|
|
* =====================================================================
|
|
*
|
|
* .. Parameters ..
|
|
*
|
|
REAL ZERO, ONE
|
|
PARAMETER ( ZERO = 0.0E+0, ONE = 1.0E+0 )
|
|
COMPLEX CZERO
|
|
PARAMETER ( CZERO = ( 0.0E+0, 0.0E+0 ) )
|
|
* ..
|
|
* .. Local Scalars ..
|
|
REAL ZMAX
|
|
* ..
|
|
* .. Intrinsic Functions ..
|
|
INTRINSIC ABS, AIMAG, MAX, REAL, SIGN
|
|
* ..
|
|
* .. Executable Statements ..
|
|
*
|
|
IF( D.EQ.CZERO ) THEN
|
|
CLCTES = ( REAL( Z ).LT.ZERO )
|
|
ELSE
|
|
IF( REAL( Z ).EQ.ZERO .OR. REAL( D ).EQ.ZERO ) THEN
|
|
CLCTES = ( SIGN( ONE, AIMAG( Z ) ).NE.
|
|
$ SIGN( ONE, AIMAG( D ) ) )
|
|
ELSE IF( AIMAG( Z ).EQ.ZERO .OR. AIMAG( D ).EQ.ZERO ) THEN
|
|
CLCTES = ( SIGN( ONE, REAL( Z ) ).NE.
|
|
$ SIGN( ONE, REAL( D ) ) )
|
|
ELSE
|
|
ZMAX = MAX( ABS( REAL( Z ) ), ABS( AIMAG( Z ) ) )
|
|
CLCTES = ( ( REAL( Z ) / ZMAX )*REAL( D )+
|
|
$ ( AIMAG( Z ) / ZMAX )*AIMAG( D ).LT.ZERO )
|
|
END IF
|
|
END IF
|
|
*
|
|
RETURN
|
|
*
|
|
* End of CLCTES
|
|
*
|
|
END
|