QDP++
generic_blas_vscal_g5.h
Go to the documentation of this file.
1// $Id: generic_blas_vscal_g5.h,v 1.2 2007-06-10 14:32:10 edwards Exp $
2
7
8#ifndef QDP_GENERIC_BLAS_VSCAL_G5
9#define QDP_GENERIC_BLAS_VSCAL_G5
10
11namespace QDP {
12
13// (Vector) out = (Scalar) (*scalep) * P+ (Vector) In
14inline
15void scal_g5ProjPlus(REAL *Out, REAL *scalep, REAL *In, int n_4vec)
16{
17 double a;
18 double x0r;
19 double x0i;
20
21 double x1r;
22 double x1i;
23
24 double x2r;
25 double x2i;
26
27 double z0r;
28 double z0i;
29
30 double z1r;
31 double z1i;
32
33 double z2r;
34 double z2i;
35
36 a = *scalep;
37
38 int index_x = 0;
39 int index_z = 0;
40
41 int counter;
42
43 for( counter = 0; counter < n_4vec; counter++) {
44 // Spin Component 0
45 x0r = (double)In[index_x++];
46 z0r = a*x0r;
47 Out[index_z++] =(REAL) z0r;
48
49 x0i = (double)In[index_x++];
50 z0i = a*x0i;
51 Out[index_z++] =(REAL) z0i;
52
53 x1r = (double)In[index_x++];
54 z1r = a*x1r;
55 Out[index_z++] = (REAL)z1r;
56
57 x1i = (double)In[index_x++];
58 z1i = a*x1i;
59 Out[index_z++] = (REAL)z1i;
60
61 x2r = (double)In[index_x++];
62 z2r = a*x2r;
63 Out[index_z++] = (REAL)z2r;
64
65 x2i = (double)In[index_x++];
66 z2i = a*x2i;
67 Out[index_z++] = (REAL)z2i;
68
69 // Spin Component 1
70 x0r = (double)In[index_x++];
71 z0r = a*x0r;
72 Out[index_z++] =(REAL) z0r;
73
74 x0i = (double)In[index_x++];
75 z0i = a*x0i;
76 Out[index_z++] =(REAL) z0i;
77
78 x1r = (double)In[index_x++];
79 z1r = a*x1r;
80 Out[index_z++] = (REAL)z1r;
81
82 x1i = (double)In[index_x++];
83 z1i = a*x1i;
84 Out[index_z++] = (REAL)z1i;
85
86 x2r = (double)In[index_x++];
87 z2r = a*x2r;
88 Out[index_z++] = (REAL)z2r;
89
90 x2i = (double)In[index_x++];
91 z2i = a*x2i;
92 Out[index_z++] = (REAL)z2i;
93
94 index_x+=12;
95
96 Out[index_z++] = (REAL)0;
97 Out[index_z++] = (REAL)0;
98 Out[index_z++] = (REAL)0;
99 Out[index_z++] = (REAL)0;
100 Out[index_z++] = (REAL)0;
101 Out[index_z++] = (REAL)0;
102
103 Out[index_z++] = (REAL)0;
104 Out[index_z++] = (REAL)0;
105 Out[index_z++] = (REAL)0;
106 Out[index_z++] = (REAL)0;
107 Out[index_z++] = (REAL)0;
108 Out[index_z++] = (REAL)0;
109
110 }
111}
112
113// (Vector) out = (Scalar) (*scalep) * P- (Vector) In
114inline
115void scal_g5ProjMinus(REAL *Out, REAL *scalep, REAL *In, int n_4vec)
116{
117 double a;
118 double x0r;
119 double x0i;
120
121 double x1r;
122 double x1i;
123
124 double x2r;
125 double x2i;
126
127 double z0r;
128 double z0i;
129
130 double z1r;
131 double z1i;
132
133 double z2r;
134 double z2i;
135
136 a = *scalep;
137
138 int index_x = 0;
139 int index_z = 0;
140
141 int counter;
142
143 for( counter = 0; counter < n_4vec; counter++) {
144 index_x+=12;
145
146 // Spin Component 0
147 Out[index_z++] = (REAL)0;
148 Out[index_z++] = (REAL)0;
149 Out[index_z++] = (REAL)0;
150 Out[index_z++] = (REAL)0;
151 Out[index_z++] = (REAL)0;
152 Out[index_z++] = (REAL)0;
153
154 // Spin Component 1
155 Out[index_z++] = (REAL)0;
156 Out[index_z++] = (REAL)0;
157 Out[index_z++] = (REAL)0;
158 Out[index_z++] = (REAL)0;
159 Out[index_z++] = (REAL)0;
160 Out[index_z++] = (REAL)0;
161
162
163 // Spin Component 2
164 x0r = (double)In[index_x++];
165 z0r = a*x0r;
166 Out[index_z++] =(REAL) z0r;
167
168 x0i = (double)In[index_x++];
169 z0i = a*x0i;
170 Out[index_z++] =(REAL) z0i;
171
172 x1r = (double)In[index_x++];
173 z1r = a*x1r;
174 Out[index_z++] = (REAL)z1r;
175
176 x1i = (double)In[index_x++];
177 z1i = a*x1i;
178 Out[index_z++] = (REAL)z1i;
179
180 x2r = (double)In[index_x++];
181 z2r = a*x2r;
182 Out[index_z++] = (REAL)z2r;
183
184 x2i = (double)In[index_x++];
185 z2i = a*x2i;
186 Out[index_z++] = (REAL)z2i;
187
188 // Spin Component 3
189 x0r = (double)In[index_x++];
190 z0r = a*x0r;
191 Out[index_z++] =(REAL) z0r;
192
193 x0i = (double)In[index_x++];
194 z0i = a*x0i;
195 Out[index_z++] =(REAL) z0i;
196
197 x1r = (double)In[index_x++];
198 z1r = a*x1r;
199 Out[index_z++] = (REAL)z1r;
200
201 x1i = (double)In[index_x++];
202 z1i = a*x1i;
203 Out[index_z++] = (REAL)z1i;
204
205 x2r = (double)In[index_x++];
206 z2r = a*x2r;
207 Out[index_z++] = (REAL)z2r;
208
209 x2i = (double)In[index_x++];
210 z2i = a*x2i;
211 Out[index_z++] = (REAL)z2i;
212
213
214 }
215}
216
217} // namespace QDP;
218
219#endif // guard
REAL32 REAL
Yet another random number generator.
void scal_g5ProjMinus(REAL *Out, REAL *scalep, REAL *In, int n_4vec)
void scal_g5ProjPlus(REAL *Out, REAL *scalep, REAL *In, int n_4vec)