forked from tsai/mathnet-numerics
Browse Source
Squashed commit of the following:
commit 03291ba72c61e66e02c7a315e401210f96f9f20c
Author: Marcus Cuda <marcus@cuda.org>
Date: Thu Apr 18 11:18:03 2013 +0300
Tweaked managed EVD to be native compatible (use 1D arrays) and added naive EvD
commit d7bd0e7c93ba0284a7e8bee22f7d0c56f451febc
Author: Marcus Cuda <marcus@cuda.org>
Date: Wed Feb 6 12:46:53 2013 +0200
beginnings go an ATLAS provider
commit c4470fb99d5217a75526fc99e12c9119c12c3ec7
Author: Marcus Cuda <marcus@cuda.org>
Date: Tue Feb 5 08:13:25 2013 -0800
tested 32bit version
commit ea58e3bd936a6886130954e7ade63f066d6197cb
Author: Marcus Cuda <marcus@cuda.org>
Date: Tue Feb 5 05:26:20 2013 -0800
tweaked code and file name to compile with GCC and to run with mono on linux
v2
36 changed files with 3523 additions and 2005 deletions
@ -0,0 +1,101 @@ |
|||||
|
#include "wrapper_common.h" |
||||
|
#include "blas.h" |
||||
|
|
||||
|
#if GCC |
||||
|
extern "C" { |
||||
|
#endif |
||||
|
DLLEXPORT void s_axpy(const int n, const float alpha, const float x[], float y[]){ |
||||
|
cblas_saxpy(n, alpha, x, 1, y, 1); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT void d_axpy(const int n, const double alpha, const double x[], double y[]){ |
||||
|
cblas_daxpy(n, alpha, x, 1, y, 1); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT void c_axpy(const int n, const Complex8 alpha, const Complex8 x[], Complex8 y[]){ |
||||
|
cblas_caxpy(n, &alpha, x, 1, y, 1); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT void z_axpy(const int n, const Complex16 alpha, const Complex16 x[], Complex16 y[]){ |
||||
|
cblas_zaxpy(n, &alpha, x, 1, y, 1); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT void s_scale(const int n, const float alpha, float x[]){ |
||||
|
cblas_sscal(n, alpha, x, 1); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT void d_scale(const int n, const double alpha, double x[]){ |
||||
|
cblas_dscal(n, alpha, x, 1); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT void c_scale(const int n, const Complex8 alpha, Complex8 x[]){ |
||||
|
cblas_cscal(n, &alpha, x, 1); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT void z_scale(const int n, const Complex16 alpha, Complex16 x[]){ |
||||
|
cblas_zscal(n, &alpha, x, 1); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT float s_dot_product(const int n, const float x[], const float y[]){ |
||||
|
return cblas_sdot(n, x, 1, y, 1); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT double d_dot_product(const int n, const double x[], const double y[]){ |
||||
|
return cblas_ddot(n, x, 1, y, 1); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT Complex8 c_dot_product(const int n, const Complex8 x[], const Complex8 y[]){ |
||||
|
Complex8 ret; |
||||
|
cblas_cdotu_sub(n, x, 1, y, 1, &ret); |
||||
|
return ret; |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT Complex16 z_dot_product(const int n, const Complex16 x[], const Complex16 y[]){ |
||||
|
Complex16 ret; |
||||
|
cblas_zdotu_sub(n, x, 1, y, 1, &ret); |
||||
|
return ret; |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT void s_matrix_multiply(const enum CBLAS_TRANSPOSE transA, const enum CBLAS_TRANSPOSE transB, const int m, const int n, const int k, const float alpha, const float x[], const float y[], const float beta, float c[]){ |
||||
|
int lda = transA == CblasNoTrans ? m : k; |
||||
|
int ldb = transB == CblasNoTrans ? k : n; |
||||
|
|
||||
|
cblas_sgemm(CblasColMajor, transA, transB, m, n, k, alpha, x, lda, y, ldb, beta, c, m); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT void d_matrix_multiply(const enum CBLAS_TRANSPOSE transA, const enum CBLAS_TRANSPOSE transB, const int m, const int n, const int k, const double alpha, const double x[], const double y[], const double beta, double c[]){ |
||||
|
int lda = transA == CblasNoTrans ? m : k; |
||||
|
int ldb = transB == CblasNoTrans ? k : n; |
||||
|
|
||||
|
cblas_dgemm(CblasColMajor, transA, transB, m, n, k, alpha, x, lda, y, ldb, beta, c, m); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT void c_matrix_multiply(const enum CBLAS_TRANSPOSE transA, const enum CBLAS_TRANSPOSE transB, const int m, const int n, const int k, const Complex8 alpha, const Complex8 x[], const Complex8 y[], const Complex8 beta, Complex8 c[]){ |
||||
|
int lda = transA == CblasNoTrans ? m : k; |
||||
|
int ldb = transB == CblasNoTrans ? k : n; |
||||
|
|
||||
|
cblas_cgemm(CblasColMajor, transA, transB, m, n, k, &alpha, x, lda, y, ldb, &beta, c, m); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT void z_matrix_multiply(const enum CBLAS_TRANSPOSE transA, const enum CBLAS_TRANSPOSE transB, const int m, const int n, const int k, const Complex16 alpha, const Complex16 x[], const Complex16 y[], const Complex16 beta, Complex16 c[]){ |
||||
|
int lda = transA == CblasNoTrans ? m : k; |
||||
|
int ldb = transB == CblasNoTrans ? k : n; |
||||
|
|
||||
|
cblas_zgemm(CblasColMajor, transA, transB, m, n, k, &alpha, x, lda, y, ldb, &beta, c, m); |
||||
|
} |
||||
|
|
||||
|
/*char getTransChar(enum TRANSPOSE trans){
|
||||
|
char cTrans; |
||||
|
switch( trans ){ |
||||
|
case CblasNoTrans : cTrans = 'N'; |
||||
|
break; |
||||
|
case CblasTrans : cTrans = 'T'; |
||||
|
break; |
||||
|
case CblasConjTrans : cTrans = 'C'; |
||||
|
break; |
||||
|
} |
||||
|
return cTrans; |
||||
|
}*/ |
||||
|
#if GCC |
||||
|
} |
||||
|
#endif |
||||
@ -1,64 +1,525 @@ |
|||||
#include "common.h" |
#include "lapack_common.h" |
||||
|
#include "wrapper_common.h" |
||||
#include "blas.h" |
#include "blas.h" |
||||
|
#include <algorithm> |
||||
|
extern "C" { |
||||
#include "clapack.h" |
#include "clapack.h" |
||||
|
// to get atlas to link
|
||||
|
float _sqrtf(float x) {return sqrt(x);} |
||||
|
} |
||||
|
|
||||
extern "C" { |
template<typename T, typename K> |
||||
|
inline int lu_factor(int m, T a[], int ipiv[], |
||||
|
int (*getrf) (CBLAS_ORDER, const int, const int, K*, const int, int*)) |
||||
|
{ |
||||
|
int info = getrf(CblasColMajor, m, m, a, m, ipiv); |
||||
|
shift_ipiv_down(m, ipiv); |
||||
|
return info; |
||||
|
}; |
||||
|
|
||||
DLLEXPORT int s_cholesky_factor(int n, float a[]){ |
template<typename T, typename K> |
||||
int info = clapack_spotrf(CblasColMajor, CblasLower, n, a, n); |
inline int lu_inverse(int n, T a[], |
||||
for (int i = 0; i < n; ++i) |
int (*getrf) (CBLAS_ORDER, const int, const int, K*, const int, int*), |
||||
{ |
int (*getri) (CBLAS_ORDER, const int, K*, const int, const int*)) |
||||
int index = i * n; |
{ |
||||
for (int j = 0; j < n && i > j; ++j) |
int* ipiv = new int[n]; |
||||
{ |
int info = getrf(CblasColMajor, n, n, a, n, ipiv); |
||||
a[index + j] = 0; |
|
||||
} |
if (info != 0){ |
||||
} |
delete[] ipiv; |
||||
return info; |
return info; |
||||
} |
} |
||||
|
|
||||
DLLEXPORT int d_cholesky_factor(int n, double* a){ |
info = getri(CblasColMajor, n, a, n, ipiv); |
||||
int info = clapack_dpotrf(CblasColMajor, CblasLower, n, a, n); |
delete[] ipiv; |
||||
for (int i = 0; i < n; ++i) |
return info; |
||||
|
}; |
||||
|
|
||||
|
template<typename T, typename K> |
||||
|
inline int lu_inverse_factored(int n, T a[], int ipiv[], |
||||
|
int (*getri) (CBLAS_ORDER, const int, K*, const int, const int*)) |
||||
|
{ |
||||
|
shift_ipiv_up(n, ipiv); |
||||
|
int info = getri(CblasColMajor,n, a, n, ipiv); |
||||
|
shift_ipiv_down(n, ipiv); |
||||
|
return info; |
||||
|
} |
||||
|
|
||||
|
template<typename T, typename K> |
||||
|
inline int lu_solve_factored(int n, int nrhs, T a[], int ipiv[], T b[], |
||||
|
int (*getrs) (CBLAS_ORDER, CBLAS_TRANSPOSE, const int, const int, const K*, const int, const int*, K*, const int)) |
||||
|
{ |
||||
|
shift_ipiv_up(n, ipiv); |
||||
|
int info = getrs(CblasColMajor, CblasNoTrans, n, nrhs, a, n, ipiv, b, n); |
||||
|
shift_ipiv_down(n, ipiv); |
||||
|
return info; |
||||
|
} |
||||
|
|
||||
|
template<typename T, typename K> |
||||
|
inline int lu_solve(int n, int nrhs, T a[], T b[], |
||||
|
int (*getrf) (CBLAS_ORDER, const int, const int, K*, const int, int*), |
||||
|
int (*getrs) (CBLAS_ORDER, CBLAS_TRANSPOSE, const int, const int, const K*, const int, const int*, K*, const int)) |
||||
|
{ |
||||
|
T* clone = Clone(n, n, a); |
||||
|
int* ipiv = new int[n]; |
||||
|
int info = getrf(CblasColMajor, n, n, clone, n, ipiv); |
||||
|
|
||||
|
if (info != 0){ |
||||
|
delete[] ipiv; |
||||
|
delete[] clone; |
||||
|
return info; |
||||
|
} |
||||
|
|
||||
|
info = getrs(CblasColMajor, CblasNoTrans, n, nrhs, clone, n, ipiv, b, n); |
||||
|
delete[] ipiv; |
||||
|
delete[] clone; |
||||
|
return info; |
||||
|
} |
||||
|
|
||||
|
template<typename T, typename K> |
||||
|
inline int cholesky_factor(int n, T* a, int (*potrf) (CBLAS_ORDER, CBLAS_UPLO, const int, K*, const int)) |
||||
|
{ |
||||
|
int info = potrf(CblasColMajor, CblasLower, n, a, n); |
||||
|
T zero = T(); |
||||
|
for (int i = 0; i < n; ++i) |
||||
|
{ |
||||
|
int index = i * n; |
||||
|
for (int j = 0; j < n && i > j; ++j) |
||||
{ |
{ |
||||
int index = i * n; |
a[index + j] = zero; |
||||
for (int j = 0; j < n && i > j; ++j) |
|
||||
{ |
|
||||
a[index + j] = 0; |
|
||||
} |
|
||||
} |
} |
||||
|
} |
||||
|
return info; |
||||
|
} |
||||
|
|
||||
|
template<typename T, typename K> |
||||
|
inline int cholesky_solve(int n, int nrhs, T a[], T b[], |
||||
|
int (*potrf) (CBLAS_ORDER, CBLAS_UPLO, const int, K*, const int), |
||||
|
int (*potrs) (CBLAS_ORDER, CBLAS_UPLO, const int, const int, const K*, const int, K*, const int)) |
||||
|
{ |
||||
|
T* clone = Clone(n, n, a); |
||||
|
int info = potrf(CblasColMajor, CblasLower, n, clone, n); |
||||
|
|
||||
|
if (info != 0){ |
||||
|
delete[] clone; |
||||
return info; |
return info; |
||||
} |
} |
||||
|
|
||||
DLLEXPORT int c_cholesky_factor(int n, Complex8 a[]){ |
info = potrs(CblasColMajor, CblasLower, n, nrhs, clone, n, b, n); |
||||
int info = clapack_cpotrf(CblasColMajor, CblasLower, n, a, n); |
delete[] clone; |
||||
Complex8 zero; |
return info; |
||||
zero.real = 0.0; |
} |
||||
zero.real = 0.0; |
|
||||
for (int i = 0; i < n; ++i) |
template<typename T, typename K> |
||||
|
inline int cholesky_solve_factored(int n, int nrhs, T a[], T b[], |
||||
|
int (*potrs) (CBLAS_ORDER, CBLAS_UPLO, const int, const int, const K*, const int, K*, const int)) |
||||
|
{ |
||||
|
return potrs(CblasColMajor, CblasLower, n, nrhs, a, n, b, n); |
||||
|
} |
||||
|
|
||||
|
template<typename T, typename K> |
||||
|
inline int qr_factor(int m, int n, T r[], T tau[], T q[], T work[], int len, |
||||
|
int (*geqrf) (const int, const int, K*, const int, T*), |
||||
|
int (*orgqr) (const int, const int, const int, K*, const int, const K*)) |
||||
|
{ |
||||
|
int info = geqrf(m, n, r, m, tau); |
||||
|
|
||||
|
for (int i = 0; i < m; ++i) |
||||
|
{ |
||||
|
for (int j = 0; j < m && j < n; ++j) |
||||
{ |
{ |
||||
int index = i * n; |
if (i > j) |
||||
for (int j = 0; j < n && i > j; ++j) |
|
||||
{ |
{ |
||||
a[index + j] = zero; |
q[j * m + i] = r[j * m + i]; |
||||
} |
} |
||||
} |
} |
||||
return info; |
|
||||
} |
} |
||||
|
|
||||
DLLEXPORT int z_cholesky_factor(int n, Complex16 a[]){ |
//compute the q elements explicitly
|
||||
int info = clapack_zpotrf(CblasColMajor, CblasLower, n, a, n); |
if (m <= n) |
||||
Complex16 zero; |
{ |
||||
zero.real = 0.0; |
info = orgqr(m, m, m, q, m, tau); |
||||
zero.real = 0.0; |
} |
||||
for (int i = 0; i < n; ++i) |
else |
||||
|
{ |
||||
|
info = orgqr(m, m, n, q, m, tau); |
||||
|
} |
||||
|
|
||||
|
return info; |
||||
|
} |
||||
|
|
||||
|
template<typename T> |
||||
|
inline int qr_thin_factor(int m, int n, T q[], T tau[], T r[], T work[], int len, |
||||
|
void (*geqrf) (const int*, const int*, T*, const int*, T*, T*, const int*, int*), |
||||
|
void (*orgqr) (const int*, const int*, const int*, T*, const int*, const T*, T*, const int*, int*)) |
||||
|
{ |
||||
|
int info = 0; |
||||
|
geqrf(&m, &n, q, &m, tau, work, &len, &info); |
||||
|
|
||||
|
for (int i = 0; i < n; ++i) |
||||
|
{ |
||||
|
for (int j = 0; j < n; ++j) |
||||
{ |
{ |
||||
int index = i * n; |
if( i <= j) { |
||||
for (int j = 0; j < n && i > j; ++j) |
r[j * n + i] = q[j * m + i]; |
||||
{ |
|
||||
a[index + j] = zero; |
|
||||
} |
} |
||||
} |
} |
||||
return info; |
|
||||
} |
} |
||||
|
|
||||
|
orgqr(&m, &n, &n, q, &m, tau, work, &len, &info); |
||||
|
|
||||
|
return info; |
||||
|
} |
||||
|
|
||||
|
template<typename T> |
||||
|
inline int qr_solve(int m, int n, int bn, T a[], T b[], T x[], T work[], int len, |
||||
|
void (*gels) (const char*, const int*, const int*, const int*, T*, |
||||
|
const int*, T* b, const int*, T*, const int*, int*)) |
||||
|
{ |
||||
|
T* clone_a = new T[m*n]; |
||||
|
std::memcpy(clone_a, a, m*n*sizeof(T)); |
||||
|
|
||||
|
T* clone_b = new T[m*bn]; |
||||
|
std::memcpy(clone_b, b, m*bn*sizeof(T)); |
||||
|
|
||||
|
char N = 'N'; |
||||
|
int info = 0; |
||||
|
gels(&N, &m, &n, &bn, clone_a, &m, clone_b, &m, work, &len, &info); |
||||
|
copyBtoX(n, n, bn, clone_b, x); |
||||
|
|
||||
|
delete[] clone_a; |
||||
|
delete[] clone_b; |
||||
|
return info; |
||||
|
} |
||||
|
|
||||
|
template<typename T> |
||||
|
inline int qr_solve_factored(int m, int n, int bn, T r[], T b[], T tau[], T x[], T work[], int len, |
||||
|
void (*ormqr) (const char*, const char*, const int*, const int*, const int*, |
||||
|
const T*, const int*, const T*, T*, const int*, T*, const int*, int* info), |
||||
|
void (*trsm) (const CBLAS_ORDER, const CBLAS_SIDE, const CBLAS_UPLO, const CBLAS_TRANSPOSE, const CBLAS_DIAG, |
||||
|
const int, const int, const T, const T*, const int, T*, const int)) |
||||
|
{ |
||||
|
T* clone_b = new T[m*bn]; |
||||
|
std::memcpy(clone_b, b, m*bn*sizeof(T)); |
||||
|
|
||||
|
char side ='L'; |
||||
|
char tran = 'T'; |
||||
|
int info = 0; |
||||
|
ormqr(&side, &tran, &m, &bn, &n, r, &m, tau, clone_b, &m, work, &len, &info); |
||||
|
trsm(CblasColMajor, CblasLeft, CblasUpper, CblasNoTrans, CblasNonUnit, n, bn, 1.0, r, m, clone_b, m); |
||||
|
copyBtoX(n, n, bn, clone_b, x); |
||||
|
|
||||
|
delete[] clone_b; |
||||
|
return info; |
||||
|
} |
||||
|
|
||||
|
template<typename T> |
||||
|
inline int complex_qr_solve_factored(int m, int n, int bn, T r[], T b[], T tau[], T x[], T work[], int len, |
||||
|
void (*unmqr) (const char*, const char*, const int*, const int*, const int*, |
||||
|
const T*, const int*, const T*, T*, const int*, T*, const int*, int* info), |
||||
|
void (*trsm) (const CBLAS_ORDER, const CBLAS_SIDE, const CBLAS_UPLO, const CBLAS_TRANSPOSE, const CBLAS_DIAG, |
||||
|
const int, const int, const void*, const void*, const int, void*, const int ldb)) |
||||
|
{ |
||||
|
T* clone_b = new T[m*bn]; |
||||
|
std::memcpy(clone_b, b, m*bn*sizeof(T)); |
||||
|
|
||||
|
char side ='L'; |
||||
|
char tran = 'C'; |
||||
|
int info = 0; |
||||
|
unmqr(&side, &tran, &m, &bn, &n, r, &m, tau, clone_b, &m, work, &len, &info); |
||||
|
|
||||
|
T one = {1.0f, 0.0f}; |
||||
|
trsm(CblasColMajor, CblasLeft, CblasUpper, CblasNoTrans, CblasNonUnit, n, bn, &one, r, m, clone_b, m); |
||||
|
copyBtoX(n, n, bn, clone_b, x); |
||||
|
|
||||
|
delete[] clone_b; |
||||
|
return info; |
||||
|
} |
||||
|
|
||||
|
template<typename T> |
||||
|
inline int svd_factor(bool compute_vectors, int m, int n, T a[], T s[], T u[], T v[], T work[], int len, |
||||
|
void (*gesvd) (const char*, const char*, const int*, const int*, T*, const int*, |
||||
|
T*, T*, const int*, T*, const int*, T*, const int*, int*)) |
||||
|
{ |
||||
|
int info = 0; |
||||
|
char job = compute_vectors ? 'A' : 'N'; |
||||
|
gesvd(&job, &job, &m, &n, a, &m, s, u, &m, v, &n, work, &len, &info); |
||||
|
return info; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
template<typename T, typename R> |
||||
|
inline int complex_svd_factor(bool compute_vectors, int m, int n, T a[], T s[], T u[], T v[], T work[], int len, |
||||
|
void (*gesvd) (const char*, const char*, const int*, const int*, T*, const int*, |
||||
|
R*, T*, const int*, T*, const int*, T*, const int*, R*, int*)) |
||||
|
{ |
||||
|
int info = 0; |
||||
|
int dim_s = std::min(m,n); |
||||
|
R* rwork = new R[5 * dim_s]; |
||||
|
R* s_local = new R[dim_s]; |
||||
|
char job = compute_vectors ? 'A' : 'N'; |
||||
|
gesvd(&job, &job, &m, &n, a, &m, s_local, u, &m, v, &n, work, &len, rwork, &info); |
||||
|
|
||||
|
for(int index = 0; index < dim_s; ++index){ |
||||
|
T value = {s_local[index], 0.0f}; |
||||
|
s[index] = value; |
||||
|
} |
||||
|
|
||||
|
delete[] rwork; |
||||
|
delete[] s_local; |
||||
|
return info; |
||||
|
} |
||||
|
|
||||
|
extern "C" { |
||||
|
DLLEXPORT int s_lu_factor(int m, float a[], int ipiv[]) { |
||||
|
return lu_factor<float, float>(m, a, ipiv, clapack_sgetrf); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int d_lu_factor(int m, double a[], int ipiv[]) { |
||||
|
return lu_factor<double, double>(m, a, ipiv, clapack_dgetrf); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int c_lu_factor(int m, Complex8 a[], int ipiv[]) { |
||||
|
return lu_factor<Complex8, void>(m, a, ipiv, clapack_cgetrf); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int z_lu_factor(int m, Complex16 a[], int ipiv[]) { |
||||
|
return lu_factor(m, a, ipiv, clapack_zgetrf); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int s_lu_inverse(int n, float a[]) |
||||
|
{ |
||||
|
return lu_inverse<float, float>(n, a, clapack_sgetrf, clapack_sgetri); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int d_lu_inverse(int n, double a[]) |
||||
|
{ |
||||
|
return lu_inverse<double, double>(n, a, clapack_dgetrf, clapack_dgetri); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int c_lu_inverse(int n, Complex8 a[]) |
||||
|
{ |
||||
|
return lu_inverse<Complex8, void>(n, a, clapack_cgetrf, clapack_cgetri); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int z_lu_inverse(int n, Complex16 a[]) |
||||
|
{ |
||||
|
return lu_inverse<Complex16, void>(n, a, clapack_zgetrf, clapack_zgetri); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int s_lu_inverse_factored(int n, float a[], int ipiv[], float work[], int lwork) |
||||
|
{ |
||||
|
return lu_inverse_factored<float, float>(n, a, ipiv, clapack_sgetri); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int d_lu_inverse_factored(int n, double a[], int ipiv[], double work[], int lwork) |
||||
|
{ |
||||
|
return lu_inverse_factored<double, double>(n, a, ipiv, clapack_dgetri); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int c_lu_inverse_factored(int n, Complex8 a[], int ipiv[], Complex8 work[], int lwork) |
||||
|
{ |
||||
|
return lu_inverse_factored<Complex8, void>(n, a, ipiv, clapack_cgetri); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int z_lu_inverse_factored(int n, Complex16 a[], int ipiv[], Complex16 work[], int lwork) |
||||
|
{ |
||||
|
return lu_inverse_factored<Complex16, void>(n, a, ipiv, clapack_zgetri); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int s_lu_solve_factored(int n, int nrhs, float a[], int ipiv[], float b[]) |
||||
|
{ |
||||
|
return lu_solve_factored<float, float>(n, nrhs, a, ipiv, b, clapack_sgetrs); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int d_lu_solve_factored(int n, int nrhs, double a[], int ipiv[], double b[]) |
||||
|
{ |
||||
|
return lu_solve_factored<double, double>(n, nrhs, a, ipiv, b, clapack_dgetrs); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int c_lu_solve_factored(int n, int nrhs, Complex8 a[], int ipiv[], Complex8 b[]) |
||||
|
{ |
||||
|
return lu_solve_factored<Complex8, void>(n, nrhs, a, ipiv, b, clapack_cgetrs); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int z_lu_solve_factored(int n, int nrhs, Complex16 a[], int ipiv[], Complex16 b[]) |
||||
|
{ |
||||
|
return lu_solve_factored<Complex16, void>(n, nrhs, a, ipiv, b, clapack_zgetrs); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int s_lu_solve(int n, int nrhs, float a[], float b[]) |
||||
|
{ |
||||
|
return lu_solve<float, float>(n, nrhs, a, b, clapack_sgetrf, clapack_sgetrs); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int d_lu_solve(int n, int nrhs, double a[], double b[]) |
||||
|
{ |
||||
|
return lu_solve<double, double>(n, nrhs, a, b, clapack_dgetrf, clapack_dgetrs); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int c_lu_solve(int n, int nrhs, Complex8 a[], Complex8 b[]) |
||||
|
{ |
||||
|
return lu_solve<Complex8, void>(n, nrhs, a, b, clapack_cgetrf, clapack_cgetrs); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int z_lu_solve(int n, int nrhs, Complex16 a[], Complex16 b[]) |
||||
|
{ |
||||
|
return lu_solve<Complex16, void>(n, nrhs, a, b, clapack_zgetrf, clapack_zgetrs); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int s_cholesky_factor(int n, float a[]){ |
||||
|
return cholesky_factor<float, float>(n, a, clapack_spotrf); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int d_cholesky_factor(int n, double* a){ |
||||
|
return cholesky_factor<double, double>(n, a, clapack_dpotrf); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int c_cholesky_factor(int n, Complex8 a[]){ |
||||
|
return cholesky_factor<Complex8, void>(n, a, clapack_cpotrf); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int z_cholesky_factor(int n, Complex16 a[]){ |
||||
|
return cholesky_factor<Complex16, void>(n, a, clapack_zpotrf); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int s_cholesky_solve(int n, int nrhs, float a[], float b[]) |
||||
|
{ |
||||
|
return cholesky_solve<float, float>(n, nrhs, a, b, clapack_spotrf, clapack_spotrs); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int d_cholesky_solve(int n, int nrhs, double a[], double b[]) |
||||
|
{ |
||||
|
return cholesky_solve<double, double>(n, nrhs, a, b, clapack_dpotrf, clapack_dpotrs); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int c_cholesky_solve(int n, int nrhs, Complex8 a[], Complex8 b[]) |
||||
|
{ |
||||
|
return cholesky_solve<Complex8, void>(n, nrhs, a, b, clapack_cpotrf, clapack_cpotrs); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int z_cholesky_solve(int n, int nrhs, Complex16 a[], Complex16 b[]) |
||||
|
{ |
||||
|
return cholesky_solve<Complex16, void>(n, nrhs, a, b, clapack_zpotrf, clapack_zpotrs); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int s_cholesky_solve_factored(int n, int nrhs, float a[], float b[]) |
||||
|
{ |
||||
|
return cholesky_solve_factored<float, float>(n, nrhs, a, b, clapack_spotrs); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int d_cholesky_solve_factored(int n, int nrhs, double a[], double b[]) |
||||
|
{ |
||||
|
return cholesky_solve_factored<double, double>(n, nrhs, a, b, clapack_dpotrs); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int c_cholesky_solve_factored(int n, int nrhs, Complex8 a[], Complex8 b[]) |
||||
|
{ |
||||
|
return cholesky_solve_factored<Complex8, void>(n, nrhs, a, b, clapack_cpotrs); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int z_cholesky_solve_factored(int n, int nrhs, Complex16 a[], Complex16 b[]) |
||||
|
{ |
||||
|
return cholesky_solve_factored<Complex16, void>(n, nrhs, a, b, clapack_zpotrs); |
||||
|
} |
||||
|
|
||||
|
/*DLLEXPORT int s_qr_factor(int m, int n, float r[], float tau[], float q[], float work[], int len)
|
||||
|
{ |
||||
|
return qr_factor<float, float>(m, n, r, tau, q, work, len, clapack_sgeqrf, clapack_sorgqr); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int s_qr_thin_factor(int m, int n, float q[], float tau[], float r[], float work[], int len) |
||||
|
{ |
||||
|
return qr_thin_factor<float>(m, n, q, tau, r, work, len, clapack_sgeqrf, clapack_sorgqr); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int d_qr_factor(int m, int n, double r[], double tau[], double q[], double work[], int len) |
||||
|
{ |
||||
|
return qr_factor<double>(m, n, r, tau, q, work, len, clapack_dgeqrf, clapack_dorgqr); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int d_qr_thin_factor(int m, int n, double q[], double tau[], double r[], double work[], int len) |
||||
|
{ |
||||
|
return qr_thin_factor<double>(m, n, q, tau, r, work, len, clapack_dgeqrf, clapack_dorgqr); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int c_qr_factor(int m, int n, Complex8 r[], Complex8 tau[], Complex8 q[], Complex8 work[], int len) |
||||
|
{ |
||||
|
return qr_factor<Complex8>(m, n, r, tau, q, work, len, clapack_cgeqrf, clapack_cungqr); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int c_qr_thin_factor(int m, int n, Complex8 q[], Complex8 tau[], Complex8 r[], Complex8 work[], int len) |
||||
|
{ |
||||
|
return qr_thin_factor<Complex8>(m, n, q, tau, r, work, len, clapack_cgeqrf, clapack_cungqr); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int z_qr_factor(int m, int n, Complex16 r[], Complex16 tau[], Complex16 q[]) |
||||
|
{ |
||||
|
return qr_factor<Complex16>(m, n, r, tau, q, work, len, clapack_zgeqrf, clapack_zungqr); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int z_qr_thin_factor(int m, int n, Complex16 q[], Complex16 tau[], Complex16 r[]) |
||||
|
{ |
||||
|
return qr_thin_factor<Complex16>(m, n, q, tau, r, work, len, clapack_zgeqrf, clapack_zungqr); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int s_qr_solve(int m, int n, int bn, float a[], float b[], float x[], float work[], int len) |
||||
|
{ |
||||
|
return qr_solve<float>(m, n, bn, a, b, x, work, len, sgels); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int d_qr_solve(int m, int n, int bn, double a[], double b[], double x[], double work[], int len) |
||||
|
{ |
||||
|
return qr_solve<double>(m, n, bn, a, b, x, work, len, dgels); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int c_qr_solve(int m, int n, int bn, Complex8 a[], Complex8 b[], Complex8 x[], Complex8 work[], int len) |
||||
|
{ |
||||
|
return qr_solve<Complex8>(m, n, bn, a, b, x, work, len, cgels); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int z_qr_solve(int m, int n, int bn, Complex16 a[], Complex16 b[], Complex16 x[], Complex16 work[], int len) |
||||
|
{ |
||||
|
return qr_solve<Complex16>(m, n, bn, a, b, x, work, len, zgels); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int s_qr_solve_factored(int m, int n, int bn, float r[], float b[], float tau[], float x[], float work[], int len) |
||||
|
{ |
||||
|
return qr_solve_factored<float>(m, n, bn, r, b, tau, x, work, len, sormqr, cblas_strsm); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int d_qr_solve_factored(int m, int n, int bn, double r[], double b[], double tau[], double x[], double work[], int len) |
||||
|
{ |
||||
|
return qr_solve_factored<double>(m, n, bn, r, b, tau, x, work, len, dormqr, cblas_dtrsm); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int c_qr_solve_factored(int m, int n, int bn, Complex8 r[], Complex8 b[], Complex8 tau[], Complex8 x[], Complex8 work[], int len) |
||||
|
{ |
||||
|
return complex_qr_solve_factored<Complex8>(m, n, bn, r, b, tau, x, work, len, cunmqr, cblas_ctrsm); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int z_qr_solve_factored(int m, int n, int bn, Complex16 r[], Complex16 b[], Complex16 tau[], Complex16 x[], Complex16 work[], int len) |
||||
|
{ |
||||
|
return complex_qr_solve_factored<Complex16>(m, n, bn, r, b, tau, x, work, len, zunmqr, cblas_ztrsm); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int s_svd_factor(bool compute_vectors, int m, int n, float a[], float s[], float u[], float v[], float work[], int len) |
||||
|
{ |
||||
|
return svd_factor<float>(compute_vectors, m, n, a, s, u, v, work, len, sgesvd); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int d_svd_factor(bool compute_vectors, int m, int n, double a[], double s[], double u[], double v[], double work[], int len) |
||||
|
{ |
||||
|
return svd_factor<double>(compute_vectors, m, n, a, s, u, v, work, len, dgesvd); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int c_svd_factor(bool compute_vectors, int m, int n, Complex8 a[], Complex8 s[], Complex8 u[], Complex8 v[], Complex8 work[], int len) |
||||
|
{ |
||||
|
return complex_svd_factor<Complex8, float>(compute_vectors, m, n, a, s, u, v, work, len, cgesvd); |
||||
|
} |
||||
|
|
||||
|
DLLEXPORT int z_svd_factor(bool compute_vectors, int m, int n, Complex16 a[], Complex16 s[], Complex16 u[], Complex16 v[], Complex16 work[], int len) |
||||
|
{ |
||||
|
return complex_svd_factor<Complex16, double>(compute_vectors, m, n, a, s, u, v, work, len, zgesvd); |
||||
|
}*/ |
||||
} |
} |
||||
@ -1,6 +1,11 @@ |
|||||
export INTEL=/opt/intel |
export INTEL=/opt/intel |
||||
export MKL=$INTEL/mkl |
export MKL=$INTEL/mkl |
||||
|
export OPENMP=$INTEL/composerxe/lib |
||||
|
|
||||
g++ --shared -fPIC -o ./x64/MathNet.Numerics.MKL.so -I$MKL/include -I../Common ../MKL/vector_functions.c ../MKL/blas.c ../MKL/lapack.cpp $INTEL/lib/intel64/libiomp5.a $MKL/lib/intel64/libmkl_intel_lp64.a $MKL/lib/intel64/libmkl_intel_thread.a $MKL/lib/intel64/libmkl_core.a |
g++ -DGCC -m64 --shared -fPIC -o ../../../../MKL/Linux/x64/MathNet.Numerics.MKL.dll -I$MKL/include -I../Common ../MKL/vector_functions.c ../MKL/blas.c ../MKL/lapack.cpp -Wl,--start-group $MKL/lib/intel64/libmkl_intel_lp64.a $MKL/lib/intel64/libmkl_intel_thread.a $MKL/lib/intel64/libmkl_core.a -Wl,--end-group -L$OPENMP/intel64 -liomp5 -lpthread -lm |
||||
|
|
||||
g++ -m32 --shared -fPIC -o ./x86/MathNet.Numerics.MKL.so -I$MKL/include -I../Common ../MKL/vector_functions.c ../MKL/blas.c ../MKL/lapack.cpp $INTEL/lib/ia32/libiomp5.a $MKL/lib/ia32/libmkl_intel.a $MKL/lib/ia32/libmkl_intel_thread.a $MKL/lib/ia32/libmkl_core.a |
cp $OPENMP/intel64/libiomp5.so ../../../../MKL/Linux/x64/ |
||||
|
|
||||
|
g++ -DGCC -m32 --shared -fPIC -o ../../../../MKL/Linux/x86/MathNet.Numerics.MKL.dll -I$MKL/include -I../Common ../MKL/vector_functions.c ../MKL/blas.c ../MKL/lapack.cpp -Wl,--start-group $MKL/lib/ia32/libmkl_intel.a $MKL/lib/ia32/libmkl_intel_thread.a $MKL/lib/ia32/libmkl_core.a -Wl,--end-group -L$OPENMP/ia32 -liomp5 -lpthread -lm |
||||
|
|
||||
|
cp $OPENMP/ia32/libiomp5.so ../../../../MKL/Linux/x86/ |
||||
|
|||||
File diff suppressed because it is too large
@ -0,0 +1,160 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
|
<ItemGroup Label="ProjectConfigurations"> |
||||
|
<ProjectConfiguration Include="Debug|Win32"> |
||||
|
<Configuration>Debug</Configuration> |
||||
|
<Platform>Win32</Platform> |
||||
|
</ProjectConfiguration> |
||||
|
<ProjectConfiguration Include="Debug|x64"> |
||||
|
<Configuration>Debug</Configuration> |
||||
|
<Platform>x64</Platform> |
||||
|
</ProjectConfiguration> |
||||
|
<ProjectConfiguration Include="Release|Win32"> |
||||
|
<Configuration>Release</Configuration> |
||||
|
<Platform>Win32</Platform> |
||||
|
</ProjectConfiguration> |
||||
|
<ProjectConfiguration Include="Release|x64"> |
||||
|
<Configuration>Release</Configuration> |
||||
|
<Platform>x64</Platform> |
||||
|
</ProjectConfiguration> |
||||
|
</ItemGroup> |
||||
|
<PropertyGroup Label="Globals"> |
||||
|
<ProjectGuid>{2362B8AC-C52B-45E4-A1BF-C682A4DB4220}</ProjectGuid> |
||||
|
<Keyword>Win32Proj</Keyword> |
||||
|
<RootNamespace>ATLASWrapper</RootNamespace> |
||||
|
</PropertyGroup> |
||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> |
||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType> |
||||
|
<UseDebugLibraries>true</UseDebugLibraries> |
||||
|
<PlatformToolset>v110</PlatformToolset> |
||||
|
<CharacterSet>Unicode</CharacterSet> |
||||
|
</PropertyGroup> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> |
||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType> |
||||
|
<UseDebugLibraries>true</UseDebugLibraries> |
||||
|
<PlatformToolset>v110</PlatformToolset> |
||||
|
<CharacterSet>Unicode</CharacterSet> |
||||
|
</PropertyGroup> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> |
||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType> |
||||
|
<UseDebugLibraries>false</UseDebugLibraries> |
||||
|
<PlatformToolset>v110</PlatformToolset> |
||||
|
<WholeProgramOptimization>true</WholeProgramOptimization> |
||||
|
<CharacterSet>Unicode</CharacterSet> |
||||
|
</PropertyGroup> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> |
||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType> |
||||
|
<UseDebugLibraries>false</UseDebugLibraries> |
||||
|
<PlatformToolset>v110</PlatformToolset> |
||||
|
<WholeProgramOptimization>true</WholeProgramOptimization> |
||||
|
<CharacterSet>Unicode</CharacterSet> |
||||
|
</PropertyGroup> |
||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> |
||||
|
<ImportGroup Label="ExtensionSettings"> |
||||
|
</ImportGroup> |
||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
||||
|
</ImportGroup> |
||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> |
||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
||||
|
</ImportGroup> |
||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
||||
|
</ImportGroup> |
||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> |
||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
||||
|
</ImportGroup> |
||||
|
<PropertyGroup Label="UserMacros" /> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
||||
|
<LinkIncremental>true</LinkIncremental> |
||||
|
<IncludePath>D:\Source\ATLAS\include;..\..\Common;$(IncludePath)</IncludePath> |
||||
|
<OutDir>$(SolutionDir)..\..\..\..\ATLAS\Windows\x86\</OutDir> |
||||
|
</PropertyGroup> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> |
||||
|
<LinkIncremental>true</LinkIncremental> |
||||
|
<IncludePath>D:\Source\ATLAS\include;..\..\Common;$(IncludePath)</IncludePath> |
||||
|
<OutDir>$(SolutionDir)..\..\..\..\ATLAS\Windows\x64\</OutDir> |
||||
|
</PropertyGroup> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
||||
|
<LinkIncremental>false</LinkIncremental> |
||||
|
<IncludePath>D:\Source\ATLAS\include;..\..\Common;$(IncludePath)</IncludePath> |
||||
|
<OutDir>$(SolutionDir)..\..\..\..\ATLAS\Windows\x86\</OutDir> |
||||
|
</PropertyGroup> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> |
||||
|
<LinkIncremental>false</LinkIncremental> |
||||
|
<IncludePath>D:\Source\ATLAS\include;..\..\Common;$(IncludePath)</IncludePath> |
||||
|
<OutDir>$(SolutionDir)..\..\..\..\ATLAS\Windows\x64\</OutDir> |
||||
|
</PropertyGroup> |
||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
||||
|
<ClCompile> |
||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader> |
||||
|
<WarningLevel>Level3</WarningLevel> |
||||
|
<Optimization>Disabled</Optimization> |
||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;ATLASWRAPPER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
|
</ClCompile> |
||||
|
<Link> |
||||
|
<SubSystem>Windows</SubSystem> |
||||
|
<GenerateDebugInformation>true</GenerateDebugInformation> |
||||
|
<AdditionalDependencies>libptcblas.a;libatlas.a;libptlapack.a;%(AdditionalDependencies)</AdditionalDependencies> |
||||
|
</Link> |
||||
|
</ItemDefinitionGroup> |
||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> |
||||
|
<ClCompile> |
||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader> |
||||
|
<WarningLevel>Level3</WarningLevel> |
||||
|
<Optimization>Disabled</Optimization> |
||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;ATLASWRAPPER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
|
</ClCompile> |
||||
|
<Link> |
||||
|
<SubSystem>Windows</SubSystem> |
||||
|
<GenerateDebugInformation>true</GenerateDebugInformation> |
||||
|
<AdditionalDependencies>libptcblas.a;libatlas.a;libptlapack.a;%(AdditionalDependencies)</AdditionalDependencies> |
||||
|
</Link> |
||||
|
</ItemDefinitionGroup> |
||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
||||
|
<ClCompile> |
||||
|
<WarningLevel>Level3</WarningLevel> |
||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader> |
||||
|
<Optimization>MaxSpeed</Optimization> |
||||
|
<FunctionLevelLinking>true</FunctionLevelLinking> |
||||
|
<IntrinsicFunctions>true</IntrinsicFunctions> |
||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;ATLASWRAPPER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
|
</ClCompile> |
||||
|
<Link> |
||||
|
<SubSystem>Windows</SubSystem> |
||||
|
<GenerateDebugInformation>true</GenerateDebugInformation> |
||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding> |
||||
|
<OptimizeReferences>true</OptimizeReferences> |
||||
|
<AdditionalDependencies>libptcblas.a;libatlas.a;libptlapack.a;%(AdditionalDependencies)</AdditionalDependencies> |
||||
|
</Link> |
||||
|
</ItemDefinitionGroup> |
||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> |
||||
|
<ClCompile> |
||||
|
<WarningLevel>Level3</WarningLevel> |
||||
|
<PrecompiledHeader>NotUsing</PrecompiledHeader> |
||||
|
<Optimization>MaxSpeed</Optimization> |
||||
|
<FunctionLevelLinking>true</FunctionLevelLinking> |
||||
|
<IntrinsicFunctions>true</IntrinsicFunctions> |
||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;ATLASWRAPPER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
|
</ClCompile> |
||||
|
<Link> |
||||
|
<SubSystem>Windows</SubSystem> |
||||
|
<GenerateDebugInformation>true</GenerateDebugInformation> |
||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding> |
||||
|
<OptimizeReferences>true</OptimizeReferences> |
||||
|
<AdditionalDependencies>libptcblas.a;libatlas.a;libptlapack.a;%(AdditionalDependencies)</AdditionalDependencies> |
||||
|
</Link> |
||||
|
</ItemDefinitionGroup> |
||||
|
<ItemGroup> |
||||
|
<ResourceCompile Include="..\..\Common\resource.rc" /> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<ClCompile Include="..\..\ATLAS\blas.c" /> |
||||
|
<ClCompile Include="..\..\ATLAS\lapack.cpp" /> |
||||
|
<ClCompile Include="..\..\Common\WindowsDLL.cpp" /> |
||||
|
</ItemGroup> |
||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
||||
|
<ImportGroup Label="ExtensionTargets"> |
||||
|
</ImportGroup> |
||||
|
</Project> |
||||
@ -0,0 +1,33 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
|
<ItemGroup> |
||||
|
<Filter Include="Source Files"> |
||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> |
||||
|
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> |
||||
|
</Filter> |
||||
|
<Filter Include="Header Files"> |
||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> |
||||
|
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> |
||||
|
</Filter> |
||||
|
<Filter Include="Resource Files"> |
||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> |
||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> |
||||
|
</Filter> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<ResourceCompile Include="..\..\Common\resource.rc"> |
||||
|
<Filter>Resource Files</Filter> |
||||
|
</ResourceCompile> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<ClCompile Include="..\..\Common\WindowsDLL.cpp"> |
||||
|
<Filter>Source Files</Filter> |
||||
|
</ClCompile> |
||||
|
<ClCompile Include="..\..\ATLAS\blas.c"> |
||||
|
<Filter>Source Files</Filter> |
||||
|
</ClCompile> |
||||
|
<ClCompile Include="..\..\ATLAS\lapack.cpp"> |
||||
|
<Filter>Source Files</Filter> |
||||
|
</ClCompile> |
||||
|
</ItemGroup> |
||||
|
</Project> |
||||
File diff suppressed because it is too large
File diff suppressed because it is too large
File diff suppressed because it is too large
Loading…
Reference in new issue