/* * This header provides numpy a consistent interface to CBLAS code. It is needed * because not all providers of cblas provide cblas.h. For instance, MKL provides * mkl_cblas.h and also typedefs the CBLAS_XXX enums. */ #ifndef _NPY_CBLAS_H_ #define _NPY_CBLAS_H_ #include /* Allow the use in C++ code. */ #ifdef __cplusplus extern "C" { #endif /* * Enumerated and derived types */ enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102}; enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113}; enum CBLAS_UPLO {CblasUpper=121, CblasLower=122}; enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132}; enum CBLAS_SIDE {CblasLeft=141, CblasRight=142}; #define CBLAS_INDEX size_t /* this may vary between platforms */ #ifdef NO_APPEND_FORTRAN #define BLAS_FORTRAN_SUFFIX #else #define BLAS_FORTRAN_SUFFIX _ #endif #ifndef BLAS_SYMBOL_PREFIX #define BLAS_SYMBOL_PREFIX #endif #ifndef BLAS_SYMBOL_SUFFIX #define BLAS_SYMBOL_SUFFIX #endif #define BLAS_FUNC_CONCAT(name,prefix,suffix,suffix2) prefix ## name ## suffix ## suffix2 #define BLAS_FUNC_EXPAND(name,prefix,suffix,suffix2) BLAS_FUNC_CONCAT(name,prefix,suffix,suffix2) #define CBLAS_FUNC(name) BLAS_FUNC_EXPAND(name,BLAS_SYMBOL_PREFIX,,BLAS_SYMBOL_SUFFIX) #define BLAS_FUNC(name) BLAS_FUNC_EXPAND(name,BLAS_SYMBOL_PREFIX,BLAS_FORTRAN_SUFFIX,BLAS_SYMBOL_SUFFIX) #ifdef HAVE_BLAS_ILP64 #define CBLAS_INT npy_int64 #else #define CBLAS_INT int #endif #define BLASNAME(name) CBLAS_FUNC(name) #define BLASINT CBLAS_INT #include "npy_cblas_base.h" #undef BLASINT #undef BLASNAME #ifdef __cplusplus } #endif #endif