1#ifndef W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_source_pw_HAMILT_PWDFT_KERNELS_VNL_TOOLS_HPP
2#define W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_source_pw_HAMILT_PWDFT_KERNELS_VNL_TOOLS_HPP
6template <
typename FPTYPE>
12 const FPTYPE& table_interval,
15 const FPTYPE position =
x / table_interval;
16 const int iq =
static_cast<int>(position);
18 const FPTYPE x0 = position -
static_cast<FPTYPE
>(iq);
19 const FPTYPE x1 = 1.0 - x0;
20 const FPTYPE x2 = 2.0 - x0;
21 const FPTYPE x3 = 3.0 - x0;
22 const FPTYPE y = table[(dim1 * tab_2 + dim2) * tab_3 + iq + 0] * x1 * x2 * x3 / 6.0
23 + table[(dim1 * tab_2 + dim2) * tab_3 + iq + 0 + 1] * x0 * x2 * x3 / 2.0
24 - table[(dim1 * tab_2 + dim2) * tab_3 + iq + 0 + 2] * x1 * x0 * x3 / 2.0
25 + table[(dim1 * tab_2 + dim2) * tab_3 + iq + 0 + 3] * x1 * x2 * x0 / 6.0;
31template <
typename FPTYPE>
37 const FPTYPE& table_interval,
40 const FPTYPE position =
x / table_interval;
41 const int iq =
static_cast<int>(position);
43 const FPTYPE x0 = position -
static_cast<FPTYPE
>(iq);
44 const FPTYPE x1 = 1.0 - x0;
45 const FPTYPE x2 = 2.0 - x0;
46 const FPTYPE x3 = 3.0 - x0;
47 const FPTYPE y = (table[(dim1 * tab_2 + dim2) * tab_3 + iq + 0] * (-x2 * x3 - x1 * x3 - x1 * x2) / 6.0
48 + table[(dim1 * tab_2 + dim2) * tab_3 + iq + 0 + 1] * (+x2 * x3 - x0 * x3 - x0 * x2) / 2.0
49 - table[(dim1 * tab_2 + dim2) * tab_3 + iq + 0 + 2] * (+x1 * x3 - x0 * x3 - x0 * x1) / 2.0
50 + table[(dim1 * tab_2 + dim2) * tab_3 + iq + 0 + 3] * (+x1 * x2 - x0 * x2 - x0 * x1) / 6.0)
double x[440]
Definition sincos.cpp:28
__device__ FPTYPE _polynomial_interpolation(const FPTYPE *table, const int &dim1, const int &dim2, const int &tab_2, const int &tab_3, const FPTYPE &table_interval, const FPTYPE &x)
Definition vnl_tools_cu.hpp:16
__device__ FPTYPE _polynomial_interpolation_nl(const FPTYPE *table, const int &dim1, const int &dim2, const int &tab_2, const int &tab_3, const FPTYPE &table_interval, const FPTYPE &x)
Definition vnl_tools_cu.hpp:40