@@ -13,7 +13,8 @@ namespace TensorFlowNET.UnitTest.Basics
13
13
[ TestClass ]
14
14
public class ComplexTest : EagerModeTestBase
15
15
{
16
- [ Ignore ( "Not working" ) ]
16
+ // Tests for Complex128
17
+
17
18
[ TestMethod ]
18
19
public void complex128_basic ( )
19
20
{
@@ -23,7 +24,7 @@ public void complex128_basic()
23
24
Tensor t_real = tf . constant ( d_real , dtype : TF_DataType . TF_DOUBLE ) ;
24
25
Tensor t_imag = tf . constant ( d_imag , dtype : TF_DataType . TF_DOUBLE ) ;
25
26
26
- Tensor t_complex = tf . complex ( t_real , t_imag , TF_DataType . TF_COMPLEX128 ) ;
27
+ Tensor t_complex = tf . complex ( t_real , t_imag ) ;
27
28
28
29
Tensor t_real_result = tf . math . real ( t_complex ) ;
29
30
Tensor t_imag_result = tf . math . imag ( t_complex ) ;
@@ -34,9 +35,77 @@ public void complex128_basic()
34
35
double [ ] d_real_result = n_real_result . ToArray < double > ( ) ;
35
36
double [ ] d_imag_result = n_imag_result . ToArray < double > ( ) ;
36
37
37
- Assert . AreEqual ( d_real_result , d_real ) ;
38
- Assert . AreEqual ( d_imag_result , d_imag ) ;
38
+ Assert . IsTrue ( base . Equal ( d_real_result , d_real ) ) ;
39
+ Assert . IsTrue ( base . Equal ( d_imag_result , d_imag ) ) ;
40
+ }
41
+ [ TestMethod ]
42
+ public void complex128_abs ( )
43
+ {
44
+ tf . enable_eager_execution ( ) ;
45
+
46
+ double [ ] d_real = new double [ ] { - 3.0 , - 5.0 , 8.0 , 7.0 } ;
47
+ double [ ] d_imag = new double [ ] { - 4.0 , 12.0 , - 15.0 , 24.0 } ;
48
+
49
+ double [ ] d_abs = new double [ ] { 5.0 , 13.0 , 17.0 , 25.0 } ;
50
+
51
+ Tensor t_real = tf . constant ( d_real , dtype : TF_DataType . TF_DOUBLE ) ;
52
+ Tensor t_imag = tf . constant ( d_imag , dtype : TF_DataType . TF_DOUBLE ) ;
53
+
54
+ Tensor t_complex = tf . complex ( t_real , t_imag ) ;
55
+
56
+ Tensor t_abs_result = tf . abs ( t_complex ) ;
57
+
58
+ double [ ] d_abs_result = t_abs_result . numpy ( ) . ToArray < double > ( ) ;
59
+ Assert . IsTrue ( base . Equal ( d_abs_result , d_abs ) ) ;
60
+ }
61
+ [ TestMethod ]
62
+ public void complex128_conj ( )
63
+ {
64
+ double [ ] d_real = new double [ ] { - 3.0 , - 5.0 , 8.0 , 7.0 } ;
65
+ double [ ] d_imag = new double [ ] { - 4.0 , 12.0 , - 15.0 , 24.0 } ;
66
+
67
+ double [ ] d_real_expected = new double [ ] { - 3.0 , - 5.0 , 8.0 , 7.0 } ;
68
+ double [ ] d_imag_expected = new double [ ] { 4.0 , - 12.0 , 15.0 , - 24.0 } ;
69
+
70
+ Tensor t_real = tf . constant ( d_real , dtype : TF_DataType . TF_DOUBLE ) ;
71
+ Tensor t_imag = tf . constant ( d_imag , dtype : TF_DataType . TF_DOUBLE ) ;
72
+
73
+ Tensor t_complex = tf . complex ( t_real , t_imag , TF_DataType . TF_COMPLEX128 ) ;
74
+
75
+ Tensor t_result = tf . math . conj ( t_complex ) ;
76
+
77
+ NDArray n_real_result = tf . math . real ( t_result ) . numpy ( ) ;
78
+ NDArray n_imag_result = tf . math . imag ( t_result ) . numpy ( ) ;
79
+
80
+ double [ ] d_real_result = n_real_result . ToArray < double > ( ) ;
81
+ double [ ] d_imag_result = n_imag_result . ToArray < double > ( ) ;
82
+
83
+ Assert . IsTrue ( base . Equal ( d_real_result , d_real_expected ) ) ;
84
+ Assert . IsTrue ( base . Equal ( d_imag_result , d_imag_expected ) ) ;
85
+ }
86
+ [ TestMethod ]
87
+ public void complex128_angle ( )
88
+ {
89
+ double [ ] d_real = new double [ ] { 0.0 , 1.0 , - 1.0 , 0.0 } ;
90
+ double [ ] d_imag = new double [ ] { 1.0 , 0.0 , - 2.0 , - 3.0 } ;
91
+
92
+ double [ ] d_expected = new double [ ] { 1.5707963267948966 , 0 , - 2.0344439357957027 , - 1.5707963267948966 } ;
93
+
94
+ Tensor t_real = tf . constant ( d_real , dtype : TF_DataType . TF_DOUBLE ) ;
95
+ Tensor t_imag = tf . constant ( d_imag , dtype : TF_DataType . TF_DOUBLE ) ;
96
+
97
+ Tensor t_complex = tf . complex ( t_real , t_imag , TF_DataType . TF_COMPLEX128 ) ;
98
+
99
+ Tensor t_result = tf . math . angle ( t_complex ) ;
100
+
101
+ NDArray n_result = t_result . numpy ( ) ;
102
+
103
+ double [ ] d_result = n_result . ToArray < double > ( ) ;
104
+
105
+ Assert . IsTrue ( base . Equal ( d_result , d_expected ) ) ;
39
106
}
107
+
108
+ // Tests for Complex64
40
109
[ TestMethod ]
41
110
public void complex64_basic ( )
42
111
{
@@ -47,7 +116,7 @@ public void complex64_basic()
47
116
Tensor t_real = tf . constant ( d_real , dtype : TF_DataType . TF_FLOAT ) ;
48
117
Tensor t_imag = tf . constant ( d_imag , dtype : TF_DataType . TF_FLOAT ) ;
49
118
50
- Tensor t_complex = tf . complex ( t_real , t_imag , TF_DataType . TF_COMPLEX64 ) ;
119
+ Tensor t_complex = tf . complex ( t_real , t_imag ) ;
51
120
52
121
Tensor t_real_result = tf . math . real ( t_complex ) ;
53
122
Tensor t_imag_result = tf . math . imag ( t_complex ) ;
0 commit comments