@@ -37,6 +37,11 @@ public COMPLEX(double fRe, double fIm) {
37
37
m_fIm = fIm ;
38
38
}
39
39
40
+ public COMPLEX (COMPLEX other ) {
41
+ m_fRe = other .m_fRe ;
42
+ m_fIm = other .m_fIm ;
43
+ }
44
+
40
45
public void divide (COMPLEX cNumerator , double fDivisor ) {
41
46
m_fRe = cNumerator .m_fRe / fDivisor ;
42
47
m_fIm = cNumerator .m_fIm / fDivisor ;
@@ -61,18 +66,32 @@ public void muladd(double f1, COMPLEX x1, double f2, COMPLEX x2 ) {
61
66
m_fRe = f1 * x1 .m_fRe + f2 * x2 .m_fRe ;
62
67
m_fIm = f1 * x1 .m_fIm + f2 * x2 .m_fIm ;
63
68
}
69
+
70
+ public void mulsub (COMPLEX cMul1 , COMPLEX cMul2 ) {
71
+ m_fRe -= cMul2 .m_fRe * cMul1 .m_fRe - cMul2 .m_fIm * cMul1 .m_fIm ;
72
+ m_fIm -= cMul2 .m_fRe * cMul1 .m_fIm + cMul2 .m_fIm * cMul1 .m_fRe ;
73
+ }
74
+
64
75
// calc
65
76
public void divide (COMPLEX cNumerator , COMPLEX cDivisor ) {
66
77
double f = cDivisor .m_fRe * cDivisor .m_fRe + cDivisor .m_fIm * cDivisor .m_fIm ;
67
78
m_fRe = (cNumerator .m_fRe * cDivisor .m_fRe + cNumerator .m_fIm * cDivisor .m_fIm ) / f ;
68
79
m_fIm = (cNumerator .m_fIm * cDivisor .m_fRe - cNumerator .m_fRe * cDivisor .m_fIm ) / f ;
69
80
}
81
+
70
82
public void mul (COMPLEX cMul1 , COMPLEX cMul2 ) {
71
83
m_fRe = cMul2 .m_fRe * cMul1 .m_fRe - cMul2 .m_fIm * cMul1 .m_fIm ;
72
84
m_fIm = cMul2 .m_fRe * cMul1 .m_fIm + cMul2 .m_fIm * cMul1 .m_fRe ;
73
85
}
86
+
87
+ public void mul (COMPLEX cMul1 , double m_fRe , double m_fIm ) {
88
+ m_fRe = m_fRe * cMul1 .m_fRe - m_fIm * cMul1 .m_fIm ;
89
+ m_fIm = m_fRe * cMul1 .m_fIm + m_fIm * cMul1 .m_fRe ;
90
+ }
91
+
74
92
public String toString () {
75
93
return "(" +m_fRe + "," + m_fIm + ")" ;
76
94
}
77
95
96
+
78
97
}
0 commit comments