23 #ifndef QMCPLUSPLUS_E2IPHI_H 24 #define QMCPLUSPLUS_E2IPHI_H 31 #if defined(HAVE_MASSV) 33 inline void eval_e2iphi(
int n,
double* restrict phi,
double* restrict c,
double* restrict
s) { vsincos(
s, c, phi, &
n); }
34 inline void eval_e2iphi(
int n,
float* restrict phi,
float* restrict c,
float* restrict
s) { vssincos(
s, c, phi, &
n); }
36 inline void eval_e2iphi(
int n,
double* restrict phi, std::complex<double>* restrict z)
38 vcosisin((
double _Complex*)z, phi, &
n);
41 inline void eval_e2iphi(
int n,
float* restrict phi, std::complex<float>* restrict z)
43 vscosisin((
float _Complex*)z, phi, &
n);
45 #elif defined(HAVE_MKL_VML) 46 #include <mkl_vml_functions.h> 47 inline void eval_e2iphi(
int n,
double* restrict phi,
double* restrict c,
double* restrict
s) { vdSinCos(
n, phi,
s, c); }
49 inline void eval_e2iphi(
int n,
float* restrict phi,
float* restrict c,
float* restrict
s) { vsSinCos(
n, phi,
s, c); }
50 inline void eval_e2iphi(
int n,
const double* restrict phi, std::complex<double>* restrict z)
52 vzCIS(
n, phi, (MKL_Complex16*)(z));
55 inline void eval_e2iphi(
int n,
const float* restrict phi, std::complex<float>* restrict z)
57 vcCIS(
n, phi, (MKL_Complex8*)(z));
61 inline void eval_e2iphi(
int n,
const T* restrict phi, T* restrict phase_r, T* restrict phase_i)
63 for (
int i = 0; i <
n; i++)
67 inline void eval_e2iphi(
int n,
const T* restrict phi, std::complex<T>* restrict z)
70 for (
int i = 0; i <
n; i++)
73 z[i] = std::complex<T>(c,
s);
79 inline void eval_e2iphi(std::vector<T>& phi, std::vector<std::complex<T>>& z)
void sincos(T a, T *restrict s, T *restrict c)
sincos function wrapper
void eval_e2iphi(int n, const T *restrict phi, T *restrict phase_r, T *restrict phase_i)