diff --git a/CMakeLists.txt b/CMakeLists.txt index 928da3d9d..36912bcde 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,13 +63,8 @@ option(EIGEN_LEAVE_TEST_IN_ALL_TARGET "Leaves tests in the all target, needed by option(EIGEN_BUILD_BLAS "Toggles the building of the Eigen Blas library" ${PROJECT_IS_TOP_LEVEL}) option(EIGEN_BUILD_LAPACK "Toggles the building of the included Eigen LAPACK library" ${PROJECT_IS_TOP_LEVEL}) if (EIGEN_BUILD_BLAS OR EIGEN_BUILD_LAPACK) - # BLAS and LAPACK currently need a fortran compiler. - include(CMakeDetermineFortranCompiler) - if (NOT CMAKE_Fortran_COMPILER) - set(EIGEN_BUILD_BLAS OFF) - set(EIGEN_BUILD_LAPACK OFF) - else() - # Determine if we should build shared libraries for BLAS/LAPACK on this platform. + # Determine if we should build shared libraries for BLAS/LAPACK on this platform. + if (NOT EIGEN_BUILD_SHARED_LIBS) get_cmake_property(EIGEN_BUILD_SHARED_LIBS TARGET_SUPPORTS_SHARED_LIBS) endif() endif() diff --git a/blas/CMakeLists.txt b/blas/CMakeLists.txt index 8842b30b7..27382212d 100644 --- a/blas/CMakeLists.txt +++ b/blas/CMakeLists.txt @@ -21,6 +21,7 @@ list(APPEND EIGEN_BLAS_TARGETS eigen_blas_static) if (EIGEN_BUILD_SHARED_LIBS) add_library(eigen_blas SHARED ${EigenBlas_SRCS}) list(APPEND EIGEN_BLAS_TARGETS eigen_blas) + target_compile_definitions(eigen_blas PUBLIC "EIGEN_BUILD_DLL") endif() foreach(target IN LISTS EIGEN_BLAS_TARGETS) diff --git a/blas/blas.h b/blas/blas.h index 178b5e5cc..2e5e37723 100644 --- a/blas/blas.h +++ b/blas/blas.h @@ -1,6 +1,18 @@ #ifndef BLAS_H #define BLAS_H +#if defined(_WIN32) +#if defined(EIGEN_BUILD_DLL) +#define EIGEN_BLAS_API __declspec(dllexport) +#elif defined(EIGEN_LINK_DLL) +#define EIGEN_BLAS_API __declspec(dllimport) +#else +#define EIGEN_BLAS_API +#endif +#else +#define EIGEN_BLAS_API +#endif + #ifdef __cplusplus extern "C" { #endif @@ -15,467 +27,508 @@ typedef long BLASLONG; typedef unsigned long BLASULONG; #endif -void BLASFUNC(xerbla)(const char *, int *info); +EIGEN_BLAS_API void BLASFUNC(xerbla)(const char *, int *info); -float BLASFUNC(sdot)(int *, float *, int *, float *, int *); -float BLASFUNC(sdsdot)(int *, float *, float *, int *, float *, int *); +EIGEN_BLAS_API float BLASFUNC(sdot)(int *, float *, int *, float *, int *); +EIGEN_BLAS_API float BLASFUNC(sdsdot)(int *, float *, float *, int *, float *, int *); -double BLASFUNC(dsdot)(int *, float *, int *, float *, int *); -double BLASFUNC(ddot)(int *, double *, int *, double *, int *); -double BLASFUNC(qdot)(int *, double *, int *, double *, int *); +EIGEN_BLAS_API double BLASFUNC(dsdot)(int *, float *, int *, float *, int *); +EIGEN_BLAS_API double BLASFUNC(ddot)(int *, double *, int *, double *, int *); +EIGEN_BLAS_API double BLASFUNC(qdot)(int *, double *, int *, double *, int *); -void BLASFUNC(cdotuw)(int *, float *, int *, float *, int *, float *); -void BLASFUNC(cdotcw)(int *, float *, int *, float *, int *, float *); -void BLASFUNC(zdotuw)(int *, double *, int *, double *, int *, double *); -void BLASFUNC(zdotcw)(int *, double *, int *, double *, int *, double *); +EIGEN_BLAS_API void BLASFUNC(cdotuw)(int *, float *, int *, float *, int *, float *); +EIGEN_BLAS_API void BLASFUNC(cdotcw)(int *, float *, int *, float *, int *, float *); +EIGEN_BLAS_API void BLASFUNC(zdotuw)(int *, double *, int *, double *, int *, double *); +EIGEN_BLAS_API void BLASFUNC(zdotcw)(int *, double *, int *, double *, int *, double *); -void BLASFUNC(saxpy)(const int *, const float *, const float *, const int *, float *, const int *); -void BLASFUNC(daxpy)(const int *, const double *, const double *, const int *, double *, const int *); -void BLASFUNC(qaxpy)(const int *, const double *, const double *, const int *, double *, const int *); -void BLASFUNC(caxpy)(const int *, const float *, const float *, const int *, float *, const int *); -void BLASFUNC(zaxpy)(const int *, const double *, const double *, const int *, double *, const int *); -void BLASFUNC(xaxpy)(const int *, const double *, const double *, const int *, double *, const int *); -void BLASFUNC(caxpyc)(const int *, const float *, const float *, const int *, float *, const int *); -void BLASFUNC(zaxpyc)(const int *, const double *, const double *, const int *, double *, const int *); -void BLASFUNC(xaxpyc)(const int *, const double *, const double *, const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(saxpy)(const int *, const float *, const float *, const int *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(daxpy)(const int *, const double *, const double *, const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(qaxpy)(const int *, const double *, const double *, const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(caxpy)(const int *, const float *, const float *, const int *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(zaxpy)(const int *, const double *, const double *, const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(xaxpy)(const int *, const double *, const double *, const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(caxpyc)(const int *, const float *, const float *, const int *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(zaxpyc)(const int *, const double *, const double *, const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(xaxpyc)(const int *, const double *, const double *, const int *, double *, const int *); -void BLASFUNC(scopy)(int *, float *, int *, float *, int *); -void BLASFUNC(dcopy)(int *, double *, int *, double *, int *); -void BLASFUNC(qcopy)(int *, double *, int *, double *, int *); -void BLASFUNC(ccopy)(int *, float *, int *, float *, int *); -void BLASFUNC(zcopy)(int *, double *, int *, double *, int *); -void BLASFUNC(xcopy)(int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(scopy)(int *, float *, int *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(dcopy)(int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(qcopy)(int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(ccopy)(int *, float *, int *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(zcopy)(int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xcopy)(int *, double *, int *, double *, int *); -void BLASFUNC(sswap)(int *, float *, int *, float *, int *); -void BLASFUNC(dswap)(int *, double *, int *, double *, int *); -void BLASFUNC(qswap)(int *, double *, int *, double *, int *); -void BLASFUNC(cswap)(int *, float *, int *, float *, int *); -void BLASFUNC(zswap)(int *, double *, int *, double *, int *); -void BLASFUNC(xswap)(int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(sswap)(int *, float *, int *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(dswap)(int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(qswap)(int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(cswap)(int *, float *, int *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(zswap)(int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xswap)(int *, double *, int *, double *, int *); -float BLASFUNC(sasum)(int *, float *, int *); -float BLASFUNC(scasum)(int *, float *, int *); -double BLASFUNC(dasum)(int *, double *, int *); -double BLASFUNC(qasum)(int *, double *, int *); -double BLASFUNC(dzasum)(int *, double *, int *); -double BLASFUNC(qxasum)(int *, double *, int *); +EIGEN_BLAS_API float BLASFUNC(sasum)(int *, float *, int *); +EIGEN_BLAS_API float BLASFUNC(scasum)(int *, float *, int *); +EIGEN_BLAS_API double BLASFUNC(dasum)(int *, double *, int *); +EIGEN_BLAS_API double BLASFUNC(qasum)(int *, double *, int *); +EIGEN_BLAS_API double BLASFUNC(dzasum)(int *, double *, int *); +EIGEN_BLAS_API double BLASFUNC(qxasum)(int *, double *, int *); -int BLASFUNC(isamax)(int *, float *, int *); -int BLASFUNC(idamax)(int *, double *, int *); -int BLASFUNC(iqamax)(int *, double *, int *); -int BLASFUNC(icamax)(int *, float *, int *); -int BLASFUNC(izamax)(int *, double *, int *); -int BLASFUNC(ixamax)(int *, double *, int *); +EIGEN_BLAS_API int BLASFUNC(isamax)(int *, float *, int *); +EIGEN_BLAS_API int BLASFUNC(idamax)(int *, double *, int *); +EIGEN_BLAS_API int BLASFUNC(iqamax)(int *, double *, int *); +EIGEN_BLAS_API int BLASFUNC(icamax)(int *, float *, int *); +EIGEN_BLAS_API int BLASFUNC(izamax)(int *, double *, int *); +EIGEN_BLAS_API int BLASFUNC(ixamax)(int *, double *, int *); -int BLASFUNC(ismax)(int *, float *, int *); -int BLASFUNC(idmax)(int *, double *, int *); -int BLASFUNC(iqmax)(int *, double *, int *); -int BLASFUNC(icmax)(int *, float *, int *); -int BLASFUNC(izmax)(int *, double *, int *); -int BLASFUNC(ixmax)(int *, double *, int *); +EIGEN_BLAS_API int BLASFUNC(ismax)(int *, float *, int *); +EIGEN_BLAS_API int BLASFUNC(idmax)(int *, double *, int *); +EIGEN_BLAS_API int BLASFUNC(iqmax)(int *, double *, int *); +EIGEN_BLAS_API int BLASFUNC(icmax)(int *, float *, int *); +EIGEN_BLAS_API int BLASFUNC(izmax)(int *, double *, int *); +EIGEN_BLAS_API int BLASFUNC(ixmax)(int *, double *, int *); -int BLASFUNC(isamin)(int *, float *, int *); -int BLASFUNC(idamin)(int *, double *, int *); -int BLASFUNC(iqamin)(int *, double *, int *); -int BLASFUNC(icamin)(int *, float *, int *); -int BLASFUNC(izamin)(int *, double *, int *); -int BLASFUNC(ixamin)(int *, double *, int *); +EIGEN_BLAS_API int BLASFUNC(isamin)(int *, float *, int *); +EIGEN_BLAS_API int BLASFUNC(idamin)(int *, double *, int *); +EIGEN_BLAS_API int BLASFUNC(iqamin)(int *, double *, int *); +EIGEN_BLAS_API int BLASFUNC(icamin)(int *, float *, int *); +EIGEN_BLAS_API int BLASFUNC(izamin)(int *, double *, int *); +EIGEN_BLAS_API int BLASFUNC(ixamin)(int *, double *, int *); -int BLASFUNC(ismin)(int *, float *, int *); -int BLASFUNC(idmin)(int *, double *, int *); -int BLASFUNC(iqmin)(int *, double *, int *); -int BLASFUNC(icmin)(int *, float *, int *); -int BLASFUNC(izmin)(int *, double *, int *); -int BLASFUNC(ixmin)(int *, double *, int *); +EIGEN_BLAS_API int BLASFUNC(ismin)(int *, float *, int *); +EIGEN_BLAS_API int BLASFUNC(idmin)(int *, double *, int *); +EIGEN_BLAS_API int BLASFUNC(iqmin)(int *, double *, int *); +EIGEN_BLAS_API int BLASFUNC(icmin)(int *, float *, int *); +EIGEN_BLAS_API int BLASFUNC(izmin)(int *, double *, int *); +EIGEN_BLAS_API int BLASFUNC(ixmin)(int *, double *, int *); -float BLASFUNC(samax)(int *, float *, int *); -double BLASFUNC(damax)(int *, double *, int *); -double BLASFUNC(qamax)(int *, double *, int *); -float BLASFUNC(scamax)(int *, float *, int *); -double BLASFUNC(dzamax)(int *, double *, int *); -double BLASFUNC(qxamax)(int *, double *, int *); +EIGEN_BLAS_API float BLASFUNC(samax)(int *, float *, int *); +EIGEN_BLAS_API double BLASFUNC(damax)(int *, double *, int *); +EIGEN_BLAS_API double BLASFUNC(qamax)(int *, double *, int *); +EIGEN_BLAS_API float BLASFUNC(scamax)(int *, float *, int *); +EIGEN_BLAS_API double BLASFUNC(dzamax)(int *, double *, int *); +EIGEN_BLAS_API double BLASFUNC(qxamax)(int *, double *, int *); -float BLASFUNC(samin)(int *, float *, int *); -double BLASFUNC(damin)(int *, double *, int *); -double BLASFUNC(qamin)(int *, double *, int *); -float BLASFUNC(scamin)(int *, float *, int *); -double BLASFUNC(dzamin)(int *, double *, int *); -double BLASFUNC(qxamin)(int *, double *, int *); +EIGEN_BLAS_API float BLASFUNC(samin)(int *, float *, int *); +EIGEN_BLAS_API double BLASFUNC(damin)(int *, double *, int *); +EIGEN_BLAS_API double BLASFUNC(qamin)(int *, double *, int *); +EIGEN_BLAS_API float BLASFUNC(scamin)(int *, float *, int *); +EIGEN_BLAS_API double BLASFUNC(dzamin)(int *, double *, int *); +EIGEN_BLAS_API double BLASFUNC(qxamin)(int *, double *, int *); -float BLASFUNC(smax)(int *, float *, int *); -double BLASFUNC(dmax)(int *, double *, int *); -double BLASFUNC(qmax)(int *, double *, int *); -float BLASFUNC(scmax)(int *, float *, int *); -double BLASFUNC(dzmax)(int *, double *, int *); -double BLASFUNC(qxmax)(int *, double *, int *); +EIGEN_BLAS_API float BLASFUNC(smax)(int *, float *, int *); +EIGEN_BLAS_API double BLASFUNC(dmax)(int *, double *, int *); +EIGEN_BLAS_API double BLASFUNC(qmax)(int *, double *, int *); +EIGEN_BLAS_API float BLASFUNC(scmax)(int *, float *, int *); +EIGEN_BLAS_API double BLASFUNC(dzmax)(int *, double *, int *); +EIGEN_BLAS_API double BLASFUNC(qxmax)(int *, double *, int *); -float BLASFUNC(smin)(int *, float *, int *); -double BLASFUNC(dmin)(int *, double *, int *); -double BLASFUNC(qmin)(int *, double *, int *); -float BLASFUNC(scmin)(int *, float *, int *); -double BLASFUNC(dzmin)(int *, double *, int *); -double BLASFUNC(qxmin)(int *, double *, int *); +EIGEN_BLAS_API float BLASFUNC(smin)(int *, float *, int *); +EIGEN_BLAS_API double BLASFUNC(dmin)(int *, double *, int *); +EIGEN_BLAS_API double BLASFUNC(qmin)(int *, double *, int *); +EIGEN_BLAS_API float BLASFUNC(scmin)(int *, float *, int *); +EIGEN_BLAS_API double BLASFUNC(dzmin)(int *, double *, int *); +EIGEN_BLAS_API double BLASFUNC(qxmin)(int *, double *, int *); -void BLASFUNC(sscal)(int *, float *, float *, int *); -void BLASFUNC(dscal)(int *, double *, double *, int *); -void BLASFUNC(qscal)(int *, double *, double *, int *); -void BLASFUNC(cscal)(int *, float *, float *, int *); -void BLASFUNC(zscal)(int *, double *, double *, int *); -void BLASFUNC(xscal)(int *, double *, double *, int *); -void BLASFUNC(csscal)(int *, float *, float *, int *); -void BLASFUNC(zdscal)(int *, double *, double *, int *); -void BLASFUNC(xqscal)(int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(sscal)(int *, float *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(dscal)(int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(qscal)(int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(cscal)(int *, float *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(zscal)(int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xscal)(int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(csscal)(int *, float *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(zdscal)(int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xqscal)(int *, double *, double *, int *); -float BLASFUNC(snrm2)(int *, float *, int *); -float BLASFUNC(scnrm2)(int *, float *, int *); +EIGEN_BLAS_API float BLASFUNC(snrm2)(int *, float *, int *); +EIGEN_BLAS_API float BLASFUNC(scnrm2)(int *, float *, int *); -double BLASFUNC(dnrm2)(int *, double *, int *); -double BLASFUNC(qnrm2)(int *, double *, int *); -double BLASFUNC(dznrm2)(int *, double *, int *); -double BLASFUNC(qxnrm2)(int *, double *, int *); +EIGEN_BLAS_API double BLASFUNC(dnrm2)(int *, double *, int *); +EIGEN_BLAS_API double BLASFUNC(qnrm2)(int *, double *, int *); +EIGEN_BLAS_API double BLASFUNC(dznrm2)(int *, double *, int *); +EIGEN_BLAS_API double BLASFUNC(qxnrm2)(int *, double *, int *); -void BLASFUNC(srot)(int *, float *, int *, float *, int *, float *, float *); -void BLASFUNC(drot)(int *, double *, int *, double *, int *, double *, double *); -void BLASFUNC(qrot)(int *, double *, int *, double *, int *, double *, double *); -void BLASFUNC(csrot)(int *, float *, int *, float *, int *, float *, float *); -void BLASFUNC(zdrot)(int *, double *, int *, double *, int *, double *, double *); -void BLASFUNC(xqrot)(int *, double *, int *, double *, int *, double *, double *); +EIGEN_BLAS_API void BLASFUNC(srot)(int *, float *, int *, float *, int *, float *, float *); +EIGEN_BLAS_API void BLASFUNC(drot)(int *, double *, int *, double *, int *, double *, double *); +EIGEN_BLAS_API void BLASFUNC(qrot)(int *, double *, int *, double *, int *, double *, double *); +EIGEN_BLAS_API void BLASFUNC(csrot)(int *, float *, int *, float *, int *, float *, float *); +EIGEN_BLAS_API void BLASFUNC(zdrot)(int *, double *, int *, double *, int *, double *, double *); +EIGEN_BLAS_API void BLASFUNC(xqrot)(int *, double *, int *, double *, int *, double *, double *); -void BLASFUNC(srotg)(float *, float *, float *, float *); -void BLASFUNC(drotg)(double *, double *, double *, double *); -void BLASFUNC(qrotg)(double *, double *, double *, double *); -void BLASFUNC(crotg)(float *, float *, float *, float *); -void BLASFUNC(zrotg)(double *, double *, double *, double *); -void BLASFUNC(xrotg)(double *, double *, double *, double *); +EIGEN_BLAS_API void BLASFUNC(srotg)(float *, float *, float *, float *); +EIGEN_BLAS_API void BLASFUNC(drotg)(double *, double *, double *, double *); +EIGEN_BLAS_API void BLASFUNC(qrotg)(double *, double *, double *, double *); +EIGEN_BLAS_API void BLASFUNC(crotg)(float *, float *, float *, float *); +EIGEN_BLAS_API void BLASFUNC(zrotg)(double *, double *, double *, double *); +EIGEN_BLAS_API void BLASFUNC(xrotg)(double *, double *, double *, double *); -void BLASFUNC(srotmg)(float *, float *, float *, float *, float *); -void BLASFUNC(drotmg)(double *, double *, double *, double *, double *); +EIGEN_BLAS_API void BLASFUNC(srotmg)(float *, float *, float *, float *, float *); +EIGEN_BLAS_API void BLASFUNC(drotmg)(double *, double *, double *, double *, double *); -void BLASFUNC(srotm)(int *, float *, int *, float *, int *, float *); -void BLASFUNC(drotm)(int *, double *, int *, double *, int *, double *); -void BLASFUNC(qrotm)(int *, double *, int *, double *, int *, double *); +EIGEN_BLAS_API void BLASFUNC(srotm)(int *, float *, int *, float *, int *, float *); +EIGEN_BLAS_API void BLASFUNC(drotm)(int *, double *, int *, double *, int *, double *); +EIGEN_BLAS_API void BLASFUNC(qrotm)(int *, double *, int *, double *, int *, double *); /* Level 2 routines */ -void BLASFUNC(sger)(int *, int *, float *, float *, int *, float *, int *, float *, int *); -void BLASFUNC(dger)(int *, int *, double *, double *, int *, double *, int *, double *, int *); -void BLASFUNC(qger)(int *, int *, double *, double *, int *, double *, int *, double *, int *); -void BLASFUNC(cgeru)(int *, int *, float *, float *, int *, float *, int *, float *, int *); -void BLASFUNC(cgerc)(int *, int *, float *, float *, int *, float *, int *, float *, int *); -void BLASFUNC(zgeru)(int *, int *, double *, double *, int *, double *, int *, double *, int *); -void BLASFUNC(zgerc)(int *, int *, double *, double *, int *, double *, int *, double *, int *); -void BLASFUNC(xgeru)(int *, int *, double *, double *, int *, double *, int *, double *, int *); -void BLASFUNC(xgerc)(int *, int *, double *, double *, int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(sger)(int *, int *, float *, float *, int *, float *, int *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(dger)(int *, int *, double *, double *, int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(qger)(int *, int *, double *, double *, int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(cgeru)(int *, int *, float *, float *, int *, float *, int *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(cgerc)(int *, int *, float *, float *, int *, float *, int *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(zgeru)(int *, int *, double *, double *, int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(zgerc)(int *, int *, double *, double *, int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xgeru)(int *, int *, double *, double *, int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xgerc)(int *, int *, double *, double *, int *, double *, int *, double *, int *); -void BLASFUNC(sgemv)(const char *, const int *, const int *, const float *, const float *, const int *, const float *, - const int *, const float *, float *, const int *); -void BLASFUNC(dgemv)(const char *, const int *, const int *, const double *, const double *, const int *, - const double *, const int *, const double *, double *, const int *); -void BLASFUNC(qgemv)(const char *, const int *, const int *, const double *, const double *, const int *, - const double *, const int *, const double *, double *, const int *); -void BLASFUNC(cgemv)(const char *, const int *, const int *, const float *, const float *, const int *, const float *, - const int *, const float *, float *, const int *); -void BLASFUNC(zgemv)(const char *, const int *, const int *, const double *, const double *, const int *, - const double *, const int *, const double *, double *, const int *); -void BLASFUNC(xgemv)(const char *, const int *, const int *, const double *, const double *, const int *, - const double *, const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(sgemv)(const char *, const int *, const int *, const float *, const float *, const int *, + const float *, const int *, const float *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(dgemv)(const char *, const int *, const int *, const double *, const double *, const int *, + const double *, const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(qgemv)(const char *, const int *, const int *, const double *, const double *, const int *, + const double *, const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(cgemv)(const char *, const int *, const int *, const float *, const float *, const int *, + const float *, const int *, const float *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(zgemv)(const char *, const int *, const int *, const double *, const double *, const int *, + const double *, const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(xgemv)(const char *, const int *, const int *, const double *, const double *, const int *, + const double *, const int *, const double *, double *, const int *); -void BLASFUNC(strsv)(const char *, const char *, const char *, const int *, const float *, const int *, float *, - const int *); -void BLASFUNC(dtrsv)(const char *, const char *, const char *, const int *, const double *, const int *, double *, - const int *); -void BLASFUNC(qtrsv)(const char *, const char *, const char *, const int *, const double *, const int *, double *, - const int *); -void BLASFUNC(ctrsv)(const char *, const char *, const char *, const int *, const float *, const int *, float *, - const int *); -void BLASFUNC(ztrsv)(const char *, const char *, const char *, const int *, const double *, const int *, double *, - const int *); -void BLASFUNC(xtrsv)(const char *, const char *, const char *, const int *, const double *, const int *, double *, - const int *); +EIGEN_BLAS_API void BLASFUNC(strsv)(const char *, const char *, const char *, const int *, const float *, const int *, + float *, const int *); +EIGEN_BLAS_API void BLASFUNC(dtrsv)(const char *, const char *, const char *, const int *, const double *, const int *, + double *, const int *); +EIGEN_BLAS_API void BLASFUNC(qtrsv)(const char *, const char *, const char *, const int *, const double *, const int *, + double *, const int *); +EIGEN_BLAS_API void BLASFUNC(ctrsv)(const char *, const char *, const char *, const int *, const float *, const int *, + float *, const int *); +EIGEN_BLAS_API void BLASFUNC(ztrsv)(const char *, const char *, const char *, const int *, const double *, const int *, + double *, const int *); +EIGEN_BLAS_API void BLASFUNC(xtrsv)(const char *, const char *, const char *, const int *, const double *, const int *, + double *, const int *); -void BLASFUNC(stpsv)(char *, char *, char *, int *, float *, float *, int *); -void BLASFUNC(dtpsv)(char *, char *, char *, int *, double *, double *, int *); -void BLASFUNC(qtpsv)(char *, char *, char *, int *, double *, double *, int *); -void BLASFUNC(ctpsv)(char *, char *, char *, int *, float *, float *, int *); -void BLASFUNC(ztpsv)(char *, char *, char *, int *, double *, double *, int *); -void BLASFUNC(xtpsv)(char *, char *, char *, int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(stpsv)(char *, char *, char *, int *, float *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(dtpsv)(char *, char *, char *, int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(qtpsv)(char *, char *, char *, int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(ctpsv)(char *, char *, char *, int *, float *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(ztpsv)(char *, char *, char *, int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xtpsv)(char *, char *, char *, int *, double *, double *, int *); -void BLASFUNC(strmv)(const char *, const char *, const char *, const int *, const float *, const int *, float *, - const int *); -void BLASFUNC(dtrmv)(const char *, const char *, const char *, const int *, const double *, const int *, double *, - const int *); -void BLASFUNC(qtrmv)(const char *, const char *, const char *, const int *, const double *, const int *, double *, - const int *); -void BLASFUNC(ctrmv)(const char *, const char *, const char *, const int *, const float *, const int *, float *, - const int *); -void BLASFUNC(ztrmv)(const char *, const char *, const char *, const int *, const double *, const int *, double *, - const int *); -void BLASFUNC(xtrmv)(const char *, const char *, const char *, const int *, const double *, const int *, double *, - const int *); +EIGEN_BLAS_API void BLASFUNC(strmv)(const char *, const char *, const char *, const int *, const float *, const int *, + float *, const int *); +EIGEN_BLAS_API void BLASFUNC(dtrmv)(const char *, const char *, const char *, const int *, const double *, const int *, + double *, const int *); +EIGEN_BLAS_API void BLASFUNC(qtrmv)(const char *, const char *, const char *, const int *, const double *, const int *, + double *, const int *); +EIGEN_BLAS_API void BLASFUNC(ctrmv)(const char *, const char *, const char *, const int *, const float *, const int *, + float *, const int *); +EIGEN_BLAS_API void BLASFUNC(ztrmv)(const char *, const char *, const char *, const int *, const double *, const int *, + double *, const int *); +EIGEN_BLAS_API void BLASFUNC(xtrmv)(const char *, const char *, const char *, const int *, const double *, const int *, + double *, const int *); -void BLASFUNC(stpmv)(char *, char *, char *, int *, float *, float *, int *); -void BLASFUNC(dtpmv)(char *, char *, char *, int *, double *, double *, int *); -void BLASFUNC(qtpmv)(char *, char *, char *, int *, double *, double *, int *); -void BLASFUNC(ctpmv)(char *, char *, char *, int *, float *, float *, int *); -void BLASFUNC(ztpmv)(char *, char *, char *, int *, double *, double *, int *); -void BLASFUNC(xtpmv)(char *, char *, char *, int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(stpmv)(char *, char *, char *, int *, float *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(dtpmv)(char *, char *, char *, int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(qtpmv)(char *, char *, char *, int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(ctpmv)(char *, char *, char *, int *, float *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(ztpmv)(char *, char *, char *, int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xtpmv)(char *, char *, char *, int *, double *, double *, int *); -void BLASFUNC(stbmv)(char *, char *, char *, int *, int *, float *, int *, float *, int *); -void BLASFUNC(dtbmv)(char *, char *, char *, int *, int *, double *, int *, double *, int *); -void BLASFUNC(qtbmv)(char *, char *, char *, int *, int *, double *, int *, double *, int *); -void BLASFUNC(ctbmv)(char *, char *, char *, int *, int *, float *, int *, float *, int *); -void BLASFUNC(ztbmv)(char *, char *, char *, int *, int *, double *, int *, double *, int *); -void BLASFUNC(xtbmv)(char *, char *, char *, int *, int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(stbmv)(char *, char *, char *, int *, int *, float *, int *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(dtbmv)(char *, char *, char *, int *, int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(qtbmv)(char *, char *, char *, int *, int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(ctbmv)(char *, char *, char *, int *, int *, float *, int *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(ztbmv)(char *, char *, char *, int *, int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xtbmv)(char *, char *, char *, int *, int *, double *, int *, double *, int *); -void BLASFUNC(stbsv)(char *, char *, char *, int *, int *, float *, int *, float *, int *); -void BLASFUNC(dtbsv)(char *, char *, char *, int *, int *, double *, int *, double *, int *); -void BLASFUNC(qtbsv)(char *, char *, char *, int *, int *, double *, int *, double *, int *); -void BLASFUNC(ctbsv)(char *, char *, char *, int *, int *, float *, int *, float *, int *); -void BLASFUNC(ztbsv)(char *, char *, char *, int *, int *, double *, int *, double *, int *); -void BLASFUNC(xtbsv)(char *, char *, char *, int *, int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(stbsv)(char *, char *, char *, int *, int *, float *, int *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(dtbsv)(char *, char *, char *, int *, int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(qtbsv)(char *, char *, char *, int *, int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(ctbsv)(char *, char *, char *, int *, int *, float *, int *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(ztbsv)(char *, char *, char *, int *, int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xtbsv)(char *, char *, char *, int *, int *, double *, int *, double *, int *); -void BLASFUNC(ssymv)(const char *, const int *, const float *, const float *, const int *, const float *, const int *, - const float *, float *, const int *); -void BLASFUNC(dsymv)(const char *, const int *, const double *, const double *, const int *, const double *, - const int *, const double *, double *, const int *); -void BLASFUNC(qsymv)(const char *, const int *, const double *, const double *, const int *, const double *, - const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(ssymv)(const char *, const int *, const float *, const float *, const int *, const float *, + const int *, const float *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(dsymv)(const char *, const int *, const double *, const double *, const int *, + const double *, const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(qsymv)(const char *, const int *, const double *, const double *, const int *, + const double *, const int *, const double *, double *, const int *); -void BLASFUNC(sspmv)(char *, int *, float *, float *, float *, int *, float *, float *, int *); -void BLASFUNC(dspmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *); -void BLASFUNC(qspmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(sspmv)(char *, int *, float *, float *, float *, int *, float *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(dspmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(qspmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *); -void BLASFUNC(ssyr)(const char *, const int *, const float *, const float *, const int *, float *, const int *); -void BLASFUNC(dsyr)(const char *, const int *, const double *, const double *, const int *, double *, const int *); -void BLASFUNC(qsyr)(const char *, const int *, const double *, const double *, const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(ssyr)(const char *, const int *, const float *, const float *, const int *, float *, + const int *); +EIGEN_BLAS_API void BLASFUNC(dsyr)(const char *, const int *, const double *, const double *, const int *, double *, + const int *); +EIGEN_BLAS_API void BLASFUNC(qsyr)(const char *, const int *, const double *, const double *, const int *, double *, + const int *); -void BLASFUNC(ssyr2)(const char *, const int *, const float *, const float *, const int *, const float *, const int *, - float *, const int *); -void BLASFUNC(dsyr2)(const char *, const int *, const double *, const double *, const int *, const double *, - const int *, double *, const int *); -void BLASFUNC(qsyr2)(const char *, const int *, const double *, const double *, const int *, const double *, - const int *, double *, const int *); -void BLASFUNC(csyr2)(const char *, const int *, const float *, const float *, const int *, const float *, const int *, - float *, const int *); -void BLASFUNC(zsyr2)(const char *, const int *, const double *, const double *, const int *, const double *, - const int *, double *, const int *); -void BLASFUNC(xsyr2)(const char *, const int *, const double *, const double *, const int *, const double *, - const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(ssyr2)(const char *, const int *, const float *, const float *, const int *, const float *, + const int *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(dsyr2)(const char *, const int *, const double *, const double *, const int *, + const double *, const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(qsyr2)(const char *, const int *, const double *, const double *, const int *, + const double *, const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(csyr2)(const char *, const int *, const float *, const float *, const int *, const float *, + const int *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(zsyr2)(const char *, const int *, const double *, const double *, const int *, + const double *, const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(xsyr2)(const char *, const int *, const double *, const double *, const int *, + const double *, const int *, double *, const int *); -void BLASFUNC(sspr)(char *, int *, float *, float *, int *, float *); -void BLASFUNC(dspr)(char *, int *, double *, double *, int *, double *); -void BLASFUNC(qspr)(char *, int *, double *, double *, int *, double *); +EIGEN_BLAS_API void BLASFUNC(sspr)(char *, int *, float *, float *, int *, float *); +EIGEN_BLAS_API void BLASFUNC(dspr)(char *, int *, double *, double *, int *, double *); +EIGEN_BLAS_API void BLASFUNC(qspr)(char *, int *, double *, double *, int *, double *); -void BLASFUNC(sspr2)(char *, int *, float *, float *, int *, float *, int *, float *); -void BLASFUNC(dspr2)(char *, int *, double *, double *, int *, double *, int *, double *); -void BLASFUNC(qspr2)(char *, int *, double *, double *, int *, double *, int *, double *); -void BLASFUNC(cspr2)(char *, int *, float *, float *, int *, float *, int *, float *); -void BLASFUNC(zspr2)(char *, int *, double *, double *, int *, double *, int *, double *); -void BLASFUNC(xspr2)(char *, int *, double *, double *, int *, double *, int *, double *); +EIGEN_BLAS_API void BLASFUNC(sspr2)(char *, int *, float *, float *, int *, float *, int *, float *); +EIGEN_BLAS_API void BLASFUNC(dspr2)(char *, int *, double *, double *, int *, double *, int *, double *); +EIGEN_BLAS_API void BLASFUNC(qspr2)(char *, int *, double *, double *, int *, double *, int *, double *); +EIGEN_BLAS_API void BLASFUNC(cspr2)(char *, int *, float *, float *, int *, float *, int *, float *); +EIGEN_BLAS_API void BLASFUNC(zspr2)(char *, int *, double *, double *, int *, double *, int *, double *); +EIGEN_BLAS_API void BLASFUNC(xspr2)(char *, int *, double *, double *, int *, double *, int *, double *); -void BLASFUNC(cher)(char *, int *, float *, float *, int *, float *, int *); -void BLASFUNC(zher)(char *, int *, double *, double *, int *, double *, int *); -void BLASFUNC(xher)(char *, int *, double *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(cher)(char *, int *, float *, float *, int *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(zher)(char *, int *, double *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xher)(char *, int *, double *, double *, int *, double *, int *); -void BLASFUNC(chpr)(char *, int *, float *, float *, int *, float *); -void BLASFUNC(zhpr)(char *, int *, double *, double *, int *, double *); -void BLASFUNC(xhpr)(char *, int *, double *, double *, int *, double *); +EIGEN_BLAS_API void BLASFUNC(chpr)(char *, int *, float *, float *, int *, float *); +EIGEN_BLAS_API void BLASFUNC(zhpr)(char *, int *, double *, double *, int *, double *); +EIGEN_BLAS_API void BLASFUNC(xhpr)(char *, int *, double *, double *, int *, double *); -void BLASFUNC(cher2)(char *, int *, float *, float *, int *, float *, int *, float *, int *); -void BLASFUNC(zher2)(char *, int *, double *, double *, int *, double *, int *, double *, int *); -void BLASFUNC(xher2)(char *, int *, double *, double *, int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(cher2)(char *, int *, float *, float *, int *, float *, int *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(zher2)(char *, int *, double *, double *, int *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xher2)(char *, int *, double *, double *, int *, double *, int *, double *, int *); -void BLASFUNC(chpr2)(char *, int *, float *, float *, int *, float *, int *, float *); -void BLASFUNC(zhpr2)(char *, int *, double *, double *, int *, double *, int *, double *); -void BLASFUNC(xhpr2)(char *, int *, double *, double *, int *, double *, int *, double *); +EIGEN_BLAS_API void BLASFUNC(chpr2)(char *, int *, float *, float *, int *, float *, int *, float *); +EIGEN_BLAS_API void BLASFUNC(zhpr2)(char *, int *, double *, double *, int *, double *, int *, double *); +EIGEN_BLAS_API void BLASFUNC(xhpr2)(char *, int *, double *, double *, int *, double *, int *, double *); -void BLASFUNC(chemv)(const char *, const int *, const float *, const float *, const int *, const float *, const int *, - const float *, float *, const int *); -void BLASFUNC(zhemv)(const char *, const int *, const double *, const double *, const int *, const double *, - const int *, const double *, double *, const int *); -void BLASFUNC(xhemv)(const char *, const int *, const double *, const double *, const int *, const double *, - const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(chemv)(const char *, const int *, const float *, const float *, const int *, const float *, + const int *, const float *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(zhemv)(const char *, const int *, const double *, const double *, const int *, + const double *, const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(xhemv)(const char *, const int *, const double *, const double *, const int *, + const double *, const int *, const double *, double *, const int *); -void BLASFUNC(chpmv)(char *, int *, float *, float *, float *, int *, float *, float *, int *); -void BLASFUNC(zhpmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *); -void BLASFUNC(xhpmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(chpmv)(char *, int *, float *, float *, float *, int *, float *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(zhpmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xhpmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *); -void BLASFUNC(snorm)(char *, int *, int *, float *, int *); -void BLASFUNC(dnorm)(char *, int *, int *, double *, int *); -void BLASFUNC(cnorm)(char *, int *, int *, float *, int *); -void BLASFUNC(znorm)(char *, int *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(snorm)(char *, int *, int *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(dnorm)(char *, int *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(cnorm)(char *, int *, int *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(znorm)(char *, int *, int *, double *, int *); -void BLASFUNC(sgbmv)(char *, int *, int *, int *, int *, float *, float *, int *, float *, int *, float *, float *, - int *); -void BLASFUNC(dgbmv)(char *, int *, int *, int *, int *, double *, double *, int *, double *, int *, double *, double *, - int *); -void BLASFUNC(qgbmv)(char *, int *, int *, int *, int *, double *, double *, int *, double *, int *, double *, double *, - int *); -void BLASFUNC(cgbmv)(char *, int *, int *, int *, int *, float *, float *, int *, float *, int *, float *, float *, - int *); -void BLASFUNC(zgbmv)(char *, int *, int *, int *, int *, double *, double *, int *, double *, int *, double *, double *, - int *); -void BLASFUNC(xgbmv)(char *, int *, int *, int *, int *, double *, double *, int *, double *, int *, double *, double *, - int *); +EIGEN_BLAS_API void BLASFUNC(sgbmv)(char *, int *, int *, int *, int *, float *, float *, int *, float *, int *, + float *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(dgbmv)(char *, int *, int *, int *, int *, double *, double *, int *, double *, int *, + double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(qgbmv)(char *, int *, int *, int *, int *, double *, double *, int *, double *, int *, + double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(cgbmv)(char *, int *, int *, int *, int *, float *, float *, int *, float *, int *, + float *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(zgbmv)(char *, int *, int *, int *, int *, double *, double *, int *, double *, int *, + double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xgbmv)(char *, int *, int *, int *, int *, double *, double *, int *, double *, int *, + double *, double *, int *); -void BLASFUNC(ssbmv)(char *, int *, int *, float *, float *, int *, float *, int *, float *, float *, int *); -void BLASFUNC(dsbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *, double *, int *); -void BLASFUNC(qsbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *, double *, int *); -void BLASFUNC(csbmv)(char *, int *, int *, float *, float *, int *, float *, int *, float *, float *, int *); -void BLASFUNC(zsbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *, double *, int *); -void BLASFUNC(xsbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(ssbmv)(char *, int *, int *, float *, float *, int *, float *, int *, float *, float *, + int *); +EIGEN_BLAS_API void BLASFUNC(dsbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *, + double *, int *); +EIGEN_BLAS_API void BLASFUNC(qsbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *, + double *, int *); +EIGEN_BLAS_API void BLASFUNC(csbmv)(char *, int *, int *, float *, float *, int *, float *, int *, float *, float *, + int *); +EIGEN_BLAS_API void BLASFUNC(zsbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *, + double *, int *); +EIGEN_BLAS_API void BLASFUNC(xsbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *, + double *, int *); -void BLASFUNC(chbmv)(char *, int *, int *, float *, float *, int *, float *, int *, float *, float *, int *); -void BLASFUNC(zhbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *, double *, int *); -void BLASFUNC(xhbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(chbmv)(char *, int *, int *, float *, float *, int *, float *, int *, float *, float *, + int *); +EIGEN_BLAS_API void BLASFUNC(zhbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *, + double *, int *); +EIGEN_BLAS_API void BLASFUNC(xhbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *, + double *, int *); /* Level 3 routines */ -void BLASFUNC(sgemm)(const char *, const char *, const int *, const int *, const int *, const float *, const float *, - const int *, const float *, const int *, const float *, float *, const int *); -void BLASFUNC(dgemm)(const char *, const char *, const int *, const int *, const int *, const double *, const double *, - const int *, const double *, const int *, const double *, double *, const int *); -void BLASFUNC(qgemm)(const char *, const char *, const int *, const int *, const int *, const double *, const double *, - const int *, const double *, const int *, const double *, double *, const int *); -void BLASFUNC(cgemm)(const char *, const char *, const int *, const int *, const int *, const float *, const float *, - const int *, const float *, const int *, const float *, float *, const int *); -void BLASFUNC(zgemm)(const char *, const char *, const int *, const int *, const int *, const double *, const double *, - const int *, const double *, const int *, const double *, double *, const int *); -void BLASFUNC(xgemm)(const char *, const char *, const int *, const int *, const int *, const double *, const double *, - const int *, const double *, const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(sgemm)(const char *, const char *, const int *, const int *, const int *, const float *, + const float *, const int *, const float *, const int *, const float *, float *, + const int *); +EIGEN_BLAS_API void BLASFUNC(dgemm)(const char *, const char *, const int *, const int *, const int *, const double *, + const double *, const int *, const double *, const int *, const double *, double *, + const int *); +EIGEN_BLAS_API void BLASFUNC(qgemm)(const char *, const char *, const int *, const int *, const int *, const double *, + const double *, const int *, const double *, const int *, const double *, double *, + const int *); +EIGEN_BLAS_API void BLASFUNC(cgemm)(const char *, const char *, const int *, const int *, const int *, const float *, + const float *, const int *, const float *, const int *, const float *, float *, + const int *); +EIGEN_BLAS_API void BLASFUNC(zgemm)(const char *, const char *, const int *, const int *, const int *, const double *, + const double *, const int *, const double *, const int *, const double *, double *, + const int *); +EIGEN_BLAS_API void BLASFUNC(xgemm)(const char *, const char *, const int *, const int *, const int *, const double *, + const double *, const int *, const double *, const int *, const double *, double *, + const int *); -void BLASFUNC(cgemm3m)(char *, char *, int *, int *, int *, float *, float *, int *, float *, int *, float *, float *, - int *); -void BLASFUNC(zgemm3m)(char *, char *, int *, int *, int *, double *, double *, int *, double *, int *, double *, - double *, int *); -void BLASFUNC(xgemm3m)(char *, char *, int *, int *, int *, double *, double *, int *, double *, int *, double *, - double *, int *); +EIGEN_BLAS_API void BLASFUNC(cgemm3m)(char *, char *, int *, int *, int *, float *, float *, int *, float *, int *, + float *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(zgemm3m)(char *, char *, int *, int *, int *, double *, double *, int *, double *, int *, + double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xgemm3m)(char *, char *, int *, int *, int *, double *, double *, int *, double *, int *, + double *, double *, int *); -void BLASFUNC(sge2mm)(char *, char *, char *, int *, int *, float *, float *, int *, float *, int *, float *, float *, - int *); -void BLASFUNC(dge2mm)(char *, char *, char *, int *, int *, double *, double *, int *, double *, int *, double *, - double *, int *); -void BLASFUNC(cge2mm)(char *, char *, char *, int *, int *, float *, float *, int *, float *, int *, float *, float *, - int *); -void BLASFUNC(zge2mm)(char *, char *, char *, int *, int *, double *, double *, int *, double *, int *, double *, - double *, int *); +EIGEN_BLAS_API void BLASFUNC(sge2mm)(char *, char *, char *, int *, int *, float *, float *, int *, float *, int *, + float *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(dge2mm)(char *, char *, char *, int *, int *, double *, double *, int *, double *, int *, + double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(cge2mm)(char *, char *, char *, int *, int *, float *, float *, int *, float *, int *, + float *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(zge2mm)(char *, char *, char *, int *, int *, double *, double *, int *, double *, int *, + double *, double *, int *); -void BLASFUNC(strsm)(const char *, const char *, const char *, const char *, const int *, const int *, const float *, - const float *, const int *, float *, const int *); -void BLASFUNC(dtrsm)(const char *, const char *, const char *, const char *, const int *, const int *, const double *, - const double *, const int *, double *, const int *); -void BLASFUNC(qtrsm)(const char *, const char *, const char *, const char *, const int *, const int *, const double *, - const double *, const int *, double *, const int *); -void BLASFUNC(ctrsm)(const char *, const char *, const char *, const char *, const int *, const int *, const float *, - const float *, const int *, float *, const int *); -void BLASFUNC(ztrsm)(const char *, const char *, const char *, const char *, const int *, const int *, const double *, - const double *, const int *, double *, const int *); -void BLASFUNC(xtrsm)(const char *, const char *, const char *, const char *, const int *, const int *, const double *, - const double *, const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(strsm)(const char *, const char *, const char *, const char *, const int *, const int *, + const float *, const float *, const int *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(dtrsm)(const char *, const char *, const char *, const char *, const int *, const int *, + const double *, const double *, const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(qtrsm)(const char *, const char *, const char *, const char *, const int *, const int *, + const double *, const double *, const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(ctrsm)(const char *, const char *, const char *, const char *, const int *, const int *, + const float *, const float *, const int *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(ztrsm)(const char *, const char *, const char *, const char *, const int *, const int *, + const double *, const double *, const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(xtrsm)(const char *, const char *, const char *, const char *, const int *, const int *, + const double *, const double *, const int *, double *, const int *); -void BLASFUNC(strmm)(const char *, const char *, const char *, const char *, const int *, const int *, const float *, - const float *, const int *, float *, const int *); -void BLASFUNC(dtrmm)(const char *, const char *, const char *, const char *, const int *, const int *, const double *, - const double *, const int *, double *, const int *); -void BLASFUNC(qtrmm)(const char *, const char *, const char *, const char *, const int *, const int *, const double *, - const double *, const int *, double *, const int *); -void BLASFUNC(ctrmm)(const char *, const char *, const char *, const char *, const int *, const int *, const float *, - const float *, const int *, float *, const int *); -void BLASFUNC(ztrmm)(const char *, const char *, const char *, const char *, const int *, const int *, const double *, - const double *, const int *, double *, const int *); -void BLASFUNC(xtrmm)(const char *, const char *, const char *, const char *, const int *, const int *, const double *, - const double *, const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(strmm)(const char *, const char *, const char *, const char *, const int *, const int *, + const float *, const float *, const int *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(dtrmm)(const char *, const char *, const char *, const char *, const int *, const int *, + const double *, const double *, const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(qtrmm)(const char *, const char *, const char *, const char *, const int *, const int *, + const double *, const double *, const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(ctrmm)(const char *, const char *, const char *, const char *, const int *, const int *, + const float *, const float *, const int *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(ztrmm)(const char *, const char *, const char *, const char *, const int *, const int *, + const double *, const double *, const int *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(xtrmm)(const char *, const char *, const char *, const char *, const int *, const int *, + const double *, const double *, const int *, double *, const int *); -void BLASFUNC(ssymm)(const char *, const char *, const int *, const int *, const float *, const float *, const int *, - const float *, const int *, const float *, float *, const int *); -void BLASFUNC(dsymm)(const char *, const char *, const int *, const int *, const double *, const double *, const int *, - const double *, const int *, const double *, double *, const int *); -void BLASFUNC(qsymm)(const char *, const char *, const int *, const int *, const double *, const double *, const int *, - const double *, const int *, const double *, double *, const int *); -void BLASFUNC(csymm)(const char *, const char *, const int *, const int *, const float *, const float *, const int *, - const float *, const int *, const float *, float *, const int *); -void BLASFUNC(zsymm)(const char *, const char *, const int *, const int *, const double *, const double *, const int *, - const double *, const int *, const double *, double *, const int *); -void BLASFUNC(xsymm)(const char *, const char *, const int *, const int *, const double *, const double *, const int *, - const double *, const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(ssymm)(const char *, const char *, const int *, const int *, const float *, const float *, + const int *, const float *, const int *, const float *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(dsymm)(const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, const int *, const double *, double *, + const int *); +EIGEN_BLAS_API void BLASFUNC(qsymm)(const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, const int *, const double *, double *, + const int *); +EIGEN_BLAS_API void BLASFUNC(csymm)(const char *, const char *, const int *, const int *, const float *, const float *, + const int *, const float *, const int *, const float *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(zsymm)(const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, const int *, const double *, double *, + const int *); +EIGEN_BLAS_API void BLASFUNC(xsymm)(const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, const int *, const double *, double *, + const int *); -void BLASFUNC(csymm3m)(char *, char *, int *, int *, float *, float *, int *, float *, int *, float *, float *, int *); -void BLASFUNC(zsymm3m)(char *, char *, int *, int *, double *, double *, int *, double *, int *, double *, double *, - int *); -void BLASFUNC(xsymm3m)(char *, char *, int *, int *, double *, double *, int *, double *, int *, double *, double *, - int *); +EIGEN_BLAS_API void BLASFUNC(csymm3m)(char *, char *, int *, int *, float *, float *, int *, float *, int *, float *, + float *, int *); +EIGEN_BLAS_API void BLASFUNC(zsymm3m)(char *, char *, int *, int *, double *, double *, int *, double *, int *, + double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xsymm3m)(char *, char *, int *, int *, double *, double *, int *, double *, int *, + double *, double *, int *); -void BLASFUNC(ssyrk)(const char *, const char *, const int *, const int *, const float *, const float *, const int *, - const float *, float *, const int *); -void BLASFUNC(dsyrk)(const char *, const char *, const int *, const int *, const double *, const double *, const int *, - const double *, double *, const int *); -void BLASFUNC(qsyrk)(const char *, const char *, const int *, const int *, const double *, const double *, const int *, - const double *, double *, const int *); -void BLASFUNC(csyrk)(const char *, const char *, const int *, const int *, const float *, const float *, const int *, - const float *, float *, const int *); -void BLASFUNC(zsyrk)(const char *, const char *, const int *, const int *, const double *, const double *, const int *, - const double *, double *, const int *); -void BLASFUNC(xsyrk)(const char *, const char *, const int *, const int *, const double *, const double *, const int *, - const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(ssyrk)(const char *, const char *, const int *, const int *, const float *, const float *, + const int *, const float *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(dsyrk)(const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(qsyrk)(const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(csyrk)(const char *, const char *, const int *, const int *, const float *, const float *, + const int *, const float *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(zsyrk)(const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(xsyrk)(const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, double *, const int *); -void BLASFUNC(ssyr2k)(const char *, const char *, const int *, const int *, const float *, const float *, const int *, - const float *, const int *, const float *, float *, const int *); -void BLASFUNC(dsyr2k)(const char *, const char *, const int *, const int *, const double *, const double *, const int *, - const double *, const int *, const double *, double *, const int *); -void BLASFUNC(qsyr2k)(const char *, const char *, const int *, const int *, const double *, const double *, const int *, - const double *, const int *, const double *, double *, const int *); -void BLASFUNC(csyr2k)(const char *, const char *, const int *, const int *, const float *, const float *, const int *, - const float *, const int *, const float *, float *, const int *); -void BLASFUNC(zsyr2k)(const char *, const char *, const int *, const int *, const double *, const double *, const int *, - const double *, const int *, const double *, double *, const int *); -void BLASFUNC(xsyr2k)(const char *, const char *, const int *, const int *, const double *, const double *, const int *, - const double *, const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(ssyr2k)(const char *, const char *, const int *, const int *, const float *, const float *, + const int *, const float *, const int *, const float *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(dsyr2k)(const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, const int *, const double *, double *, + const int *); +EIGEN_BLAS_API void BLASFUNC(qsyr2k)(const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, const int *, const double *, double *, + const int *); +EIGEN_BLAS_API void BLASFUNC(csyr2k)(const char *, const char *, const int *, const int *, const float *, const float *, + const int *, const float *, const int *, const float *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(zsyr2k)(const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, const int *, const double *, double *, + const int *); +EIGEN_BLAS_API void BLASFUNC(xsyr2k)(const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, const int *, const double *, double *, + const int *); -void BLASFUNC(chemm)(const char *, const char *, const int *, const int *, const float *, const float *, const int *, - const float *, const int *, const float *, float *, const int *); -void BLASFUNC(zhemm)(const char *, const char *, const int *, const int *, const double *, const double *, const int *, - const double *, const int *, const double *, double *, const int *); -void BLASFUNC(xhemm)(const char *, const char *, const int *, const int *, const double *, const double *, const int *, - const double *, const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(chemm)(const char *, const char *, const int *, const int *, const float *, const float *, + const int *, const float *, const int *, const float *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(zhemm)(const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, const int *, const double *, double *, + const int *); +EIGEN_BLAS_API void BLASFUNC(xhemm)(const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, const int *, const double *, double *, + const int *); -void BLASFUNC(chemm3m)(char *, char *, int *, int *, float *, float *, int *, float *, int *, float *, float *, int *); -void BLASFUNC(zhemm3m)(char *, char *, int *, int *, double *, double *, int *, double *, int *, double *, double *, - int *); -void BLASFUNC(xhemm3m)(char *, char *, int *, int *, double *, double *, int *, double *, int *, double *, double *, - int *); +EIGEN_BLAS_API void BLASFUNC(chemm3m)(char *, char *, int *, int *, float *, float *, int *, float *, int *, float *, + float *, int *); +EIGEN_BLAS_API void BLASFUNC(zhemm3m)(char *, char *, int *, int *, double *, double *, int *, double *, int *, + double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xhemm3m)(char *, char *, int *, int *, double *, double *, int *, double *, int *, + double *, double *, int *); -void BLASFUNC(cherk)(const char *, const char *, const int *, const int *, const float *, const float *, const int *, - const float *, float *, const int *); -void BLASFUNC(zherk)(const char *, const char *, const int *, const int *, const double *, const double *, const int *, - const double *, double *, const int *); -void BLASFUNC(xherk)(const char *, const char *, const int *, const int *, const double *, const double *, const int *, - const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(cherk)(const char *, const char *, const int *, const int *, const float *, const float *, + const int *, const float *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(zherk)(const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(xherk)(const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, double *, const int *); -void BLASFUNC(cher2k)(const char *, const char *, const int *, const int *, const float *, const float *, const int *, - const float *, const int *, const float *, float *, const int *); -void BLASFUNC(zher2k)(const char *, const char *, const int *, const int *, const double *, const double *, const int *, - const double *, const int *, const double *, double *, const int *); -void BLASFUNC(xher2k)(const char *, const char *, const int *, const int *, const double *, const double *, const int *, - const double *, const int *, const double *, double *, const int *); -void BLASFUNC(cher2m)(const char *, const char *, const char *, const int *, const int *, const float *, const float *, - const int *, const float *, const int *, const float *, float *, const int *); -void BLASFUNC(zher2m)(const char *, const char *, const char *, const int *, const int *, const double *, - const double *, const int *, const double *, const int *, const double *, double *, const int *); -void BLASFUNC(xher2m)(const char *, const char *, const char *, const int *, const int *, const double *, - const double *, const int *, const double *, const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(cher2k)(const char *, const char *, const int *, const int *, const float *, const float *, + const int *, const float *, const int *, const float *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(zher2k)(const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, const int *, const double *, double *, + const int *); +EIGEN_BLAS_API void BLASFUNC(xher2k)(const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, const int *, const double *, double *, + const int *); +EIGEN_BLAS_API void BLASFUNC(cher2m)(const char *, const char *, const char *, const int *, const int *, const float *, + const float *, const int *, const float *, const int *, const float *, float *, + const int *); +EIGEN_BLAS_API void BLASFUNC(zher2m)(const char *, const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, const int *, const double *, double *, + const int *); +EIGEN_BLAS_API void BLASFUNC(xher2m)(const char *, const char *, const char *, const int *, const int *, const double *, + const double *, const int *, const double *, const int *, const double *, double *, + const int *); -void BLASFUNC(sgemmtr)(const char *, const char *, const char *, const int *, const int *, const float *, const float *, - const int *, const float *, const int *, const float *, float *, const int *); -void BLASFUNC(dgemmtr)(const char *, const char *, const char *, const int *, const int *, const double *, - const double *, const int *, const double *, const int *, const double *, double *, const int *); -void BLASFUNC(qgemmtr)(const char *, const char *, const char *, const int *, const int *, const double *, - const double *, const int *, const double *, const int *, const double *, double *, const int *); -void BLASFUNC(cgemmtr)(const char *, const char *, const char *, const int *, const int *, const float *, const float *, - const int *, const float *, const int *, const float *, float *, const int *); -void BLASFUNC(zgemmtr)(const char *, const char *, const char *, const int *, const int *, const double *, - const double *, const int *, const double *, const int *, const double *, double *, const int *); -void BLASFUNC(xgemmtr)(const char *, const char *, const char *, const int *, const int *, const double *, - const double *, const int *, const double *, const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(sgemmtr)(const char *, const char *, const char *, const int *, const int *, const float *, + const float *, const int *, const float *, const int *, const float *, float *, + const int *); +EIGEN_BLAS_API void BLASFUNC(dgemmtr)(const char *, const char *, const char *, const int *, const int *, + const double *, const double *, const int *, const double *, const int *, + const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(qgemmtr)(const char *, const char *, const char *, const int *, const int *, + const double *, const double *, const int *, const double *, const int *, + const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(cgemmtr)(const char *, const char *, const char *, const int *, const int *, const float *, + const float *, const int *, const float *, const int *, const float *, float *, + const int *); +EIGEN_BLAS_API void BLASFUNC(zgemmtr)(const char *, const char *, const char *, const int *, const int *, + const double *, const double *, const int *, const double *, const int *, + const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(xgemmtr)(const char *, const char *, const char *, const int *, const int *, + const double *, const double *, const int *, const double *, const int *, + const double *, double *, const int *); #ifdef __cplusplus } diff --git a/lapack/CMakeLists.txt b/lapack/CMakeLists.txt index b0b5570e2..bede443db 100644 --- a/lapack/CMakeLists.txt +++ b/lapack/CMakeLists.txt @@ -102,6 +102,7 @@ list(APPEND EIGEN_LAPACK_TARGETS eigen_lapack_static) if (EIGEN_BUILD_SHARED_LIBS) add_library(eigen_lapack SHARED ${EigenLapack_SRCS}) + target_compile_definitions(eigen_lapack PUBLIC "EIGEN_BUILD_DLL") list(APPEND EIGEN_LAPACK_TARGETS eigen_lapack) target_link_libraries(eigen_lapack eigen_blas) endif() diff --git a/lapack/lapack.h b/lapack/lapack.h index 88fdb9895..49443eb75 100644 --- a/lapack/lapack.h +++ b/lapack/lapack.h @@ -7,127 +7,131 @@ extern "C" { #endif -void BLASFUNC(csymv)(const char *, const int *, const float *, const float *, const int *, const float *, const int *, - const float *, float *, const int *); -void BLASFUNC(zsymv)(const char *, const int *, const double *, const double *, const int *, const double *, - const int *, const double *, double *, const int *); -void BLASFUNC(xsymv)(const char *, const int *, const double *, const double *, const int *, const double *, - const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(csymv)(const char *, const int *, const float *, const float *, const int *, const float *, + const int *, const float *, float *, const int *); +EIGEN_BLAS_API void BLASFUNC(zsymv)(const char *, const int *, const double *, const double *, const int *, + const double *, const int *, const double *, double *, const int *); +EIGEN_BLAS_API void BLASFUNC(xsymv)(const char *, const int *, const double *, const double *, const int *, + const double *, const int *, const double *, double *, const int *); -void BLASFUNC(cspmv)(char *, int *, float *, float *, float *, int *, float *, float *, int *); -void BLASFUNC(zspmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *); -void BLASFUNC(xspmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(cspmv)(char *, int *, float *, float *, float *, int *, float *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(zspmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xspmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *); -void BLASFUNC(csyr)(char *, int *, float *, float *, int *, float *, int *); -void BLASFUNC(zsyr)(char *, int *, double *, double *, int *, double *, int *); -void BLASFUNC(xsyr)(char *, int *, double *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(csyr)(char *, int *, float *, float *, int *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(zsyr)(char *, int *, double *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(xsyr)(char *, int *, double *, double *, int *, double *, int *); -void BLASFUNC(cspr)(char *, int *, float *, float *, int *, float *); -void BLASFUNC(zspr)(char *, int *, double *, double *, int *, double *); -void BLASFUNC(xspr)(char *, int *, double *, double *, int *, double *); +EIGEN_BLAS_API void BLASFUNC(cspr)(char *, int *, float *, float *, int *, float *); +EIGEN_BLAS_API void BLASFUNC(zspr)(char *, int *, double *, double *, int *, double *); +EIGEN_BLAS_API void BLASFUNC(xspr)(char *, int *, double *, double *, int *, double *); -void BLASFUNC(sgemt)(char *, int *, int *, float *, float *, int *, float *, int *); -void BLASFUNC(dgemt)(char *, int *, int *, double *, double *, int *, double *, int *); -void BLASFUNC(cgemt)(char *, int *, int *, float *, float *, int *, float *, int *); -void BLASFUNC(zgemt)(char *, int *, int *, double *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(sgemt)(char *, int *, int *, float *, float *, int *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(dgemt)(char *, int *, int *, double *, double *, int *, double *, int *); +EIGEN_BLAS_API void BLASFUNC(cgemt)(char *, int *, int *, float *, float *, int *, float *, int *); +EIGEN_BLAS_API void BLASFUNC(zgemt)(char *, int *, int *, double *, double *, int *, double *, int *); -void BLASFUNC(sgema)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *, float *, int *); -void BLASFUNC(dgema)(char *, char *, int *, int *, double *, double *, int *, double *, double *, int *, double *, - int *); -void BLASFUNC(cgema)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *, float *, int *); -void BLASFUNC(zgema)(char *, char *, int *, int *, double *, double *, int *, double *, double *, int *, double *, - int *); +EIGEN_BLAS_API void BLASFUNC(sgema)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *, + float *, int *); +EIGEN_BLAS_API void BLASFUNC(dgema)(char *, char *, int *, int *, double *, double *, int *, double *, double *, int *, + double *, int *); +EIGEN_BLAS_API void BLASFUNC(cgema)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *, + float *, int *); +EIGEN_BLAS_API void BLASFUNC(zgema)(char *, char *, int *, int *, double *, double *, int *, double *, double *, int *, + double *, int *); -void BLASFUNC(sgems)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *, float *, int *); -void BLASFUNC(dgems)(char *, char *, int *, int *, double *, double *, int *, double *, double *, int *, double *, - int *); -void BLASFUNC(cgems)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *, float *, int *); -void BLASFUNC(zgems)(char *, char *, int *, int *, double *, double *, int *, double *, double *, int *, double *, - int *); +EIGEN_BLAS_API void BLASFUNC(sgems)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *, + float *, int *); +EIGEN_BLAS_API void BLASFUNC(dgems)(char *, char *, int *, int *, double *, double *, int *, double *, double *, int *, + double *, int *); +EIGEN_BLAS_API void BLASFUNC(cgems)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *, + float *, int *); +EIGEN_BLAS_API void BLASFUNC(zgems)(char *, char *, int *, int *, double *, double *, int *, double *, double *, int *, + double *, int *); -void BLASFUNC(sgetf2)(int *, int *, float *, int *, int *, int *); -void BLASFUNC(dgetf2)(int *, int *, double *, int *, int *, int *); -void BLASFUNC(qgetf2)(int *, int *, double *, int *, int *, int *); -void BLASFUNC(cgetf2)(int *, int *, float *, int *, int *, int *); -void BLASFUNC(zgetf2)(int *, int *, double *, int *, int *, int *); -void BLASFUNC(xgetf2)(int *, int *, double *, int *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(sgetf2)(int *, int *, float *, int *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(dgetf2)(int *, int *, double *, int *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(qgetf2)(int *, int *, double *, int *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(cgetf2)(int *, int *, float *, int *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(zgetf2)(int *, int *, double *, int *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(xgetf2)(int *, int *, double *, int *, int *, int *); -void BLASFUNC(sgetrf)(int *, int *, float *, int *, int *, int *); -void BLASFUNC(dgetrf)(int *, int *, double *, int *, int *, int *); -void BLASFUNC(qgetrf)(int *, int *, double *, int *, int *, int *); -void BLASFUNC(cgetrf)(int *, int *, float *, int *, int *, int *); -void BLASFUNC(zgetrf)(int *, int *, double *, int *, int *, int *); -void BLASFUNC(xgetrf)(int *, int *, double *, int *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(sgetrf)(int *, int *, float *, int *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(dgetrf)(int *, int *, double *, int *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(qgetrf)(int *, int *, double *, int *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(cgetrf)(int *, int *, float *, int *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(zgetrf)(int *, int *, double *, int *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(xgetrf)(int *, int *, double *, int *, int *, int *); -void BLASFUNC(slaswp)(int *, float *, int *, int *, int *, int *, int *); -void BLASFUNC(dlaswp)(int *, double *, int *, int *, int *, int *, int *); -void BLASFUNC(qlaswp)(int *, double *, int *, int *, int *, int *, int *); -void BLASFUNC(claswp)(int *, float *, int *, int *, int *, int *, int *); -void BLASFUNC(zlaswp)(int *, double *, int *, int *, int *, int *, int *); -void BLASFUNC(xlaswp)(int *, double *, int *, int *, int *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(slaswp)(int *, float *, int *, int *, int *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(dlaswp)(int *, double *, int *, int *, int *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(qlaswp)(int *, double *, int *, int *, int *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(claswp)(int *, float *, int *, int *, int *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(zlaswp)(int *, double *, int *, int *, int *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(xlaswp)(int *, double *, int *, int *, int *, int *, int *); -void BLASFUNC(sgetrs)(char *, int *, int *, float *, int *, int *, float *, int *, int *); -void BLASFUNC(dgetrs)(char *, int *, int *, double *, int *, int *, double *, int *, int *); -void BLASFUNC(qgetrs)(char *, int *, int *, double *, int *, int *, double *, int *, int *); -void BLASFUNC(cgetrs)(char *, int *, int *, float *, int *, int *, float *, int *, int *); -void BLASFUNC(zgetrs)(char *, int *, int *, double *, int *, int *, double *, int *, int *); -void BLASFUNC(xgetrs)(char *, int *, int *, double *, int *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(sgetrs)(char *, int *, int *, float *, int *, int *, float *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(dgetrs)(char *, int *, int *, double *, int *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(qgetrs)(char *, int *, int *, double *, int *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(cgetrs)(char *, int *, int *, float *, int *, int *, float *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(zgetrs)(char *, int *, int *, double *, int *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(xgetrs)(char *, int *, int *, double *, int *, int *, double *, int *, int *); -void BLASFUNC(sgesv)(int *, int *, float *, int *, int *, float *, int *, int *); -void BLASFUNC(dgesv)(int *, int *, double *, int *, int *, double *, int *, int *); -void BLASFUNC(qgesv)(int *, int *, double *, int *, int *, double *, int *, int *); -void BLASFUNC(cgesv)(int *, int *, float *, int *, int *, float *, int *, int *); -void BLASFUNC(zgesv)(int *, int *, double *, int *, int *, double *, int *, int *); -void BLASFUNC(xgesv)(int *, int *, double *, int *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(sgesv)(int *, int *, float *, int *, int *, float *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(dgesv)(int *, int *, double *, int *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(qgesv)(int *, int *, double *, int *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(cgesv)(int *, int *, float *, int *, int *, float *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(zgesv)(int *, int *, double *, int *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(xgesv)(int *, int *, double *, int *, int *, double *, int *, int *); -void BLASFUNC(spotf2)(char *, int *, float *, int *, int *); -void BLASFUNC(dpotf2)(char *, int *, double *, int *, int *); -void BLASFUNC(qpotf2)(char *, int *, double *, int *, int *); -void BLASFUNC(cpotf2)(char *, int *, float *, int *, int *); -void BLASFUNC(zpotf2)(char *, int *, double *, int *, int *); -void BLASFUNC(xpotf2)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(spotf2)(char *, int *, float *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(dpotf2)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(qpotf2)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(cpotf2)(char *, int *, float *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(zpotf2)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(xpotf2)(char *, int *, double *, int *, int *); -void BLASFUNC(spotrf)(char *, int *, float *, int *, int *); -void BLASFUNC(dpotrf)(char *, int *, double *, int *, int *); -void BLASFUNC(qpotrf)(char *, int *, double *, int *, int *); -void BLASFUNC(cpotrf)(char *, int *, float *, int *, int *); -void BLASFUNC(zpotrf)(char *, int *, double *, int *, int *); -void BLASFUNC(xpotrf)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(spotrf)(char *, int *, float *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(dpotrf)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(qpotrf)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(cpotrf)(char *, int *, float *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(zpotrf)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(xpotrf)(char *, int *, double *, int *, int *); -void BLASFUNC(slauu2)(char *, int *, float *, int *, int *); -void BLASFUNC(dlauu2)(char *, int *, double *, int *, int *); -void BLASFUNC(qlauu2)(char *, int *, double *, int *, int *); -void BLASFUNC(clauu2)(char *, int *, float *, int *, int *); -void BLASFUNC(zlauu2)(char *, int *, double *, int *, int *); -void BLASFUNC(xlauu2)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(slauu2)(char *, int *, float *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(dlauu2)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(qlauu2)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(clauu2)(char *, int *, float *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(zlauu2)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(xlauu2)(char *, int *, double *, int *, int *); -void BLASFUNC(slauum)(char *, int *, float *, int *, int *); -void BLASFUNC(dlauum)(char *, int *, double *, int *, int *); -void BLASFUNC(qlauum)(char *, int *, double *, int *, int *); -void BLASFUNC(clauum)(char *, int *, float *, int *, int *); -void BLASFUNC(zlauum)(char *, int *, double *, int *, int *); -void BLASFUNC(xlauum)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(slauum)(char *, int *, float *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(dlauum)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(qlauum)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(clauum)(char *, int *, float *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(zlauum)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(xlauum)(char *, int *, double *, int *, int *); -void BLASFUNC(strti2)(char *, char *, int *, float *, int *, int *); -void BLASFUNC(dtrti2)(char *, char *, int *, double *, int *, int *); -void BLASFUNC(qtrti2)(char *, char *, int *, double *, int *, int *); -void BLASFUNC(ctrti2)(char *, char *, int *, float *, int *, int *); -void BLASFUNC(ztrti2)(char *, char *, int *, double *, int *, int *); -void BLASFUNC(xtrti2)(char *, char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(strti2)(char *, char *, int *, float *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(dtrti2)(char *, char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(qtrti2)(char *, char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(ctrti2)(char *, char *, int *, float *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(ztrti2)(char *, char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(xtrti2)(char *, char *, int *, double *, int *, int *); -void BLASFUNC(strtri)(char *, char *, int *, float *, int *, int *); -void BLASFUNC(dtrtri)(char *, char *, int *, double *, int *, int *); -void BLASFUNC(qtrtri)(char *, char *, int *, double *, int *, int *); -void BLASFUNC(ctrtri)(char *, char *, int *, float *, int *, int *); -void BLASFUNC(ztrtri)(char *, char *, int *, double *, int *, int *); -void BLASFUNC(xtrtri)(char *, char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(strtri)(char *, char *, int *, float *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(dtrtri)(char *, char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(qtrtri)(char *, char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(ctrtri)(char *, char *, int *, float *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(ztrtri)(char *, char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(xtrtri)(char *, char *, int *, double *, int *, int *); -void BLASFUNC(spotri)(char *, int *, float *, int *, int *); -void BLASFUNC(dpotri)(char *, int *, double *, int *, int *); -void BLASFUNC(qpotri)(char *, int *, double *, int *, int *); -void BLASFUNC(cpotri)(char *, int *, float *, int *, int *); -void BLASFUNC(zpotri)(char *, int *, double *, int *, int *); -void BLASFUNC(xpotri)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(spotri)(char *, int *, float *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(dpotri)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(qpotri)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(cpotri)(char *, int *, float *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(zpotri)(char *, int *, double *, int *, int *); +EIGEN_BLAS_API void BLASFUNC(xpotri)(char *, int *, double *, int *, int *); #ifdef __cplusplus } diff --git a/lapack/svd.inc b/lapack/svd.inc index 262c5c696..795cfb45e 100644 --- a/lapack/svd.inc +++ b/lapack/svd.inc @@ -56,27 +56,29 @@ EIGEN_LAPACK_FUNC(gesdd) PlainMatrixType mat(*m, *n); mat = matrix(a, *m, *n, *lda); - int option = *jobz == 'A' ? Eigen::ComputeFullU | Eigen::ComputeFullV - : *jobz == 'S' ? Eigen::ComputeThinU | Eigen::ComputeThinV - : *jobz == 'O' ? Eigen::ComputeThinU | Eigen::ComputeThinV - : 0; - - Eigen::BDCSVD svd(mat, option); - - make_vector(s, diag_size) = svd.singularValues().head(diag_size); - if (*jobz == 'A') { + Eigen::BDCSVD svd(mat); + make_vector(s, diag_size) = svd.singularValues().head(diag_size); matrix(u, *m, *m, *ldu) = svd.matrixU(); matrix(vt, *n, *n, *ldvt) = svd.matrixV().adjoint(); } else if (*jobz == 'S') { + Eigen::BDCSVD svd(mat); + make_vector(s, diag_size) = svd.singularValues().head(diag_size); matrix(u, *m, diag_size, *ldu) = svd.matrixU(); matrix(vt, diag_size, *n, *ldvt) = svd.matrixV().adjoint(); } else if (*jobz == 'O' && *m >= *n) { + Eigen::BDCSVD svd(mat); + make_vector(s, diag_size) = svd.singularValues().head(diag_size); matrix(a, *m, *n, *lda) = svd.matrixU(); matrix(vt, *n, *n, *ldvt) = svd.matrixV().adjoint(); } else if (*jobz == 'O') { + Eigen::BDCSVD svd(mat); + make_vector(s, diag_size) = svd.singularValues().head(diag_size); matrix(u, *m, *m, *ldu) = svd.matrixU(); matrix(a, diag_size, *n, *lda) = svd.matrixV().adjoint(); + } else { + Eigen::BDCSVD svd(mat); + make_vector(s, diag_size) = svd.singularValues().head(diag_size); } } diff --git a/scripts/msvc_setup.ps1 b/scripts/msvc_setup.ps1 index e2d06422e..3890a4587 100644 --- a/scripts/msvc_setup.ps1 +++ b/scripts/msvc_setup.ps1 @@ -1,9 +1,6 @@ # Powershell script to set up MSVC environment. param ($EIGEN_CI_MSVC_ARCH, $EIGEN_CI_MSVC_VER) - -Set-PSDebug -Trace 1 - function Get-ScriptDirectory { Split-Path $MyInvocation.ScriptName } # Set defaults if not already set.