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