mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-01-18 17:31:19 +01:00
Fix DLL builds and c++ lapack declarations.
This commit is contained in:
committed by
Rasmus Munk Larsen
parent
3abaabb999
commit
e1f1a608be
@@ -19,9 +19,10 @@ add_library(eigen_blas_static STATIC ${EigenBlas_SRCS})
|
||||
list(APPEND EIGEN_BLAS_TARGETS eigen_blas_static)
|
||||
|
||||
if (EIGEN_BUILD_SHARED_LIBS)
|
||||
add_library(eigen_blas SHARED ${EigenBlas_SRCS})
|
||||
add_library(eigen_blas SHARED ${EigenBlas_SRCS} "eigen_blas.def")
|
||||
target_compile_definitions(eigen_blas PUBLIC "EIGEN_BLAS_BUILD_DLL")
|
||||
set_target_properties(eigen_blas PROPERTIES CXX_VISIBILITY_PRESET hidden)
|
||||
list(APPEND EIGEN_BLAS_TARGETS eigen_blas)
|
||||
target_compile_definitions(eigen_blas PUBLIC "EIGEN_BUILD_DLL")
|
||||
endif()
|
||||
|
||||
foreach(target IN LISTS EIGEN_BLAS_TARGETS)
|
||||
|
||||
12
blas/blas.h
12
blas/blas.h
@@ -2,13 +2,15 @@
|
||||
#define BLAS_H
|
||||
|
||||
#if defined(_WIN32)
|
||||
#if defined(EIGEN_BUILD_DLL)
|
||||
#if defined(EIGEN_BLAS_BUILD_DLL)
|
||||
#define EIGEN_BLAS_API __declspec(dllexport)
|
||||
#elif defined(EIGEN_LINK_DLL)
|
||||
#elif defined(EIGEN_BLAS_LINK_DLL)
|
||||
#define EIGEN_BLAS_API __declspec(dllimport)
|
||||
#else
|
||||
#define EIGEN_BLAS_API
|
||||
#endif
|
||||
#elif ((defined(__GNUC__) && __GNUC__ >= 4) || defined(__clang__)) && defined(EIGEN_BLAS_BUILD_DLL)
|
||||
#define EIGEN_BLAS_API __attribute__((visibility("default")))
|
||||
#else
|
||||
#define EIGEN_BLAS_API
|
||||
#endif
|
||||
@@ -27,6 +29,7 @@ typedef long BLASLONG;
|
||||
typedef unsigned long BLASULONG;
|
||||
#endif
|
||||
|
||||
EIGEN_BLAS_API int BLASFUNC(lsame)(const char *, const char *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xerbla)(const char *, int *info);
|
||||
|
||||
EIGEN_BLAS_API float BLASFUNC(sdot)(int *, float *, int *, float *, int *);
|
||||
@@ -36,6 +39,11 @@ 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 *);
|
||||
|
||||
EIGEN_BLAS_API void BLASFUNC(cdotu)(int *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cdotc)(int *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zdotu)(int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zdotc)(int *, double *, int *, double *, int *);
|
||||
|
||||
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 *);
|
||||
|
||||
222
blas/eigen_blas.def
Normal file
222
blas/eigen_blas.def
Normal file
@@ -0,0 +1,222 @@
|
||||
; Definition file for eigen_blas.dll.
|
||||
|
||||
LIBRARY eigen_blas
|
||||
EXPORTS
|
||||
; Utilities
|
||||
lsame_
|
||||
xerbla_
|
||||
|
||||
; Level 1
|
||||
saxpy_
|
||||
daxpy_
|
||||
caxpy_
|
||||
zaxpy_
|
||||
; caxpyc_
|
||||
; zaxpyc_
|
||||
scopy_
|
||||
dcopy_
|
||||
ccopy_
|
||||
zcopy_
|
||||
sdot_
|
||||
sdsdot_
|
||||
dsdot_
|
||||
ddot_
|
||||
cdotc_
|
||||
zdotc_
|
||||
cdotu_
|
||||
zdotu_
|
||||
cdotcw_
|
||||
zdotcw_
|
||||
cdotuw_
|
||||
zdotuw_
|
||||
snrm2_
|
||||
dnrm2_
|
||||
scnrm2_
|
||||
dznrm2_
|
||||
srot_
|
||||
drot_
|
||||
csrot_
|
||||
zdrot_
|
||||
srotg_
|
||||
drotg_
|
||||
crotg_
|
||||
zrotg_
|
||||
srotm_
|
||||
drotm_
|
||||
srotmg_
|
||||
drotmg_
|
||||
sscal_
|
||||
dscal_
|
||||
cscal_
|
||||
zscal_
|
||||
csscal_
|
||||
zdscal_
|
||||
sswap_
|
||||
dswap_
|
||||
cswap_
|
||||
zswap_
|
||||
sasum_
|
||||
scasum_
|
||||
dasum_
|
||||
dzasum_
|
||||
; ismax_
|
||||
; idmax_
|
||||
; icmax_
|
||||
; izmax_
|
||||
isamax_
|
||||
idamax_
|
||||
icamax_
|
||||
izamax_
|
||||
isamin_
|
||||
idamin_
|
||||
icamin_
|
||||
izamin_
|
||||
; ismin_
|
||||
; idmin_
|
||||
; icmin_
|
||||
; izmin_
|
||||
; samax_
|
||||
; damax_
|
||||
; scamax_
|
||||
; dzamax_
|
||||
; samin_
|
||||
; damin_
|
||||
; scamin_
|
||||
; dzamin_
|
||||
; smax_
|
||||
; dmax_
|
||||
; cmax_
|
||||
; zmax_
|
||||
; smin_
|
||||
; dmin_
|
||||
; cmin_
|
||||
; zmin_
|
||||
|
||||
|
||||
; Level 2
|
||||
sgemv_
|
||||
dgemv_
|
||||
cgemv_
|
||||
zgemv_
|
||||
sger_
|
||||
dger_
|
||||
cgerc_
|
||||
zgerc_
|
||||
cgeru_
|
||||
zgeru_
|
||||
ssymv_
|
||||
dsymv_
|
||||
ssyr_
|
||||
dsyr_
|
||||
ssyr2_
|
||||
dsyr2_
|
||||
; csyr2_
|
||||
; zsyr2_
|
||||
strmv_
|
||||
dtrmv_
|
||||
ctrmv_
|
||||
ztrmv_
|
||||
strsv_
|
||||
dtrsv_
|
||||
ctrsv_
|
||||
ztrsv_
|
||||
stpsv_
|
||||
dtpsv_
|
||||
ctpsv_
|
||||
ztpsv_
|
||||
stpmv_
|
||||
dtpmv_
|
||||
ctpmv_
|
||||
ztpmv_
|
||||
stbmv_
|
||||
dtbmv_
|
||||
ctbmv_
|
||||
ztbmv_
|
||||
stbsv_
|
||||
dtbsv_
|
||||
ctbsv_
|
||||
ztbsv_
|
||||
sspmv_
|
||||
dspmv_
|
||||
sspr_
|
||||
dspr_
|
||||
; cspr_
|
||||
; zspr_
|
||||
sspr2_
|
||||
dspr2_
|
||||
; cspr2_
|
||||
; zspr2_
|
||||
cher_
|
||||
zher_
|
||||
chpr_
|
||||
zhpr_
|
||||
cher2_
|
||||
zher2_
|
||||
chpr2_
|
||||
zhpr2_
|
||||
chemv_
|
||||
zhemv_
|
||||
chpmv_
|
||||
zhpmv_
|
||||
; snorm_
|
||||
; dnorm_
|
||||
; cnorm_
|
||||
; znorm_
|
||||
sgbmv_
|
||||
dgbmv_
|
||||
cgbmv_
|
||||
zgbmv_
|
||||
ssbmv_
|
||||
dsbmv_
|
||||
; csbmv_
|
||||
; zsbmv_
|
||||
chbmv_
|
||||
zhbmv_
|
||||
|
||||
; Level 3 BLAS
|
||||
sgemm_
|
||||
dgemm_
|
||||
cgemm_
|
||||
zgemm_
|
||||
; cgemm3m_
|
||||
; zgemm3m_
|
||||
; sge2mm_
|
||||
; dge2mm_
|
||||
; cge2mm_
|
||||
; zge2mm_
|
||||
ssymm_
|
||||
dsymm_
|
||||
csymm_
|
||||
zsymm_
|
||||
; csymm3m_
|
||||
; zsymm3m_
|
||||
ssyrk_
|
||||
dsyrk_
|
||||
csyrk_
|
||||
zsyrk_
|
||||
ssyr2k_
|
||||
dsyr2k_
|
||||
csyr2k_
|
||||
zsyr2k_
|
||||
strmm_
|
||||
dtrmm_
|
||||
ctrmm_
|
||||
ztrmm_
|
||||
strsm_
|
||||
dtrsm_
|
||||
ctrsm_
|
||||
ztrsm_
|
||||
chemm_
|
||||
zhemm_
|
||||
; chemm3m_
|
||||
; zhemm3m_
|
||||
cherk_
|
||||
zherk_
|
||||
cher2k_
|
||||
zher2k_
|
||||
; cher2m_
|
||||
; zher2m_
|
||||
sgemmtr_
|
||||
dgemmtr_
|
||||
cgemmtr_
|
||||
zgemmtr_
|
||||
@@ -1,6 +1,8 @@
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "blas.h"
|
||||
|
||||
#if (defined __GNUC__) && (!defined __MINGW32__) && (!defined __CYGWIN__)
|
||||
#define EIGEN_WEAK_LINKING __attribute__((weak))
|
||||
#else
|
||||
|
||||
@@ -22,9 +22,11 @@ add_custom_target(lapack)
|
||||
include_directories(../blas)
|
||||
|
||||
set(EigenLapack_SRCS
|
||||
dsecnd_INT_CPU_TIME.cpp second_INT_CPU_TIME.cpp single.cpp double.cpp complex_single.cpp complex_double.cpp ../blas/xerbla.cpp
|
||||
dsecnd_INT_CPU_TIME.cpp second_INT_CPU_TIME.cpp single.cpp double.cpp complex_single.cpp complex_double.cpp
|
||||
)
|
||||
|
||||
set(EIGEN_LAPACK_DEF "eigen_lapack_cpp.def")
|
||||
|
||||
if(EIGEN_Fortran_COMPILER_WORKS)
|
||||
|
||||
set(EigenLapack_SRCS ${EigenLapack_SRCS}
|
||||
@@ -40,6 +42,8 @@ set(EigenLapack_SRCS ${EigenLapack_SRCS}
|
||||
slamch.f dlamch.f
|
||||
)
|
||||
|
||||
set(EIGEN_LAPACK_DEF "eigen_lapack.def")
|
||||
|
||||
option(EIGEN_ENABLE_LAPACK_TESTS OFF "Enable the Lapack unit tests")
|
||||
|
||||
if(EIGEN_ENABLE_LAPACK_TESTS)
|
||||
@@ -98,13 +102,16 @@ endif()
|
||||
set(EIGEN_LAPACK_TARGETS "")
|
||||
|
||||
add_library(eigen_lapack_static STATIC ${EigenLapack_SRCS} ${ReferenceLapack_SRCS})
|
||||
target_link_libraries(eigen_lapack_static eigen_blas_static)
|
||||
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)
|
||||
add_library(eigen_lapack SHARED ${EigenLapack_SRCS} ${EIGEN_LAPACK_DEF})
|
||||
# Build LAPACK but link BLAS.
|
||||
target_compile_definitions(eigen_lapack PUBLIC "EIGEN_BLAS_LINK_DLL" "EIGEN_LAPACK_BUILD_DLL")
|
||||
target_link_libraries(eigen_lapack eigen_blas)
|
||||
set_target_properties(eigen_lapack PROPERTIES CXX_VISIBILITY_PRESET hidden)
|
||||
list(APPEND EIGEN_LAPACK_TARGETS eigen_lapack)
|
||||
endif()
|
||||
|
||||
foreach(target IN LISTS EIGEN_LAPACK_TARGETS)
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#include <Eigen/Cholesky>
|
||||
|
||||
// POTRF computes the Cholesky factorization of a real symmetric positive definite matrix A.
|
||||
EIGEN_LAPACK_FUNC(potrf)(char *uplo, int *n, RealScalar *pa, int *lda, int *info) {
|
||||
EIGEN_LAPACK_FUNC(potrf)(const char *uplo, int *n, RealScalar *pa, int *lda, int *info) {
|
||||
*info = 0;
|
||||
if (UPLO(*uplo) == INVALID)
|
||||
*info = -1;
|
||||
@@ -38,7 +38,8 @@ EIGEN_LAPACK_FUNC(potrf)(char *uplo, int *n, RealScalar *pa, int *lda, int *info
|
||||
// POTRS solves a system of linear equations A*X = B with a symmetric
|
||||
// positive definite matrix A using the Cholesky factorization
|
||||
// A = U**T*U or A = L*L**T computed by DPOTRF.
|
||||
EIGEN_LAPACK_FUNC(potrs)(char *uplo, int *n, int *nrhs, RealScalar *pa, int *lda, RealScalar *pb, int *ldb, int *info) {
|
||||
EIGEN_LAPACK_FUNC(potrs)
|
||||
(const char *uplo, int *n, int *nrhs, RealScalar *pa, int *lda, RealScalar *pb, int *ldb, int *info) {
|
||||
*info = 0;
|
||||
if (UPLO(*uplo) == INVALID)
|
||||
*info = -1;
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
#include <ctime>
|
||||
#endif
|
||||
|
||||
#include "lapack.h"
|
||||
|
||||
extern "C" {
|
||||
double dsecnd_();
|
||||
}
|
||||
|
||||
143
lapack/eigen_lapack.def
Normal file
143
lapack/eigen_lapack.def
Normal file
@@ -0,0 +1,143 @@
|
||||
; Definition file for eigen_lapack.dll.
|
||||
|
||||
LIBRARY eigen_lapack
|
||||
EXPORTS
|
||||
; Eigen C/C++ implementations
|
||||
; Utilities
|
||||
xerbla_
|
||||
|
||||
; Eigenvalues
|
||||
ssyev_
|
||||
dsyev_
|
||||
|
||||
; LU
|
||||
sgetrf_
|
||||
sgetrs_
|
||||
dgetrf_
|
||||
dgetrs_
|
||||
cgetrf_
|
||||
cgetrs_
|
||||
zgetrf_
|
||||
zgetrs_
|
||||
|
||||
; QR
|
||||
spotrf_
|
||||
spotrs_
|
||||
dpotrf_
|
||||
dpotrs_
|
||||
cpotrf_
|
||||
cpotrs_
|
||||
zpotrf_
|
||||
zpotrs_
|
||||
|
||||
; SVD
|
||||
sgesdd_
|
||||
sgesvd_
|
||||
dgesdd_
|
||||
dgesvd_
|
||||
cgesdd_
|
||||
cgesvd_
|
||||
zgesdd_
|
||||
zgesvd_
|
||||
|
||||
; Time
|
||||
second_
|
||||
dsecnd_
|
||||
|
||||
; Fortran implementations
|
||||
clacgv_
|
||||
zlacgv_
|
||||
sladiv_
|
||||
dladiv_
|
||||
cladiv_
|
||||
zladiv_
|
||||
slamch_
|
||||
dlamch_
|
||||
slamc3_
|
||||
dlamc3_
|
||||
slapy2_
|
||||
dlapy2_
|
||||
slapy3_
|
||||
dlapy3_
|
||||
slarf_
|
||||
dlarf_
|
||||
clarf_
|
||||
zlarf_
|
||||
slarfb_
|
||||
dlarfb_
|
||||
clarfb_
|
||||
zlarfb_
|
||||
slarfg_
|
||||
dlarfg_
|
||||
clarfg_
|
||||
zlarfg_
|
||||
slarft_
|
||||
dlarft_
|
||||
clarft_
|
||||
zlarft_
|
||||
ilaclc_
|
||||
ilaclr_
|
||||
iladlc_
|
||||
iladlr_
|
||||
ilaslc_
|
||||
ilaslr_
|
||||
ilazlc_
|
||||
ilazlr_
|
||||
|
||||
; Missing
|
||||
; csymv_
|
||||
; zsymv_
|
||||
; cspmv_
|
||||
; zspmv_
|
||||
; csyr_
|
||||
; zsyr_
|
||||
; cspr_
|
||||
; zspr_
|
||||
; sgemt_
|
||||
; dgemt_
|
||||
; cgemt_
|
||||
; zgemt_
|
||||
; sgema_
|
||||
; dgema_
|
||||
; cgema_
|
||||
; zgema_
|
||||
; sgems_
|
||||
; dgems_
|
||||
; cgems_
|
||||
; zgems_
|
||||
; sgetf2_
|
||||
; dgetf2_
|
||||
; cgetf2_
|
||||
; zgetf2_
|
||||
; slaswp_
|
||||
; dlaswp_
|
||||
; claswp_
|
||||
; zlaswp_
|
||||
; sgesv_
|
||||
; dgesv_
|
||||
; cgesv_
|
||||
; zgesv_
|
||||
; spotf2_
|
||||
; dpotf2_
|
||||
; cpotf2_
|
||||
; zpotf2_
|
||||
; slauu2_
|
||||
; dlauu2_
|
||||
; clauu2_
|
||||
; zlauu2_
|
||||
; slauum_
|
||||
; dlauum_
|
||||
; clauum_
|
||||
; zlauum_
|
||||
; strti2_
|
||||
; dtrti2_
|
||||
; ctrti2_
|
||||
; ztrti2_
|
||||
; strtri_
|
||||
; dtrtri_
|
||||
; ctrtri_
|
||||
; ztrtri_
|
||||
; spotri_
|
||||
; dpotri_
|
||||
; cpotri_
|
||||
; zpotri_
|
||||
143
lapack/eigen_lapack_cpp.def
Normal file
143
lapack/eigen_lapack_cpp.def
Normal file
@@ -0,0 +1,143 @@
|
||||
; Definition file for eigen_lapack.dll, containing only the C++ implementations.
|
||||
|
||||
LIBRARY eigen_lapack
|
||||
EXPORTS
|
||||
; Eigen C/C++ implementations
|
||||
; Utilities
|
||||
xerbla_
|
||||
|
||||
; Eigenvalues
|
||||
ssyev_
|
||||
dsyev_
|
||||
|
||||
; LU
|
||||
sgetrf_
|
||||
sgetrs_
|
||||
dgetrf_
|
||||
dgetrs_
|
||||
cgetrf_
|
||||
cgetrs_
|
||||
zgetrf_
|
||||
zgetrs_
|
||||
|
||||
; QR
|
||||
spotrf_
|
||||
spotrs_
|
||||
dpotrf_
|
||||
dpotrs_
|
||||
cpotrf_
|
||||
cpotrs_
|
||||
zpotrf_
|
||||
zpotrs_
|
||||
|
||||
; SVD
|
||||
sgesdd_
|
||||
sgesvd_
|
||||
dgesdd_
|
||||
dgesvd_
|
||||
cgesdd_
|
||||
cgesvd_
|
||||
zgesdd_
|
||||
zgesvd_
|
||||
|
||||
; Time
|
||||
second_
|
||||
dsecnd_
|
||||
|
||||
; Fortran implementations
|
||||
; clacgv_
|
||||
; zlacgv_
|
||||
; sladiv_
|
||||
; dladiv_
|
||||
; cladiv_
|
||||
; zladiv_
|
||||
; slamch_
|
||||
; dlamch_
|
||||
; slamc3_
|
||||
; dlamc3_
|
||||
; slapy2_
|
||||
; dlapy2_
|
||||
; slapy3_
|
||||
; dlapy3_
|
||||
; slarf_
|
||||
; dlarf_
|
||||
; clarf_
|
||||
; zlarf_
|
||||
; slarfb_
|
||||
; dlarfb_
|
||||
; clarfb_
|
||||
; zlarfb_
|
||||
; slarfg_
|
||||
; dlarfg_
|
||||
; clarfg_
|
||||
; zlarfg_
|
||||
; slarft_
|
||||
; dlarft_
|
||||
; clarft_
|
||||
; zlarft_
|
||||
; ilaclc_
|
||||
; ilaclr_
|
||||
; iladlc_
|
||||
; iladlr_
|
||||
; ilaslc_
|
||||
; ilaslr_
|
||||
; ilazlc_
|
||||
; ilazlr_
|
||||
|
||||
; Missing
|
||||
; csymv_
|
||||
; zsymv_
|
||||
; cspmv_
|
||||
; zspmv_
|
||||
; csyr_
|
||||
; zsyr_
|
||||
; cspr_
|
||||
; zspr_
|
||||
; sgemt_
|
||||
; dgemt_
|
||||
; cgemt_
|
||||
; zgemt_
|
||||
; sgema_
|
||||
; dgema_
|
||||
; cgema_
|
||||
; zgema_
|
||||
; sgems_
|
||||
; dgems_
|
||||
; cgems_
|
||||
; zgems_
|
||||
; sgetf2_
|
||||
; dgetf2_
|
||||
; cgetf2_
|
||||
; zgetf2_
|
||||
; slaswp_
|
||||
; dlaswp_
|
||||
; claswp_
|
||||
; zlaswp_
|
||||
; sgesv_
|
||||
; dgesv_
|
||||
; cgesv_
|
||||
; zgesv_
|
||||
; spotf2_
|
||||
; dpotf2_
|
||||
; cpotf2_
|
||||
; zpotf2_
|
||||
; slauu2_
|
||||
; dlauu2_
|
||||
; clauu2_
|
||||
; zlauu2_
|
||||
; slauum_
|
||||
; dlauum_
|
||||
; clauum_
|
||||
; zlauum_
|
||||
; strti2_
|
||||
; dtrti2_
|
||||
; ctrti2_
|
||||
; ztrti2_
|
||||
; strtri_
|
||||
; dtrtri_
|
||||
; ctrtri_
|
||||
; ztrtri_
|
||||
; spotri_
|
||||
; dpotri_
|
||||
; cpotri_
|
||||
; zpotri_
|
||||
@@ -12,7 +12,8 @@
|
||||
|
||||
// computes eigen values and vectors of a general N-by-N matrix A
|
||||
EIGEN_LAPACK_FUNC(syev)
|
||||
(char* jobz, char* uplo, int* n, Scalar* a, int* lda, Scalar* w, Scalar* /*work*/, int* lwork, int* info) {
|
||||
(const char* jobz, const char* uplo, int* n, RealScalar* ra, int* lda, RealScalar* rw, RealScalar* /*work*/, int* lwork,
|
||||
int* info) {
|
||||
// TODO exploit the work buffer
|
||||
bool query_size = *lwork == -1;
|
||||
|
||||
@@ -40,6 +41,9 @@ EIGEN_LAPACK_FUNC(syev)
|
||||
|
||||
if (*n == 0) return;
|
||||
|
||||
Scalar* a = reinterpret_cast<Scalar*>(ra);
|
||||
Scalar* w = reinterpret_cast<Scalar*>(rw);
|
||||
|
||||
PlainMatrixType mat(*n, *n);
|
||||
if (UPLO(*uplo) == UP)
|
||||
mat = matrix(a, *n, *n, *lda).adjoint();
|
||||
|
||||
271
lapack/lapack.h
271
lapack/lapack.h
@@ -3,135 +3,192 @@
|
||||
|
||||
#include "../blas/blas.h"
|
||||
|
||||
#if defined(_WIN32)
|
||||
#if defined(EIGEN_LAPACK_BUILD_DLL)
|
||||
#define EIGEN_LAPACK_API __declspec(dllexport)
|
||||
#elif defined(EIGEN_LAPACK_LINK_DLL)
|
||||
#define EIGEN_LAPACK_API __declspec(dllimport)
|
||||
#else
|
||||
#define EIGEN_LAPACK_API
|
||||
#endif
|
||||
#elif ((defined(__GNUC__) && __GNUC__ >= 4) || defined(__clang__)) && defined(EIGEN_LAPACK_BUILD_DLL)
|
||||
#define EIGEN_LAPACK_API __attribute__((visibility("default")))
|
||||
#else
|
||||
#define EIGEN_LAPACK_API
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(csymv)(const char *, const int *, const float *, const float *, const int *,
|
||||
const float *, const int *, const float *, float *, const int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zsymv)(const char *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
EIGEN_LAPACK_API 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(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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(cspmv)(char *, int *, float *, float *, float *, int *, float *, float *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zspmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(xspmv)(char *, int *, double *, double *, double *, int *, double *, 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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(csyr)(char *, int *, float *, float *, int *, float *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zsyr)(char *, int *, double *, double *, int *, double *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(xsyr)(char *, int *, double *, double *, int *, double *, int *);
|
||||
|
||||
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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(cspr)(char *, int *, float *, float *, int *, float *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zspr)(char *, int *, double *, double *, int *, double *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(xspr)(char *, int *, double *, double *, int *, double *);
|
||||
|
||||
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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(sgemt)(char *, int *, int *, float *, float *, int *, float *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dgemt)(char *, int *, int *, double *, double *, int *, double *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(cgemt)(char *, int *, int *, float *, float *, int *, float *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zgemt)(char *, int *, 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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(sgema)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *,
|
||||
float *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dgema)(char *, char *, int *, int *, double *, double *, int *, double *, double *,
|
||||
int *, double *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(cgema)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *,
|
||||
float *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zgema)(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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(sgems)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *,
|
||||
float *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dgems)(char *, char *, int *, int *, double *, double *, int *, double *, double *,
|
||||
int *, double *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(cgems)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *,
|
||||
float *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zgems)(char *, char *, int *, int *, double *, double *, int *, double *, double *,
|
||||
int *, double *, 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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(sgetf2)(int *, int *, float *, int *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dgetf2)(int *, int *, double *, int *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(qgetf2)(int *, int *, double *, int *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(cgetf2)(int *, int *, float *, int *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zgetf2)(int *, int *, double *, int *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(xgetf2)(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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(qgetrf)(int *, int *, double *, int *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(xgetrf)(int *, int *, double *, 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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(slaswp)(int *, float *, int *, int *, int *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dlaswp)(int *, double *, int *, int *, int *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(qlaswp)(int *, double *, int *, int *, int *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(claswp)(int *, float *, int *, int *, int *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zlaswp)(int *, double *, int *, int *, int *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(xlaswp)(int *, double *, int *, int *, int *, 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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(qgetrs)(char *, int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(xgetrs)(char *, 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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(sgesv)(int *, int *, float *, int *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dgesv)(int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(qgesv)(int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(cgesv)(int *, int *, float *, int *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zgesv)(int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(xgesv)(int *, int *, double *, int *, 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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(spotf2)(char *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dpotf2)(char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(qpotf2)(char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(cpotf2)(char *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zpotf2)(char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(xpotf2)(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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(qpotrf)(char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(xpotrf)(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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(slauu2)(char *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dlauu2)(char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(qlauu2)(char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(clauu2)(char *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zlauu2)(char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(xlauu2)(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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(slauum)(char *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dlauum)(char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(qlauum)(char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(clauum)(char *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zlauum)(char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(xlauum)(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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(strti2)(char *, char *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dtrti2)(char *, char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(qtrti2)(char *, char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(ctrti2)(char *, char *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(ztrti2)(char *, char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(xtrti2)(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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(strtri)(char *, char *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dtrtri)(char *, char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(qtrtri)(char *, char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(ctrtri)(char *, char *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(ztrtri)(char *, char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(xtrtri)(char *, 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 *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(spotri)(char *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dpotri)(char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(qpotri)(char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(cpotri)(char *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zpotri)(char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(xpotri)(char *, int *, double *, int *, int *);
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Eigen C++ implementations.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// Cholesky.
|
||||
EIGEN_LAPACK_API void BLASFUNC(spotrf)(const char *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dpotrf)(const char *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(cpotrf)(const char *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zpotrf)(const char *, int *, double *, int *, int *);
|
||||
|
||||
EIGEN_LAPACK_API void BLASFUNC(spotrs)(const char *, int *, int *, float *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dpotrs)(const char *, int *, int *, double *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(cpotrs)(const char *, int *, int *, float *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zpotrs)(const char *, int *, int *, double *, int *, double *, int *, int *);
|
||||
|
||||
// Eigenvalues.
|
||||
EIGEN_LAPACK_API void BLASFUNC(ssyev)(const char *, const char *, int *, float *, int *, float *, float *, int *,
|
||||
int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dsyev)(const char *, const char *, int *, double *, int *, double *, double *, int *,
|
||||
int *);
|
||||
|
||||
// LU.
|
||||
EIGEN_LAPACK_API void BLASFUNC(sgetrf)(int *, int *, float *, int *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dgetrf)(int *, int *, double *, int *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(cgetrf)(int *, int *, float *, int *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zgetrf)(int *, int *, double *, int *, int *, int *);
|
||||
|
||||
EIGEN_LAPACK_API void BLASFUNC(sgetrs)(const char *, int *, int *, float *, int *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dgetrs)(const char *, int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(cgetrs)(const char *, int *, int *, float *, int *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zgetrs)(const char *, int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
|
||||
// SVD.
|
||||
EIGEN_LAPACK_API void BLASFUNC(sgesdd)(const char *, int *, int *, float *, int *, float *, float *, int *, float *,
|
||||
int *, float *, int *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dgesdd)(const char *, int *, int *, double *, int *, double *, double *, int *, double *,
|
||||
int *, double *, int *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(cgesdd)(const char *, int *, int *, float *, int *, float *, float *, int *, float *,
|
||||
int *, float *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zgesdd)(const char *, int *, int *, double *, int *, double *, double *, int *, double *,
|
||||
int *, double *, int *, double *, int *, int *);
|
||||
|
||||
EIGEN_LAPACK_API void BLASFUNC(sgesvd)(const char *, const char *, int *, int *, float *, int *, float *, float *,
|
||||
int *, float *, int *, float *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(dgesvd)(const char *, const char *, int *, int *, double *, int *, double *, double *,
|
||||
int *, double *, int *, double *, int *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(cgesvd)(const char *, const char *, int *, int *, float *, int *, float *, float *,
|
||||
int *, float *, int *, float *, int *, float *, int *);
|
||||
EIGEN_LAPACK_API void BLASFUNC(zgesvd)(const char *, const char *, int *, int *, double *, int *, double *, double *,
|
||||
int *, double *, int *, double *, int *, double *, int *);
|
||||
|
||||
// Time.
|
||||
EIGEN_LAPACK_API float BLASFUNC(second)();
|
||||
EIGEN_LAPACK_API double BLASFUNC(dsecnd)();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ EIGEN_LAPACK_FUNC(getrf)(int *m, int *n, RealScalar *pa, int *lda, int *ipiv, in
|
||||
// A * X = B or A' * X = B
|
||||
// with a general N-by-N matrix A using the LU factorization computed by GETRF
|
||||
EIGEN_LAPACK_FUNC(getrs)
|
||||
(char *trans, int *n, int *nrhs, RealScalar *pa, int *lda, int *ipiv, RealScalar *pb, int *ldb, int *info) {
|
||||
(const char *trans, int *n, int *nrhs, RealScalar *pa, int *lda, int *ipiv, RealScalar *pb, int *ldb, int *info) {
|
||||
*info = 0;
|
||||
if (OP(*trans) == INVALID)
|
||||
*info = -1;
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
#include <ctime>
|
||||
#endif
|
||||
|
||||
#include "lapack.h"
|
||||
|
||||
extern "C" {
|
||||
float second_();
|
||||
}
|
||||
|
||||
@@ -18,8 +18,9 @@
|
||||
|
||||
// computes the singular values/vectors a general M-by-N matrix A using divide-and-conquer
|
||||
EIGEN_LAPACK_FUNC(gesdd)
|
||||
(char *jobz, int *m, int *n, Scalar *a, int *lda, RealScalar *s, Scalar *u, int *ldu, Scalar *vt, int *ldvt,
|
||||
Scalar * /*work*/, int *lwork, EIGEN_LAPACK_ARG_IF_COMPLEX(RealScalar * /*rwork*/) int * /*iwork*/, int *info) {
|
||||
(const char *jobz, int *m, int *n, RealScalar *ra, int *lda, RealScalar *s, RealScalar *ru, int *ldu, RealScalar *rvt,
|
||||
int *ldvt, RealScalar * /*work*/, int *lwork, EIGEN_LAPACK_ARG_IF_COMPLEX(RealScalar * /*rwork*/) int * /*iwork*/,
|
||||
int *info) {
|
||||
// TODO exploit the work buffer
|
||||
bool query_size = *lwork == -1;
|
||||
int diag_size = (std::min)(*m, *n);
|
||||
@@ -53,6 +54,10 @@ EIGEN_LAPACK_FUNC(gesdd)
|
||||
|
||||
if (*n == 0 || *m == 0) return;
|
||||
|
||||
Scalar *a = reinterpret_cast<Scalar *>(ra);
|
||||
Scalar *u = reinterpret_cast<Scalar *>(ru);
|
||||
Scalar *vt = reinterpret_cast<Scalar *>(rvt);
|
||||
|
||||
PlainMatrixType mat(*m, *n);
|
||||
mat = matrix(a, *m, *n, *lda);
|
||||
|
||||
@@ -84,8 +89,9 @@ EIGEN_LAPACK_FUNC(gesdd)
|
||||
|
||||
// computes the singular values/vectors a general M-by-N matrix A using two sided jacobi algorithm
|
||||
EIGEN_LAPACK_FUNC(gesvd)
|
||||
(char *jobu, char *jobv, int *m, int *n, Scalar *a, int *lda, RealScalar *s, Scalar *u, int *ldu, Scalar *vt, int *ldvt,
|
||||
Scalar * /*work*/, int *lwork, EIGEN_LAPACK_ARG_IF_COMPLEX(RealScalar * /*rwork*/) int *info) {
|
||||
(const char *jobu, const char *jobv, int *m, int *n, RealScalar *ra, int *lda, RealScalar *s, RealScalar *ru, int *ldu,
|
||||
RealScalar *rvt, int *ldvt, RealScalar * /*work*/, int *lwork,
|
||||
EIGEN_LAPACK_ARG_IF_COMPLEX(RealScalar * /*rwork*/) int *info) {
|
||||
// TODO exploit the work buffer
|
||||
bool query_size = *lwork == -1;
|
||||
int diag_size = (std::min)(*m, *n);
|
||||
@@ -118,6 +124,10 @@ EIGEN_LAPACK_FUNC(gesvd)
|
||||
|
||||
if (*n == 0 || *m == 0) return;
|
||||
|
||||
Scalar *a = reinterpret_cast<Scalar *>(ra);
|
||||
Scalar *u = reinterpret_cast<Scalar *>(ru);
|
||||
Scalar *vt = reinterpret_cast<Scalar *>(rvt);
|
||||
|
||||
PlainMatrixType mat(*m, *n);
|
||||
mat = matrix(a, *m, *n, *lda);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user