@@ -94,6 +94,10 @@ def assertFloatsAreIdentical(self, x, y):
94
94
msg += ': zeros have different signs'
95
95
self .fail (msg .format (x , y ))
96
96
97
+ def assertComplexesAreIdentical (self , x , y ):
98
+ self .assertFloatsAreIdentical (x .real , y .real )
99
+ self .assertFloatsAreIdentical (x .imag , y .imag )
100
+
97
101
def assertClose (self , x , y , eps = 1e-9 ):
98
102
"""Return true iff complexes x and y "are close"."""
99
103
self .assertCloseAbs (x .real , y .real , eps )
@@ -139,6 +143,33 @@ def test_truediv(self):
139
143
self .assertTrue (isnan (z .real ))
140
144
self .assertTrue (isnan (z .imag ))
141
145
146
+ self .assertComplexesAreIdentical (complex (INF , 1 )/ (0.0 + 1j ),
147
+ complex (NAN , - INF ))
148
+
149
+ # test recover of infs if numerator has infs and denominator is finite
150
+ self .assertComplexesAreIdentical (complex (INF , - INF )/ (1 + 0j ),
151
+ complex (INF , - INF ))
152
+ self .assertComplexesAreIdentical (complex (INF , INF )/ (0.0 + 1j ),
153
+ complex (INF , - INF ))
154
+ self .assertComplexesAreIdentical (complex (NAN , INF )/ complex (2 ** 1000 , 2 ** - 1000 ),
155
+ complex (INF , INF ))
156
+ self .assertComplexesAreIdentical (complex (INF , NAN )/ complex (2 ** 1000 , 2 ** - 1000 ),
157
+ complex (INF , - INF ))
158
+
159
+ # test recover of zeros if denominator is infinite
160
+ self .assertComplexesAreIdentical ((1 + 1j )/ complex (INF , INF ), (0.0 + 0j ))
161
+ self .assertComplexesAreIdentical ((1 + 1j )/ complex (INF , - INF ), (0.0 + 0j ))
162
+ self .assertComplexesAreIdentical ((1 + 1j )/ complex (- INF , INF ),
163
+ complex (0.0 , - 0.0 ))
164
+ self .assertComplexesAreIdentical ((1 + 1j )/ complex (- INF , - INF ),
165
+ complex (- 0.0 , 0 ))
166
+ self .assertComplexesAreIdentical ((INF + 1j )/ complex (INF , INF ),
167
+ complex (NAN , NAN ))
168
+ self .assertComplexesAreIdentical (complex (1 , INF )/ complex (INF , INF ),
169
+ complex (NAN , NAN ))
170
+ self .assertComplexesAreIdentical (complex (INF , 1 )/ complex (1 , INF ),
171
+ complex (NAN , NAN ))
172
+
142
173
def test_truediv_zero_division (self ):
143
174
for a , b in ZERO_DIVISION :
144
175
with self .assertRaises (ZeroDivisionError ):
0 commit comments