@@ -94,6 +94,10 @@ def assertFloatsAreIdentical(self, x, y):
9494 msg += ': zeros have different signs'
9595 self .fail (msg .format (x , y ))
9696
97+ def assertComplexesAreIdentical (self , x , y ):
98+ self .assertFloatsAreIdentical (x .real , y .real )
99+ self .assertFloatsAreIdentical (x .imag , y .imag )
100+
97101 def assertClose (self , x , y , eps = 1e-9 ):
98102 """Return true iff complexes x and y "are close"."""
99103 self .assertCloseAbs (x .real , y .real , eps )
@@ -139,6 +143,33 @@ def test_truediv(self):
139143 self .assertTrue (isnan (z .real ))
140144 self .assertTrue (isnan (z .imag ))
141145
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+
142173 def test_truediv_zero_division (self ):
143174 for a , b in ZERO_DIVISION :
144175 with self .assertRaises (ZeroDivisionError ):
0 commit comments