1      MODULE LA_PRECISION
2!
3!  -- LAPACK95 interface driver routine (version 3.0) --
4!     UNI-C, Denmark; Univ. of Tennessee, USA; NAG Ltd., UK
5!     September, 2000
6!
7!  DEFINES SINGLE AND DOUBLE PRECISION PARAMETERS, SP AND DP.
8!  THESE VALUES ARE COMPILER DEPENDENT.
9!
10      INTEGER, PARAMETER :: SP=KIND(1.0), DP=KIND(1.0D0)
11!
12      END MODULE LA_PRECISION
13
14      MODULE LA_AUXMOD
15!
16!  -- LAPACK95 interface driver routine (version 3.0) --
17!     UNI-C, Denmark; Univ. of Tennessee, USA; NAG Ltd., UK
18!     September, 2000
19!
20      INTERFACE
21         SUBROUTINE    ERINFO(LINFO, SRNAME, INFO, ISTAT)
22            CHARACTER( LEN = * ), INTENT(IN)              :: SRNAME
23            INTEGER             , INTENT(IN)              :: LINFO
24            INTEGER             , INTENT(OUT), OPTIONAL   :: INFO
25            INTEGER             , INTENT(IN), OPTIONAL    :: ISTAT
26         END SUBROUTINE ERINFO
27         INTEGER FUNCTION LA_WS_GELS( VER, M, N, NRHS, TRANS )
28             CHARACTER( LEN=1 ), INTENT(IN) :: TRANS, VER
29             INTEGER, INTENT(IN) :: M, N, NRHS
30         END FUNCTION LA_WS_GELS
31         INTEGER FUNCTION LA_WS_GELSS( VER, M, N, NRHS )
32          CHARACTER(LEN=1), INTENT(IN) :: VER
33          INTEGER, INTENT(IN) :: M, N, NRHS
34         END FUNCTION LA_WS_GELSS
35      END INTERFACE
36!
37      CONTAINS
38!
39      LOGICAL FUNCTION LSAME( CA, CB )
40!
41!  PURPOSE
42!  =======
43!
44!  LSAME  TESTS IF CA IS THE SAME LETTER AS CB REGARDLESS OF CASE.
45!
46!  PARAMETERS
47!  ==========
48!
49!  CA      (INPUT) CHARACTER*1
50!  CB      (INPUT) CHARACTER*1
51!          CHARACTERS TO BE COMPARED.
52!
53!  .. SCALAR ARGUMENTS ..
54      CHARACTER*1, INTENT(IN) :: CA, CB
55!  .. PARAMETERS ..
56      INTEGER, PARAMETER      :: IOFF=32
57!  .. LOCAL SCALARS ..
58      INTEGER                 :: INTA, INTB, ZCODE
59!  .. INTRINSIC FUNCTIONS ..
60      INTRINSIC                  ICHAR
61!
62!  .. EXECUTABLE STATEMENTS ..
63!
64!  TEST IF THE CHARACTERS ARE EQUAL
65!
66      LSAME = CA == CB
67!
68!  NOW TEST FOR EQUIVALENCE
69!
70      IF( .NOT.LSAME )THEN
71!
72!     USE 'Z' RATHER THAN 'A' SO THAT ASCII CAN BE DETECTED ON PRIME
73!     MACHINES, ON WHICH ICHAR RETURNS A VALUE WITH BIT 8 SET.
74!     ICHAR('A') ON PRIME MACHINES RETURNS 193 WHICH IS THE SAME AS
75!     ICHAR('A') ON AN EBCDIC MACHINE.
76!
77         ZCODE = ICHAR( 'Z' )
78!
79         INTA = ICHAR( CA )
80         INTB = ICHAR( CB )
81!
82         IF( ZCODE.EQ.90 .OR. ZCODE.EQ.122 )THEN
83!
84!        ASCII IS ASSUMED - ZCODE IS THE ASCII CODE OF EITHER LOWER OR
85!        UPPER CASE 'Z'.
86!
87            IF( INTA.GE.97 .AND. INTA.LE.122 ) INTA = INTA - 32
88            IF( INTB.GE.97 .AND. INTB.LE.122 ) INTB = INTB - 32
89!
90         ELSE IF( ZCODE.EQ.233 .OR. ZCODE.EQ.169 )THEN
91!
92!        EBCDIC IS ASSUMED - ZCODE IS THE EBCDIC CODE OF EITHER LOWER OR
93!        UPPER CASE 'Z'.
94!
95         IF( INTA.GE.129 .AND. INTA.LE.137 .OR.                         &
96!    &       INTA.GE.145 .AND. INTA.LE.153 .OR.                         &
97     &       INTA.GE.162 .AND. INTA.LE.169 ) INTA = INTA + 64
98         IF( INTB.GE.129 .AND. INTB.LE.137 .OR.                         &
99     &       INTB.GE.145 .AND. INTB.LE.153 .OR.                         &
100     &       INTB.GE.162 .AND. INTB.LE.169 ) INTB = INTB + 64
101!
102         ELSE IF( ZCODE.EQ.218 .OR. ZCODE.EQ.250 )THEN
103!
104!        ASCII IS ASSUMED, ON PRIME MACHINES - ZCODE IS THE ASCII CODE
105!        PLUS 128 OF EITHER LOWER OR UPPER CASE 'Z'.
106!
107            IF( INTA.GE.225 .AND. INTA.LE.250 ) INTA = INTA - 32
108         IF( INTB.GE.225 .AND. INTB.LE.250 ) INTB = INTB - 32
109         ENDIF
110         LSAME = INTA == INTB
111      ENDIF
112      END FUNCTION LSAME
113
114      END MODULE LA_AUXMOD
115