1SUBROUTINE LA_TEST_DSBEVX( JOBZ, RANGE, UPLO, N, KD, AB, LDAB, Q, LDQ, & 2 & VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, & 3 & WORK, IWORK, IFAIL,INFO ) 4! 5! -- LAPACK95 interface driver routine (version 1.1) -- 6! UNI-C, Denmark; 7! May 14, 1999 8! 9! .. Use Statements .. 10 USE LA_PRECISION, ONLY: WP => DP 11 USE F95_LAPACK, ONLY: LA_SBEVX 12! .. Implicit Statement .. 13 IMPLICIT NONE 14! .. Scalar Arguments .. 15 INTEGER, INTENT(IN) :: N, LDAB, KD, LDQ, LDZ, IL, IU 16 INTEGER, INTENT(INOUT) :: INFO 17 INTEGER, INTENT(OUT) :: M 18 CHARACTER*1, INTENT(IN) :: UPLO, JOBZ, RANGE 19 REAL(WP), INTENT(IN) :: VL, VU, ABSTOL 20! .. Array Arguments .. 21 INTEGER, INTENT(OUT) :: IFAIL(1:N) 22 REAL(WP), INTENT(INOUT) :: AB(1:LDAB, 1:N) 23 REAL(WP), INTENT(OUT):: W(1:N), WORK(1 : 7*N), Z(1:LDZ, 1:N), & 24 & Q(1:LDQ,1:N) 25 INTEGER, INTENT(OUT) :: IWORK(1: 5*N) 26! .. Parameters .. 27 CHARACTER(LEN=8), PARAMETER :: SRNAME = 'LA_SBEVX' 28 CHARACTER(LEN=14), PARAMETER :: SRNAMT = 'LA_TEST_DSBEVX' 29! .. Common blocks .. 30 INTEGER :: INFOTC 31 COMMON /LINFO95/ INFOTC 32! .. Local Scalars .. 33 INTEGER :: I, J, IAB1, IAB2, IW, IZ1, IZ2, IQ1, IQ2, & 34 & IIL, IIU, IIFAIL 35 REAL(WP) :: IVL, IVU 36 CHARACTER*1 :: IUPLO, IJOBZ, IRANGE 37! .. Local Arrays .. 38 LOGICAL, SAVE :: CTEST = .TRUE., ETEST = .TRUE. 39 LOGICAL LSAME 40! .. Executable Statements .. 41 IAB1 = KD+1 ; IAB2 = N; IUPLO = UPLO; IW = N; IJOBZ = JOBZ 42 IZ1 = N; IZ2 = N; IRANGE = RANGE; IVL=VL; IVU=VU; IQ1 = N 43 IQ2 = N; IIL=IL; IIU=IU; IIFAIL=N 44 I = INFO / 100; J = INFO - I*100 45 SELECT CASE(I) 46 CASE (1) 47 IAB1 = -2 48 CASE (2) 49 IW = IW - 1 50 CASE (3) 51 IUPLO = 'T' 52 CASE (4) 53 IZ1 = IZ1 - 1; IJOBZ = 'V' 54 CASE (5) 55 IVL = IVU+1; IJOBZ = 'V'; IRANGE = 'V' 56 CASE (6) 57 IJOBZ = 'V'; IRANGE = 'V' 58 CALL LA_SBEVX( AB(1:IAB1,1:IAB2), W(1 :IW), IUPLO, & 59 & Z(1:IZ1, 1: IZ2), IVL, IVU, IIL, IIU, M, IFAIL, & 60 & Q, ABSTOL, INFO ) 61 CALL LA_AUX_AA01( I, CTEST, ETEST, SRNAMT ) 62 RETURN 63 CASE (7) 64 IJOBZ = 'V'; IRANGE = 'I' 65 IIL = IIU+1 66 CALL LA_SBEVX( AB(1:IAB1,1:IAB2), W(1 :IW), IUPLO, & 67 & Z(1:IZ1, 1: IZ2), IL=IIL, IU=IIU, M=M, IFAIL=IFAIL(1:IIFAIL),& 68 & Q=Q(1:IQ1,1:IQ2), ABSTOL=ABSTOL, INFO=INFO ) 69 CALL LA_AUX_AA01( I, CTEST, ETEST, SRNAMT ) 70 RETURN 71 CASE (8) 72 IJOBZ = 'V'; IRANGE = 'I' 73 IIU = IZ1+1; IIL = IIU 74 CALL LA_SBEVX( AB(1:IAB1,1:IAB2), W(1 :IW), IUPLO, & 75 & Z(1:IZ1, 1: IZ2), IL=IIL, IU=IIU, M=M, IFAIL=IFAIL(1:IIFAIL),& 76 & Q=Q(1:IQ1,1:IQ2), ABSTOL=ABSTOL, INFO=INFO ) 77 CALL LA_AUX_AA01( I, CTEST, ETEST, SRNAMT ) 78 RETURN 79 CASE (10) 80 IIFAIL = IZ1 - 3 81 IJOBZ = 'V'; IRANGE = 'V' 82 CALL LA_SBEVX( AB(1:IAB1,1:IAB2), W(1 :IW), IUPLO,& 83 & Z(1:IZ1, 1: IZ2), IVL, IVU, M=M, IFAIL=IFAIL(1:IIFAIL),& 84 & Q=Q(1:IQ1,1:IQ2), ABSTOL=ABSTOL, INFO=INFO ) 85 CALL LA_AUX_AA01( I, CTEST, ETEST, SRNAMT ) 86 RETURN 87 CASE (11) 88 IJOBZ = 'V'; IRANGE = 'V' 89 IQ1 = IZ1 - 3 90 CALL LA_SBEVX( AB(1:IAB1,1:IAB2), W(1 :IW), IUPLO,& 91 & Z(1:IZ1, 1: IZ2), IVL, IVU, M=M, IFAIL=IFAIL(1:IIFAIL),& 92 & Q=Q(1:IQ1,1:IQ2), ABSTOL=ABSTOL, INFO=INFO ) 93 CALL LA_AUX_AA01( I, CTEST, ETEST, SRNAMT ) 94 RETURN 95 CASE(:-1,9,12:) 96 CALL UESTOP(SRNAMT) 97 END SELECT 98 IF (LSAME (IJOBZ, 'V')) THEN 99 IF(LSAME(IRANGE,'V')) THEN 100 CALL LA_SBEVX( AB(1:IAB1,1:IAB2), W(1 :IW), IUPLO,& 101 & Z(1:IZ1, 1: IZ2), IVL, IVU, M=M, IFAIL=IFAIL(1:IIFAIL),& 102 & Q=Q(1:IQ1,1:IQ2), ABSTOL=ABSTOL, INFO=INFO ) 103 ELSE IF (LSAME(IRANGE,'I')) THEN 104 CALL LA_SBEVX( AB(1:IAB1,1:IAB2), W(1 :IW), IUPLO, & 105 & Z(1:IZ1, 1: IZ2), IL=IIL, IU=IIU, M=M, IFAIL=IFAIL(1:IIFAIL),& 106 & Q=Q(1:IQ1,1:IQ2), ABSTOL=ABSTOL, INFO=INFO ) 107 ELSE IF (LSAME(IRANGE,'A')) THEN 108 CALL LA_SBEVX( AB(1:IAB1,1:IAB2), W(1 :IW), IUPLO,& 109 & Z(1:IZ1, 1: IZ2), M=M, IFAIL=IFAIL(1:IIFAIL), & 110 & Q=Q(1:IQ1,1:IQ2), ABSTOL=ABSTOL, INFO=INFO ) 111 ENDIF 112 ELSE 113 IF (LSAME(IRANGE,'V')) THEN 114 CALL LA_SBEVX( AB(1:IAB1,1:IAB2), W(1 :IW), IUPLO, & 115 & VL=IVL, VU=IVU, M=M, ABSTOL=ABSTOL, INFO=INFO ) 116 ELSE IF (LSAME(IRANGE,'I')) THEN 117 CALL LA_SBEVX( AB(1:IAB1,1:IAB2), W(1 :IW), IUPLO,& 118 & IL=IIL, IU=IIU, M=M, ABSTOL=ABSTOL, INFO=INFO ) 119 ELSE IF (LSAME(IRANGE,'A')) THEN 120 CALL LA_SBEVX( AB(1:IAB1,1:IAB2), W(1 :IW), IUPLO,& 121 & M=M, ABSTOL=ABSTOL, INFO=INFO ) 122 ENDIF 123 ENDIF 124 125 CALL LA_AUX_AA01( I, CTEST, ETEST, SRNAMT ) 126 END SUBROUTINE LA_TEST_DSBEVX 127