Actual source code: slepcblaslapack.h
1: /*
3: Necessary routines in BLAS and LAPACK not included in petscblaslapack.f
5: */
6: #if !defined(_SLEPCBLASLAPACK_H)
7: #define _SLEPCBLASLAPACK_H
8: #include "petscblaslapack.h"
9: PETSC_EXTERN_CXX_BEGIN
11: #define SLEPC_CONCAT(a,b) a##b
12: #define SLEPC_CONCAT3(a,b,c) a##b##c
14: #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
15: #define SLEPC_FORTRAN(lcase,ucase) SLEPC_CONCAT(lcase,_)
16: #elif defined(PETSC_HAVE_FORTRAN_CAPS)
17: #define SLEPC_FORTRAN(lcase,ucase) ucase
18: #else
19: #define SLEPC_FORTRAN(lcase,ucase) lcase
20: #endif
22: #if defined(PETSC_BLASLAPACK_F2C)
24: #if !defined(PETSC_USE_COMPLEX)
25: /* real numbers */
26: #if defined(PETSC_USES_FORTRAN_SINGLE) || defined(PETSC_USE_SINGLE)
27: /* single precision */
28: #define SLEPC_BLASLAPACK(lcase,ucase) SLEPC_CONCAT3(s,lcase,_)
29: #else
30: /* double precision */
31: #define SLEPC_BLASLAPACK(lcase,ucase) SLEPC_CONCAT3(d,lcase,_)
32: #endif
33: #else
34: /* complex numbers */
35: #if defined(PETSC_USES_FORTRAN_SINGLE) || defined(PETSC_USE_SINGLE)
36: /* single precision */
37: #define SLEPC_BLASLAPACK(lcase,ucase) SLEPC_CONCAT3(c,lcase,_)
38: #else
39: /* double precision */
40: #define SLEPC_BLASLAPACK(lcase,ucase) SLEPC_CONCAT3(z,lcase,_)
41: #endif
42: #endif
44: #else
46: #if !defined(PETSC_USE_COMPLEX)
47: /* real numbers */
48: #if defined(PETSC_USES_FORTRAN_SINGLE) || defined(PETSC_USE_SINGLE)
49: /* single precision */
50: #define SLEPC_BLASLAPACK(lcase,ucase) SLEPC_FORTRAN(SLEPC_CONCAT(s,lcase),SLEPC_CONCAT(S,ucase))
51: #else
52: /* double precision */
53: #define SLEPC_BLASLAPACK(lcase,ucase) SLEPC_FORTRAN(SLEPC_CONCAT(d,lcase),SLEPC_CONCAT(D,ucase))
54: #endif
55: #else
56: /* complex numbers */
57: #if defined(PETSC_USES_FORTRAN_SINGLE) || defined(PETSC_USE_SINGLE)
58: /* single precision */
59: #define SLEPC_BLASLAPACK(lcase,ucase) SLEPC_FORTRAN(SLEPC_CONCAT(c,lcase),SLEPC_CONCAT(C,ucase))
60: #else
61: /* double precision */
62: #define SLEPC_BLASLAPACK(lcase,ucase) SLEPC_FORTRAN(SLEPC_CONCAT(z,lcase),SLEPC_CONCAT(Z,ucase))
63: #endif
64: #endif
66: #endif
68: #define LAlaev2_ SLEPC_BLASLAPACK(laev2,LAEV2)
69: #define LAgehrd_ SLEPC_BLASLAPACK(gehrd,GEHRD)
70: #if !defined(PETSC_USE_COMPLEX)
71: #define LAorghr_ SLEPC_BLASLAPACK(orghr,ORGHR)
72: #else
73: #define LAorghr_ SLEPC_BLASLAPACK(unghr,UNGHR)
74: #endif
75: #define LAlanhs_ SLEPC_BLASLAPACK(lanhs,LANHS)
76: #define LAlange_ SLEPC_BLASLAPACK(lange,LANGE)
77: #define LAgetri_ SLEPC_BLASLAPACK(getri,GETRI)
78: #define LAhseqr_ SLEPC_BLASLAPACK(hseqr,HSEQR)
79: #define LAtrexc_ SLEPC_BLASLAPACK(trexc,TREXC)
80: #define LAtrevc_ SLEPC_BLASLAPACK(trevc,TREVC)
82: EXTERN_C_BEGIN
84: EXTERN void LAlaev2_(PetscScalar*,PetscScalar*,PetscScalar*,PetscReal*,PetscReal*,PetscReal*,PetscScalar*);
85: EXTERN void LAgehrd_(PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscBLASInt*);
86: EXTERN void LAorghr_(PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscBLASInt*);
87: EXTERN PetscReal LAlanhs_(const char*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscReal*,PetscBLASInt);
88: EXTERN PetscReal LAlange_(const char*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscReal*,PetscBLASInt);
89: EXTERN void LAgetri_(PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*);
91: #if !defined(PETSC_USE_COMPLEX)
92: EXTERN void LAhseqr_(const char*,const char*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt,PetscBLASInt);
93: EXTERN void LAtrexc_(const char*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt);
94: EXTERN void LAtrevc_(const char*,const char*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt,PetscBLASInt);
95: #else
96: EXTERN void LAhseqr_(const char*,const char*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt,PetscBLASInt);
97: EXTERN void LAtrexc_(const char*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt);
98: EXTERN void LAtrevc_(const char*,const char*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscScalar*,PetscBLASInt*,PetscBLASInt*,PetscBLASInt*,PetscScalar*,PetscReal*,PetscBLASInt*,PetscBLASInt,PetscBLASInt);
99: #endif
101: EXTERN_C_END
103: PETSC_EXTERN_CXX_END
104: #endif