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      END INTERFACE
19
20      INTERFACE LA_GGSVD
21
22       SUBROUTINE SGGSVD_F95( A, B, ALPHA, BETA, K, L, U, V, Q, IWORK,  &
23     &                        INFO )
24          USE LA_PRECISION, ONLY: WP => SP
25          INTEGER, INTENT(OUT), OPTIONAL :: INFO, K, L
26          REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
27          REAL(WP), INTENT(OUT) :: ALPHA(:), BETA(:)
28          REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:), V(:,:),    &
29     &                                               Q(:,:)
30          INTEGER, INTENT(OUT), OPTIONAL :: IWORK(:)
31        END SUBROUTINE SGGSVD_F95
32
33      END INTERFACE
34
35      INTERFACE LA_GEGV
36
37       SUBROUTINE SGEGV_F95( A, B, ALPHAR, ALPHAI, BETA, VL, VR, INFO )
38          USE LA_PRECISION, ONLY: WP => SP
39          INTEGER, INTENT(OUT), OPTIONAL :: INFO
40          REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
41          REAL(WP), INTENT(OUT), OPTIONAL :: ALPHAR(:), ALPHAI(:),      &
42     &                                       BETA(:)
43          REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:), VR(:,:)
44        END SUBROUTINE SGEGV_F95
45
46
47      END INTERFACE
48
49      INTERFACE LA_GEGS
50
51       SUBROUTINE SGEGS_F95( A, B, ALPHAR, ALPHAI, BETA, VSL, VSR,      &
52     &                       INFO )
53          USE LA_PRECISION, ONLY: WP => SP
54          INTEGER, INTENT(OUT), OPTIONAL :: INFO
55          REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
56          REAL(WP), INTENT(OUT), OPTIONAL :: ALPHAR(:), ALPHAI(:),      &
57     &                                       BETA(:)
58          REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VSL(:,:), VSR(:,:)
59        END SUBROUTINE SGEGS_F95
60
61
62      END INTERFACE
63
64        INTERFACE LA_SBGVX
65
66        SUBROUTINE SSBGVX_F95( AB, BB, W, UPLO, Z, VL, VU, IL, IU, M,   &
67     &                         IFAIL, Q, ABSTOL, INFO )
68       USE LA_PRECISION, ONLY: WP => SP
69       REAL(WP), INTENT(INOUT) :: AB(:,:), BB(:,:)
70       REAL(WP), INTENT(OUT) :: W(:)
71       CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  UPLO
72       INTEGER, INTENT(OUT), OPTIONAL :: INFO
73       REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:), Q(:,:)
74       REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
75       INTEGER, INTENT(IN), OPTIONAL :: IL, IU
76       INTEGER, INTENT(OUT), OPTIONAL :: M
77       INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
78      END SUBROUTINE SSBGVX_F95
79
80       END INTERFACE
81
82
83        INTERFACE LA_SBGVD
84
85
86        SUBROUTINE SSBGVD_F95( AB, BB, W, UPLO, Z, INFO )
87           USE LA_PRECISION, ONLY: WP => SP
88           REAL(WP), INTENT(INOUT) :: AB(:,:), BB(:,:)
89           REAL(WP), INTENT(OUT) :: W(:)
90           CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  UPLO
91           INTEGER, INTENT(OUT), OPTIONAL :: INFO
92           REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
93         END SUBROUTINE SSBGVD_F95
94
95         END INTERFACE
96
97
98      INTERFACE LA_SBGV
99
100       SUBROUTINE SSBGV_F95( A, B, W, UPLO, Z, INFO )
101          USE LA_PRECISION, ONLY: WP => SP
102          CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
103          INTEGER, INTENT(OUT), OPTIONAL :: INFO
104          REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
105          REAL(WP), INTENT(OUT) :: W(:)
106          REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
107        END SUBROUTINE SSBGV_F95
108
109      END INTERFACE
110
111
112        INTERFACE LA_SPGVX
113
114        SUBROUTINE SSPGVX_F95( AP, BP, W, ITYPE, UPLO, Z, VL, VU, IL,   &
115     &                         IU, M, IFAIL, ABSTOL, INFO )
116         USE LA_PRECISION, ONLY: WP => SP
117         REAL(WP), INTENT(INOUT) :: AP(:), BP(:)
118         REAL(WP), INTENT(OUT) :: W(:)
119         CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  UPLO
120         INTEGER, INTENT(OUT), OPTIONAL :: INFO
121         REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
122         REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
123         INTEGER, INTENT(IN), OPTIONAL :: IL, IU, ITYPE
124         INTEGER, INTENT(OUT), OPTIONAL :: M
125         INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
126       END SUBROUTINE SSPGVX_F95
127
128       END INTERFACE
129
130
131      INTERFACE LA_SPGVD
132
133       SUBROUTINE SSPGVD_F95( AP, BP, W, ITYPE, UPLO, Z, INFO )
134        USE LA_PRECISION, ONLY: WP => SP
135        REAL(WP), INTENT(INOUT) :: AP(:), BP(:)
136        REAL(WP), INTENT(OUT) :: W(:)
137        CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
138        INTEGER, INTENT(IN), OPTIONAL :: ITYPE
139        INTEGER, INTENT(OUT), OPTIONAL :: INFO
140        REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: Z(:,:)
141       END SUBROUTINE SSPGVD_F95
142
143        END INTERFACE
144
145
146      INTERFACE LA_SPGV
147
148       SUBROUTINE SSPGV_F95( A, B, W, ITYPE, UPLO, Z, INFO )
149          USE LA_PRECISION, ONLY: WP => SP
150          CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
151          INTEGER, INTENT(IN), OPTIONAL :: ITYPE
152          INTEGER, INTENT(OUT), OPTIONAL :: INFO
153          REAL(WP), INTENT(INOUT) :: A(:), B(:)
154          REAL(WP), INTENT(OUT) :: W(:)
155          REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
156        END SUBROUTINE SSPGV_F95
157
158      END INTERFACE
159
160
161      INTERFACE LA_GESVD
162
163       SUBROUTINE SGESVD_F95( A, S, U, VT, WW, JOB, INFO )
164          USE LA_PRECISION, ONLY: WP => SP
165          CHARACTER(LEN=1), OPTIONAL, INTENT(IN) :: JOB
166          INTEGER, INTENT(OUT), OPTIONAL :: INFO
167          REAL(WP), INTENT(INOUT) :: A(:,:)
168          REAL(WP), INTENT(OUT) :: S(:)
169          REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: WW(:)
170         REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:), VT(:,:)
171        END SUBROUTINE SGESVD_F95
172
173      END INTERFACE
174
175      INTERFACE LA_GEEVX
176
177       SUBROUTINE SGEEVX_F95( A, WR, WI, VL, VR, BALANC, ILO, IHI,      &
178     &                        SCALE, ABNRM, RCONDE, RCONDV, INFO )
179          USE LA_PRECISION, ONLY: WP => SP
180          CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: BALANC
181          INTEGER, INTENT(OUT), OPTIONAL :: INFO, ILO, IHI
182          REAL(WP), INTENT(INOUT) :: A(:,:)
183          REAL(WP), INTENT(OUT), OPTIONAL :: ABNRM
184         REAL(WP), INTENT(OUT), OPTIONAL :: SCALE(:), RCONDE(:),        &
185     &                                      RCONDV(:)
186          REAL(WP), INTENT(OUT) :: WR(:), WI(:)
187          REAL(WP), INTENT(OUT), OPTIONAL :: VL(:,:), VR(:,:)
188       END SUBROUTINE SGEEVX_F95
189
190      END INTERFACE
191
192         INTERFACE LA_GGEVX
193
194       SUBROUTINE SGGEVX_F95( A, B, ALPHAR, ALPHAI, BETA, VL, VR,       &
195     &                        BALANC, ILO, IHI, LSCALE, RSCALE, ABNRM,  &
196     &                        BBNRM, RCONDE, RCONDV, INFO )
197         USE LA_PRECISION, ONLY: WP => SP
198         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: BALANC
199         INTEGER, INTENT(OUT), OPTIONAL :: INFO
200         INTEGER, INTENT(OUT), OPTIONAL :: ILO,IHI
201         REAL(WP), INTENT(OUT), OPTIONAL :: ABNRM, BBNRM
202         REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
203         REAL(WP), INTENT(OUT) :: ALPHAR(:), ALPHAI(:)
204         REAL(WP), INTENT(OUT) :: BETA(:)
205         REAL(WP), INTENT(OUT), OPTIONAL ::LSCALE(:), RSCALE(:),        &
206     &                                     RCONDE(:), RCONDV(:)
207         REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:), VR(:,:)
208        END SUBROUTINE SGGEVX_F95
209
210       END INTERFACE
211
212       INTERFACE LA_GGEV
213
214       SUBROUTINE SGGEV_F95( A, B, ALPHAR, ALPHAI, BETA, VL, VR, INFO )
215         USE LA_PRECISION, ONLY: WP => SP
216         INTEGER, INTENT(OUT), OPTIONAL :: INFO
217         REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
218         REAL(WP), INTENT(OUT) :: ALPHAR(:), ALPHAI(:), BETA(:)
219         REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: VL(:,:), VR(:,:)
220       END SUBROUTINE SGGEV_F95
221
222       END INTERFACE
223
224      INTERFACE LA_GEEV
225
226       SUBROUTINE SGEEV_F95( A, WR, WI, VL, VR, INFO )
227          USE LA_PRECISION, ONLY: WP => SP
228          INTEGER, INTENT(OUT), OPTIONAL :: INFO
229          REAL(WP), INTENT(INOUT) :: A(:,:)
230          REAL(WP), INTENT(OUT) :: WR(:), WI(:)
231          REAL(WP), INTENT(OUT), OPTIONAL :: VL(:,:), VR(:,:)
232       END SUBROUTINE SGEEV_F95
233
234      END INTERFACE
235
236      INTERFACE LA_GEESX
237
238       SUBROUTINE SGEESX_F95( A, WR, WI, VS, SELECT, SDIM, RCONDE,      &
239     &                        RCONDV, INFO )
240          USE LA_PRECISION, ONLY: WP => SP
241!         USE LA_EXTERNAL
242          INTERFACE
243             LOGICAL FUNCTION SELECT(WR, WI)
244                USE LA_PRECISION, ONLY: WP => SP
245                REAL(WP), INTENT(IN) :: WR, WI
246             END FUNCTION SELECT
247          END INTERFACE
248          INTEGER, INTENT(OUT), OPTIONAL :: INFO, SDIM
249          REAL(WP), INTENT(INOUT) :: A(:,:)
250          REAL(WP), INTENT(OUT) :: WR(:), WI(:)
251          REAL(WP), INTENT(OUT), OPTIONAL :: RCONDE, RCONDV
252          REAL(WP), INTENT(OUT), OPTIONAL :: VS(:,:)
253          OPTIONAL :: SELECT
254       END SUBROUTINE SGEESX_F95
255
256      END INTERFACE
257
258        INTERFACE LA_GGESX
259
260       SUBROUTINE SGGESX_F95( A, B, ALPHAR, ALPHAI, BETA, VSL, VSR,     &
261     &                        SELECT, SDIM, RCONDE, RCONDV, INFO )
262          USE LA_PRECISION, ONLY: WP => SP
263          INTEGER, INTENT(OUT), OPTIONAL :: INFO
264          REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
265          INTEGER, INTENT(OUT), OPTIONAL :: SDIM
266          REAL(WP), INTENT(OUT) :: ALPHAR(:), ALPHAI(:),  BETA(:)
267          REAL(WP), INTENT(OUT), OPTIONAL :: VSL(:,:), VSR(:,:)
268          INTERFACE
269           LOGICAL FUNCTION SELECT(ALPHAR, ALPHAI, BETA)
270            USE LA_PRECISION, ONLY: WP => SP
271            REAL(WP), INTENT(IN) :: ALPHAR, ALPHAI, BETA
272           END FUNCTION SELECT
273          END INTERFACE
274          OPTIONAL :: SELECT
275          REAL(WP), INTENT(OUT), OPTIONAL :: RCONDE(2), RCONDV(2)
276        END SUBROUTINE SGGESX_F95
277
278        END INTERFACE
279
280
281       INTERFACE LA_GGES
282
283       SUBROUTINE SGGES_F95( A, B, ALPHAR, ALPHAI, BETA, VSL, VSR,      &
284     &                       SELECT, SDIM, INFO )
285           USE LA_PRECISION, ONLY: WP => SP
286           INTEGER, INTENT(OUT), OPTIONAL :: INFO
287           REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
288           INTEGER, INTENT(OUT), OPTIONAL :: SDIM
289           REAL(WP), INTENT(OUT) :: ALPHAR(:), ALPHAI(:), BETA(:)
290           REAL(WP), INTENT(OUT), OPTIONAL :: VSL(:,:), VSR(:,:)
291           INTERFACE
292             LOGICAL FUNCTION SELECT(ALPHAR, ALPHAI, BETA)
293               USE LA_PRECISION, ONLY: WP => SP
294               REAL(WP), INTENT(IN) :: ALPHAR, ALPHAI, BETA
295             END FUNCTION SELECT
296           END INTERFACE
297           OPTIONAL :: SELECT
298          END SUBROUTINE SGGES_F95
299
300       END INTERFACE
301
302      INTERFACE LA_GEES
303
304       SUBROUTINE SGEES_F95( A, WR, WI, VS, SELECT, SDIM, INFO )
305          USE LA_PRECISION, ONLY: WP => SP
306!         USE LA_EXTERNAL, ONLY: SELECT
307          INTERFACE
308             LOGICAL FUNCTION SELECT(WR, WI)
309                USE LA_PRECISION, ONLY: WP => SP
310                REAL(WP), INTENT(IN) :: WR, WI
311             END FUNCTION SELECT
312          END INTERFACE
313
314          INTEGER, INTENT(OUT), OPTIONAL :: INFO, SDIM
315          REAL(WP), INTENT(INOUT) :: A(:,:)
316          REAL(WP), INTENT(OUT) :: WR(:), WI(:)
317          REAL(WP), INTENT(OUT), OPTIONAL :: VS(:,:)
318          OPTIONAL :: SELECT
319       END SUBROUTINE SGEES_F95
320
321      END INTERFACE
322
323        INTERFACE LA_STEVR
324
325       SUBROUTINE SSTEVR_F95( D, E, W, Z, VL, VU, IL, IU, M, ISUPPZ,    &
326     &                        ABSTOL, INFO )
327         USE LA_PRECISION, ONLY: WP =>  SP
328          REAL(WP), INTENT(INOUT) :: D(:), E(:)
329          REAL(WP), INTENT(OUT) :: W(:)
330          INTEGER, INTENT(OUT), OPTIONAL :: INFO
331          REAL(WP), INTENT(IN), OPTIONAL:: ABSTOL, VL, VU
332          INTEGER, INTENT(IN), OPTIONAL :: IL, IU
333          INTEGER, INTENT(OUT), OPTIONAL :: M
334          REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
335          INTEGER, INTENT(OUT), OPTIONAL, TARGET :: ISUPPZ(:)
336         END SUBROUTINE SSTEVR_F95
337
338        END INTERFACE
339
340      INTERFACE LA_STEVX
341
342       SUBROUTINE SSTEVX_F95( D, E, W, Z, VL, VU, IL, IU, M, IFAIL,     &
343     &                        ABSTOL, INFO )
344          USE LA_PRECISION, ONLY: WP => SP
345          INTEGER, INTENT(IN), OPTIONAL :: IL, IU
346          INTEGER, INTENT(OUT), OPTIONAL :: INFO, M
347          REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
348          INTEGER, INTENT(OUT), OPTIONAL :: IFAIL(:)
349          REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
350          REAL(WP), INTENT(INOUT) :: D(:), E(:)
351          REAL(WP), INTENT(OUT) :: W(:)
352       END SUBROUTINE SSTEVX_F95
353
354      END INTERFACE
355
356      INTERFACE LA_STEVD
357
358       SUBROUTINE SSTEVD_F95( D, E, Z, INFO )
359           USE LA_PRECISION, ONLY: WP => SP
360           REAL(WP), INTENT(INOUT) :: D(:), E(:)
361           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
362           INTEGER, INTENT(OUT), OPTIONAL :: INFO
363      END SUBROUTINE SSTEVD_F95
364
365      END INTERFACE
366
367      INTERFACE LA_STEV
368
369       SUBROUTINE SSTEV_F95( D, E, Z, INFO )
370           USE LA_PRECISION, ONLY: WP => SP
371           REAL(WP), INTENT(INOUT) :: D(:), E(:)
372           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
373           INTEGER, INTENT(OUT), OPTIONAL :: INFO
374        END SUBROUTINE SSTEV_F95
375
376      END INTERFACE
377
378      INTERFACE LA_SBEVX
379
380       SUBROUTINE SSBEVX_F95( AB, W, UPLO, Z, VL, VU, IL, IU, M, IFAIL, &
381     &                        Q, ABSTOL, INFO )
382           USE LA_PRECISION, ONLY: WP => SP
383           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
384           INTEGER, INTENT(IN), OPTIONAL :: IL, IU
385           INTEGER, INTENT(OUT), OPTIONAL :: INFO, M
386           REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
387           INTEGER, INTENT(OUT), OPTIONAL :: IFAIL(:)
388           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:), Q(:,:)
389           REAL(WP), INTENT(INOUT) :: AB(:,:)
390           REAL(WP), INTENT(OUT) :: W(:)
391        END SUBROUTINE SSBEVX_F95
392
393      END INTERFACE
394
395
396      INTERFACE LA_SBEVD
397
398       SUBROUTINE SSBEVD_F95( AB, W, UPLO, Z, INFO )
399           USE LA_PRECISION, ONLY: WP => SP
400           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
401           INTEGER, INTENT(OUT), OPTIONAL :: INFO
402           REAL(WP), INTENT(INOUT) :: AB(:,:)
403           REAL(WP), INTENT(OUT) :: W(:)
404           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
405        END SUBROUTINE SSBEVD_F95
406
407      END INTERFACE
408
409
410      INTERFACE LA_SBEV
411
412       SUBROUTINE SSBEV_F95( AB, W, UPLO, Z, INFO )
413           USE LA_PRECISION, ONLY: WP => SP
414           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
415           INTEGER, INTENT(OUT), OPTIONAL :: INFO
416           REAL(WP), INTENT(INOUT) :: AB(:,:)
417           REAL(WP), INTENT(OUT) :: W(:)
418           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
419        END SUBROUTINE SSBEV_F95
420
421      END INTERFACE
422
423
424      INTERFACE LA_SPEVX
425
426       SUBROUTINE SSPEVX_F95( AP, W, UPLO, Z, VL, VU, IL, IU, M, IFAIL, &
427     &                        ABSTOL, INFO )
428           USE LA_PRECISION, ONLY: WP => SP
429           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
430           INTEGER, INTENT(IN), OPTIONAL :: IL, IU
431           INTEGER, INTENT(OUT), OPTIONAL :: INFO, M
432           REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
433           INTEGER, INTENT(OUT), OPTIONAL :: IFAIL(:)
434           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
435           REAL(WP), INTENT(INOUT) :: AP(:)
436           REAL(WP), INTENT(OUT) :: W(:)
437        END SUBROUTINE SSPEVX_F95
438
439      END INTERFACE
440
441
442      INTERFACE LA_SPEVD
443
444       SUBROUTINE SSPEVD_F95( AP, W, UPLO, Z, INFO )
445           USE LA_PRECISION, ONLY: WP => SP
446           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
447           INTEGER, INTENT(OUT), OPTIONAL :: INFO
448           REAL(WP), INTENT(INOUT) :: AP(:)
449           REAL(WP), INTENT(OUT) :: W(:)
450           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
451        END SUBROUTINE SSPEVD_F95
452
453      END INTERFACE
454
455
456      INTERFACE LA_SPEV
457
458       SUBROUTINE SSPEV_F95( AP, W, UPLO, Z, INFO )
459           USE LA_PRECISION, ONLY: WP => SP
460           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
461           INTEGER, INTENT(OUT), OPTIONAL :: INFO
462           REAL(WP), INTENT(INOUT) :: AP(:)
463           REAL(WP), INTENT(OUT) :: W(:)
464           REAL(WP), INTENT(OUT), OPTIONAL :: Z(:,:)
465        END SUBROUTINE SSPEV_F95
466
467      END INTERFACE
468
469
470      INTERFACE LA_GGGLM
471
472       SUBROUTINE SGGGLM_F95( A, B, D, X, Y, INFO )
473           USE LA_PRECISION, ONLY: WP => SP
474           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:,:), D(:)
475           REAL(WP), INTENT( OUT ) :: X(:), Y(:)
476           INTEGER, INTENT(OUT), OPTIONAL :: INFO
477        END SUBROUTINE SGGGLM_F95
478
479      END INTERFACE
480
481      INTERFACE LA_GGLSE
482
483       SUBROUTINE SGGLSE_F95( A, B, C, D, X, INFO )
484           USE LA_PRECISION, ONLY: WP => SP
485           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:,:), C(:), D(:)
486           REAL(WP), INTENT( OUT ) :: X(:)
487           INTEGER, INTENT(OUT), OPTIONAL :: INFO
488        END SUBROUTINE SGGLSE_F95
489
490      END INTERFACE
491
492         INTERFACE LA_GELSY
493
494       SUBROUTINE SGELSY_F95( A, B, RANK, JPVT, RCOND, INFO )
495       USE LA_PRECISION, ONLY: WP => SP
496       REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
497       INTEGER, INTENT(OUT), OPTIONAL :: RANK
498       INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: JPVT(:)
499       REAL(WP), INTENT(IN), OPTIONAL :: RCOND
500       INTEGER, INTENT(OUT), OPTIONAL :: INFO
501      END SUBROUTINE SGELSY_F95
502
503       SUBROUTINE SGELSY1_F95( A, B, RANK, JPVT, RCOND, INFO )
504        USE LA_PRECISION, ONLY: WP => SP
505        REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
506        INTEGER, INTENT(OUT), OPTIONAL :: RANK
507        INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: JPVT(:)
508        REAL(WP), INTENT(IN), OPTIONAL :: RCOND
509        INTEGER, INTENT(OUT), OPTIONAL :: INFO
510       END SUBROUTINE SGELSY1_F95
511
512      END INTERFACE
513
514        INTERFACE LA_GELSD
515
516       SUBROUTINE SGELSD_F95( A, B, RANK, S, RCOND, INFO )
517         USE LA_PRECISION, ONLY: WP => SP
518         REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
519         INTEGER, INTENT(IN), OPTIONAL :: RANK
520         REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
521         REAL(WP), INTENT(IN), OPTIONAL :: RCOND
522         INTEGER, INTENT(OUT), OPTIONAL :: INFO
523       END SUBROUTINE SGELSD_F95
524
525       SUBROUTINE SGELSD1_F95( A, B, RANK, S, RCOND, INFO )
526        USE LA_PRECISION, ONLY: WP => SP
527        REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:)
528        INTEGER, INTENT(IN), OPTIONAL :: RANK
529        REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
530        REAL(WP), INTENT(IN), OPTIONAL :: RCOND
531        INTEGER, INTENT(OUT), OPTIONAL :: INFO
532       END SUBROUTINE SGELSD1_F95
533
534      END INTERFACE
535
536      INTERFACE LA_GELSX
537
538       SUBROUTINE SGELSX_F95( A, B, RANK, JPVT, RCOND, INFO )
539           USE LA_PRECISION, ONLY: WP => SP
540           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
541           INTEGER, INTENT(IN), OPTIONAL :: RANK
542           INTEGER, INTENT(OUT), OPTIONAL :: JPVT(:)
543           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
544           INTEGER, INTENT(OUT), OPTIONAL :: INFO
545        END SUBROUTINE SGELSX_F95
546
547       SUBROUTINE SGELSX1_F95( A, B, RANK, JPVT, RCOND, INFO )
548           USE LA_PRECISION, ONLY: WP => SP
549           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:)
550           INTEGER, INTENT(IN), OPTIONAL :: RANK
551           INTEGER, INTENT(OUT), OPTIONAL :: JPVT(:)
552           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
553           INTEGER, INTENT(OUT), OPTIONAL :: INFO
554        END SUBROUTINE SGELSX1_F95
555
556      END INTERFACE
557
558      INTERFACE LA_GELSS
559
560       SUBROUTINE SGELSS_F95( A, B, RANK, S, RCOND, INFO )
561           USE LA_PRECISION, ONLY: WP => SP
562           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
563           INTEGER, INTENT(IN), OPTIONAL :: RANK
564           REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
565           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
566           INTEGER, INTENT(OUT), OPTIONAL :: INFO
567        END SUBROUTINE SGELSS_F95
568
569       SUBROUTINE SGELSS1_F95( A, B, RANK, S, RCOND, INFO )
570           USE LA_PRECISION, ONLY: WP => SP
571           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:)
572           INTEGER, INTENT(IN), OPTIONAL :: RANK
573           REAL(WP), INTENT(OUT), OPTIONAL :: S(:)
574           REAL(WP), INTENT(IN), OPTIONAL :: RCOND
575           INTEGER, INTENT(OUT), OPTIONAL :: INFO
576        END SUBROUTINE SGELSS1_F95
577
578      END INTERFACE
579
580      INTERFACE LA_GELS
581
582       SUBROUTINE SGELS_F95( A, B, TRANS, INFO )
583           USE LA_PRECISION, ONLY: WP => SP
584           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
585           INTEGER, INTENT(OUT), OPTIONAL :: INFO
586           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:,:)
587        END SUBROUTINE SGELS_F95
588
589       SUBROUTINE SGELS1_F95( A, B, TRANS, INFO )
590           USE LA_PRECISION, ONLY: WP => SP
591           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
592           INTEGER, INTENT(OUT), OPTIONAL :: INFO
593           REAL(WP), INTENT( INOUT ) :: A( :, : ), B(:)
594        END SUBROUTINE SGELS1_F95
595
596      END INTERFACE
597
598      INTERFACE LA_SPSVX
599
600       SUBROUTINE SSPSVX_F95( AP, B, X, UPLO, AFP, IPIV, FACT, FERR,    &
601     &                        BERR, RCOND, INFO )
602           USE LA_PRECISION, ONLY: WP => SP
603           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
604           INTEGER, INTENT(OUT), OPTIONAL :: INFO
605           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
606           REAL(WP), INTENT(IN) :: AP(:), B(:,:)
607           REAL(WP), INTENT(OUT) :: X(:,:)
608           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
609           REAL(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
610           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
611        END SUBROUTINE SSPSVX_F95
612
613       SUBROUTINE SSPSVX1_F95( AP, B, X, UPLO, AFP, IPIV, FACT, FERR,   &
614     &                         BERR, RCOND, INFO )
615           USE LA_PRECISION, ONLY: WP => SP
616           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
617           INTEGER, INTENT(OUT), OPTIONAL :: INFO
618           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
619           REAL(WP), INTENT(IN) :: AP(:), B(:)
620           REAL(WP), INTENT(OUT) :: X(:)
621           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
622           REAL(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
623        END SUBROUTINE SSPSVX1_F95
624
625      END INTERFACE
626
627
628      INTERFACE LA_SYSVX
629
630       SUBROUTINE SSYSVX_F95( A, B, X, UPLO, AF, IPIV, FACT, FERR, BERR,&
631     &                        RCOND, INFO )
632           USE LA_PRECISION, ONLY: WP => SP
633           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
634           INTEGER, INTENT(OUT), OPTIONAL :: INFO
635           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
636           REAL(WP), INTENT(IN) :: A(:,:), B(:,:)
637           REAL(WP), INTENT(OUT) :: X(:,:)
638           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
639           REAL(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
640           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
641        END SUBROUTINE SSYSVX_F95
642
643       SUBROUTINE SSYSVX1_F95( A, B, X, UPLO, AF, IPIV, FACT, FERR,     &
644     &                         BERR, RCOND, INFO )
645           USE LA_PRECISION, ONLY: WP => SP
646           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
647           INTEGER, INTENT(OUT), OPTIONAL :: INFO
648           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
649           REAL(WP), INTENT(IN) :: A(:,:), B(:)
650           REAL(WP), INTENT(OUT) :: X(:)
651           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
652           REAL(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
653        END SUBROUTINE SSYSVX1_F95
654
655      END INTERFACE
656
657
658      INTERFACE LA_PTSVX
659
660       SUBROUTINE SPTSVX_F95( D, E, B, X, DF, EF, FACT, FERR, BERR,     &
661     &                        RCOND, INFO )
662           USE LA_PRECISION, ONLY: WP => SP
663           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
664           INTEGER, INTENT(OUT), OPTIONAL :: INFO
665           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
666           REAL(WP), INTENT(IN) :: D(:)
667           REAL(WP), INTENT(IN) :: E(:), B(:,:)
668           REAL(WP), INTENT(OUT) :: X(:,:)
669           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
670           REAL(WP), INTENT(INOUT), OPTIONAL :: DF(:)
671           REAL(WP), INTENT(INOUT), OPTIONAL :: EF(:)
672        END SUBROUTINE SPTSVX_F95
673
674       SUBROUTINE SPTSVX1_F95( D, E, B, X, DF, EF, FACT, FERR, BERR,    &
675     &                         RCOND, INFO )
676           USE LA_PRECISION, ONLY: WP => SP
677           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: FACT
678           INTEGER, INTENT(OUT), OPTIONAL :: INFO
679           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
680           REAL(WP), INTENT(IN) :: D(:)
681           REAL(WP), INTENT(IN) :: E(:), B(:)
682           REAL(WP), INTENT(OUT) :: X(:)
683           REAL(WP), INTENT(INOUT), OPTIONAL :: DF(:)
684           REAL(WP), INTENT(INOUT), OPTIONAL :: EF(:)
685        END SUBROUTINE SPTSVX1_F95
686
687      END INTERFACE
688
689      INTERFACE LA_PBSVX
690
691       SUBROUTINE SPBSVX_F95( AB, B, X, UPLO, AFB, FACT, EQUED, S, FERR,&
692     &                        BERR, RCOND, INFO )
693           USE LA_PRECISION, ONLY: WP => SP
694           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
695           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
696           INTEGER, INTENT(OUT), OPTIONAL :: INFO
697           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
698           REAL(WP), INTENT(INOUT) :: AB(:,:), B(:,:)
699           REAL(WP), INTENT(OUT) :: X(:,:)
700           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
701           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
702           REAL(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
703        END SUBROUTINE SPBSVX_F95
704
705       SUBROUTINE SPBSVX1_F95( AB, B, X, UPLO, AFB, FACT, EQUED, S,     &
706     &                         FERR, BERR, RCOND, INFO )
707           USE LA_PRECISION, ONLY: WP => SP
708           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
709           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
710           INTEGER, INTENT(OUT), OPTIONAL :: INFO
711           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
712           REAL(WP), INTENT(INOUT) :: AB(:,:), B(:)
713           REAL(WP), INTENT(OUT) :: X(:)
714           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
715           REAL(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
716        END SUBROUTINE SPBSVX1_F95
717
718      END INTERFACE
719
720      INTERFACE LA_PPSVX
721
722       SUBROUTINE SPPSVX_F95( AP, B, X, UPLO, AFP, FACT, EQUED, S, FERR,&
723     &                        BERR, RCOND, INFO )
724           USE LA_PRECISION, ONLY: WP => SP
725           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
726           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
727           INTEGER, INTENT(OUT), OPTIONAL :: INFO
728           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
729           REAL(WP), INTENT(INOUT) :: AP(:), B(:,:)
730           REAL(WP), INTENT(OUT) :: X(:,:)
731           REAL(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
732           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
733           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
734        END SUBROUTINE SPPSVX_F95
735
736       SUBROUTINE SPPSVX1_F95( AP, B, X, UPLO, AFP, FACT, EQUED, S,     &
737     &                         FERR, BERR, RCOND, INFO )
738           USE LA_PRECISION, ONLY: WP => SP
739           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
740           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
741           INTEGER, INTENT(OUT), OPTIONAL :: INFO
742           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
743           REAL(WP), INTENT(INOUT) :: AP(:), B(:)
744           REAL(WP), INTENT(OUT) :: X(:)
745           REAL(WP), INTENT(INOUT), OPTIONAL :: AFP(:)
746           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
747        END SUBROUTINE SPPSVX1_F95
748
749      END INTERFACE
750
751      INTERFACE LA_POSVX
752
753       SUBROUTINE SPOSVX_F95( A, B, X, UPLO, AF, FACT, EQUED, S, FERR,  &
754     &                        BERR, RCOND, INFO )
755           USE LA_PRECISION, ONLY: WP => SP
756           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
757           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
758           INTEGER, INTENT(OUT), OPTIONAL :: INFO
759           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
760           REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
761           REAL(WP), INTENT(OUT) :: X(:,:)
762           REAL(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
763           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
764           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
765        END SUBROUTINE SPOSVX_F95
766
767       SUBROUTINE SPOSVX1_F95( A, B, X, UPLO, AF, FACT, EQUED, S, FERR, &
768     &                         BERR, RCOND, INFO )
769           USE LA_PRECISION, ONLY: WP => SP
770           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO, FACT
771           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
772           INTEGER, INTENT(OUT), OPTIONAL :: INFO
773           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
774           REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
775           REAL(WP), INTENT(OUT) :: X(:)
776           REAL(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
777           REAL(WP), INTENT(INOUT), OPTIONAL :: S(:)
778        END SUBROUTINE SPOSVX1_F95
779
780      END INTERFACE
781
782      INTERFACE LA_GTSVX
783
784       SUBROUTINE SGTSVX_F95( DL, D, DU, B, X, DLF, DF, DUF, DU2, IPIV, &
785     &                        FACT, TRANS, FERR, BERR, RCOND, INFO )
786           USE LA_PRECISION, ONLY: WP => SP
787           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
788           INTEGER, INTENT(OUT), OPTIONAL :: INFO
789           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
790           REAL(WP), INTENT(IN) :: DL(:), D(:), DU(:), B(:,:)
791           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
792           REAL(WP), INTENT(INOUT), OPTIONAL :: DLF(:), DF(:), DUF(:),  &
793     &                                          DU2(:)
794           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
795           REAL(WP), INTENT(OUT) :: X(:,:)
796        END SUBROUTINE SGTSVX_F95
797
798       SUBROUTINE SGTSVX1_F95( DL, D, DU, B, X, DLF, DF, DUF, DU2, IPIV,&
799     &                         FACT, TRANS, FERR, BERR, RCOND, INFO )
800           USE LA_PRECISION, ONLY: WP => SP
801           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
802           INTEGER, INTENT(OUT), OPTIONAL :: INFO
803           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, FERR, BERR
804           REAL(WP), INTENT(IN) :: DL(:), D(:), DU(:), B(:)
805           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
806           REAL(WP), INTENT(INOUT), OPTIONAL :: DLF(:), DF(:), DUF(:),  &
807     &                                          DU2(:)
808           REAL(WP), INTENT(OUT) :: X(:)
809        END SUBROUTINE SGTSVX1_F95
810
811      END INTERFACE
812
813      INTERFACE LA_GBSVX
814
815       SUBROUTINE SGBSVX_F95( A, B, X, KL, AFB, IPIV, FACT, TRANS,      &
816     &                        EQUED, R, C, FERR, BERR, RCOND, RPVGRW,   &
817     &                        INFO )
818           USE LA_PRECISION, ONLY: WP => SP
819           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
820           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
821           INTEGER, INTENT(IN), OPTIONAL :: KL
822           INTEGER, INTENT(OUT), OPTIONAL :: INFO
823           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW
824           REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
825           REAL(WP), INTENT(OUT) :: X(:,:)
826           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
827           REAL(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
828           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
829           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
830        END SUBROUTINE SGBSVX_F95
831
832       SUBROUTINE SGBSVX1_F95( A, B, X, KL, AFB, IPIV, FACT, TRANS,     &
833     &                         EQUED, R, C, FERR, BERR, RCOND, RPVGRW,  &
834     &                         INFO )
835           USE LA_PRECISION, ONLY: WP => SP
836           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
837           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
838           INTEGER, INTENT(IN), OPTIONAL :: KL
839           INTEGER, INTENT(OUT), OPTIONAL :: INFO
840           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW, FERR, BERR
841           REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
842           REAL(WP), INTENT(OUT) :: X(:)
843           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
844           REAL(WP), INTENT(INOUT), OPTIONAL :: AFB(:,:)
845           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
846        END SUBROUTINE SGBSVX1_F95
847
848      END INTERFACE
849
850      INTERFACE LA_SPSV
851
852       SUBROUTINE SSPSV_F95( AP, B, UPLO, IPIV, INFO )
853            USE LA_PRECISION, ONLY: WP => SP
854            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
855            INTEGER, INTENT(OUT), OPTIONAL :: INFO
856            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
857            REAL(WP), INTENT(INOUT) :: AP(:), B(:,:)
858        END SUBROUTINE SSPSV_F95
859
860       SUBROUTINE SSPSV1_F95( AP, B, UPLO, IPIV, INFO )
861            USE LA_PRECISION, ONLY: WP => SP
862            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
863            INTEGER, INTENT(OUT), OPTIONAL :: INFO
864            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
865            REAL(WP), INTENT(INOUT) :: AP(:), B(:)
866        END SUBROUTINE SSPSV1_F95
867
868      END INTERFACE
869
870
871      INTERFACE LA_SYSV
872
873       SUBROUTINE SSYSV_F95( A, B, UPLO, IPIV, INFO )
874            USE LA_PRECISION, ONLY: WP => SP
875            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
876            INTEGER, INTENT(OUT), OPTIONAL :: INFO
877            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
878            REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
879        END SUBROUTINE SSYSV_F95
880
881       SUBROUTINE SSYSV1_F95( A, B, UPLO, IPIV, INFO )
882            USE LA_PRECISION, ONLY: WP => SP
883            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
884            INTEGER, INTENT(OUT), OPTIONAL :: INFO
885            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
886            REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
887        END SUBROUTINE SSYSV1_F95
888
889      END INTERFACE
890
891
892      INTERFACE LA_PTSV
893
894       SUBROUTINE SPTSV_F95( D, E, B, INFO )
895            USE LA_PRECISION, ONLY: WP => SP
896            INTEGER, INTENT(OUT), OPTIONAL :: INFO
897            REAL(WP), INTENT(INOUT) :: D(:)
898            REAL(WP), INTENT(INOUT) :: E(:), B(:,:)
899        END SUBROUTINE SPTSV_F95
900
901       SUBROUTINE SPTSV1_F95( D, E, B, INFO )
902            USE LA_PRECISION, ONLY: WP => SP
903            INTEGER, INTENT(OUT), OPTIONAL :: INFO
904            REAL(WP), INTENT(INOUT) :: D(:)
905            REAL(WP), INTENT(INOUT) :: E(:), B(:)
906        END SUBROUTINE SPTSV1_F95
907
908      END INTERFACE
909
910      INTERFACE LA_PBSV
911
912       SUBROUTINE SPBSV_F95( AB, B, UPLO, INFO )
913            USE LA_PRECISION, ONLY: WP => SP
914            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
915            INTEGER, INTENT(OUT), OPTIONAL :: INFO
916            REAL(WP), INTENT(INOUT) :: AB(:,:), B(:,:)
917        END SUBROUTINE SPBSV_F95
918
919       SUBROUTINE SPBSV1_F95( AB, B, UPLO, INFO )
920            USE LA_PRECISION, ONLY: WP => SP
921            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
922            INTEGER, INTENT(OUT), OPTIONAL :: INFO
923            REAL(WP), INTENT(INOUT) :: AB(:,:), B(:)
924        END SUBROUTINE SPBSV1_F95
925
926      END INTERFACE
927
928      INTERFACE LA_PPSV
929
930       SUBROUTINE SPPSV_F95( AP, B, UPLO, INFO )
931            USE LA_PRECISION, ONLY: WP => SP
932            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
933            INTEGER, INTENT(OUT), OPTIONAL :: INFO
934            REAL(WP), INTENT(INOUT) :: AP(:), B(:,:)
935        END SUBROUTINE SPPSV_F95
936
937       SUBROUTINE SPPSV1_F95( AP, B, UPLO, INFO )
938            USE LA_PRECISION, ONLY: WP => SP
939            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
940            INTEGER, INTENT(OUT), OPTIONAL :: INFO
941            REAL(WP), INTENT(INOUT) :: AP(:), B(:)
942        END SUBROUTINE SPPSV1_F95
943
944      END INTERFACE
945
946      INTERFACE LA_POSV
947
948       SUBROUTINE SPOSV_F95( A, B, UPLO, INFO )
949            USE LA_PRECISION, ONLY: WP => SP
950            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
951            INTEGER, INTENT(OUT), OPTIONAL :: INFO
952            REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
953        END SUBROUTINE SPOSV_F95
954
955       SUBROUTINE SPOSV1_F95( A, B, UPLO, INFO )
956            USE LA_PRECISION, ONLY: WP => SP
957            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
958            INTEGER, INTENT(OUT), OPTIONAL :: INFO
959            REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
960        END SUBROUTINE SPOSV1_F95
961
962      END INTERFACE
963
964      INTERFACE LA_GTSV
965
966       SUBROUTINE SGTSV_F95( DL, D, DU, B, INFO )
967            USE LA_PRECISION, ONLY: WP => SP
968            INTEGER, INTENT(OUT), OPTIONAL :: INFO
969            REAL(WP), INTENT(INOUT) :: DL(:), D(:), DU(:), B(:,:)
970        END SUBROUTINE SGTSV_F95
971
972       SUBROUTINE SGTSV1_F95( DL, D, DU, B, INFO )
973            USE LA_PRECISION, ONLY: WP => SP
974            INTEGER, INTENT(OUT), OPTIONAL :: INFO
975            REAL(WP), INTENT(INOUT) :: DL(:), D(:), DU(:), B(:)
976        END SUBROUTINE SGTSV1_F95
977
978      END INTERFACE
979
980      INTERFACE LA_GBSV
981
982       SUBROUTINE SGBSV_F95( AB, B, KL, IPIV, INFO )
983            USE LA_PRECISION, ONLY: WP => SP
984            INTEGER, INTENT(IN), OPTIONAL :: KL
985            INTEGER, INTENT(OUT), OPTIONAL :: INFO
986            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
987            REAL(WP), INTENT(INOUT) :: AB(:,:), B(:,:)
988        END SUBROUTINE SGBSV_F95
989
990       SUBROUTINE SGBSV1_F95( AB, B, KL, IPIV, INFO )
991            USE LA_PRECISION, ONLY: WP => SP
992            INTEGER, INTENT(IN), OPTIONAL :: KL
993            INTEGER, INTENT(OUT), OPTIONAL :: INFO
994            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
995            REAL(WP), INTENT(INOUT) :: AB(:,:), B(:)
996        END SUBROUTINE SGBSV1_F95
997
998      END INTERFACE
999
1000      INTERFACE LA_GESV
1001
1002       SUBROUTINE SGESV_F95( A, B, IPIV, INFO )
1003            USE LA_PRECISION, ONLY: WP => SP
1004            INTEGER, INTENT(OUT), OPTIONAL :: INFO
1005            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
1006            REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
1007        END SUBROUTINE SGESV_F95
1008
1009       SUBROUTINE SGESV1_F95( A, B, IPIV, INFO )
1010            USE LA_PRECISION, ONLY: WP => SP
1011            INTEGER, INTENT(OUT), OPTIONAL :: INFO
1012            INTEGER, INTENT(OUT), OPTIONAL :: IPIV(:)
1013            REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
1014        END SUBROUTINE SGESV1_F95
1015
1016      END INTERFACE
1017
1018      INTERFACE LA_GESVX
1019
1020       SUBROUTINE SGESVX_F95( A, B, X, AF, IPIV, FACT, TRANS, EQUED, R, &
1021     &                        C, FERR, BERR, RCOND, RPVGRW, INFO )
1022           USE LA_PRECISION, ONLY: WP => SP
1023           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
1024           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
1025           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1026           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW
1027           REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
1028           REAL(WP), INTENT(OUT) :: X(:,:)
1029           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
1030           REAL(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
1031           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
1032           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
1033        END SUBROUTINE SGESVX_F95
1034
1035       SUBROUTINE SGESVX1_F95( A, B, X, AF, IPIV, FACT, TRANS, EQUED, R,&
1036     &                         C, FERR, BERR, RCOND, RPVGRW, INFO )
1037           USE LA_PRECISION, ONLY: WP => SP
1038           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS, FACT
1039           CHARACTER(LEN=1), INTENT(INOUT), OPTIONAL :: EQUED
1040           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1041           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND, RPVGRW
1042           REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
1043           REAL(WP), INTENT(OUT) :: X(:)
1044           INTEGER, INTENT(INOUT), OPTIONAL :: IPIV(:)
1045           REAL(WP), INTENT(INOUT), OPTIONAL :: AF(:,:)
1046           REAL(WP), INTENT(INOUT), OPTIONAL :: C(:), R(:)
1047           REAL(WP), INTENT(OUT), OPTIONAL :: FERR, BERR
1048        END SUBROUTINE SGESVX1_F95
1049
1050      END INTERFACE
1051
1052      INTERFACE LA_GETRF
1053
1054       SUBROUTINE SGETRF_F95( A, IPIV, RCOND, NORM, INFO )
1055           USE LA_PRECISION, ONLY: WP => SP
1056           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
1057           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1058           REAL(WP), INTENT( OUT ), OPTIONAL :: RCOND
1059           INTEGER, INTENT( OUT ), OPTIONAL :: IPIV( : )
1060           REAL(WP), INTENT( INOUT ) :: A( :, : )
1061        END SUBROUTINE SGETRF_F95
1062
1063      END INTERFACE
1064
1065      INTERFACE LA_GETRS
1066
1067       SUBROUTINE SGETRS_F95( A, IPIV, B, TRANS, INFO )
1068           USE LA_PRECISION, ONLY: WP => SP
1069           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
1070           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1071           INTEGER, INTENT(IN) :: IPIV(:)
1072           REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
1073        END SUBROUTINE SGETRS_F95
1074
1075       SUBROUTINE SGETRS1_F95( A, IPIV, B, TRANS, INFO )
1076           USE LA_PRECISION, ONLY: WP => SP
1077           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
1078           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1079           INTEGER, INTENT(IN) :: IPIV(:)
1080           REAL(WP), INTENT(INOUT) :: A(:,:), B(:)
1081        END SUBROUTINE SGETRS1_F95
1082
1083      END INTERFACE
1084
1085      INTERFACE LA_GETRI
1086
1087       SUBROUTINE SGETRI_F95( A, IPIV, INFO )
1088           USE LA_PRECISION, ONLY: WP => SP
1089           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1090           INTEGER, INTENT(IN) :: IPIV(:)
1091           REAL(WP), INTENT(INOUT) :: A(:,:)
1092        END SUBROUTINE SGETRI_F95
1093
1094      END INTERFACE
1095
1096      INTERFACE LA_GERFS
1097
1098       SUBROUTINE SGERFS_F95( A, AF, IPIV, B, X, TRANS, FERR, BERR,     &
1099     &                        INFO )
1100           USE LA_PRECISION, ONLY: WP => SP
1101           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
1102           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1103           INTEGER, INTENT(IN) :: IPIV(:)
1104           REAL(WP), INTENT(IN) :: A(:,:), AF(:,:), B(:,:)
1105           REAL(WP), INTENT(INOUT) :: X(:,:)
1106           REAL(WP), INTENT(OUT), OPTIONAL :: FERR(:), BERR(:)
1107        END SUBROUTINE SGERFS_F95
1108
1109       SUBROUTINE SGERFS1_F95( A, AF, IPIV, B, X, TRANS, FERR, BERR,    &
1110     &                         INFO )
1111           USE LA_PRECISION, ONLY: WP => SP
1112           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
1113           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1114           INTEGER, INTENT(IN) :: IPIV(:)
1115           REAL(WP), INTENT(IN) :: A(:,:), AF(:,:)
1116           REAL(WP), INTENT(IN) :: B(:)
1117           REAL(WP), INTENT(INOUT) :: X(:)
1118           REAL(WP), INTENT(OUT), OPTIONAL :: FERR, BERR
1119        END SUBROUTINE SGERFS1_F95
1120
1121      END INTERFACE
1122
1123      INTERFACE LA_GEEQU
1124
1125       SUBROUTINE SGEEQU_F95( A, R, C, ROWCND, COLCND, AMAX, INFO )
1126           USE LA_PRECISION, ONLY: WP => SP
1127           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1128           REAL(WP), INTENT( OUT ), OPTIONAL :: AMAX, COLCND, ROWCND
1129           REAL(WP), INTENT( IN ) :: A( :, : )
1130           REAL(WP), INTENT( OUT ) :: C( : ), R( : )
1131        END SUBROUTINE SGEEQU_F95
1132
1133      END INTERFACE
1134
1135      INTERFACE LA_SYEV
1136
1137       SUBROUTINE SSYEV_F95( A, W, JOBZ, UPLO, INFO )
1138           USE LA_PRECISION, ONLY: WP => SP
1139           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
1140           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1141           REAL(WP), INTENT(INOUT) :: A(:,:)
1142           REAL(WP), INTENT(OUT) :: W(:)
1143        END SUBROUTINE SSYEV_F95
1144
1145      END INTERFACE
1146
1147
1148      INTERFACE LA_SYEVD
1149
1150       SUBROUTINE SSYEVD_F95( A, W, JOBZ, UPLO, INFO )
1151           USE LA_PRECISION, ONLY: WP => SP
1152           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
1153           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1154           REAL(WP), INTENT(INOUT) :: A(:,:)
1155           REAL(WP), INTENT(OUT) :: W(:)
1156        END SUBROUTINE SSYEVD_F95
1157
1158      END INTERFACE
1159
1160
1161        INTERFACE LA_SYEVR
1162
1163       SUBROUTINE SSYEVR_F95( A, W, JOBZ, UPLO, VL, VU, IL, IU, M,      &
1164     &                        ISUPPZ, ABSTOL, INFO )
1165         USE LA_PRECISION, ONLY: WP => SP
1166         REAL(WP), INTENT(INOUT) :: A(:,:)
1167         REAL(WP), INTENT(OUT) :: W(:)
1168         CHARACTER(LEN=1), INTENT(IN), OPTIONAL ::  JOBZ, UPLO
1169         INTEGER, INTENT(OUT), OPTIONAL :: INFO
1170         REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
1171         INTEGER, INTENT(IN), OPTIONAL :: IL, IU
1172         INTEGER, INTENT(OUT), OPTIONAL :: M
1173         INTEGER, INTENT(OUT), OPTIONAL, TARGET :: ISUPPZ(:)
1174       END SUBROUTINE SSYEVR_F95
1175
1176       END INTERFACE
1177
1178
1179      INTERFACE LA_SYEVX
1180
1181       SUBROUTINE SSYEVX_F95( A, W, JOBZ, UPLO, VL, VU, IL, IU, M,      &
1182     &                        IFAIL, ABSTOL, INFO )
1183           USE LA_PRECISION, ONLY: WP => SP
1184           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
1185           INTEGER, INTENT(IN), OPTIONAL :: IL, IU
1186           INTEGER, INTENT(OUT), OPTIONAL :: INFO, M
1187           REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
1188           INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
1189           REAL(WP), INTENT(INOUT) :: A(:,:)
1190           REAL(WP), INTENT(OUT) :: W(:)
1191        END SUBROUTINE SSYEVX_F95
1192
1193      END INTERFACE
1194
1195
1196      INTERFACE LA_SYGST
1197
1198       SUBROUTINE SSYGST_F95( A, B, ITYPE, UPLO, INFO )
1199           USE LA_PRECISION, ONLY: WP => SP
1200           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1201           INTEGER, INTENT(IN), OPTIONAL :: ITYPE
1202           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1203           REAL(WP), INTENT(INOUT) :: A(:,:)
1204           REAL(WP), INTENT(IN) :: B(:,:)
1205        END SUBROUTINE SSYGST_F95
1206
1207      END INTERFACE
1208
1209
1210      INTERFACE LA_SYGV
1211
1212       SUBROUTINE SSYGV_F95( A, B, W, ITYPE, JOBZ, UPLO, INFO )
1213           USE LA_PRECISION, ONLY: WP => SP
1214           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
1215           INTEGER, INTENT(IN), OPTIONAL :: ITYPE
1216           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1217           REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
1218           REAL(WP), INTENT(OUT) :: W(:)
1219        END SUBROUTINE SSYGV_F95
1220
1221      END INTERFACE
1222
1223
1224         INTERFACE LA_SYGVX
1225
1226        SUBROUTINE SSYGVX_F95( A, B, W, ITYPE, JOBZ, UPLO, VL, VU, IL,  &
1227     &                         IU, M, IFAIL, ABSTOL, INFO )
1228         USE LA_PRECISION, ONLY: WP => SP
1229         REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
1230         REAL(WP), INTENT(OUT) :: W(:)
1231         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
1232         INTEGER, INTENT(OUT), OPTIONAL :: INFO
1233         REAL(WP), INTENT(IN), OPTIONAL :: ABSTOL, VL, VU
1234         INTEGER, INTENT(IN), OPTIONAL :: IL, IU, ITYPE
1235         INTEGER, INTENT(OUT), OPTIONAL :: M
1236         INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IFAIL(:)
1237        END SUBROUTINE SSYGVX_F95
1238
1239       END INTERFACE
1240
1241
1242         INTERFACE LA_SYGVD
1243
1244        SUBROUTINE SSYGVD_F95( A, B, W, ITYPE, JOBZ, UPLO, INFO )
1245            USE LA_PRECISION, ONLY: WP => SP
1246            REAL(WP), INTENT(INOUT) :: A(:,:), B(:,:)
1247            REAL(WP), INTENT(OUT) :: W(:)
1248            CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
1249            INTEGER, INTENT(IN), OPTIONAL :: ITYPE
1250            INTEGER, INTENT(OUT), OPTIONAL :: INFO
1251           END SUBROUTINE SSYGVD_F95
1252
1253            END INTERFACE
1254
1255
1256      INTERFACE LA_SYTRD
1257
1258       SUBROUTINE SSYTRD_F95( A, TAU, UPLO, INFO )
1259           USE LA_PRECISION, ONLY: WP => SP
1260           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1261           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1262           REAL(WP), INTENT(INOUT) :: A(:,:)
1263           REAL(WP), INTENT(OUT) :: TAU(:)
1264        END SUBROUTINE SSYTRD_F95
1265
1266      END INTERFACE
1267
1268
1269      INTERFACE LA_ORGTR
1270
1271       SUBROUTINE SORGTR_F95( A, TAU, UPLO, INFO )
1272           USE LA_PRECISION, ONLY: WP => SP
1273           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO
1274           INTEGER, INTENT(OUT), OPTIONAL :: INFO
1275           REAL(WP), INTENT(IN) :: TAU(:)
1276           REAL(WP), INTENT(INOUT) :: A(:,:)
1277        END SUBROUTINE SORGTR_F95
1278
1279      END INTERFACE
1280
1281
1282      INTERFACE LA_POTRF
1283
1284       SUBROUTINE SPOTRF_F95( A, UPLO, RCOND, NORM, INFO )
1285           USE LA_PRECISION, ONLY: WP => SP
1286           CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM, UPLO
1287           INTEGER, INTENT(OUT), OPTIONAL  :: INFO
1288           REAL(WP), INTENT(OUT), OPTIONAL :: RCOND
1289           REAL(WP), INTENT(INOUT) :: A(:,:)
1290        END SUBROUTINE SPOTRF_F95
1291
1292      END INTERFACE
1293
1294      INTERFACE LA_LAGGE
1295
1296      SUBROUTINE SLAGGE_F95( A, KL, KU, D, ISEED, INFO )
1297         USE LA_PRECISION, ONLY: WP => SP
1298         INTEGER, INTENT(IN), OPTIONAL :: KL, KU
1299         INTEGER, INTENT(OUT), OPTIONAL :: INFO
1300         INTEGER, INTENT(INOUT), OPTIONAL, TARGET :: ISEED(4)
1301         REAL(WP), INTENT(IN), OPTIONAL, TARGET :: D(:)
1302         REAL(WP), INTENT(OUT) :: A(:,:)
1303      END SUBROUTINE SLAGGE_F95
1304
1305      END INTERFACE
1306
1307      INTERFACE LA_LANGE
1308
1309      FUNCTION SLANGE_F95( A, NORM, INFO )
1310         USE LA_PRECISION, ONLY: WP => SP
1311         REAL(WP) :: SLANGE_F95
1312         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
1313         INTEGER, INTENT(OUT), OPTIONAL :: INFO
1314         REAL(WP), INTENT(IN) :: A(:,:)
1315      END FUNCTION SLANGE_F95
1316
1317      FUNCTION SLANGE1_F95( A, NORM, INFO )
1318         USE LA_PRECISION, ONLY: WP => SP
1319         REAL(WP) :: SLANGE1_F95
1320         CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: NORM
1321         INTEGER, INTENT(OUT), OPTIONAL :: INFO
1322         REAL(WP), INTENT(IN) :: A(:)
1323      END FUNCTION SLANGE1_F95
1324
1325      END INTERFACE
1326
1327      INTERFACE LA_GESDD
1328
1329       SUBROUTINE SGESDD_F95(A, S, U, VT, WW, JOB, INFO )
1330      USE LA_PRECISION, ONLY: WP => SP
1331      CHARACTER(LEN=1), OPTIONAL, INTENT(IN) :: JOB
1332      INTEGER, INTENT(OUT), OPTIONAL :: INFO
1333      REAL(WP), INTENT(INOUT) :: A(:,:)
1334      REAL(WP), INTENT(OUT) :: S(:)
1335      REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: WW(:)
1336      REAL(WP), INTENT(OUT), OPTIONAL, TARGET :: U(:,:), VT(:,:)
1337      END SUBROUTINE SGESDD_F95
1338
1339        END INTERFACE
1340
1341      END MODULE F95_LAPACK
1342