fml  0.1-0
Fused Matrix Library
scalapack_prototypes.h
1 // This file is part of fml which is released under the Boost Software
2 // License, Version 1.0. See accompanying file LICENSE or copy at
3 // https://www.boost.org/LICENSE_1_0.txt
4 
5 #ifndef FML_MPI_LINALG_INTERNALS_SCALAPACK_PROTOTYPES_H
6 #define FML_MPI_LINALG_INTERNALS_SCALAPACK_PROTOTYPES_H
7 #pragma once
8 
9 
10 #ifndef restrict
11 #define restrict __restrict__
12 #endif
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18 
19 extern void psgemm_(const char *transa, const char *transb, const int *m,
20  const int *n, const int *k, const float *restrict alpha,
21  const float *restrict a, const int *ia, const int *ja, const int *desca,
22  const float *restrict b, const int *ib, const int *jb, const int *descb,
23  const float *restrict beta, float *restrict c, const int *ic, const int *jc,
24  const int *descc);
25 
26 extern void pdgemm_(const char *transa, const char *transb, const int *m,
27  const int *n, const int *k, const double *restrict alpha,
28  const double *restrict a, const int *ia, const int *ja, const int *desca,
29  const double *restrict b, const int *ib, const int *jb, const int *descb,
30  const double *restrict beta, double *restrict c, const int *ic, const int *jc,
31  const int *descc);
32 
33 
34 
35 extern void pssyrk_(const char *uplo, const char *trans, const int *n,
36  const int *k, const float *restrict alpha, const float *restrict a,
37  const int *ia, const int *ja, const int *desca, const float *restrict beta,
38  float *restrict c, const int *ic, const int *jc, const int *descc);
39 
40 extern void pdsyrk_(const char *uplo, const char *trans, const int *n,
41  const int *k, const double *restrict alpha, const double *restrict a,
42  const int *ia, const int *ja, const int *desca, const double *restrict beta,
43  double *restrict c, const int *ic, const int *jc, const int *descc);
44 
45 
46 
47 extern void pstran_(const int *restrict m, const int *restrict n,
48  const float *restrict alpha, const float *restrict a, const int *ia,
49  const int *ja, const int *restrict desca, const float *restrict beta,
50  float *restrict c, const int *ic, const int *jc, const int *restrict descc);
51 
52 extern void pdtran_(const int *restrict m, const int *restrict n,
53  const double *restrict alpha, const double *restrict a, const int *ia,
54  const int *ja, const int *restrict desca, const double *restrict beta,
55  double *restrict c, const int *ic, const int *jc, const int *restrict descc);
56 
57 
58 
59 extern void psgetrf_(const int *m, const int *n, float *restrict a,
60  const int *ia, const int *ja, const int *desca, int *restrict ipiv,
61  int *info);
62 
63 extern void pdgetrf_(const int *m, const int *n, double *restrict a,
64  const int *ia, const int *ja, const int *desca, int *restrict ipiv,
65  int *info);
66 
67 
68 
69 extern void psgesvd_(const char *restrict jobu, const char *restrict jobvt,
70  const int *restrict m, const int *restrict n, float *restrict a,
71  const int *ia, const int *ja, const int *restrict desca,
72  float *restrict s, float *restrict u, const int *restrict iu,
73  const int *restrict ju, const int *restrict descu, float *restrict vt,
74  const int *restrict ivt, const int *restrict jvt, const int *restrict descvt,
75  float *restrict work, const int *restrict lwork, int *restrict info);
76 
77 extern void pdgesvd_(const char *restrict jobu, const char *restrict jobvt,
78  const int *restrict m, const int *restrict n, double *restrict a,
79  const int *ia, const int *ja, const int *restrict desca,
80  double *restrict s, double *restrict u, const int *restrict iu,
81  const int *restrict ju, const int *restrict descu, double *restrict vt,
82  const int *restrict ivt, const int *restrict jvt, const int *restrict descvt,
83  double *restrict work, const int *restrict lwork, int *restrict info);
84 
85 
86 
87 extern void pssyevr_(const char *restrict jobz, const char *restrict range,
88  const char *restrict uplo, const int *n, float *restrict a, const int *ia,
89  const int *ja, const int *restrict desca, const float *vl, const float *vu,
90  const int *il, const int *iu, int *m, int *nz, float *w, float *z,
91  const int *iz, const int *jz, const int *restrict descz,
92  float *restrict work, const int *restrict lwork, int *restrict iwork,
93  const int *restrict liwork, int *restrict info);
94 
95 extern void pdsyevr_(const char *restrict jobz, const char *restrict range,
96  const char *restrict uplo, const int *n, double *restrict a, const int *ia,
97  const int *ja, const int *restrict desca, const double *vl, const double *vu,
98  const int *il, const int *iu, int *m, int *nz, double *w, double *z,
99  const int *iz, const int *jz, const int *restrict descz,
100  double *restrict work, const int *restrict lwork, int *restrict iwork,
101  const int *restrict liwork, int *restrict info);
102 
103 
104 
105 extern void psgetri_(const int *n, float *restrict a, const int *ia,
106  const int *ja, const int *restrict desca, int *restrict ipiv,
107  float *restrict work, const int *restrict lwork, int *restrict iwork,
108  const int *restrict liwork, int *restrict info);
109 
110 extern void pdgetri_(const int *n, double *restrict a, const int *ia,
111  const int *ja, const int *restrict desca, int *restrict ipiv,
112  double *restrict work, const int *restrict lwork, int *restrict iwork,
113  const int *restrict liwork, int *restrict info);
114 
115 
116 
117 extern void psgesv_(const int *n, const int *nrhs, float *restrict a,
118  const int *ia, const int *ja, const int *restrict desca, int *restrict ipvt,
119  float *restrict b, const int *ib, const int *jb, const int *restrict descb,
120  int *info);
121 
122 extern void pdgesv_(const int *n, const int *nrhs, double *restrict a,
123  const int *ia, const int *ja, const int *restrict desca, int *restrict ipvt,
124  double *restrict b, const int *ib, const int *jb, const int *restrict descb,
125  int *info);
126 
127 
128 
129 extern void pslacpy_(const char *uplo, const int *m, const int *n,
130  const float *restrict a, const int *ia, const int *ja, const int *desca,
131  float *restrict b, const int *ib, const int *jb, const int *descb);
132 
133 extern void pdlacpy_(const char *uplo, const int *m, const int *n,
134  const double *restrict a, const int *ia, const int *ja, const int *desca,
135  double *restrict b, const int *ib, const int *jb, const int *descb);
136 
137 
138 
139 extern void psgeqpf_(const int *m, const int *n, float *restrict a,
140  const int *ia, const int *ja, const int *desca, int *restrict ipiv,
141  float *restrict tau, float *restrict work, const int *lwork,
142  int *info);
143 
144 extern void pdgeqpf_(const int *m, const int *n, double *restrict a,
145  const int *ia, const int *ja, const int *desca, int *restrict ipiv,
146  double *restrict tau, double *restrict work, const int *lwork,
147  int *info);
148 
149 
150 
151 extern void psgeqrf_(const int *m, const int *n, float *restrict a,
152  const int *ia, const int *ja, const int *desca, float *restrict tau,
153  float *restrict work, const int *lwork, int *info);
154 
155 extern void pdgeqrf_(const int *m, const int *n, double *restrict a,
156  const int *ia, const int *ja, const int *desca, double *restrict tau,
157  double *restrict work, const int *lwork, int *info);
158 
159 
160 
161 extern void psormqr_(const char *side, const char *trans, const int *m,
162  const int *n, const int *k, const float *restrict a, const int *ia,
163  const int *ja, const int *desca, float *restrict tau, float *restrict c,
164  const int *ic, const int *jc, const int *descc, float *restrict work,
165  const int *lwork, int *info);
166 
167 extern void pdormqr_(const char *side, const char *trans, const int *m,
168  const int *n, const int *k, const double *restrict a, const int *ia,
169  const int *ja, const int *desca, double *restrict tau, double *restrict c,
170  const int *ic, const int *jc, const int *descc, double *restrict work,
171  const int *lwork, int *info);
172 
173 
174 
175 extern void psorgqr_(const int *m, const int *n, const int *k,
176  float *restrict a, const int *ia, const int *ja, const int *desca,
177  float *restrict tau, float *restrict work, const int *lwork, int *info);
178 
179 extern void pdorgqr_(const int *m, const int *n, const int *k,
180  double *restrict a, const int *ia, const int *ja, const int *desca,
181  double *restrict tau, double *restrict work, const int *lwork, int *info);
182 
183 
184 
185 extern void psorglq_(const int *m, const int *n, const int *k,
186  float *restrict a, const int *ia, const int *ja, const int *desca,
187  float *restrict tau, float *restrict work, const int *lwork, int *info);
188 
189 extern void pdorglq_(const int *m, const int *n, const int *k,
190  double *restrict a, const int *ia, const int *ja, const int *desca,
191  double *restrict tau, double *restrict work, const int *lwork, int *info);
192 
193 
194 
195 extern void psgelqf_(const int *m, const int *n, float *restrict a,
196  const int *ia, const int *ja, const int *desca, float *restrict tau,
197  float *restrict work, const int *lwork, int *info);
198 
199 extern void pdgelqf_(const int *m, const int *n, double *restrict a,
200  const int *ia, const int *ja, const int *desca, double *restrict tau,
201  double *restrict work, const int *lwork, int *info);
202 
203 
204 
205 extern void psormlq_(const char *side, const char *trans, const int *m,
206  const int *n, const int *k, const float *restrict a, const int *ia,
207  const int *ja, const int *desca, float *restrict tau, float *restrict c,
208  const int *ic, const int *jc, const int *descc, float *restrict work,
209  const int *lwork, int *info);
210 
211 extern void pdormlq_(const char *side, const char *trans, const int *m,
212  const int *n, const int *k, const double *restrict a, const int *ia,
213  const int *ja, const int *desca, double *restrict tau, double *restrict c,
214  const int *ic, const int *jc, const int *descc, double *restrict work,
215  const int *lwork, int *info);
216 
217 
218 
219 extern void pspotrf_(const char *uplo, const int *n, float *const restrict a,
220  const int *ia, const int *ja, const int *desca, int *info);
221 
222 extern void pdpotrf_(const char *uplo, const int *n, double *const restrict a,
223  const int *ia, const int *ja, const int *desca, int *info);
224 
225 
226 
227 extern void pslassq_(const int *n, const float *const restrict x,
228  const int *ix, const int *jx, const int *descx, const int *incx, float *scale,
229  float *sumsq);
230 
231 extern void pdlassq_(const int *n, const double *const restrict x,
232  const int *ix, const int *jx, const int *descx, const int *incx, double *scale,
233  double *sumsq);
234 
235 
236 
237 extern void psgecon_(const char *norm, const int *n,
238  const float *const restrict A, const int *ia, const int *ja,
239  const int *desca, const float *anorm, float *rcond, float *work,
240  const int *lwork, int *iwork, const int *liwork, int *info);
241 
242 extern void pdgecon_(const char *norm, const int *n,
243  const double *const restrict A, const int *ia, const int *ja,
244  const int *desca, const double *anorm, double *rcond, double *work,
245  const int *lwork, int *iwork, const int *liwork, int *info);
246 
247 
248 
249 extern void pstrcon_(const char *norm, const char *uplo, const char *diag,
250  const int *n, const float *const restrict A, const int *ia, const int *ja,
251  const int *desca, float *rcond, float *work, const int *lwork, int *iwork,
252  const int *liwork, int *info);
253 
254 extern void pdtrcon_(const char *norm, const char *uplo, const char *diag,
255  const int *n, const double *const restrict A, const int *ia, const int *ja,
256  const int *desca, double *rcond, double *work, const int *lwork, int *iwork,
257  const int *liwork, int *info);
258 
259 
260 
261 extern void pstrtri_(const char *uplo, const char *diag, const int *n,
262  float *A, const int *ia, const int *ja, const int *desca, int *info);
263 
264 extern void pdtrtri_(const char *uplo, const char *diag, const int *n,
265  double *A, const int *ia, const int *ja, const int *desca, int *info);
266 
267 
268 #ifdef __cplusplus
269 }
270 #endif
271 
272 
273 #endif