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