PLASMA  2.4.5
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
plasma_zf90.F90
Go to the documentation of this file.
1 !
2 ! Copyright © 2011 The Numerical Algorithms Group Ltd. All rights reserved.
3 !
4 ! Redistribution and use in source and binary forms, with or without
5 ! modification, are permitted provided that the following conditions are
6 ! met:
7 ! - Redistributions of source code must retain the above copyright notice,
8 ! this list of conditions, and the following disclaimer.
9 ! - Redistributions in binary form must reproduce the above copyright
10 ! notice, this list of conditions and the following disclaimer listed in
11 ! this license in the documentation and/or other materials provided with
12 ! the distribution.
13 ! - Neither the name of the copyright holders nor the names of its
14 ! contributors may be used to endorse or promote products derived from
15 ! this software without specific prior written permission.
16 !
17 ! This software is provided by the copyright holders and contributors "as
18 ! is" and any express or implied warranties, including, but not limited
19 ! to, the implied warranties of merchantability and fitness for a
20 ! particular purpose are disclaimed. in no event shall the copyright owner
21 ! or contributors be liable for any direct, indirect, incidental, special,
22 ! exemplary, or consequential damages (including, but not limited to,
23 ! procurement of substitute goods or services; loss of use, data, or
24 ! profits; or business interruption) however caused and on any theory of
25 ! liability, whether in contract, strict liability, or tort (including
26 ! negligence or otherwise) arising in any way out of the use of this
27 ! software, even if advised of the possibility of such damage.
28 !
29 !
30 ! @file plasma_zf90.F90
31 !
32 ! PLASMA fortran 90 interface
33 ! PLASMA is a software package provided by Univ. of Tennessee,
34 ! Univ. of California Berkeley and Univ. of Colorado Denver
35 !
36 ! @version 2.4.2
37 ! @author Numerical Algorithm Group
38 ! @author Mathieu Faverge
39 ! @date 2011-09-15
40 ! @precisions normal z -> c d s
41 !
42 #define PRECISION_z
43 
44 module plasma_z
45 
46 ! private PLASMA_zgebrd_c
47  interface
48  function plasma_zgebrd_c(jobu,jobvt,M,N,A,LDA,D,E,U,LDU,VT,LDVT,T) &
49  & bind(c, name='PLASMA_zgebrd')
50  use iso_c_binding
51  implicit none
52  integer(kind=c_int) :: plasma_zgebrd_c
53  integer(kind=c_int), value :: jobu
54  integer(kind=c_int), value :: jobvt
55  integer(kind=c_int), value :: m
56  integer(kind=c_int), value :: n
57  type(c_ptr), value :: a
58  integer(kind=c_int), value :: lda
59  type(c_ptr), value :: d
60  type(c_ptr), value :: e
61  type(c_ptr), value :: u
62  integer(kind=c_int), value :: ldu
63  type(c_ptr), value :: vt
64  integer(kind=c_int), value :: ldvt
65  type(c_ptr), value :: t
66  end function plasma_zgebrd_c
67  end interface
68 
69 ! private PLASMA_zgelqf_c
70  interface
71  function plasma_zgelqf_c(M,N,A,LDA,T) &
72  & bind(c, name='PLASMA_zgelqf')
73  use iso_c_binding
74  implicit none
75  integer(kind=c_int) :: plasma_zgelqf_c
76  integer(kind=c_int), value :: m
77  integer(kind=c_int), value :: n
78  type(c_ptr), value :: a
79  integer(kind=c_int), value :: lda
80  type(c_ptr), value :: t
81  end function plasma_zgelqf_c
82  end interface
83 
84 ! private PLASMA_zgelqs_c
85  interface
86  function plasma_zgelqs_c(M,N,NRHS,A,LDA,T,B,LDB) &
87  & bind(c, name='PLASMA_zgelqs')
88  use iso_c_binding
89  implicit none
90  integer(kind=c_int) :: plasma_zgelqs_c
91  integer(kind=c_int), value :: m
92  integer(kind=c_int), value :: n
93  integer(kind=c_int), value :: nrhs
94  type(c_ptr), value :: a
95  integer(kind=c_int), value :: lda
96  type(c_ptr), value :: t
97  type(c_ptr), value :: b
98  integer(kind=c_int), value :: ldb
99  end function plasma_zgelqs_c
100  end interface
101 
102 ! private PLASMA_zgels_c
103  interface
104  function plasma_zgels_c(trans,M,N,NRHS,A,LDA,T,B,LDB) &
105  & bind(c, name='PLASMA_zgels')
106  use iso_c_binding
107  implicit none
108  integer(kind=c_int) :: plasma_zgels_c
109  integer(kind=c_int), value :: trans
110  integer(kind=c_int), value :: m
111  integer(kind=c_int), value :: n
112  integer(kind=c_int), value :: nrhs
113  type(c_ptr), value :: a
114  integer(kind=c_int), value :: lda
115  type(c_ptr), value :: t
116  type(c_ptr), value :: b
117  integer(kind=c_int), value :: ldb
118  end function plasma_zgels_c
119  end interface
120 
121 ! private PLASMA_zgemm_c
122  interface
123  function plasma_zgemm_c(transA,transB,M,N,K,alpha,A,LDA,B,LDB,beta,C,LDC) &
124  & bind(c, name='PLASMA_zgemm')
125  use iso_c_binding
126  implicit none
127  integer(kind=c_int) :: plasma_zgemm_c
128  integer(kind=c_int), value :: transa
129  integer(kind=c_int), value :: transb
130  integer(kind=c_int), value :: m
131  integer(kind=c_int), value :: n
132  integer(kind=c_int), value :: k
133  complex(kind=c_double_complex), value :: alpha
134  type(c_ptr), value :: a
135  integer(kind=c_int), value :: lda
136  type(c_ptr), value :: b
137  integer(kind=c_int), value :: ldb
138  complex(kind=c_double_complex), value :: beta
139  type(c_ptr), value :: c
140  integer(kind=c_int), value :: ldc
141  end function plasma_zgemm_c
142  end interface
143 
144 ! private PLASMA_zgeqrf_c
145  interface
146  function plasma_zgeqrf_c(M,N,A,LDA,T) &
147  & bind(c, name='PLASMA_zgeqrf')
148  use iso_c_binding
149  implicit none
150  integer(kind=c_int) :: plasma_zgeqrf_c
151  integer(kind=c_int), value :: m
152  integer(kind=c_int), value :: n
153  type(c_ptr), value :: a
154  integer(kind=c_int), value :: lda
155  type(c_ptr), value :: t
156  end function plasma_zgeqrf_c
157  end interface
158 
159 ! private PLASMA_zgeqrs_c
160  interface
161  function plasma_zgeqrs_c(M,N,NRHS,A,LDA,T,B,LDB) &
162  & bind(c, name='PLASMA_zgeqrs')
163  use iso_c_binding
164  implicit none
165  integer(kind=c_int) :: plasma_zgeqrs_c
166  integer(kind=c_int), value :: m
167  integer(kind=c_int), value :: n
168  integer(kind=c_int), value :: nrhs
169  type(c_ptr), value :: a
170  integer(kind=c_int), value :: lda
171  type(c_ptr), value :: t
172  type(c_ptr), value :: b
173  integer(kind=c_int), value :: ldb
174  end function plasma_zgeqrs_c
175  end interface
176 
177 ! private PLASMA_zgesv_c
178  interface
179  function plasma_zgesv_c(N,NRHS,A,LDA,IPIV,B,LDB) &
180  & bind(c, name='PLASMA_zgesv')
181  use iso_c_binding
182  implicit none
183  integer(kind=c_int) :: plasma_zgesv_c
184  integer(kind=c_int), value :: n
185  integer(kind=c_int), value :: nrhs
186  type(c_ptr), value :: a
187  integer(kind=c_int), value :: lda
188  type(c_ptr), value :: ipiv
189  type(c_ptr), value :: b
190  integer(kind=c_int), value :: ldb
191  end function plasma_zgesv_c
192  end interface
193 
194 ! private PLASMA_zgesv_incpiv_c
195  interface
196  function plasma_zgesv_incpiv_c(N,NRHS,A,LDA,L,IPIV,B,LDB) &
197  & bind(c, name='PLASMA_zgesv_incpiv')
198  use iso_c_binding
199  implicit none
200  integer(kind=c_int) :: plasma_zgesv_incpiv_c
201  integer(kind=c_int), value :: n
202  integer(kind=c_int), value :: nrhs
203  type(c_ptr), value :: a
204  integer(kind=c_int), value :: lda
205  type(c_ptr), value :: l
206  type(c_ptr), value :: ipiv
207  type(c_ptr), value :: b
208  integer(kind=c_int), value :: ldb
209  end function plasma_zgesv_incpiv_c
210  end interface
211 
212 ! private PLASMA_zgesvd_c
213  interface
214  function plasma_zgesvd_c(jobu,jobvt,M,N,A,LDA,S,U,LDU,VT,LDVT,T) &
215  & bind(c, name='PLASMA_zgesvd')
216  use iso_c_binding
217  implicit none
218  integer(kind=c_int) :: plasma_zgesvd_c
219  integer(kind=c_int), value :: jobu
220  integer(kind=c_int), value :: jobvt
221  integer(kind=c_int), value :: m
222  integer(kind=c_int), value :: n
223  type(c_ptr), value :: a
224  integer(kind=c_int), value :: lda
225  type(c_ptr), value :: s
226  type(c_ptr), value :: u
227  integer(kind=c_int), value :: ldu
228  type(c_ptr), value :: vt
229  integer(kind=c_int), value :: ldvt
230  type(c_ptr), value :: t
231  end function plasma_zgesvd_c
232  end interface
233 
234 ! private PLASMA_zgetrf_c
235  interface
236  function plasma_zgetrf_c(M,N,A,LDA,IPIV) &
237  & bind(c, name='PLASMA_zgetrf')
238  use iso_c_binding
239  implicit none
240  integer(kind=c_int) :: plasma_zgetrf_c
241  integer(kind=c_int), value :: m
242  integer(kind=c_int), value :: n
243  type(c_ptr), value :: a
244  integer(kind=c_int), value :: lda
245  type(c_ptr), value :: ipiv
246  end function plasma_zgetrf_c
247  end interface
248 
249 ! private PLASMA_zgetrf_incpiv_c
250  interface
251  function plasma_zgetrf_incpiv_c(M,N,A,LDA,L,IPIV) &
252  & bind(c, name='PLASMA_zgetrf_incpiv')
253  use iso_c_binding
254  implicit none
255  integer(kind=c_int) :: plasma_zgetrf_incpiv_c
256  integer(kind=c_int), value :: m
257  integer(kind=c_int), value :: n
258  type(c_ptr), value :: a
259  integer(kind=c_int), value :: lda
260  type(c_ptr), value :: l
261  type(c_ptr), value :: ipiv
262  end function plasma_zgetrf_incpiv_c
263  end interface
264 
265 ! private PLASMA_zgetrs_c
266  interface
267  function plasma_zgetrs_c(trans,N,NRHS,A,LDA,IPIV,B,LDB) &
268  & bind(c, name='PLASMA_zgetrs')
269  use iso_c_binding
270  implicit none
271  integer(kind=c_int) :: plasma_zgetrs_c
272  integer(kind=c_int), value :: trans
273  integer(kind=c_int), value :: n
274  integer(kind=c_int), value :: nrhs
275  type(c_ptr), value :: a
276  integer(kind=c_int), value :: lda
277  type(c_ptr), value :: ipiv
278  type(c_ptr), value :: b
279  integer(kind=c_int), value :: ldb
280  end function plasma_zgetrs_c
281  end interface
282 
283 ! private PLASMA_zgetrs_incpiv_c
284  interface
285  function plasma_zgetrs_incpiv_c(trans,N,NRHS,A,LDA,L,IPIV,B,LDB) &
286  & bind(c, name='PLASMA_zgetrs_incpiv')
287  use iso_c_binding
288  implicit none
289  integer(kind=c_int) :: plasma_zgetrs_incpiv_c
290  integer(kind=c_int), value :: trans
291  integer(kind=c_int), value :: n
292  integer(kind=c_int), value :: nrhs
293  type(c_ptr), value :: a
294  integer(kind=c_int), value :: lda
295  type(c_ptr), value :: l
296  type(c_ptr), value :: ipiv
297  type(c_ptr), value :: b
298  integer(kind=c_int), value :: ldb
299  end function plasma_zgetrs_incpiv_c
300  end interface
301 
302 #if defined(PRECISION_z) || defined(PRECISION_c)
303 ! private PLASMA_zhemm_c
304  interface
305  function plasma_zhemm_c(side,uplo,M,N,alpha,A,LDA,B,LDB,beta,C,LDC) &
306  & bind(c, name='PLASMA_zhemm')
307  use iso_c_binding
308  implicit none
309  integer(kind=c_int) :: plasma_zhemm_c
310  integer(kind=c_int), value :: side
311  integer(kind=c_int), value :: uplo
312  integer(kind=c_int), value :: m
313  integer(kind=c_int), value :: n
314  complex(kind=c_double_complex), value :: alpha
315  type(c_ptr), value :: a
316  integer(kind=c_int), value :: lda
317  type(c_ptr), value :: b
318  integer(kind=c_int), value :: ldb
319  complex(kind=c_double_complex), value :: beta
320  type(c_ptr), value :: c
321  integer(kind=c_int), value :: ldc
322  end function plasma_zhemm_c
323  end interface
324 
325 ! private PLASMA_zherk_c
326  interface
327  function plasma_zherk_c(uplo,trans,N,K,alpha,A,LDA,beta,C,LDC) &
328  & bind(c, name='PLASMA_zherk')
329  use iso_c_binding
330  implicit none
331  integer(kind=c_int) :: plasma_zherk_c
332  integer(kind=c_int), value :: uplo
333  integer(kind=c_int), value :: trans
334  integer(kind=c_int), value :: n
335  integer(kind=c_int), value :: k
336  real(kind=c_double), value :: alpha
337  type(c_ptr), value :: a
338  integer(kind=c_int), value :: lda
339  real(kind=c_double), value :: beta
340  type(c_ptr), value :: c
341  integer(kind=c_int), value :: ldc
342  end function plasma_zherk_c
343  end interface
344 
345 ! private PLASMA_zher2k_c
346  interface
347  function plasma_zher2k_c(uplo,trans,N,K,alpha,A,LDA,B,LDB,beta,C,LDC) &
348  & bind(c, name='PLASMA_zher2k')
349  use iso_c_binding
350  implicit none
351  integer(kind=c_int) :: plasma_zher2k_c
352  integer(kind=c_int), value :: uplo
353  integer(kind=c_int), value :: trans
354  integer(kind=c_int), value :: n
355  integer(kind=c_int), value :: k
356  complex(kind=c_double_complex), value :: alpha
357  type(c_ptr), value :: a
358  integer(kind=c_int), value :: lda
359  type(c_ptr), value :: b
360  integer(kind=c_int), value :: ldb
361  real(kind=c_double), value :: beta
362  type(c_ptr), value :: c
363  integer(kind=c_int), value :: ldc
364  end function plasma_zher2k_c
365  end interface
366 #endif
367 
368 ! private PLASMA_zheev_c
369  interface
370  function plasma_zheev_c(jobz,uplo,N,A,LDA,W,T,Q,LDQ) &
371  & bind(c, name='PLASMA_zheev')
372  use iso_c_binding
373  implicit none
374  integer(kind=c_int) :: plasma_zheev_c
375  integer(kind=c_int), value :: jobz
376  integer(kind=c_int), value :: uplo
377  integer(kind=c_int), value :: n
378  type(c_ptr), value :: a
379  integer(kind=c_int), value :: lda
380  type(c_ptr), value :: w
381  type(c_ptr), value :: t
382  type(c_ptr), value :: q
383  integer(kind=c_int), value :: ldq
384  end function plasma_zheev_c
385  end interface
386 
387 ! private PLASMA_zhegv_c
388  interface
389  function plasma_zhegv_c(itype,jobz,uplo,N,A,LDA,B,LDB,W,T,Q,LDQ) &
390  & bind(c, name='PLASMA_zhegv')
391  use iso_c_binding
392  implicit none
393  integer(kind=c_int) :: plasma_zhegv_c
394  integer(kind=c_int), value :: itype
395  integer(kind=c_int), value :: jobz
396  integer(kind=c_int), value :: uplo
397  integer(kind=c_int), value :: n
398  type(c_ptr), value :: a
399  integer(kind=c_int), value :: lda
400  type(c_ptr), value :: b
401  integer(kind=c_int), value :: ldb
402  type(c_ptr), value :: w
403  type(c_ptr), value :: t
404  type(c_ptr), value :: q
405  integer(kind=c_int), value :: ldq
406  end function plasma_zhegv_c
407  end interface
408 
409 ! private PLASMA_zhegst_c
410  interface
411  function plasma_zhegst_c(itype,uplo,N,A,LDA,B,LDB) &
412  & bind(c, name='PLASMA_zhegst')
413  use iso_c_binding
414  implicit none
415  integer(kind=c_int) :: plasma_zhegst_c
416  integer(kind=c_int), value :: itype
417  integer(kind=c_int), value :: uplo
418  integer(kind=c_int), value :: n
419  type(c_ptr), value :: a
420  integer(kind=c_int), value :: lda
421  type(c_ptr), value :: b
422  integer(kind=c_int), value :: ldb
423  end function plasma_zhegst_c
424  end interface
425 
426 ! private PLASMA_zhetrd_c
427  interface
428  function plasma_zhetrd_c(jobz,uplo,N,A,LDA,D,E,T,Q,LDQ) &
429  & bind(c, name='PLASMA_zhetrd')
430  use iso_c_binding
431  implicit none
432  integer(kind=c_int) :: plasma_zhetrd_c
433  integer(kind=c_int), value :: jobz
434  integer(kind=c_int), value :: uplo
435  integer(kind=c_int), value :: n
436  type(c_ptr), value :: a
437  integer(kind=c_int), value :: lda
438  type(c_ptr), value :: d
439  type(c_ptr), value :: e
440  type(c_ptr), value :: t
441  type(c_ptr), value :: q
442  integer(kind=c_int), value :: ldq
443  end function plasma_zhetrd_c
444  end interface
445 
446 ! private PLASMA_zlange_c
447  interface
448  function plasma_zlange_c(norm,M,N,A,LDA,work) &
449  & bind(c, name='PLASMA_zlange')
450  use iso_c_binding
451  implicit none
452  real(kind=c_double) :: plasma_zlange_c
453  integer(kind=c_int), value :: norm
454  integer(kind=c_int), value :: m
455  integer(kind=c_int), value :: n
456  type(c_ptr), value :: a
457  integer(kind=c_int), value :: lda
458  type(c_ptr), value :: work
459  end function plasma_zlange_c
460  end interface
461 
462 #if defined(PRECISION_z) || defined(PRECISION_c)
463 ! private PLASMA_zlanhe_c
464  interface
465  function plasma_zlanhe_c(norm,uplo,N,A,LDA,work) &
466  & bind(c, name='PLASMA_zlanhe')
467  use iso_c_binding
468  implicit none
469  real(kind=c_double) :: plasma_zlanhe_c
470  integer(kind=c_int), value :: norm
471  integer(kind=c_int), value :: uplo
472  integer(kind=c_int), value :: n
473  type(c_ptr), value :: a
474  integer(kind=c_int), value :: lda
475  type(c_ptr), value :: work
476  end function plasma_zlanhe_c
477  end interface
478 #endif
479 
480 ! private PLASMA_zlansy_c
481  interface
482  function plasma_zlansy_c(norm,uplo,N,A,LDA,work) &
483  & bind(c, name='PLASMA_zlansy')
484  use iso_c_binding
485  implicit none
486  real(kind=c_double) :: plasma_zlansy_c
487  integer(kind=c_int), value :: norm
488  integer(kind=c_int), value :: uplo
489  integer(kind=c_int), value :: n
490  type(c_ptr), value :: a
491  integer(kind=c_int), value :: lda
492  type(c_ptr), value :: work
493  end function plasma_zlansy_c
494  end interface
495 
496 ! private PLASMA_zlaswp_c
497  interface
498  function plasma_zlaswp_c(N,A,LDA,K1,K2,IPIV,INCX) &
499  & bind(c, name='PLASMA_zlaswp')
500  use iso_c_binding
501  implicit none
502  integer(kind=c_int) :: plasma_zlaswp_c
503  integer(kind=c_int), value :: n
504  type(c_ptr), value :: a
505  integer(kind=c_int), value :: lda
506  integer(kind=c_int), value :: k1
507  integer(kind=c_int), value :: k2
508  type(c_ptr), value :: ipiv
509  integer(kind=c_int), value :: incx
510  end function plasma_zlaswp_c
511  end interface
512 
513 ! private PLASMA_zlauum_c
514  interface
515  function plasma_zlauum_c(uplo,N,A,LDA) &
516  & bind(c, name='PLASMA_zlauum')
517  use iso_c_binding
518  implicit none
519  integer(kind=c_int) :: plasma_zlauum_c
520  integer(kind=c_int), value :: uplo
521  integer(kind=c_int), value :: n
522  type(c_ptr), value :: a
523  integer(kind=c_int), value :: lda
524  end function plasma_zlauum_c
525  end interface
526 
527 ! PLASMA_zplghe uses unsigned ints, not generating Fortran interface
528 
529 ! PLASMA_zplgsy uses unsigned ints, not generating Fortran interface
530 
531 ! PLASMA_zplrnt uses unsigned ints, not generating Fortran interface
532 
533 ! private PLASMA_zposv_c
534  interface
535  function plasma_zposv_c(uplo,N,NRHS,A,LDA,B,LDB) &
536  & bind(c, name='PLASMA_zposv')
537  use iso_c_binding
538  implicit none
539  integer(kind=c_int) :: plasma_zposv_c
540  integer(kind=c_int), value :: uplo
541  integer(kind=c_int), value :: n
542  integer(kind=c_int), value :: nrhs
543  type(c_ptr), value :: a
544  integer(kind=c_int), value :: lda
545  type(c_ptr), value :: b
546  integer(kind=c_int), value :: ldb
547  end function plasma_zposv_c
548  end interface
549 
550 ! private PLASMA_zpotrf_c
551  interface
552  function plasma_zpotrf_c(uplo,N,A,LDA) &
553  & bind(c, name='PLASMA_zpotrf')
554  use iso_c_binding
555  implicit none
556  integer(kind=c_int) :: plasma_zpotrf_c
557  integer(kind=c_int), value :: uplo
558  integer(kind=c_int), value :: n
559  type(c_ptr), value :: a
560  integer(kind=c_int), value :: lda
561  end function plasma_zpotrf_c
562  end interface
563 
564 ! private PLASMA_zpotri_c
565  interface
566  function plasma_zpotri_c(uplo,N,A,LDA) &
567  & bind(c, name='PLASMA_zpotri')
568  use iso_c_binding
569  implicit none
570  integer(kind=c_int) :: plasma_zpotri_c
571  integer(kind=c_int), value :: uplo
572  integer(kind=c_int), value :: n
573  type(c_ptr), value :: a
574  integer(kind=c_int), value :: lda
575  end function plasma_zpotri_c
576  end interface
577 
578 ! private PLASMA_zpotrs_c
579  interface
580  function plasma_zpotrs_c(uplo,N,NRHS,A,LDA,B,LDB) &
581  & bind(c, name='PLASMA_zpotrs')
582  use iso_c_binding
583  implicit none
584  integer(kind=c_int) :: plasma_zpotrs_c
585  integer(kind=c_int), value :: uplo
586  integer(kind=c_int), value :: n
587  integer(kind=c_int), value :: nrhs
588  type(c_ptr), value :: a
589  integer(kind=c_int), value :: lda
590  type(c_ptr), value :: b
591  integer(kind=c_int), value :: ldb
592  end function plasma_zpotrs_c
593  end interface
594 
595 ! private PLASMA_zsymm_c
596  interface
597  function plasma_zsymm_c(side,uplo,M,N,alpha,A,LDA,B,LDB,beta,C,LDC) &
598  & bind(c, name='PLASMA_zsymm')
599  use iso_c_binding
600  implicit none
601  integer(kind=c_int) :: plasma_zsymm_c
602  integer(kind=c_int), value :: side
603  integer(kind=c_int), value :: uplo
604  integer(kind=c_int), value :: m
605  integer(kind=c_int), value :: n
606  complex(kind=c_double_complex), value :: alpha
607  type(c_ptr), value :: a
608  integer(kind=c_int), value :: lda
609  type(c_ptr), value :: b
610  integer(kind=c_int), value :: ldb
611  complex(kind=c_double_complex), value :: beta
612  type(c_ptr), value :: c
613  integer(kind=c_int), value :: ldc
614  end function plasma_zsymm_c
615  end interface
616 
617 ! private PLASMA_zsyrk_c
618  interface
619  function plasma_zsyrk_c(uplo,trans,N,K,alpha,A,LDA,beta,C,LDC) &
620  & bind(c, name='PLASMA_zsyrk')
621  use iso_c_binding
622  implicit none
623  integer(kind=c_int) :: plasma_zsyrk_c
624  integer(kind=c_int), value :: uplo
625  integer(kind=c_int), value :: trans
626  integer(kind=c_int), value :: n
627  integer(kind=c_int), value :: k
628  complex(kind=c_double_complex), value :: alpha
629  type(c_ptr), value :: a
630  integer(kind=c_int), value :: lda
631  complex(kind=c_double_complex), value :: beta
632  type(c_ptr), value :: c
633  integer(kind=c_int), value :: ldc
634  end function plasma_zsyrk_c
635  end interface
636 
637 ! private PLASMA_zsyr2k_c
638  interface
639  function plasma_zsyr2k_c(uplo,trans,N,K,alpha,A,LDA,B,LDB,beta,C,LDC) &
640  & bind(c, name='PLASMA_zsyr2k')
641  use iso_c_binding
642  implicit none
643  integer(kind=c_int) :: plasma_zsyr2k_c
644  integer(kind=c_int), value :: uplo
645  integer(kind=c_int), value :: trans
646  integer(kind=c_int), value :: n
647  integer(kind=c_int), value :: k
648  complex(kind=c_double_complex), value :: alpha
649  type(c_ptr), value :: a
650  integer(kind=c_int), value :: lda
651  type(c_ptr), value :: b
652  integer(kind=c_int), value :: ldb
653  complex(kind=c_double_complex), value :: beta
654  type(c_ptr), value :: c
655  integer(kind=c_int), value :: ldc
656  end function plasma_zsyr2k_c
657  end interface
658 
659 ! private PLASMA_ztrmm_c
660  interface
661  function plasma_ztrmm_c(side,uplo,transA,diag,N,NRHS,alpha,A,LDA,B,LDB) &
662  & bind(c, name='PLASMA_ztrmm')
663  use iso_c_binding
664  implicit none
665  integer(kind=c_int) :: plasma_ztrmm_c
666  integer(kind=c_int), value :: side
667  integer(kind=c_int), value :: uplo
668  integer(kind=c_int), value :: transa
669  integer(kind=c_int), value :: diag
670  integer(kind=c_int), value :: n
671  integer(kind=c_int), value :: nrhs
672  complex(kind=c_double_complex), value :: alpha
673  type(c_ptr), value :: a
674  integer(kind=c_int), value :: lda
675  type(c_ptr), value :: b
676  integer(kind=c_int), value :: ldb
677  end function plasma_ztrmm_c
678  end interface
679 
680 ! private PLASMA_ztrsm_c
681  interface
682  function plasma_ztrsm_c(side,uplo,transA,diag,N,NRHS,alpha,A,LDA,B,LDB) &
683  & bind(c, name='PLASMA_ztrsm')
684  use iso_c_binding
685  implicit none
686  integer(kind=c_int) :: plasma_ztrsm_c
687  integer(kind=c_int), value :: side
688  integer(kind=c_int), value :: uplo
689  integer(kind=c_int), value :: transa
690  integer(kind=c_int), value :: diag
691  integer(kind=c_int), value :: n
692  integer(kind=c_int), value :: nrhs
693  complex(kind=c_double_complex), value :: alpha
694  type(c_ptr), value :: a
695  integer(kind=c_int), value :: lda
696  type(c_ptr), value :: b
697  integer(kind=c_int), value :: ldb
698  end function plasma_ztrsm_c
699  end interface
700 
701 ! private PLASMA_ztrsmpl_c
702  interface
703  function plasma_ztrsmpl_c(N,NRHS,A,LDA,L,IPIV,B,LDB) &
704  & bind(c, name='PLASMA_ztrsmpl')
705  use iso_c_binding
706  implicit none
707  integer(kind=c_int) :: plasma_ztrsmpl_c
708  integer(kind=c_int), value :: n
709  integer(kind=c_int), value :: nrhs
710  type(c_ptr), value :: a
711  integer(kind=c_int), value :: lda
712  type(c_ptr), value :: l
713  type(c_ptr), value :: ipiv
714  type(c_ptr), value :: b
715  integer(kind=c_int), value :: ldb
716  end function plasma_ztrsmpl_c
717  end interface
718 
719 ! private PLASMA_ztrtri_c
720  interface
721  function plasma_ztrtri_c(uplo,diag,N,A,LDA) &
722  & bind(c, name='PLASMA_ztrtri')
723  use iso_c_binding
724  implicit none
725  integer(kind=c_int) :: plasma_ztrtri_c
726  integer(kind=c_int), value :: uplo
727  integer(kind=c_int), value :: diag
728  integer(kind=c_int), value :: n
729  type(c_ptr), value :: a
730  integer(kind=c_int), value :: lda
731  end function plasma_ztrtri_c
732  end interface
733 
734 ! private PLASMA_zunglq_c
735  interface
736  function plasma_zunglq_c(M,N,K,A,LDA,T,B,LDB) &
737  & bind(c, name='PLASMA_zunglq')
738  use iso_c_binding
739  implicit none
740  integer(kind=c_int) :: plasma_zunglq_c
741  integer(kind=c_int), value :: m
742  integer(kind=c_int), value :: n
743  integer(kind=c_int), value :: k
744  type(c_ptr), value :: a
745  integer(kind=c_int), value :: lda
746  type(c_ptr), value :: t
747  type(c_ptr), value :: b
748  integer(kind=c_int), value :: ldb
749  end function plasma_zunglq_c
750  end interface
751 
752 ! private PLASMA_zungqr_c
753  interface
754  function plasma_zungqr_c(M,N,K,A,LDA,T,B,LDB) &
755  & bind(c, name='PLASMA_zungqr')
756  use iso_c_binding
757  implicit none
758  integer(kind=c_int) :: plasma_zungqr_c
759  integer(kind=c_int), value :: m
760  integer(kind=c_int), value :: n
761  integer(kind=c_int), value :: k
762  type(c_ptr), value :: a
763  integer(kind=c_int), value :: lda
764  type(c_ptr), value :: t
765  type(c_ptr), value :: b
766  integer(kind=c_int), value :: ldb
767  end function plasma_zungqr_c
768  end interface
769 
770 ! private PLASMA_zunmlq_c
771  interface
772  function plasma_zunmlq_c(side,trans,M,N,K,A,LDA,T,B,LDB) &
773  & bind(c, name='PLASMA_zunmlq')
774  use iso_c_binding
775  implicit none
776  integer(kind=c_int) :: plasma_zunmlq_c
777  integer(kind=c_int), value :: side
778  integer(kind=c_int), value :: trans
779  integer(kind=c_int), value :: m
780  integer(kind=c_int), value :: n
781  integer(kind=c_int), value :: k
782  type(c_ptr), value :: a
783  integer(kind=c_int), value :: lda
784  type(c_ptr), value :: t
785  type(c_ptr), value :: b
786  integer(kind=c_int), value :: ldb
787  end function plasma_zunmlq_c
788  end interface
789 
790 ! private PLASMA_zunmqr_c
791  interface
792  function plasma_zunmqr_c(side,trans,M,N,K,A,LDA,T,B,LDB) &
793  & bind(c, name='PLASMA_zunmqr')
794  use iso_c_binding
795  implicit none
796  integer(kind=c_int) :: plasma_zunmqr_c
797  integer(kind=c_int), value :: side
798  integer(kind=c_int), value :: trans
799  integer(kind=c_int), value :: m
800  integer(kind=c_int), value :: n
801  integer(kind=c_int), value :: k
802  type(c_ptr), value :: a
803  integer(kind=c_int), value :: lda
804  type(c_ptr), value :: t
805  type(c_ptr), value :: b
806  integer(kind=c_int), value :: ldb
807  end function plasma_zunmqr_c
808  end interface
809 
810 ! private PLASMA_zgecfi_c
811  interface
812  function plasma_zgecfi_c(m,n,A,fin,imb,inb,fout,omb,onb) &
813  & bind(c, name='PLASMA_zgecfi')
814  use iso_c_binding
815  implicit none
816  integer(kind=c_int) :: plasma_zgecfi_c
817  integer(kind=c_int), value :: m
818  integer(kind=c_int), value :: n
819  type(c_ptr), value :: a
820  integer(kind=c_int), value :: fin
821  integer(kind=c_int), value :: imb
822  integer(kind=c_int), value :: inb
823  integer(kind=c_int), value :: fout
824  integer(kind=c_int), value :: omb
825  integer(kind=c_int), value :: onb
826  end function plasma_zgecfi_c
827  end interface
828 
829 ! private PLASMA_zgetmi_c
830  interface
831  function plasma_zgetmi_c(m,n,A,fin,mb,nb) &
832  & bind(c, name='PLASMA_zgetmi')
833  use iso_c_binding
834  implicit none
835  integer(kind=c_int) :: plasma_zgetmi_c
836  integer(kind=c_int), value :: m
837  integer(kind=c_int), value :: n
838  type(c_ptr), value :: a
839  integer(kind=c_int), value :: fin
840  integer(kind=c_int), value :: mb
841  integer(kind=c_int), value :: nb
842  end function plasma_zgetmi_c
843  end interface
844 
845 ! private PLASMA_zgebrd_Tile_c
846  interface
847  function plasma_zgebrd_tile_c(jobu,jobvt,A,D,E,U,VT,T) &
848  & bind(c, name='PLASMA_zgebrd_Tile')
849  use iso_c_binding
850  implicit none
851  integer(kind=c_int) :: plasma_zgebrd_tile_c
852  integer(kind=c_int), value :: jobu
853  integer(kind=c_int), value :: jobvt
854  type(c_ptr), value :: a
855  type(c_ptr), value :: d
856  type(c_ptr), value :: e
857  type(c_ptr), value :: u
858  type(c_ptr), value :: vt
859  type(c_ptr), value :: t
860  end function plasma_zgebrd_tile_c
861  end interface
862 
863 ! private PLASMA_zgelqf_Tile_c
864  interface
865  function plasma_zgelqf_tile_c(A,T) &
866  & bind(c, name='PLASMA_zgelqf_Tile')
867  use iso_c_binding
868  implicit none
869  integer(kind=c_int) :: plasma_zgelqf_tile_c
870  type(c_ptr), value :: a
871  type(c_ptr), value :: t
872  end function plasma_zgelqf_tile_c
873  end interface
874 
875 ! private PLASMA_zgelqs_Tile_c
876  interface
877  function plasma_zgelqs_tile_c(A,B,T) &
878  & bind(c, name='PLASMA_zgelqs_Tile')
879  use iso_c_binding
880  implicit none
881  integer(kind=c_int) :: plasma_zgelqs_tile_c
882  type(c_ptr), value :: a
883  type(c_ptr), value :: b
884  type(c_ptr), value :: t
885  end function plasma_zgelqs_tile_c
886  end interface
887 
888 ! private PLASMA_zgels_Tile_c
889  interface
890  function plasma_zgels_tile_c(trans,A,T,B) &
891  & bind(c, name='PLASMA_zgels_Tile')
892  use iso_c_binding
893  implicit none
894  integer(kind=c_int) :: plasma_zgels_tile_c
895  integer(kind=c_int), value :: trans
896  type(c_ptr), value :: a
897  type(c_ptr), value :: b
898  type(c_ptr), value :: t
899  end function plasma_zgels_tile_c
900  end interface
901 
902 ! private PLASMA_zgemm_Tile_c
903  interface
904  function plasma_zgemm_tile_c(transA,transB,alpha,A,B,beta,C) &
905  & bind(c, name='PLASMA_zgemm_Tile')
906  use iso_c_binding
907  implicit none
908  integer(kind=c_int) :: plasma_zgemm_tile_c
909  integer(kind=c_int), value :: transa
910  integer(kind=c_int), value :: transb
911  complex(kind=c_double_complex), value :: alpha
912  type(c_ptr), value :: a
913  type(c_ptr), value :: b
914  complex(kind=c_double_complex), value :: beta
915  type(c_ptr), value :: c
916  end function plasma_zgemm_tile_c
917  end interface
918 
919 ! private PLASMA_zgeqrf_Tile_c
920  interface
921  function plasma_zgeqrf_tile_c(A,T) &
922  & bind(c, name='PLASMA_zgeqrf_Tile')
923  use iso_c_binding
924  implicit none
925  integer(kind=c_int) :: plasma_zgeqrf_tile_c
926  type(c_ptr), value :: a
927  type(c_ptr), value :: t
928  end function plasma_zgeqrf_tile_c
929  end interface
930 
931 ! private PLASMA_zgeqrs_Tile_c
932  interface
933  function plasma_zgeqrs_tile_c(A,T,B) &
934  & bind(c, name='PLASMA_zgeqrs_Tile')
935  use iso_c_binding
936  implicit none
937  integer(kind=c_int) :: plasma_zgeqrs_tile_c
938  type(c_ptr), value :: a
939  type(c_ptr), value :: b
940  type(c_ptr), value :: t
941  end function plasma_zgeqrs_tile_c
942  end interface
943 
944 ! private PLASMA_zgesv_Tile_c
945  interface
946  function plasma_zgesv_tile_c(A,IPIV,B) &
947  & bind(c, name='PLASMA_zgesv_Tile')
948  use iso_c_binding
949  implicit none
950  integer(kind=c_int) :: plasma_zgesv_tile_c
951  type(c_ptr), value :: a
952  type(c_ptr), value :: ipiv
953  type(c_ptr), value :: b
954  end function plasma_zgesv_tile_c
955  end interface
956 
957 ! private PLASMA_zgesv_incpiv_Tile_c
958  interface
959  function plasma_zgesv_incpiv_tile_c(A,L,IPIV,B) &
960  & bind(c, name='PLASMA_zgesv_incpiv_Tile')
961  use iso_c_binding
962  implicit none
963  integer(kind=c_int) :: plasma_zgesv_incpiv_tile_c
964  type(c_ptr), value :: a
965  type(c_ptr), value :: l
966  type(c_ptr), value :: ipiv
967  type(c_ptr), value :: b
968  end function plasma_zgesv_incpiv_tile_c
969  end interface
970 
971 ! private PLASMA_zgesvd_Tile_c
972  interface
973  function plasma_zgesvd_tile_c(jobu,jobvt,A,S,U,VT,T) &
974  & bind(c, name='PLASMA_zgesvd_Tile')
975  use iso_c_binding
976  implicit none
977  integer(kind=c_int) :: plasma_zgesvd_tile_c
978  integer(kind=c_int), value :: jobu
979  integer(kind=c_int), value :: jobvt
980  type(c_ptr), value :: a
981  type(c_ptr), value :: s
982  type(c_ptr), value :: u
983  type(c_ptr), value :: vt
984  type(c_ptr), value :: t
985  end function plasma_zgesvd_tile_c
986  end interface
987 
988 ! private PLASMA_zgetrf_Tile_c
989  interface
990  function plasma_zgetrf_tile_c(A,IPIV) &
991  & bind(c, name='PLASMA_zgetrf_Tile')
992  use iso_c_binding
993  implicit none
994  integer(kind=c_int) :: plasma_zgetrf_tile_c
995  type(c_ptr), value :: a
996  type(c_ptr), value :: ipiv
997  end function plasma_zgetrf_tile_c
998  end interface
999 
1000 ! private PLASMA_zgetrf_incpiv_Tile_c
1001  interface
1002  function plasma_zgetrf_incpiv_tile_c(A,L,IPIV) &
1003  & bind(c, name='PLASMA_zgetrf_incpiv_Tile')
1004  use iso_c_binding
1005  implicit none
1006  integer(kind=c_int) :: plasma_zgetrf_incpiv_tile_c
1007  type(c_ptr), value :: a
1008  type(c_ptr), value :: l
1009  type(c_ptr), value :: ipiv
1010  end function plasma_zgetrf_incpiv_tile_c
1011  end interface
1012 
1013 ! private PLASMA_zgetrs_Tile_c
1014  interface
1015  function plasma_zgetrs_tile_c(trans,A,IPIV,B) &
1016  & bind(c, name='PLASMA_zgetrs_Tile')
1017  use iso_c_binding
1018  implicit none
1019  integer(kind=c_int) :: plasma_zgetrs_tile_c
1020  integer(kind=c_int), value :: trans
1021  type(c_ptr), value :: a
1022  type(c_ptr), value :: ipiv
1023  type(c_ptr), value :: b
1024  end function plasma_zgetrs_tile_c
1025  end interface
1026 
1027 ! private PLASMA_zgetrs_incpiv_Tile_c
1028  interface
1029  function plasma_zgetrs_incpiv_tile_c(A,L,IPIV,B) &
1030  & bind(c, name='PLASMA_zgetrs_incpiv_Tile')
1031  use iso_c_binding
1032  implicit none
1033  integer(kind=c_int) :: plasma_zgetrs_incpiv_tile_c
1034  type(c_ptr), value :: a
1035  type(c_ptr), value :: l
1036  type(c_ptr), value :: ipiv
1037  type(c_ptr), value :: b
1038  end function plasma_zgetrs_incpiv_tile_c
1039  end interface
1040 
1041 #if defined(PRECISION_z) || defined(PRECISION_c)
1042 ! private PLASMA_zhemm_Tile_c
1043  interface
1044  function plasma_zhemm_tile_c(side,uplo,alpha,A,B,beta,C) &
1045  & bind(c, name='PLASMA_zhemm_Tile')
1046  use iso_c_binding
1047  implicit none
1048  integer(kind=c_int) :: plasma_zhemm_tile_c
1049  integer(kind=c_int), value :: side
1050  integer(kind=c_int), value :: uplo
1051  complex(kind=c_double_complex), value :: alpha
1052  type(c_ptr), value :: a
1053  type(c_ptr), value :: b
1054  complex(kind=c_double_complex), value :: beta
1055  type(c_ptr), value :: c
1056  end function plasma_zhemm_tile_c
1057  end interface
1058 
1059 ! private PLASMA_zherk_Tile_c
1060  interface
1061  function plasma_zherk_tile_c(uplo,trans,alpha,A,beta,C) &
1062  & bind(c, name='PLASMA_zherk_Tile')
1063  use iso_c_binding
1064  implicit none
1065  integer(kind=c_int) :: plasma_zherk_tile_c
1066  integer(kind=c_int), value :: uplo
1067  integer(kind=c_int), value :: trans
1068  real(kind=c_double), value :: alpha
1069  type(c_ptr), value :: a
1070  real(kind=c_double), value :: beta
1071  type(c_ptr), value :: c
1072  end function plasma_zherk_tile_c
1073  end interface
1074 
1075 ! private PLASMA_zher2k_Tile_c
1076  interface
1077  function plasma_zher2k_tile_c(uplo,trans,alpha,A,B,beta,C) &
1078  & bind(c, name='PLASMA_zher2k_Tile')
1079  use iso_c_binding
1080  implicit none
1081  integer(kind=c_int) :: plasma_zher2k_tile_c
1082  integer(kind=c_int), value :: uplo
1083  integer(kind=c_int), value :: trans
1084  complex(kind=c_double_complex), value :: alpha
1085  type(c_ptr), value :: a
1086  type(c_ptr), value :: b
1087  real(kind=c_double), value :: beta
1088  type(c_ptr), value :: c
1089  end function plasma_zher2k_tile_c
1090  end interface
1091 #endif
1092 
1093 ! private PLASMA_zheev_Tile_c
1094  interface
1095  function plasma_zheev_tile_c(jobz,uplo,A,W,T,Q) &
1096  & bind(c, name='PLASMA_zheev_Tile')
1097  use iso_c_binding
1098  implicit none
1099  integer(kind=c_int) :: plasma_zheev_tile_c
1100  integer(kind=c_int), value :: jobz
1101  integer(kind=c_int), value :: uplo
1102  type(c_ptr), value :: a
1103  type(c_ptr), value :: w
1104  type(c_ptr), value :: t
1105  type(c_ptr), value :: q
1106  end function plasma_zheev_tile_c
1107  end interface
1108 
1109 ! private PLASMA_zhegv_Tile_c
1110  interface
1111  function plasma_zhegv_tile_c(itype,jobz,uplo,A,B,W,T,Q) &
1112  & bind(c, name='PLASMA_zhegv_Tile')
1113  use iso_c_binding
1114  implicit none
1115  integer(kind=c_int) :: plasma_zhegv_tile_c
1116  integer(kind=c_int), value :: itype
1117  integer(kind=c_int), value :: jobz
1118  integer(kind=c_int), value :: uplo
1119  type(c_ptr), value :: a
1120  type(c_ptr), value :: b
1121  type(c_ptr), value :: w
1122  type(c_ptr), value :: t
1123  type(c_ptr), value :: q
1124  end function plasma_zhegv_tile_c
1125  end interface
1126 
1127 ! private PLASMA_zhegst_Tile_c
1128  interface
1129  function plasma_zhegst_tile_c(itype,uplo,A,B) &
1130  & bind(c, name='PLASMA_zhegst_Tile')
1131  use iso_c_binding
1132  implicit none
1133  integer(kind=c_int) :: plasma_zhegst_tile_c
1134  integer(kind=c_int), value :: itype
1135  integer(kind=c_int), value :: uplo
1136  type(c_ptr), value :: a
1137  type(c_ptr), value :: b
1138  end function plasma_zhegst_tile_c
1139  end interface
1140 
1141 ! private PLASMA_zhetrd_Tile_c
1142  interface
1143  function plasma_zhetrd_tile_c(jobz,uplo,A,D,E,T,Q) &
1144  & bind(c, name='PLASMA_zhetrd_Tile')
1145  use iso_c_binding
1146  implicit none
1147  integer(kind=c_int) :: plasma_zhetrd_tile_c
1148  integer(kind=c_int), value :: jobz
1149  integer(kind=c_int), value :: uplo
1150  type(c_ptr), value :: a
1151  type(c_ptr), value :: d
1152  type(c_ptr), value :: e
1153  type(c_ptr), value :: t
1154  type(c_ptr), value :: q
1155  end function plasma_zhetrd_tile_c
1156  end interface
1157 
1158 ! private PLASMA_zlange_Tile_c
1159  interface
1160  function plasma_zlange_tile_c(norm,A,work) &
1161  & bind(c, name='PLASMA_zlange_Tile')
1162  use iso_c_binding
1163  implicit none
1164  real(kind=c_double) :: plasma_zlange_tile_c
1165  integer(kind=c_int), value :: norm
1166  type(c_ptr), value :: a
1167  type(c_ptr), value :: work
1168  end function plasma_zlange_tile_c
1169  end interface
1170 
1171 #if defined(PRECISION_z) || defined(PRECISION_c)
1172 ! private PLASMA_zlanhe_Tile_c
1173  interface
1174  function plasma_zlanhe_tile_c(norm,uplo,A,work) &
1175  & bind(c, name='PLASMA_zlanhe_Tile')
1176  use iso_c_binding
1177  implicit none
1178  real(kind=c_double) :: plasma_zlanhe_tile_c
1179  integer(kind=c_int), value :: norm
1180  integer(kind=c_int), value :: uplo
1181  type(c_ptr), value :: a
1182  type(c_ptr), value :: work
1183  end function plasma_zlanhe_tile_c
1184  end interface
1185 #endif
1186 
1187 ! private PLASMA_zlansy_Tile_c
1188  interface
1189  function plasma_zlansy_tile_c(norm,uplo,A,work) &
1190  & bind(c, name='PLASMA_zlansy_Tile')
1191  use iso_c_binding
1192  implicit none
1193  real(kind=c_double) :: plasma_zlansy_tile_c
1194  integer(kind=c_int), value :: norm
1195  integer(kind=c_int), value :: uplo
1196  type(c_ptr), value :: a
1197  type(c_ptr), value :: work
1198  end function plasma_zlansy_tile_c
1199  end interface
1200 
1201 ! private PLASMA_zlaswp_Tile_c
1202  interface
1203  function plasma_zlaswp_tile_c(A,K1,K2,IPIV,INCX) &
1204  & bind(c, name='PLASMA_zlaswp_Tile')
1205  use iso_c_binding
1206  implicit none
1207  integer(kind=c_int) :: plasma_zlaswp_tile_c
1208  type(c_ptr), value :: a
1209  integer(kind=c_int), value :: k1
1210  integer(kind=c_int), value :: k2
1211  type(c_ptr), value :: ipiv
1212  integer(kind=c_int), value :: incx
1213  end function plasma_zlaswp_tile_c
1214  end interface
1215 
1216 ! private PLASMA_zlauum_Tile_c
1217  interface
1218  function plasma_zlauum_tile_c(uplo,A) &
1219  & bind(c, name='PLASMA_zlauum_Tile')
1220  use iso_c_binding
1221  implicit none
1222  integer(kind=c_int) :: plasma_zlauum_tile_c
1223  integer(kind=c_int), value :: uplo
1224  type(c_ptr), value :: a
1225  end function plasma_zlauum_tile_c
1226  end interface
1227 
1228 ! PLASMA_zplghe_Tile uses unsigned ints, not generating Fortran interface
1229 
1230 ! PLASMA_zplgsy_Tile uses unsigned ints, not generating Fortran interface
1231 
1232 ! PLASMA_zplrnt_Tile uses unsigned ints, not generating Fortran interface
1233 
1234 ! private PLASMA_zposv_Tile_c
1235  interface
1236  function plasma_zposv_tile_c(uplo,A,B) &
1237  & bind(c, name='PLASMA_zposv_Tile')
1238  use iso_c_binding
1239  implicit none
1240  integer(kind=c_int) :: plasma_zposv_tile_c
1241  integer(kind=c_int), value :: uplo
1242  type(c_ptr), value :: a
1243  type(c_ptr), value :: b
1244  end function plasma_zposv_tile_c
1245  end interface
1246 
1247 ! private PLASMA_zpotrf_Tile_c
1248  interface
1249  function plasma_zpotrf_tile_c(uplo,A) &
1250  & bind(c, name='PLASMA_zpotrf_Tile')
1251  use iso_c_binding
1252  implicit none
1253  integer(kind=c_int) :: plasma_zpotrf_tile_c
1254  integer(kind=c_int), value :: uplo
1255  type(c_ptr), value :: a
1256  end function plasma_zpotrf_tile_c
1257  end interface
1258 
1259 ! private PLASMA_zpotri_Tile_c
1260  interface
1261  function plasma_zpotri_tile_c(uplo,A) &
1262  & bind(c, name='PLASMA_zpotri_Tile')
1263  use iso_c_binding
1264  implicit none
1265  integer(kind=c_int) :: plasma_zpotri_tile_c
1266  integer(kind=c_int), value :: uplo
1267  type(c_ptr), value :: a
1268  end function plasma_zpotri_tile_c
1269  end interface
1270 
1271 ! private PLASMA_zpotrs_Tile_c
1272  interface
1273  function plasma_zpotrs_tile_c(uplo,A,B) &
1274  & bind(c, name='PLASMA_zpotrs_Tile')
1275  use iso_c_binding
1276  implicit none
1277  integer(kind=c_int) :: plasma_zpotrs_tile_c
1278  integer(kind=c_int), value :: uplo
1279  type(c_ptr), value :: a
1280  type(c_ptr), value :: b
1281  end function plasma_zpotrs_tile_c
1282  end interface
1283 
1284 ! private PLASMA_zsymm_Tile_c
1285  interface
1286  function plasma_zsymm_tile_c(side,uplo,alpha,A,B,beta,C) &
1287  & bind(c, name='PLASMA_zsymm_Tile')
1288  use iso_c_binding
1289  implicit none
1290  integer(kind=c_int) :: plasma_zsymm_tile_c
1291  integer(kind=c_int), value :: side
1292  integer(kind=c_int), value :: uplo
1293  complex(kind=c_double_complex), value :: alpha
1294  type(c_ptr), value :: a
1295  type(c_ptr), value :: b
1296  complex(kind=c_double_complex), value :: beta
1297  type(c_ptr), value :: c
1298  end function plasma_zsymm_tile_c
1299  end interface
1300 
1301 ! private PLASMA_zsyrk_Tile_c
1302  interface
1303  function plasma_zsyrk_tile_c(uplo,trans,alpha,A,beta,C) &
1304  & bind(c, name='PLASMA_zsyrk_Tile')
1305  use iso_c_binding
1306  implicit none
1307  integer(kind=c_int) :: plasma_zsyrk_tile_c
1308  integer(kind=c_int), value :: uplo
1309  integer(kind=c_int), value :: trans
1310  complex(kind=c_double_complex), value :: alpha
1311  type(c_ptr), value :: a
1312  complex(kind=c_double_complex), value :: beta
1313  type(c_ptr), value :: c
1314  end function plasma_zsyrk_tile_c
1315  end interface
1316 
1317 ! private PLASMA_zsyr2k_Tile_c
1318  interface
1319  function plasma_zsyr2k_tile_c(uplo,trans,alpha,A,B,beta,C) &
1320  & bind(c, name='PLASMA_zsyr2k_Tile')
1321  use iso_c_binding
1322  implicit none
1323  integer(kind=c_int) :: plasma_zsyr2k_tile_c
1324  integer(kind=c_int), value :: uplo
1325  integer(kind=c_int), value :: trans
1326  complex(kind=c_double_complex), value :: alpha
1327  type(c_ptr), value :: a
1328  type(c_ptr), value :: b
1329  complex(kind=c_double_complex), value :: beta
1330  type(c_ptr), value :: c
1331  end function plasma_zsyr2k_tile_c
1332  end interface
1333 
1334 ! private PLASMA_ztrmm_Tile_c
1335  interface
1336  function plasma_ztrmm_tile_c(side,uplo,transA,diag,alpha,A,B) &
1337  & bind(c, name='PLASMA_ztrmm_Tile')
1338  use iso_c_binding
1339  implicit none
1340  integer(kind=c_int) :: plasma_ztrmm_tile_c
1341  integer(kind=c_int), value :: side
1342  integer(kind=c_int), value :: uplo
1343  integer(kind=c_int), value :: transa
1344  integer(kind=c_int), value :: diag
1345  complex(kind=c_double_complex), value :: alpha
1346  type(c_ptr), value :: a
1347  type(c_ptr), value :: b
1348  end function plasma_ztrmm_tile_c
1349  end interface
1350 
1351 ! private PLASMA_ztrsm_Tile_c
1352  interface
1353  function plasma_ztrsm_tile_c(side,uplo,transA,diag,alpha,A,B) &
1354  & bind(c, name='PLASMA_ztrsm_Tile')
1355  use iso_c_binding
1356  implicit none
1357  integer(kind=c_int) :: plasma_ztrsm_tile_c
1358  integer(kind=c_int), value :: side
1359  integer(kind=c_int), value :: uplo
1360  integer(kind=c_int), value :: transa
1361  integer(kind=c_int), value :: diag
1362  complex(kind=c_double_complex), value :: alpha
1363  type(c_ptr), value :: a
1364  type(c_ptr), value :: b
1365  end function plasma_ztrsm_tile_c
1366  end interface
1367 
1368 ! private PLASMA_ztrsmpl_Tile_c
1369  interface
1370  function plasma_ztrsmpl_tile_c(A,L,IPIV,B) &
1371  & bind(c, name='PLASMA_ztrsmpl_Tile')
1372  use iso_c_binding
1373  implicit none
1374  integer(kind=c_int) :: plasma_ztrsmpl_tile_c
1375  type(c_ptr), value :: a
1376  type(c_ptr), value :: l
1377  type(c_ptr), value :: ipiv
1378  type(c_ptr), value :: b
1379  end function plasma_ztrsmpl_tile_c
1380  end interface
1381 
1382 ! private PLASMA_ztrtri_Tile_c
1383  interface
1384  function plasma_ztrtri_tile_c(uplo,diag,A) &
1385  & bind(c, name='PLASMA_ztrtri_Tile')
1386  use iso_c_binding
1387  implicit none
1388  integer(kind=c_int) :: plasma_ztrtri_tile_c
1389  integer(kind=c_int), value :: uplo
1390  integer(kind=c_int), value :: diag
1391  type(c_ptr), value :: a
1392  end function plasma_ztrtri_tile_c
1393  end interface
1394 
1395 ! private PLASMA_zunglq_Tile_c
1396  interface
1397  function plasma_zunglq_tile_c(A,T,B) &
1398  & bind(c, name='PLASMA_zunglq_Tile')
1399  use iso_c_binding
1400  implicit none
1401  integer(kind=c_int) :: plasma_zunglq_tile_c
1402  type(c_ptr), value :: a
1403  type(c_ptr), value :: t
1404  type(c_ptr), value :: b
1405  end function plasma_zunglq_tile_c
1406  end interface
1407 
1408 ! private PLASMA_zungqr_Tile_c
1409  interface
1410  function plasma_zungqr_tile_c(A,T,B) &
1411  & bind(c, name='PLASMA_zungqr_Tile')
1412  use iso_c_binding
1413  implicit none
1414  integer(kind=c_int) :: plasma_zungqr_tile_c
1415  type(c_ptr), value :: a
1416  type(c_ptr), value :: t
1417  type(c_ptr), value :: b
1418  end function plasma_zungqr_tile_c
1419  end interface
1420 
1421 ! private PLASMA_zunmlq_Tile_c
1422  interface
1423  function plasma_zunmlq_tile_c(side,trans,A,T,B) &
1424  & bind(c, name='PLASMA_zunmlq_Tile')
1425  use iso_c_binding
1426  implicit none
1427  integer(kind=c_int) :: plasma_zunmlq_tile_c
1428  integer(kind=c_int), value :: side
1429  integer(kind=c_int), value :: trans
1430  type(c_ptr), value :: a
1431  type(c_ptr), value :: t
1432  type(c_ptr), value :: b
1433  end function plasma_zunmlq_tile_c
1434  end interface
1435 
1436 ! private PLASMA_zunmqr_Tile_c
1437  interface
1438  function plasma_zunmqr_tile_c(side,trans,A,T,B) &
1439  & bind(c, name='PLASMA_zunmqr_Tile')
1440  use iso_c_binding
1441  implicit none
1442  integer(kind=c_int) :: plasma_zunmqr_tile_c
1443  integer(kind=c_int), value :: side
1444  integer(kind=c_int), value :: trans
1445  type(c_ptr), value :: a
1446  type(c_ptr), value :: t
1447  type(c_ptr), value :: b
1448  end function plasma_zunmqr_tile_c
1449  end interface
1450 
1451 ! private PLASMA_Alloc_Workspace_zgelqf_c
1452  interface
1454  & bind(c, name='PLASMA_Alloc_Workspace_zgelqf')
1455  use iso_c_binding
1456  implicit none
1457  integer(kind=c_int) :: plasma_alloc_workspace_zgelqf_c
1458  integer(kind=c_int), value :: m
1459  integer(kind=c_int), value :: n
1460  type(c_ptr) :: t ! T is **, so pass by reference
1461  end function plasma_alloc_workspace_zgelqf_c
1462  end interface
1463 
1464 ! private PLASMA_Alloc_Workspace_zgels_c
1465  interface
1467  & bind(c, name='PLASMA_Alloc_Workspace_zgels')
1468  use iso_c_binding
1469  implicit none
1470  integer(kind=c_int) :: plasma_alloc_workspace_zgels_c
1471  integer(kind=c_int), value :: m
1472  integer(kind=c_int), value :: n
1473  type(c_ptr) :: t ! T is **, so pass by reference
1474  end function plasma_alloc_workspace_zgels_c
1475  end interface
1476 
1477 ! private PLASMA_Alloc_Workspace_zgeqrf_c
1478  interface
1480  & bind(c, name='PLASMA_Alloc_Workspace_zgeqrf')
1481  use iso_c_binding
1482  implicit none
1483  integer(kind=c_int) :: plasma_alloc_workspace_zgeqrf_c
1484  integer(kind=c_int), value :: m
1485  integer(kind=c_int), value :: n
1486  type(c_ptr) :: t ! T is **, so pass by reference
1487  end function plasma_alloc_workspace_zgeqrf_c
1488  end interface
1489 
1490 ! private PLASMA_Alloc_Workspace_zgesv_incpiv_c
1491  interface
1493  & bind(c, name='PLASMA_Alloc_Workspace_zgesv_incpiv')
1494  use iso_c_binding
1495  implicit none
1496  integer(kind=c_int) :: plasma_alloc_workspace_zgesv_incpiv_c
1497  integer(kind=c_int), value :: n
1498  type(c_ptr) :: l ! L is **, so pass by reference
1499  type(c_ptr) :: ipiv ! IPIV is **, so pass by reference
1501  end interface
1502 
1503 ! private PLASMA_Alloc_Workspace_zgetrf_incpiv_c
1504  interface
1506  & bind(c, name='PLASMA_Alloc_Workspace_zgetrf_incpiv')
1507  use iso_c_binding
1508  implicit none
1509  integer(kind=c_int) :: plasma_alloc_workspace_zgetrf_incpiv_c
1510  integer(kind=c_int), value :: m
1511  integer(kind=c_int), value :: n
1512  type(c_ptr) :: l ! L is **, so pass by reference
1513  type(c_ptr) :: ipiv ! IPIV is **, so pass by reference
1515  end interface
1516 
1517 ! private PLASMA_Alloc_Workspace_zgeev_c
1518  interface
1520  & bind(c, name='PLASMA_Alloc_Workspace_zgeev')
1521  use iso_c_binding
1522  implicit none
1523  integer(kind=c_int) :: plasma_alloc_workspace_zgeev_c
1524  integer(kind=c_int), value :: n
1525  type(c_ptr) :: desct ! descT is **, so pass by reference
1526  end function plasma_alloc_workspace_zgeev_c
1527  end interface
1528 
1529 ! private PLASMA_Alloc_Workspace_zgebrd_c
1530  interface
1531  function plasma_alloc_workspace_zgebrd_c(M,N,descT) &
1532  & bind(c, name='PLASMA_Alloc_Workspace_zgebrd')
1533  use iso_c_binding
1534  implicit none
1535  integer(kind=c_int) :: plasma_alloc_workspace_zgebrd_c
1536  integer(kind=c_int), value :: m
1537  integer(kind=c_int), value :: n
1538  type(c_ptr) :: desct ! descT is **, so pass by reference
1539  end function plasma_alloc_workspace_zgebrd_c
1540  end interface
1541 
1542 ! private PLASMA_Alloc_Workspace_zgesvd_c
1543  interface
1544  function plasma_alloc_workspace_zgesvd_c(M,N,descT) &
1545  & bind(c, name='PLASMA_Alloc_Workspace_zgesvd')
1546  use iso_c_binding
1547  implicit none
1548  integer(kind=c_int) :: plasma_alloc_workspace_zgesvd_c
1549  integer(kind=c_int), value :: m
1550  integer(kind=c_int), value :: n
1551  type(c_ptr) :: desct ! descT is **, so pass by reference
1552  end function plasma_alloc_workspace_zgesvd_c
1553  end interface
1554 
1555 ! private PLASMA_Alloc_Workspace_zheev_c
1556  interface
1557  function plasma_alloc_workspace_zheev_c(M,N,descT) &
1558  & bind(c, name='PLASMA_Alloc_Workspace_zheev')
1559  use iso_c_binding
1560  implicit none
1561  integer(kind=c_int) :: plasma_alloc_workspace_zheev_c
1562  integer(kind=c_int), value :: m
1563  integer(kind=c_int), value :: n
1564  type(c_ptr) :: desct ! descT is **, so pass by reference
1565  end function plasma_alloc_workspace_zheev_c
1566  end interface
1567 
1568 ! private PLASMA_Alloc_Workspace_zhegv_c
1569  interface
1570  function plasma_alloc_workspace_zhegv_c(M,N,descT) &
1571  & bind(c, name='PLASMA_Alloc_Workspace_zhegv')
1572  use iso_c_binding
1573  implicit none
1574  integer(kind=c_int) :: plasma_alloc_workspace_zhegv_c
1575  integer(kind=c_int), value :: m
1576  integer(kind=c_int), value :: n
1577  type(c_ptr) :: desct ! descT is **, so pass by reference
1578  end function plasma_alloc_workspace_zhegv_c
1579  end interface
1580 
1581 ! private PLASMA_Alloc_Workspace_zhetrd_c
1582  interface
1583  function plasma_alloc_workspace_zhetrd_c(M,N,descT) &
1584  & bind(c, name='PLASMA_Alloc_Workspace_zhetrd')
1585  use iso_c_binding
1586  implicit none
1587  integer(kind=c_int) :: plasma_alloc_workspace_zhetrd_c
1588  integer(kind=c_int), value :: m
1589  integer(kind=c_int), value :: n
1590  type(c_ptr) :: desct ! descT is **, so pass by reference
1591  end function plasma_alloc_workspace_zhetrd_c
1592  end interface
1593 
1594 ! private PLASMA_Alloc_Workspace_zgelqf_Tile_c
1595  interface
1597  & bind(c, name='PLASMA_Alloc_Workspace_zgelqf_Tile')
1598  use iso_c_binding
1599  implicit none
1600  integer(kind=c_int) :: plasma_alloc_workspace_zgelqf_tile_c
1601  integer(kind=c_int), value :: m
1602  integer(kind=c_int), value :: n
1603  type(c_ptr) :: desct ! descT is **, so pass by reference
1605  end interface
1606 
1607 ! private PLASMA_Alloc_Workspace_zgels_Tile_c
1608  interface
1610  & bind(c, name='PLASMA_Alloc_Workspace_zgels_Tile')
1611  use iso_c_binding
1612  implicit none
1613  integer(kind=c_int) :: plasma_alloc_workspace_zgels_tile_c
1614  integer(kind=c_int), value :: m
1615  integer(kind=c_int), value :: n
1616  type(c_ptr) :: desct ! descT is **, so pass by reference
1618  end interface
1619 
1620 ! private PLASMA_Alloc_Workspace_zgeqrf_Tile_c
1621  interface
1623  & bind(c, name='PLASMA_Alloc_Workspace_zgeqrf_Tile')
1624  use iso_c_binding
1625  implicit none
1626  integer(kind=c_int) :: plasma_alloc_workspace_zgeqrf_tile_c
1627  integer(kind=c_int), value :: m
1628  integer(kind=c_int), value :: n
1629  type(c_ptr) :: desct ! descT is **, so pass by reference
1631  end interface
1632 
1633 ! private PLASMA_Alloc_Workspace_zgesv_incpiv_Tile_c
1634  interface
1636  & bind(c, name='PLASMA_Alloc_Workspace_zgesv_incpiv_Tile')
1637  use iso_c_binding
1638  implicit none
1639  integer(kind=c_int) :: plasma_alloc_workspace_zgesv_incpiv_tile_c
1640  integer(kind=c_int), value :: n
1641  type(c_ptr) :: descl ! descL is **, so pass by reference
1642  type(c_ptr) :: ipiv ! IPIV is **, so pass by reference
1644  end interface
1645 
1646 ! private PLASMA_Alloc_Workspace_zgetrf_incpiv_Tile_c
1647  interface
1649  & bind(c, name='PLASMA_Alloc_Workspace_zgetrf_incpiv_Tile')
1650  use iso_c_binding
1651  implicit none
1652  integer(kind=c_int) :: plasma_alloc_workspace_zgetrf_incpiv_tile_c
1653  integer(kind=c_int), value :: n
1654  type(c_ptr) :: descl ! descL is **, so pass by reference
1655  type(c_ptr) :: ipiv ! IPIV is **, so pass by reference
1657  end interface
1658 
1659 ! private PLASMA_zLapack_to_Tile_c
1660  interface
1661  function plasma_zlapack_to_tile_c(Af77,LDA,A) &
1662  & bind(c, name='PLASMA_zLapack_to_Tile')
1663  use iso_c_binding
1664  implicit none
1665  integer(kind=c_int) :: plasma_zlapack_to_tile_c
1666  type(c_ptr), value :: af77
1667  integer(kind=c_int), value :: lda
1668  type(c_ptr), value :: a
1669  end function plasma_zlapack_to_tile_c
1670  end interface
1671 
1672 ! private PLASMA_zTile_to_Lapack_c
1673  interface
1674  function plasma_ztile_to_lapack_c(A,Af77,LDA) &
1675  & bind(c, name='PLASMA_zTile_to_Lapack')
1676  use iso_c_binding
1677  implicit none
1678  integer(kind=c_int) :: plasma_ztile_to_lapack_c
1679  type(c_ptr), value :: a
1680  type(c_ptr), value :: af77
1681  integer(kind=c_int), value :: lda
1682  end function plasma_ztile_to_lapack_c
1683  end interface
1684 
1685  contains
1686 
1687  subroutine plasma_zgebrd(jobu,jobvt,M,N,A,LDA,D,E,U,LDU,VT,LDVT,T,info)
1688  use iso_c_binding
1689  implicit none
1690  integer(kind=c_int), intent(out) :: info
1691  integer(kind=c_int), intent(in) :: lda
1692  integer(kind=c_int), intent(in) :: ldu
1693  integer(kind=c_int), intent(in) :: ldvt
1694  integer(kind=c_int), intent(in) :: m
1695  integer(kind=c_int), intent(in) :: n
1696  integer(kind=c_int), intent(in) :: jobu
1697  integer(kind=c_int), intent(in) :: jobvt
1698  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
1699  real(kind=c_double), intent(out), target :: d(*)
1700  real(kind=c_double), intent(out), target :: e(*)
1701  complex(kind=c_double_complex), intent(out), target :: u(ldu,*)
1702  complex(kind=c_double_complex), intent(out), target :: vt(ldvt,*)
1703  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
1704  info = plasma_zgebrd_c(jobu,jobvt,m,n,c_loc(a),lda,c_loc(d),c_loc(e),c_loc(u),ldu,c_loc(vt),ldvt,t)
1705  end subroutine plasma_zgebrd
1706 
1707  subroutine plasma_zgelqf(M,N,A,LDA,T,info)
1708  use iso_c_binding
1709  implicit none
1710  integer(kind=c_int), intent(out) :: info
1711  integer(kind=c_int), intent(in) :: lda
1712  integer(kind=c_int), intent(in) :: m
1713  integer(kind=c_int), intent(in) :: n
1714  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
1715  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
1716  info = plasma_zgelqf_c(m,n,c_loc(a),lda,t)
1717  end subroutine plasma_zgelqf
1718 
1719  subroutine plasma_zgelqs(M,N,NRHS,A,LDA,T,B,LDB,info)
1720  use iso_c_binding
1721  implicit none
1722  integer(kind=c_int), intent(out) :: info
1723  integer(kind=c_int), intent(in) :: lda
1724  integer(kind=c_int), intent(in) :: ldb
1725  integer(kind=c_int), intent(in) :: m
1726  integer(kind=c_int), intent(in) :: n
1727  integer(kind=c_int), intent(in) :: nrhs
1728  complex(kind=c_double_complex), intent(in), target :: a(lda,*)
1729  complex(kind=c_double_complex), intent(inout), target :: b(ldb,*)
1730  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
1731  info = plasma_zgelqs_c(m,n,nrhs,c_loc(a),lda,t,c_loc(b),ldb)
1732  end subroutine plasma_zgelqs
1733 
1734  subroutine plasma_zgels(trans,M,N,NRHS,A,LDA,T,B,LDB,info)
1735  use iso_c_binding
1736  implicit none
1737  integer(kind=c_int), intent(out) :: info
1738  integer(kind=c_int), intent(in) :: lda
1739  integer(kind=c_int), intent(in) :: ldb
1740  integer(kind=c_int), intent(in) :: m
1741  integer(kind=c_int), intent(in) :: n
1742  integer(kind=c_int), intent(in) :: nrhs
1743  integer(kind=c_int), intent(in) :: trans
1744  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
1745  complex(kind=c_double_complex), intent(inout), target :: b(ldb,*)
1746  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
1747  info = plasma_zgels_c(trans,m,n,nrhs,c_loc(a),lda,t,c_loc(b),ldb)
1748  end subroutine plasma_zgels
1749 
1750  subroutine plasma_zgemm(transA,transB,M,N,K,alpha,A,LDA,B,LDB,beta,C,LDC,info)
1751  use iso_c_binding
1752  implicit none
1753  integer(kind=c_int), intent(out) :: info
1754  integer(kind=c_int), intent(in) :: k
1755  integer(kind=c_int), intent(in) :: lda
1756  integer(kind=c_int), intent(in) :: ldb
1757  integer(kind=c_int), intent(in) :: ldc
1758  integer(kind=c_int), intent(in) :: m
1759  integer(kind=c_int), intent(in) :: n
1760  integer(kind=c_int), intent(in) :: transa
1761  integer(kind=c_int), intent(in) :: transb
1762  complex(kind=c_double_complex), intent(in) :: alpha
1763  complex(kind=c_double_complex), intent(in) :: beta
1764  complex(kind=c_double_complex), intent(in), target :: a(lda,*)
1765  complex(kind=c_double_complex), intent(in), target :: b(ldb,*)
1766  complex(kind=c_double_complex), intent(inout), target :: c(ldc,*)
1767  info = plasma_zgemm_c(transa,transb,m,n,k,alpha,c_loc(a),lda,c_loc(b),ldb,beta,c_loc(c),ldc)
1768  end subroutine plasma_zgemm
1769 
1770  subroutine plasma_zgeqrf(M,N,A,LDA,T,info)
1771  use iso_c_binding
1772  implicit none
1773  integer(kind=c_int), intent(out) :: info
1774  integer(kind=c_int), intent(in) :: lda
1775  integer(kind=c_int), intent(in) :: m
1776  integer(kind=c_int), intent(in) :: n
1777  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
1778  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
1779  info = plasma_zgeqrf_c(m,n,c_loc(a),lda,t)
1780  end subroutine plasma_zgeqrf
1781 
1782  subroutine plasma_zgeqrs(M,N,NRHS,A,LDA,T,B,LDB,info)
1783  use iso_c_binding
1784  implicit none
1785  integer(kind=c_int), intent(out) :: info
1786  integer(kind=c_int), intent(in) :: lda
1787  integer(kind=c_int), intent(in) :: ldb
1788  integer(kind=c_int), intent(in) :: m
1789  integer(kind=c_int), intent(in) :: n
1790  integer(kind=c_int), intent(in) :: nrhs
1791  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
1792  complex(kind=c_double_complex), intent(inout), target :: b(ldb,*)
1793  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
1794  info = plasma_zgeqrs_c(m,n,nrhs,c_loc(a),lda,t,c_loc(b),ldb)
1795  end subroutine plasma_zgeqrs
1796 
1797  subroutine plasma_zgesv(N,NRHS,A,LDA,IPIV,B,LDB,info)
1798  use iso_c_binding
1799  implicit none
1800  integer(kind=c_int), intent(out) :: info
1801  integer(kind=c_int), intent(in) :: lda
1802  integer(kind=c_int), intent(in) :: ldb
1803  integer(kind=c_int), intent(in) :: n
1804  integer(kind=c_int), intent(in) :: nrhs
1805  integer(kind=c_int), intent(out), target :: ipiv(*)
1806  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
1807  complex(kind=c_double_complex), intent(inout), target :: b(ldb,*)
1808  info = plasma_zgesv_c(n,nrhs,c_loc(a),lda,c_loc(ipiv),c_loc(b),ldb)
1809  end subroutine plasma_zgesv
1810 
1811  subroutine plasma_zgesv_incpiv(N,NRHS,A,LDA,L,IPIV,B,LDB,info)
1812  use iso_c_binding
1813  implicit none
1814  integer(kind=c_int), intent(out) :: info
1815  integer(kind=c_int), intent(in) :: lda
1816  integer(kind=c_int), intent(in) :: ldb
1817  integer(kind=c_int), intent(in) :: n
1818  integer(kind=c_int), intent(in) :: nrhs
1819  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
1820  complex(kind=c_double_complex), intent(inout), target :: b(ldb,*)
1821  type(c_ptr), value :: ipiv ! Arg managed by PLASMA: opaque to Fortran
1822  type(c_ptr), value :: l ! Arg managed by PLASMA: opaque to Fortran
1823  info = plasma_zgesv_incpiv_c(n,nrhs,c_loc(a),lda,l,ipiv,c_loc(b),ldb)
1824  end subroutine plasma_zgesv_incpiv
1825 
1826  subroutine plasma_zgesvd(jobu,jobvt,M,N,A,LDA,S,U,LDU,VT,LDVT,T,info)
1827  use iso_c_binding
1828  implicit none
1829  integer(kind=c_int), intent(out) :: info
1830  integer(kind=c_int), intent(in) :: lda
1831  integer(kind=c_int), intent(in) :: ldu
1832  integer(kind=c_int), intent(in) :: ldvt
1833  integer(kind=c_int), intent(in) :: m
1834  integer(kind=c_int), intent(in) :: n
1835  integer(kind=c_int), intent(in) :: jobu
1836  integer(kind=c_int), intent(in) :: jobvt
1837  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
1838  real(kind=c_double), intent(out), target :: s(*)
1839  complex(kind=c_double_complex), intent(out), target :: u(ldu,*)
1840  complex(kind=c_double_complex), intent(out), target :: vt(ldvt,*)
1841  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
1842  info = plasma_zgesvd_c(jobu,jobvt,m,n,c_loc(a),lda,c_loc(s),c_loc(u),ldu,c_loc(vt),ldvt,t)
1843  end subroutine plasma_zgesvd
1844 
1845  subroutine plasma_zgetrf(M,N,A,LDA,IPIV,info)
1846  use iso_c_binding
1847  implicit none
1848  integer(kind=c_int), intent(out) :: info
1849  integer(kind=c_int), intent(in) :: lda
1850  integer(kind=c_int), intent(in) :: m
1851  integer(kind=c_int), intent(in) :: n
1852  integer(kind=c_int), intent(out), target :: ipiv(*)
1853  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
1854  info = plasma_zgetrf_c(m,n,c_loc(a),lda,c_loc(ipiv))
1855  end subroutine plasma_zgetrf
1856 
1857  subroutine plasma_zgetrf_incpiv(M,N,A,LDA,L,IPIV,info)
1858  use iso_c_binding
1859  implicit none
1860  integer(kind=c_int), intent(out) :: info
1861  integer(kind=c_int), intent(in) :: lda
1862  integer(kind=c_int), intent(in) :: m
1863  integer(kind=c_int), intent(in) :: n
1864  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
1865  type(c_ptr), value :: ipiv ! Arg managed by PLASMA: opaque to Fortran
1866  type(c_ptr), value :: l ! Arg managed by PLASMA: opaque to Fortran
1867  info = plasma_zgetrf_incpiv_c(m,n,c_loc(a),lda,l,ipiv)
1868  end subroutine plasma_zgetrf_incpiv
1869 
1870  subroutine plasma_zgetrs(trans,N,NRHS,A,LDA,IPIV,B,LDB,info)
1871  use iso_c_binding
1872  implicit none
1873  integer(kind=c_int), intent(out) :: info
1874  integer(kind=c_int), intent(in) :: lda
1875  integer(kind=c_int), intent(in) :: ldb
1876  integer(kind=c_int), intent(in) :: n
1877  integer(kind=c_int), intent(in) :: nrhs
1878  integer(kind=c_int), intent(in) :: trans
1879  integer(kind=c_int), intent(in), target :: ipiv(*)
1880  complex(kind=c_double_complex), intent(in), target :: a(lda,*)
1881  complex(kind=c_double_complex), intent(inout), target :: b(ldb,*)
1882  info = plasma_zgetrs_c(trans,n,nrhs,c_loc(a),lda,c_loc(ipiv),c_loc(b),ldb)
1883  end subroutine plasma_zgetrs
1884 
1885  subroutine plasma_zgetrs_incpiv(trans,N,NRHS,A,LDA,L,IPIV,B,LDB,info)
1886  use iso_c_binding
1887  implicit none
1888  integer(kind=c_int), intent(out) :: info
1889  integer(kind=c_int), intent(in) :: lda
1890  integer(kind=c_int), intent(in) :: ldb
1891  integer(kind=c_int), intent(in) :: n
1892  integer(kind=c_int), intent(in) :: nrhs
1893  integer(kind=c_int), intent(in) :: trans
1894  complex(kind=c_double_complex), intent(in), target :: a(lda,*)
1895  complex(kind=c_double_complex), intent(inout), target :: b(ldb,*)
1896  type(c_ptr), value :: ipiv ! Arg managed by PLASMA: opaque to Fortran
1897  type(c_ptr), value :: l ! Arg managed by PLASMA: opaque to Fortran
1898  info = plasma_zgetrs_incpiv_c(trans,n,nrhs,c_loc(a),lda,l,ipiv,c_loc(b),ldb)
1899  end subroutine plasma_zgetrs_incpiv
1900 
1901 #if defined(PRECISION_z) || defined(PRECISION_c)
1902  subroutine plasma_zhemm(side,uplo,M,N,alpha,A,LDA,B,LDB,beta,C,LDC,info)
1903  use iso_c_binding
1904  implicit none
1905  integer(kind=c_int), intent(out) :: info
1906  integer(kind=c_int), intent(in) :: lda
1907  integer(kind=c_int), intent(in) :: ldb
1908  integer(kind=c_int), intent(in) :: ldc
1909  integer(kind=c_int), intent(in) :: m
1910  integer(kind=c_int), intent(in) :: n
1911  integer(kind=c_int), intent(in) :: side
1912  integer(kind=c_int), intent(in) :: uplo
1913  complex(kind=c_double_complex), intent(in) :: alpha
1914  complex(kind=c_double_complex), intent(in) :: beta
1915  complex(kind=c_double_complex), intent(in), target :: a(lda,*)
1916  complex(kind=c_double_complex), intent(in), target :: b(ldb,*)
1917  complex(kind=c_double_complex), intent(inout), target :: c(ldc,*)
1918  info = plasma_zhemm_c(side,uplo,m,n,alpha,c_loc(a),lda,c_loc(b),ldb,beta,c_loc(c),ldc)
1919  end subroutine plasma_zhemm
1920 
1921  subroutine plasma_zherk(uplo,trans,N,K,alpha,A,LDA,beta,C,LDC,info)
1922  use iso_c_binding
1923  implicit none
1924  integer(kind=c_int), intent(out) :: info
1925  integer(kind=c_int), intent(in) :: k
1926  integer(kind=c_int), intent(in) :: lda
1927  integer(kind=c_int), intent(in) :: ldc
1928  integer(kind=c_int), intent(in) :: n
1929  integer(kind=c_int), intent(in) :: trans
1930  integer(kind=c_int), intent(in) :: uplo
1931  complex(kind=c_double_complex), intent(in), target :: a(lda,*)
1932  complex(kind=c_double_complex), intent(inout), target :: c(ldc,*)
1933  real(kind=c_double), intent(in) :: alpha
1934  real(kind=c_double), intent(in) :: beta
1935  info = plasma_zherk_c(uplo,trans,n,k,alpha,c_loc(a),lda,beta,c_loc(c),ldc)
1936  end subroutine plasma_zherk
1937 
1938  subroutine plasma_zher2k(uplo,trans,N,K,alpha,A,LDA,B,LDB,beta,C,LDC,info)
1939  use iso_c_binding
1940  implicit none
1941  integer(kind=c_int), intent(out) :: info
1942  integer(kind=c_int), intent(in) :: k
1943  integer(kind=c_int), intent(in) :: lda
1944  integer(kind=c_int), intent(in) :: ldb
1945  integer(kind=c_int), intent(in) :: ldc
1946  integer(kind=c_int), intent(in) :: n
1947  integer(kind=c_int), intent(in) :: trans
1948  integer(kind=c_int), intent(in) :: uplo
1949  complex(kind=c_double_complex), intent(in) :: alpha
1950  complex(kind=c_double_complex), intent(in), target :: a(lda,*)
1951  complex(kind=c_double_complex), intent(in), target :: b(ldb,*)
1952  complex(kind=c_double_complex), intent(inout), target :: c(ldc,*)
1953  real(kind=c_double), intent(in) :: beta
1954  info = plasma_zher2k_c(uplo,trans,n,k,alpha,c_loc(a),lda,c_loc(b),ldb,beta,c_loc(c),ldc)
1955  end subroutine plasma_zher2k
1956 #endif
1957 
1958  subroutine plasma_zheev(jobz,uplo,N,A,LDA,W,T,Q,LDQ,info)
1959  use iso_c_binding
1960  implicit none
1961  integer(kind=c_int), intent(out) :: info
1962  integer(kind=c_int), intent(in) :: lda
1963  integer(kind=c_int), intent(in) :: ldq
1964  integer(kind=c_int), intent(in) :: n
1965  integer(kind=c_int), intent(in) :: jobz
1966  integer(kind=c_int), intent(in) :: uplo
1967  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
1968  real(kind=c_double), intent(out), target :: w(*)
1969  complex(kind=c_double_complex), intent(out), target :: q(ldq,*)
1970  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
1971  info = plasma_zheev_c(jobz,uplo,n,c_loc(a),lda,c_loc(w),t,c_loc(q),ldq)
1972  end subroutine plasma_zheev
1973 
1974  subroutine plasma_zhegv(itype,jobz,uplo,N,A,LDA,B,LDB,W,T,Q,LDQ,info)
1975  use iso_c_binding
1976  implicit none
1977  integer(kind=c_int), intent(out) :: info
1978  integer(kind=c_int), intent(in) :: lda
1979  integer(kind=c_int), intent(in) :: ldb
1980  integer(kind=c_int), intent(in) :: ldq
1981  integer(kind=c_int), intent(in) :: n
1982  integer(kind=c_int), intent(in) :: itype
1983  integer(kind=c_int), intent(in) :: jobz
1984  integer(kind=c_int), intent(in) :: uplo
1985  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
1986  complex(kind=c_double_complex), intent(inout), target :: b(ldb,*)
1987  real(kind=c_double), intent(out), target :: w(*)
1988  complex(kind=c_double_complex), intent(out), target :: q(ldq,*)
1989  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
1990  info = plasma_zhegv_c(itype,jobz,uplo,n,c_loc(a),lda,c_loc(b),ldb,c_loc(w),t,c_loc(q),ldq)
1991  end subroutine plasma_zhegv
1992 
1993  subroutine plasma_zhegst(itype,uplo,N,A,LDA,B,LDB,info)
1994  use iso_c_binding
1995  implicit none
1996  integer(kind=c_int), intent(out) :: info
1997  integer(kind=c_int), intent(in) :: lda
1998  integer(kind=c_int), intent(in) :: ldb
1999  integer(kind=c_int), intent(in) :: n
2000  integer(kind=c_int), intent(in) :: itype
2001  integer(kind=c_int), intent(in) :: uplo
2002  complex(kind=c_double_complex), intent(in), target :: b(ldb,*)
2003  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
2004  info = plasma_zhegst_c(itype,uplo,n,c_loc(a),lda,c_loc(b),ldb)
2005  end subroutine plasma_zhegst
2006 
2007  subroutine plasma_zhetrd(jobz,uplo,N,A,LDA,D,E,T,Q,LDQ,info)
2008  use iso_c_binding
2009  implicit none
2010  integer(kind=c_int), intent(out) :: info
2011  integer(kind=c_int), intent(in) :: lda
2012  integer(kind=c_int), intent(in) :: ldq
2013  integer(kind=c_int), intent(in) :: n
2014  integer(kind=c_int), intent(in) :: jobz
2015  integer(kind=c_int), intent(in) :: uplo
2016  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
2017  real(kind=c_double), intent(out), target :: d(*)
2018  real(kind=c_double), intent(out), target :: e(*)
2019  complex(kind=c_double_complex), intent(out), target :: q(ldq,*)
2020  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2021  info = plasma_zhetrd_c(jobz,uplo,n,c_loc(a),lda,c_loc(d),c_loc(e),t,c_loc(q),ldq)
2022  end subroutine plasma_zhetrd
2023 
2024  function plasma_zlange(norm,M,N,A,LDA,work)
2025  use iso_c_binding
2026  implicit none
2027  real(kind=c_double) :: plasma_zlange
2028  real(kind=c_double), intent(inout), target :: work(*)
2029  integer(kind=c_int), intent(in) :: norm
2030  integer(kind=c_int), intent(in) :: lda
2031  integer(kind=c_int), intent(in) :: m
2032  integer(kind=c_int), intent(in) :: n
2033  complex(kind=c_double_complex), intent(in), target :: a(lda,*)
2034  plasma_zlange = plasma_zlange_c(norm,m,n,c_loc(a),lda,c_loc(work))
2035  end function plasma_zlange
2036 
2037 #if defined(PRECISION_z) || defined(PRECISION_c)
2038  function plasma_zlanhe(norm,uplo,N,A,LDA,work)
2039  use iso_c_binding
2040  implicit none
2041  real(kind=c_double) :: plasma_zlanhe
2042  real(kind=c_double), intent(inout), target :: work(*)
2043  integer(kind=c_int), intent(in) :: norm
2044  integer(kind=c_int), intent(in) :: uplo
2045  integer(kind=c_int), intent(in) :: lda
2046  integer(kind=c_int), intent(in) :: n
2047  complex(kind=c_double_complex), intent(in), target :: a(lda,*)
2048  plasma_zlanhe = plasma_zlanhe_c(norm,uplo,n,c_loc(a),lda,c_loc(work))
2049  end function plasma_zlanhe
2050 #endif
2051 
2052  function plasma_zlansy(norm,uplo,N,A,LDA,work)
2053  use iso_c_binding
2054  implicit none
2055  real(kind=c_double) :: plasma_zlansy
2056  real(kind=c_double), intent(inout), target :: work(*)
2057  integer(kind=c_int), intent(in) :: norm
2058  integer(kind=c_int), intent(in) :: uplo
2059  integer(kind=c_int), intent(in) :: lda
2060  integer(kind=c_int), intent(in) :: n
2061  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
2062  plasma_zlansy = plasma_zlansy_c(norm,uplo,n,c_loc(a),lda,c_loc(work))
2063  end function plasma_zlansy
2064 
2065  subroutine plasma_zlaswp(N,A,LDA,K1,K2,IPIV,INCX,info)
2066  use iso_c_binding
2067  implicit none
2068  integer(kind=c_int), intent(out) :: info
2069  integer(kind=c_int), intent(in) :: incx
2070  integer(kind=c_int), intent(in) :: k1
2071  integer(kind=c_int), intent(in) :: k2
2072  integer(kind=c_int), intent(in) :: lda
2073  integer(kind=c_int), intent(in) :: n
2074  integer(kind=c_int), intent(in), target :: ipiv(*)
2075  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
2076  info = plasma_zlaswp_c(n,c_loc(a),lda,k1,k2,c_loc(ipiv),incx)
2077  end subroutine plasma_zlaswp
2078 
2079  subroutine plasma_zlauum(uplo,N,A,LDA,info)
2080  use iso_c_binding
2081  implicit none
2082  integer(kind=c_int), intent(out) :: info
2083  integer(kind=c_int), intent(in) :: lda
2084  integer(kind=c_int), intent(in) :: n
2085  integer(kind=c_int), intent(in) :: uplo
2086  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
2087  info = plasma_zlauum_c(uplo,n,c_loc(a),lda)
2088  end subroutine plasma_zlauum
2089 
2090  subroutine plasma_zposv(uplo,N,NRHS,A,LDA,B,LDB,info)
2091  use iso_c_binding
2092  implicit none
2093  integer(kind=c_int), intent(out) :: info
2094  integer(kind=c_int), intent(in) :: lda
2095  integer(kind=c_int), intent(in) :: ldb
2096  integer(kind=c_int), intent(in) :: n
2097  integer(kind=c_int), intent(in) :: nrhs
2098  integer(kind=c_int), intent(in) :: uplo
2099  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
2100  complex(kind=c_double_complex), intent(inout), target :: b(ldb,*)
2101  info = plasma_zposv_c(uplo,n,nrhs,c_loc(a),lda,c_loc(b),ldb)
2102  end subroutine plasma_zposv
2103 
2104  subroutine plasma_zpotrf(uplo,N,A,LDA,info)
2105  use iso_c_binding
2106  implicit none
2107  integer(kind=c_int), intent(out) :: info
2108  integer(kind=c_int), intent(in) :: lda
2109  integer(kind=c_int), intent(in) :: n
2110  integer(kind=c_int), intent(in) :: uplo
2111  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
2112  info = plasma_zpotrf_c(uplo,n,c_loc(a),lda)
2113  end subroutine plasma_zpotrf
2114 
2115  subroutine plasma_zpotri(uplo,N,A,LDA,info)
2116  use iso_c_binding
2117  implicit none
2118  integer(kind=c_int), intent(out) :: info
2119  integer(kind=c_int), intent(in) :: lda
2120  integer(kind=c_int), intent(in) :: n
2121  integer(kind=c_int), intent(in) :: uplo
2122  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
2123  info = plasma_zpotri_c(uplo,n,c_loc(a),lda)
2124  end subroutine plasma_zpotri
2125 
2126  subroutine plasma_zpotrs(uplo,N,NRHS,A,LDA,B,LDB,info)
2127  use iso_c_binding
2128  implicit none
2129  integer(kind=c_int), intent(out) :: info
2130  integer(kind=c_int), intent(in) :: lda
2131  integer(kind=c_int), intent(in) :: ldb
2132  integer(kind=c_int), intent(in) :: n
2133  integer(kind=c_int), intent(in) :: nrhs
2134  integer(kind=c_int), intent(in) :: uplo
2135  complex(kind=c_double_complex), intent(in), target :: a(lda,*)
2136  complex(kind=c_double_complex), intent(inout), target :: b(ldb,*)
2137  info = plasma_zpotrs_c(uplo,n,nrhs,c_loc(a),lda,c_loc(b),ldb)
2138  end subroutine plasma_zpotrs
2139 
2140  subroutine plasma_zsymm(side,uplo,M,N,alpha,A,LDA,B,LDB,beta,C,LDC,info)
2141  use iso_c_binding
2142  implicit none
2143  integer(kind=c_int), intent(out) :: info
2144  integer(kind=c_int), intent(in) :: lda
2145  integer(kind=c_int), intent(in) :: ldb
2146  integer(kind=c_int), intent(in) :: ldc
2147  integer(kind=c_int), intent(in) :: m
2148  integer(kind=c_int), intent(in) :: n
2149  integer(kind=c_int), intent(in) :: side
2150  integer(kind=c_int), intent(in) :: uplo
2151  complex(kind=c_double_complex), intent(in) :: alpha
2152  complex(kind=c_double_complex), intent(in) :: beta
2153  complex(kind=c_double_complex), intent(in), target :: a(lda,*)
2154  complex(kind=c_double_complex), intent(in), target :: b(ldb,*)
2155  complex(kind=c_double_complex), intent(inout), target :: c(ldc,*)
2156  info = plasma_zsymm_c(side,uplo,m,n,alpha,c_loc(a),lda,c_loc(b),ldb,beta,c_loc(c),ldc)
2157  end subroutine plasma_zsymm
2158 
2159  subroutine plasma_zsyrk(uplo,trans,N,K,alpha,A,LDA,beta,C,LDC,info)
2160  use iso_c_binding
2161  implicit none
2162  integer(kind=c_int), intent(out) :: info
2163  integer(kind=c_int), intent(in) :: k
2164  integer(kind=c_int), intent(in) :: lda
2165  integer(kind=c_int), intent(in) :: ldc
2166  integer(kind=c_int), intent(in) :: n
2167  integer(kind=c_int), intent(in) :: trans
2168  integer(kind=c_int), intent(in) :: uplo
2169  complex(kind=c_double_complex), intent(in) :: alpha
2170  complex(kind=c_double_complex), intent(in) :: beta
2171  complex(kind=c_double_complex), intent(in), target :: a(lda,*)
2172  complex(kind=c_double_complex), intent(inout), target :: c(ldc,*)
2173  info = plasma_zsyrk_c(uplo,trans,n,k,alpha,c_loc(a),lda,beta,c_loc(c),ldc)
2174  end subroutine plasma_zsyrk
2175 
2176  subroutine plasma_zsyr2k(uplo,trans,N,K,alpha,A,LDA,B,LDB,beta,C,LDC,info)
2177  use iso_c_binding
2178  implicit none
2179  integer(kind=c_int), intent(out) :: info
2180  integer(kind=c_int), intent(in) :: k
2181  integer(kind=c_int), intent(in) :: lda
2182  integer(kind=c_int), intent(in) :: ldb
2183  integer(kind=c_int), intent(in) :: ldc
2184  integer(kind=c_int), intent(in) :: n
2185  integer(kind=c_int), intent(in) :: trans
2186  integer(kind=c_int), intent(in) :: uplo
2187  complex(kind=c_double_complex), intent(in) :: alpha
2188  complex(kind=c_double_complex), intent(in) :: beta
2189  complex(kind=c_double_complex), intent(in), target :: a(lda,*)
2190  complex(kind=c_double_complex), intent(in), target :: b(ldb,*)
2191  complex(kind=c_double_complex), intent(inout), target :: c(ldc,*)
2192  info = plasma_zsyr2k_c(uplo,trans,n,k,alpha,c_loc(a),lda,c_loc(b),ldb,beta,c_loc(c),ldc)
2193  end subroutine plasma_zsyr2k
2194 
2195  subroutine plasma_ztrmm(side,uplo,transA,diag,N,NRHS,alpha,A,LDA,B,LDB,info)
2196  use iso_c_binding
2197  implicit none
2198  integer(kind=c_int), intent(out) :: info
2199  integer(kind=c_int), intent(in) :: lda
2200  integer(kind=c_int), intent(in) :: ldb
2201  integer(kind=c_int), intent(in) :: n
2202  integer(kind=c_int), intent(in) :: nrhs
2203  integer(kind=c_int), intent(in) :: diag
2204  integer(kind=c_int), intent(in) :: side
2205  integer(kind=c_int), intent(in) :: transa
2206  integer(kind=c_int), intent(in) :: uplo
2207  complex(kind=c_double_complex), intent(in) :: alpha
2208  complex(kind=c_double_complex), intent(in), target :: a(lda,*)
2209  complex(kind=c_double_complex), intent(inout), target :: b(ldb,*)
2210  info = plasma_ztrmm_c(side,uplo,transa,diag,n,nrhs,alpha,c_loc(a),lda,c_loc(b),ldb)
2211  end subroutine plasma_ztrmm
2212 
2213  subroutine plasma_ztrsm(side,uplo,transA,diag,N,NRHS,alpha,A,LDA,B,LDB,info)
2214  use iso_c_binding
2215  implicit none
2216  integer(kind=c_int), intent(out) :: info
2217  integer(kind=c_int), intent(in) :: lda
2218  integer(kind=c_int), intent(in) :: ldb
2219  integer(kind=c_int), intent(in) :: n
2220  integer(kind=c_int), intent(in) :: nrhs
2221  integer(kind=c_int), intent(in) :: diag
2222  integer(kind=c_int), intent(in) :: side
2223  integer(kind=c_int), intent(in) :: transa
2224  integer(kind=c_int), intent(in) :: uplo
2225  complex(kind=c_double_complex), intent(in) :: alpha
2226  complex(kind=c_double_complex), intent(in), target :: a(lda,*)
2227  complex(kind=c_double_complex), intent(inout), target :: b(ldb,*)
2228  info = plasma_ztrsm_c(side,uplo,transa,diag,n,nrhs,alpha,c_loc(a),lda,c_loc(b),ldb)
2229  end subroutine plasma_ztrsm
2230 
2231  subroutine plasma_ztrsmpl(N,NRHS,A,LDA,L,IPIV,B,LDB,info)
2232  use iso_c_binding
2233  implicit none
2234  integer(kind=c_int), intent(out) :: info
2235  integer(kind=c_int), intent(in) :: lda
2236  integer(kind=c_int), intent(in) :: ldb
2237  integer(kind=c_int), intent(in) :: n
2238  integer(kind=c_int), intent(in) :: nrhs
2239  complex(kind=c_double_complex), intent(in), target :: a(lda,*)
2240  type(c_ptr), value :: l ! Arg managed by PLASMA: opaque to Fortran
2241  type(c_ptr), value :: ipiv ! Arg managed by PLASMA: opaque to Fortran
2242  complex(kind=c_double_complex), intent(inout), target :: b(ldb,*)
2243  info = plasma_ztrsmpl_c(n,nrhs,c_loc(a),lda,l,ipiv,c_loc(b),ldb)
2244  end subroutine plasma_ztrsmpl
2245 
2246  subroutine plasma_ztrtri(uplo,diag,N,A,LDA,info)
2247  use iso_c_binding
2248  implicit none
2249  integer(kind=c_int), intent(out) :: info
2250  integer(kind=c_int), intent(in) :: lda
2251  integer(kind=c_int), intent(in) :: n
2252  integer(kind=c_int), intent(in) :: diag
2253  integer(kind=c_int), intent(in) :: uplo
2254  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
2255  info = plasma_ztrtri_c(uplo,diag,n,c_loc(a),lda)
2256  end subroutine plasma_ztrtri
2257 
2258  subroutine plasma_zunglq(M,N,K,A,LDA,T,B,LDB,info)
2259  use iso_c_binding
2260  implicit none
2261  integer(kind=c_int), intent(out) :: info
2262  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2263  integer(kind=c_int), intent(in) :: k
2264  integer(kind=c_int), intent(in) :: lda
2265  integer(kind=c_int), intent(in) :: ldb
2266  integer(kind=c_int), intent(in) :: m
2267  integer(kind=c_int), intent(in) :: n
2268  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
2269  complex(kind=c_double_complex), intent(out), target :: b(ldb,*)
2270  info = plasma_zunglq_c(m,n,k,c_loc(a),lda,t,c_loc(b),ldb)
2271  end subroutine plasma_zunglq
2272 
2273  subroutine plasma_zungqr(M,N,K,A,LDA,T,B,LDB,info)
2274  use iso_c_binding
2275  implicit none
2276  integer(kind=c_int), intent(out) :: info
2277  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2278  integer(kind=c_int), intent(in) :: k
2279  integer(kind=c_int), intent(in) :: lda
2280  integer(kind=c_int), intent(in) :: ldb
2281  integer(kind=c_int), intent(in) :: m
2282  integer(kind=c_int), intent(in) :: n
2283  complex(kind=c_double_complex), intent(inout), target :: a(lda,*)
2284  complex(kind=c_double_complex), intent(out), target :: b(ldb,*)
2285  info = plasma_zungqr_c(m,n,k,c_loc(a),lda,t,c_loc(b),ldb)
2286  end subroutine plasma_zungqr
2287 
2288  subroutine plasma_zunmlq(side,trans,M,N,K,A,LDA,T,B,LDB,info)
2289  use iso_c_binding
2290  implicit none
2291  integer(kind=c_int), intent(out) :: info
2292  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2293  integer(kind=c_int), intent(in) :: k
2294  integer(kind=c_int), intent(in) :: lda
2295  integer(kind=c_int), intent(in) :: ldb
2296  integer(kind=c_int), intent(in) :: m
2297  integer(kind=c_int), intent(in) :: n
2298  integer(kind=c_int), intent(in) :: side
2299  integer(kind=c_int), intent(in) :: trans
2300  complex(kind=c_double_complex), intent(in), target :: a(lda,*)
2301  complex(kind=c_double_complex), intent(inout), target :: b(ldb,*)
2302  info = plasma_zunmlq_c(side,trans,m,n,k,c_loc(a),lda,t,c_loc(b),ldb)
2303  end subroutine plasma_zunmlq
2304 
2305  subroutine plasma_zunmqr(side,trans,M,N,K,A,LDA,T,B,LDB,info)
2306  use iso_c_binding
2307  implicit none
2308  integer(kind=c_int), intent(out) :: info
2309  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2310  integer(kind=c_int), intent(in) :: k
2311  integer(kind=c_int), intent(in) :: lda
2312  integer(kind=c_int), intent(in) :: ldb
2313  integer(kind=c_int), intent(in) :: m
2314  integer(kind=c_int), intent(in) :: n
2315  integer(kind=c_int), intent(in) :: side
2316  integer(kind=c_int), intent(in) :: trans
2317  complex(kind=c_double_complex), intent(in), target :: a(lda,*)
2318  complex(kind=c_double_complex), intent(inout), target :: b(ldb,*)
2319  info = plasma_zunmqr_c(side,trans,m,n,k,c_loc(a),lda,t,c_loc(b),ldb)
2320  end subroutine plasma_zunmqr
2321 
2322  subroutine plasma_zgecfi(m,n,A,fin,imb,inb,fout,omb,onb,info)
2323  use iso_c_binding
2324  implicit none
2325  integer(kind=c_int), intent(out) :: info
2326  complex(kind=c_double_complex), intent(inout), target :: a(*)
2327  integer(kind=c_int), intent(in) :: fin
2328  integer(kind=c_int), intent(in) :: fout
2329  integer(kind=c_int), intent(in) :: imb
2330  integer(kind=c_int), intent(in) :: inb
2331  integer(kind=c_int), intent(in) :: omb
2332  integer(kind=c_int), intent(in) :: onb
2333  integer(kind=c_int), intent(in) :: m
2334  integer(kind=c_int), intent(in) :: n
2335  info = plasma_zgecfi_c(m,n,c_loc(a),fin,imb,inb,fout,omb,onb)
2336  end subroutine plasma_zgecfi
2337 
2338  subroutine plasma_zgetmi(m,n,A,fin,mb,nb,info)
2339  use iso_c_binding
2340  implicit none
2341  integer(kind=c_int), intent(out) :: info
2342  complex(kind=c_double_complex), intent(inout), target :: a(*)
2343  integer(kind=c_int), intent(in) :: fin
2344  integer(kind=c_int), intent(in) :: mb
2345  integer(kind=c_int), intent(in) :: nb
2346  integer(kind=c_int), intent(in) :: m
2347  integer(kind=c_int), intent(in) :: n
2348  info = plasma_zgetmi_c(m,n,c_loc(a),fin,mb,nb)
2349  end subroutine plasma_zgetmi
2350 
2351  subroutine plasma_zgebrd_tile(jobu,jobvt,A,D,E,U,VT,T,info)
2352  use iso_c_binding
2353  implicit none
2354  integer(kind=c_int), intent(out) :: info
2355  integer(kind=c_int), intent(in) :: jobu
2356  integer(kind=c_int), intent(in) :: jobvt
2357  real(kind=c_double), intent(out), target :: d(*)
2358  real(kind=c_double), intent(out), target :: e(*)
2359  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2360  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2361  type(c_ptr), value :: u ! Arg managed by PLASMA: opaque to Fortran
2362  type(c_ptr), value :: vt ! Arg managed by PLASMA: opaque to Fortran
2363  info = plasma_zgebrd_tile_c(jobu,jobvt,a,c_loc(d),c_loc(e),u,vt,t)
2364  end subroutine plasma_zgebrd_tile
2365 
2366  subroutine plasma_zgelqf_tile(A,T,info)
2367  use iso_c_binding
2368  implicit none
2369  integer(kind=c_int), intent(out) :: info
2370  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2371  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2372  info = plasma_zgelqf_tile_c(a,t)
2373  end subroutine plasma_zgelqf_tile
2374 
2375  subroutine plasma_zgelqs_tile(A,T,B,info)
2376  use iso_c_binding
2377  implicit none
2378  integer(kind=c_int), intent(out) :: info
2379  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2380  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2381  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2382  info = plasma_zgelqs_tile_c(a,t,b)
2383  end subroutine plasma_zgelqs_tile
2384 
2385  subroutine plasma_zgels_tile(trans,A,T,B,info)
2386  use iso_c_binding
2387  implicit none
2388  integer(kind=c_int), intent(out) :: info
2389  integer(kind=c_int), intent(in) :: trans
2390  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2391  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2392  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2393  info = plasma_zgels_tile_c(trans,a,t,b)
2394  end subroutine plasma_zgels_tile
2395 
2396  subroutine plasma_zgemm_tile(transA,transB,alpha,A,B,beta,C,info)
2397  use iso_c_binding
2398  implicit none
2399  integer(kind=c_int), intent(out) :: info
2400  integer(kind=c_int), intent(in) :: transa
2401  integer(kind=c_int), intent(in) :: transb
2402  complex(kind=c_double_complex), intent(in) :: alpha
2403  complex(kind=c_double_complex), intent(in) :: beta
2404  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2405  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2406  type(c_ptr), value :: c ! Arg managed by PLASMA: opaque to Fortran
2407  info = plasma_zgemm_tile_c(transa,transb,alpha,a,b,beta,c)
2408  end subroutine plasma_zgemm_tile
2409 
2410  subroutine plasma_zgeqrf_tile(A,T,info)
2411  use iso_c_binding
2412  implicit none
2413  integer(kind=c_int), intent(out) :: info
2414  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2415  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2416  info = plasma_zgeqrf_tile_c(a,t)
2417  end subroutine plasma_zgeqrf_tile
2418 
2419  subroutine plasma_zgeqrs_tile(A,T,B,info)
2420  use iso_c_binding
2421  implicit none
2422  integer(kind=c_int), intent(out) :: info
2423  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2424  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2425  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2426  info = plasma_zgeqrs_tile_c(a,t,b)
2427  end subroutine plasma_zgeqrs_tile
2428 
2429  subroutine plasma_zgesv_tile(A,IPIV,B,info)
2430  use iso_c_binding
2431  implicit none
2432  integer(kind=c_int), intent(out) :: info
2433  integer(kind=c_int), intent(out), target :: ipiv(*)
2434  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2435  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2436  info = plasma_zgesv_tile_c(a,c_loc(ipiv),b)
2437  end subroutine plasma_zgesv_tile
2438 
2439  subroutine plasma_zgesv_incpiv_tile(A,L,IPIV,B,info)
2440  use iso_c_binding
2441  implicit none
2442  integer(kind=c_int), intent(out) :: info
2443  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2444  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2445  type(c_ptr), value :: ipiv ! Arg managed by PLASMA: opaque to Fortran
2446  type(c_ptr), value :: l ! Arg managed by PLASMA: opaque to Fortran
2447  info = plasma_zgesv_incpiv_tile_c(a,l,ipiv,b)
2448  end subroutine plasma_zgesv_incpiv_tile
2449 
2450  subroutine plasma_zgesvd_tile(jobu,jobvt,A,S,U,VT,T,info)
2451  use iso_c_binding
2452  implicit none
2453  integer(kind=c_int), intent(out) :: info
2454  integer(kind=c_int), intent(in) :: jobu
2455  integer(kind=c_int), intent(in) :: jobvt
2456  real(kind=c_double), intent(out), target :: s(*)
2457  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2458  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2459  type(c_ptr), value :: u ! Arg managed by PLASMA: opaque to Fortran
2460  type(c_ptr), value :: vt ! Arg managed by PLASMA: opaque to Fortran
2461  info = plasma_zgesvd_tile_c(jobu,jobvt,a,c_loc(s),u,vt,t)
2462  end subroutine plasma_zgesvd_tile
2463 
2464  subroutine plasma_zgetrf_tile(A,IPIV,info)
2465  use iso_c_binding
2466  implicit none
2467  integer(kind=c_int), intent(out) :: info
2468  integer(kind=c_int), intent(out), target :: ipiv(*)
2469  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2470  info = plasma_zgetrf_tile_c(a,c_loc(ipiv))
2471  end subroutine plasma_zgetrf_tile
2472 
2473  subroutine plasma_zgetrf_incpiv_tile(A,L,IPIV,info)
2474  use iso_c_binding
2475  implicit none
2476  integer(kind=c_int), intent(out) :: info
2477  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2478  type(c_ptr), value :: ipiv ! Arg managed by PLASMA: opaque to Fortran
2479  type(c_ptr), value :: l ! Arg managed by PLASMA: opaque to Fortran
2480  info = plasma_zgetrf_incpiv_tile_c(a,l,ipiv)
2481  end subroutine plasma_zgetrf_incpiv_tile
2482 
2483  subroutine plasma_zgetrs_tile(trans,A,IPIV,B,info)
2484  use iso_c_binding
2485  implicit none
2486  integer(kind=c_int), intent(out) :: info
2487  integer(kind=c_int), intent(in) :: trans
2488  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2489  integer(kind=c_int), intent(in), target :: ipiv(*)
2490  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2491  info = plasma_zgetrs_tile_c(trans,a,c_loc(ipiv),b)
2492  end subroutine plasma_zgetrs_tile
2493 
2494  subroutine plasma_zgetrs_incpiv_tile(A,L,IPIV,B,info)
2495  use iso_c_binding
2496  implicit none
2497  integer(kind=c_int), intent(out) :: info
2498  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2499  type(c_ptr), value :: l ! Arg managed by PLASMA: opaque to Fortran
2500  type(c_ptr), value :: ipiv ! Arg managed by PLASMA: opaque to Fortran
2501  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2502  info = plasma_zgetrs_incpiv_tile_c(a,l,ipiv,b)
2503  end subroutine plasma_zgetrs_incpiv_tile
2504 
2505 #if defined(PRECISION_z) || defined(PRECISION_c)
2506  subroutine plasma_zhemm_tile(side,uplo,alpha,A,B,beta,C,info)
2507  use iso_c_binding
2508  implicit none
2509  integer(kind=c_int), intent(out) :: info
2510  integer(kind=c_int), intent(in) :: side
2511  integer(kind=c_int), intent(in) :: uplo
2512  complex(kind=c_double_complex), intent(in) :: alpha
2513  complex(kind=c_double_complex), intent(in) :: beta
2514  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2515  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2516  type(c_ptr), value :: c ! Arg managed by PLASMA: opaque to Fortran
2517  info = plasma_zhemm_tile_c(side,uplo,alpha,a,b,beta,c)
2518  end subroutine plasma_zhemm_tile
2519 
2520  subroutine plasma_zherk_tile(uplo,trans,alpha,A,beta,C,info)
2521  use iso_c_binding
2522  implicit none
2523  integer(kind=c_int), intent(out) :: info
2524  integer(kind=c_int), intent(in) :: trans
2525  integer(kind=c_int), intent(in) :: uplo
2526  real(kind=c_double), intent(in) :: alpha
2527  real(kind=c_double), intent(in) :: beta
2528  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2529  type(c_ptr), value :: c ! Arg managed by PLASMA: opaque to Fortran
2530  info = plasma_zherk_tile_c(uplo,trans,alpha,a,beta,c)
2531  end subroutine plasma_zherk_tile
2532 
2533  subroutine plasma_zher2k_tile(uplo,trans,alpha,A,B,beta,C,info)
2534  use iso_c_binding
2535  implicit none
2536  integer(kind=c_int), intent(out) :: info
2537  integer(kind=c_int), intent(in) :: trans
2538  integer(kind=c_int), intent(in) :: uplo
2539  complex(kind=c_double_complex), intent(in) :: alpha
2540  real(kind=c_double), intent(in) :: beta
2541  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2542  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2543  type(c_ptr), value :: c ! Arg managed by PLASMA: opaque to Fortran
2544  info = plasma_zher2k_tile_c(uplo,trans,alpha,a,b,beta,c)
2545  end subroutine plasma_zher2k_tile
2546 #endif
2547 
2548  subroutine plasma_zheev_tile(jobz,uplo,A,W,T,Q,info)
2549  use iso_c_binding
2550  implicit none
2551  integer(kind=c_int), intent(out) :: info
2552  integer(kind=c_int), intent(in) :: jobz
2553  integer(kind=c_int), intent(in) :: uplo
2554  real(kind=c_double), intent(out), target :: w(*)
2555  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2556  type(c_ptr), value :: q ! Arg managed by PLASMA: opaque to Fortran
2557  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2558  info = plasma_zheev_tile_c(jobz,uplo,a,c_loc(w),t,q)
2559  end subroutine plasma_zheev_tile
2560 
2561  subroutine plasma_zhegv_tile(itype,jobz,uplo,A,B,W,T,Q,info)
2562  use iso_c_binding
2563  implicit none
2564  integer(kind=c_int), intent(out) :: info
2565  integer(kind=c_int), intent(in) :: itype
2566  integer(kind=c_int), intent(in) :: jobz
2567  integer(kind=c_int), intent(in) :: uplo
2568  real(kind=c_double), intent(out), target :: w(*)
2569  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2570  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2571  type(c_ptr), value :: q ! Arg managed by PLASMA: opaque to Fortran
2572  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2573  info = plasma_zhegv_tile_c(itype,jobz,uplo,a,b,c_loc(w),t,q)
2574  end subroutine plasma_zhegv_tile
2575 
2576  subroutine plasma_zhegst_tile(itype,uplo,A,B,info)
2577  use iso_c_binding
2578  implicit none
2579  integer(kind=c_int), intent(out) :: info
2580  integer(kind=c_int), intent(in) :: itype
2581  integer(kind=c_int), intent(in) :: uplo
2582  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2583  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2584  info = plasma_zhegst_tile_c(itype,uplo,a,b)
2585  end subroutine plasma_zhegst_tile
2586 
2587  subroutine plasma_zhetrd_tile(jobz,uplo,A,D,E,T,Q,info)
2588  use iso_c_binding
2589  implicit none
2590  integer(kind=c_int), intent(out) :: info
2591  integer(kind=c_int), intent(in) :: jobz
2592  integer(kind=c_int), intent(in) :: uplo
2593  real(kind=c_double), intent(out), target :: d(*)
2594  real(kind=c_double), intent(out), target :: e(*)
2595  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2596  type(c_ptr), value :: q ! Arg managed by PLASMA: opaque to Fortran
2597  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2598  info = plasma_zhetrd_tile_c(jobz,uplo,a,c_loc(d),c_loc(e),t,q)
2599  end subroutine plasma_zhetrd_tile
2600 
2601  function plasma_zlange_tile(norm,A,work)
2602  use iso_c_binding
2603  implicit none
2604  real(kind=c_double) :: plasma_zlange_tile
2605  integer(kind=c_int), intent(in) :: norm
2606  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2607  real(kind=c_double), intent(inout), target :: work(*)
2609  end function plasma_zlange_tile
2610 
2611 #if defined(PRECISION_z) || defined(PRECISION_c)
2612  function plasma_zlanhe_tile(norm,uplo,A,work)
2613  use iso_c_binding
2614  implicit none
2615  real(kind=c_double) :: plasma_zlanhe_tile
2616  real(kind=c_double), intent(inout), target :: work(*)
2617  integer(kind=c_int), intent(in) :: norm
2618  integer(kind=c_int), intent(in) :: uplo
2619  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2621  end function plasma_zlanhe_tile
2622 #endif
2623 
2624  function plasma_zlansy_tile(norm,uplo,A,work)
2625  use iso_c_binding
2626  implicit none
2627  real(kind=c_double) :: plasma_zlansy_tile
2628  real(kind=c_double), intent(inout), target :: work(*)
2629  integer(kind=c_int), intent(in) :: norm
2630  integer(kind=c_int), intent(in) :: uplo
2631  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2633  end function plasma_zlansy_tile
2634 
2635  subroutine plasma_zlaswp_tile(A,K1,K2,IPIV,INCX,info)
2636  use iso_c_binding
2637  implicit none
2638  integer(kind=c_int), intent(out) :: info
2639  integer(kind=c_int), intent(in) :: incx
2640  integer(kind=c_int), intent(in) :: k1
2641  integer(kind=c_int), intent(in) :: k2
2642  integer(kind=c_int), intent(in), target :: ipiv(*)
2643  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2644  info = plasma_zlaswp_tile_c(a,k1,k2,c_loc(ipiv),incx)
2645  end subroutine plasma_zlaswp_tile
2646 
2647  subroutine plasma_zlauum_tile(uplo,A,info)
2648  use iso_c_binding
2649  implicit none
2650  integer(kind=c_int), intent(out) :: info
2651  integer(kind=c_int), intent(in) :: uplo
2652  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2653  info = plasma_zlauum_tile_c(uplo,a)
2654  end subroutine plasma_zlauum_tile
2655 
2656  subroutine plasma_zposv_tile(uplo,A,B,info)
2657  use iso_c_binding
2658  implicit none
2659  integer(kind=c_int), intent(out) :: info
2660  integer(kind=c_int), intent(in) :: uplo
2661  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2662  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2663  info = plasma_zposv_tile_c(uplo,a,b)
2664  end subroutine plasma_zposv_tile
2665 
2666  subroutine plasma_zpotrf_tile(uplo,A,info)
2667  use iso_c_binding
2668  implicit none
2669  integer(kind=c_int), intent(out) :: info
2670  integer(kind=c_int), intent(in) :: uplo
2671  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2672  info = plasma_zpotrf_tile_c(uplo,a)
2673  end subroutine plasma_zpotrf_tile
2674 
2675  subroutine plasma_zpotri_tile(uplo,A,info)
2676  use iso_c_binding
2677  implicit none
2678  integer(kind=c_int), intent(out) :: info
2679  integer(kind=c_int), intent(in) :: uplo
2680  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2681  info = plasma_zpotri_tile_c(uplo,a)
2682  end subroutine plasma_zpotri_tile
2683 
2684  subroutine plasma_zpotrs_tile(uplo,A,B,info)
2685  use iso_c_binding
2686  implicit none
2687  integer(kind=c_int), intent(out) :: info
2688  integer(kind=c_int), intent(in) :: uplo
2689  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2690  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2691  info = plasma_zpotrs_tile_c(uplo,a,b)
2692  end subroutine plasma_zpotrs_tile
2693 
2694  subroutine plasma_zsymm_tile(side,uplo,alpha,A,B,beta,C,info)
2695  use iso_c_binding
2696  implicit none
2697  integer(kind=c_int), intent(out) :: info
2698  integer(kind=c_int), intent(in) :: side
2699  integer(kind=c_int), intent(in) :: uplo
2700  complex(kind=c_double_complex), intent(in) :: alpha
2701  complex(kind=c_double_complex), intent(in) :: beta
2702  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2703  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2704  type(c_ptr), value :: c ! Arg managed by PLASMA: opaque to Fortran
2705  info = plasma_zsymm_tile_c(side,uplo,alpha,a,b,beta,c)
2706  end subroutine plasma_zsymm_tile
2707 
2708  subroutine plasma_zsyrk_tile(uplo,trans,alpha,A,beta,C,info)
2709  use iso_c_binding
2710  implicit none
2711  integer(kind=c_int), intent(out) :: info
2712  integer(kind=c_int), intent(in) :: trans
2713  integer(kind=c_int), intent(in) :: uplo
2714  complex(kind=c_double_complex), intent(in) :: alpha
2715  complex(kind=c_double_complex), intent(in) :: beta
2716  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2717  type(c_ptr), value :: c ! Arg managed by PLASMA: opaque to Fortran
2718  info = plasma_zsyrk_tile_c(uplo,trans,alpha,a,beta,c)
2719  end subroutine plasma_zsyrk_tile
2720 
2721  subroutine plasma_zsyr2k_tile(uplo,trans,alpha,A,B,beta,C,info)
2722  use iso_c_binding
2723  implicit none
2724  integer(kind=c_int), intent(out) :: info
2725  integer(kind=c_int), intent(in) :: trans
2726  integer(kind=c_int), intent(in) :: uplo
2727  complex(kind=c_double_complex), intent(in) :: alpha
2728  complex(kind=c_double_complex), intent(in) :: beta
2729  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2730  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2731  type(c_ptr), value :: c ! Arg managed by PLASMA: opaque to Fortran
2732  info = plasma_zsyr2k_tile_c(uplo,trans,alpha,a,b,beta,c)
2733  end subroutine plasma_zsyr2k_tile
2734 
2735  subroutine plasma_ztrmm_tile(side,uplo,transA,diag,alpha,A,B,info)
2736  use iso_c_binding
2737  implicit none
2738  integer(kind=c_int), intent(out) :: info
2739  integer(kind=c_int), intent(in) :: diag
2740  integer(kind=c_int), intent(in) :: side
2741  integer(kind=c_int), intent(in) :: transa
2742  integer(kind=c_int), intent(in) :: uplo
2743  complex(kind=c_double_complex), intent(in) :: alpha
2744  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2745  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2746  info = plasma_ztrmm_tile_c(side,uplo,transa,diag,alpha,a,b)
2747  end subroutine plasma_ztrmm_tile
2748 
2749  subroutine plasma_ztrsm_tile(side,uplo,transA,diag,alpha,A,B,info)
2750  use iso_c_binding
2751  implicit none
2752  integer(kind=c_int), intent(out) :: info
2753  integer(kind=c_int), intent(in) :: diag
2754  integer(kind=c_int), intent(in) :: side
2755  integer(kind=c_int), intent(in) :: transa
2756  integer(kind=c_int), intent(in) :: uplo
2757  complex(kind=c_double_complex), intent(in) :: alpha
2758  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2759  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2760  info = plasma_ztrsm_tile_c(side,uplo,transa,diag,alpha,a,b)
2761  end subroutine plasma_ztrsm_tile
2762 
2763  subroutine plasma_ztrsmpl_tile(A,L,IPIV,B,info)
2764  use iso_c_binding
2765  implicit none
2766  integer(kind=c_int), intent(out) :: info
2767  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2768  type(c_ptr), value :: l ! Arg managed by PLASMA: opaque to Fortran
2769  type(c_ptr), value :: ipiv ! Arg managed by PLASMA: opaque to Fortran
2770  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2771  info = plasma_ztrsmpl_tile_c(a,l,ipiv,b)
2772  end subroutine plasma_ztrsmpl_tile
2773 
2774  subroutine plasma_ztrtri_tile(uplo,diag,A,info)
2775  use iso_c_binding
2776  implicit none
2777  integer(kind=c_int), intent(out) :: info
2778  integer(kind=c_int), intent(in) :: diag
2779  integer(kind=c_int), intent(in) :: uplo
2780  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2781  info = plasma_ztrtri_tile_c(uplo,diag,a)
2782  end subroutine plasma_ztrtri_tile
2783 
2784  subroutine plasma_zunglq_tile(A,T,B,info)
2785  use iso_c_binding
2786  implicit none
2787  integer(kind=c_int), intent(out) :: info
2788  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2789  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2790  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2791  info = plasma_zunglq_tile_c(a,t,b)
2792  end subroutine plasma_zunglq_tile
2793 
2794  subroutine plasma_zungqr_tile(A,T,B,info)
2795  use iso_c_binding
2796  implicit none
2797  integer(kind=c_int), intent(out) :: info
2798  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2799  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2800  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2801  info = plasma_zungqr_tile_c(a,t,b)
2802  end subroutine plasma_zungqr_tile
2803 
2804  subroutine plasma_zunmlq_tile(side,trans,A,T,B,info)
2805  use iso_c_binding
2806  implicit none
2807  integer(kind=c_int), intent(out) :: info
2808  integer(kind=c_int), intent(in) :: side
2809  integer(kind=c_int), intent(in) :: trans
2810  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2811  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2812  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2813  info = plasma_zunmlq_tile_c(side,trans,a,t,b)
2814  end subroutine plasma_zunmlq_tile
2815 
2816  subroutine plasma_zunmqr_tile(side,trans,A,T,B,info)
2817  use iso_c_binding
2818  implicit none
2819  integer(kind=c_int), intent(out) :: info
2820  integer(kind=c_int), intent(in) :: side
2821  integer(kind=c_int), intent(in) :: trans
2822  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2823  type(c_ptr), value :: b ! Arg managed by PLASMA: opaque to Fortran
2824  type(c_ptr), value :: t ! Arg managed by PLASMA: opaque to Fortran
2825  info = plasma_zunmqr_tile_c(side,trans,a,t,b)
2826  end subroutine plasma_zunmqr_tile
2827 
2828  subroutine plasma_alloc_workspace_zgelqf(M,N,T,info)
2829  use iso_c_binding
2830  implicit none
2831  integer(kind=c_int), intent(out) :: info
2832  integer(kind=c_int), intent(in) :: m
2833  integer(kind=c_int), intent(in) :: n
2834  type(c_ptr) :: t ! T is **, so pass by reference
2835  info = plasma_alloc_workspace_zgelqf_c(m,n,t)
2836  end subroutine plasma_alloc_workspace_zgelqf
2837 
2838  subroutine plasma_alloc_workspace_zgels(M,N,T,info)
2839  use iso_c_binding
2840  implicit none
2841  integer(kind=c_int), intent(out) :: info
2842  integer(kind=c_int), intent(in) :: m
2843  integer(kind=c_int), intent(in) :: n
2844  type(c_ptr) :: t ! T is **, so pass by reference
2845  info = plasma_alloc_workspace_zgels_c(m,n,t)
2846  end subroutine plasma_alloc_workspace_zgels
2847 
2848  subroutine plasma_alloc_workspace_zgeqrf(M,N,T,info)
2849  use iso_c_binding
2850  implicit none
2851  integer(kind=c_int), intent(out) :: info
2852  integer(kind=c_int), intent(in) :: m
2853  integer(kind=c_int), intent(in) :: n
2854  type(c_ptr) :: t ! T is **, so pass by reference
2855  info = plasma_alloc_workspace_zgeqrf_c(m,n,t)
2856  end subroutine plasma_alloc_workspace_zgeqrf
2857 
2858  subroutine plasma_alloc_workspace_zgesv_incpiv(N,L,IPIV,info)
2859  use iso_c_binding
2860  implicit none
2861  integer(kind=c_int), intent(out) :: info
2862  integer(kind=c_int), intent(in) :: n
2863  type(c_ptr) :: ipiv ! IPIV is **, so pass by reference
2864  type(c_ptr) :: l ! L is **, so pass by reference
2865  info = plasma_alloc_workspace_zgesv_incpiv_c(n,l,ipiv)
2867 
2868  subroutine plasma_alloc_workspace_zgetrf_incpiv(M,N,L,IPIV,info)
2869  use iso_c_binding
2870  implicit none
2871  integer(kind=c_int), intent(out) :: info
2872  integer(kind=c_int), intent(in) :: m
2873  integer(kind=c_int), intent(in) :: n
2874  type(c_ptr) :: ipiv ! IPIV is **, so pass by reference
2875  type(c_ptr) :: l ! L is **, so pass by reference
2876  info = plasma_alloc_workspace_zgetrf_incpiv_c(m,n,l,ipiv)
2878 
2879  subroutine plasma_alloc_workspace_zgeev(N,descT,info)
2880  use iso_c_binding
2881  implicit none
2882  integer(kind=c_int), intent(out) :: info
2883  integer(kind=c_int), intent(in) :: n
2884  type(c_ptr) :: desct ! descT is **, so pass by reference
2885  info = plasma_alloc_workspace_zgeev_c(n,desct)
2886  end subroutine plasma_alloc_workspace_zgeev
2887 
2888  subroutine plasma_alloc_workspace_zgebrd(M,N,descT,info)
2889  use iso_c_binding
2890  implicit none
2891  integer(kind=c_int), intent(out) :: info
2892  integer(kind=c_int), intent(in) :: m
2893  integer(kind=c_int), intent(in) :: n
2894  type(c_ptr) :: desct ! descT is **, so pass by reference
2895  info = plasma_alloc_workspace_zgebrd_c(m,n,desct)
2896  end subroutine plasma_alloc_workspace_zgebrd
2897 
2898  subroutine plasma_alloc_workspace_zgesvd(M,N,descT,info)
2899  use iso_c_binding
2900  implicit none
2901  integer(kind=c_int), intent(out) :: info
2902  integer(kind=c_int), intent(in) :: m
2903  integer(kind=c_int), intent(in) :: n
2904  type(c_ptr) :: desct ! descT is **, so pass by reference
2905  info = plasma_alloc_workspace_zgesvd_c(m,n,desct)
2906  end subroutine plasma_alloc_workspace_zgesvd
2907 
2908  subroutine plasma_alloc_workspace_zheev(M,N,descT,info)
2909  use iso_c_binding
2910  implicit none
2911  integer(kind=c_int), intent(out) :: info
2912  integer(kind=c_int), intent(in) :: m
2913  integer(kind=c_int), intent(in) :: n
2914  type(c_ptr) :: desct ! descT is **, so pass by reference
2915  info = plasma_alloc_workspace_zheev_c(m,n,desct)
2916  end subroutine plasma_alloc_workspace_zheev
2917 
2918  subroutine plasma_alloc_workspace_zhegv(M,N,descT,info)
2919  use iso_c_binding
2920  implicit none
2921  integer(kind=c_int), intent(out) :: info
2922  integer(kind=c_int), intent(in) :: m
2923  integer(kind=c_int), intent(in) :: n
2924  type(c_ptr) :: desct ! descT is **, so pass by reference
2925  info = plasma_alloc_workspace_zhegv_c(m,n,desct)
2926  end subroutine plasma_alloc_workspace_zhegv
2927 
2928  subroutine plasma_alloc_workspace_zhetrd(M,N,descT,info)
2929  use iso_c_binding
2930  implicit none
2931  integer(kind=c_int), intent(out) :: info
2932  integer(kind=c_int), intent(in) :: m
2933  integer(kind=c_int), intent(in) :: n
2934  type(c_ptr) :: desct ! descT is **, so pass by reference
2935  info = plasma_alloc_workspace_zhetrd_c(m,n,desct)
2936  end subroutine plasma_alloc_workspace_zhetrd
2937 
2938  subroutine plasma_alloc_workspace_zgelqf_tile(M,N,descT,info)
2939  use iso_c_binding
2940  implicit none
2941  integer(kind=c_int), intent(out) :: info
2942  integer(kind=c_int), intent(in) :: m
2943  integer(kind=c_int), intent(in) :: n
2944  type(c_ptr) :: desct ! descT is **, so pass by reference
2945  info = plasma_alloc_workspace_zgelqf_tile_c(m,n,desct)
2946  end subroutine plasma_alloc_workspace_zgelqf_tile
2947 
2948  subroutine plasma_alloc_workspace_zgels_tile(M,N,descT,info)
2949  use iso_c_binding
2950  implicit none
2951  integer(kind=c_int), intent(out) :: info
2952  integer(kind=c_int), intent(in) :: m
2953  integer(kind=c_int), intent(in) :: n
2954  type(c_ptr) :: desct ! descT is **, so pass by reference
2955  info = plasma_alloc_workspace_zgels_tile_c(m,n,desct)
2956  end subroutine plasma_alloc_workspace_zgels_tile
2957 
2958  subroutine plasma_alloc_workspace_zgeqrf_tile(M,N,descT,info)
2959  use iso_c_binding
2960  implicit none
2961  integer(kind=c_int), intent(out) :: info
2962  integer(kind=c_int), intent(in) :: m
2963  integer(kind=c_int), intent(in) :: n
2964  type(c_ptr) :: desct ! descT is **, so pass by reference
2965  info = plasma_alloc_workspace_zgeqrf_tile_c(m,n,desct)
2966  end subroutine plasma_alloc_workspace_zgeqrf_tile
2967 
2968  subroutine plasma_alloc_workspace_zgesv_incpiv_tile(N,descL,IPIV,info)
2969  use iso_c_binding
2970  implicit none
2971  integer(kind=c_int), intent(out) :: info
2972  integer(kind=c_int), intent(in) :: n
2973  type(c_ptr) :: ipiv ! IPIV is **, so pass by reference
2974  type(c_ptr) :: descl ! descL is **, so pass by reference
2975  info = plasma_alloc_workspace_zgesv_incpiv_tile_c(n,descl,ipiv)
2977 
2978  subroutine plasma_alloc_workspace_zgetrf_incpiv_tile(N,descL,IPIV,info)
2979  use iso_c_binding
2980  implicit none
2981  integer(kind=c_int), intent(out) :: info
2982  integer(kind=c_int), intent(in) :: n
2983  type(c_ptr) :: ipiv ! IPIV is **, so pass by reference
2984  type(c_ptr) :: descl ! descL is **, so pass by reference
2985  info = plasma_alloc_workspace_zgetrf_incpiv_tile_c(n,descl,ipiv)
2987 
2988  subroutine plasma_zlapack_to_tile(Af77,LDA,A,info)
2989  use iso_c_binding
2990  implicit none
2991  integer(kind=c_int), intent(out) :: info
2992  integer(kind=c_int), intent(in) :: lda
2993  complex(kind=c_double_complex), intent(in), target :: af77(lda,*)
2994  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
2995  info = plasma_zlapack_to_tile_c(c_loc(af77),lda,a)
2996  end subroutine plasma_zlapack_to_tile
2997 
2998  subroutine plasma_ztile_to_lapack(A,Af77,LDA,info)
2999  use iso_c_binding
3000  implicit none
3001  integer(kind=c_int), intent(out) :: info
3002  integer(kind=c_int), intent(in) :: lda
3003  complex(kind=c_double_complex), intent(out), target :: af77(lda,*)
3004  type(c_ptr), value :: a ! Arg managed by PLASMA: opaque to Fortran
3005  info = plasma_ztile_to_lapack_c(a,c_loc(af77),lda)
3006  end subroutine plasma_ztile_to_lapack
3007 
3008 end module plasma_z