SIRIUS 7.5.0
Electronic structure library and applications
blas_lapack.h
Go to the documentation of this file.
1/** \file blas_lapack.h
2 * \brief Interface to some BLAS/LAPACK functions.
3 */
4#ifndef __BLAS_H__
5#define __BLAS_H__
6
7#include <complex>
8
9#define FORTRAN(x) x##_
10
11using ftn_int = int32_t;
12using ftn_len = int32_t;
13using ftn_single = float;
14using ftn_double = double;
15using ftn_complex = std::complex<float>;
16using ftn_double_complex = std::complex<double>;
17using ftn_char = char const *;
18using ftn_bool = bool;
19
20extern "C" {
21
22void FORTRAN(sgemm)(ftn_char TRANSA,
23 ftn_char TRANSB,
24 ftn_int* M,
25 ftn_int* N,
26 ftn_int* K,
27 ftn_single* ALPHA,
28 ftn_single* A,
29 ftn_int* LDA,
30 ftn_single* B,
31 ftn_int* LDB,
32 ftn_single* BETA,
33 ftn_single* C,
34 ftn_int* LDC,
35 ftn_len TRANSA_len,
36 ftn_len TRANSB_len);
37
38void FORTRAN(dgemm)(ftn_char TRANSA,
39 ftn_char TRANSB,
40 ftn_int* M,
41 ftn_int* N,
42 ftn_int* K,
43 ftn_double* ALPHA,
44 ftn_double* A,
45 ftn_int* LDA,
46 ftn_double* B,
47 ftn_int* LDB,
48 ftn_double* BETA,
49 ftn_double* C,
50 ftn_int* LDC,
51 ftn_len TRANSA_len,
52 ftn_len TRANSB_len);
53
54void FORTRAN(cgemm)(ftn_char TRANSA,
55 ftn_char TRANSB,
56 ftn_int* M,
57 ftn_int* N,
58 ftn_int* K,
59 ftn_complex* ALPHA,
60 ftn_complex* A,
61 ftn_int* LDA,
62 ftn_complex* B,
63 ftn_int* LDB,
64 ftn_complex* BETA,
65 ftn_complex* C,
66 ftn_int* LDC,
67 ftn_len TRANSA_len,
68 ftn_len TRANSB_len);
69
70void FORTRAN(zgemm)(ftn_char TRANSA,
71 ftn_char TRANSB,
72 ftn_int* M,
73 ftn_int* N,
74 ftn_int* K,
75 ftn_double_complex* ALPHA,
76 ftn_double_complex* A,
77 ftn_int* LDA,
78 ftn_double_complex* B,
79 ftn_int* LDB,
80 ftn_double_complex* BETA,
81 ftn_double_complex* C,
82 ftn_int* LDC,
83 ftn_len TRANSA_len,
84 ftn_len TRANSB_len);
85
86void FORTRAN(ssymm)(ftn_char SIDE,
87 ftn_char UPLO,
88 ftn_int* M,
89 ftn_int* N,
90 ftn_single* ALPHA,
91 ftn_single* A,
92 ftn_int* LDA,
93 ftn_single* B,
94 ftn_int* LDB,
95 ftn_single* BETA,
96 ftn_single* C,
97 ftn_int* LDC,
98 ftn_len SIDE_len,
99 ftn_len UPLO_len);
100
101void FORTRAN(dsymm)(ftn_char SIDE,
102 ftn_char UPLO,
103 ftn_int* M,
104 ftn_int* N,
105 ftn_double* ALPHA,
106 ftn_double* A,
107 ftn_int* LDA,
108 ftn_double* B,
109 ftn_int* LDB,
110 ftn_double* BETA,
111 ftn_double* C,
112 ftn_int* LDC,
113 ftn_len SIDE_len,
114 ftn_len UPLO_len);
115
116void FORTRAN(chemm)(ftn_char SIDE,
117 ftn_char UPLO,
118 ftn_int* M,
119 ftn_int* N,
120 ftn_complex* ALPHA,
121 ftn_complex* A,
122 ftn_int* LDA,
123 ftn_complex* B,
124 ftn_int* LDB,
125 ftn_complex* BETA,
126 ftn_complex* C,
127 ftn_int* LDC,
128 ftn_len SIDE_len,
129 ftn_len UPLO_len);
130
131void FORTRAN(zhemm)(ftn_char SIDE,
132 ftn_char UPLO,
133 ftn_int* M,
134 ftn_int* N,
135 ftn_double_complex* ALPHA,
136 ftn_double_complex* A,
137 ftn_int* LDA,
138 ftn_double_complex* B,
139 ftn_int* LDB,
140 ftn_double_complex* BETA,
141 ftn_double_complex* C,
142 ftn_int* LDC,
143 ftn_len SIDE_len,
144 ftn_len UPLO_len);
145
146void FORTRAN(strmm)(ftn_char SIDE,
147 ftn_char UPLO,
148 ftn_char TRANSA,
149 ftn_char DIAG,
150 ftn_int* M,
151 ftn_int* N,
152 ftn_single* ALPHA,
153 ftn_single* A,
154 ftn_int* LDA,
155 ftn_single* B,
156 ftn_int* LDB,
157 ftn_len SIDE_len,
158 ftn_len UPLO_len,
159 ftn_len TRANSA_len,
160 ftn_len DIAG_len);
161
162void FORTRAN(dtrmm)(ftn_char SIDE,
163 ftn_char UPLO,
164 ftn_char TRANSA,
165 ftn_char DIAG,
166 ftn_int* M,
167 ftn_int* N,
168 ftn_double* ALPHA,
169 ftn_double* A,
170 ftn_int* LDA,
171 ftn_double* B,
172 ftn_int* LDB,
173 ftn_len SIDE_len,
174 ftn_len UPLO_len,
175 ftn_len TRANSA_len,
176 ftn_len DIAG_len);
177
178void FORTRAN(ctrmm)(ftn_char SIDE,
179 ftn_char UPLO,
180 ftn_char TRANSA,
181 ftn_char DIAG,
182 ftn_int* M,
183 ftn_int* N,
184 ftn_complex* ALPHA,
185 ftn_complex* A,
186 ftn_int* LDA,
187 ftn_complex* B,
188 ftn_int* LDB,
189 ftn_len SIDE_len,
190 ftn_len UPLO_len,
191 ftn_len TRANSA_len,
192 ftn_len DIAG_len);
193
194void FORTRAN(ztrmm)(ftn_char SIDE,
195 ftn_char UPLO,
196 ftn_char TRANSA,
197 ftn_char DIAG,
198 ftn_int* M,
199 ftn_int* N,
200 ftn_double_complex* ALPHA,
201 ftn_double_complex* A,
202 ftn_int* LDA,
203 ftn_double_complex* B,
204 ftn_int* LDB,
205 ftn_len SIDE_len,
206 ftn_len UPLO_len,
207 ftn_len TRANSA_len,
208 ftn_len DIAG_len);
209
210void FORTRAN(sgemv)(ftn_char TRANS,
211 ftn_int* M,
212 ftn_int* N,
213 ftn_single* ALPHA,
214 ftn_single* A,
215 ftn_int* LDA,
216 ftn_single* X,
217 ftn_int* INCX,
218 ftn_single* BETA,
219 ftn_single* Y,
220 ftn_int* INCY,
221 ftn_len TRANS_len);
222
223void FORTRAN(dgemv)(ftn_char TRANS,
224 ftn_int* M,
225 ftn_int* N,
226 ftn_double* ALPHA,
227 ftn_double* A,
228 ftn_int* LDA,
229 ftn_double* X,
230 ftn_int* INCX,
231 ftn_double* BETA,
232 ftn_double* Y,
233 ftn_int* INCY,
234 ftn_len TRANS_len);
235
236void FORTRAN(cgemv)(ftn_char TRANS,
237 ftn_int* M,
238 ftn_int* N,
239 ftn_complex* ALPHA,
240 ftn_complex* A,
241 ftn_int* LDA,
242 ftn_complex* X,
243 ftn_int* INCX,
244 ftn_complex* BETA,
245 ftn_complex* Y,
246 ftn_int* INCY,
247 ftn_len TRANS_len);
248
249void FORTRAN(zgemv)(ftn_char TRANS,
250 ftn_int* M,
251 ftn_int* N,
252 ftn_double_complex* ALPHA,
253 ftn_double_complex* A,
254 ftn_int* LDA,
255 ftn_double_complex* X,
256 ftn_int* INCX,
257 ftn_double_complex* BETA,
258 ftn_double_complex* Y,
259 ftn_int* INCY,
260 ftn_len TRANS_len);
261
262void FORTRAN(sger)(ftn_int* M,
263 ftn_int* N,
264 ftn_single* ALPHA,
265 ftn_single* X,
266 ftn_int* INCX,
267 ftn_single* Y,
268 ftn_int* INCY,
269 ftn_single* A,
270 ftn_int* LDA);
271
272void FORTRAN(dger)(ftn_int* M,
273 ftn_int* N,
274 ftn_double* ALPHA,
275 ftn_double* X,
276 ftn_int* INCX,
277 ftn_double* Y,
278 ftn_int* INCY,
279 ftn_double* A,
280 ftn_int* LDA);
281
282void FORTRAN(cgeru)(ftn_int* M,
283 ftn_int* N,
284 ftn_complex* ALPHA,
285 ftn_complex* X,
286 ftn_int* INCX,
287 ftn_complex* Y,
288 ftn_int* INCY,
289 ftn_complex* A,
290 ftn_int* LDA);
291
292void FORTRAN(cgerc)(ftn_int* M,
293 ftn_int* N,
294 ftn_complex* ALPHA,
295 ftn_complex* X,
296 ftn_int* INCX,
297 ftn_complex* Y,
298 ftn_int* INCY,
299 ftn_complex* A,
300 ftn_int* LDA);
301
302void FORTRAN(zgeru)(ftn_int* M,
303 ftn_int* N,
304 ftn_double_complex* ALPHA,
305 ftn_double_complex* X,
306 ftn_int* INCX,
307 ftn_double_complex* Y,
308 ftn_int* INCY,
309 ftn_double_complex* A,
310 ftn_int* LDA);
311
312void FORTRAN(zgerc)(ftn_int* M,
313 ftn_int* N,
314 ftn_double_complex* ALPHA,
315 ftn_double_complex* X,
316 ftn_int* INCX,
317 ftn_double_complex* Y,
318 ftn_int* INCY,
319 ftn_double_complex* A,
320 ftn_int* LDA);
321
322void FORTRAN(ssytrf)(ftn_char UPLO,
323 ftn_int* N,
324 ftn_single* A,
325 ftn_int* LDA,
326 ftn_int* IPIV,
327 ftn_single* WORK,
328 ftn_int* LWORK,
329 ftn_int* INFO,
330 ftn_len UPLO_len);
331
332void FORTRAN(dsytrf)(ftn_char UPLO,
333 ftn_int* N,
334 ftn_double* A,
335 ftn_int* LDA,
336 ftn_int* IPIV,
337 ftn_double* WORK,
338 ftn_int* LWORK,
339 ftn_int* INFO,
340 ftn_len UPLO_len);
341
342void FORTRAN(dsytrs)(ftn_char UPLO,
343 ftn_int* N,
344 ftn_int* NRHS,
345 ftn_double* A,
346 ftn_int* LDA,
347 ftn_int* IPIV,
348 ftn_double* B,
349 ftn_int* LDB,
350 ftn_int* INFO,
351 ftn_len UPLO_len);
352
353void FORTRAN(chetrf)(ftn_char UPLO,
354 ftn_int* N,
355 ftn_complex* A,
356 ftn_int* LDA,
357 ftn_int* IPIV,
358 ftn_complex* WORK,
359 ftn_int* LWORK,
360 ftn_int* INFO,
361 ftn_len UPLO_len);
362
363void FORTRAN(zhetrf)(ftn_char UPLO,
364 ftn_int* N,
365 ftn_double_complex* A,
366 ftn_int* LDA,
367 ftn_int* IPIV,
368 ftn_double_complex* WORK,
369 ftn_int* LWORK,
370 ftn_int* INFO,
371 ftn_len UPLO_len);
372
373void FORTRAN(sgetrf)(ftn_int* M,
374 ftn_int* N,
375 ftn_single* A,
376 ftn_int* LDA,
377 ftn_int* IPIV,
378 ftn_int* INFO);
379
380void FORTRAN(dgetrf)(ftn_int* M,
381 ftn_int* N,
382 ftn_double* A,
383 ftn_int* LDA,
384 ftn_int* IPIV,
385 ftn_int* INFO);
386
387void FORTRAN(cgetrf)(ftn_int* M,
388 ftn_int* N,
389 ftn_complex* A,
390 ftn_int* LDA,
391 ftn_int* IPIV,
392 ftn_int* INFO);
393
394void FORTRAN(zgetrf)(ftn_int* M,
395 ftn_int* N,
396 ftn_double_complex* A,
397 ftn_int* LDA,
398 ftn_int* IPIV,
399 ftn_int* INFO);
400
401void FORTRAN(zgetrs)(ftn_char UPLO,
402 ftn_int* n,
403 ftn_int* nrhs,
404 ftn_double_complex* A,
405 ftn_int* lda,
406 ftn_int* ipiv,
407 ftn_double_complex* B,
408 ftn_int* ldb,
409 ftn_int* INFO);
410
411void FORTRAN(spotrf)(ftn_char UPLO,
412 ftn_int* N,
413 ftn_single* A,
414 ftn_int* LDA,
415 ftn_int* INFO,
416 ftn_len UPLO_len);
417
418void FORTRAN(dpotrf)(ftn_char UPLO,
419 ftn_int* N,
420 ftn_double* A,
421 ftn_int* LDA,
422 ftn_int* INFO,
423 ftn_len UPLO_len);
424
425void FORTRAN(cpotrf)(ftn_char UPLO,
426 ftn_int* N,
427 ftn_complex* A,
428 ftn_int* LDA,
429 ftn_int* INFO,
430 ftn_len UPLO_len);
431
432void FORTRAN(zpotrf)(ftn_char UPLO,
433 ftn_int* N,
434 ftn_double_complex* A,
435 ftn_int* LDA,
436 ftn_int* INFO,
437 ftn_len UPLO_len);
438
439void FORTRAN(ssytri)(ftn_char UPLO,
440 ftn_int* N,
441 ftn_single* A,
442 ftn_int* LDA,
443 ftn_int* IPIV,
444 ftn_single* WORK,
445 ftn_int* INFO,
446 ftn_len UPLO_len);
447
448void FORTRAN(dsytri)(ftn_char UPLO,
449 ftn_int* N,
450 ftn_double* A,
451 ftn_int* LDA,
452 ftn_int* IPIV,
453 ftn_double* WORK,
454 ftn_int* INFO,
455 ftn_len UPLO_len);
456
457void FORTRAN(chetri)(ftn_char UPLO,
458 ftn_single* N,
459 ftn_single* A,
460 ftn_int* LDA,
461 ftn_int* IPIV,
462 ftn_single* WORK,
463 ftn_int* INFO,
464 ftn_len UPLO_len);
465
466void FORTRAN(zhetri)(ftn_char UPLO,
467 ftn_int* N,
468 ftn_double_complex* A,
469 ftn_int* LDA,
470 ftn_int* IPIV,
471 ftn_double_complex* WORK,
472 ftn_int* INFO,
473 ftn_len UPLO_len);
474
475void FORTRAN(sgetri)(ftn_int* N,
476 ftn_single* A,
477 ftn_int* LDA,
478 ftn_int* IPIV,
479 ftn_single* WORK,
480 ftn_int* LWORK,
481 ftn_int* INFO);
482
483void FORTRAN(dgetri)(ftn_int* N,
484 ftn_double* A,
485 ftn_int* LDA,
486 ftn_int* IPIV,
487 ftn_double* WORK,
488 ftn_int* LWORK,
489 ftn_int* INFO);
490
491void FORTRAN(cgetri)(ftn_int* N,
492 ftn_complex* A,
493 ftn_int* LDA,
494 ftn_int* IPIV,
495 ftn_complex* WORK,
496 ftn_int* LWORK,
497 ftn_int* INFO);
498
499void FORTRAN(zgetri)(ftn_int* N,
500 ftn_double_complex* A,
501 ftn_int* LDA,
502 ftn_int* IPIV,
503 ftn_double_complex* WORK,
504 ftn_int* LWORK,
505 ftn_int* INFO);
506
507void FORTRAN(sgesv)(ftn_int* N,
508 ftn_int* NRHS,
509 ftn_single* A,
510 ftn_int* LDA,
511 ftn_int* IPIV,
512 ftn_single* B,
513 ftn_int* LDB,
514 ftn_int* INFO);
515
516void FORTRAN(dgesv)(ftn_int* N,
517 ftn_int* NRHS,
518 ftn_double* A,
519 ftn_int* LDA,
520 ftn_int* IPIV,
521 ftn_double* B,
522 ftn_int* LDB,
523 ftn_int* INFO);
524
525void FORTRAN(cgesv)(ftn_int* N,
526 ftn_int* NRHS,
527 ftn_complex* A,
528 ftn_int* LDA,
529 ftn_int* IPIV,
530 ftn_complex* B,
531 ftn_int* LDB,
532 ftn_int* INFO);
533
534void FORTRAN(zgesv)(ftn_int* N,
535 ftn_int* NRHS,
536 ftn_double_complex* A,
537 ftn_int* LDA,
538 ftn_int* IPIV,
539 ftn_double_complex* B,
540 ftn_int* LDB,
541 ftn_int* INFO);
542
543void FORTRAN(sgtsv)(ftn_int* N,
544 ftn_int* NRHS,
545 ftn_single* DL,
546 ftn_single* D,
547 ftn_single* DU,
548 ftn_single* B,
549 ftn_int* LDB,
550 ftn_int* INFO);
551
552void FORTRAN(dgtsv)(ftn_int* N,
553 ftn_int* NRHS,
554 ftn_double* DL,
555 ftn_double* D,
556 ftn_double* DU,
557 ftn_double* B,
558 ftn_int* LDB,
559 ftn_int* INFO);
560
561void FORTRAN(cgtsv)(ftn_int* N,
562 ftn_int* NRHS,
563 ftn_complex* DL,
564 ftn_complex* D,
565 ftn_complex* DU,
566 ftn_complex* B,
567 ftn_int* LDB,
568 ftn_int* INFO);
569
570void FORTRAN(zgtsv)(ftn_int* N,
571 ftn_int* NRHS,
572 ftn_double_complex* DL,
573 ftn_double_complex* D,
574 ftn_double_complex* DU,
575 ftn_double_complex* B,
576 ftn_int* LDB,
577 ftn_int* INFO);
578
579void FORTRAN(strtri)(ftn_char UPLO,
580 ftn_char DIAG,
581 ftn_int* N,
582 ftn_single* A,
583 ftn_int* LDA,
584 ftn_int* INFO,
585 ftn_len UPLO_len,
586 ftn_len DIAG_len);
587
588void FORTRAN(dtrtri)(ftn_char UPLO,
589 ftn_char DIAG,
590 ftn_int* N,
591 ftn_double* A,
592 ftn_int* LDA,
593 ftn_int* INFO,
594 ftn_len UPLO_len,
595 ftn_len DIAG_len);
596
597void FORTRAN(ctrtri)(ftn_char UPLO,
598 ftn_char DIAG,
599 ftn_int* N,
600 ftn_complex* A,
601 ftn_int* LDA,
602 ftn_int* INFO,
603 ftn_len UPLO_len,
604 ftn_len DIAG_len);
605
606void FORTRAN(ztrtri)(ftn_char UPLO,
607 ftn_char DIAG,
608 ftn_int* N,
609 ftn_double_complex* A,
610 ftn_int* LDA,
611 ftn_int* INFO,
612 ftn_len UPLO_len,
613 ftn_len DIAG_len);
614
615void FORTRAN(ssygvx)(ftn_int* ITYPE,
616 ftn_char JOBZ,
617 ftn_char RANGE,
618 ftn_char UPLO,
619 ftn_int* N,
620 ftn_single* A,
621 ftn_int* LDA,
622 ftn_single* B,
623 ftn_int* LDB,
624 ftn_single* VL,
625 ftn_single* VU,
626 ftn_int* IL,
627 ftn_int* IU,
628 ftn_single* ABSTOL,
629 ftn_int* M,
630 ftn_single* W,
631 ftn_single* Z,
632 ftn_int* LDZ,
633 ftn_single* WORK,
634 ftn_int* LWORK,
635 ftn_int* IWORK,
636 ftn_int* IFAIL,
637 ftn_int* INFO,
638 ftn_len JOBZ_len,
639 ftn_len RANGE_len,
640 ftn_len UPLO_len);
641
642void FORTRAN(dsygvx)(ftn_int* ITYPE,
643 ftn_char JOBZ,
644 ftn_char RANGE,
645 ftn_char UPLO,
646 ftn_int* N,
647 ftn_double* A,
648 ftn_int* LDA,
649 ftn_double* B,
650 ftn_int* LDB,
651 ftn_double* VL,
652 ftn_double* VU,
653 ftn_int* IL,
654 ftn_int* IU,
655 ftn_double* ABSTOL,
656 ftn_int* M,
657 ftn_double* W,
658 ftn_double* Z,
659 ftn_int* LDZ,
660 ftn_double* WORK,
661 ftn_int* LWORK,
662 ftn_int* IWORK,
663 ftn_int* IFAIL,
664 ftn_int* INFO,
665 ftn_len JOBZ_len,
666 ftn_len RANGE_len,
667 ftn_len UPLO_len);
668
669void FORTRAN(chegvx)(ftn_int* ITYPE,
670 ftn_char JOBZ,
671 ftn_char RANGE,
672 ftn_char UPLO,
673 ftn_int* N,
674 ftn_complex* A,
675 ftn_int* LDA,
676 ftn_complex* B,
677 ftn_int* LDB,
678 ftn_single* VL,
679 ftn_single* VU,
680 ftn_int* IL,
681 ftn_int* IU,
682 ftn_single* ABSTOL,
683 ftn_int* M,
684 ftn_single* W,
685 ftn_complex* Z,
686 ftn_int* LDZ,
687 ftn_complex* WORK,
688 ftn_int* LWORK,
689 ftn_single* RWORK,
690 ftn_int* IWORK,
691 ftn_int* IFAIL,
692 ftn_int* INFO,
693 ftn_len JOBZ_len,
694 ftn_len RANGE_len,
695 ftn_len UPLO_len);
696
697void FORTRAN(zhegvx)(ftn_int* ITYPE,
698 ftn_char JOBZ,
699 ftn_char RANGE,
700 ftn_char UPLO,
701 ftn_int* N,
702 ftn_double_complex* A,
703 ftn_int* LDA,
704 ftn_double_complex* B,
705 ftn_int* LDB,
706 ftn_double* VL,
707 ftn_double* VU,
708 ftn_int* IL,
709 ftn_int* IU,
710 ftn_double* ABSTOL,
711 ftn_int* M,
712 ftn_double* W,
713 ftn_double_complex* Z,
714 ftn_int* LDZ,
715 ftn_double_complex* WORK,
716 ftn_int* LWORK,
717 ftn_double* RWORK,
718 ftn_int* IWORK,
719 ftn_int* IFAIL,
720 ftn_int* INFO,
721 ftn_len JOBZ_len,
722 ftn_len RANGE_len,
723 ftn_len UPLO_len);
724
725void FORTRAN(ssyev)(ftn_char JOBZ,
726 ftn_char UPLO,
727 ftn_int* N,
728 ftn_single* A,
729 ftn_int* LDA,
730 ftn_single* W,
731 ftn_single* WORK,
732 ftn_int* LWORK,
733 ftn_int* INFO,
734 ftn_len JOBZ_len,
735 ftn_len UPLO_len);
736
737void FORTRAN(dsyev)(ftn_char JOBZ,
738 ftn_char UPLO,
739 ftn_int* N,
740 ftn_double* A,
741 ftn_int* LDA,
742 ftn_double* W,
743 ftn_double* WORK,
744 ftn_int* LWORK,
745 ftn_int* INFO,
746 ftn_len JOBZ_len,
747 ftn_len UPLO_len);
748
749void FORTRAN(cheev)(ftn_char JOBZ,
750 ftn_char UPLO,
751 ftn_int* N,
752 ftn_complex* A,
753 ftn_int* LDA,
754 ftn_single* W,
755 ftn_complex* WORK,
756 ftn_int* LWORK,
757 ftn_single* RWORK,
758 ftn_int* INFO,
759 ftn_len JOBZ_len,
760 ftn_len UPLO_len);
761
762void FORTRAN(zheev)(ftn_char JOBZ,
763 ftn_char UPLO,
764 ftn_int* N,
765 ftn_double_complex* A,
766 ftn_int* LDA,
767 ftn_double* W,
768 ftn_double_complex* WORK,
769 ftn_int* LWORK,
770 ftn_double* RWORK,
771 ftn_int* INFO,
772 ftn_len JOBZ_len,
773 ftn_len UPLO_len);
774
775void FORTRAN(ssyevd)(ftn_char JOBZ,
776 ftn_char UPLO,
777 ftn_int* N,
778 ftn_single* A,
779 ftn_int* LDA,
780 ftn_single* W,
781 ftn_single* WORK,
782 ftn_int* LWORK,
783 ftn_int* IWORK,
784 ftn_int* LIWORK,
785 ftn_int* INFO,
786 ftn_len JOBZ_len,
787 ftn_len UPLO_len);
788
789void FORTRAN(dsyevd)(ftn_char JOBZ,
790 ftn_char UPLO,
791 ftn_int* N,
792 ftn_double* A,
793 ftn_int* LDA,
794 ftn_double* W,
795 ftn_double* WORK,
796 ftn_int* LWORK,
797 ftn_int* IWORK,
798 ftn_int* LIWORK,
799 ftn_int* INFO,
800 ftn_len JOBZ_len,
801 ftn_len UPLO_len);
802
803void FORTRAN(cheevd)(ftn_char JOBZ,
804 ftn_char UPLO,
805 ftn_int* N,
806 ftn_complex* A,
807 ftn_int* LDA,
808 ftn_single* W,
809 ftn_complex* WORK,
810 ftn_int* LWORK,
811 ftn_single* RWORK,
812 ftn_int* LRWORK,
813 ftn_int* IWORK,
814 ftn_int* LIWORK,
815 ftn_int* INFO,
816 ftn_len JOBZ_len,
817 ftn_len UPLO_len);
818
819void FORTRAN(zheevd)(ftn_char JOBZ,
820 ftn_char UPLO,
821 ftn_int* N,
822 ftn_double_complex* A,
823 ftn_int* LDA,
824 ftn_double* W,
825 ftn_double_complex* WORK,
826 ftn_int* LWORK,
827 ftn_double* RWORK,
828 ftn_int* LRWORK,
829 ftn_int* IWORK,
830 ftn_int* LIWORK,
831 ftn_int* INFO,
832 ftn_len JOBZ_len,
833 ftn_len UPLO_len);
834
835void FORTRAN(ssyevx)(ftn_char JOBZ,
836 ftn_char RANGE,
837 ftn_char UPLO,
838 ftn_int* N,
839 ftn_single* A,
840 ftn_int* LDA,
841 ftn_single* VL,
842 ftn_single* VU,
843 ftn_int* IL,
844 ftn_int* IU,
845 ftn_single* ABSTOL,
846 ftn_int* M,
847 ftn_single* W,
848 ftn_single* Z,
849 ftn_int* LDZ,
850 ftn_single* WORK,
851 ftn_int* LWORK,
852 ftn_int* IWORK,
853 ftn_int* IFAIL,
854 ftn_int* INFO,
855 ftn_len JOBZ_len,
856 ftn_len RANGE_len,
857 ftn_len UPLO_len);
858
859void FORTRAN(dsyevx)(ftn_char JOBZ,
860 ftn_char RANGE,
861 ftn_char UPLO,
862 ftn_int* N,
863 ftn_double* A,
864 ftn_int* LDA,
865 ftn_double* VL,
866 ftn_double* VU,
867 ftn_int* IL,
868 ftn_int* IU,
869 ftn_double* ABSTOL,
870 ftn_int* M,
871 ftn_double* W,
872 ftn_double* Z,
873 ftn_int* LDZ,
874 ftn_double* WORK,
875 ftn_int* LWORK,
876 ftn_int* IWORK,
877 ftn_int* IFAIL,
878 ftn_int* INFO,
879 ftn_len JOBZ_len,
880 ftn_len RANGE_len,
881 ftn_len UPLO_len);
882
883void FORTRAN(cheevx)(ftn_char JOBZ,
884 ftn_char RANGE,
885 ftn_char UPLO,
886 ftn_int* N,
887 ftn_complex* A,
888 ftn_int* LDA,
889 ftn_single* VL,
890 ftn_single* VU,
891 ftn_int* IL,
892 ftn_int* IU,
893 ftn_single* ABSTOL,
894 ftn_int* M,
895 ftn_single* W,
896 ftn_complex* Z,
897 ftn_int* LDZ,
898 ftn_complex* WORK,
899 ftn_int* LWORK,
900 ftn_single* RWORK,
901 ftn_int* IWORK,
902 ftn_int* IFAIL,
903 ftn_int* INFO,
904 ftn_len JOBZ_len,
905 ftn_len RANGE_len,
906 ftn_len UPLO_len);
907
908void FORTRAN(zheevx)(ftn_char JOBZ,
909 ftn_char RANGE,
910 ftn_char UPLO,
911 ftn_int* N,
912 ftn_double_complex* A,
913 ftn_int* LDA,
914 ftn_double* VL,
915 ftn_double* VU,
916 ftn_int* IL,
917 ftn_int* IU,
918 ftn_double* ABSTOL,
919 ftn_int* M,
920 ftn_double* W,
921 ftn_double_complex* Z,
922 ftn_int* LDZ,
923 ftn_double_complex* WORK,
924 ftn_int* LWORK,
925 ftn_double* RWORK,
926 ftn_int* IWORK,
927 ftn_int* IFAIL,
928 ftn_int* INFO,
929 ftn_len JOBZ_len,
930 ftn_len RANGE_len,
931 ftn_len UPLO_len);
932
933void FORTRAN(ssyevr)(ftn_char JOBZ,
934 ftn_char RANGE,
935 ftn_char UPLO,
936 ftn_int* N,
937 ftn_single* A,
938 ftn_int* LDA,
939 ftn_single* VL,
940 ftn_single* VU,
941 ftn_int* IL,
942 ftn_int* IU,
943 ftn_single* ABSTOL,
944 ftn_int* M,
945 ftn_single* W,
946 ftn_single* Z,
947 ftn_int* LDZ,
948 ftn_int* ISUPPZ,
949 ftn_single* WORK,
950 ftn_int* LWORK,
951 ftn_int* IWORK,
952 ftn_int* LIWORK,
953 ftn_int* INFO,
954 ftn_len JOBZ_len,
955 ftn_len RANGE_len,
956 ftn_len UPLO_len);
957
958void FORTRAN(dsyevr)(ftn_char JOBZ,
959 ftn_char RANGE,
960 ftn_char UPLO,
961 ftn_int* N,
962 ftn_double* A,
963 ftn_int* LDA,
964 ftn_double* VL,
965 ftn_double* VU,
966 ftn_int* IL,
967 ftn_int* IU,
968 ftn_double* ABSTOL,
969 ftn_int* M,
970 ftn_double* W,
971 ftn_double* Z,
972 ftn_int* LDZ,
973 ftn_int* ISUPPZ,
974 ftn_double* WORK,
975 ftn_int* LWORK,
976 ftn_int* IWORK,
977 ftn_int* LIWORK,
978 ftn_int* INFO,
979 ftn_len JOBZ_len,
980 ftn_len RANGE_len,
981 ftn_len UPLO_len);
982
983void FORTRAN(cheevr)(ftn_char JOBZ,
984 ftn_char RANGE,
985 ftn_char UPLO,
986 ftn_int* N,
987 ftn_single* A,
988 ftn_int* LDA,
989 ftn_single* VL,
990 ftn_single* VU,
991 ftn_int* IL,
992 ftn_int* IU,
993 ftn_single* ABSTOL,
994 ftn_int* M,
995 ftn_single* W,
996 ftn_complex* Z,
997 ftn_int* LDZ,
998 ftn_int* ISUPPZ,
999 ftn_complex* WORK,
1000 ftn_int* LWORK,
1001 ftn_single* RWORK,
1002 ftn_int* LRWORK,
1003 ftn_int* IWORK,
1004 ftn_int* LIWORK,
1005 ftn_int* INFO,
1006 ftn_len JOBZ_len,
1007 ftn_len RANGE_len,
1008 ftn_len UPLO_len);
1009
1010void FORTRAN(zheevr)(ftn_char JOBZ,
1011 ftn_char RANGE,
1012 ftn_char UPLO,
1013 ftn_int* N,
1014 ftn_double_complex* A,
1015 ftn_int* LDA,
1016 ftn_double* VL,
1017 ftn_double* VU,
1018 ftn_int* IL,
1019 ftn_int* IU,
1020 ftn_double* ABSTOL,
1021 ftn_int* M,
1022 ftn_double* W,
1023 ftn_double_complex* Z,
1024 ftn_int* LDZ,
1025 ftn_int* ISUPPZ,
1026 ftn_double_complex* WORK,
1027 ftn_int* LWORK,
1028 ftn_double* RWORK,
1029 ftn_int* LRWORK,
1030 ftn_int* IWORK,
1031 ftn_int* LIWORK,
1032 ftn_int* INFO,
1033 ftn_len JOBZ_len,
1034 ftn_len RANGE_len,
1035 ftn_len UPLO_len);
1036
1037void FORTRAN(sgeqrf)(ftn_int* M,
1038 ftn_int* N,
1039 ftn_single* A,
1040 ftn_int* LDA,
1041 ftn_single* TAU,
1042 ftn_single* WORK,
1043 ftn_int* LWORK,
1044 ftn_int* INFO);
1045
1046void FORTRAN(dgeqrf)(ftn_int* M,
1047 ftn_int* N,
1048 ftn_double* A,
1049 ftn_int* LDA,
1050 ftn_double* TAU,
1051 ftn_double* WORK,
1052 ftn_int* LWORK,
1053 ftn_int* INFO);
1054
1055void FORTRAN(cgeqrf)(ftn_int* M,
1056 ftn_int* N,
1057 ftn_complex* A,
1058 ftn_int* LDA,
1059 ftn_complex* TAU,
1060 ftn_complex* WORK,
1061 ftn_int* LWORK,
1062 ftn_int* INFO);
1063
1064void FORTRAN(zgeqrf)(ftn_int* M,
1065 ftn_int* N,
1066 ftn_double_complex* A,
1067 ftn_int* LDA,
1068 ftn_double_complex* TAU,
1069 ftn_double_complex* WORK,
1070 ftn_int* LWORK,
1071 ftn_int* INFO);
1072
1073void FORTRAN(sscal)(const ftn_int* N, const ftn_single* ALPHA, ftn_single* X, const ftn_int* INCX);
1074
1075void FORTRAN(dscal)(const ftn_int* N, const ftn_double* ALPHA, ftn_double* X, const ftn_int* INCX);
1076
1077void FORTRAN(cscal)(const ftn_int* N, const ftn_complex* ALPHA, ftn_complex* X, const ftn_int* INCX);
1078
1079void FORTRAN(zscal)(const ftn_int* N, const ftn_double_complex* ALPHA, ftn_double_complex* X, const ftn_int* INCX);
1080
1081void FORTRAN(dlartg)(ftn_double * f, ftn_double * g, ftn_double * cs, ftn_double * sn, ftn_double * r);
1082void FORTRAN(daxpy)(const ftn_int*, const ftn_double*, const ftn_double*, const ftn_int*, ftn_double*, ftn_int*);
1083void FORTRAN(zaxpy)(const ftn_int*, const ftn_double_complex*, const ftn_double_complex*, const ftn_int*, ftn_double_complex*, ftn_int*);
1084}
1085
1086#endif