SIRIUS 7.5.0
Electronic structure library and applications
scalapack.h
Go to the documentation of this file.
1/** \file scalapack.h
2 *
3 * \brief Interface to some ScaLAPACK functions.
4 */
5
6#ifndef __SCALAPACK_H__
7#define __SCALAPACK_H__
8
9#include "blas_lapack.h"
10
11extern "C" {
12
13ftn_int FORTRAN(pjlaenv)(ftn_int* ICTXT,
14 ftn_int* ISPEC,
15 ftn_char NAME,
16 ftn_char OPTS,
17 ftn_int* N1,
18 ftn_int* N2,
19 ftn_int* N3,
20 ftn_int* N4,
21 ftn_len NAME_len,
22 ftn_len OPTS_len);
23
24void FORTRAN(psgetrf)(ftn_int* M,
25 ftn_int* N,
26 ftn_single* A,
27 ftn_int* IA,
28 ftn_int* JA,
29 ftn_int* DESCA,
30 ftn_int* IPIV,
31 ftn_int* INFO);
32
33void FORTRAN(pdgetrf)(ftn_int* M,
34 ftn_int* N,
35 ftn_double* A,
36 ftn_int* IA,
37 ftn_int* JA,
38 ftn_int* DESCA,
39 ftn_int* IPIV,
40 ftn_int* INFO);
41
42void FORTRAN(pcgetrf)(ftn_int* M,
43 ftn_int* N,
44 ftn_complex* A,
45 ftn_int* IA,
46 ftn_int* JA,
47 ftn_int* DESCA,
48 ftn_int* IPIV,
49 ftn_int* INFO);
50
51void FORTRAN(pzgetrf)(ftn_int* M,
52 ftn_int* N,
53 ftn_double_complex* A,
54 ftn_int* IA,
55 ftn_int* JA,
56 ftn_int* DESCA,
57 ftn_int* IPIV,
58 ftn_int* INFO);
59
60void FORTRAN(psgetri)(ftn_int* N,
61 ftn_single* A,
62 ftn_int* IA,
63 ftn_int* JA,
64 ftn_int* DESCA,
65 ftn_int* IPIV,
66 ftn_single* WORK,
67 ftn_int* LWORK,
68 ftn_int* IWORK,
69 ftn_int* LIWORK,
70 ftn_int* INFO);
71
72void FORTRAN(pdgetri)(ftn_int* N,
73 ftn_double* A,
74 ftn_int* IA,
75 ftn_int* JA,
76 ftn_int* DESCA,
77 ftn_int* IPIV,
78 ftn_double* WORK,
79 ftn_int* LWORK,
80 ftn_int* IWORK,
81 ftn_int* LIWORK,
82 ftn_int* INFO);
83
84void FORTRAN(pcgetri)(ftn_int* N,
85 ftn_complex* A,
86 ftn_int* IA,
87 ftn_int* JA,
88 ftn_int* DESCA,
89 ftn_int* IPIV,
90 ftn_complex* WORK,
91 ftn_int* LWORK,
92 ftn_int* IWORK,
93 ftn_int* LIWORK,
94 ftn_int* INFO);
95
96void FORTRAN(pzgetri)(ftn_int* N,
97 ftn_double_complex* A,
98 ftn_int* IA,
99 ftn_int* JA,
100 ftn_int* DESCA,
101 ftn_int* IPIV,
102 ftn_double_complex* WORK,
103 ftn_int* LWORK,
104 ftn_int* IWORK,
105 ftn_int* LIWORK,
106 ftn_int* INFO);
107
108void FORTRAN(pssygvx)(ftn_int* IBTYPE,
109 ftn_char JOBZ,
110 ftn_char RANGE,
111 ftn_char UPLO,
112 ftn_int* N,
113 ftn_single* A,
114 ftn_int* IA,
115 ftn_int* JA,
116 ftn_int* DESCA,
117 ftn_single* B,
118 ftn_int* IB,
119 ftn_int* JB,
120 ftn_int* DESCB,
121 ftn_single* VL,
122 ftn_single* VU,
123 ftn_int* IL,
124 ftn_int* IU,
125 ftn_double const* ABSTOL,
126 ftn_int* M,
127 ftn_int* NZ,
128 ftn_single* W,
129 ftn_double const* ORFAC,
130 ftn_single* Z,
131 ftn_int* IZ,
132 ftn_int* JZ,
133 ftn_int* DESCZ,
134 ftn_single* WORK,
135 ftn_int* LWORK,
136 ftn_int* IWORK,
137 ftn_int* LIWORK,
138 ftn_int* IFAIL,
139 ftn_int* ICLUSTR,
140 ftn_single* GAP,
141 ftn_int* INFO,
142 ftn_len JOBZ_len,
143 ftn_len RANGE_len,
144 ftn_len UPLO_len);
145
146void FORTRAN(pdsygvx)(ftn_int* IBTYPE,
147 ftn_char JOBZ,
148 ftn_char RANGE,
149 ftn_char UPLO,
150 ftn_int* N,
151 ftn_double* A,
152 ftn_int* IA,
153 ftn_int* JA,
154 ftn_int* DESCA,
155 ftn_double* B,
156 ftn_int* IB,
157 ftn_int* JB,
158 ftn_int* DESCB,
159 ftn_double* VL,
160 ftn_double* VU,
161 ftn_int* IL,
162 ftn_int* IU,
163 ftn_double const* ABSTOL,
164 ftn_int* M,
165 ftn_int* NZ,
166 ftn_double* W,
167 ftn_double const* ORFAC,
168 ftn_double* Z,
169 ftn_int* IZ,
170 ftn_int* JZ,
171 ftn_int* DESCZ,
172 ftn_double* WORK,
173 ftn_int* LWORK,
174 ftn_int* IWORK,
175 ftn_int* LIWORK,
176 ftn_int* IFAIL,
177 ftn_int* ICLUSTR,
178 ftn_double* GAP,
179 ftn_int* INFO,
180 ftn_len JOBZ_len,
181 ftn_len RANGE_len,
182 ftn_len UPLO_len);
183
184void FORTRAN(pchegvx)(ftn_int* IBTYPE,
185 ftn_char JOBZ,
186 ftn_char RANGE,
187 ftn_char UPLO,
188 ftn_int* N,
189 ftn_complex* A,
190 ftn_int* IA,
191 ftn_int* JA,
192 ftn_int* DESCA,
193 ftn_complex* B,
194 ftn_int* IB,
195 ftn_int* JB,
196 ftn_int* DESCB,
197 ftn_single* VL,
198 ftn_single* VU,
199 ftn_int* IL,
200 ftn_int* IU,
201 ftn_double const* ABSTOL,
202 ftn_int* M,
203 ftn_int* NZ,
204 ftn_single* W,
205 ftn_double const* ORFAC,
206 ftn_complex* Z,
207 ftn_int* IZ,
208 ftn_int* JZ,
209 ftn_int* DESCZ,
210 ftn_complex* WORK,
211 ftn_int* LWORK,
212 ftn_single* RWORK,
213 ftn_int* LRWORK,
214 ftn_int* IWORK,
215 ftn_int* LIWORK,
216 ftn_int* IFAIL,
217 ftn_int* ICLUSTR,
218 ftn_single* GAP,
219 ftn_int* INFO,
220 ftn_len JOBZ_len,
221 ftn_len RANGE_len,
222 ftn_len UPLO_len);
223
224void FORTRAN(pzhegvx)(ftn_int* IBTYPE,
225 ftn_char JOBZ,
226 ftn_char RANGE,
227 ftn_char UPLO,
228 ftn_int* N,
229 ftn_double_complex* A,
230 ftn_int* IA,
231 ftn_int* JA,
232 ftn_int* DESCA,
233 ftn_double_complex* B,
234 ftn_int* IB,
235 ftn_int* JB,
236 ftn_int* DESCB,
237 ftn_double* VL,
238 ftn_double* VU,
239 ftn_int* IL,
240 ftn_int* IU,
241 ftn_double const* ABSTOL,
242 ftn_int* M,
243 ftn_int* NZ,
244 ftn_double* W,
245 ftn_double const* ORFAC,
246 ftn_double_complex* Z,
247 ftn_int* IZ,
248 ftn_int* JZ,
249 ftn_int* DESCZ,
250 ftn_double_complex* WORK,
251 ftn_int* LWORK,
252 ftn_double* RWORK,
253 ftn_int* LRWORK,
254 ftn_int* IWORK,
255 ftn_int* LIWORK,
256 ftn_int* IFAIL,
257 ftn_int* ICLUSTR,
258 ftn_double* GAP,
259 ftn_int* INFO,
260 ftn_len JOBZ_len,
261 ftn_len RANGE_len,
262 ftn_len UPLO_len);
263
264void FORTRAN(pssyevx)(ftn_char JOBZ,
265 ftn_char RANGE,
266 ftn_char UPLO,
267 ftn_int* N,
268 ftn_single* A,
269 ftn_int* IA,
270 ftn_int* JA,
271 ftn_int* DESCA,
272 ftn_single* VL,
273 ftn_single* VU,
274 ftn_int* IL,
275 ftn_int* IU,
276 ftn_double const* ABSTOL,
277 ftn_int* M,
278 ftn_int* NZ,
279 ftn_single* W,
280 ftn_double const* ORFAC,
281 ftn_single* Z,
282 ftn_int* IZ,
283 ftn_int* JZ,
284 ftn_int* DESCZ,
285 ftn_single* WORK,
286 ftn_int* LWORK,
287 ftn_int* IWORK,
288 ftn_int* LIWORK,
289 ftn_int* IFAIL,
290 ftn_int* ICLUSTR,
291 ftn_single* GAP,
292 ftn_int* INFO,
293 ftn_len JOBZ_len,
294 ftn_len RANGE_len,
295 ftn_len UPLO_len);
296
297void FORTRAN(pdsyevx)(ftn_char JOBZ,
298 ftn_char RANGE,
299 ftn_char UPLO,
300 ftn_int* N,
301 ftn_double* A,
302 ftn_int* IA,
303 ftn_int* JA,
304 ftn_int* DESCA,
305 ftn_double* VL,
306 ftn_double* VU,
307 ftn_int* IL,
308 ftn_int* IU,
309 ftn_double const* ABSTOL,
310 ftn_int* M,
311 ftn_int* NZ,
312 ftn_double* W,
313 ftn_double const* ORFAC,
314 ftn_double* Z,
315 ftn_int* IZ,
316 ftn_int* JZ,
317 ftn_int* DESCZ,
318 ftn_double* WORK,
319 ftn_int* LWORK,
320 ftn_int* IWORK,
321 ftn_int* LIWORK,
322 ftn_int* IFAIL,
323 ftn_int* ICLUSTR,
324 ftn_double* GAP,
325 ftn_int* INFO,
326 ftn_len JOBZ_len,
327 ftn_len RANGE_len,
328 ftn_len UPLO_len);
329
330void FORTRAN(pcheevx)(ftn_char JOBZ,
331 ftn_char RANGE,
332 ftn_char UPLO,
333 ftn_int* N,
334 ftn_complex* A,
335 ftn_int* IA,
336 ftn_int* JA,
337 ftn_int* DESCA,
338 ftn_single* VL,
339 ftn_single* VU,
340 ftn_int* IL,
341 ftn_int* IU,
342 ftn_double const* ABSTOL,
343 ftn_int* M,
344 ftn_int* NZ,
345 ftn_single* W,
346 ftn_double const* ORFAC,
347 ftn_complex* Z,
348 ftn_int* IZ,
349 ftn_int* JZ,
350 ftn_int* DESCZ,
351 ftn_complex* WORK,
352 ftn_int* LWORK,
353 ftn_single* RWORK,
354 ftn_int* LRWORK,
355 ftn_int* IWORK,
356 ftn_int* LIWORK,
357 ftn_int* IFAIL,
358 ftn_int* ICLUSTR,
359 ftn_single* GAP,
360 ftn_int* INFO,
361 ftn_len JOBZ_len,
362 ftn_len RANGE_len,
363 ftn_len UPLO_len);
364
365void FORTRAN(pzheevx)(ftn_char JOBZ,
366 ftn_char RANGE,
367 ftn_char UPLO,
368 ftn_int* N,
369 ftn_double_complex* A,
370 ftn_int* IA,
371 ftn_int* JA,
372 ftn_int* DESCA,
373 ftn_double* VL,
374 ftn_double* VU,
375 ftn_int* IL,
376 ftn_int* IU,
377 ftn_double const* ABSTOL,
378 ftn_int* M,
379 ftn_int* NZ,
380 ftn_double* W,
381 ftn_double const* ORFAC,
382 ftn_double_complex* Z,
383 ftn_int* IZ,
384 ftn_int* JZ,
385 ftn_int* DESCZ,
386 ftn_double_complex* WORK,
387 ftn_int* LWORK,
388 ftn_double* RWORK,
389 ftn_int* LRWORK,
390 ftn_int* IWORK,
391 ftn_int* LIWORK,
392 ftn_int* IFAIL,
393 ftn_int* ICLUSTR,
394 ftn_double* GAP,
395 ftn_int* INFO,
396 ftn_len JOBZ_len,
397 ftn_len RANGE_len,
398 ftn_len UPLO_len);
399
400void FORTRAN(pssyevd)(ftn_char JOBZ,
401 ftn_char UPLO,
402 ftn_int* N,
403 ftn_single* A,
404 ftn_int* IA,
405 ftn_int* JA,
406 ftn_int* DESCA,
407 ftn_single* W,
408 ftn_single* Z,
409 ftn_int* IZ,
410 ftn_int* JZ,
411 ftn_int* DESCZ,
412 ftn_single* WORK,
413 ftn_int* LWORK,
414 ftn_int* IWORK,
415 ftn_int* LIWORK,
416 ftn_int* INFO,
417 ftn_len JOBZ_len,
418 ftn_len UPLO_len);
419
420void FORTRAN(pdsyevd)(ftn_char JOBZ,
421 ftn_char UPLO,
422 ftn_int* N,
423 ftn_double* A,
424 ftn_int* IA,
425 ftn_int* JA,
426 ftn_int* DESCA,
427 ftn_double* W,
428 ftn_double* Z,
429 ftn_int* IZ,
430 ftn_int* JZ,
431 ftn_int* DESCZ,
432 ftn_double* WORK,
433 ftn_int* LWORK,
434 ftn_int* IWORK,
435 ftn_int* LIWORK,
436 ftn_int* INFO,
437 ftn_len JOBZ_len,
438 ftn_len UPLO_len);
439
440void FORTRAN(pcheevd)(ftn_char JOBZ,
441 ftn_char UPLO,
442 ftn_int* N,
443 ftn_complex* A,
444 ftn_int* IA,
445 ftn_int* JA,
446 ftn_int* DESCA,
447 ftn_single* W,
448 ftn_complex* Z,
449 ftn_int* IZ,
450 ftn_int* JZ,
451 ftn_int* DESCZ,
452 ftn_complex* WORK,
453 ftn_int* LWORK,
454 ftn_single* RWORK,
455 ftn_int* LRWORK,
456 ftn_int* IWORK,
457 ftn_int* LIWORK,
458 ftn_int* INFO,
459 ftn_len JOBZ_len,
460 ftn_len UPLO_len);
461
462void FORTRAN(pzheevd)(ftn_char JOBZ,
463 ftn_char UPLO,
464 ftn_int* N,
465 ftn_double_complex* A,
466 ftn_int* IA,
467 ftn_int* JA,
468 ftn_int* DESCA,
469 ftn_double* W,
470 ftn_double_complex* Z,
471 ftn_int* IZ,
472 ftn_int* JZ,
473 ftn_int* DESCZ,
474 ftn_double_complex* WORK,
475 ftn_int* LWORK,
476 ftn_double* RWORK,
477 ftn_int* LRWORK,
478 ftn_int* IWORK,
479 ftn_int* LIWORK,
480 ftn_int* INFO,
481 ftn_len JOBZ_len,
482 ftn_len UPLO_len);
483
484void FORTRAN(pspotrf)(ftn_char UPLO,
485 ftn_int* N,
486 ftn_single* A,
487 ftn_int* IA,
488 ftn_int* JA,
489 ftn_int* DESCA,
490 ftn_int* INFO,
491 ftn_len UPLO_len);
492
493void FORTRAN(pdpotrf)(ftn_char UPLO,
494 ftn_int* N,
495 ftn_double* A,
496 ftn_int* IA,
497 ftn_int* JA,
498 ftn_int* DESCA,
499 ftn_int* INFO,
500 ftn_len UPLO_len);
501
502void FORTRAN(pcpotrf)(ftn_char UPLO,
503 ftn_int* N,
504 ftn_complex* A,
505 ftn_int* IA,
506 ftn_int* JA,
507 ftn_int* DESCA,
508 ftn_int* INFO,
509 ftn_len UPLO_len);
510
511void FORTRAN(pzpotrf)(ftn_char UPLO,
512 ftn_int* N,
513 ftn_double_complex* A,
514 ftn_int* IA,
515 ftn_int* JA,
516 ftn_int* DESCA,
517 ftn_int* INFO,
518 ftn_len UPLO_len);
519
520void FORTRAN(pstrtri)(ftn_char UPLO,
521 ftn_char DIAG,
522 ftn_int* N,
523 ftn_single* A,
524 ftn_int* IA,
525 ftn_int* JA,
526 ftn_int* DESCA,
527 ftn_int* INFO,
528 ftn_len UPLO_len,
529 ftn_len DIAG_len);
530
531void FORTRAN(pdtrtri)(ftn_char UPLO,
532 ftn_char DIAG,
533 ftn_int* N,
534 ftn_double* A,
535 ftn_int* IA,
536 ftn_int* JA,
537 ftn_int* DESCA,
538 ftn_int* INFO,
539 ftn_len UPLO_len,
540 ftn_len DIAG_len);
541
542void FORTRAN(pctrtri)(ftn_char UPLO,
543 ftn_char DIAG,
544 ftn_int* N,
545 ftn_complex* A,
546 ftn_int* IA,
547 ftn_int* JA,
548 ftn_int* DESCA,
549 ftn_int* INFO,
550 ftn_len UPLO_len,
551 ftn_len DIAG_len);
552
553void FORTRAN(pztrtri)(ftn_char UPLO,
554 ftn_char DIAG,
555 ftn_int* N,
556 ftn_double_complex* A,
557 ftn_int* IA,
558 ftn_int* JA,
559 ftn_int* DESCA,
560 ftn_int* INFO,
561 ftn_len UPLO_len,
562 ftn_len DIAG_len);
563
564void FORTRAN(psgeqrf)(ftn_int* M,
565 ftn_int* N,
566 ftn_single* A,
567 ftn_int* IA,
568 ftn_int* JA,
569 ftn_int* DESCA,
570 ftn_single* TAU,
571 ftn_single* WORK,
572 ftn_int* LWORK,
573 ftn_int* INFO);
574
575void FORTRAN(pdgeqrf)(ftn_int* M,
576 ftn_int* N,
577 ftn_double* A,
578 ftn_int* IA,
579 ftn_int* JA,
580 ftn_int* DESCA,
581 ftn_double* TAU,
582 ftn_double* WORK,
583 ftn_int* LWORK,
584 ftn_int* INFO);
585
586void FORTRAN(pcgeqrf)(ftn_int* M,
587 ftn_int* N,
588 ftn_complex* A,
589 ftn_int* IA,
590 ftn_int* JA,
591 ftn_int* DESCA,
592 ftn_complex* TAU,
593 ftn_complex* WORK,
594 ftn_int* LWORK,
595 ftn_int* INFO);
596
597void FORTRAN(pzgeqrf)(ftn_int* M,
598 ftn_int* N,
599 ftn_double_complex* A,
600 ftn_int* IA,
601 ftn_int* JA,
602 ftn_int* DESCA,
603 ftn_double_complex* TAU,
604 ftn_double_complex* WORK,
605 ftn_int* LWORK,
606 ftn_int* INFO);
607
608}
609
610#endif
Interface to some BLAS/LAPACK functions.