@@ -42,25 +42,31 @@ class ComplexArray
42
42
ComplexArray operator -(const ComplexArray &cd);
43
43
void operator -=(const ComplexArray &cd);
44
44
ComplexArray operator *(const double r);
45
- ComplexArray operator *(const std::complex < double > c);
45
+ ComplexArray operator *(const std::complex <double > c);
46
46
void operator *=(const double r);
47
- void operator *=(const std::complex < double > c);
47
+ void operator *=(const std::complex <double > c);
48
48
49
49
void operator *=(const ComplexArray &in);
50
50
bool operator == (const ComplexArray &cd2)const ;
51
51
bool operator != (const ComplexArray &cd2)const ;
52
52
53
53
// subscript operator
54
- std::complex < double > &operator ()
54
+ std::complex <double > &operator ()
55
55
(const int ind1=0 , const int ind2=0 , const int ind3=0 , const int ind4=0 );
56
56
// std::complex < double> &operator()(int, int, int, int, int);
57
57
58
- const std::complex < double > &operator ()
58
+ const std::complex <double > &operator ()
59
59
(const int ind1=0 , const int ind2=0 , const int ind3=0 , const int ind4=0 )const ;
60
60
// const std::complex < double> &operator()(int, int, int, int, int)const;
61
61
62
+ // set all elements to be {0.0,0.0}
62
63
void zero_out (void );
64
+
65
+ // Multiply all elements by -1
63
66
void negate (void );
67
+
68
+ // set all elements to a random number whose real/image
69
+ // is between [-0.5,0.5).
64
70
void randomize (void );// uniform distribution
65
71
66
72
// void write(char *fname);
@@ -81,25 +87,36 @@ class ComplexArray
81
87
};
82
88
83
89
ComplexArray operator *(double r, const ComplexArray &cd);
84
- ComplexArray operator *(std::complex < double > c, const ComplexArray &cd);
90
+ ComplexArray operator *(std::complex <double > c, const ComplexArray &cd);
85
91
92
+ // Sum of absolute squares of all elements in cd
86
93
double abs2 (const ComplexArray &cd);
87
94
95
+
88
96
void
89
- add_scale_abs2 (const std::complex < double > &c, const ComplexArray & in,
97
+ add_scale_abs2 (const std::complex <double > &c, const ComplexArray & in,
90
98
ComplexArray &out);
91
99
92
- std::complex < double > dot (const ComplexArray &cd1, const ComplexArray &cd2);
100
+ // Take "dot-product" of two ComplexArray: sum of cd1(conjugate)[i] * cd2[i]
101
+ std::complex <double > dot (const ComplexArray &cd1, const ComplexArray &cd2);
102
+
103
+ /* Does cd2 += r * cd1 */
93
104
void scale_accumulate (double r, const ComplexArray &cd1, ComplexArray &cd2);
94
- void scale_accumulate (std::complex < double > c, const ComplexArray &cd1, ComplexArray &cd2);
105
+
106
+ /* Does cd2 += c * cd1 */
107
+ void scale_accumulate (std::complex <double > c, const ComplexArray &cd1, ComplexArray &cd2);
108
+
109
+ /* Does cd3 = r1*cd1 + r2*cd2 */
95
110
void scaled_sum (double r1, const ComplexArray &cd1,
96
111
double r2, const ComplexArray &cd2,
97
112
ComplexArray &cd3);
98
113
99
- void scaled_sum (double r1, ComplexArray &cd1,
100
- double r2, ComplexArray &cd2,
101
- ComplexArray &cd3);
114
+ /* Does cd3 = c1*cd1 + c2*cd2 */
115
+ void scaled_sum (std::complex <double > c1, const ComplexArray &cd1,
116
+ std::complex <double > c2, const ComplexArray &cd2,
117
+ ComplexArray &cd3);
102
118
119
+ // out[i] = a1[i] * in2[i]
103
120
void point_mult (ComplexArray &a1, ComplexArray &in2, ComplexArray &out);
104
121
105
122
// set elements of u as zero which u is 1_d std::complex array
0 commit comments