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
pull/112/merge
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 <algorithm> |
|||
extern "C" { |
|||
#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[]){ |
|||
int info = clapack_spotrf(CblasColMajor, CblasLower, n, a, n); |
|||
for (int i = 0; i < n; ++i) |
|||
{ |
|||
int index = i * n; |
|||
for (int j = 0; j < n && i > j; ++j) |
|||
{ |
|||
a[index + j] = 0; |
|||
} |
|||
} |
|||
template<typename T, typename K> |
|||
inline int lu_inverse(int n, T a[], |
|||
int (*getrf) (CBLAS_ORDER, const int, const int, K*, const int, int*), |
|||
int (*getri) (CBLAS_ORDER, const int, K*, const int, const int*)) |
|||
{ |
|||
int* ipiv = new int[n]; |
|||
int info = getrf(CblasColMajor, n, n, a, n, ipiv); |
|||
|
|||
if (info != 0){ |
|||
delete[] ipiv; |
|||
return info; |
|||
} |
|||
|
|||
DLLEXPORT int d_cholesky_factor(int n, double* a){ |
|||
int info = clapack_dpotrf(CblasColMajor, CblasLower, n, a, n); |
|||
for (int i = 0; i < n; ++i) |
|||
info = getri(CblasColMajor, n, a, n, ipiv); |
|||
delete[] ipiv; |
|||
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; |
|||
for (int j = 0; j < n && i > j; ++j) |
|||
{ |
|||
a[index + j] = 0; |
|||
} |
|||
a[index + j] = zero; |
|||
} |
|||
} |
|||
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; |
|||
} |
|||
|
|||
DLLEXPORT int c_cholesky_factor(int n, Complex8 a[]){ |
|||
int info = clapack_cpotrf(CblasColMajor, CblasLower, n, a, n); |
|||
Complex8 zero; |
|||
zero.real = 0.0; |
|||
zero.real = 0.0; |
|||
for (int i = 0; i < n; ++i) |
|||
info = potrs(CblasColMajor, CblasLower, n, nrhs, clone, n, b, n); |
|||
delete[] clone; |
|||
return info; |
|||
} |
|||
|
|||
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; |
|||
for (int j = 0; j < n && i > j; ++j) |
|||
if (i > j) |
|||
{ |
|||
a[index + j] = zero; |
|||
q[j * m + i] = r[j * m + i]; |
|||
} |
|||
} |
|||
return info; |
|||
} |
|||
|
|||
DLLEXPORT int z_cholesky_factor(int n, Complex16 a[]){ |
|||
int info = clapack_zpotrf(CblasColMajor, CblasLower, n, a, n); |
|||
Complex16 zero; |
|||
zero.real = 0.0; |
|||
zero.real = 0.0; |
|||
for (int i = 0; i < n; ++i) |
|||
//compute the q elements explicitly
|
|||
if (m <= n) |
|||
{ |
|||
info = orgqr(m, m, m, q, m, tau); |
|||
} |
|||
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; |
|||
for (int j = 0; j < n && i > j; ++j) |
|||
{ |
|||
a[index + j] = zero; |
|||
if( i <= j) { |
|||
r[j * n + i] = q[j * m + i]; |
|||
} |
|||
} |
|||
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 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