Skip to content

Commit 0be11cb

Browse files
authored
Test: UT for class ComplexArray,
Merge pull request #646 from pxlxingliang/modulebase
2 parents 12b4a22 + b38ef52 commit 0be11cb

File tree

2 files changed

+370
-57
lines changed

2 files changed

+370
-57
lines changed

source/module_base/complexarray.h

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,25 +42,31 @@ class ComplexArray
4242
ComplexArray operator-(const ComplexArray &cd);
4343
void operator-=(const ComplexArray &cd);
4444
ComplexArray operator*(const double r);
45-
ComplexArray operator*(const std::complex < double> c);
45+
ComplexArray operator*(const std::complex <double> c);
4646
void operator*=(const double r);
47-
void operator*=(const std::complex < double> c);
47+
void operator*=(const std::complex <double> c);
4848

4949
void operator*=(const ComplexArray &in);
5050
bool operator== (const ComplexArray &cd2)const;
5151
bool operator!= (const ComplexArray &cd2)const;
5252

5353
// subscript operator
54-
std::complex < double> &operator()
54+
std::complex <double> &operator()
5555
(const int ind1=0, const int ind2=0, const int ind3=0, const int ind4=0);
5656
// std::complex < double> &operator()(int, int, int, int, int);
5757

58-
const std::complex < double> &operator()
58+
const std::complex <double> &operator()
5959
(const int ind1=0, const int ind2=0, const int ind3=0, const int ind4=0)const;
6060
// const std::complex < double> &operator()(int, int, int, int, int)const;
6161

62+
//set all elements to be {0.0,0.0}
6263
void zero_out(void);
64+
65+
//Multiply all elements by -1
6366
void negate(void);
67+
68+
//set all elements to a random number whose real/image
69+
//is between [-0.5,0.5).
6470
void randomize(void);//uniform distribution
6571

6672
// void write(char *fname);
@@ -81,25 +87,36 @@ class ComplexArray
8187
};
8288

8389
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);
8591

92+
//Sum of absolute squares of all elements in cd
8693
double abs2(const ComplexArray &cd);
8794

95+
8896
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,
9098
ComplexArray &out);
9199

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 */
93104
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 */
95110
void scaled_sum(double r1, const ComplexArray &cd1,
96111
double r2, const ComplexArray &cd2,
97112
ComplexArray &cd3);
98113

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);
102118

119+
//out[i] = a1[i] * in2[i]
103120
void point_mult(ComplexArray &a1, ComplexArray &in2, ComplexArray &out);
104121

105122
// set elements of u as zero which u is 1_d std::complex array

0 commit comments

Comments
 (0)