36#ifndef _MKL_LAPACKE_H_
41#ifdef HAVE_LAPACK_CONFIG_H
42#include "lapacke_config.h"
49#define lapack_int int64_t
56#define lapack_logical lapack_int
59#ifndef LAPACK_COMPLEX_CUSTOM
61#ifndef lapack_complex_float
62#define lapack_complex_float std::complex<float>
65#ifndef lapack_complex_float_real
66#define lapack_complex_float_real(z) (creal(z))
69#ifndef lapack_complex_float_imag
70#define lapack_complex_float_imag(z) (cimag(z))
73lapack_complex_float lapack_make_complex_float(
float re,
float im);
75#ifndef lapack_complex_double
76#define lapack_complex_double std::complex<double>
79#ifndef lapack_complex_double_real
80#define lapack_complex_double_real(z) (creal(z))
83#ifndef lapack_complex_double_imag
84#define lapack_complex_double_imag(z) (cimag(z))
87lapack_complex_double lapack_make_complex_double(
double re,
double im);
96#define LAPACKE_malloc(size) malloc(size)
99#define LAPACKE_free(p) free(p)
102#define LAPACK_C2INT(x) (lapack_int)(*((float*)&x))
103#define LAPACK_Z2INT(x) (lapack_int)(*((double*)&x))
105#define LAPACK_ROW_MAJOR 101
106#define LAPACK_COL_MAJOR 102
108#define LAPACK_WORK_MEMORY_ERROR -1010
109#define LAPACK_TRANSPOSE_MEMORY_ERROR -1011
113typedef lapack_logical (*LAPACK_S_SELECT2)(
const float*,
const float*);
114typedef lapack_logical (*LAPACK_S_SELECT3)(
const float*,
const float*,
const float*);
115typedef lapack_logical (*LAPACK_D_SELECT2)(
const double*,
const double*);
116typedef lapack_logical (*LAPACK_D_SELECT3)(
const double*,
const double*,
const double*);
118typedef lapack_logical (*LAPACK_C_SELECT1)(
const lapack_complex_float*);
119typedef lapack_logical (*LAPACK_C_SELECT2)(
const lapack_complex_float*,
const lapack_complex_float*);
120typedef lapack_logical (*LAPACK_Z_SELECT1)(
const lapack_complex_double*);
121typedef lapack_logical (*LAPACK_Z_SELECT2)(
const lapack_complex_double*,
const lapack_complex_double*);
123#include "lapacke_mangling.h"
125#define LAPACK_lsame LAPACK_GLOBAL(lsame, LSAME)
126lapack_logical LAPACK_lsame(
char* ca,
char* cb, lapack_int lca, lapack_int lcb);
138lapack_int LAPACKE_sgees(
int matrix_order,
char jobvs,
char sort, LAPACK_S_SELECT2 select, lapack_int n,
float* a,
139 lapack_int lda, lapack_int* sdim,
float* wr,
float* wi,
float* vs, lapack_int ldvs);
140lapack_int LAPACKE_dgees(
int matrix_order,
char jobvs,
char sort, LAPACK_D_SELECT2 select, lapack_int n,
double* a,
141 lapack_int lda, lapack_int* sdim,
double* wr,
double* wi,
double* vs, lapack_int ldvs);
142lapack_int LAPACKE_cgees(
int matrix_order,
char jobvs,
char sort, LAPACK_C_SELECT1 select, lapack_int n,
143 lapack_complex_float* a, lapack_int lda, lapack_int* sdim, lapack_complex_float* w,
144 lapack_complex_float* vs, lapack_int ldvs);
145lapack_int LAPACKE_zgees(
int matrix_order,
char jobvs,
char sort, LAPACK_Z_SELECT1 select, lapack_int n,
146 lapack_complex_double* a, lapack_int lda, lapack_int* sdim, lapack_complex_double* w,
147 lapack_complex_double* vs, lapack_int ldvs);
150lapack_int LAPACKE_sgeqp3(
int matrix_order, lapack_int m, lapack_int n,
float* a, lapack_int lda, lapack_int* jpvt,
152lapack_int LAPACKE_dgeqp3(
int matrix_order, lapack_int m, lapack_int n,
double* a, lapack_int lda, lapack_int* jpvt,
154lapack_int LAPACKE_cgeqp3(
int matrix_order, lapack_int m, lapack_int n, lapack_complex_float* a, lapack_int lda,
155 lapack_int* jpvt, lapack_complex_float* tau);
156lapack_int LAPACKE_zgeqp3(
int matrix_order, lapack_int m, lapack_int n, lapack_complex_double* a, lapack_int lda,
157 lapack_int* jpvt, lapack_complex_double* tau);
160lapack_int LAPACKE_sgeqrf(
int matrix_order, lapack_int m, lapack_int n,
float* a, lapack_int lda,
float* tau);
161lapack_int LAPACKE_dgeqrf(
int matrix_order, lapack_int m, lapack_int n,
double* a, lapack_int lda,
double* tau);
162lapack_int LAPACKE_cgeqrf(
int matrix_order, lapack_int m, lapack_int n, lapack_complex_float* a, lapack_int lda,
163 lapack_complex_float* tau);
164lapack_int LAPACKE_zgeqrf(
int matrix_order, lapack_int m, lapack_int n, lapack_complex_double* a, lapack_int lda,
165 lapack_complex_double* tau);
168lapack_int LAPACKE_sgesdd(
int matrix_order,
char jobz, lapack_int m, lapack_int n,
float* a, lapack_int lda,
float* s,
169 float* u, lapack_int ldu,
float* vt, lapack_int ldvt);
170lapack_int LAPACKE_dgesdd(
int matrix_order,
char jobz, lapack_int m, lapack_int n,
double* a, lapack_int lda,
double* s,
171 double* u, lapack_int ldu,
double* vt, lapack_int ldvt);
172lapack_int LAPACKE_cgesdd(
int matrix_order,
char jobz, lapack_int m, lapack_int n, lapack_complex_float* a,
173 lapack_int lda,
float* s, lapack_complex_float* u, lapack_int ldu, lapack_complex_float* vt,
175lapack_int LAPACKE_zgesdd(
int matrix_order,
char jobz, lapack_int m, lapack_int n, lapack_complex_double* a,
176 lapack_int lda,
double* s, lapack_complex_double* u, lapack_int ldu,
177 lapack_complex_double* vt, lapack_int ldvt);
180lapack_int LAPACKE_sgesvd(
int matrix_order,
char jobu,
char jobvt, lapack_int m, lapack_int n,
float* a, lapack_int lda,
181 float* s,
float* u, lapack_int ldu,
float* vt, lapack_int ldvt,
float* superb);
182lapack_int LAPACKE_dgesvd(
int matrix_order,
char jobu,
char jobvt, lapack_int m, lapack_int n,
double* a,
183 lapack_int lda,
double* s,
double* u, lapack_int ldu,
double* vt, lapack_int ldvt,
185lapack_int LAPACKE_cgesvd(
int matrix_order,
char jobu,
char jobvt, lapack_int m, lapack_int n, lapack_complex_float* a,
186 lapack_int lda,
float* s, lapack_complex_float* u, lapack_int ldu, lapack_complex_float* vt,
187 lapack_int ldvt,
float* superb);
188lapack_int LAPACKE_zgesvd(
int matrix_order,
char jobu,
char jobvt, lapack_int m, lapack_int n, lapack_complex_double* a,
189 lapack_int lda,
double* s, lapack_complex_double* u, lapack_int ldu,
190 lapack_complex_double* vt, lapack_int ldvt,
double* superb);
193lapack_int LAPACKE_sgetrf(
int matrix_order, lapack_int m, lapack_int n,
float* a, lapack_int lda, lapack_int* ipiv);
194lapack_int LAPACKE_dgetrf(
int matrix_order, lapack_int m, lapack_int n,
double* a, lapack_int lda, lapack_int* ipiv);
195lapack_int LAPACKE_cgetrf(
int matrix_order, lapack_int m, lapack_int n, lapack_complex_float* a, lapack_int lda,
197lapack_int LAPACKE_zgetrf(
int matrix_order, lapack_int m, lapack_int n, lapack_complex_double* a, lapack_int lda,
201lapack_int LAPACKE_spotrf(
int matrix_order,
char uplo, lapack_int n,
float* a, lapack_int lda);
202lapack_int LAPACKE_dpotrf(
int matrix_order,
char uplo, lapack_int n,
double* a, lapack_int lda);
203lapack_int LAPACKE_cpotrf(
int matrix_order,
char uplo, lapack_int n, lapack_complex_float* a, lapack_int lda);
204lapack_int LAPACKE_zpotrf(
int matrix_order,
char uplo, lapack_int n, lapack_complex_double* a, lapack_int lda);
207lapack_int LAPACKE_ssyev(
int matrix_order,
char jobz,
char uplo, lapack_int n,
float* a, lapack_int lda,
float* w);
208lapack_int LAPACKE_dsyev(
int matrix_order,
char jobz,
char uplo, lapack_int n,
double* a, lapack_int lda,
double* w);
209lapack_int LAPACKE_cheev(
int matrix_order,
char jobz,
char uplo, lapack_int n, lapack_complex_float* a, lapack_int lda,
211lapack_int LAPACKE_zheev(
int matrix_order,
char jobz,
char uplo, lapack_int n, lapack_complex_double* a, lapack_int lda,