QDP++
generic_blas_vadd.h
Go to the documentation of this file.
1// $Id: generic_blas_vadd.h,v 1.2 2007-06-10 14:32:10 edwards Exp $
2
7
8#ifndef QDP_GENERIC_BLAS_VADD
9#define QDP_GENERIC_BLAS_VADD
10
11namespace QDP {
12
13// (Vector) Out = (Vector) In1 + (Vector) In2
14inline
15void vadd(REAL *Out, REAL *In1, REAL *In2, int n_3vec)
16{
17
18 int len = n_3vec*24;
19 for(int i=0; i < len; i++) {
20 Out[i] = In1[i]+In2[i];
21 }
22#if 0
23 double in10r;
24 double in10i;
25 double in11r;
26 double in11i;
27 double in12r;
28 double in12i;
29
30 double in20r;
31 double in20i;
32 double in21r;
33 double in21i;
34 double in22r;
35 double in22i;
36
37 double out0r;
38 double out0i;
39 double out1r;
40 double out1i;
41 double out2r;
42 double out2i;
43
44 int counter =0;
45 int in1ptr =0;
46 int in2ptr =0;
47 int outptr =0;
48
49 if( n_3vec > 0 ) {
50 in10r = (double)In1[in1ptr++];
51 in20r = (double)In2[in2ptr++];
52 in10i = (double)In1[in1ptr++];
53 in20i = (double)In2[in2ptr++];
54 for(counter = 0; counter < n_3vec-1; counter++) {
55 out0r = in10r + in20r;
56 Out[outptr++] = (REAL)out0r;
57
58 in11r = (double)In1[in1ptr++];
59 in21r = (double)In2[in2ptr++];
60 out0i = in10i + in20i;
61 Out[outptr++] = (REAL)out0i;
62
63 in11i = (double)In1[in1ptr++];
64 in21i = (double)In2[in2ptr++];
65 out1r = in11r + in21r;
66 Out[outptr++] = (REAL)out1r;
67
68 in12r = (double)In1[in1ptr++];
69 in22r = (double)In2[in2ptr++];
70 out1i = in11i + in21i;
71 Out[outptr++] = (REAL)out1i;
72
73 in12i = (double)In1[in1ptr++];
74 in22i = (double)In2[in2ptr++];
75 out2r = in12r + in22r;
76 Out[outptr++] = (REAL)out2r;
77
78 in10r = (double)In1[in1ptr++];
79 in20r = (double)In2[in2ptr++];
80 out2i = in12i + in22i;
81 Out[outptr++] = (REAL)out2i;
82
83 in10i = (double)In1[in1ptr++];
84 in20i = (double)In2[in2ptr++];
85 }
86 out0r = in10r + in20r;
87 Out[outptr++] = (REAL)out0r;
88
89 in11r = (double)In1[in1ptr++];
90 in21r = (double)In2[in2ptr++];
91 out0i = in10i + in20i;
92 Out[outptr++] = (REAL)out0i;
93
94 in11i = (double)In1[in1ptr++];
95 in21i = (double)In2[in2ptr++];
96 out1r = in11r + in21r;
97 Out[outptr++] = (REAL)out1r;
98
99 in12r = (double)In1[in1ptr++];
100 in22r = (double)In2[in2ptr++];
101 out1i = in11i + in21i;
102 Out[outptr++] = (REAL)out1i;
103
104 in12i = (double)In1[in1ptr++];
105 in22i = (double)In2[in2ptr++];
106 out2r = in12r + in22r;
107 Out[outptr++] = (REAL)out2r;
108 out2i = in12i + in22i;
109 Out[outptr++] = (REAL)out2i;
110 }
111#endif
112
113}
114
115
116} // namespace QDP;
117
118#endif // guard
REAL32 REAL
Yet another random number generator.
void vadd(REAL *Out, REAL *In1, REAL *In2, int n_3vec)