43 DOPERATE_RI_VEC)(
const int *opn,
const double *restrict w,
44 const int *opnri,
const int *opri,
45 const int *rimap_inv,
const int *rimap_inv_max,
46 const double *restrict fi,
const int *ldfp,
47 double *restrict fo) {
48 const size_t ldf = ldfp[0];
52 aligned = aligned && (((
long long)fi) % (8 * VEC_SIZE) == 0);
53 aligned = aligned && (((
long long)fo) % (8 * VEC_SIZE) == 0);
54 aligned = aligned && ((1 << ldf) % VEC_SIZE == 0);
68 DOPERATE_RI_SYM_VEC)(
const int *opn,
const double *restrict wpair,
const double *restrict wcenter,
69 const int *opnri,
const int *opri_pos,
const int *opri_neg,
70 const int *rimap_inv,
const int *rimap_inv_max,
71 const double *restrict fi,
const int *ldfp,
72 double *restrict fo) {
73 const size_t ldf = ldfp[0];
77 aligned = aligned && (((
long long)fi) % (8 * VEC_SIZE) == 0);
78 aligned = aligned && (((
long long)fo) % (8 * VEC_SIZE) == 0);
79 aligned = aligned && ((1 << ldf) % VEC_SIZE == 0);
92void FC_FUNC_(doperate_ri_antisym_vec,
93 DOPERATE_RI_ANTISYM_VEC)(
const int *opn,
const double *restrict wpair,
94 const int *opnri,
const int *opri_pos,
const int *opri_neg,
95 const int *rimap_inv,
const int *rimap_inv_max,
96 const double *restrict fi,
const int *ldfp,
97 double *restrict fo) {
98 const size_t ldf = ldfp[0];
102 aligned = aligned && (((
long long)fi) % (8 * VEC_SIZE) == 0);
103 aligned = aligned && (((
long long)fo) % (8 * VEC_SIZE) == 0);
104 aligned = aligned && ((1 << ldf) % VEC_SIZE == 0);
122 ZOPERATE_RI_VEC)(
const int *opn,
const double *restrict w,
123 const int *opnri,
const int *opri,
124 const int *rimap_inv,
const int *rimap_inv_max,
125 const double *restrict fi,
const int *ldfp,
126 double *restrict fo) {
127 FC_FUNC_(doperate_ri_vec, DOPERATE_RI_VEC)
128 (opn, w, opnri, opri, rimap_inv, rimap_inv_max, fi, ldfp, fo);
132 ZOPERATE_RI_SYM_VEC)(
const int *opn,
const double *restrict w,
133 const double *restrict wcenter,
134 const int *opnri,
const int *opri_pos,
const int *opri_neg,
135 const int *rimap_inv,
const int *rimap_inv_max,
136 const double *restrict fi,
const int *ldfp,
137 double *restrict fo) {
138 FC_FUNC_(doperate_ri_sym_vec, DOPERATE_RI_SYM_VEC)
139 (opn, w, wcenter, opnri, opri_pos, opri_neg, rimap_inv, rimap_inv_max, fi, ldfp, fo);
142void FC_FUNC_(zoperate_ri_antisym_vec,
143 ZOPERATE_RI_ANTISYM_VEC)(
const int *opn,
const double *restrict w,
144 const int *opnri,
const int *opri_pos,
const int *opri_neg,
145 const int *rimap_inv,
const int *rimap_inv_max,
146 const double *restrict fi,
const int *ldfp,
147 double *restrict fo) {
148 FC_FUNC_(doperate_ri_antisym_vec, DOPERATE_RI_SYM_VEC)
149 (opn, w, opnri, opri_pos, opri_neg, rimap_inv, rimap_inv_max, fi, ldfp, fo);
154 DGAUSS_SEIDEL)(
const int *opn,
const double *restrict w,
155 const int *opnri,
const int *opri,
156 const int *rimap_inv,
const int *rimap_inv_max,
157 const double *restrict factor,
double *pot,
158 const double *restrict rho) {
160 const int n = opn[0];
161 const int nri = opnri[0];
166 register const double fac = *factor;
168 for (
l = 0;
l <
nri;
l++) {
172 for (;
i < rimap_inv_max[
l];
i++) {
173 a0 = w[0] * pot[
i +
index[0]];
174 for (
j = 1;
j < n;
j++)
176 pot[
i] += fac * (a0 - rho[
i]);
184 char * vector = VECTORIZATION_LEVEL;
185 size_t len = strlen(vector) + 1;
186 strncpy(level, vector, len);
void FC_FUNC_(doperate_ri_sym_vec, DOPERATE_RI_SYM_VEC) const
void get_vectorization_level(char *level)
const int *restrict index