12#ifndef __CLAPACK_TO_STDLAPACK__
13#define __CLAPACK_TO_STDLAPACK__
19#if defined(__CYGWIN__) || defined(StdLAPACK)
20#define __CLPK_integer int
22int ilaenv_(
int*,
char*,
int,
char*,
int,
int*,
int*,
int*,
int*);
32int clapack_dgetrf(
const enum CBLAS_ORDER Order,
int mA,
int nA,
double *a,
int ldaA,
int *ipiv)
34 __CLPK_integer m=mA, n=nA, lda=ldaA, info;
35 dgetrf_( &m, &n, a, &lda, ipiv, &info );
39int clapack_dgetri(
const enum CBLAS_ORDER Order,
int nA,
double *a,
int ldaA,
int *ipiv)
41 __CLPK_integer n=nA, lda=ldaA, info;
42 int minusOne=-1, one=1;
43#if defined(__CYGWIN__) || defined(StdLAPACK)
44 __CLPK_integer lwork = n* (__CLPK_integer) ilaenv_( &one,
"dgetri",6,
"",0, (
int*) &n, &minusOne, &minusOne, &minusOne );
46 __CLPK_integer lwork = n* (__CLPK_integer) ilaenv_( &one,
"dgetri",
"", (
int*) &n, &minusOne, &minusOne, &minusOne );
48 std::vector<double> work(lwork);
49 if (
VDEBUG) printf(
"*** entering dgetri ***\n");
50 dgetri_( &n, a, &lda, ipiv, &work[0], &lwork, &info );
51 if (
VDEBUG) printf(
"***dgetri finished***\n");
55int clapack_sgetrf(
const enum CBLAS_ORDER Order,
int mA,
int nA,
float *a,
int ldaA,
int *ipiv)
57 __CLPK_integer m=mA, n=nA, lda=ldaA,info;
58 sgetrf_( &m, &n, a, &lda, ipiv, &info );
62int clapack_sgetri(
const enum CBLAS_ORDER Order,
int nA,
float *a,
int ldaA,
int *ipiv)
64 __CLPK_integer n=nA, lda=ldaA, info;
65 int minusOne=-1, one=1;
66#if defined(__CYGWIN__) || defined(StdLAPACK)
67 __CLPK_integer lwork = n* (__CLPK_integer) ilaenv_( &one,
"sgetri",6,
"",0, (
int*) &n, &minusOne, &minusOne, &minusOne );
69 __CLPK_integer lwork = n* (__CLPK_integer) ilaenv_( &one,
"sgetri",
"", (
int*) &n, &minusOne, &minusOne, &minusOne );
71 std::vector<float> work(lwork);
72 if (
VDEBUG) printf(
"*** entering sgetri ***\n");
73 sgetri_( &n, a, &lda, ipiv, &work[0], &lwork, &info );
74 if (
VDEBUG) printf(
"***sgetri finished***\n");
78int clapack_dgesv(
const enum CBLAS_ORDER Order,
int nA,
int nrhsA,
double *a,
int ldaA,
int *pivA,
double *b,
int ldbA)
80 __CLPK_integer n=nA, nrhs=nrhsA, lda=ldaA, *ipiv=pivA, ldb=ldbA;
82 if (
VDEBUG) printf(
"*** entering dgesv ***\n");
83 dgesv_(&n,&nrhs,a,&lda,ipiv,b,&ldb,&info);
84 if (
VDEBUG) printf(
"***dgesv finished***\n");
88int clapack_dgels(
const enum CBLAS_ORDER Order,
const enum CBLAS_TRANSPOSE trans,
int mA,
int nA,
int nrhsA,
double *a,
int ldaA,
double *b,
int ldbA)
90 __CLPK_integer m=mA, n=nA, nrhs=nrhsA, lda=ldaA, ldb=ldbA, info;
94 if ( trans == CblasNoTrans ) transc =
'N';
95 if ( trans == CblasTrans ) transc =
'T';
96 std::vector<double> work(lwork);
97 if (
VDEBUG) printf(
"*** entering dgels ***\n");
98 dgels_(&transc,&m,&n,&nrhs,a,&lda,b,&ldb,&work[0],&lwork,&info);
99 if (
VDEBUG) printf(
"***dgels finished***\n");
int clapack_dgetrf(const enum CBLAS_ORDER Order, int mA, int nA, double *a, int ldaA, int *ipiv)
int clapack_dgesv(const enum CBLAS_ORDER Order, int nA, int nrhsA, double *a, int ldaA, int *pivA, double *b, int ldbA)
int clapack_dgels(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE trans, int mA, int nA, int nrhsA, double *a, int ldaA, double *b, int ldbA)
int clapack_sgetrf(const enum CBLAS_ORDER Order, int mA, int nA, float *a, int ldaA, int *ipiv)
int clapack_dgetri(const enum CBLAS_ORDER Order, int nA, double *a, int ldaA, int *ipiv)
int clapack_sgetri(const enum CBLAS_ORDER Order, int nA, float *a, int ldaA, int *ipiv)
Dune::FieldVector< T, n > max(Dune::FieldVector< T, n > x, Dune::FieldVector< T, n > const &y)
Componentwise maximum.
Dune::FieldVector< T, n > min(Dune::FieldVector< T, n > x, Dune::FieldVector< T, n > const &y)
Componentwise minimum.
void dgetrf_(int *m, int *n, double *a, int *lda, int *ipiv, int *info)