1      MODULE F95_LAPACK
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
8      INTERFACE LA_LAMCH
9
10       FUNCTION SLAMCH_F95( PRECISION, CMACH, INFO )
11           USE LA_PRECISION, ONLY: WP => SP
12           CHARACTER(LEN=1), INTENT(IN) :: CMACH
13           REAL(WP), INTENT(IN) :: PRECISION
14           INTEGER, INTENT(OUT), OPTIONAL :: INFO
15           REAL(WP) :: SLAMCH_F95
16        END FUNCTION SLAMCH_F95
17
18       FUNCTION DLAMCH_F95( PRECISION, CMACH, INFO )
19           USE LA_PRECISION, ONLY: WP => DP
20           CHARACTER(LEN=1), INTENT(IN) :: CMACH
21           REAL(WP), INTENT(IN) :: PRECISION
22           INTEGER, INTENT(OUT), OPTIONAL :: INFO
23           REAL(WP) :: DLAMCH_F95
24        END FUNCTION DLAMCH_F95
25
26      END INTERFACE
27
28      INTERFACE LA_GGSVD
29
30       SUBROUTINE SGGSVD_F95( A, B, ALPHA, BETA, K, L, U, V, Q, IWORK,  &
31     &                        INFO )
32          USE LA_PRECISION, ONLY: WP => SP
33          INTEGER, INTENT(OUT), OPTIONAL :: INFO, K, L
34          REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
35          REAL(WP), INTENT(OUT) :: ALPHA(:), BETA(:)
36          REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:), V(:,:),    &
37     &                                               Q(:,:)
38          INTEGER, INTENT(OUT), OPTIONAL :: IWORK(:)
39        END SUBROUTINE SGGSVD_F95
40
41       SUBROUTINE DGGSVD_F95( A, B, ALPHA, BETA, K, L, U, V, Q, IWORK,  &
42     &                        INFO )
43          USE LA_PRECISION, ONLY: WP => DP
44          INTEGER, INTENT(OUT), OPTIONAL :: INFO, K, L
45          REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
46          REAL(WP), INTENT(OUT) :: ALPHA(:), BETA(:)
47          REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:), V(:,:),    &
48     &                                               Q(:,:)
49          INTEGER, INTENT(OUT), OPTIONAL :: IWORK(:)
50        END SUBROUTINE DGGSVD_F95
51
52       SUBROUTINE CGGSVD_F95( A, B, ALPHA, BETA, K, L, U, V, Q, IWORK,  &
53     &                        INFO )
54          USE LA_PRECISION, ONLY: WP => SP
55          INTEGER, INTENT(OUT), OPTIONAL :: INFO, K, L
56          COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
57          REAL(WP), INTENT(OUT) :: ALPHA(:), BETA(:)
58          COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:), V(:,:), &
59     &                                                  Q(:,:)
60          INTEGER, INTENT(OUT), OPTIONAL :: IWORK(:)
61        END SUBROUTINE CGGSVD_F95
62
63       SUBROUTINE ZGGSVD_F95( A, B, ALPHA, BETA, K, L, U, V, Q, IWORK,  &
64     &                        INFO )
65          USE LA_PRECISION, ONLY: WP => DP
66          INTEGER, INTENT(OUT), OPTIONAL :: INFO, K, L
67          COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
68          REAL(WP), INTENT(OUT) :: ALPHA(:), BETA(:)
69          COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:), V(:,:), &
70     &                                                  Q(:,:)
71          INTEGER, INTENT(OUT), OPTIONAL :: IWORK(:)
72        END SUBROUTINE ZGGSVD_F95
73
74      END INTERFACE
75
76      INTERFACE LA_GEGV
77
78       SUBROUTINE SGEGV_F95( A, B, ALPHAR, ALPHAI, BETA, VL, VR, INFO )
79          USE LA_PRECISION, ONLY: WP => SP
80          INTEGER, INTENT(OUT), OPTIONAL :: INFO
81          REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
82          REAL(WP), INTENT(OUT), OPTIONAL :: ALPHAR(:), ALPHAI(:),      &
83     &                                       BETA(:)
84          REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:), VR(:,:)
85        END SUBROUTINE SGEGV_F95
86
87       SUBROUTINE DGEGV_F95( A, B, ALPHAR, ALPHAI, BETA, VL, VR, INFO )
88          USE LA_PRECISION, ONLY: WP => DP
89          INTEGER, INTENT(OUT), OPTIONAL :: INFO
90          REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
91          REAL(WP), INTENT(OUT), OPTIONAL :: ALPHAR(:), ALPHAI(:),      &
92     &                                       BETA(:)
93          REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:), VR(:,:)
94        END SUBROUTINE DGEGV_F95
95
96
97       SUBROUTINE CGEGV_F95( A, B, ALPHA, BETA, VL, VR, INFO )
98          USE LA_PRECISION, ONLY: WP => SP
99          INTEGER, INTENT(OUT), OPTIONAL :: INFO
100          COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
101          COMPLEX(WP), INTENT(OUT), OPTIONAL :: ALPHA(:), BETA(:)
102          COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:), VR(:,:)
103        END SUBROUTINE CGEGV_F95
104
105       SUBROUTINE ZGEGV_F95( A, B, ALPHA, BETA, VL, VR, INFO )
106          USE LA_PRECISION, ONLY: WP => DP
107          INTEGER, INTENT(OUT), OPTIONAL :: INFO
108          COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
109          COMPLEX(WP), INTENT(OUT), OPTIONAL :: ALPHA(:), BETA(:)
110          COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:), VR(:,:)
111        END SUBROUTINE ZGEGV_F95
112
113      END INTERFACE
114
115      INTERFACE LA_GEGS
116
117       SUBROUTINE SGEGS_F95( A, B, ALPHAR, ALPHAI, BETA, VSL, VSR,      &
118     &                       INFO )
119          USE LA_PRECISION, ONLY: WP => SP
120          INTEGER, INTENT(OUT), OPTIONAL :: INFO
121          REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
122          REAL(WP), INTENT(OUT), OPTIONAL :: ALPHAR(:), ALPHAI(:),      &
123     &                                       BETA(:)
124          REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VSL(:,:), VSR(:,:)
125        END SUBROUTINE SGEGS_F95
126
127       SUBROUTINE DGEGS_F95( A, B, ALPHAR, ALPHAI, BETA, VSL, VSR,      &
128     &                       INFO )
129          USE LA_PRECISION, ONLY: WP => DP
130          INTEGER, INTENT(OUT), OPTIONAL :: INFO
131          REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
132          REAL(WP), INTENT(OUT), OPTIONAL :: ALPHAR(:), ALPHAI(:),      &
133     &                                       BETA(:)
134          REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VSL(:,:), VSR(:,:)
135        END SUBROUTINE DGEGS_F95
136
137
138       SUBROUTINE CGEGS_F95( A, B, ALPHA, BETA, VSL, VSR, INFO )
139          USE LA_PRECISION, ONLY: WP => SP
140          INTEGER, INTENT(OUT), OPTIONAL :: INFO
141          COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
142          COMPLEX(WP), INTENT(OUT), OPTIONAL :: ALPHA(:), BETA(:)
143          COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VSL(:,:),       &
144     &                                                  VSR(:,:)
145        END SUBROUTINE CGEGS_F95
146
147       SUBROUTINE ZGEGS_F95( A, B, ALPHA, BETA, VSL, VSR, INFO )
148          USE LA_PRECISION, ONLY: WP => DP
149          INTEGER, INTENT(OUT), OPTIONAL :: INFO
150          COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
151          COMPLEX(WP), INTENT(OUT), OPTIONAL :: ALPHA(:), BETA(:)
152          COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VSL(:,:),       &
153     &                                                  VSR(:,:)
154        END SUBROUTINE ZGEGS_F95
155
156      END INTERFACE
157
158        INTERFACE LA_SBGVX
159
160        SUBROUTINE SSBGVX_F95( AB, BB, W, UPLO, Z, VL, VU, IL, IU, M,   &
161     &                         IFAIL, Q, ABSTOL, INFO )
162       USE LA_PRECISION, ONLY: WP => SP
163       REAL(WP), INTENT(INOUT) :: AB(:,:), BB(:,:)
164       REAL(WP), INTENT(OUT) :: W(:)
165       CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  UPLO
166       INTEGER, INTENT(OUT), OPTIONAL :: INFO
167       REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:), Q(:,:)
168       REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
169       INTEGER, INTENT(IN), OPTIONAL :: IL, IU
170       INTEGER, INTENT(OUT), OPTIONAL :: M
171       INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
172      END SUBROUTINE SSBGVX_F95
173
174        SUBROUTINE DSBGVX_F95( AB, BB, W, UPLO, Z, VL, VU, IL, IU, M,   &
175     &                         IFAIL, Q, ABSTOL, INFO )
176       USE LA_PRECISION, ONLY: WP => DP
177       REAL(WP), INTENT(INOUT) :: AB(:,:), BB(:,:)
178       REAL(WP), INTENT(OUT) :: W(:)
179       CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  UPLO
180       INTEGER, INTENT(OUT), OPTIONAL :: INFO
181       REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:), Q(:,:)
182       REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
183       INTEGER, INTENT(IN), OPTIONAL :: IL, IU
184       INTEGER, INTENT(OUT), OPTIONAL :: M
185       INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
186      END SUBROUTINE DSBGVX_F95
187
188       END INTERFACE
189
190       INTERFACE LA_HBGVX
191
192       SUBROUTINE CHBGVX_F95( AB, BB, W, UPLO, Z, VL, VU, IL, IU, M,    &
193     &                        IFAIL, Q, ABSTOL, INFO )
194         USE LA_PRECISION, ONLY: WP => SP
195         COMPLEX(WP), INTENT(INOUT) :: AB(:,:), BB(:,:)
196         REAL(WP), INTENT(OUT) :: W(:)
197         CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  UPLO
198         INTEGER, INTENT(OUT), OPTIONAL :: INFO
199         COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:),  Q(:,:)
200         REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
201         INTEGER, INTENT(IN), OPTIONAL :: IL, IU
202         INTEGER, INTENT(OUT), OPTIONAL :: M
203         INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
204        END SUBROUTINE CHBGVX_F95
205
206       SUBROUTINE ZHBGVX_F95( AB, BB, W, UPLO, Z, VL, VU, IL, IU, M,    &
207     &                        IFAIL, Q, ABSTOL, INFO )
208         USE LA_PRECISION, ONLY: WP => DP
209         COMPLEX(WP), INTENT(INOUT) :: AB(:,:), BB(:,:)
210         REAL(WP), INTENT(OUT) :: W(:)
211         CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  UPLO
212         INTEGER, INTENT(OUT), OPTIONAL :: INFO
213         COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:),  Q(:,:)
214         REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
215         INTEGER, INTENT(IN), OPTIONAL :: IL, IU
216         INTEGER, INTENT(OUT), OPTIONAL :: M
217         INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
218        END SUBROUTINE ZHBGVX_F95
219
220        END INTERFACE
221
222        INTERFACE LA_SBGVD
223
224
225        SUBROUTINE SSBGVD_F95( AB, BB, W, UPLO, Z, INFO )
226           USE LA_PRECISION, ONLY: WP => SP
227           REAL(WP), INTENT(INOUT) :: AB(:,:), BB(:,:)
228           REAL(WP), INTENT(OUT) :: W(:)
229           CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  UPLO
230           INTEGER, INTENT(OUT), OPTIONAL :: INFO
231           REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
232         END SUBROUTINE SSBGVD_F95
233
234
235        SUBROUTINE DSBGVD_F95( AB, BB, W, UPLO, Z, INFO )
236           USE LA_PRECISION, ONLY: WP => DP
237           REAL(WP), INTENT(INOUT) :: AB(:,:), BB(:,:)
238           REAL(WP), INTENT(OUT) :: W(:)
239           CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  UPLO
240           INTEGER, INTENT(OUT), OPTIONAL :: INFO
241           REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
242         END SUBROUTINE DSBGVD_F95
243
244         END INTERFACE
245
246         INTERFACE LA_HBGVD
247
248       SUBROUTINE CHBGVD_F95( AB, BB, W, UPLO, Z, INFO )
249           USE LA_PRECISION, ONLY: WP => SP
250           COMPLEX(WP), INTENT(INOUT) :: AB(:,:), BB(:,:)
251           REAL(WP), INTENT(OUT) :: W(:)
252           CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  UPLO
253           INTEGER, INTENT(OUT), OPTIONAL :: INFO
254           COMPLEX(WP), INTENT(OUT), OPTIONAL,TARGET :: Z(:,:)
255          END SUBROUTINE CHBGVD_F95
256
257       SUBROUTINE ZHBGVD_F95( AB, BB, W, UPLO, Z, INFO )
258           USE LA_PRECISION, ONLY: WP => DP
259           COMPLEX(WP), INTENT(INOUT) :: AB(:,:), BB(:,:)
260           REAL(WP), INTENT(OUT) :: W(:)
261           CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  UPLO
262           INTEGER, INTENT(OUT), OPTIONAL :: INFO
263           COMPLEX(WP), INTENT(OUT), OPTIONAL,TARGET :: Z(:,:)
264          END SUBROUTINE ZHBGVD_F95
265
266
267         END INTERFACE
268
269      INTERFACE LA_SBGV
270
271       SUBROUTINE SSBGV_F95( A, B, W, UPLO, Z, INFO )
272          USE LA_PRECISION, ONLY: WP => SP
273          CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
274          INTEGER, INTENT(OUT), OPTIONAL :: INFO
275          REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
276          REAL(WP), INTENT(OUT) :: W(:)
277          REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
278        END SUBROUTINE SSBGV_F95
279
280       SUBROUTINE DSBGV_F95( A, B, W, UPLO, Z, INFO )
281          USE LA_PRECISION, ONLY: WP => DP
282          CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
283          INTEGER, INTENT(OUT), OPTIONAL :: INFO
284          REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
285          REAL(WP), INTENT(OUT) :: W(:)
286          REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
287        END SUBROUTINE DSBGV_F95
288
289      END INTERFACE
290
291      INTERFACE LA_HBGV
292
293       SUBROUTINE CHBGV_F95( A, B, W, UPLO, Z, INFO )
294          USE LA_PRECISION, ONLY: WP => SP
295          CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
296          INTEGER, INTENT(OUT), OPTIONAL :: INFO
297          COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
298          REAL(WP), INTENT(OUT) :: W(:)
299          COMPLEX(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
300        END SUBROUTINE CHBGV_F95
301
302       SUBROUTINE ZHBGV_F95( A, B, W, UPLO, Z, INFO )
303          USE LA_PRECISION, ONLY: WP => DP
304          CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
305          INTEGER, INTENT(OUT), OPTIONAL :: INFO
306          COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
307          REAL(WP), INTENT(OUT) :: W(:)
308          COMPLEX(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
309        END SUBROUTINE ZHBGV_F95
310
311      END INTERFACE
312
313        INTERFACE LA_SPGVX
314
315        SUBROUTINE SSPGVX_F95( AP, BP, W, ITYPE, UPLO, Z, VL, VU, IL,   &
316     &                         IU, M, IFAIL, ABSTOL, INFO )
317         USE LA_PRECISION, ONLY: WP => SP
318         REAL(WP), INTENT(INOUT) :: AP(:), BP(:)
319         REAL(WP), INTENT(OUT) :: W(:)
320         CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  UPLO
321         INTEGER, INTENT(OUT), OPTIONAL :: INFO
322         REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
323         REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
324         INTEGER, INTENT(IN), OPTIONAL :: IL, IU, ITYPE
325         INTEGER, INTENT(OUT), OPTIONAL :: M
326         INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
327       END SUBROUTINE SSPGVX_F95
328
329        SUBROUTINE DSPGVX_F95( AP, BP, W, ITYPE, UPLO, Z, VL, VU, IL,   &
330     &                         IU, M, IFAIL, ABSTOL, INFO )
331         USE LA_PRECISION, ONLY: WP => DP
332         REAL(WP), INTENT(INOUT) :: AP(:), BP(:)
333         REAL(WP), INTENT(OUT) :: W(:)
334         CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  UPLO
335         INTEGER, INTENT(OUT), OPTIONAL :: INFO
336         REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
337         REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
338         INTEGER, INTENT(IN), OPTIONAL :: IL, IU, ITYPE
339         INTEGER, INTENT(OUT), OPTIONAL :: M
340         INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
341       END SUBROUTINE DSPGVX_F95
342
343       END INTERFACE
344
345       INTERFACE LA_HPGVX
346
347       SUBROUTINE CHPGVX_F95( AP, BP, W, ITYPE, UPLO, Z, VL, VU, IL, IU,&
348     &                        M, IFAIL, ABSTOL, INFO )
349         USE LA_PRECISION, ONLY: WP => SP
350         COMPLEX(WP), INTENT(INOUT) :: AP(:), BP(:)
351         REAL(WP), INTENT(OUT) :: W(:)
352         CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  UPLO
353         INTEGER, INTENT(OUT), OPTIONAL :: INFO
354         COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
355         REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
356         INTEGER, INTENT(IN), OPTIONAL :: IL, IU, ITYPE
357         INTEGER, INTENT(OUT), OPTIONAL :: M
358         INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
359       END SUBROUTINE CHPGVX_F95
360
361       SUBROUTINE ZHPGVX_F95( AP, BP, W, ITYPE, UPLO, Z, VL, VU, IL, IU,&
362     &                        M, IFAIL, ABSTOL, INFO )
363         USE LA_PRECISION, ONLY: WP => DP
364         COMPLEX(WP), INTENT(INOUT) :: AP(:), BP(:)
365         REAL(WP), INTENT(OUT) :: W(:)
366         CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  UPLO
367         INTEGER, INTENT(OUT), OPTIONAL :: INFO
368         COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
369         REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
370         INTEGER, INTENT(IN), OPTIONAL :: IL, IU, ITYPE
371         INTEGER, INTENT(OUT), OPTIONAL :: M
372         INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
373       END SUBROUTINE ZHPGVX_F95
374
375        END INTERFACE
376
377      INTERFACE LA_SPGVD
378
379       SUBROUTINE SSPGVD_F95( AP, BP, W, ITYPE, UPLO, Z, INFO )
380        USE LA_PRECISION, ONLY: WP => SP
381        REAL(WP), INTENT(INOUT) :: AP(:), BP(:)
382        REAL(WP), INTENT(OUT) :: W(:)
383        CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
384        INTEGER, INTENT(IN), OPTIONAL :: ITYPE
385        INTEGER, INTENT(OUT), OPTIONAL :: INFO
386        REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
387       END SUBROUTINE SSPGVD_F95
388
389       SUBROUTINE DSPGVD_F95( AP, BP, W, ITYPE, UPLO, Z, INFO )
390        USE LA_PRECISION, ONLY: WP => DP
391        REAL(WP), INTENT(INOUT) :: AP(:), BP(:)
392        REAL(WP), INTENT(OUT) :: W(:)
393        CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
394        INTEGER, INTENT(IN), OPTIONAL :: ITYPE
395        INTEGER, INTENT(OUT), OPTIONAL :: INFO
396        REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
397       END SUBROUTINE DSPGVD_F95
398
399        END INTERFACE
400
401        INTERFACE LA_HPGVD
402
403       SUBROUTINE CHPGVD_F95( AP, BP, W, ITYPE, UPLO, Z, INFO )
404         USE LA_PRECISION, ONLY: WP => SP
405         COMPLEX(WP), INTENT(INOUT) :: AP(:), BP(:)
406         REAL(WP), INTENT(OUT) :: W(:)
407         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
408         INTEGER, INTENT(IN), OPTIONAL :: ITYPE
409         INTEGER, INTENT(OUT), OPTIONAL :: INFO
410         COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
411        END SUBROUTINE CHPGVD_F95
412
413       SUBROUTINE ZHPGVD_F95( AP, BP, W, ITYPE, UPLO, Z, INFO )
414         USE LA_PRECISION, ONLY: WP => DP
415         COMPLEX(WP), INTENT(INOUT) :: AP(:), BP(:)
416         REAL(WP), INTENT(OUT) :: W(:)
417         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
418         INTEGER, INTENT(IN), OPTIONAL :: ITYPE
419         INTEGER, INTENT(OUT), OPTIONAL :: INFO
420         COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
421        END SUBROUTINE ZHPGVD_F95
422
423       END INTERFACE
424
425      INTERFACE LA_SPGV
426
427       SUBROUTINE SSPGV_F95( A, B, W, ITYPE, UPLO, Z, INFO )
428          USE LA_PRECISION, ONLY: WP => SP
429          CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
430          INTEGER, INTENT(IN), OPTIONAL :: ITYPE
431          INTEGER, INTENT(OUT), OPTIONAL :: INFO
432          REAL(WP), INTENT(INOUT) :: A(:), B(:)
433          REAL(WP), INTENT(OUT) :: W(:)
434          REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
435        END SUBROUTINE SSPGV_F95
436
437       SUBROUTINE DSPGV_F95( A, B, W, ITYPE, UPLO, Z, INFO )
438          USE LA_PRECISION, ONLY: WP => DP
439          CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
440          INTEGER, INTENT(IN), OPTIONAL :: ITYPE
441          INTEGER, INTENT(OUT), OPTIONAL :: INFO
442          REAL(WP), INTENT(INOUT) :: A(:), B(:)
443          REAL(WP), INTENT(OUT) :: W(:)
444          REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
445        END SUBROUTINE DSPGV_F95
446
447      END INTERFACE
448
449      INTERFACE LA_HPGV
450
451       SUBROUTINE CHPGV_F95( A, B, W, ITYPE, UPLO, Z, INFO )
452          USE LA_PRECISION, ONLY: WP => SP
453          CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
454          INTEGER, INTENT(IN), OPTIONAL :: ITYPE
455          INTEGER, INTENT(OUT), OPTIONAL :: INFO
456          COMPLEX(WP), INTENT(INOUT) :: A(:), B(:)
457          REAL(WP), INTENT(OUT) :: W(:)
458          COMPLEX(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
459        END SUBROUTINE CHPGV_F95
460
461       SUBROUTINE ZHPGV_F95( A, B, W, ITYPE, UPLO, Z, INFO )
462          USE LA_PRECISION, ONLY: WP => DP
463          CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
464          INTEGER, INTENT(IN), OPTIONAL :: ITYPE
465          INTEGER, INTENT(OUT), OPTIONAL :: INFO
466          COMPLEX(WP), INTENT(INOUT) :: A(:), B(:)
467          REAL(WP), INTENT(OUT) :: W(:)
468          COMPLEX(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
469        END SUBROUTINE ZHPGV_F95
470
471      END INTERFACE
472
473      INTERFACE LA_GESVD
474
475       SUBROUTINE SGESVD_F95( A, S, U, VT, WW, JOB, INFO )
476          USE LA_PRECISION, ONLY: WP => SP
477          CHARACTER(LEN=1), OPTIONAL, INTENT(IN) :: JOB
478          INTEGER, INTENT(OUT), OPTIONAL :: INFO
479          REAL(WP), INTENT(INOUT) :: A(:,:)
480          REAL(WP), INTENT(OUT) :: S(:)
481          REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: WW(:)
482         REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:), VT(:,:)
483        END SUBROUTINE SGESVD_F95
484
485       SUBROUTINE DGESVD_F95( A, S, U, VT, WW, JOB, INFO )
486          USE LA_PRECISION, ONLY: WP => DP
487          CHARACTER(LEN=1), OPTIONAL, INTENT(IN) :: JOB
488          INTEGER, INTENT(OUT), OPTIONAL :: INFO
489          REAL(WP), INTENT(INOUT) :: A(:,:)
490          REAL(WP), INTENT(OUT) :: S(:)
491          REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: WW(:)
492         REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:), VT(:,:)
493        END SUBROUTINE DGESVD_F95
494
495       SUBROUTINE CGESVD_F95( A, S, U, VT, WW, JOB, INFO )
496          USE LA_PRECISION, ONLY: WP => SP
497          CHARACTER(LEN=1), OPTIONAL, INTENT(IN) :: JOB
498          INTEGER, INTENT(OUT), OPTIONAL :: INFO
499          COMPLEX(WP), INTENT(INOUT) :: A(:,:)
500          REAL(WP), INTENT(OUT) :: S(:)
501          REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: WW(:)
502         COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:), VT(:,:)
503        END SUBROUTINE CGESVD_F95
504
505       SUBROUTINE ZGESVD_F95( A, S, U, VT, WW, JOB, INFO )
506          USE LA_PRECISION, ONLY: WP => DP
507          CHARACTER(LEN=1), OPTIONAL, INTENT(IN) :: JOB
508          INTEGER, INTENT(OUT), OPTIONAL :: INFO
509          COMPLEX(WP), INTENT(INOUT) :: A(:,:)
510          REAL(WP), INTENT(OUT) :: S(:)
511          REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: WW(:)
512         COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:), VT(:,:)
513        END SUBROUTINE ZGESVD_F95
514
515      END INTERFACE
516
517      INTERFACE LA_GEEVX
518
519       SUBROUTINE SGEEVX_F95( A, WR, WI, VL, VR, BALANC, ILO, IHI,      &
520     &                        SCALE, ABNRM, RCONDE, RCONDV, INFO )
521          USE LA_PRECISION, ONLY: WP => SP
522          CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: BALANC
523          INTEGER, INTENT(OUT), OPTIONAL :: INFO, ILO, IHI
524          REAL(WP), INTENT(INOUT) :: A(:,:)
525          REAL(WP), INTENT(OUT), OPTIONAL :: ABNRM
526         REAL(WP), INTENT(OUT), OPTIONAL :: SCALE(:), RCONDE(:),        &
527     &                                      RCONDV(:)
528          REAL(WP), INTENT(OUT) :: WR(:), WI(:)
529          REAL(WP), INTENT(OUT), OPTIONAL :: VL(:,:), VR(:,:)
530       END SUBROUTINE SGEEVX_F95
531
532       SUBROUTINE DGEEVX_F95( A, WR, WI, VL, VR, BALANC, ILO, IHI,      &
533     &                        SCALE, ABNRM, RCONDE, RCONDV, INFO )
534          USE LA_PRECISION, ONLY: WP => DP
535          CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: BALANC
536          INTEGER, INTENT(OUT), OPTIONAL :: INFO, ILO, IHI
537          REAL(WP), INTENT(INOUT) :: A(:,:)
538          REAL(WP), INTENT(OUT), OPTIONAL :: ABNRM
539         REAL(WP), INTENT(OUT), OPTIONAL :: SCALE(:), RCONDE(:),        &
540     &                                      RCONDV(:)
541          REAL(WP), INTENT(OUT) :: WR(:), WI(:)
542          REAL(WP), INTENT(OUT), OPTIONAL :: VL(:,:), VR(:,:)
543       END SUBROUTINE DGEEVX_F95
544
545       SUBROUTINE CGEEVX_F95( A, W, VL, VR, BALANC, ILO, IHI, SCALE,    &
546     &                        ABNRM, RCONDE, RCONDV, INFO )
547          USE LA_PRECISION, ONLY: WP => SP
548          CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: BALANC
549          INTEGER, INTENT(OUT), OPTIONAL :: INFO, ILO, IHI
550          COMPLEX(WP), INTENT(INOUT) :: A(:,:)
551          REAL(WP), INTENT(OUT), OPTIONAL :: ABNRM
552         REAL(WP), INTENT(OUT), OPTIONAL :: SCALE(:), RCONDE(:),        &
553     &                                      RCONDV(:)
554          COMPLEX(WP), INTENT(OUT) :: W(:)
555          COMPLEX(WP), INTENT(OUT), OPTIONAL :: VL(:,:), VR(:,:)
556       END SUBROUTINE CGEEVX_F95
557
558       SUBROUTINE ZGEEVX_F95( A, W, VL, VR, BALANC, ILO, IHI, SCALE,    &
559     &                        ABNRM, RCONDE, RCONDV, INFO )
560          USE LA_PRECISION, ONLY: WP => DP
561          CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: BALANC
562          INTEGER, INTENT(OUT), OPTIONAL :: INFO, ILO, IHI
563          COMPLEX(WP), INTENT(INOUT) :: A(:,:)
564          REAL(WP), INTENT(OUT), OPTIONAL :: ABNRM
565         REAL(WP), INTENT(OUT), OPTIONAL :: SCALE(:), RCONDE(:),        &
566     &                                      RCONDV(:)
567          COMPLEX(WP), INTENT(OUT) :: W(:)
568          COMPLEX(WP), INTENT(OUT), OPTIONAL :: VL(:,:), VR(:,:)
569       END SUBROUTINE ZGEEVX_F95
570
571      END INTERFACE
572
573         INTERFACE LA_GGEVX
574
575       SUBROUTINE SGGEVX_F95( A, B, ALPHAR, ALPHAI, BETA, VL, VR,       &
576     &                        BALANC, ILO, IHI, LSCALE, RSCALE, ABNRM,  &
577     &                        BBNRM, RCONDE, RCONDV, INFO )
578         USE LA_PRECISION, ONLY: WP => SP
579         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: BALANC
580         INTEGER, INTENT(OUT), OPTIONAL :: INFO
581         INTEGER, INTENT(OUT), OPTIONAL :: ILO,IHI
582         REAL(WP), INTENT(OUT), OPTIONAL :: ABNRM, BBNRM
583         REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
584         REAL(WP), INTENT(OUT) :: ALPHAR(:), ALPHAI(:)
585         REAL(WP), INTENT(OUT) :: BETA(:)
586         REAL(WP), INTENT(OUT), OPTIONAL ::LSCALE(:), RSCALE(:),        &
587     &                                     RCONDE(:), RCONDV(:)
588         REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:), VR(:,:)
589        END SUBROUTINE SGGEVX_F95
590
591       SUBROUTINE DGGEVX_F95( A, B, ALPHAR, ALPHAI, BETA, VL, VR,       &
592     &                        BALANC, ILO, IHI, LSCALE, RSCALE, ABNRM,  &
593     &                        BBNRM, RCONDE, RCONDV, INFO )
594         USE LA_PRECISION, ONLY: WP => DP
595         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: BALANC
596         INTEGER, INTENT(OUT), OPTIONAL :: INFO
597         INTEGER, INTENT(OUT), OPTIONAL :: ILO,IHI
598         REAL(WP), INTENT(OUT), OPTIONAL :: ABNRM, BBNRM
599         REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
600         REAL(WP), INTENT(OUT) :: ALPHAR(:), ALPHAI(:)
601         REAL(WP), INTENT(OUT) :: BETA(:)
602         REAL(WP), INTENT(OUT), OPTIONAL ::LSCALE(:), RSCALE(:),        &
603     &                                     RCONDE(:), RCONDV(:)
604         REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:), VR(:,:)
605        END SUBROUTINE DGGEVX_F95
606
607       SUBROUTINE CGGEVX_F95( A, B, ALPHA, BETA, VL, VR, BALANC, ILO,   &
608     &                        IHI, LSCALE, RSCALE, ABNRM, BBNRM, RCONDE,&
609     &                        RCONDV, INFO )
610         USE LA_PRECISION, ONLY: WP => SP
611         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: BALANC
612         INTEGER, INTENT(OUT), OPTIONAL :: INFO
613         INTEGER, INTENT(OUT), OPTIONAL :: ILO,IHI
614         REAL(WP), INTENT(OUT), OPTIONAL :: ABNRM, BBNRM
615         COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
616         COMPLEX(WP), INTENT(OUT) :: ALPHA(:)
617         COMPLEX(WP), INTENT(OUT) :: BETA(:)
618         REAL(WP), INTENT(OUT), OPTIONAL :: LSCALE(:), RSCALE(:),       &
619     &                                      RCONDE(:), RCONDV(:)
620         COMPLEX(WP), INTENT(OUT), OPTIONAL :: VL(:,:), VR(:,:)
621       END SUBROUTINE CGGEVX_F95
622
623       SUBROUTINE ZGGEVX_F95( A, B, ALPHA, BETA, VL, VR, BALANC, ILO,   &
624     &                        IHI, LSCALE, RSCALE, ABNRM, BBNRM, RCONDE,&
625     &                        RCONDV, INFO )
626         USE LA_PRECISION, ONLY: WP => DP
627         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: BALANC
628         INTEGER, INTENT(OUT), OPTIONAL :: INFO
629         INTEGER, INTENT(OUT), OPTIONAL :: ILO,IHI
630         REAL(WP), INTENT(OUT), OPTIONAL :: ABNRM, BBNRM
631         COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
632         COMPLEX(WP), INTENT(OUT) :: ALPHA(:)
633         COMPLEX(WP), INTENT(OUT) :: BETA(:)
634         REAL(WP), INTENT(OUT), OPTIONAL :: LSCALE(:), RSCALE(:),       &
635     &                                      RCONDE(:), RCONDV(:)
636         COMPLEX(WP), INTENT(OUT), OPTIONAL :: VL(:,:), VR(:,:)
637       END SUBROUTINE ZGGEVX_F95
638
639       END INTERFACE
640
641       INTERFACE LA_GGEV
642
643       SUBROUTINE SGGEV_F95( A, B, ALPHAR, ALPHAI, BETA, VL, VR, INFO )
644         USE LA_PRECISION, ONLY: WP => SP
645         INTEGER, INTENT(OUT), OPTIONAL :: INFO
646         REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
647         REAL(WP), INTENT(OUT) :: ALPHAR(:), ALPHAI(:), BETA(:)
648         REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:), VR(:,:)
649       END SUBROUTINE SGGEV_F95
650
651       SUBROUTINE DGGEV_F95( A, B, ALPHAR, ALPHAI, BETA, VL, VR, INFO )
652         USE LA_PRECISION, ONLY: WP => DP
653         INTEGER, INTENT(OUT), OPTIONAL :: INFO
654         REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
655         REAL(WP), INTENT(OUT) :: ALPHAR(:), ALPHAI(:), BETA(:)
656         REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:), VR(:,:)
657       END SUBROUTINE DGGEV_F95
658
659       SUBROUTINE CGGEV_F95( A, B, ALPHA, BETA, VL, VR, INFO )
660         USE LA_PRECISION, ONLY: WP => SP
661         INTEGER, INTENT(OUT), OPTIONAL :: INFO
662         COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
663         COMPLEX(WP), INTENT(OUT) ::  ALPHA(:), BETA(:)
664         COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:), VR(:,:)
665        END SUBROUTINE CGGEV_F95
666
667       SUBROUTINE ZGGEV_F95( A, B, ALPHA, BETA, VL, VR, INFO )
668         USE LA_PRECISION, ONLY: WP => DP
669         INTEGER, INTENT(OUT), OPTIONAL :: INFO
670         COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
671         COMPLEX(WP), INTENT(OUT) ::  ALPHA(:), BETA(:)
672         COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:), VR(:,:)
673        END SUBROUTINE ZGGEV_F95
674
675       END INTERFACE
676
677      INTERFACE LA_GEEV
678
679       SUBROUTINE SGEEV_F95( A, WR, WI, VL, VR, INFO )
680          USE LA_PRECISION, ONLY: WP => SP
681          INTEGER, INTENT(OUT), OPTIONAL :: INFO
682          REAL(WP), INTENT(INOUT) :: A(:,:)
683          REAL(WP), INTENT(OUT) :: WR(:), WI(:)
684          REAL(WP), INTENT(OUT), OPTIONAL :: VL(:,:), VR(:,:)
685       END SUBROUTINE SGEEV_F95
686
687       SUBROUTINE DGEEV_F95( A, WR, WI, VL, VR, INFO )
688          USE LA_PRECISION, ONLY: WP => DP
689          INTEGER, INTENT(OUT), OPTIONAL :: INFO
690          REAL(WP), INTENT(INOUT) :: A(:,:)
691          REAL(WP), INTENT(OUT) :: WR(:), WI(:)
692          REAL(WP), INTENT(OUT), OPTIONAL :: VL(:,:), VR(:,:)
693       END SUBROUTINE DGEEV_F95
694
695       SUBROUTINE CGEEV_F95( A, W, VL, VR, INFO )
696          USE LA_PRECISION, ONLY: WP => SP
697          INTEGER, INTENT(OUT), OPTIONAL :: INFO
698          COMPLEX(WP), INTENT(INOUT) :: A(:,:)
699          COMPLEX(WP), INTENT(OUT) :: W(:)
700          COMPLEX(WP), INTENT(OUT), OPTIONAL :: VL(:,:), VR(:,:)
701       END SUBROUTINE CGEEV_F95
702
703       SUBROUTINE ZGEEV_F95( A, W, VL, VR, INFO )
704          USE LA_PRECISION, ONLY: WP => DP
705          INTEGER, INTENT(OUT), OPTIONAL :: INFO
706          COMPLEX(WP), INTENT(INOUT) :: A(:,:)
707          COMPLEX(WP), INTENT(OUT) :: W(:)
708          COMPLEX(WP), INTENT(OUT), OPTIONAL :: VL(:,:), VR(:,:)
709       END SUBROUTINE ZGEEV_F95
710
711      END INTERFACE
712
713      INTERFACE LA_GEESX
714
715       SUBROUTINE SGEESX_F95( A, WR, WI, VS, SELECT, SDIM, RCONDE,      &
716     &                        RCONDV, INFO )
717          USE LA_PRECISION, ONLY: WP => SP
718!         USE LA_EXTERNAL
719          INTERFACE
720             LOGICAL FUNCTION SELECT(WR, WI)
721                USE LA_PRECISION, ONLY: WP => SP
722                REAL(WP), INTENT(IN) :: WR, WI
723             END FUNCTION SELECT
724          END INTERFACE
725          INTEGER, INTENT(OUT), OPTIONAL :: INFO, SDIM
726          REAL(WP), INTENT(INOUT) :: A(:,:)
727          REAL(WP), INTENT(OUT) :: WR(:), WI(:)
728          REAL(WP), INTENT(OUT), OPTIONAL :: RCONDE, RCONDV
729          REAL(WP), INTENT(OUT), OPTIONAL :: VS(:,:)
730          OPTIONAL :: SELECT
731       END SUBROUTINE SGEESX_F95
732
733       SUBROUTINE DGEESX_F95( A, WR, WI, VS, SELECT, SDIM, RCONDE,      &
734     &                        RCONDV, INFO )
735          USE LA_PRECISION, ONLY: WP => DP
736!         USE LA_EXTERNAL
737          INTERFACE
738             LOGICAL FUNCTION SELECT(WR, WI)
739                USE LA_PRECISION, ONLY: WP => DP
740                REAL(WP), INTENT(IN) :: WR, WI
741             END FUNCTION SELECT
742          END INTERFACE
743          INTEGER, INTENT(OUT), OPTIONAL :: INFO, SDIM
744          REAL(WP), INTENT(INOUT) :: A(:,:)
745          REAL(WP), INTENT(OUT) :: WR(:), WI(:)
746          REAL(WP), INTENT(OUT), OPTIONAL :: RCONDE, RCONDV
747          REAL(WP), INTENT(OUT), OPTIONAL :: VS(:,:)
748          OPTIONAL :: SELECT
749       END SUBROUTINE DGEESX_F95
750
751       SUBROUTINE CGEESX_F95( A, W, VS, SELECT, SDIM, RCONDE, RCONDV,   &
752     &                        INFO )
753          USE LA_PRECISION, ONLY: WP => SP
754          INTERFACE
755             LOGICAL FUNCTION SELECT(W)
756                USE LA_PRECISION, ONLY: WP => SP
757                COMPLEX(WP), INTENT(IN) :: W
758             END FUNCTION SELECT
759          END INTERFACE
760          INTEGER, INTENT(OUT), OPTIONAL :: INFO, SDIM
761          COMPLEX(WP), INTENT(INOUT) :: A(:,:)
762          COMPLEX(WP), INTENT(OUT) :: W(:)
763          REAL(WP), INTENT(OUT), OPTIONAL :: RCONDE, RCONDV
764          COMPLEX(WP), INTENT(OUT), OPTIONAL :: VS(:,:)
765          OPTIONAL :: SELECT
766       END SUBROUTINE CGEESX_F95
767
768       SUBROUTINE ZGEESX_F95( A, W, VS, SELECT, SDIM, RCONDE, RCONDV,   &
769     &                        INFO )
770          USE LA_PRECISION, ONLY: WP => DP
771          INTERFACE
772             LOGICAL FUNCTION SELECT(W)
773                USE LA_PRECISION, ONLY: WP => DP
774                COMPLEX(WP), INTENT(IN) :: W
775             END FUNCTION SELECT
776          END INTERFACE
777          INTEGER, INTENT(OUT), OPTIONAL :: INFO, SDIM
778          COMPLEX(WP), INTENT(INOUT) :: A(:,:)
779          COMPLEX(WP), INTENT(OUT) :: W(:)
780          REAL(WP), INTENT(OUT), OPTIONAL :: RCONDE, RCONDV
781          COMPLEX(WP), INTENT(OUT), OPTIONAL :: VS(:,:)
782          OPTIONAL :: SELECT
783       END SUBROUTINE ZGEESX_F95
784
785      END INTERFACE
786
787        INTERFACE LA_GGESX
788
789       SUBROUTINE SGGESX_F95( A, B, ALPHAR, ALPHAI, BETA, VSL, VSR,     &
790     &                        SELECT, SDIM, RCONDE, RCONDV, INFO )
791          USE LA_PRECISION, ONLY: WP => SP
792          INTEGER, INTENT(OUT), OPTIONAL :: INFO
793          REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
794          INTEGER, INTENT(OUT), OPTIONAL :: SDIM
795          REAL(WP), INTENT(OUT) :: ALPHAR(:), ALPHAI(:),  BETA(:)
796          REAL(WP), INTENT(OUT), OPTIONAL :: VSL(:,:), VSR(:,:)
797          INTERFACE
798           LOGICAL FUNCTION SELECT(ALPHAR, ALPHAI, BETA)
799            USE LA_PRECISION, ONLY: WP => SP
800            REAL(WP), INTENT(IN) :: ALPHAR, ALPHAI, BETA
801           END FUNCTION SELECT
802          END INTERFACE
803          OPTIONAL :: SELECT
804          REAL(WP), INTENT(OUT), OPTIONAL :: RCONDE(2), RCONDV(2)
805        END SUBROUTINE SGGESX_F95
806
807       SUBROUTINE DGGESX_F95( A, B, ALPHAR, ALPHAI, BETA, VSL, VSR,     &
808     &                        SELECT, SDIM, RCONDE, RCONDV, INFO )
809          USE LA_PRECISION, ONLY: WP => DP
810          INTEGER, INTENT(OUT), OPTIONAL :: INFO
811          REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
812          INTEGER, INTENT(OUT), OPTIONAL :: SDIM
813          REAL(WP), INTENT(OUT) :: ALPHAR(:), ALPHAI(:),  BETA(:)
814          REAL(WP), INTENT(OUT), OPTIONAL :: VSL(:,:), VSR(:,:)
815          INTERFACE
816           LOGICAL FUNCTION SELECT(ALPHAR, ALPHAI, BETA)
817            USE LA_PRECISION, ONLY: WP => DP
818            REAL(WP), INTENT(IN) :: ALPHAR, ALPHAI, BETA
819           END FUNCTION SELECT
820          END INTERFACE
821          OPTIONAL :: SELECT
822          REAL(WP), INTENT(OUT), OPTIONAL :: RCONDE(2), RCONDV(2)
823        END SUBROUTINE DGGESX_F95
824
825       SUBROUTINE CGGESX_F95( A, B, ALPHA, BETA, VSL, VSR, SELECT, SDIM,&
826     &                        RCONDE, RCONDV, INFO )
827           USE LA_PRECISION, ONLY: WP => SP
828           INTEGER, INTENT(OUT), OPTIONAL :: INFO
829           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
830           INTEGER, INTENT(OUT), OPTIONAL :: SDIM
831           COMPLEX(WP), INTENT(OUT) :: ALPHA(:), BETA(:)
832           COMPLEX(WP), INTENT(OUT), OPTIONAL :: VSL(:,:), VSR(:,:)
833           INTERFACE
834            LOGICAL FUNCTION SELECT(ALPHA, BETA)
835              USE LA_PRECISION, ONLY: WP => SP
836              COMPLEX(WP), INTENT(IN) :: ALPHA, BETA
837           END FUNCTION SELECT
838          END INTERFACE
839          OPTIONAL :: SELECT
840          REAL(WP), INTENT(OUT), OPTIONAL :: RCONDE(2), RCONDV(2)
841         END SUBROUTINE  CGGESX_F95
842
843       SUBROUTINE ZGGESX_F95( A, B, ALPHA, BETA, VSL, VSR, SELECT, SDIM,&
844     &                        RCONDE, RCONDV, INFO )
845           USE LA_PRECISION, ONLY: WP => DP
846           INTEGER, INTENT(OUT), OPTIONAL :: INFO
847           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
848           INTEGER, INTENT(OUT), OPTIONAL :: SDIM
849           COMPLEX(WP), INTENT(OUT) :: ALPHA(:), BETA(:)
850           COMPLEX(WP), INTENT(OUT), OPTIONAL :: VSL(:,:), VSR(:,:)
851           INTERFACE
852            LOGICAL FUNCTION SELECT(ALPHA, BETA)
853              USE LA_PRECISION, ONLY: WP => DP
854              COMPLEX(WP), INTENT(IN) :: ALPHA, BETA
855           END FUNCTION SELECT
856          END INTERFACE
857          OPTIONAL :: SELECT
858          REAL(WP), INTENT(OUT), OPTIONAL :: RCONDE(2), RCONDV(2)
859         END SUBROUTINE  ZGGESX_F95
860
861        END INTERFACE
862
863
864       INTERFACE LA_GGES
865
866       SUBROUTINE SGGES_F95( A, B, ALPHAR, ALPHAI, BETA, VSL, VSR,      &
867     &                       SELECT, SDIM, INFO )
868           USE LA_PRECISION, ONLY: WP => SP
869           INTEGER, INTENT(OUT), OPTIONAL :: INFO
870           REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
871           INTEGER, INTENT(OUT), OPTIONAL :: SDIM
872           REAL(WP), INTENT(OUT) :: ALPHAR(:), ALPHAI(:), BETA(:)
873           REAL(WP), INTENT(OUT), OPTIONAL :: VSL(:,:), VSR(:,:)
874           INTERFACE
875             LOGICAL FUNCTION SELECT(ALPHAR, ALPHAI, BETA)
876               USE LA_PRECISION, ONLY: WP => SP
877               REAL(WP), INTENT(IN) :: ALPHAR, ALPHAI, BETA
878             END FUNCTION SELECT
879           END INTERFACE
880           OPTIONAL :: SELECT
881          END SUBROUTINE SGGES_F95
882
883       SUBROUTINE DGGES_F95( A, B, ALPHAR, ALPHAI, BETA, VSL, VSR,      &
884     &                       SELECT, SDIM, INFO )
885           USE LA_PRECISION, ONLY: WP => DP
886           INTEGER, INTENT(OUT), OPTIONAL :: INFO
887           REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
888           INTEGER, INTENT(OUT), OPTIONAL :: SDIM
889           REAL(WP), INTENT(OUT) :: ALPHAR(:), ALPHAI(:), BETA(:)
890           REAL(WP), INTENT(OUT), OPTIONAL :: VSL(:,:), VSR(:,:)
891           INTERFACE
892             LOGICAL FUNCTION SELECT(ALPHAR, ALPHAI, BETA)
893               USE LA_PRECISION, ONLY: WP => DP
894               REAL(WP), INTENT(IN) :: ALPHAR, ALPHAI, BETA
895             END FUNCTION SELECT
896           END INTERFACE
897           OPTIONAL :: SELECT
898          END SUBROUTINE DGGES_F95
899
900       SUBROUTINE CGGES_F95( A, B, ALPHA, BETA, VSL, VSR, SELECT, SDIM, &
901     &                       INFO )
902         USE LA_PRECISION, ONLY: WP => SP
903         INTEGER, INTENT(OUT), OPTIONAL :: INFO
904         COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
905         INTEGER, INTENT(OUT), OPTIONAL :: SDIM
906         COMPLEX(WP), INTENT(OUT) :: ALPHA(:),  BETA(:)
907         COMPLEX(WP), INTENT(OUT), OPTIONAL :: VSL(:,:), VSR(:,:)
908         INTERFACE
909           LOGICAL FUNCTION SELECT(ALPHA, BETA)
910             USE LA_PRECISION, ONLY: WP => SP
911             COMPLEX(WP), INTENT(IN) :: ALPHA, BETA
912           END FUNCTION SELECT
913         END INTERFACE
914         OPTIONAL :: SELECT
915       END SUBROUTINE CGGES_F95
916
917       SUBROUTINE ZGGES_F95( A, B, ALPHA, BETA, VSL, VSR, SELECT, SDIM, &
918     &                       INFO )
919         USE LA_PRECISION, ONLY: WP => DP
920         INTEGER, INTENT(OUT), OPTIONAL :: INFO
921         COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
922         INTEGER, INTENT(OUT), OPTIONAL :: SDIM
923         COMPLEX(WP), INTENT(OUT) :: ALPHA(:),  BETA(:)
924         COMPLEX(WP), INTENT(OUT), OPTIONAL :: VSL(:,:), VSR(:,:)
925         INTERFACE
926           LOGICAL FUNCTION SELECT(ALPHA, BETA)
927             USE LA_PRECISION, ONLY: WP => DP
928             COMPLEX(WP), INTENT(IN) :: ALPHA, BETA
929           END FUNCTION SELECT
930         END INTERFACE
931         OPTIONAL :: SELECT
932       END SUBROUTINE ZGGES_F95
933
934       END INTERFACE
935
936      INTERFACE LA_GEES
937
938       SUBROUTINE SGEES_F95( A, WR, WI, VS, SELECT, SDIM, INFO )
939          USE LA_PRECISION, ONLY: WP => SP
940!         USE LA_EXTERNAL, ONLY: SELECT
941          INTERFACE
942             LOGICAL FUNCTION SELECT(WR, WI)
943                USE LA_PRECISION, ONLY: WP => SP
944                REAL(WP), INTENT(IN) :: WR, WI
945             END FUNCTION SELECT
946          END INTERFACE
947
948          INTEGER, INTENT(OUT), OPTIONAL :: INFO, SDIM
949          REAL(WP), INTENT(INOUT) :: A(:,:)
950          REAL(WP), INTENT(OUT) :: WR(:), WI(:)
951          REAL(WP), INTENT(OUT), OPTIONAL :: VS(:,:)
952          OPTIONAL :: SELECT
953       END SUBROUTINE SGEES_F95
954
955       SUBROUTINE DGEES_F95( A, WR, WI, VS, SELECT, SDIM, INFO )
956          USE LA_PRECISION, ONLY: WP => DP
957!         USE LA_EXTERNAL, ONLY: SELECT
958          INTERFACE
959             LOGICAL FUNCTION SELECT(WR, WI)
960                USE LA_PRECISION, ONLY: WP => DP
961                REAL(WP), INTENT(IN) :: WR, WI
962             END FUNCTION SELECT
963          END INTERFACE
964
965          INTEGER, INTENT(OUT), OPTIONAL :: INFO, SDIM
966          REAL(WP), INTENT(INOUT) :: A(:,:)
967          REAL(WP), INTENT(OUT) :: WR(:), WI(:)
968          REAL(WP), INTENT(OUT), OPTIONAL :: VS(:,:)
969          OPTIONAL :: SELECT
970       END SUBROUTINE DGEES_F95
971
972       SUBROUTINE CGEES_F95( A, W, VS, SELECT, SDIM, INFO )
973          USE LA_PRECISION, ONLY: WP => SP
974          INTERFACE
975             LOGICAL FUNCTION SELECT(W)
976                USE LA_PRECISION, ONLY: WP => SP
977                COMPLEX(WP), INTENT(IN) :: W
978             END FUNCTION SELECT
979          END INTERFACE
980          INTEGER, INTENT(OUT), OPTIONAL :: INFO, SDIM
981          COMPLEX(WP), INTENT(INOUT) :: A(:,:)
982          COMPLEX(WP), INTENT(OUT) :: W(:)
983          COMPLEX(WP), INTENT(OUT), OPTIONAL :: VS(:,:)
984          OPTIONAL :: SELECT
985       END SUBROUTINE CGEES_F95
986
987       SUBROUTINE ZGEES_F95( A, W, VS, SELECT, SDIM, INFO )
988          USE LA_PRECISION, ONLY: WP => DP
989          INTERFACE
990             LOGICAL FUNCTION SELECT(W)
991                USE LA_PRECISION, ONLY: WP => DP
992                COMPLEX(WP), INTENT(IN) :: W
993             END FUNCTION SELECT
994          END INTERFACE
995          INTEGER, INTENT(OUT), OPTIONAL :: INFO, SDIM
996          COMPLEX(WP), INTENT(INOUT) :: A(:,:)
997          COMPLEX(WP), INTENT(OUT) :: W(:)
998          COMPLEX(WP), INTENT(OUT), OPTIONAL :: VS(:,:)
999          OPTIONAL :: SELECT
1000       END SUBROUTINE ZGEES_F95
1001
1002      END INTERFACE
1003
1004        INTERFACE LA_STEVR
1005
1006       SUBROUTINE SSTEVR_F95( D, E, W, Z, VL, VU, IL, IU, M, ISUPPZ,    &
1007     &                        ABSTOL, INFO )
1008         USE LA_PRECISION, ONLY: WP =>  SP
1009          REAL(WP), INTENT(INOUT) :: D(:), E(:)
1010          REAL(WP), INTENT(OUT) :: W(:)
1011          INTEGER, INTENT(OUT), OPTIONAL :: INFO
1012          REAL(WP), INTENT(IN), OPTIONAL:: ABSTOL, VL, VU
1013          INTEGER, INTENT(IN), OPTIONAL :: IL, IU
1014          INTEGER, INTENT(OUT), OPTIONAL :: M
1015          REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1016          INTEGER, INTENT(OUT), OPTIONAL, TARGET :: ISUPPZ(:)
1017         END SUBROUTINE SSTEVR_F95
1018
1019       SUBROUTINE DSTEVR_F95( D, E, W, Z, VL, VU, IL, IU, M, ISUPPZ,    &
1020     &                        ABSTOL, INFO )
1021         USE LA_PRECISION, ONLY: WP =>  DP
1022          REAL(WP), INTENT(INOUT) :: D(:), E(:)
1023          REAL(WP), INTENT(OUT) :: W(:)
1024          INTEGER, INTENT(OUT), OPTIONAL :: INFO
1025          REAL(WP), INTENT(IN), OPTIONAL:: ABSTOL, VL, VU
1026          INTEGER, INTENT(IN), OPTIONAL :: IL, IU
1027          INTEGER, INTENT(OUT), OPTIONAL :: M
1028          REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1029          INTEGER, INTENT(OUT), OPTIONAL, TARGET :: ISUPPZ(:)
1030         END SUBROUTINE DSTEVR_F95
1031
1032        END INTERFACE
1033
1034      INTERFACE LA_STEVX
1035
1036       SUBROUTINE SSTEVX_F95( D, E, W, Z, VL, VU, IL, IU, M, IFAIL,     &
1037     &                        ABSTOL, INFO )
1038          USE LA_PRECISION, ONLY: WP => SP
1039          INTEGER, INTENT(IN), OPTIONAL :: IL, IU
1040          INTEGER, INTENT(OUT), OPTIONAL :: INFO, M
1041          REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
1042          INTEGER, INTENT(OUT), OPTIONAL :: IFAIL(:)
1043          REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1044          REAL(WP), INTENT(INOUT) :: D(:), E(:)
1045          REAL(WP), INTENT(OUT) :: W(:)
1046       END SUBROUTINE SSTEVX_F95
1047
1048       SUBROUTINE DSTEVX_F95( D, E, W, Z, VL, VU, IL, IU, M, IFAIL,     &
1049     &                        ABSTOL, INFO )
1050          USE LA_PRECISION, ONLY: WP => DP
1051          INTEGER, INTENT(IN), OPTIONAL :: IL, IU
1052          INTEGER, INTENT(OUT), OPTIONAL :: INFO, M
1053          REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
1054          INTEGER, INTENT(OUT), OPTIONAL :: IFAIL(:)
1055          REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1056          REAL(WP), INTENT(INOUT) :: D(:), E(:)
1057          REAL(WP), INTENT(OUT) :: W(:)
1058       END SUBROUTINE DSTEVX_F95
1059
1060      END INTERFACE
1061
1062      INTERFACE LA_STEVD
1063
1064       SUBROUTINE SSTEVD_F95( D, E, Z, INFO )
1065           USE LA_PRECISION, ONLY: WP => SP
1066           REAL(WP), INTENT(INOUT) :: D(:), E(:)
1067           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1068           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1069      END SUBROUTINE SSTEVD_F95
1070
1071       SUBROUTINE DSTEVD_F95( D, E, Z, INFO )
1072           USE LA_PRECISION, ONLY: WP => DP
1073           REAL(WP), INTENT(INOUT) :: D(:), E(:)
1074           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1075           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1076      END SUBROUTINE DSTEVD_F95
1077
1078      END INTERFACE
1079
1080      INTERFACE LA_STEV
1081
1082       SUBROUTINE SSTEV_F95( D, E, Z, INFO )
1083           USE LA_PRECISION, ONLY: WP => SP
1084           REAL(WP), INTENT(INOUT) :: D(:), E(:)
1085           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1086           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1087        END SUBROUTINE SSTEV_F95
1088
1089       SUBROUTINE DSTEV_F95( D, E, Z, INFO )
1090           USE LA_PRECISION, ONLY: WP => DP
1091           REAL(WP), INTENT(INOUT) :: D(:), E(:)
1092           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1093           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1094        END SUBROUTINE DSTEV_F95
1095
1096      END INTERFACE
1097
1098      INTERFACE LA_SBEVX
1099
1100       SUBROUTINE SSBEVX_F95( AB, W, UPLO, Z, VL, VU, IL, IU, M, IFAIL, &
1101     &                        Q, ABSTOL, INFO )
1102           USE LA_PRECISION, ONLY: WP => SP
1103           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1104           INTEGER, INTENT(IN), OPTIONAL :: IL, IU
1105           INTEGER, INTENT(OUT), OPTIONAL :: INFO, M
1106           REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
1107           INTEGER, INTENT(OUT), OPTIONAL :: IFAIL(:)
1108           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:), Q(:,:)
1109           REAL(WP), INTENT(INOUT) :: AB(:,:)
1110           REAL(WP), INTENT(OUT) :: W(:)
1111        END SUBROUTINE SSBEVX_F95
1112
1113       SUBROUTINE DSBEVX_F95( AB, W, UPLO, Z, VL, VU, IL, IU, M, IFAIL, &
1114     &                        Q, ABSTOL, INFO )
1115           USE LA_PRECISION, ONLY: WP => DP
1116           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1117           INTEGER, INTENT(IN), OPTIONAL :: IL, IU
1118           INTEGER, INTENT(OUT), OPTIONAL :: INFO, M
1119           REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
1120           INTEGER, INTENT(OUT), OPTIONAL :: IFAIL(:)
1121           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:), Q(:,:)
1122           REAL(WP), INTENT(INOUT) :: AB(:,:)
1123           REAL(WP), INTENT(OUT) :: W(:)
1124        END SUBROUTINE DSBEVX_F95
1125
1126      END INTERFACE
1127
1128      INTERFACE LA_HBEVX
1129
1130       SUBROUTINE CHBEVX_F95( AB, W, UPLO, Z, VL, VU, IL, IU, M, IFAIL, &
1131     &                        Q, ABSTOL, INFO )
1132           USE LA_PRECISION, ONLY: WP => SP
1133           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1134           INTEGER, INTENT(IN), OPTIONAL :: IL, IU
1135           INTEGER, INTENT(OUT), OPTIONAL :: INFO, M
1136           REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
1137           INTEGER, INTENT(OUT), OPTIONAL :: IFAIL(:)
1138           COMPLEX(WP), INTENT(OUT), OPTIONAL :: Z(:,:), Q(:,:)
1139           COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
1140           REAL(WP), INTENT(OUT) :: W(:)
1141        END SUBROUTINE CHBEVX_F95
1142
1143       SUBROUTINE ZHBEVX_F95( AB, W, UPLO, Z, VL, VU, IL, IU, M, IFAIL, &
1144     &                        Q, ABSTOL, INFO )
1145           USE LA_PRECISION, ONLY: WP => DP
1146           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1147           INTEGER, INTENT(IN), OPTIONAL :: IL, IU
1148           INTEGER, INTENT(OUT), OPTIONAL :: INFO, M
1149           REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
1150           INTEGER, INTENT(OUT), OPTIONAL :: IFAIL(:)
1151           COMPLEX(WP), INTENT(OUT), OPTIONAL :: Z(:,:), Q(:,:)
1152           COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
1153           REAL(WP), INTENT(OUT) :: W(:)
1154        END SUBROUTINE ZHBEVX_F95
1155
1156      END INTERFACE
1157
1158      INTERFACE LA_SBEVD
1159
1160       SUBROUTINE SSBEVD_F95( AB, W, UPLO, Z, INFO )
1161           USE LA_PRECISION, ONLY: WP => SP
1162           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1163           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1164           REAL(WP), INTENT(INOUT) :: AB(:,:)
1165           REAL(WP), INTENT(OUT) :: W(:)
1166           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1167        END SUBROUTINE SSBEVD_F95
1168
1169       SUBROUTINE DSBEVD_F95( AB, W, UPLO, Z, INFO )
1170           USE LA_PRECISION, ONLY: WP => DP
1171           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1172           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1173           REAL(WP), INTENT(INOUT) :: AB(:,:)
1174           REAL(WP), INTENT(OUT) :: W(:)
1175           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1176        END SUBROUTINE DSBEVD_F95
1177
1178      END INTERFACE
1179
1180      INTERFACE LA_HBEVD
1181
1182       SUBROUTINE CHBEVD_F95( AB, W, UPLO, Z, INFO )
1183           USE LA_PRECISION, ONLY: WP => SP
1184           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1185           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1186           COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
1187           REAL(WP), INTENT(OUT) :: W(:)
1188           COMPLEX(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1189        END SUBROUTINE CHBEVD_F95
1190
1191       SUBROUTINE ZHBEVD_F95( AB, W, UPLO, Z, INFO )
1192           USE LA_PRECISION, ONLY: WP => DP
1193           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1194           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1195           COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
1196           REAL(WP), INTENT(OUT) :: W(:)
1197           COMPLEX(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1198        END SUBROUTINE ZHBEVD_F95
1199
1200      END INTERFACE
1201
1202      INTERFACE LA_SBEV
1203
1204       SUBROUTINE SSBEV_F95( AB, W, UPLO, Z, INFO )
1205           USE LA_PRECISION, ONLY: WP => SP
1206           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1207           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1208           REAL(WP), INTENT(INOUT) :: AB(:,:)
1209           REAL(WP), INTENT(OUT) :: W(:)
1210           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1211        END SUBROUTINE SSBEV_F95
1212
1213       SUBROUTINE DSBEV_F95( AB, W, UPLO, Z, INFO )
1214           USE LA_PRECISION, ONLY: WP => DP
1215           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1216           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1217           REAL(WP), INTENT(INOUT) :: AB(:,:)
1218           REAL(WP), INTENT(OUT) :: W(:)
1219           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1220        END SUBROUTINE DSBEV_F95
1221
1222      END INTERFACE
1223
1224      INTERFACE LA_HBEV
1225
1226       SUBROUTINE CHBEV_F95( AB, W, UPLO, Z, INFO )
1227           USE LA_PRECISION, ONLY: WP => SP
1228           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1229           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1230           COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
1231           REAL(WP), INTENT(OUT) :: W(:)
1232           COMPLEX(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1233        END SUBROUTINE CHBEV_F95
1234
1235       SUBROUTINE ZHBEV_F95( AB, W, UPLO, Z, INFO )
1236           USE LA_PRECISION, ONLY: WP => DP
1237           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1238           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1239           COMPLEX(WP), INTENT(INOUT) :: AB(:,:)
1240           REAL(WP), INTENT(OUT) :: W(:)
1241           COMPLEX(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1242        END SUBROUTINE ZHBEV_F95
1243
1244      END INTERFACE
1245
1246      INTERFACE LA_SPEVX
1247
1248       SUBROUTINE SSPEVX_F95( AP, W, UPLO, Z, VL, VU, IL, IU, M, IFAIL, &
1249     &                        ABSTOL, INFO )
1250           USE LA_PRECISION, ONLY: WP => SP
1251           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1252           INTEGER, INTENT(IN), OPTIONAL :: IL, IU
1253           INTEGER, INTENT(OUT), OPTIONAL :: INFO, M
1254           REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
1255           INTEGER, INTENT(OUT), OPTIONAL :: IFAIL(:)
1256           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1257           REAL(WP), INTENT(INOUT) :: AP(:)
1258           REAL(WP), INTENT(OUT) :: W(:)
1259        END SUBROUTINE SSPEVX_F95
1260
1261       SUBROUTINE DSPEVX_F95( AP, W, UPLO, Z, VL, VU, IL, IU, M, IFAIL, &
1262     &                        ABSTOL, INFO )
1263           USE LA_PRECISION, ONLY: WP => DP
1264           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1265           INTEGER, INTENT(IN), OPTIONAL :: IL, IU
1266           INTEGER, INTENT(OUT), OPTIONAL :: INFO, M
1267           REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
1268           INTEGER, INTENT(OUT), OPTIONAL :: IFAIL(:)
1269           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1270           REAL(WP), INTENT(INOUT) :: AP(:)
1271           REAL(WP), INTENT(OUT) :: W(:)
1272        END SUBROUTINE DSPEVX_F95
1273
1274      END INTERFACE
1275
1276      INTERFACE LA_HPEVX
1277
1278       SUBROUTINE CHPEVX_F95( AP, W, UPLO, Z, VL, VU, IL, IU, M, IFAIL, &
1279     &                        ABSTOL, INFO )
1280           USE LA_PRECISION, ONLY: WP => SP
1281           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1282           INTEGER, INTENT(IN), OPTIONAL :: IL, IU
1283           INTEGER, INTENT(OUT), OPTIONAL :: INFO, M
1284           REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
1285           INTEGER, INTENT(OUT), OPTIONAL :: IFAIL(:)
1286           COMPLEX(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1287           COMPLEX(WP), INTENT(INOUT) :: AP(:)
1288           REAL(WP), INTENT(OUT) :: W(:)
1289        END SUBROUTINE CHPEVX_F95
1290
1291       SUBROUTINE ZHPEVX_F95( AP, W, UPLO, Z, VL, VU, IL, IU, M, IFAIL, &
1292     &                        ABSTOL, INFO )
1293           USE LA_PRECISION, ONLY: WP => DP
1294           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1295           INTEGER, INTENT(IN), OPTIONAL :: IL, IU
1296           INTEGER, INTENT(OUT), OPTIONAL :: INFO, M
1297           REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
1298           INTEGER, INTENT(OUT), OPTIONAL :: IFAIL(:)
1299           COMPLEX(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1300           COMPLEX(WP), INTENT(INOUT) :: AP(:)
1301           REAL(WP), INTENT(OUT) :: W(:)
1302        END SUBROUTINE ZHPEVX_F95
1303
1304      END INTERFACE
1305
1306      INTERFACE LA_SPEVD
1307
1308       SUBROUTINE SSPEVD_F95( AP, W, UPLO, Z, INFO )
1309           USE LA_PRECISION, ONLY: WP => SP
1310           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1311           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1312           REAL(WP), INTENT(INOUT) :: AP(:)
1313           REAL(WP), INTENT(OUT) :: W(:)
1314           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1315        END SUBROUTINE SSPEVD_F95
1316
1317       SUBROUTINE DSPEVD_F95( AP, W, UPLO, Z, INFO )
1318           USE LA_PRECISION, ONLY: WP => DP
1319           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1320           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1321           REAL(WP), INTENT(INOUT) :: AP(:)
1322           REAL(WP), INTENT(OUT) :: W(:)
1323           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1324        END SUBROUTINE DSPEVD_F95
1325
1326      END INTERFACE
1327
1328      INTERFACE LA_HPEVD
1329
1330       SUBROUTINE CHPEVD_F95( AP, W, UPLO, Z, INFO )
1331           USE LA_PRECISION, ONLY: WP => SP
1332           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1333           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1334           COMPLEX(WP), INTENT(INOUT) :: AP(:)
1335           REAL(WP), INTENT(OUT) :: W(:)
1336           COMPLEX(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1337        END SUBROUTINE CHPEVD_F95
1338
1339       SUBROUTINE ZHPEVD_F95( AP, W, UPLO, Z, INFO )
1340           USE LA_PRECISION, ONLY: WP => DP
1341           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1342           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1343           COMPLEX(WP), INTENT(INOUT) :: AP(:)
1344           REAL(WP), INTENT(OUT) :: W(:)
1345           COMPLEX(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1346        END SUBROUTINE ZHPEVD_F95
1347
1348      END INTERFACE
1349
1350      INTERFACE LA_SPEV
1351
1352       SUBROUTINE SSPEV_F95( AP, W, UPLO, Z, INFO )
1353           USE LA_PRECISION, ONLY: WP => SP
1354           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1355           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1356           REAL(WP), INTENT(INOUT) :: AP(:)
1357           REAL(WP), INTENT(OUT) :: W(:)
1358           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1359        END SUBROUTINE SSPEV_F95
1360
1361       SUBROUTINE DSPEV_F95( AP, W, UPLO, Z, INFO )
1362           USE LA_PRECISION, ONLY: WP => DP
1363           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1364           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1365           REAL(WP), INTENT(INOUT) :: AP(:)
1366           REAL(WP), INTENT(OUT) :: W(:)
1367           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1368        END SUBROUTINE DSPEV_F95
1369
1370      END INTERFACE
1371
1372      INTERFACE LA_HPEV
1373
1374       SUBROUTINE CHPEV_F95( AP, W, UPLO, Z, INFO )
1375           USE LA_PRECISION, ONLY: WP => SP
1376           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1377           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1378           COMPLEX(WP), INTENT(INOUT) :: AP(:)
1379           REAL(WP), INTENT(OUT) :: W(:)
1380           COMPLEX(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1381        END SUBROUTINE CHPEV_F95
1382
1383       SUBROUTINE ZHPEV_F95( AP, W, UPLO, Z, INFO )
1384           USE LA_PRECISION, ONLY: WP => DP
1385           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1386           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1387           COMPLEX(WP), INTENT(INOUT) :: AP(:)
1388           REAL(WP), INTENT(OUT) :: W(:)
1389           COMPLEX(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
1390        END SUBROUTINE ZHPEV_F95
1391
1392      END INTERFACE
1393
1394      INTERFACE LA_GGGLM
1395
1396       SUBROUTINE SGGGLM_F95( A, B, D, X, Y, INFO )
1397           USE LA_PRECISION, ONLY: WP => SP
1398           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:,:), D(:)
1399           REAL(WP), INTENT( OUT ) :: X(:), Y(:)
1400           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1401        END SUBROUTINE SGGGLM_F95
1402
1403       SUBROUTINE DGGGLM_F95( A, B, D, X, Y, INFO )
1404           USE LA_PRECISION, ONLY: WP => DP
1405           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:,:), D(:)
1406           REAL(WP), INTENT( OUT ) :: X(:), Y(:)
1407           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1408        END SUBROUTINE DGGGLM_F95
1409
1410       SUBROUTINE CGGGLM_F95( A, B, D, X, Y, INFO )
1411           USE LA_PRECISION, ONLY: WP => SP
1412           COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:,:), D(:)
1413           COMPLEX(WP), INTENT( OUT ) :: X(:), Y(:)
1414           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1415        END SUBROUTINE CGGGLM_F95
1416
1417       SUBROUTINE ZGGGLM_F95( A, B, D, X, Y, INFO )
1418           USE LA_PRECISION, ONLY: WP => DP
1419           COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:,:), D(:)
1420           COMPLEX(WP), INTENT( OUT ) :: X(:), Y(:)
1421           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1422        END SUBROUTINE ZGGGLM_F95
1423
1424      END INTERFACE
1425
1426      INTERFACE LA_GGLSE
1427
1428       SUBROUTINE SGGLSE_F95( A, B, C, D, X, INFO )
1429           USE LA_PRECISION, ONLY: WP => SP
1430           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:,:), C(:), D(:)
1431           REAL(WP), INTENT( OUT ) :: X(:)
1432           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1433        END SUBROUTINE SGGLSE_F95
1434
1435       SUBROUTINE DGGLSE_F95( A, B, C, D, X, INFO )
1436           USE LA_PRECISION, ONLY: WP => DP
1437           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:,:), C(:), D(:)
1438           REAL(WP), INTENT( OUT ) :: X(:)
1439           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1440        END SUBROUTINE DGGLSE_F95
1441
1442       SUBROUTINE CGGLSE_F95( A, B, C, D, X, INFO )
1443           USE LA_PRECISION, ONLY: WP => SP
1444           COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:,:), C(:), D(:)
1445           COMPLEX(WP), INTENT( OUT ) :: X(:)
1446           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1447        END SUBROUTINE CGGLSE_F95
1448
1449       SUBROUTINE ZGGLSE_F95( A, B, C, D, X, INFO )
1450           USE LA_PRECISION, ONLY: WP => DP
1451           COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:,:), C(:), D(:)
1452           COMPLEX(WP), INTENT( OUT ) :: X(:)
1453           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1454        END SUBROUTINE ZGGLSE_F95
1455
1456      END INTERFACE
1457
1458         INTERFACE LA_GELSY
1459
1460       SUBROUTINE SGELSY_F95( A, B, RANK, JPVT, RCOND, INFO )
1461       USE LA_PRECISION, ONLY: WP => SP
1462       REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
1463       INTEGER, INTENT(OUT), OPTIONAL :: RANK
1464       INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: JPVT(:)
1465       REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1466       INTEGER, INTENT(OUT), OPTIONAL :: INFO
1467      END SUBROUTINE SGELSY_F95
1468
1469       SUBROUTINE SGELSY1_F95( A, B, RANK, JPVT, RCOND, INFO )
1470        USE LA_PRECISION, ONLY: WP => SP
1471        REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
1472        INTEGER, INTENT(OUT), OPTIONAL :: RANK
1473        INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: JPVT(:)
1474        REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1475        INTEGER, INTENT(OUT), OPTIONAL :: INFO
1476       END SUBROUTINE SGELSY1_F95
1477
1478       SUBROUTINE DGELSY_F95( A, B, RANK, JPVT, RCOND, INFO )
1479       USE LA_PRECISION, ONLY: WP => DP
1480       REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
1481       INTEGER, INTENT(OUT), OPTIONAL :: RANK
1482       INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: JPVT(:)
1483       REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1484       INTEGER, INTENT(OUT), OPTIONAL :: INFO
1485      END SUBROUTINE DGELSY_F95
1486
1487       SUBROUTINE DGELSY1_F95( A, B, RANK, JPVT, RCOND, INFO )
1488        USE LA_PRECISION, ONLY: WP => DP
1489        REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
1490        INTEGER, INTENT(OUT), OPTIONAL :: RANK
1491        INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: JPVT(:)
1492        REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1493        INTEGER, INTENT(OUT), OPTIONAL :: INFO
1494       END SUBROUTINE DGELSY1_F95
1495
1496       SUBROUTINE CGELSY_F95( A, B, RANK, JPVT, RCOND, INFO )
1497       USE LA_PRECISION, ONLY: WP => SP
1498       COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
1499       INTEGER, INTENT(OUT), OPTIONAL :: RANK
1500       INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: JPVT(:)
1501       REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1502       INTEGER, INTENT(OUT), OPTIONAL :: INFO
1503      END SUBROUTINE CGELSY_F95
1504
1505       SUBROUTINE CGELSY1_F95( A, B, RANK, JPVT, RCOND, INFO )
1506        USE LA_PRECISION, ONLY: WP => SP
1507        COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:)
1508        INTEGER, INTENT(OUT), OPTIONAL :: RANK
1509        INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: JPVT(:)
1510        REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1511        INTEGER, INTENT(OUT), OPTIONAL :: INFO
1512       END SUBROUTINE CGELSY1_F95
1513
1514       SUBROUTINE ZGELSY_F95( A, B, RANK, JPVT, RCOND, INFO )
1515       USE LA_PRECISION, ONLY: WP => DP
1516       COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
1517       INTEGER, INTENT(OUT), OPTIONAL :: RANK
1518       INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: JPVT(:)
1519       REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1520       INTEGER, INTENT(OUT), OPTIONAL :: INFO
1521      END SUBROUTINE ZGELSY_F95
1522
1523       SUBROUTINE ZGELSY1_F95( A, B, RANK, JPVT, RCOND, INFO )
1524        USE LA_PRECISION, ONLY: WP => DP
1525        COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:)
1526        INTEGER, INTENT(OUT), OPTIONAL :: RANK
1527        INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: JPVT(:)
1528        REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1529        INTEGER, INTENT(OUT), OPTIONAL :: INFO
1530       END SUBROUTINE ZGELSY1_F95
1531
1532      END INTERFACE
1533
1534        INTERFACE LA_GELSD
1535
1536       SUBROUTINE SGELSD_F95( A, B, RANK, S, RCOND, INFO )
1537         USE LA_PRECISION, ONLY: WP => SP
1538         REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
1539         INTEGER, INTENT(IN), OPTIONAL :: RANK
1540         REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
1541         REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1542         INTEGER, INTENT(OUT), OPTIONAL :: INFO
1543       END SUBROUTINE SGELSD_F95
1544
1545       SUBROUTINE SGELSD1_F95( A, B, RANK, S, RCOND, INFO )
1546        USE LA_PRECISION, ONLY: WP => SP
1547        REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:)
1548        INTEGER, INTENT(IN), OPTIONAL :: RANK
1549        REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
1550        REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1551        INTEGER, INTENT(OUT), OPTIONAL :: INFO
1552       END SUBROUTINE SGELSD1_F95
1553
1554       SUBROUTINE DGELSD_F95( A, B, RANK, S, RCOND, INFO )
1555         USE LA_PRECISION, ONLY: WP => DP
1556         REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
1557         INTEGER, INTENT(IN), OPTIONAL :: RANK
1558         REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
1559         REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1560         INTEGER, INTENT(OUT), OPTIONAL :: INFO
1561       END SUBROUTINE DGELSD_F95
1562
1563       SUBROUTINE DGELSD1_F95( A, B, RANK, S, RCOND, INFO )
1564        USE LA_PRECISION, ONLY: WP => DP
1565        REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:)
1566        INTEGER, INTENT(IN), OPTIONAL :: RANK
1567        REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
1568        REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1569        INTEGER, INTENT(OUT), OPTIONAL :: INFO
1570       END SUBROUTINE DGELSD1_F95
1571
1572       SUBROUTINE CGELSD_F95( A, B, RANK, S, RCOND, INFO )
1573         USE LA_PRECISION, ONLY: WP => SP
1574         COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
1575         INTEGER, INTENT(IN), OPTIONAL :: RANK
1576         REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
1577         REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1578         INTEGER, INTENT(OUT), OPTIONAL :: INFO
1579       END SUBROUTINE CGELSD_F95
1580
1581       SUBROUTINE CGELSD1_F95( A, B, RANK, S, RCOND, INFO )
1582        USE LA_PRECISION, ONLY: WP => SP
1583        COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:)
1584        INTEGER, INTENT(IN), OPTIONAL :: RANK
1585        REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
1586        REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1587        INTEGER, INTENT(OUT), OPTIONAL :: INFO
1588       END SUBROUTINE CGELSD1_F95
1589
1590       SUBROUTINE ZGELSD_F95( A, B, RANK, S, RCOND, INFO )
1591         USE LA_PRECISION, ONLY: WP => DP
1592         COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
1593         INTEGER, INTENT(IN), OPTIONAL :: RANK
1594         REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
1595         REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1596         INTEGER, INTENT(OUT), OPTIONAL :: INFO
1597       END SUBROUTINE ZGELSD_F95
1598
1599       SUBROUTINE ZGELSD1_F95( A, B, RANK, S, RCOND, INFO )
1600        USE LA_PRECISION, ONLY: WP => DP
1601        COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:)
1602        INTEGER, INTENT(IN), OPTIONAL :: RANK
1603        REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
1604        REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1605        INTEGER, INTENT(OUT), OPTIONAL :: INFO
1606       END SUBROUTINE ZGELSD1_F95
1607
1608      END INTERFACE
1609
1610      INTERFACE LA_GELSX
1611
1612       SUBROUTINE SGELSX_F95( A, B, RANK, JPVT, RCOND, INFO )
1613           USE LA_PRECISION, ONLY: WP => SP
1614           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
1615           INTEGER, INTENT(IN), OPTIONAL :: RANK
1616           INTEGER, INTENT(OUT), OPTIONAL :: JPVT(:)
1617           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1618           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1619        END SUBROUTINE SGELSX_F95
1620
1621       SUBROUTINE SGELSX1_F95( A, B, RANK, JPVT, RCOND, INFO )
1622           USE LA_PRECISION, ONLY: WP => SP
1623           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:)
1624           INTEGER, INTENT(IN), OPTIONAL :: RANK
1625           INTEGER, INTENT(OUT), OPTIONAL :: JPVT(:)
1626           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1627           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1628        END SUBROUTINE SGELSX1_F95
1629
1630       SUBROUTINE DGELSX_F95( A, B, RANK, JPVT, RCOND, INFO )
1631           USE LA_PRECISION, ONLY: WP => DP
1632           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
1633           INTEGER, INTENT(IN), OPTIONAL :: RANK
1634           INTEGER, INTENT(OUT), OPTIONAL :: JPVT(:)
1635           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1636           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1637        END SUBROUTINE DGELSX_F95
1638
1639       SUBROUTINE DGELSX1_F95( A, B, RANK, JPVT, RCOND, INFO )
1640           USE LA_PRECISION, ONLY: WP => DP
1641           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:)
1642           INTEGER, INTENT(IN), OPTIONAL :: RANK
1643           INTEGER, INTENT(OUT), OPTIONAL :: JPVT(:)
1644           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1645           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1646        END SUBROUTINE DGELSX1_F95
1647
1648       SUBROUTINE CGELSX_F95( A, B, RANK, JPVT, RCOND, INFO )
1649           USE LA_PRECISION, ONLY: WP => SP
1650           COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
1651           INTEGER, INTENT(IN), OPTIONAL :: RANK
1652           INTEGER, INTENT(OUT), OPTIONAL :: JPVT(:)
1653           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1654           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1655        END SUBROUTINE CGELSX_F95
1656
1657       SUBROUTINE CGELSX1_F95( A, B, RANK, JPVT, RCOND, INFO )
1658           USE LA_PRECISION, ONLY: WP => SP
1659           COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:)
1660           INTEGER, INTENT(IN), OPTIONAL :: RANK
1661           INTEGER, INTENT(OUT), OPTIONAL :: JPVT(:)
1662           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1663           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1664        END SUBROUTINE CGELSX1_F95
1665
1666       SUBROUTINE ZGELSX_F95( A, B, RANK, JPVT, RCOND, INFO )
1667           USE LA_PRECISION, ONLY: WP => DP
1668           COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
1669           INTEGER, INTENT(IN), OPTIONAL :: RANK
1670           INTEGER, INTENT(OUT), OPTIONAL :: JPVT(:)
1671           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1672           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1673        END SUBROUTINE ZGELSX_F95
1674
1675       SUBROUTINE ZGELSX1_F95( A, B, RANK, JPVT, RCOND, INFO )
1676           USE LA_PRECISION, ONLY: WP => DP
1677           COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:)
1678           INTEGER, INTENT(IN), OPTIONAL :: RANK
1679           INTEGER, INTENT(OUT), OPTIONAL :: JPVT(:)
1680           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1681           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1682        END SUBROUTINE ZGELSX1_F95
1683
1684      END INTERFACE
1685
1686      INTERFACE LA_GELSS
1687
1688       SUBROUTINE SGELSS_F95( A, B, RANK, S, RCOND, INFO )
1689           USE LA_PRECISION, ONLY: WP => SP
1690           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
1691           INTEGER, INTENT(IN), OPTIONAL :: RANK
1692           REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
1693           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1694           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1695        END SUBROUTINE SGELSS_F95
1696
1697       SUBROUTINE SGELSS1_F95( A, B, RANK, S, RCOND, INFO )
1698           USE LA_PRECISION, ONLY: WP => SP
1699           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:)
1700           INTEGER, INTENT(IN), OPTIONAL :: RANK
1701           REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
1702           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1703           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1704        END SUBROUTINE SGELSS1_F95
1705
1706       SUBROUTINE DGELSS_F95( A, B, RANK, S, RCOND, INFO )
1707           USE LA_PRECISION, ONLY: WP => DP
1708           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
1709           INTEGER, INTENT(IN), OPTIONAL :: RANK
1710           REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
1711           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1712           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1713        END SUBROUTINE DGELSS_F95
1714
1715       SUBROUTINE DGELSS1_F95( A, B, RANK, S, RCOND, INFO )
1716           USE LA_PRECISION, ONLY: WP => DP
1717           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:)
1718           INTEGER, INTENT(IN), OPTIONAL :: RANK
1719           REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
1720           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1721           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1722        END SUBROUTINE DGELSS1_F95
1723
1724       SUBROUTINE CGELSS_F95( A, B, RANK, S, RCOND, INFO )
1725           USE LA_PRECISION, ONLY: WP => SP
1726           COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
1727           INTEGER, INTENT(IN), OPTIONAL :: RANK
1728           REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
1729           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1730           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1731        END SUBROUTINE CGELSS_F95
1732
1733       SUBROUTINE CGELSS1_F95( A, B, RANK, S, RCOND, INFO )
1734           USE LA_PRECISION, ONLY: WP => SP
1735           COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:)
1736           INTEGER, INTENT(IN), OPTIONAL :: RANK
1737           REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
1738           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1739           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1740        END SUBROUTINE CGELSS1_F95
1741
1742       SUBROUTINE ZGELSS_F95( A, B, RANK, S, RCOND, INFO )
1743           USE LA_PRECISION, ONLY: WP => DP
1744           COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
1745           INTEGER, INTENT(IN), OPTIONAL :: RANK
1746           REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
1747           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1748           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1749        END SUBROUTINE ZGELSS_F95
1750
1751       SUBROUTINE ZGELSS1_F95( A, B, RANK, S, RCOND, INFO )
1752           USE LA_PRECISION, ONLY: WP => DP
1753           COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:)
1754           INTEGER, INTENT(IN), OPTIONAL :: RANK
1755           REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
1756           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
1757           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1758        END SUBROUTINE ZGELSS1_F95
1759
1760      END INTERFACE
1761
1762      INTERFACE LA_GELS
1763
1764       SUBROUTINE SGELS_F95( A, B, TRANS, INFO )
1765           USE LA_PRECISION, ONLY: WP => SP
1766           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
1767           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1768           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
1769        END SUBROUTINE SGELS_F95
1770
1771       SUBROUTINE SGELS1_F95( A, B, TRANS, INFO )
1772           USE LA_PRECISION, ONLY: WP => SP
1773           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
1774           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1775           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:)
1776        END SUBROUTINE SGELS1_F95
1777
1778       SUBROUTINE DGELS_F95( A, B, TRANS, INFO )
1779           USE LA_PRECISION, ONLY: WP => DP
1780           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
1781           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1782           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
1783        END SUBROUTINE DGELS_F95
1784
1785       SUBROUTINE DGELS1_F95( A, B, TRANS, INFO )
1786           USE LA_PRECISION, ONLY: WP => DP
1787           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
1788           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1789           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:)
1790        END SUBROUTINE DGELS1_F95
1791
1792       SUBROUTINE CGELS_F95( A, B, TRANS, INFO )
1793           USE LA_PRECISION, ONLY: WP => SP
1794           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
1795           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1796           COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
1797        END SUBROUTINE CGELS_F95
1798
1799       SUBROUTINE CGELS1_F95( A, B, TRANS, INFO )
1800           USE LA_PRECISION, ONLY: WP => SP
1801           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
1802           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1803           COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:)
1804        END SUBROUTINE CGELS1_F95
1805
1806       SUBROUTINE ZGELS_F95( A, B, TRANS, INFO )
1807           USE LA_PRECISION, ONLY: WP => DP
1808           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
1809           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1810           COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
1811        END SUBROUTINE ZGELS_F95
1812
1813       SUBROUTINE ZGELS1_F95( A, B, TRANS, INFO )
1814           USE LA_PRECISION, ONLY: WP => DP
1815           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
1816           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1817           COMPLEX(WP), INTENT( INOUT ) :: A( :, : ), B(:)
1818        END SUBROUTINE ZGELS1_F95
1819
1820      END INTERFACE
1821
1822      INTERFACE LA_SPSVX
1823
1824       SUBROUTINE SSPSVX_F95( AP, B, X, UPLO, AFP, IPIV, FACT, FERR,    &
1825     &                        BERR, RCOND, INFO )
1826           USE LA_PRECISION, ONLY: WP => SP
1827           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
1828           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1829           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
1830           REAL(WP), INTENT(IN) :: AP(:), B(:,:)
1831           REAL(WP), INTENT(OUT) :: X(:,:)
1832           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
1833           REAL(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
1834           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
1835        END SUBROUTINE SSPSVX_F95
1836
1837       SUBROUTINE SSPSVX1_F95( AP, B, X, UPLO, AFP, IPIV, FACT, FERR,   &
1838     &                         BERR, RCOND, INFO )
1839           USE LA_PRECISION, ONLY: WP => SP
1840           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
1841           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1842           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
1843           REAL(WP), INTENT(IN) :: AP(:), B(:)
1844           REAL(WP), INTENT(OUT) :: X(:)
1845           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
1846           REAL(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
1847        END SUBROUTINE SSPSVX1_F95
1848
1849       SUBROUTINE DSPSVX_F95( AP, B, X, UPLO, AFP, IPIV, FACT, FERR,    &
1850     &                        BERR, RCOND, INFO )
1851           USE LA_PRECISION, ONLY: WP => DP
1852           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
1853           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1854           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
1855           REAL(WP), INTENT(IN) :: AP(:), B(:,:)
1856           REAL(WP), INTENT(OUT) :: X(:,:)
1857           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
1858           REAL(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
1859           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
1860        END SUBROUTINE DSPSVX_F95
1861
1862       SUBROUTINE DSPSVX1_F95( AP, B, X, UPLO, AFP, IPIV, FACT, FERR,   &
1863     &                         BERR, RCOND, INFO )
1864           USE LA_PRECISION, ONLY: WP => DP
1865           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
1866           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1867           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
1868           REAL(WP), INTENT(IN) :: AP(:), B(:)
1869           REAL(WP), INTENT(OUT) :: X(:)
1870           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
1871           REAL(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
1872        END SUBROUTINE DSPSVX1_F95
1873
1874       SUBROUTINE CSPSVX_F95( AP, B, X, UPLO, AFP, IPIV, FACT, FERR,    &
1875     &                        BERR, RCOND, INFO )
1876           USE LA_PRECISION, ONLY: WP => SP
1877           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
1878           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1879           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
1880           COMPLEX(WP), INTENT(IN) :: AP(:), B(:,:)
1881           COMPLEX(WP), INTENT(OUT) :: X(:,:)
1882           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
1883           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
1884           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
1885        END SUBROUTINE CSPSVX_F95
1886
1887       SUBROUTINE CSPSVX1_F95( AP, B, X, UPLO, AFP, IPIV, FACT, FERR,   &
1888     &                         BERR, RCOND, INFO )
1889           USE LA_PRECISION, ONLY: WP => SP
1890           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
1891           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1892           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
1893           COMPLEX(WP), INTENT(IN) :: AP(:), B(:)
1894           COMPLEX(WP), INTENT(OUT) :: X(:)
1895           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
1896           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
1897        END SUBROUTINE CSPSVX1_F95
1898
1899       SUBROUTINE ZSPSVX_F95( AP, B, X, UPLO, AFP, IPIV, FACT, FERR,    &
1900     &                        BERR, RCOND, INFO )
1901           USE LA_PRECISION, ONLY: WP => DP
1902           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
1903           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1904           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
1905           COMPLEX(WP), INTENT(IN) :: AP(:), B(:,:)
1906           COMPLEX(WP), INTENT(OUT) :: X(:,:)
1907           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
1908           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
1909           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
1910        END SUBROUTINE ZSPSVX_F95
1911
1912       SUBROUTINE ZSPSVX1_F95( AP, B, X, UPLO, AFP, IPIV, FACT, FERR,   &
1913     &                         BERR, RCOND, INFO )
1914           USE LA_PRECISION, ONLY: WP => DP
1915           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
1916           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1917           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
1918           COMPLEX(WP), INTENT(IN) :: AP(:), B(:)
1919           COMPLEX(WP), INTENT(OUT) :: X(:)
1920           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
1921           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
1922        END SUBROUTINE ZSPSVX1_F95
1923
1924      END INTERFACE
1925
1926      INTERFACE LA_HPSVX
1927
1928       SUBROUTINE CHPSVX_F95( A, B, X, UPLO, AFP, IPIV, FACT, FERR,     &
1929     &                        BERR, RCOND, INFO )
1930           USE LA_PRECISION, ONLY: WP => SP
1931           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
1932           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1933           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
1934           COMPLEX(WP), INTENT(IN) :: A(:), B(:,:)
1935           COMPLEX(WP), INTENT(OUT) :: X(:,:)
1936           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
1937           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
1938           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
1939        END SUBROUTINE CHPSVX_F95
1940
1941       SUBROUTINE CHPSVX1_F95( A, B, X, UPLO, AFP, IPIV, FACT, FERR,    &
1942     &                         BERR, RCOND, INFO )
1943           USE LA_PRECISION, ONLY: WP => SP
1944           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
1945           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1946           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
1947           COMPLEX(WP), INTENT(IN) :: A(:), B(:)
1948           COMPLEX(WP), INTENT(OUT) :: X(:)
1949           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
1950           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
1951        END SUBROUTINE CHPSVX1_F95
1952
1953       SUBROUTINE ZHPSVX_F95( A, B, X, UPLO, AFP, IPIV, FACT, FERR,     &
1954     &                        BERR, RCOND, INFO )
1955           USE LA_PRECISION, ONLY: WP => DP
1956           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
1957           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1958           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
1959           COMPLEX(WP), INTENT(IN) :: A(:), B(:,:)
1960           COMPLEX(WP), INTENT(OUT) :: X(:,:)
1961           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
1962           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
1963           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
1964        END SUBROUTINE ZHPSVX_F95
1965
1966       SUBROUTINE ZHPSVX1_F95( A, B, X, UPLO, AFP, IPIV, FACT, FERR,    &
1967     &                         BERR, RCOND, INFO )
1968           USE LA_PRECISION, ONLY: WP => DP
1969           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
1970           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1971           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
1972           COMPLEX(WP), INTENT(IN) :: A(:), B(:)
1973           COMPLEX(WP), INTENT(OUT) :: X(:)
1974           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
1975           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
1976        END SUBROUTINE ZHPSVX1_F95
1977
1978      END INTERFACE
1979
1980      INTERFACE LA_SYSVX
1981
1982       SUBROUTINE SSYSVX_F95( A, B, X, UPLO, AF, IPIV, FACT, FERR, BERR,&
1983     &                        RCOND, INFO )
1984           USE LA_PRECISION, ONLY: WP => SP
1985           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
1986           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1987           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
1988           REAL(WP), INTENT(IN) :: A(:,:), B(:,:)
1989           REAL(WP), INTENT(OUT) :: X(:,:)
1990           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
1991           REAL(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
1992           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
1993        END SUBROUTINE SSYSVX_F95
1994
1995       SUBROUTINE SSYSVX1_F95( A, B, X, UPLO, AF, IPIV, FACT, FERR,     &
1996     &                         BERR, RCOND, INFO )
1997           USE LA_PRECISION, ONLY: WP => SP
1998           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
1999           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2000           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2001           REAL(WP), INTENT(IN) :: A(:,:), B(:)
2002           REAL(WP), INTENT(OUT) :: X(:)
2003           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2004           REAL(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2005        END SUBROUTINE SSYSVX1_F95
2006
2007       SUBROUTINE DSYSVX_F95( A, B, X, UPLO, AF, IPIV, FACT, FERR, BERR,&
2008     &                        RCOND, INFO )
2009           USE LA_PRECISION, ONLY: WP => DP
2010           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2011           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2012           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2013           REAL(WP), INTENT(IN) :: A(:,:), B(:,:)
2014           REAL(WP), INTENT(OUT) :: X(:,:)
2015           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2016           REAL(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2017           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2018        END SUBROUTINE DSYSVX_F95
2019
2020       SUBROUTINE DSYSVX1_F95( A, B, X, UPLO, AF, IPIV, FACT, FERR,     &
2021     &                         BERR, RCOND, INFO )
2022           USE LA_PRECISION, ONLY: WP => DP
2023           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2024           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2025           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2026           REAL(WP), INTENT(IN) :: A(:,:), B(:)
2027           REAL(WP), INTENT(OUT) :: X(:)
2028           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2029           REAL(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2030        END SUBROUTINE DSYSVX1_F95
2031
2032       SUBROUTINE CSYSVX_F95( A, B, X, UPLO, AF, IPIV, FACT, FERR, BERR,&
2033     &                        RCOND, INFO )
2034           USE LA_PRECISION, ONLY: WP => SP
2035           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2036           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2037           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2038           COMPLEX(WP), INTENT(IN) :: A(:,:), B(:,:)
2039           COMPLEX(WP), INTENT(OUT) :: X(:,:)
2040           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2041           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2042           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2043        END SUBROUTINE CSYSVX_F95
2044
2045       SUBROUTINE CSYSVX1_F95( A, B, X, UPLO, AF, IPIV, FACT, FERR,     &
2046     &                         BERR, RCOND, INFO )
2047           USE LA_PRECISION, ONLY: WP => SP
2048           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2049           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2050           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2051           COMPLEX(WP), INTENT(IN) :: A(:,:), B(:)
2052           COMPLEX(WP), INTENT(OUT) :: X(:)
2053           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2054           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2055        END SUBROUTINE CSYSVX1_F95
2056
2057       SUBROUTINE ZSYSVX_F95( A, B, X, UPLO, AF, IPIV, FACT, FERR, BERR,&
2058     &                        RCOND, INFO )
2059           USE LA_PRECISION, ONLY: WP => DP
2060           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2061           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2062           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2063           COMPLEX(WP), INTENT(IN) :: A(:,:), B(:,:)
2064           COMPLEX(WP), INTENT(OUT) :: X(:,:)
2065           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2066           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2067           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2068        END SUBROUTINE ZSYSVX_F95
2069
2070       SUBROUTINE ZSYSVX1_F95( A, B, X, UPLO, AF, IPIV, FACT, FERR,     &
2071     &                         BERR, RCOND, INFO )
2072           USE LA_PRECISION, ONLY: WP => DP
2073           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2074           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2075           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2076           COMPLEX(WP), INTENT(IN) :: A(:,:), B(:)
2077           COMPLEX(WP), INTENT(OUT) :: X(:)
2078           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2079           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2080        END SUBROUTINE ZSYSVX1_F95
2081
2082      END INTERFACE
2083
2084      INTERFACE LA_HESVX
2085
2086       SUBROUTINE CHESVX_F95( A, B, X, UPLO, AF, IPIV, FACT, FERR, BERR,&
2087     &                        RCOND, INFO )
2088           USE LA_PRECISION, ONLY: WP => SP
2089           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2090           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2091           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2092           COMPLEX(WP), INTENT(IN) :: A(:,:), B(:,:)
2093           COMPLEX(WP), INTENT(OUT) :: X(:,:)
2094           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2095           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2096           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2097        END SUBROUTINE CHESVX_F95
2098
2099       SUBROUTINE CHESVX1_F95( A, B, X, UPLO, AF, IPIV, FACT, FERR,     &
2100     &                         BERR, RCOND, INFO )
2101           USE LA_PRECISION, ONLY: WP => SP
2102           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2103           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2104           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2105           COMPLEX(WP), INTENT(IN) :: A(:,:), B(:)
2106           COMPLEX(WP), INTENT(OUT) :: X(:)
2107           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2108           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2109        END SUBROUTINE CHESVX1_F95
2110
2111       SUBROUTINE ZHESVX_F95( A, B, X, UPLO, AF, IPIV, FACT, FERR, BERR,&
2112     &                        RCOND, INFO )
2113           USE LA_PRECISION, ONLY: WP => DP
2114           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2115           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2116           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2117           COMPLEX(WP), INTENT(IN) :: A(:,:), B(:,:)
2118           COMPLEX(WP), INTENT(OUT) :: X(:,:)
2119           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2120           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2121           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2122        END SUBROUTINE ZHESVX_F95
2123
2124       SUBROUTINE ZHESVX1_F95( A, B, X, UPLO, AF, IPIV, FACT, FERR,     &
2125     &                         BERR, RCOND, INFO )
2126           USE LA_PRECISION, ONLY: WP => DP
2127           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2128           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2129           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2130           COMPLEX(WP), INTENT(IN) :: A(:,:), B(:)
2131           COMPLEX(WP), INTENT(OUT) :: X(:)
2132           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2133           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2134        END SUBROUTINE ZHESVX1_F95
2135
2136      END INTERFACE
2137
2138      INTERFACE LA_PTSVX
2139
2140       SUBROUTINE SPTSVX_F95( D, E, B, X, DF, EF, FACT, FERR, BERR,     &
2141     &                        RCOND, INFO )
2142           USE LA_PRECISION, ONLY: WP => SP
2143           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
2144           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2145           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2146           REAL(WP), INTENT(IN) :: D(:)
2147           REAL(WP), INTENT(IN) :: E(:), B(:,:)
2148           REAL(WP), INTENT(OUT) :: X(:,:)
2149           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2150           REAL(WP), INTENT(INOUT), OPTIONAL :: DF(:)
2151           REAL(WP), INTENT(INOUT), OPTIONAL :: EF(:)
2152        END SUBROUTINE SPTSVX_F95
2153
2154       SUBROUTINE SPTSVX1_F95( D, E, B, X, DF, EF, FACT, FERR, BERR,    &
2155     &                         RCOND, INFO )
2156           USE LA_PRECISION, ONLY: WP => SP
2157           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
2158           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2159           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2160           REAL(WP), INTENT(IN) :: D(:)
2161           REAL(WP), INTENT(IN) :: E(:), B(:)
2162           REAL(WP), INTENT(OUT) :: X(:)
2163           REAL(WP), INTENT(INOUT), OPTIONAL :: DF(:)
2164           REAL(WP), INTENT(INOUT), OPTIONAL :: EF(:)
2165        END SUBROUTINE SPTSVX1_F95
2166
2167       SUBROUTINE DPTSVX_F95( D, E, B, X, DF, EF, FACT, FERR, BERR,     &
2168     &                        RCOND, INFO )
2169           USE LA_PRECISION, ONLY: WP => DP
2170           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
2171           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2172           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2173           REAL(WP), INTENT(IN) :: D(:)
2174           REAL(WP), INTENT(IN) :: E(:), B(:,:)
2175           REAL(WP), INTENT(OUT) :: X(:,:)
2176           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2177           REAL(WP), INTENT(INOUT), OPTIONAL :: DF(:)
2178           REAL(WP), INTENT(INOUT), OPTIONAL :: EF(:)
2179        END SUBROUTINE DPTSVX_F95
2180
2181       SUBROUTINE DPTSVX1_F95( D, E, B, X, DF, EF, FACT, FERR, BERR,    &
2182     &                         RCOND, INFO )
2183           USE LA_PRECISION, ONLY: WP => DP
2184           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
2185           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2186           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2187           REAL(WP), INTENT(IN) :: D(:)
2188           REAL(WP), INTENT(IN) :: E(:), B(:)
2189           REAL(WP), INTENT(OUT) :: X(:)
2190           REAL(WP), INTENT(INOUT), OPTIONAL :: DF(:)
2191           REAL(WP), INTENT(INOUT), OPTIONAL :: EF(:)
2192        END SUBROUTINE DPTSVX1_F95
2193
2194       SUBROUTINE CPTSVX_F95( D, E, B, X, DF, EF, FACT, FERR, BERR,     &
2195     &                        RCOND, INFO )
2196           USE LA_PRECISION, ONLY: WP => SP
2197           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
2198           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2199           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2200           REAL(WP), INTENT(IN) :: D(:)
2201           COMPLEX(WP), INTENT(IN) :: E(:), B(:,:)
2202           COMPLEX(WP), INTENT(OUT) :: X(:,:)
2203           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2204           REAL(WP), INTENT(INOUT), OPTIONAL :: DF(:)
2205           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: EF(:)
2206        END SUBROUTINE CPTSVX_F95
2207
2208       SUBROUTINE CPTSVX1_F95( D, E, B, X, DF, EF, FACT, FERR, BERR,    &
2209     &                         RCOND, INFO )
2210           USE LA_PRECISION, ONLY: WP => SP
2211           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
2212           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2213           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2214           REAL(WP), INTENT(IN) :: D(:)
2215           COMPLEX(WP), INTENT(IN) :: E(:), B(:)
2216           COMPLEX(WP), INTENT(OUT) :: X(:)
2217           REAL(WP), INTENT(INOUT), OPTIONAL :: DF(:)
2218           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: EF(:)
2219        END SUBROUTINE CPTSVX1_F95
2220
2221       SUBROUTINE ZPTSVX_F95( D, E, B, X, DF, EF, FACT, FERR, BERR,     &
2222     &                        RCOND, INFO )
2223           USE LA_PRECISION, ONLY: WP => DP
2224           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
2225           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2226           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2227           REAL(WP), INTENT(IN) :: D(:)
2228           COMPLEX(WP), INTENT(IN) :: E(:), B(:,:)
2229           COMPLEX(WP), INTENT(OUT) :: X(:,:)
2230           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2231           REAL(WP), INTENT(INOUT), OPTIONAL :: DF(:)
2232           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: EF(:)
2233        END SUBROUTINE ZPTSVX_F95
2234
2235       SUBROUTINE ZPTSVX1_F95( D, E, B, X, DF, EF, FACT, FERR, BERR,    &
2236     &                         RCOND, INFO )
2237           USE LA_PRECISION, ONLY: WP => DP
2238           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
2239           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2240           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2241           REAL(WP), INTENT(IN) :: D(:)
2242           COMPLEX(WP), INTENT(IN) :: E(:), B(:)
2243           COMPLEX(WP), INTENT(OUT) :: X(:)
2244           REAL(WP), INTENT(INOUT), OPTIONAL :: DF(:)
2245           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: EF(:)
2246        END SUBROUTINE ZPTSVX1_F95
2247
2248      END INTERFACE
2249
2250      INTERFACE LA_PBSVX
2251
2252       SUBROUTINE SPBSVX_F95( AB, B, X, UPLO, AFB, FACT, EQUED, S, FERR,&
2253     &                        BERR, RCOND, INFO )
2254           USE LA_PRECISION, ONLY: WP => SP
2255           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2256           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2257           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2258           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2259           REAL(WP), INTENT(INOUT) :: AB(:,:), B(:,:)
2260           REAL(WP), INTENT(OUT) :: X(:,:)
2261           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2262           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2263           REAL(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
2264        END SUBROUTINE SPBSVX_F95
2265
2266       SUBROUTINE SPBSVX1_F95( AB, B, X, UPLO, AFB, FACT, EQUED, S,     &
2267     &                         FERR, BERR, RCOND, INFO )
2268           USE LA_PRECISION, ONLY: WP => SP
2269           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2270           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2271           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2272           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2273           REAL(WP), INTENT(INOUT) :: AB(:,:), B(:)
2274           REAL(WP), INTENT(OUT) :: X(:)
2275           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2276           REAL(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
2277        END SUBROUTINE SPBSVX1_F95
2278
2279       SUBROUTINE DPBSVX_F95( AB, B, X, UPLO, AFB, FACT, EQUED, S, FERR,&
2280     &                        BERR, RCOND, INFO )
2281           USE LA_PRECISION, ONLY: WP => DP
2282           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2283           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2284           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2285           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2286           REAL(WP), INTENT(INOUT) :: AB(:,:), B(:,:)
2287           REAL(WP), INTENT(OUT) :: X(:,:)
2288           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2289           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2290           REAL(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
2291        END SUBROUTINE DPBSVX_F95
2292
2293       SUBROUTINE DPBSVX1_F95( AB, B, X, UPLO, AFB, FACT, EQUED, S,     &
2294     &                         FERR, BERR, RCOND, INFO )
2295           USE LA_PRECISION, ONLY: WP => DP
2296           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2297           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2298           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2299           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2300           REAL(WP), INTENT(INOUT) :: AB(:,:), B(:)
2301           REAL(WP), INTENT(OUT) :: X(:)
2302           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2303           REAL(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
2304        END SUBROUTINE DPBSVX1_F95
2305
2306       SUBROUTINE CPBSVX_F95( AB, B, X, UPLO, AFB, FACT, EQUED, S, FERR,&
2307     &                        BERR, RCOND, INFO )
2308           USE LA_PRECISION, ONLY: WP => SP
2309           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2310           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2311           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2312           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2313           COMPLEX(WP), INTENT(INOUT) :: AB(:,:), B(:,:)
2314           COMPLEX(WP), INTENT(OUT) :: X(:,:)
2315           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2316           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2317           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
2318        END SUBROUTINE CPBSVX_F95
2319
2320       SUBROUTINE CPBSVX1_F95( AB, B, X, UPLO, AFB, FACT, EQUED, S,     &
2321     &                         FERR, BERR, RCOND, INFO )
2322           USE LA_PRECISION, ONLY: WP => SP
2323           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2324           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2325           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2326           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2327           COMPLEX(WP), INTENT(INOUT) :: AB(:,:), B(:)
2328           COMPLEX(WP), INTENT(OUT) :: X(:)
2329           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2330           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
2331        END SUBROUTINE CPBSVX1_F95
2332
2333       SUBROUTINE ZPBSVX_F95( AB, B, X, UPLO, AFB, FACT, EQUED, S, FERR,&
2334     &                        BERR, RCOND, INFO )
2335           USE LA_PRECISION, ONLY: WP => DP
2336           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2337           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2338           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2339           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2340           COMPLEX(WP), INTENT(INOUT) :: AB(:,:), B(:,:)
2341           COMPLEX(WP), INTENT(OUT) :: X(:,:)
2342           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2343           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2344           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
2345        END SUBROUTINE ZPBSVX_F95
2346
2347       SUBROUTINE ZPBSVX1_F95( AB, B, X, UPLO, AFB, FACT, EQUED, S,     &
2348     &                         FERR, BERR, RCOND, INFO )
2349           USE LA_PRECISION, ONLY: WP => DP
2350           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2351           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2352           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2353           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2354           COMPLEX(WP), INTENT(INOUT) :: AB(:,:), B(:)
2355           COMPLEX(WP), INTENT(OUT) :: X(:)
2356           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2357           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
2358        END SUBROUTINE ZPBSVX1_F95
2359
2360      END INTERFACE
2361
2362      INTERFACE LA_PPSVX
2363
2364       SUBROUTINE SPPSVX_F95( AP, B, X, UPLO, AFP, FACT, EQUED, S, FERR,&
2365     &                        BERR, RCOND, INFO )
2366           USE LA_PRECISION, ONLY: WP => SP
2367           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2368           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2369           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2370           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2371           REAL(WP), INTENT(INOUT) :: AP(:), B(:,:)
2372           REAL(WP), INTENT(OUT) :: X(:,:)
2373           REAL(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
2374           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2375           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2376        END SUBROUTINE SPPSVX_F95
2377
2378       SUBROUTINE SPPSVX1_F95( AP, B, X, UPLO, AFP, FACT, EQUED, S,     &
2379     &                         FERR, BERR, RCOND, INFO )
2380           USE LA_PRECISION, ONLY: WP => SP
2381           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2382           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2383           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2384           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2385           REAL(WP), INTENT(INOUT) :: AP(:), B(:)
2386           REAL(WP), INTENT(OUT) :: X(:)
2387           REAL(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
2388           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2389        END SUBROUTINE SPPSVX1_F95
2390
2391       SUBROUTINE DPPSVX_F95( AP, B, X, UPLO, AFP, FACT, EQUED, S, FERR,&
2392     &                        BERR, RCOND, INFO )
2393           USE LA_PRECISION, ONLY: WP => DP
2394           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2395           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2396           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2397           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2398           REAL(WP), INTENT(INOUT) :: AP(:), B(:,:)
2399           REAL(WP), INTENT(OUT) :: X(:,:)
2400           REAL(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
2401           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2402           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2403        END SUBROUTINE DPPSVX_F95
2404
2405       SUBROUTINE DPPSVX1_F95( AP, B, X, UPLO, AFP, FACT, EQUED, S,     &
2406     &                         FERR, BERR, RCOND, INFO )
2407           USE LA_PRECISION, ONLY: WP => DP
2408           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2409           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2410           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2411           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2412           REAL(WP), INTENT(INOUT) :: AP(:), B(:)
2413           REAL(WP), INTENT(OUT) :: X(:)
2414           REAL(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
2415           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2416        END SUBROUTINE DPPSVX1_F95
2417
2418       SUBROUTINE CPPSVX_F95( AP, B, X, UPLO, AFP, FACT, EQUED, S, FERR,&
2419     &                        BERR, RCOND, INFO )
2420           USE LA_PRECISION, ONLY: WP => SP
2421           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2422           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2423           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2424           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2425           COMPLEX(WP), INTENT(INOUT) :: AP(:), B(:,:)
2426           COMPLEX(WP), INTENT(OUT) :: X(:,:)
2427           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
2428           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2429           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2430        END SUBROUTINE CPPSVX_F95
2431
2432       SUBROUTINE CPPSVX1_F95( AP, B, X, UPLO, AFP, FACT, EQUED, S,     &
2433     &                         FERR, BERR, RCOND, INFO )
2434           USE LA_PRECISION, ONLY: WP => SP
2435           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2436           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2437           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2438           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2439           COMPLEX(WP), INTENT(INOUT) :: AP(:), B(:)
2440           COMPLEX(WP), INTENT(OUT) :: X(:)
2441           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
2442           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2443        END SUBROUTINE CPPSVX1_F95
2444
2445       SUBROUTINE ZPPSVX_F95( AP, B, X, UPLO, AFP, FACT, EQUED, S, FERR,&
2446     &                        BERR, RCOND, INFO )
2447           USE LA_PRECISION, ONLY: WP => DP
2448           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2449           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2450           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2451           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2452           COMPLEX(WP), INTENT(INOUT) :: AP(:), B(:,:)
2453           COMPLEX(WP), INTENT(OUT) :: X(:,:)
2454           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
2455           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2456           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2457        END SUBROUTINE ZPPSVX_F95
2458
2459       SUBROUTINE ZPPSVX1_F95( AP, B, X, UPLO, AFP, FACT, EQUED, S,     &
2460     &                         FERR, BERR, RCOND, INFO )
2461           USE LA_PRECISION, ONLY: WP => DP
2462           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2463           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2464           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2465           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2466           COMPLEX(WP), INTENT(INOUT) :: AP(:), B(:)
2467           COMPLEX(WP), INTENT(OUT) :: X(:)
2468           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
2469           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2470        END SUBROUTINE ZPPSVX1_F95
2471
2472      END INTERFACE
2473
2474      INTERFACE LA_POSVX
2475
2476       SUBROUTINE SPOSVX_F95( A, B, X, UPLO, AF, FACT, EQUED, S, FERR,  &
2477     &                        BERR, RCOND, INFO )
2478           USE LA_PRECISION, ONLY: WP => SP
2479           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2480           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2481           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2482           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2483           REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
2484           REAL(WP), INTENT(OUT) :: X(:,:)
2485           REAL(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2486           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2487           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2488        END SUBROUTINE SPOSVX_F95
2489
2490       SUBROUTINE SPOSVX1_F95( A, B, X, UPLO, AF, FACT, EQUED, S, FERR, &
2491     &                         BERR, RCOND, INFO )
2492           USE LA_PRECISION, ONLY: WP => SP
2493           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2494           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2495           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2496           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2497           REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
2498           REAL(WP), INTENT(OUT) :: X(:)
2499           REAL(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2500           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2501        END SUBROUTINE SPOSVX1_F95
2502
2503       SUBROUTINE DPOSVX_F95( A, B, X, UPLO, AF, FACT, EQUED, S, FERR,  &
2504     &                        BERR, RCOND, INFO )
2505           USE LA_PRECISION, ONLY: WP => DP
2506           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2507           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2508           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2509           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2510           REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
2511           REAL(WP), INTENT(OUT) :: X(:,:)
2512           REAL(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2513           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2514           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2515        END SUBROUTINE DPOSVX_F95
2516
2517       SUBROUTINE DPOSVX1_F95( A, B, X, UPLO, AF, FACT, EQUED, S, FERR, &
2518     &                         BERR, RCOND, INFO )
2519           USE LA_PRECISION, ONLY: WP => DP
2520           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2521           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2522           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2523           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2524           REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
2525           REAL(WP), INTENT(OUT) :: X(:)
2526           REAL(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2527           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2528        END SUBROUTINE DPOSVX1_F95
2529
2530       SUBROUTINE CPOSVX_F95( A, B, X, UPLO, AF, FACT, EQUED, S, FERR,  &
2531     &                        BERR, RCOND, INFO )
2532           USE LA_PRECISION, ONLY: WP => SP
2533           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2534           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2535           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2536           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2537           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
2538           COMPLEX(WP), INTENT(OUT) :: X(:,:)
2539           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2540           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2541           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2542        END SUBROUTINE CPOSVX_F95
2543
2544       SUBROUTINE CPOSVX1_F95( A, B, X, UPLO, AF, FACT, EQUED, S, FERR, &
2545     &                         BERR, RCOND, INFO )
2546           USE LA_PRECISION, ONLY: WP => SP
2547           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2548           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2549           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2550           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2551           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:)
2552           COMPLEX(WP), INTENT(OUT) :: X(:)
2553           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2554           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2555        END SUBROUTINE CPOSVX1_F95
2556
2557       SUBROUTINE ZPOSVX_F95( A, B, X, UPLO, AF, FACT, EQUED, S, FERR,  &
2558     &                        BERR, RCOND, INFO )
2559           USE LA_PRECISION, ONLY: WP => DP
2560           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2561           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2562           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2563           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2564           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
2565           COMPLEX(WP), INTENT(OUT) :: X(:,:)
2566           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2567           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2568           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2569        END SUBROUTINE ZPOSVX_F95
2570
2571       SUBROUTINE ZPOSVX1_F95( A, B, X, UPLO, AF, FACT, EQUED, S, FERR, &
2572     &                         BERR, RCOND, INFO )
2573           USE LA_PRECISION, ONLY: WP => DP
2574           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
2575           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2576           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2577           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2578           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:)
2579           COMPLEX(WP), INTENT(OUT) :: X(:)
2580           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
2581           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
2582        END SUBROUTINE ZPOSVX1_F95
2583
2584      END INTERFACE
2585
2586      INTERFACE LA_GTSVX
2587
2588       SUBROUTINE SGTSVX_F95( DL, D, DU, B, X, DLF, DF, DUF, DU2, IPIV, &
2589     &                        FACT, TRANS, FERR, BERR, RCOND, INFO )
2590           USE LA_PRECISION, ONLY: WP => SP
2591           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
2592           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2593           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2594           REAL(WP), INTENT(IN) :: DL(:), D(:), DU(:), B(:,:)
2595           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2596           REAL(WP), INTENT(INOUT), OPTIONAL :: DLF(:), DF(:), DUF(:),  &
2597     &                                          DU2(:)
2598           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2599           REAL(WP), INTENT(OUT) :: X(:,:)
2600        END SUBROUTINE SGTSVX_F95
2601
2602       SUBROUTINE SGTSVX1_F95( DL, D, DU, B, X, DLF, DF, DUF, DU2, IPIV,&
2603     &                         FACT, TRANS, FERR, BERR, RCOND, INFO )
2604           USE LA_PRECISION, ONLY: WP => SP
2605           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
2606           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2607           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2608           REAL(WP), INTENT(IN) :: DL(:), D(:), DU(:), B(:)
2609           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2610           REAL(WP), INTENT(INOUT), OPTIONAL :: DLF(:), DF(:), DUF(:),  &
2611     &                                          DU2(:)
2612           REAL(WP), INTENT(OUT) :: X(:)
2613        END SUBROUTINE SGTSVX1_F95
2614
2615       SUBROUTINE DGTSVX_F95( DL, D, DU, B, X, DLF, DF, DUF, DU2, IPIV, &
2616     &                        FACT, TRANS, FERR, BERR, RCOND, INFO )
2617           USE LA_PRECISION, ONLY: WP => DP
2618           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
2619           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2620           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2621           REAL(WP), INTENT(IN) :: DL(:), D(:), DU(:), B(:,:)
2622           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2623           REAL(WP), INTENT(INOUT), OPTIONAL :: DLF(:), DF(:), DUF(:),  &
2624     &                                          DU2(:)
2625           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2626           REAL(WP), INTENT(OUT) :: X(:,:)
2627        END SUBROUTINE DGTSVX_F95
2628
2629       SUBROUTINE DGTSVX1_F95( DL, D, DU, B, X, DLF, DF, DUF, DU2, IPIV,&
2630     &                         FACT, TRANS, FERR, BERR, RCOND, INFO )
2631           USE LA_PRECISION, ONLY: WP => DP
2632           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
2633           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2634           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2635           REAL(WP), INTENT(IN) :: DL(:), D(:), DU(:), B(:)
2636           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2637           REAL(WP), INTENT(INOUT), OPTIONAL :: DLF(:), DF(:), DUF(:),  &
2638     &                                          DU2(:)
2639           REAL(WP), INTENT(OUT) :: X(:)
2640        END SUBROUTINE DGTSVX1_F95
2641
2642       SUBROUTINE CGTSVX_F95( DL, D, DU, B, X, DLF, DF, DUF, DU2, IPIV, &
2643     &                        FACT, TRANS, FERR, BERR, RCOND, INFO )
2644           USE LA_PRECISION, ONLY: WP => SP
2645           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
2646           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2647           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2648           COMPLEX(WP), INTENT(IN) :: DL(:), D(:), DU(:), B(:,:)
2649           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2650           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: DLF(:), DF(:),       &
2651     &                                             DUF(:), DU2(:)
2652           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2653           COMPLEX(WP), INTENT(OUT) :: X(:,:)
2654        END SUBROUTINE CGTSVX_F95
2655
2656       SUBROUTINE CGTSVX1_F95( DL, D, DU, B, X, DLF, DF, DUF, DU2, IPIV,&
2657     &                         FACT, TRANS, FERR, BERR, RCOND, INFO )
2658           USE LA_PRECISION, ONLY: WP => SP
2659           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
2660           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2661           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2662           COMPLEX(WP), INTENT(IN) :: DL(:), D(:), DU(:), B(:)
2663           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2664           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: DLF(:), DF(:),       &
2665     &                                             DUF(:), DU2(:)
2666           COMPLEX(WP), INTENT(OUT) :: X(:)
2667        END SUBROUTINE CGTSVX1_F95
2668
2669       SUBROUTINE ZGTSVX_F95( DL, D, DU, B, X, DLF, DF, DUF, DU2, IPIV, &
2670     &                        FACT, TRANS, FERR, BERR, RCOND, INFO )
2671           USE LA_PRECISION, ONLY: WP => DP
2672           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
2673           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2674           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
2675           COMPLEX(WP), INTENT(IN) :: DL(:), D(:), DU(:), B(:,:)
2676           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2677           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: DLF(:), DF(:),       &
2678     &                                             DUF(:), DU2(:)
2679           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2680           COMPLEX(WP), INTENT(OUT) :: X(:,:)
2681        END SUBROUTINE ZGTSVX_F95
2682
2683       SUBROUTINE ZGTSVX1_F95( DL, D, DU, B, X, DLF, DF, DUF, DU2, IPIV,&
2684     &                         FACT, TRANS, FERR, BERR, RCOND, INFO )
2685           USE LA_PRECISION, ONLY: WP => DP
2686           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
2687           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2688           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
2689           COMPLEX(WP), INTENT(IN) :: DL(:), D(:), DU(:), B(:)
2690           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2691           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: DLF(:), DF(:),       &
2692     &                                             DUF(:), DU2(:)
2693           COMPLEX(WP), INTENT(OUT) :: X(:)
2694        END SUBROUTINE ZGTSVX1_F95
2695
2696      END INTERFACE
2697
2698      INTERFACE LA_GBSVX
2699
2700       SUBROUTINE SGBSVX_F95( A, B, X, KL, AFB, IPIV, FACT, TRANS,      &
2701     &                        EQUED, R, C, FERR, BERR, RCOND, RPVGRW,   &
2702     &                        INFO )
2703           USE LA_PRECISION, ONLY: WP => SP
2704           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
2705           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2706           INTEGER, INTENT(IN), OPTIONAL :: KL
2707           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2708           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW
2709           REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
2710           REAL(WP), INTENT(OUT) :: X(:,:)
2711           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2712           REAL(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
2713           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
2714           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2715        END SUBROUTINE SGBSVX_F95
2716
2717       SUBROUTINE SGBSVX1_F95( A, B, X, KL, AFB, IPIV, FACT, TRANS,     &
2718     &                         EQUED, R, C, FERR, BERR, RCOND, RPVGRW,  &
2719     &                         INFO )
2720           USE LA_PRECISION, ONLY: WP => SP
2721           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
2722           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2723           INTEGER, INTENT(IN), OPTIONAL :: KL
2724           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2725           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW, FERR, BERR
2726           REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
2727           REAL(WP), INTENT(OUT) :: X(:)
2728           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2729           REAL(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
2730           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
2731        END SUBROUTINE SGBSVX1_F95
2732
2733       SUBROUTINE DGBSVX_F95( A, B, X, KL, AFB, IPIV, FACT, TRANS,      &
2734     &                        EQUED, R, C, FERR, BERR, RCOND, RPVGRW,   &
2735     &                        INFO )
2736           USE LA_PRECISION, ONLY: WP => DP
2737           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
2738           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2739           INTEGER, INTENT(IN), OPTIONAL :: KL
2740           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2741           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW
2742           REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
2743           REAL(WP), INTENT(OUT) :: X(:,:)
2744           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2745           REAL(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
2746           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
2747           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2748        END SUBROUTINE DGBSVX_F95
2749
2750       SUBROUTINE DGBSVX1_F95( A, B, X, KL, AFB, IPIV, FACT, TRANS,     &
2751     &                         EQUED, R, C, FERR, BERR, RCOND, RPVGRW,  &
2752     &                         INFO )
2753           USE LA_PRECISION, ONLY: WP => DP
2754           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
2755           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2756           INTEGER, INTENT(IN), OPTIONAL :: KL
2757           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2758           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW, FERR, BERR
2759           REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
2760           REAL(WP), INTENT(OUT) :: X(:)
2761           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2762           REAL(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
2763           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
2764        END SUBROUTINE DGBSVX1_F95
2765
2766       SUBROUTINE CGBSVX_F95( A, B, X, KL, AFB, IPIV, FACT, TRANS,      &
2767     &                        EQUED, R, C, FERR, BERR, RCOND, RPVGRW,   &
2768     &                        INFO )
2769           USE LA_PRECISION, ONLY: WP => SP
2770           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
2771           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2772           INTEGER, INTENT(IN), OPTIONAL :: KL
2773           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2774           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW
2775           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
2776           COMPLEX(WP), INTENT(OUT) :: X(:,:)
2777           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2778           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
2779           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
2780           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2781        END SUBROUTINE CGBSVX_F95
2782
2783       SUBROUTINE CGBSVX1_F95( A, B, X, KL, AFB, IPIV, FACT, TRANS,     &
2784     &                         EQUED, R, C, FERR, BERR, RCOND, RPVGRW,  &
2785     &                         INFO )
2786           USE LA_PRECISION, ONLY: WP => SP
2787           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
2788           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2789           INTEGER, INTENT(IN), OPTIONAL :: KL
2790           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2791           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW, FERR, BERR
2792           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:)
2793           COMPLEX(WP), INTENT(OUT) :: X(:)
2794           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2795           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
2796           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
2797        END SUBROUTINE CGBSVX1_F95
2798
2799       SUBROUTINE ZGBSVX_F95( A, B, X, KL, AFB, IPIV, FACT, TRANS,      &
2800     &                        EQUED, R, C, FERR, BERR, RCOND, RPVGRW,   &
2801     &                        INFO )
2802           USE LA_PRECISION, ONLY: WP => DP
2803           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
2804           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2805           INTEGER, INTENT(IN), OPTIONAL :: KL
2806           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2807           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW
2808           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
2809           COMPLEX(WP), INTENT(OUT) :: X(:,:)
2810           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2811           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
2812           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
2813           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
2814        END SUBROUTINE ZGBSVX_F95
2815
2816       SUBROUTINE ZGBSVX1_F95( A, B, X, KL, AFB, IPIV, FACT, TRANS,     &
2817     &                         EQUED, R, C, FERR, BERR, RCOND, RPVGRW,  &
2818     &                         INFO )
2819           USE LA_PRECISION, ONLY: WP => DP
2820           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
2821           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
2822           INTEGER, INTENT(IN), OPTIONAL :: KL
2823           INTEGER, INTENT(OUT), OPTIONAL :: INFO
2824           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW, FERR, BERR
2825           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:)
2826           COMPLEX(WP), INTENT(OUT) :: X(:)
2827           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
2828           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
2829           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
2830        END SUBROUTINE ZGBSVX1_F95
2831
2832      END INTERFACE
2833
2834      INTERFACE LA_SPSV
2835
2836       SUBROUTINE SSPSV_F95( AP, B, UPLO, IPIV, INFO )
2837            USE LA_PRECISION, ONLY: WP => SP
2838            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2839            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2840            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2841            REAL(WP), INTENT(INOUT) :: AP(:), B(:,:)
2842        END SUBROUTINE SSPSV_F95
2843
2844       SUBROUTINE SSPSV1_F95( AP, B, UPLO, IPIV, INFO )
2845            USE LA_PRECISION, ONLY: WP => SP
2846            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2847            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2848            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2849            REAL(WP), INTENT(INOUT) :: AP(:), B(:)
2850        END SUBROUTINE SSPSV1_F95
2851
2852       SUBROUTINE DSPSV_F95( AP, B, UPLO, IPIV, INFO )
2853            USE LA_PRECISION, ONLY: WP => DP
2854            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2855            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2856            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2857            REAL(WP), INTENT(INOUT) :: AP(:), B(:,:)
2858        END SUBROUTINE DSPSV_F95
2859
2860       SUBROUTINE DSPSV1_F95( AP, B, UPLO, IPIV, INFO )
2861            USE LA_PRECISION, ONLY: WP => DP
2862            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2863            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2864            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2865            REAL(WP), INTENT(INOUT) :: AP(:), B(:)
2866        END SUBROUTINE DSPSV1_F95
2867
2868       SUBROUTINE CSPSV_F95( AP, B, UPLO, IPIV, INFO )
2869            USE LA_PRECISION, ONLY: WP => SP
2870            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2871            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2872            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2873            COMPLEX(WP), INTENT(INOUT) :: AP(:), B(:,:)
2874        END SUBROUTINE CSPSV_F95
2875
2876       SUBROUTINE CSPSV1_F95( AP, B, UPLO, IPIV, INFO )
2877            USE LA_PRECISION, ONLY: WP => SP
2878            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2879            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2880            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2881            COMPLEX(WP), INTENT(INOUT) :: AP(:), B(:)
2882        END SUBROUTINE CSPSV1_F95
2883
2884       SUBROUTINE ZSPSV_F95( AP, B, UPLO, IPIV, INFO )
2885            USE LA_PRECISION, ONLY: WP => DP
2886            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2887            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2888            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2889            COMPLEX(WP), INTENT(INOUT) :: AP(:), B(:,:)
2890        END SUBROUTINE ZSPSV_F95
2891
2892       SUBROUTINE ZSPSV1_F95( AP, B, UPLO, IPIV, INFO )
2893            USE LA_PRECISION, ONLY: WP => DP
2894            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2895            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2896            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2897            COMPLEX(WP), INTENT(INOUT) :: AP(:), B(:)
2898        END SUBROUTINE ZSPSV1_F95
2899
2900      END INTERFACE
2901
2902      INTERFACE LA_HPSV
2903
2904       SUBROUTINE CHPSV_F95( AP, B, UPLO, IPIV, INFO )
2905            USE LA_PRECISION, ONLY: WP => SP
2906            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2907            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2908            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2909            COMPLEX(WP), INTENT(INOUT) :: AP(:), B(:,:)
2910        END SUBROUTINE CHPSV_F95
2911
2912       SUBROUTINE CHPSV1_F95( AP, B, UPLO, IPIV, INFO )
2913            USE LA_PRECISION, ONLY: WP => SP
2914            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2915            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2916            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2917            COMPLEX(WP), INTENT(INOUT) :: AP(:), B(:)
2918        END SUBROUTINE CHPSV1_F95
2919
2920       SUBROUTINE ZHPSV_F95( AP, B, UPLO, IPIV, INFO )
2921            USE LA_PRECISION, ONLY: WP => DP
2922            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2923            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2924            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2925            COMPLEX(WP), INTENT(INOUT) :: AP(:), B(:,:)
2926        END SUBROUTINE ZHPSV_F95
2927
2928       SUBROUTINE ZHPSV1_F95( AP, B, UPLO, IPIV, INFO )
2929            USE LA_PRECISION, ONLY: WP => DP
2930            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2931            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2932            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2933            COMPLEX(WP), INTENT(INOUT) :: AP(:), B(:)
2934        END SUBROUTINE ZHPSV1_F95
2935
2936      END INTERFACE
2937
2938      INTERFACE LA_SYSV
2939
2940       SUBROUTINE SSYSV_F95( A, B, UPLO, IPIV, INFO )
2941            USE LA_PRECISION, ONLY: WP => SP
2942            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2943            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2944            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2945            REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
2946        END SUBROUTINE SSYSV_F95
2947
2948       SUBROUTINE SSYSV1_F95( A, B, UPLO, IPIV, INFO )
2949            USE LA_PRECISION, ONLY: WP => SP
2950            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2951            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2952            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2953            REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
2954        END SUBROUTINE SSYSV1_F95
2955
2956       SUBROUTINE DSYSV_F95( A, B, UPLO, IPIV, INFO )
2957            USE LA_PRECISION, ONLY: WP => DP
2958            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2959            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2960            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2961            REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
2962        END SUBROUTINE DSYSV_F95
2963
2964       SUBROUTINE DSYSV1_F95( A, B, UPLO, IPIV, INFO )
2965            USE LA_PRECISION, ONLY: WP => DP
2966            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2967            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2968            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2969            REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
2970        END SUBROUTINE DSYSV1_F95
2971
2972       SUBROUTINE CSYSV_F95( A, B, UPLO, IPIV, INFO )
2973            USE LA_PRECISION, ONLY: WP => SP
2974            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2975            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2976            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2977            COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
2978        END SUBROUTINE CSYSV_F95
2979
2980       SUBROUTINE CSYSV1_F95( A, B, UPLO, IPIV, INFO )
2981            USE LA_PRECISION, ONLY: WP => SP
2982            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2983            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2984            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2985            COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:)
2986        END SUBROUTINE CSYSV1_F95
2987
2988       SUBROUTINE ZSYSV_F95( A, B, UPLO, IPIV, INFO )
2989            USE LA_PRECISION, ONLY: WP => DP
2990            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2991            INTEGER, INTENT(OUT), OPTIONAL :: INFO
2992            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
2993            COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
2994        END SUBROUTINE ZSYSV_F95
2995
2996       SUBROUTINE ZSYSV1_F95( A, B, UPLO, IPIV, INFO )
2997            USE LA_PRECISION, ONLY: WP => DP
2998            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
2999            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3000            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3001            COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:)
3002        END SUBROUTINE ZSYSV1_F95
3003
3004      END INTERFACE
3005
3006      INTERFACE LA_HESV
3007
3008       SUBROUTINE CHESV_F95( A, B, UPLO, IPIV, INFO )
3009            USE LA_PRECISION, ONLY: WP => SP
3010            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3011            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3012            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3013            COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
3014        END SUBROUTINE CHESV_F95
3015
3016       SUBROUTINE CHESV1_F95( A, B, UPLO, IPIV, INFO )
3017            USE LA_PRECISION, ONLY: WP => SP
3018            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3019            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3020            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3021            COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:)
3022        END SUBROUTINE CHESV1_F95
3023
3024       SUBROUTINE ZHESV_F95( A, B, UPLO, IPIV, INFO )
3025            USE LA_PRECISION, ONLY: WP => DP
3026            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3027            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3028            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3029            COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
3030        END SUBROUTINE ZHESV_F95
3031
3032       SUBROUTINE ZHESV1_F95( A, B, UPLO, IPIV, INFO )
3033            USE LA_PRECISION, ONLY: WP => DP
3034            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3035            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3036            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3037            COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:)
3038        END SUBROUTINE ZHESV1_F95
3039
3040      END INTERFACE
3041
3042      INTERFACE LA_PTSV
3043
3044       SUBROUTINE SPTSV_F95( D, E, B, INFO )
3045            USE LA_PRECISION, ONLY: WP => SP
3046            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3047            REAL(WP), INTENT(INOUT) :: D(:)
3048            REAL(WP), INTENT(INOUT) :: E(:), B(:,:)
3049        END SUBROUTINE SPTSV_F95
3050
3051       SUBROUTINE SPTSV1_F95( D, E, B, INFO )
3052            USE LA_PRECISION, ONLY: WP => SP
3053            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3054            REAL(WP), INTENT(INOUT) :: D(:)
3055            REAL(WP), INTENT(INOUT) :: E(:), B(:)
3056        END SUBROUTINE SPTSV1_F95
3057
3058       SUBROUTINE DPTSV_F95( D, E, B, INFO )
3059            USE LA_PRECISION, ONLY: WP => DP
3060            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3061            REAL(WP), INTENT(INOUT) :: D(:)
3062            REAL(WP), INTENT(INOUT) :: E(:), B(:,:)
3063        END SUBROUTINE DPTSV_F95
3064
3065       SUBROUTINE DPTSV1_F95( D, E, B, INFO )
3066            USE LA_PRECISION, ONLY: WP => DP
3067            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3068            REAL(WP), INTENT(INOUT) :: D(:)
3069            REAL(WP), INTENT(INOUT) :: E(:), B(:)
3070        END SUBROUTINE DPTSV1_F95
3071
3072       SUBROUTINE CPTSV_F95( D, E, B, INFO )
3073            USE LA_PRECISION, ONLY: WP => SP
3074            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3075            REAL(WP), INTENT(INOUT) :: D(:)
3076            COMPLEX(WP), INTENT(INOUT) :: E(:), B(:,:)
3077        END SUBROUTINE CPTSV_F95
3078
3079       SUBROUTINE CPTSV1_F95( D, E, B, INFO )
3080            USE LA_PRECISION, ONLY: WP => SP
3081            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3082            REAL(WP), INTENT(INOUT) :: D(:)
3083            COMPLEX(WP), INTENT(INOUT) :: E(:), B(:)
3084        END SUBROUTINE CPTSV1_F95
3085
3086       SUBROUTINE ZPTSV_F95( D, E, B, INFO )
3087            USE LA_PRECISION, ONLY: WP => DP
3088            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3089            REAL(WP), INTENT(INOUT) :: D(:)
3090            COMPLEX(WP), INTENT(INOUT) :: E(:), B(:,:)
3091        END SUBROUTINE ZPTSV_F95
3092
3093       SUBROUTINE ZPTSV1_F95( D, E, B, INFO )
3094            USE LA_PRECISION, ONLY: WP => DP
3095            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3096            REAL(WP), INTENT(INOUT) :: D(:)
3097            COMPLEX(WP), INTENT(INOUT) :: E(:), B(:)
3098        END SUBROUTINE ZPTSV1_F95
3099
3100      END INTERFACE
3101
3102      INTERFACE LA_PBSV
3103
3104       SUBROUTINE SPBSV_F95( AB, B, UPLO, INFO )
3105            USE LA_PRECISION, ONLY: WP => SP
3106            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3107            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3108            REAL(WP), INTENT(INOUT) :: AB(:,:), B(:,:)
3109        END SUBROUTINE SPBSV_F95
3110
3111       SUBROUTINE SPBSV1_F95( AB, B, UPLO, INFO )
3112            USE LA_PRECISION, ONLY: WP => SP
3113            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3114            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3115            REAL(WP), INTENT(INOUT) :: AB(:,:), B(:)
3116        END SUBROUTINE SPBSV1_F95
3117
3118       SUBROUTINE DPBSV_F95( AB, B, UPLO, INFO )
3119            USE LA_PRECISION, ONLY: WP => DP
3120            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3121            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3122            REAL(WP), INTENT(INOUT) :: AB(:,:), B(:,:)
3123        END SUBROUTINE DPBSV_F95
3124
3125       SUBROUTINE DPBSV1_F95( AB, B, UPLO, INFO )
3126            USE LA_PRECISION, ONLY: WP => DP
3127            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3128            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3129            REAL(WP), INTENT(INOUT) :: AB(:,:), B(:)
3130        END SUBROUTINE DPBSV1_F95
3131
3132       SUBROUTINE CPBSV_F95( AB, B, UPLO, INFO )
3133            USE LA_PRECISION, ONLY: WP => SP
3134            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3135            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3136            COMPLEX(WP), INTENT(INOUT) :: AB(:,:), B(:,:)
3137        END SUBROUTINE CPBSV_F95
3138
3139       SUBROUTINE CPBSV1_F95( AB, B, UPLO, INFO )
3140            USE LA_PRECISION, ONLY: WP => SP
3141            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3142            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3143            COMPLEX(WP), INTENT(INOUT) :: AB(:,:), B(:)
3144        END SUBROUTINE CPBSV1_F95
3145
3146       SUBROUTINE ZPBSV_F95( AB, B, UPLO, INFO )
3147            USE LA_PRECISION, ONLY: WP => DP
3148            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3149            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3150            COMPLEX(WP), INTENT(INOUT) :: AB(:,:), B(:,:)
3151        END SUBROUTINE ZPBSV_F95
3152
3153       SUBROUTINE ZPBSV1_F95( AB, B, UPLO, INFO )
3154            USE LA_PRECISION, ONLY: WP => DP
3155            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3156            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3157            COMPLEX(WP), INTENT(INOUT) :: AB(:,:), B(:)
3158        END SUBROUTINE ZPBSV1_F95
3159
3160      END INTERFACE
3161
3162      INTERFACE LA_PPSV
3163
3164       SUBROUTINE SPPSV_F95( AP, B, UPLO, INFO )
3165            USE LA_PRECISION, ONLY: WP => SP
3166            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3167            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3168            REAL(WP), INTENT(INOUT) :: AP(:), B(:,:)
3169        END SUBROUTINE SPPSV_F95
3170
3171       SUBROUTINE SPPSV1_F95( AP, B, UPLO, INFO )
3172            USE LA_PRECISION, ONLY: WP => SP
3173            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3174            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3175            REAL(WP), INTENT(INOUT) :: AP(:), B(:)
3176        END SUBROUTINE SPPSV1_F95
3177
3178       SUBROUTINE DPPSV_F95( AP, B, UPLO, INFO )
3179            USE LA_PRECISION, ONLY: WP => DP
3180            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3181            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3182            REAL(WP), INTENT(INOUT) :: AP(:), B(:,:)
3183        END SUBROUTINE DPPSV_F95
3184
3185       SUBROUTINE DPPSV1_F95( AP, B, UPLO, INFO )
3186            USE LA_PRECISION, ONLY: WP => DP
3187            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3188            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3189            REAL(WP), INTENT(INOUT) :: AP(:), B(:)
3190        END SUBROUTINE DPPSV1_F95
3191
3192       SUBROUTINE CPPSV_F95( AP, B, UPLO, INFO )
3193            USE LA_PRECISION, ONLY: WP => SP
3194            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3195            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3196            COMPLEX(WP), INTENT(INOUT) :: AP(:), B(:,:)
3197        END SUBROUTINE CPPSV_F95
3198
3199       SUBROUTINE CPPSV1_F95( AP, B, UPLO, INFO )
3200            USE LA_PRECISION, ONLY: WP => SP
3201            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3202            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3203            COMPLEX(WP), INTENT(INOUT) :: AP(:), B(:)
3204        END SUBROUTINE CPPSV1_F95
3205
3206       SUBROUTINE ZPPSV_F95( AP, B, UPLO, INFO )
3207            USE LA_PRECISION, ONLY: WP => DP
3208            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3209            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3210            COMPLEX(WP), INTENT(INOUT) :: AP(:), B(:,:)
3211        END SUBROUTINE ZPPSV_F95
3212
3213       SUBROUTINE ZPPSV1_F95( AP, B, UPLO, INFO )
3214            USE LA_PRECISION, ONLY: WP => DP
3215            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3216            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3217            COMPLEX(WP), INTENT(INOUT) :: AP(:), B(:)
3218        END SUBROUTINE ZPPSV1_F95
3219
3220      END INTERFACE
3221
3222      INTERFACE LA_POSV
3223
3224       SUBROUTINE SPOSV_F95( A, B, UPLO, INFO )
3225            USE LA_PRECISION, ONLY: WP => SP
3226            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3227            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3228            REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
3229        END SUBROUTINE SPOSV_F95
3230
3231       SUBROUTINE SPOSV1_F95( A, B, UPLO, INFO )
3232            USE LA_PRECISION, ONLY: WP => SP
3233            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3234            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3235            REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
3236        END SUBROUTINE SPOSV1_F95
3237
3238       SUBROUTINE DPOSV_F95( A, B, UPLO, INFO )
3239            USE LA_PRECISION, ONLY: WP => DP
3240            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3241            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3242            REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
3243        END SUBROUTINE DPOSV_F95
3244
3245       SUBROUTINE DPOSV1_F95( A, B, UPLO, INFO )
3246            USE LA_PRECISION, ONLY: WP => DP
3247            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3248            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3249            REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
3250        END SUBROUTINE DPOSV1_F95
3251
3252       SUBROUTINE CPOSV_F95( A, B, UPLO, INFO )
3253            USE LA_PRECISION, ONLY: WP => SP
3254            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3255            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3256            COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
3257        END SUBROUTINE CPOSV_F95
3258
3259       SUBROUTINE CPOSV1_F95( A, B, UPLO, INFO )
3260            USE LA_PRECISION, ONLY: WP => SP
3261            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3262            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3263            COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:)
3264        END SUBROUTINE CPOSV1_F95
3265
3266       SUBROUTINE ZPOSV_F95( A, B, UPLO, INFO )
3267            USE LA_PRECISION, ONLY: WP => DP
3268            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3269            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3270            COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
3271        END SUBROUTINE ZPOSV_F95
3272
3273       SUBROUTINE ZPOSV1_F95( A, B, UPLO, INFO )
3274            USE LA_PRECISION, ONLY: WP => DP
3275            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
3276            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3277            COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:)
3278        END SUBROUTINE ZPOSV1_F95
3279
3280      END INTERFACE
3281
3282      INTERFACE LA_GTSV
3283
3284       SUBROUTINE SGTSV_F95( DL, D, DU, B, INFO )
3285            USE LA_PRECISION, ONLY: WP => SP
3286            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3287            REAL(WP), INTENT(INOUT) :: DL(:), D(:), DU(:), B(:,:)
3288        END SUBROUTINE SGTSV_F95
3289
3290       SUBROUTINE SGTSV1_F95( DL, D, DU, B, INFO )
3291            USE LA_PRECISION, ONLY: WP => SP
3292            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3293            REAL(WP), INTENT(INOUT) :: DL(:), D(:), DU(:), B(:)
3294        END SUBROUTINE SGTSV1_F95
3295
3296       SUBROUTINE DGTSV_F95( DL, D, DU, B, INFO )
3297            USE LA_PRECISION, ONLY: WP => DP
3298            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3299            REAL(WP), INTENT(INOUT) :: DL(:), D(:), DU(:), B(:,:)
3300        END SUBROUTINE DGTSV_F95
3301
3302       SUBROUTINE DGTSV1_F95( DL, D, DU, B, INFO )
3303            USE LA_PRECISION, ONLY: WP => DP
3304            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3305            REAL(WP), INTENT(INOUT) :: DL(:), D(:), DU(:), B(:)
3306        END SUBROUTINE DGTSV1_F95
3307
3308       SUBROUTINE CGTSV_F95( DL, D, DU, B, INFO )
3309            USE LA_PRECISION, ONLY: WP => SP
3310            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3311            COMPLEX(WP), INTENT(INOUT) :: DL(:), D(:), DU(:), B(:,:)
3312        END SUBROUTINE CGTSV_F95
3313
3314       SUBROUTINE CGTSV1_F95( DL, D, DU, B, INFO )
3315            USE LA_PRECISION, ONLY: WP => SP
3316            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3317            COMPLEX(WP), INTENT(INOUT) :: DL(:), D(:), DU(:), B(:)
3318        END SUBROUTINE CGTSV1_F95
3319
3320       SUBROUTINE ZGTSV_F95( DL, D, DU, B, INFO )
3321            USE LA_PRECISION, ONLY: WP => DP
3322            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3323            COMPLEX(WP), INTENT(INOUT) :: DL(:), D(:), DU(:), B(:,:)
3324        END SUBROUTINE ZGTSV_F95
3325
3326       SUBROUTINE ZGTSV1_F95( DL, D, DU, B, INFO )
3327            USE LA_PRECISION, ONLY: WP => DP
3328            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3329            COMPLEX(WP), INTENT(INOUT) :: DL(:), D(:), DU(:), B(:)
3330        END SUBROUTINE ZGTSV1_F95
3331
3332      END INTERFACE
3333
3334      INTERFACE LA_GBSV
3335
3336       SUBROUTINE SGBSV_F95( AB, B, KL, IPIV, INFO )
3337            USE LA_PRECISION, ONLY: WP => SP
3338            INTEGER, INTENT(IN), OPTIONAL :: KL
3339            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3340            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3341            REAL(WP), INTENT(INOUT) :: AB(:,:), B(:,:)
3342        END SUBROUTINE SGBSV_F95
3343
3344       SUBROUTINE SGBSV1_F95( AB, B, KL, IPIV, INFO )
3345            USE LA_PRECISION, ONLY: WP => SP
3346            INTEGER, INTENT(IN), OPTIONAL :: KL
3347            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3348            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3349            REAL(WP), INTENT(INOUT) :: AB(:,:), B(:)
3350        END SUBROUTINE SGBSV1_F95
3351
3352       SUBROUTINE DGBSV_F95( AB, B, KL, IPIV, INFO )
3353            USE LA_PRECISION, ONLY: WP => DP
3354            INTEGER, INTENT(IN), OPTIONAL :: KL
3355            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3356            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3357            REAL(WP), INTENT(INOUT) :: AB(:,:), B(:,:)
3358        END SUBROUTINE DGBSV_F95
3359
3360       SUBROUTINE DGBSV1_F95( AB, B, KL, IPIV, INFO )
3361            USE LA_PRECISION, ONLY: WP => DP
3362            INTEGER, INTENT(IN), OPTIONAL :: KL
3363            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3364            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3365            REAL(WP), INTENT(INOUT) :: AB(:,:), B(:)
3366        END SUBROUTINE DGBSV1_F95
3367
3368       SUBROUTINE CGBSV_F95( AB, B, KL, IPIV, INFO )
3369            USE LA_PRECISION, ONLY: WP => SP
3370            INTEGER, INTENT(IN), OPTIONAL :: KL
3371            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3372            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3373            COMPLEX(WP), INTENT(INOUT) :: AB(:,:), B(:,:)
3374        END SUBROUTINE CGBSV_F95
3375
3376       SUBROUTINE CGBSV1_F95( AB, B, KL, IPIV, INFO )
3377            USE LA_PRECISION, ONLY: WP => SP
3378            INTEGER, INTENT(IN), OPTIONAL :: KL
3379            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3380            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3381            COMPLEX(WP), INTENT(INOUT) :: AB(:,:), B(:)
3382        END SUBROUTINE CGBSV1_F95
3383
3384       SUBROUTINE ZGBSV_F95( AB, B, KL, IPIV, INFO )
3385            USE LA_PRECISION, ONLY: WP => DP
3386            INTEGER, INTENT(IN), OPTIONAL :: KL
3387            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3388            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3389            COMPLEX(WP), INTENT(INOUT) :: AB(:,:), B(:,:)
3390        END SUBROUTINE ZGBSV_F95
3391
3392       SUBROUTINE ZGBSV1_F95( AB, B, KL, IPIV, INFO )
3393            USE LA_PRECISION, ONLY: WP => DP
3394            INTEGER, INTENT(IN), OPTIONAL :: KL
3395            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3396            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3397            COMPLEX(WP), INTENT(INOUT) :: AB(:,:), B(:)
3398        END SUBROUTINE ZGBSV1_F95
3399
3400      END INTERFACE
3401
3402      INTERFACE LA_GESV
3403
3404       SUBROUTINE SGESV_F95( A, B, IPIV, INFO )
3405            USE LA_PRECISION, ONLY: WP => SP
3406            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3407            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3408            REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
3409        END SUBROUTINE SGESV_F95
3410
3411       SUBROUTINE SGESV1_F95( A, B, IPIV, INFO )
3412            USE LA_PRECISION, ONLY: WP => SP
3413            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3414            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3415            REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
3416        END SUBROUTINE SGESV1_F95
3417
3418       SUBROUTINE DGESV_F95( A, B, IPIV, INFO )
3419            USE LA_PRECISION, ONLY: WP => DP
3420            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3421            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3422            REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
3423        END SUBROUTINE DGESV_F95
3424
3425       SUBROUTINE DGESV1_F95( A, B, IPIV, INFO )
3426            USE LA_PRECISION, ONLY: WP => DP
3427            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3428            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3429            REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
3430        END SUBROUTINE DGESV1_F95
3431
3432       SUBROUTINE CGESV_F95( A, B, IPIV, INFO )
3433            USE LA_PRECISION, ONLY: WP => SP
3434            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3435            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3436            COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
3437        END SUBROUTINE CGESV_F95
3438
3439       SUBROUTINE CGESV1_F95( A, B, IPIV, INFO )
3440            USE LA_PRECISION, ONLY: WP => SP
3441            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3442            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3443            COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:)
3444        END SUBROUTINE CGESV1_F95
3445
3446       SUBROUTINE ZGESV_F95( A, B, IPIV, INFO )
3447            USE LA_PRECISION, ONLY: WP => DP
3448            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3449            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3450            COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
3451        END SUBROUTINE ZGESV_F95
3452
3453       SUBROUTINE ZGESV1_F95( A, B, IPIV, INFO )
3454            USE LA_PRECISION, ONLY: WP => DP
3455            INTEGER, INTENT(OUT), OPTIONAL :: INFO
3456            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
3457            COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:)
3458        END SUBROUTINE ZGESV1_F95
3459
3460      END INTERFACE
3461
3462      INTERFACE LA_GESVX
3463
3464       SUBROUTINE SGESVX_F95( A, B, X, AF, IPIV, FACT, TRANS, EQUED, R, &
3465     &                        C, FERR, BERR, RCOND, RPVGRW, INFO )
3466           USE LA_PRECISION, ONLY: WP => SP
3467           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
3468           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
3469           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3470           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW
3471           REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
3472           REAL(WP), INTENT(OUT) :: X(:,:)
3473           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
3474           REAL(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
3475           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
3476           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
3477        END SUBROUTINE SGESVX_F95
3478
3479       SUBROUTINE SGESVX1_F95( A, B, X, AF, IPIV, FACT, TRANS, EQUED, R,&
3480     &                         C, FERR, BERR, RCOND, RPVGRW, INFO )
3481           USE LA_PRECISION, ONLY: WP => SP
3482           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
3483           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
3484           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3485           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW
3486           REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
3487           REAL(WP), INTENT(OUT) :: X(:)
3488           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
3489           REAL(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
3490           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
3491           REAL(WP), INTENT(OUT), OPTIONAL :: FERR, BERR
3492        END SUBROUTINE SGESVX1_F95
3493
3494       SUBROUTINE DGESVX_F95( A, B, X, AF, IPIV, FACT, TRANS, EQUED, R, &
3495     &                        C, FERR, BERR, RCOND, RPVGRW, INFO )
3496           USE LA_PRECISION, ONLY: WP => DP
3497           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
3498           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
3499           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3500           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW
3501           REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
3502           REAL(WP), INTENT(OUT) :: X(:,:)
3503           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
3504           REAL(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
3505           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
3506           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
3507        END SUBROUTINE DGESVX_F95
3508
3509       SUBROUTINE DGESVX1_F95( A, B, X, AF, IPIV, FACT, TRANS, EQUED, R,&
3510     &                         C, FERR, BERR, RCOND, RPVGRW, INFO )
3511           USE LA_PRECISION, ONLY: WP => DP
3512           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
3513           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
3514           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3515           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW
3516           REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
3517           REAL(WP), INTENT(OUT) :: X(:)
3518           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
3519           REAL(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
3520           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
3521           REAL(WP), INTENT(OUT), OPTIONAL :: FERR, BERR
3522        END SUBROUTINE DGESVX1_F95
3523
3524       SUBROUTINE CGESVX_F95( A, B, X, AF, IPIV, FACT, TRANS, EQUED, R, &
3525     &                        C, FERR, BERR, RCOND, RPVGRW, INFO )
3526           USE LA_PRECISION, ONLY: WP => SP
3527           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
3528           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
3529           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3530           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW
3531           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
3532           COMPLEX(WP), INTENT(OUT) :: X(:,:)
3533           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
3534           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
3535           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
3536           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
3537        END SUBROUTINE CGESVX_F95
3538
3539       SUBROUTINE CGESVX1_F95( A, B, X, AF, IPIV, FACT, TRANS, EQUED, R,&
3540     &                         C, FERR, BERR, RCOND, RPVGRW, INFO )
3541           USE LA_PRECISION, ONLY: WP => SP
3542           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
3543           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
3544           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3545           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW
3546           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:)
3547           COMPLEX(WP), INTENT(OUT) :: X(:)
3548           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
3549           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
3550           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
3551           REAL(WP), INTENT(OUT), OPTIONAL :: FERR, BERR
3552        END SUBROUTINE CGESVX1_F95
3553
3554       SUBROUTINE ZGESVX_F95( A, B, X, AF, IPIV, FACT, TRANS, EQUED, R, &
3555     &                        C, FERR, BERR, RCOND, RPVGRW, INFO )
3556           USE LA_PRECISION, ONLY: WP => DP
3557           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
3558           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
3559           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3560           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW
3561           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
3562           COMPLEX(WP), INTENT(OUT) :: X(:,:)
3563           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
3564           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
3565           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
3566           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
3567        END SUBROUTINE ZGESVX_F95
3568
3569       SUBROUTINE ZGESVX1_F95( A, B, X, AF, IPIV, FACT, TRANS, EQUED, R,&
3570     &                         C, FERR, BERR, RCOND, RPVGRW, INFO )
3571           USE LA_PRECISION, ONLY: WP => DP
3572           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
3573           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
3574           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3575           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW
3576           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:)
3577           COMPLEX(WP), INTENT(OUT) :: X(:)
3578           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
3579           COMPLEX(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
3580           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
3581           REAL(WP), INTENT(OUT), OPTIONAL :: FERR, BERR
3582        END SUBROUTINE ZGESVX1_F95
3583
3584      END INTERFACE
3585
3586      INTERFACE LA_GETRF
3587
3588       SUBROUTINE SGETRF_F95( A, IPIV, RCOND, NORM, INFO )
3589           USE LA_PRECISION, ONLY: WP => SP
3590           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
3591           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3592           REAL(WP), INTENT( OUT ), OPTIONAL :: RCOND
3593           INTEGER, INTENT( OUT ), OPTIONAL :: IPIV( : )
3594           REAL(WP), INTENT( INOUT ) :: A( :, : )
3595        END SUBROUTINE SGETRF_F95
3596
3597       SUBROUTINE DGETRF_F95( A, IPIV, RCOND, NORM, INFO )
3598           USE LA_PRECISION, ONLY: WP => DP
3599           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
3600           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3601           REAL(WP), INTENT( OUT ), OPTIONAL :: RCOND
3602           INTEGER, INTENT( OUT ), OPTIONAL :: IPIV( : )
3603           REAL(WP), INTENT( INOUT ) :: A( :, : )
3604        END SUBROUTINE DGETRF_F95
3605
3606       SUBROUTINE CGETRF_F95( A, IPIV, RCOND, NORM, INFO )
3607           USE LA_PRECISION, ONLY: WP => SP
3608           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
3609           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3610           REAL(WP), INTENT( OUT ), OPTIONAL :: RCOND
3611           INTEGER, INTENT( OUT ), OPTIONAL :: IPIV( : )
3612           COMPLEX(WP), INTENT( INOUT ) :: A( :, : )
3613        END SUBROUTINE CGETRF_F95
3614
3615       SUBROUTINE ZGETRF_F95( A, IPIV, RCOND, NORM, INFO )
3616           USE LA_PRECISION, ONLY: WP => DP
3617           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
3618           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3619           REAL(WP), INTENT( OUT ), OPTIONAL :: RCOND
3620           INTEGER, INTENT( OUT ), OPTIONAL :: IPIV( : )
3621           COMPLEX(WP), INTENT( INOUT ) :: A( :, : )
3622        END SUBROUTINE ZGETRF_F95
3623
3624      END INTERFACE
3625
3626      INTERFACE LA_GETRS
3627
3628       SUBROUTINE SGETRS_F95( A, IPIV, B, TRANS, INFO )
3629           USE LA_PRECISION, ONLY: WP => SP
3630           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
3631           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3632           INTEGER, INTENT(IN) :: IPIV(:)
3633           REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
3634        END SUBROUTINE SGETRS_F95
3635
3636       SUBROUTINE SGETRS1_F95( A, IPIV, B, TRANS, INFO )
3637           USE LA_PRECISION, ONLY: WP => SP
3638           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
3639           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3640           INTEGER, INTENT(IN) :: IPIV(:)
3641           REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
3642        END SUBROUTINE SGETRS1_F95
3643
3644       SUBROUTINE DGETRS_F95( A, IPIV, B, TRANS, INFO )
3645           USE LA_PRECISION, ONLY: WP => DP
3646           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
3647           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3648           INTEGER, INTENT(IN) :: IPIV(:)
3649           REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
3650        END SUBROUTINE DGETRS_F95
3651
3652       SUBROUTINE DGETRS1_F95( A, IPIV, B, TRANS, INFO )
3653           USE LA_PRECISION, ONLY: WP => DP
3654           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
3655           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3656           INTEGER, INTENT(IN) :: IPIV(:)
3657           REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
3658        END SUBROUTINE DGETRS1_F95
3659
3660       SUBROUTINE CGETRS_F95( A, IPIV, B, TRANS, INFO )
3661           USE LA_PRECISION, ONLY: WP => SP
3662           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
3663           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3664           INTEGER, INTENT(IN) :: IPIV(:)
3665           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
3666        END SUBROUTINE CGETRS_F95
3667
3668       SUBROUTINE CGETRS1_F95( A, IPIV, B, TRANS, INFO )
3669           USE LA_PRECISION, ONLY: WP => SP
3670           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
3671           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3672           INTEGER, INTENT(IN) :: IPIV(:)
3673           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:)
3674        END SUBROUTINE CGETRS1_F95
3675
3676       SUBROUTINE ZGETRS_F95( A, IPIV, B, TRANS, INFO )
3677           USE LA_PRECISION, ONLY: WP => DP
3678           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
3679           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3680           INTEGER, INTENT(IN) :: IPIV(:)
3681           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
3682        END SUBROUTINE ZGETRS_F95
3683
3684       SUBROUTINE ZGETRS1_F95( A, IPIV, B, TRANS, INFO )
3685           USE LA_PRECISION, ONLY: WP => DP
3686           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
3687           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3688           INTEGER, INTENT(IN) :: IPIV(:)
3689           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:)
3690        END SUBROUTINE ZGETRS1_F95
3691
3692      END INTERFACE
3693
3694      INTERFACE LA_GETRI
3695
3696       SUBROUTINE SGETRI_F95( A, IPIV, INFO )
3697           USE LA_PRECISION, ONLY: WP => SP
3698           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3699           INTEGER, INTENT(IN) :: IPIV(:)
3700           REAL(WP), INTENT(INOUT) :: A(:,:)
3701        END SUBROUTINE SGETRI_F95
3702
3703       SUBROUTINE DGETRI_F95( A, IPIV, INFO )
3704           USE LA_PRECISION, ONLY: WP => DP
3705           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3706           INTEGER, INTENT(IN) :: IPIV(:)
3707           REAL(WP), INTENT(INOUT) :: A(:,:)
3708        END SUBROUTINE DGETRI_F95
3709
3710       SUBROUTINE CGETRI_F95( A, IPIV, INFO )
3711           USE LA_PRECISION, ONLY: WP => SP
3712           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3713           INTEGER, INTENT(IN) :: IPIV(:)
3714           COMPLEX(WP), INTENT(INOUT) :: A(:,:)
3715        END SUBROUTINE CGETRI_F95
3716
3717       SUBROUTINE ZGETRI_F95( A, IPIV, INFO )
3718           USE LA_PRECISION, ONLY: WP => DP
3719           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3720           INTEGER, INTENT(IN) :: IPIV(:)
3721           COMPLEX(WP), INTENT(INOUT) :: A(:,:)
3722        END SUBROUTINE ZGETRI_F95
3723
3724      END INTERFACE
3725
3726      INTERFACE LA_GERFS
3727
3728       SUBROUTINE SGERFS_F95( A, AF, IPIV, B, X, TRANS, FERR, BERR,     &
3729     &                        INFO )
3730           USE LA_PRECISION, ONLY: WP => SP
3731           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
3732           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3733           INTEGER, INTENT(IN) :: IPIV(:)
3734           REAL(WP), INTENT(IN) :: A(:,:), AF(:,:), B(:,:)
3735           REAL(WP), INTENT(INOUT) :: X(:,:)
3736           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
3737        END SUBROUTINE SGERFS_F95
3738
3739       SUBROUTINE SGERFS1_F95( A, AF, IPIV, B, X, TRANS, FERR, BERR,    &
3740     &                         INFO )
3741           USE LA_PRECISION, ONLY: WP => SP
3742           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
3743           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3744           INTEGER, INTENT(IN) :: IPIV(:)
3745           REAL(WP), INTENT(IN) :: A(:,:), AF(:,:)
3746           REAL(WP), INTENT(IN) :: B(:)
3747           REAL(WP), INTENT(INOUT) :: X(:)
3748           REAL(WP), INTENT(OUT), OPTIONAL :: FERR, BERR
3749        END SUBROUTINE SGERFS1_F95
3750
3751       SUBROUTINE DGERFS_F95( A, AF, IPIV, B, X, TRANS, FERR, BERR,     &
3752     &                        INFO )
3753           USE LA_PRECISION, ONLY: WP => DP
3754           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
3755           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3756           INTEGER, INTENT(IN) :: IPIV(:)
3757           REAL(WP), INTENT(IN) :: A(:,:), AF(:,:), B(:,:)
3758           REAL(WP), INTENT(INOUT) :: X(:,:)
3759           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
3760        END SUBROUTINE DGERFS_F95
3761
3762       SUBROUTINE DGERFS1_F95( A, AF, IPIV, B, X, TRANS, FERR, BERR,    &
3763     &                         INFO )
3764           USE LA_PRECISION, ONLY: WP => DP
3765           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
3766           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3767           INTEGER, INTENT(IN) :: IPIV(:)
3768           REAL(WP), INTENT(IN) :: A(:,:), AF(:,:)
3769           REAL(WP), INTENT(IN) :: B(:)
3770           REAL(WP), INTENT(INOUT) :: X(:)
3771           REAL(WP), INTENT(OUT), OPTIONAL :: FERR, BERR
3772        END SUBROUTINE DGERFS1_F95
3773
3774       SUBROUTINE CGERFS_F95( A, AF, IPIV, B, X, TRANS, FERR, BERR,     &
3775     &                        INFO )
3776           USE LA_PRECISION, ONLY: WP => SP
3777           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
3778           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3779           INTEGER, INTENT(IN) :: IPIV(:)
3780           COMPLEX(WP), INTENT(IN) :: A(:,:), AF(:,:), B(:,:)
3781           COMPLEX(WP), INTENT(INOUT) :: X(:,:)
3782           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
3783        END SUBROUTINE CGERFS_F95
3784
3785       SUBROUTINE CGERFS1_F95( A, AF, IPIV, B, X, TRANS, FERR, BERR,    &
3786     &                         INFO )
3787           USE LA_PRECISION, ONLY: WP => SP
3788           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
3789           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3790           INTEGER, INTENT(IN) :: IPIV(:)
3791           COMPLEX(WP), INTENT(IN) :: A(:,:), AF(:,:)
3792           COMPLEX(WP), INTENT(IN) :: B(:)
3793           COMPLEX(WP), INTENT(INOUT) :: X(:)
3794           REAL(WP), INTENT(OUT), OPTIONAL :: FERR, BERR
3795        END SUBROUTINE CGERFS1_F95
3796
3797       SUBROUTINE ZGERFS_F95( A, AF, IPIV, B, X, TRANS, FERR, BERR,     &
3798     &                        INFO )
3799           USE LA_PRECISION, ONLY: WP => DP
3800           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
3801           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3802           INTEGER, INTENT(IN) :: IPIV(:)
3803           COMPLEX(WP), INTENT(IN) :: A(:,:), AF(:,:), B(:,:)
3804           COMPLEX(WP), INTENT(INOUT) :: X(:,:)
3805           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
3806        END SUBROUTINE ZGERFS_F95
3807
3808       SUBROUTINE ZGERFS1_F95( A, AF, IPIV, B, X, TRANS, FERR, BERR,    &
3809     &                         INFO )
3810           USE LA_PRECISION, ONLY: WP => DP
3811           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
3812           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3813           INTEGER, INTENT(IN) :: IPIV(:)
3814           COMPLEX(WP), INTENT(IN) :: A(:,:), AF(:,:)
3815           COMPLEX(WP), INTENT(IN) :: B(:)
3816           COMPLEX(WP), INTENT(INOUT) :: X(:)
3817           REAL(WP), INTENT(OUT), OPTIONAL :: FERR, BERR
3818        END SUBROUTINE ZGERFS1_F95
3819
3820      END INTERFACE
3821
3822      INTERFACE LA_GEEQU
3823
3824       SUBROUTINE SGEEQU_F95( A, R, C, ROWCND, COLCND, AMAX, INFO )
3825           USE LA_PRECISION, ONLY: WP => SP
3826           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3827           REAL(WP), INTENT( OUT ), OPTIONAL :: AMAX, COLCND, ROWCND
3828           REAL(WP), INTENT( IN ) :: A( :, : )
3829           REAL(WP), INTENT( OUT ) :: C( : ), R( : )
3830        END SUBROUTINE SGEEQU_F95
3831
3832       SUBROUTINE DGEEQU_F95( A, R, C, ROWCND, COLCND, AMAX, INFO )
3833           USE LA_PRECISION, ONLY: WP => DP
3834           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3835           REAL(WP), INTENT( OUT ), OPTIONAL :: AMAX, COLCND, ROWCND
3836           REAL(WP), INTENT( IN ) :: A( :, : )
3837           REAL(WP), INTENT( OUT ) :: C( : ), R( : )
3838        END SUBROUTINE DGEEQU_F95
3839
3840       SUBROUTINE CGEEQU_F95( A, R, C, ROWCND, COLCND, AMAX, INFO )
3841           USE LA_PRECISION, ONLY: WP => SP
3842           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3843           REAL(WP), INTENT( OUT ), OPTIONAL :: AMAX, COLCND, ROWCND
3844           COMPLEX(WP), INTENT( IN ) :: A( :, : )
3845           REAL(WP), INTENT( OUT ) :: C( : ), R( : )
3846        END SUBROUTINE CGEEQU_F95
3847
3848       SUBROUTINE ZGEEQU_F95( A, R, C, ROWCND, COLCND, AMAX, INFO )
3849           USE LA_PRECISION, ONLY: WP => DP
3850           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3851           REAL(WP), INTENT( OUT ), OPTIONAL :: AMAX, COLCND, ROWCND
3852           COMPLEX(WP), INTENT( IN ) :: A( :, : )
3853           REAL(WP), INTENT( OUT ) :: C( : ), R( : )
3854        END SUBROUTINE ZGEEQU_F95
3855
3856      END INTERFACE
3857
3858      INTERFACE LA_SYEV
3859
3860       SUBROUTINE SSYEV_F95( A, W, JOBZ, UPLO, INFO )
3861           USE LA_PRECISION, ONLY: WP => SP
3862           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
3863           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3864           REAL(WP), INTENT(INOUT) :: A(:,:)
3865           REAL(WP), INTENT(OUT) :: W(:)
3866        END SUBROUTINE SSYEV_F95
3867
3868       SUBROUTINE DSYEV_F95( A, W, JOBZ, UPLO, INFO )
3869           USE LA_PRECISION, ONLY: WP => DP
3870           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
3871           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3872           REAL(WP), INTENT(INOUT) :: A(:,:)
3873           REAL(WP), INTENT(OUT) :: W(:)
3874        END SUBROUTINE DSYEV_F95
3875
3876      END INTERFACE
3877
3878      INTERFACE LA_HEEV
3879
3880       SUBROUTINE CHEEV_F95( A, W, JOBZ, UPLO, INFO )
3881           USE LA_PRECISION, ONLY: WP => SP
3882           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
3883           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3884           COMPLEX(WP), INTENT(INOUT) :: A(:,:)
3885           REAL(WP), INTENT(OUT) :: W(:)
3886        END SUBROUTINE CHEEV_F95
3887
3888       SUBROUTINE ZHEEV_F95( A, W, JOBZ, UPLO, INFO )
3889           USE LA_PRECISION, ONLY: WP => DP
3890           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
3891           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3892           COMPLEX(WP), INTENT(INOUT) :: A(:,:)
3893           REAL(WP), INTENT(OUT) :: W(:)
3894        END SUBROUTINE ZHEEV_F95
3895
3896      END INTERFACE
3897
3898      INTERFACE LA_SYEVD
3899
3900       SUBROUTINE SSYEVD_F95( A, W, JOBZ, UPLO, INFO )
3901           USE LA_PRECISION, ONLY: WP => SP
3902           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
3903           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3904           REAL(WP), INTENT(INOUT) :: A(:,:)
3905           REAL(WP), INTENT(OUT) :: W(:)
3906        END SUBROUTINE SSYEVD_F95
3907
3908       SUBROUTINE DSYEVD_F95( A, W, JOBZ, UPLO, INFO )
3909           USE LA_PRECISION, ONLY: WP => DP
3910           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
3911           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3912           REAL(WP), INTENT(INOUT) :: A(:,:)
3913           REAL(WP), INTENT(OUT) :: W(:)
3914        END SUBROUTINE DSYEVD_F95
3915
3916      END INTERFACE
3917
3918      INTERFACE LA_HEEVD
3919
3920       SUBROUTINE CHEEVD_F95( A, W, JOBZ, UPLO, INFO )
3921           USE LA_PRECISION, ONLY: WP => SP
3922           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
3923           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3924           COMPLEX(WP), INTENT(INOUT) :: A(:,:)
3925           REAL(WP), INTENT(OUT) :: W(:)
3926        END SUBROUTINE CHEEVD_F95
3927
3928       SUBROUTINE ZHEEVD_F95( A, W, JOBZ, UPLO, INFO )
3929           USE LA_PRECISION, ONLY: WP => DP
3930           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
3931           INTEGER, INTENT(OUT), OPTIONAL :: INFO
3932           COMPLEX(WP), INTENT(INOUT) :: A(:,:)
3933           REAL(WP), INTENT(OUT) :: W(:)
3934        END SUBROUTINE ZHEEVD_F95
3935
3936      END INTERFACE
3937
3938        INTERFACE LA_SYEVR
3939
3940       SUBROUTINE SSYEVR_F95( A, W, JOBZ, UPLO, VL, VU, IL, IU, M,      &
3941     &                        ISUPPZ, ABSTOL, INFO )
3942         USE LA_PRECISION, ONLY: WP => SP
3943         REAL(WP), INTENT(INOUT) :: A(:,:)
3944         REAL(WP), INTENT(OUT) :: W(:)
3945         CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  JOBZ, UPLO
3946         INTEGER, INTENT(OUT), OPTIONAL :: INFO
3947         REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
3948         INTEGER, INTENT(IN), OPTIONAL :: IL, IU
3949         INTEGER, INTENT(OUT), OPTIONAL :: M
3950         INTEGER, INTENT(OUT), OPTIONAL, TARGET :: ISUPPZ(:)
3951       END SUBROUTINE SSYEVR_F95
3952
3953       SUBROUTINE DSYEVR_F95( A, W, JOBZ, UPLO, VL, VU, IL, IU, M,      &
3954     &                        ISUPPZ, ABSTOL, INFO )
3955         USE LA_PRECISION, ONLY: WP => DP
3956         REAL(WP), INTENT(INOUT) :: A(:,:)
3957         REAL(WP), INTENT(OUT) :: W(:)
3958         CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  JOBZ, UPLO
3959         INTEGER, INTENT(OUT), OPTIONAL :: INFO
3960         REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
3961         INTEGER, INTENT(IN), OPTIONAL :: IL, IU
3962         INTEGER, INTENT(OUT), OPTIONAL :: M
3963         INTEGER, INTENT(OUT), OPTIONAL, TARGET :: ISUPPZ(:)
3964       END SUBROUTINE DSYEVR_F95
3965
3966       END INTERFACE
3967
3968       INTERFACE LA_HEEVR
3969
3970       SUBROUTINE CHEEVR_F95( A, W, JOBZ, UPLO, VL, VU, IL, IU, M,      &
3971     &                        ISUPPZ, ABSTOL, INFO )
3972        USE LA_PRECISION, ONLY: WP => SP
3973        COMPLEX(WP), INTENT(INOUT) :: A(:,:)
3974        REAL(WP), INTENT(OUT) :: W(:)
3975        CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  JOBZ, UPLO
3976        INTEGER, INTENT(OUT), OPTIONAL :: INFO
3977        REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
3978        INTEGER, INTENT(IN), OPTIONAL :: IL, IU
3979        INTEGER, INTENT(OUT), OPTIONAL :: M
3980        INTEGER, INTENT(OUT), OPTIONAL, TARGET :: ISUPPZ(:)
3981       END SUBROUTINE CHEEVR_F95
3982
3983       SUBROUTINE ZHEEVR_F95( A, W, JOBZ, UPLO, VL, VU, IL, IU, M,      &
3984     &                        ISUPPZ, ABSTOL, INFO )
3985        USE LA_PRECISION, ONLY: WP => DP
3986        COMPLEX(WP), INTENT(INOUT) :: A(:,:)
3987        REAL(WP), INTENT(OUT) :: W(:)
3988        CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  JOBZ, UPLO
3989        INTEGER, INTENT(OUT), OPTIONAL :: INFO
3990        REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
3991        INTEGER, INTENT(IN), OPTIONAL :: IL, IU
3992        INTEGER, INTENT(OUT), OPTIONAL :: M
3993        INTEGER, INTENT(OUT), OPTIONAL, TARGET :: ISUPPZ(:)
3994       END SUBROUTINE ZHEEVR_F95
3995
3996      END INTERFACE
3997
3998      INTERFACE LA_SYEVX
3999
4000       SUBROUTINE SSYEVX_F95( A, W, JOBZ, UPLO, VL, VU, IL, IU, M,      &
4001     &                        IFAIL, ABSTOL, INFO )
4002           USE LA_PRECISION, ONLY: WP => SP
4003           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
4004           INTEGER, INTENT(IN), OPTIONAL :: IL, IU
4005           INTEGER, INTENT(OUT), OPTIONAL :: INFO, M
4006           REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
4007           INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
4008           REAL(WP), INTENT(INOUT) :: A(:,:)
4009           REAL(WP), INTENT(OUT) :: W(:)
4010        END SUBROUTINE SSYEVX_F95
4011
4012       SUBROUTINE DSYEVX_F95( A, W, JOBZ, UPLO, VL, VU, IL, IU, M,      &
4013     &                        IFAIL, ABSTOL, INFO )
4014           USE LA_PRECISION, ONLY: WP => DP
4015           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
4016           INTEGER, INTENT(IN), OPTIONAL :: IL, IU
4017           INTEGER, INTENT(OUT), OPTIONAL :: INFO, M
4018           REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
4019           INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
4020           REAL(WP), INTENT(INOUT) :: A(:,:)
4021           REAL(WP), INTENT(OUT) :: W(:)
4022        END SUBROUTINE DSYEVX_F95
4023
4024      END INTERFACE
4025
4026      INTERFACE LA_HEEVX
4027
4028       SUBROUTINE CHEEVX_F95( A, W, JOBZ, UPLO, VL, VU, IL, IU, M,      &
4029     &                        IFAIL, ABSTOL, INFO )
4030           USE LA_PRECISION, ONLY: WP => SP
4031           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
4032           INTEGER, INTENT(IN), OPTIONAL :: IL, IU
4033           INTEGER, INTENT(OUT), OPTIONAL :: INFO, M
4034           REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
4035           INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
4036           COMPLEX(WP), INTENT(INOUT) :: A(:,:)
4037           REAL(WP), INTENT(OUT) :: W(:)
4038        END SUBROUTINE CHEEVX_F95
4039
4040       SUBROUTINE ZHEEVX_F95( A, W, JOBZ, UPLO, VL, VU, IL, IU, M,      &
4041     &                        IFAIL, ABSTOL, INFO )
4042           USE LA_PRECISION, ONLY: WP => DP
4043           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
4044           INTEGER, INTENT(IN), OPTIONAL :: IL, IU
4045           INTEGER, INTENT(OUT), OPTIONAL :: INFO, M
4046           REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
4047           INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
4048           COMPLEX(WP), INTENT(INOUT) :: A(:,:)
4049           REAL(WP), INTENT(OUT) :: W(:)
4050        END SUBROUTINE ZHEEVX_F95
4051
4052      END INTERFACE
4053
4054      INTERFACE LA_SYGST
4055
4056       SUBROUTINE SSYGST_F95( A, B, ITYPE, UPLO, INFO )
4057           USE LA_PRECISION, ONLY: WP => SP
4058           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
4059           INTEGER, INTENT(IN), OPTIONAL :: ITYPE
4060           INTEGER, INTENT(OUT), OPTIONAL :: INFO
4061           REAL(WP), INTENT(INOUT) :: A(:,:)
4062           REAL(WP), INTENT(IN) :: B(:,:)
4063        END SUBROUTINE SSYGST_F95
4064
4065       SUBROUTINE DSYGST_F95( A, B, ITYPE, UPLO, INFO )
4066           USE LA_PRECISION, ONLY: WP => DP
4067           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
4068           INTEGER, INTENT(IN), OPTIONAL :: ITYPE
4069           INTEGER, INTENT(OUT), OPTIONAL :: INFO
4070           REAL(WP), INTENT(INOUT) :: A(:,:)
4071           REAL(WP), INTENT(IN) :: B(:,:)
4072        END SUBROUTINE DSYGST_F95
4073
4074      END INTERFACE
4075
4076      INTERFACE LA_HEGST
4077
4078       SUBROUTINE CHEGST_F95( A, B, ITYPE, UPLO, INFO )
4079           USE LA_PRECISION, ONLY: WP => SP
4080           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
4081           INTEGER, INTENT(IN), OPTIONAL :: ITYPE
4082           INTEGER, INTENT(OUT), OPTIONAL :: INFO
4083           COMPLEX(WP), INTENT(INOUT) :: A(:,:)
4084           COMPLEX(WP), INTENT(IN) :: B(:,:)
4085        END SUBROUTINE CHEGST_F95
4086
4087       SUBROUTINE ZHEGST_F95( A, B, ITYPE, UPLO, INFO )
4088           USE LA_PRECISION, ONLY: WP => DP
4089           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
4090           INTEGER, INTENT(IN), OPTIONAL :: ITYPE
4091           INTEGER, INTENT(OUT), OPTIONAL :: INFO
4092           COMPLEX(WP), INTENT(INOUT) :: A(:,:)
4093           COMPLEX(WP), INTENT(IN) :: B(:,:)
4094        END SUBROUTINE ZHEGST_F95
4095
4096      END INTERFACE
4097
4098      INTERFACE LA_SYGV
4099
4100       SUBROUTINE SSYGV_F95( A, B, W, ITYPE, JOBZ, UPLO, INFO )
4101           USE LA_PRECISION, ONLY: WP => SP
4102           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
4103           INTEGER, INTENT(IN), OPTIONAL :: ITYPE
4104           INTEGER, INTENT(OUT), OPTIONAL :: INFO
4105           REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
4106           REAL(WP), INTENT(OUT) :: W(:)
4107        END SUBROUTINE SSYGV_F95
4108
4109       SUBROUTINE DSYGV_F95( A, B, W, ITYPE, JOBZ, UPLO, INFO )
4110           USE LA_PRECISION, ONLY: WP => DP
4111           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
4112           INTEGER, INTENT(IN), OPTIONAL :: ITYPE
4113           INTEGER, INTENT(OUT), OPTIONAL :: INFO
4114           REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
4115           REAL(WP), INTENT(OUT) :: W(:)
4116        END SUBROUTINE DSYGV_F95
4117
4118      END INTERFACE
4119
4120      INTERFACE LA_HEGV
4121
4122       SUBROUTINE CHEGV_F95( A, B, W, ITYPE, JOBZ, UPLO, INFO )
4123           USE LA_PRECISION, ONLY: WP => SP
4124           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
4125           INTEGER, INTENT(IN), OPTIONAL :: ITYPE
4126           INTEGER, INTENT(OUT), OPTIONAL :: INFO
4127           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
4128           REAL(WP), INTENT(OUT) :: W(:)
4129        END SUBROUTINE CHEGV_F95
4130
4131       SUBROUTINE ZHEGV_F95( A, B, W, ITYPE, JOBZ, UPLO, INFO )
4132           USE LA_PRECISION, ONLY: WP => DP
4133           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
4134           INTEGER, INTENT(IN), OPTIONAL :: ITYPE
4135           INTEGER, INTENT(OUT), OPTIONAL :: INFO
4136           COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
4137           REAL(WP), INTENT(OUT) :: W(:)
4138        END SUBROUTINE ZHEGV_F95
4139
4140      END INTERFACE
4141
4142         INTERFACE LA_SYGVX
4143
4144        SUBROUTINE SSYGVX_F95( A, B, W, ITYPE, JOBZ, UPLO, VL, VU, IL,  &
4145     &                         IU, M, IFAIL, ABSTOL, INFO )
4146         USE LA_PRECISION, ONLY: WP => SP
4147         REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
4148         REAL(WP), INTENT(OUT) :: W(:)
4149         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
4150         INTEGER, INTENT(OUT), OPTIONAL :: INFO
4151         REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
4152         INTEGER, INTENT(IN), OPTIONAL :: IL, IU, ITYPE
4153         INTEGER, INTENT(OUT), OPTIONAL :: M
4154         INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
4155        END SUBROUTINE SSYGVX_F95
4156
4157        SUBROUTINE DSYGVX_F95( A, B, W, ITYPE, JOBZ, UPLO, VL, VU, IL,  &
4158     &                         IU, M, IFAIL, ABSTOL, INFO )
4159         USE LA_PRECISION, ONLY: WP => DP
4160         REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
4161         REAL(WP), INTENT(OUT) :: W(:)
4162         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
4163         INTEGER, INTENT(OUT), OPTIONAL :: INFO
4164         REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
4165         INTEGER, INTENT(IN), OPTIONAL :: IL, IU, ITYPE
4166         INTEGER, INTENT(OUT), OPTIONAL :: M
4167         INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
4168        END SUBROUTINE DSYGVX_F95
4169
4170       END INTERFACE
4171
4172       INTERFACE LA_HEGVX
4173
4174       SUBROUTINE CHEGVX_F95( A, B, W, ITYPE, JOBZ, UPLO, VL, VU, IL,   &
4175     &                        IU, M, IFAIL, ABSTOL, INFO )
4176         USE LA_PRECISION, ONLY: WP => SP
4177         COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
4178         REAL(WP), INTENT(OUT) :: W(:)
4179         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
4180         INTEGER, INTENT(OUT), OPTIONAL :: INFO
4181         REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
4182         INTEGER, INTENT(IN), OPTIONAL :: IL, IU, ITYPE
4183         INTEGER, INTENT(OUT), OPTIONAL :: M
4184         INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
4185        END SUBROUTINE  CHEGVX_F95
4186
4187       SUBROUTINE ZHEGVX_F95( A, B, W, ITYPE, JOBZ, UPLO, VL, VU, IL,   &
4188     &                        IU, M, IFAIL, ABSTOL, INFO )
4189         USE LA_PRECISION, ONLY: WP => DP
4190         COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
4191         REAL(WP), INTENT(OUT) :: W(:)
4192         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
4193         INTEGER, INTENT(OUT), OPTIONAL :: INFO
4194         REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
4195         INTEGER, INTENT(IN), OPTIONAL :: IL, IU, ITYPE
4196         INTEGER, INTENT(OUT), OPTIONAL :: M
4197         INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
4198        END SUBROUTINE  ZHEGVX_F95
4199
4200        END INTERFACE
4201
4202         INTERFACE LA_SYGVD
4203
4204        SUBROUTINE SSYGVD_F95( A, B, W, ITYPE, JOBZ, UPLO, INFO )
4205            USE LA_PRECISION, ONLY: WP => SP
4206            REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
4207            REAL(WP), INTENT(OUT) :: W(:)
4208            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
4209            INTEGER, INTENT(IN), OPTIONAL :: ITYPE
4210            INTEGER, INTENT(OUT), OPTIONAL :: INFO
4211           END SUBROUTINE SSYGVD_F95
4212
4213        SUBROUTINE DSYGVD_F95( A, B, W, ITYPE, JOBZ, UPLO, INFO )
4214            USE LA_PRECISION, ONLY: WP => DP
4215            REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
4216            REAL(WP), INTENT(OUT) :: W(:)
4217            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
4218            INTEGER, INTENT(IN), OPTIONAL :: ITYPE
4219            INTEGER, INTENT(OUT), OPTIONAL :: INFO
4220           END SUBROUTINE DSYGVD_F95
4221
4222            END INTERFACE
4223
4224          INTERFACE LA_HEGVD
4225
4226       SUBROUTINE CHEGVD_F95( A, B, W, ITYPE, JOBZ, UPLO, INFO )
4227          USE LA_PRECISION, ONLY: WP => SP
4228          COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
4229          REAL(WP), INTENT(OUT) :: W(:)
4230          CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
4231          INTEGER, INTENT(OUT), OPTIONAL :: INFO
4232          INTEGER, INTENT(IN), OPTIONAL :: ITYPE
4233         END SUBROUTINE CHEGVD_F95
4234
4235
4236       SUBROUTINE ZHEGVD_F95( A, B, W, ITYPE, JOBZ, UPLO, INFO )
4237          USE LA_PRECISION, ONLY: WP => DP
4238          COMPLEX(WP), INTENT(INOUT) :: A(:,:), B(:,:)
4239          REAL(WP), INTENT(OUT) :: W(:)
4240          CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
4241          INTEGER, INTENT(OUT), OPTIONAL :: INFO
4242          INTEGER, INTENT(IN), OPTIONAL :: ITYPE
4243         END SUBROUTINE ZHEGVD_F95
4244
4245
4246        END INTERFACE
4247
4248      INTERFACE LA_SYTRD
4249
4250       SUBROUTINE SSYTRD_F95( A, TAU, UPLO, INFO )
4251           USE LA_PRECISION, ONLY: WP => SP
4252           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
4253           INTEGER, INTENT(OUT), OPTIONAL :: INFO
4254           REAL(WP), INTENT(INOUT) :: A(:,:)
4255           REAL(WP), INTENT(OUT) :: TAU(:)
4256        END SUBROUTINE SSYTRD_F95
4257
4258       SUBROUTINE DSYTRD_F95( A, TAU, UPLO, INFO )
4259           USE LA_PRECISION, ONLY: WP => DP
4260           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
4261           INTEGER, INTENT(OUT), OPTIONAL :: INFO
4262           REAL(WP), INTENT(INOUT) :: A(:,:)
4263           REAL(WP), INTENT(OUT) :: TAU(:)
4264        END SUBROUTINE DSYTRD_F95
4265
4266      END INTERFACE
4267
4268      INTERFACE LA_HETRD
4269
4270       SUBROUTINE CHETRD_F95( A, TAU, UPLO, INFO )
4271           USE LA_PRECISION, ONLY: WP => SP
4272           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
4273           INTEGER, INTENT(OUT), OPTIONAL :: INFO
4274           COMPLEX(WP), INTENT(INOUT) :: A(:,:)
4275           COMPLEX(WP), INTENT(OUT) :: TAU(:)
4276        END SUBROUTINE CHETRD_F95
4277
4278       SUBROUTINE ZHETRD_F95( A, TAU, UPLO, INFO )
4279           USE LA_PRECISION, ONLY: WP => DP
4280           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
4281           INTEGER, INTENT(OUT), OPTIONAL :: INFO
4282           COMPLEX(WP), INTENT(INOUT) :: A(:,:)
4283           COMPLEX(WP), INTENT(OUT) :: TAU(:)
4284        END SUBROUTINE ZHETRD_F95
4285
4286      END INTERFACE
4287
4288      INTERFACE LA_ORGTR
4289
4290       SUBROUTINE SORGTR_F95( A, TAU, UPLO, INFO )
4291           USE LA_PRECISION, ONLY: WP => SP
4292           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
4293           INTEGER, INTENT(OUT), OPTIONAL :: INFO
4294           REAL(WP), INTENT(IN) :: TAU(:)
4295           REAL(WP), INTENT(INOUT) :: A(:,:)
4296        END SUBROUTINE SORGTR_F95
4297
4298       SUBROUTINE DORGTR_F95( A, TAU, UPLO, INFO )
4299           USE LA_PRECISION, ONLY: WP => DP
4300           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
4301           INTEGER, INTENT(OUT), OPTIONAL :: INFO
4302           REAL(WP), INTENT(IN) :: TAU(:)
4303           REAL(WP), INTENT(INOUT) :: A(:,:)
4304        END SUBROUTINE DORGTR_F95
4305
4306      END INTERFACE
4307
4308      INTERFACE LA_UNGTR
4309
4310       SUBROUTINE CUNGTR_F95( A, TAU, UPLO, INFO )
4311           USE LA_PRECISION, ONLY: WP => SP
4312           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
4313           INTEGER, INTENT(OUT), OPTIONAL :: INFO
4314           COMPLEX(WP), INTENT(IN) :: TAU(:)
4315           COMPLEX(WP), INTENT(INOUT) :: A(:,:)
4316        END SUBROUTINE CUNGTR_F95
4317
4318       SUBROUTINE ZUNGTR_F95( A, TAU, UPLO, INFO )
4319           USE LA_PRECISION, ONLY: WP => DP
4320           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
4321           INTEGER, INTENT(OUT), OPTIONAL :: INFO
4322           COMPLEX(WP), INTENT(IN) :: TAU(:)
4323           COMPLEX(WP), INTENT(INOUT) :: A(:,:)
4324        END SUBROUTINE ZUNGTR_F95
4325
4326      END INTERFACE
4327
4328      INTERFACE LA_POTRF
4329
4330       SUBROUTINE SPOTRF_F95( A, UPLO, RCOND, NORM, INFO )
4331           USE LA_PRECISION, ONLY: WP => SP
4332           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM, UPLO
4333           INTEGER, INTENT(OUT), OPTIONAL  :: INFO
4334           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
4335           REAL(WP), INTENT(INOUT) :: A(:,:)
4336        END SUBROUTINE SPOTRF_F95
4337
4338       SUBROUTINE DPOTRF_F95( A, UPLO, RCOND, NORM, INFO )
4339           USE LA_PRECISION, ONLY: WP => DP
4340           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM, UPLO
4341           INTEGER, INTENT(OUT), OPTIONAL  :: INFO
4342           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
4343           REAL(WP), INTENT(INOUT) :: A(:,:)
4344        END SUBROUTINE DPOTRF_F95
4345
4346       SUBROUTINE CPOTRF_F95( A, UPLO, RCOND, NORM, INFO )
4347           USE LA_PRECISION, ONLY: WP => SP
4348           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM, UPLO
4349           INTEGER, INTENT(OUT), OPTIONAL  :: INFO
4350           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
4351           COMPLEX(WP), INTENT(INOUT) :: A(:,:)
4352        END SUBROUTINE CPOTRF_F95
4353
4354       SUBROUTINE ZPOTRF_F95( A, UPLO, RCOND, NORM, INFO )
4355           USE LA_PRECISION, ONLY: WP => DP
4356           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM, UPLO
4357           INTEGER, INTENT(OUT), OPTIONAL  :: INFO
4358           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
4359           COMPLEX(WP), INTENT(INOUT) :: A(:,:)
4360        END SUBROUTINE ZPOTRF_F95
4361
4362      END INTERFACE
4363
4364      INTERFACE LA_LAGGE
4365
4366      SUBROUTINE SLAGGE_F95( A, KL, KU, D, ISEED, INFO )
4367         USE LA_PRECISION, ONLY: WP => SP
4368         INTEGER, INTENT(IN), OPTIONAL :: KL, KU
4369         INTEGER, INTENT(OUT), OPTIONAL :: INFO
4370         INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: ISEED(4)
4371         REAL(WP), INTENT(IN), OPTIONAL, TARGET :: D(:)
4372         REAL(WP), INTENT(OUT) :: A(:,:)
4373      END SUBROUTINE SLAGGE_F95
4374
4375      SUBROUTINE DLAGGE_F95( A, KL, KU, D, ISEED, INFO )
4376         USE LA_PRECISION, ONLY: WP => DP
4377         INTEGER, INTENT(IN), OPTIONAL :: KL, KU
4378         INTEGER, INTENT(OUT), OPTIONAL :: INFO
4379         INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: ISEED(4)
4380         REAL(WP), INTENT(IN), OPTIONAL, TARGET :: D(:)
4381         REAL(WP), INTENT(OUT) :: A(:,:)
4382      END SUBROUTINE DLAGGE_F95
4383
4384      SUBROUTINE CLAGGE_F95( A, KL, KU, D, ISEED, INFO )
4385         USE LA_PRECISION, ONLY: WP => SP
4386         INTEGER, INTENT(IN), OPTIONAL :: KL, KU
4387         INTEGER, INTENT(OUT), OPTIONAL :: INFO
4388         INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: ISEED(4)
4389         REAL(WP), INTENT(IN), OPTIONAL, TARGET :: D(:)
4390         COMPLEX(WP), INTENT(OUT) :: A(:,:)
4391      END SUBROUTINE CLAGGE_F95
4392
4393      SUBROUTINE ZLAGGE_F95( A, KL, KU, D, ISEED, INFO )
4394         USE LA_PRECISION, ONLY: WP => DP
4395         INTEGER, INTENT(IN), OPTIONAL :: KL, KU
4396         INTEGER, INTENT(OUT), OPTIONAL :: INFO
4397         INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: ISEED(4)
4398         REAL(WP), INTENT(IN), OPTIONAL, TARGET :: D(:)
4399         COMPLEX(WP), INTENT(OUT) :: A(:,:)
4400      END SUBROUTINE ZLAGGE_F95
4401
4402      END INTERFACE
4403
4404      INTERFACE LA_LANGE
4405
4406      FUNCTION SLANGE_F95( A, NORM, INFO )
4407         USE LA_PRECISION, ONLY: WP => SP
4408         REAL(WP) :: SLANGE_F95
4409         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
4410         INTEGER, INTENT(OUT), OPTIONAL :: INFO
4411         REAL(WP), INTENT(IN) :: A(:,:)
4412      END FUNCTION SLANGE_F95
4413
4414      FUNCTION SLANGE1_F95( A, NORM, INFO )
4415         USE LA_PRECISION, ONLY: WP => SP
4416         REAL(WP) :: SLANGE1_F95
4417         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
4418         INTEGER, INTENT(OUT), OPTIONAL :: INFO
4419         REAL(WP), INTENT(IN) :: A(:)
4420      END FUNCTION SLANGE1_F95
4421
4422      FUNCTION DLANGE_F95( A, NORM, INFO )
4423         USE LA_PRECISION, ONLY: WP => DP
4424         REAL(WP) :: DLANGE_F95
4425         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
4426         INTEGER, INTENT(OUT), OPTIONAL :: INFO
4427         REAL(WP), INTENT(IN) :: A(:,:)
4428      END FUNCTION DLANGE_F95
4429
4430      FUNCTION DLANGE1_F95( A, NORM, INFO )
4431         USE LA_PRECISION, ONLY: WP => DP
4432         REAL(WP) :: DLANGE1_F95
4433         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
4434         INTEGER, INTENT(OUT), OPTIONAL :: INFO
4435         REAL(WP), INTENT(IN) :: A(:)
4436      END FUNCTION DLANGE1_F95
4437
4438      FUNCTION CLANGE_F95( A, NORM, INFO )
4439         USE LA_PRECISION, ONLY: WP => SP
4440         REAL(WP) :: CLANGE_F95
4441         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
4442         INTEGER, INTENT(OUT), OPTIONAL :: INFO
4443         COMPLEX(WP), INTENT(IN) :: A(:,:)
4444      END FUNCTION CLANGE_F95
4445
4446      FUNCTION CLANGE1_F95( A, NORM, INFO )
4447         USE LA_PRECISION, ONLY: WP => SP
4448         REAL(WP) :: CLANGE1_F95
4449         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
4450         INTEGER, INTENT(OUT), OPTIONAL :: INFO
4451         COMPLEX(WP), INTENT(IN) :: A(:)
4452      END FUNCTION CLANGE1_F95
4453
4454      FUNCTION ZLANGE_F95( A, NORM, INFO )
4455         USE LA_PRECISION, ONLY: WP => DP
4456         REAL(WP) :: ZLANGE_F95
4457         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
4458         INTEGER, INTENT(OUT), OPTIONAL :: INFO
4459         COMPLEX(WP), INTENT(IN) :: A(:,:)
4460      END FUNCTION ZLANGE_F95
4461
4462      FUNCTION ZLANGE1_F95( A, NORM, INFO )
4463         USE LA_PRECISION, ONLY: WP => DP
4464         REAL(WP) :: ZLANGE1_F95
4465         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
4466         INTEGER, INTENT(OUT), OPTIONAL :: INFO
4467         COMPLEX(WP), INTENT(IN) :: A(:)
4468      END FUNCTION ZLANGE1_F95
4469
4470      END INTERFACE
4471
4472      INTERFACE LA_GESDD
4473
4474       SUBROUTINE SGESDD_F95(A, S, U, VT, WW, JOB, INFO )
4475      USE LA_PRECISION, ONLY: WP => SP
4476      CHARACTER(LEN=1), OPTIONAL, INTENT(IN) :: JOB
4477      INTEGER, INTENT(OUT), OPTIONAL :: INFO
4478      REAL(WP), INTENT(INOUT) :: A(:,:)
4479      REAL(WP), INTENT(OUT) :: S(:)
4480      REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: WW(:)
4481      REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:), VT(:,:)
4482      END SUBROUTINE SGESDD_F95
4483
4484       SUBROUTINE DGESDD_F95(A, S, U, VT, WW, JOB, INFO )
4485      USE LA_PRECISION, ONLY: WP => DP
4486      CHARACTER(LEN=1), OPTIONAL, INTENT(IN) :: JOB
4487      INTEGER, INTENT(OUT), OPTIONAL :: INFO
4488      REAL(WP), INTENT(INOUT) :: A(:,:)
4489      REAL(WP), INTENT(OUT) :: S(:)
4490      REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: WW(:)
4491      REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:), VT(:,:)
4492      END SUBROUTINE DGESDD_F95
4493
4494       SUBROUTINE CGESDD_F95(A, S, U, VT, WW, JOB, INFO )
4495      USE LA_PRECISION, ONLY: WP => SP
4496      CHARACTER(LEN=1), OPTIONAL, INTENT(IN) :: JOB
4497      INTEGER, INTENT(OUT), OPTIONAL :: INFO
4498      COMPLEX(WP), INTENT(INOUT) :: A(:,:)
4499      REAL(WP), INTENT(OUT) :: S(:)
4500      REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: WW(:)
4501      COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:), VT(:,:)
4502      END SUBROUTINE CGESDD_F95
4503
4504       SUBROUTINE ZGESDD_F95(A, S, U, VT, WW, JOB, INFO )
4505      USE LA_PRECISION, ONLY: WP => DP
4506      CHARACTER(LEN=1), OPTIONAL, INTENT(IN) :: JOB
4507      INTEGER, INTENT(OUT), OPTIONAL :: INFO
4508      COMPLEX(WP), INTENT(INOUT) :: A(:,:)
4509      REAL(WP), INTENT(OUT) :: S(:)
4510      REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: WW(:)
4511      COMPLEX(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:), VT(:,:)
4512      END SUBROUTINE ZGESDD_F95
4513
4514        END INTERFACE
4515
4516      END MODULE F95_LAPACK
4517