(self)
| 105 | |
| 106 | @unittest.expectedFailure # TODO: RUSTPYTHON; AssertionError: floats nan and inf are not identical |
| 107 | def test_truediv(self): |
| 108 | simple_real = [float(i) for i in range(-5, 6)] |
| 109 | simple_complex = [complex(x, y) for x in simple_real for y in simple_real] |
| 110 | for x in simple_complex: |
| 111 | for y in simple_complex: |
| 112 | self.check_div(x, y) |
| 113 | |
| 114 | # A naive complex division algorithm (such as in 2.0) is very prone to |
| 115 | # nonsense errors for these (overflows and underflows). |
| 116 | self.check_div(complex(1e200, 1e200), 1+0j) |
| 117 | self.check_div(complex(1e-200, 1e-200), 1+0j) |
| 118 | |
| 119 | # Just for fun. |
| 120 | for i in range(100): |
| 121 | self.check_div(complex(random(), random()), |
| 122 | complex(random(), random())) |
| 123 | |
| 124 | self.assertAlmostEqual(complex.__truediv__(2+0j, 1+1j), 1-1j) |
| 125 | self.assertRaises(TypeError, operator.truediv, 1j, None) |
| 126 | self.assertRaises(TypeError, operator.truediv, None, 1j) |
| 127 | |
| 128 | for denom_real, denom_imag in [(0, NAN), (NAN, 0), (NAN, NAN)]: |
| 129 | z = complex(0, 0) / complex(denom_real, denom_imag) |
| 130 | self.assertTrue(isnan(z.real)) |
| 131 | self.assertTrue(isnan(z.imag)) |
| 132 | z = float(0) / complex(denom_real, denom_imag) |
| 133 | self.assertTrue(isnan(z.real)) |
| 134 | self.assertTrue(isnan(z.imag)) |
| 135 | |
| 136 | self.assertComplexesAreIdentical(complex(INF, NAN) / 2, |
| 137 | complex(INF, NAN)) |
| 138 | |
| 139 | self.assertComplexesAreIdentical(complex(INF, 1)/(0.0+1j), |
| 140 | complex(NAN, -INF)) |
| 141 | |
| 142 | # test recover of infs if numerator has infs and denominator is finite |
| 143 | self.assertComplexesAreIdentical(complex(INF, -INF)/(1+0j), |
| 144 | complex(INF, -INF)) |
| 145 | self.assertComplexesAreIdentical(complex(INF, INF)/(0.0+1j), |
| 146 | complex(INF, -INF)) |
| 147 | self.assertComplexesAreIdentical(complex(NAN, INF)/complex(2**1000, 2**-1000), |
| 148 | complex(INF, INF)) |
| 149 | self.assertComplexesAreIdentical(complex(INF, NAN)/complex(2**1000, 2**-1000), |
| 150 | complex(INF, -INF)) |
| 151 | |
| 152 | # test recover of zeros if denominator is infinite |
| 153 | self.assertComplexesAreIdentical((1+1j)/complex(INF, INF), (0.0+0j)) |
| 154 | self.assertComplexesAreIdentical((1+1j)/complex(INF, -INF), (0.0+0j)) |
| 155 | self.assertComplexesAreIdentical((1+1j)/complex(-INF, INF), |
| 156 | complex(0.0, -0.0)) |
| 157 | self.assertComplexesAreIdentical((1+1j)/complex(-INF, -INF), |
| 158 | complex(-0.0, 0)) |
| 159 | self.assertComplexesAreIdentical((INF+1j)/complex(INF, INF), |
| 160 | complex(NAN, NAN)) |
| 161 | self.assertComplexesAreIdentical(complex(1, INF)/complex(INF, INF), |
| 162 | complex(NAN, NAN)) |
| 163 | self.assertComplexesAreIdentical(complex(INF, 1)/complex(1, INF), |
| 164 | complex(NAN, NAN)) |
nothing calls this directly
no test coverage detected