33 #ifndef _LAPACKE_CONFIG_H_
34 #define _LAPACKE_CONFIG_H_
37 #if defined(LAPACK_COMPLEX_CPP)
46 #if defined(LAPACK_ILP64)
47 #define lapack_int long
49 #define lapack_int int
53 #ifndef lapack_logical
54 #define lapack_logical lapack_int
57 #ifndef LAPACK_COMPLEX_CUSTOM
59 #if defined(LAPACK_COMPLEX_STRUCTURE)
61 typedef struct {
float real, imag; } _lapack_complex_float;
62 typedef struct {
double real, imag; } _lapack_complex_double;
63 #define lapack_complex_float _lapack_complex_float
64 #define lapack_complex_double _lapack_complex_double
65 #define lapack_complex_float_real(z) ((z).real)
66 #define lapack_complex_float_imag(z) ((z).imag)
67 #define lapack_complex_double_real(z) ((z).real)
68 #define lapack_complex_double_imag(z) ((z).imag)
70 #elif defined(LAPACK_COMPLEX_C99)
73 #define lapack_complex_float float _Complex
74 #define lapack_complex_double double _Complex
75 #define lapack_complex_float_real(z) (creal(z))
76 #define lapack_complex_float_imag(z) (cimag(z))
77 #define lapack_complex_double_real(z) (creal(z))
78 #define lapack_complex_double_imag(z) (cimag(z))
80 #elif defined(LAPACK_COMPLEX_CPP)
82 #define lapack_complex_float std::complex<float>
83 #define lapack_complex_double std::complex<double>
84 #define lapack_complex_float_real(z) ((z).real())
85 #define lapack_complex_float_imag(z) ((z).imag())
86 #define lapack_complex_double_real(z) ((z).real())
87 #define lapack_complex_double_imag(z) ((z).imag())
92 #define lapack_complex_float float _Complex
93 #define lapack_complex_double double _Complex
94 #define lapack_complex_float_real(z) (creal(z))
95 #define lapack_complex_float_imag(z) (cimag(z))
96 #define lapack_complex_double_real(z) (creal(z))
97 #define lapack_complex_double_imag(z) (cimag(z))
101 lapack_complex_float lapack_make_complex_float(
float re,
float im );
102 lapack_complex_double lapack_make_complex_double(
double re,
double im );
106 #ifndef LAPACK_malloc
107 #define LAPACK_malloc( size ) malloc( size )
111 #define LAPACK_free( p ) free( p )