MCPcopy Index your code
hub / github.com/python/cpython / test_pow

Method test_pow

Lib/test/test_complex.py:348–419  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

346 self.assertRaises(TypeError, divmod, a, b)
347
348 def test_pow(self):
349 self.assertAlmostEqual(pow(1+1j, 0+0j), 1.0)
350 self.assertAlmostEqual(pow(0+0j, 2+0j), 0.0)
351 self.assertEqual(pow(0+0j, 2000+0j), 0.0)
352 self.assertEqual(pow(0, 0+0j), 1.0)
353 self.assertEqual(pow(-1, 0+0j), 1.0)
354 self.assertRaises(ZeroDivisionError, pow, 0+0j, 1j)
355 self.assertRaises(ZeroDivisionError, pow, 0+0j, -1000)
356 self.assertAlmostEqual(pow(1j, -1), 1/1j)
357 self.assertAlmostEqual(pow(1j, 200), 1)
358 self.assertRaises(ValueError, pow, 1+1j, 1+1j, 1+1j)
359 self.assertRaises(OverflowError, pow, 1e200+1j, 1e200+1j)
360 self.assertRaises(OverflowError, pow, 1e200+1j, 5)
361 self.assertRaises(TypeError, pow, 1j, None)
362 self.assertRaises(TypeError, pow, None, 1j)
363 self.assertAlmostEqual(pow(1j, 0.5), 0.7071067811865476+0.7071067811865475j)
364
365 a = 3.33+4.43j
366 self.assertEqual(a ** 0j, 1)
367 self.assertEqual(a ** 0.+0.j, 1)
368
369 self.assertEqual(3j ** 0j, 1)
370 self.assertEqual(3j ** 0, 1)
371
372 try:
373 0j ** a
374 except ZeroDivisionError:
375 pass
376 else:
377 self.fail("should fail 0.0 to negative or complex power")
378
379 try:
380 0j ** (3-2j)
381 except ZeroDivisionError:
382 pass
383 else:
384 self.fail("should fail 0.0 to negative or complex power")
385
386 # The following is used to exercise certain code paths
387 self.assertEqual(a ** 105, a ** 105)
388 self.assertEqual(a ** -105, a ** -105)
389 self.assertEqual(a ** -30, a ** -30)
390
391 self.assertEqual(0.0j ** 0, 1)
392
393 b = 5.1+2.3j
394 self.assertRaises(ValueError, pow, a, b, 0)
395
396 # Check some boundary conditions; some of these used to invoke
397 # undefined behaviour (https://bugs.python.org/issue44698). We're
398 # not actually checking the results of these operations, just making
399 # sure they don't crash (for example when using clang's
400 # UndefinedBehaviourSanitizer).
401 values = (sys.maxsize, sys.maxsize+1, sys.maxsize-1,
402 -sys.maxsize, -sys.maxsize+1, -sys.maxsize+1)
403 for real in values:
404 for imag in values:
405 with self.subTest(real=real, imag=imag):

Callers

nothing calls this directly

Calls 6

assertAlmostEqualMethod · 0.95
powFunction · 0.85
assertEqualMethod · 0.45
assertRaisesMethod · 0.45
failMethod · 0.45
subTestMethod · 0.45

Tested by

no test coverage detected