• Home
  • Raw
  • Download

Lines Matching full:complex

15 # These tests ensure that complex math does the right thing
37 class ComplexSubclass(complex):
49 if isinstance(a, complex):
50 if isinstance(b, complex):
57 if isinstance(b, complex):
81 """Compute complex z=x*y, and check that z/x==y and z/y==x."""
96 simple_complex = [complex(x, y) for x in simple_real for y in simple_real]
101 # A naive complex division algorithm (such as in 2.0) is very prone to
103 self.check_div(complex(1e200, 1e200), 1+0j)
104 self.check_div(complex(1e-200, 1e-200), 1+0j)
108 self.check_div(complex(random(), random()),
109 complex(random(), random()))
111 self.assertAlmostEqual(complex.__truediv__(2+0j, 1+1j), 1-1j)
116 z = complex(0, 0) / complex(denom_real, denom_imag)
143 self.assertIs(complex.__eq__(1+1j, 1<<10000), False)
144 self.assertIs(complex.__lt__(1+1j, None), NotImplemented)
145 self.assertIs(complex.__eq__(1+1j, None), NotImplemented)
146 self.assertIs(complex.__eq__(1+1j, 1+1j), True)
147 self.assertIs(complex.__eq__(1+1j, 2+2j), False)
148 self.assertIs(complex.__ne__(1+1j, 1+1j), False)
149 self.assertIs(complex.__ne__(1+1j, 2+2j), True)
152 self.assertIs(complex.__eq__(f+0j, f), True)
153 self.assertIs(complex.__ne__(f+0j, f), False)
154 self.assertIs(complex.__eq__(complex(f, f), f), False)
155 self.assertIs(complex.__ne__(complex(f, f), f), True)
156 self.assertIs(complex.__lt__(1+1j, 2+2j), NotImplemented)
157 self.assertIs(complex.__le__(1+1j, 2+2j), NotImplemented)
158 self.assertIs(complex.__gt__(1+1j, 2+2j), NotImplemented)
159 self.assertIs(complex.__ge__(1+1j, 2+2j), NotImplemented)
174 z = complex(i, imag)
175 self.assertIs(complex.__eq__(z, i), is_equal(delta))
176 self.assertIs(complex.__ne__(z, i), not is_equal(delta))
188 self.assertEqual(1j + int(+1), complex(+1, 1))
189 self.assertEqual(1j + int(-1), complex(-1, 1))
195 self.assertEqual(1j - int(+1), complex(-1, 1))
196 self.assertEqual(1j - int(-1), complex(1, 1))
202 self.assertEqual(1j * int(20), complex(0, 20))
203 self.assertEqual(1j * int(-1), complex(0, -1))
209 # % is no longer supported on complex numbers
265 self.fail("should fail 0.0 to negative or complex power")
272 self.fail("should fail 0.0 to negative or complex power")
294 c = complex(real, imag)
313 complex(5.0, 12.0),
314 complex(5.0e100, 12.0e100),
315 complex(-4.0, INF),
316 complex(INF, 0.0),
331 complex_pow = value**complex(exponent)
339 self.assertTrue(complex(random() + 1e-6, random() + 1e-6))
340 self.assertTrue(not complex(0.0, 0.0))
344 self.assertClose(complex(5.3, 9.8).conjugate(), 5.3-9.8j)
348 self.assertIs(type(z), complex)
352 check(complex(), 0.0, 0.0)
353 check(complex(10), 10.0, 0.0)
354 check(complex(4.25), 4.25, 0.0)
355 check(complex(4.25+0j), 4.25, 0.0)
356 check(complex(4.25+0.5j), 4.25, 0.5)
357 check(complex(ComplexSubclass(4.25+0.5j)), 4.25, 0.5)
358 check(complex(WithComplex(4.25+0.5j)), 4.25, 0.5)
360 check(complex(1, 10), 1.0, 10.0)
361 check(complex(1, 10.0), 1.0, 10.0)
362 check(complex(1, 4.25), 1.0, 4.25)
363 check(complex(1.0, 10), 1.0, 10.0)
364 check(complex(4.25, 10), 4.25, 10.0)
365 check(complex(1.0, 10.0), 1.0, 10.0)
366 check(complex(4.25, 0.5), 4.25, 0.5)
368 check(complex(4.25+0j, 0), 4.25, 0.0)
369 check(complex(ComplexSubclass(4.25+0j), 0), 4.25, 0.0)
370 check(complex(WithComplex(4.25+0j), 0), 4.25, 0.0)
371 check(complex(4.25j, 0), 0.0, 4.25)
372 check(complex(0j, 4.25), 0.0, 4.25)
373 check(complex(0, 4.25+0j), 0.0, 4.25)
374 check(complex(0, ComplexSubclass(4.25+0j)), 0.0, 4.25)
377 complex(0, WithComplex(4.25+0j))
378 check(complex(0.0, 4.25j), -4.25, 0.0)
379 check(complex(4.25+0j, 0j), 4.25, 0.0)
380 check(complex(4.25j, 0j), 0.0, 4.25)
381 check(complex(0j, 4.25+0j), 0.0, 4.25)
382 check(complex(0j, 4.25j), -4.25, 0.0)
384 check(complex(real=4.25), 4.25, 0.0)
385 check(complex(real=4.25+0j), 4.25, 0.0)
386 check(complex(real=4.25+1.5j), 4.25, 1.5)
387 check(complex(imag=1.5), 0.0, 1.5)
388 check(complex(real=4.25, imag=1.5), 4.25, 1.5)
389 check(complex(4.25, imag=1.5), 4.25, 1.5)
395 check(complex(x, y), x, y)
396 check(complex(y, x), y, x)
398 c = complex(4.25, 1.5)
399 self.assertIs(complex(c), c)
407 complex, {})
410 complex, None)
413 complex, {1:2}, 0)
416 complex, '1', 0)
419 complex, 0, {1:2})
422 complex, 0, '1')
424 self.assertRaises(TypeError, complex, WithComplex(1.5))
425 self.assertRaises(TypeError, complex, WithComplex(1))
426 self.assertRaises(TypeError, complex, WithComplex(None))
427 self.assertRaises(TypeError, complex, WithComplex(4.25+0j), object())
428 self.assertRaises(TypeError, complex, WithComplex(1.5), object())
429 self.assertRaises(TypeError, complex, WithComplex(1), object())
430 self.assertRaises(TypeError, complex, WithComplex(None), object())
439 self.assertRaises(EvilExc, complex, evilcomplex())
441 check(complex(WithFloat(4.25)), 4.25, 0.0)
442 check(complex(WithFloat(4.25), 1.5), 4.25, 1.5)
443 check(complex(1.5, WithFloat(4.25)), 1.5, 4.25)
444 self.assertRaises(TypeError, complex, WithFloat(42))
445 self.assertRaises(TypeError, complex, WithFloat(42), 1.5)
446 self.assertRaises(TypeError, complex, 1.5, WithFloat(42))
447 self.assertRaises(TypeError, complex, WithFloat(None))
448 self.assertRaises(TypeError, complex, WithFloat(None), 1.5)
449 self.assertRaises(TypeError, complex, 1.5, WithFloat(None))
451 check(complex(WithIndex(42)), 42.0, 0.0)
452 check(complex(WithIndex(42), 1.5), 42.0, 1.5)
453 check(complex(1.5, WithIndex(42)), 1.5, 42.0)
454 self.assertRaises(OverflowError, complex, WithIndex(2**2000))
455 self.assertRaises(OverflowError, complex, WithIndex(2**2000), 1.5)
456 self.assertRaises(OverflowError, complex, 1.5, WithIndex(2**2000))
457 self.assertRaises(TypeError, complex, WithIndex(None))
458 self.assertRaises(TypeError, complex, WithIndex(None), 1.5)
459 self.assertRaises(TypeError, complex, 1.5, WithIndex(None))
465 self.assertRaises(TypeError, complex, MyInt())
466 self.assertRaises(TypeError, complex, MyInt(), 1.5)
467 self.assertRaises(TypeError, complex, 1.5, MyInt())
469 class complex0(complex):
470 """Test usage of __complex__() when inheriting from 'complex'"""
474 class complex1(complex):
477 return complex.__new__(self, 2*value)
481 class complex2(complex):
483 complex is returned"""
487 check(complex(complex0(1j)), 0.0, 42.0)
489 check(complex(complex1(1j)), 0.0, 2.0)
490 self.assertRaises(TypeError, complex, complex2(1j))
495 self.assertEqual(type(z.__complex__()), complex)
499 self.assertEqual(type(z.__complex__()), complex)
506 z = complex(x, y)
513 z = complex(ComplexSubclass(x, y))
514 self.assertIs(type(z), complex)
517 z = ComplexSubclass(complex(x, y))
524 self.assertIs(type(z), complex)
528 check(complex("1"), 1.0, 0.0)
529 check(complex("1j"), 0.0, 1.0)
530 check(complex("-1"), -1.0, 0.0)
531 check(complex("+1"), 1.0, 0.0)
532 check(complex("1+2j"), 1.0, 2.0)
533 check(complex("(1+2j)"), 1.0, 2.0)
534 check(complex("(1.5+4.25j)"), 1.5, 4.25)
535 check(complex("4.25+1J"), 4.25, 1.0)
536 check(complex(" ( +4.25-6J )"), 4.25, -6.0)
537 check(complex(" ( +4.25-J )"), 4.25, -1.0)
538 check(complex(" ( +4.25+j )"), 4.25, 1.0)
539 check(complex("J"), 0.0, 1.0)
540 check(complex("( j )"), 0.0, 1.0)
541 check(complex("+J"), 0.0, 1.0)
542 check(complex("( -j)"), 0.0, -1.0)
543 check(complex('1-1j'), 1.0, -1.0)
544 check(complex('1J'), 0.0, 1.0)
546 check(complex('1e-500'), 0.0, 0.0)
547 check(complex('-1e-500j'), 0.0, -0.0)
548 check(complex('1e-500+1e-500j'), 0.0, 0.0)
549 check(complex('-1e-500+1e-500j'), -0.0, 0.0)
550 check(complex('1e-500-1e-500j'), 0.0, -0.0)
551 check(complex('-1e-500-1e-500j'), -0.0, -0.0)
553 # SF bug 543840: complex(string) accepts strings with \0
555 self.assertRaises(ValueError, complex, '1+1j\0j')
556 self.assertRaises(ValueError, complex, "")
557 self.assertRaises(ValueError, complex, "\0")
558 self.assertRaises(ValueError, complex, "3\09")
559 self.assertRaises(ValueError, complex, "1+")
560 self.assertRaises(ValueError, complex, "1+1j+1j")
561 self.assertRaises(ValueError, complex, "--")
562 self.assertRaises(ValueError, complex, "(1+2j")
563 self.assertRaises(ValueError, complex, "1+2j)")
564 self.assertRaises(ValueError, complex, "1+(2j)")
565 self.assertRaises(ValueError, complex, "(1+2j)123")
566 self.assertRaises(ValueError, complex, "x")
567 self.assertRaises(ValueError, complex, "1j+2")
568 self.assertRaises(ValueError, complex, "1e1ej")
569 self.assertRaises(ValueError, complex, "1e++1ej")
570 self.assertRaises(ValueError, complex, ")1+2j(")
572 self.assertRaises(ValueError, complex, "1..1j")
573 self.assertRaises(ValueError, complex, "1.11.1j")
574 self.assertRaises(ValueError, complex, "1e1.1j")
576 # check that complex accepts long unicode strings
577 self.assertIs(type(complex("1"*500)), complex)
579 self.assertEqual(complex('\N{EM SPACE}(\N{EN SPACE}1+1j ) '), 1+1j)
582 self.assertRaises(ValueError, complex, '\u3053\u3093\u306b\u3061\u306f')
585 self.assertEqual(copysign(1., complex("-nan").real), -1.)
586 self.assertEqual(copysign(1., complex("-nanj").imag), -1.)
587 self.assertEqual(copysign(1., complex("-nan-nanj").real), -1.)
588 self.assertEqual(copysign(1., complex("-nan-nanj").imag), -1.)
594 self.assertEqual(complex(lit), eval(lit))
595 self.assertEqual(complex(lit), complex(lit.replace('_', '')))
600 self.assertRaises(ValueError, complex, lit)
604 self.assertEqual(hash(x), hash(complex(x, 0)))
606 self.assertEqual(hash(x), hash(complex(x, 0.)))
611 nums = [complex(x/3., y/7.) for x in range(-9,9) for y in range(-9,9)]
615 self.assertRaises(OverflowError, abs, complex(DBL_MAX, DBL_MAX))
627 test(complex(1., INF), "(1+infj)")
628 test(complex(1., -INF), "(1-infj)")
629 test(complex(INF, 1), "(inf+1j)")
630 test(complex(-INF, INF), "(-inf+infj)")
631 test(complex(NAN, 1), "(nan+1j)")
632 test(complex(1, NAN), "(1+nanj)")
633 test(complex(NAN, NAN), "(nan+nanj)")
634 test(complex(-NAN, -NAN), "(nan+nanj)")
636 test(complex(0, INF), "infj")
637 test(complex(0, -INF), "-infj")
638 test(complex(0, NAN), "nanj")
640 self.assertEqual(1-6j,complex(repr(1-6j)))
641 self.assertEqual(1+6j,complex(repr(1+6j)))
642 self.assertEqual(-6j,complex(repr(-6j)))
643 self.assertEqual(6j,complex(repr(6j)))
651 test(complex(0., 1.), "1j")
652 test(complex(-0., 1.), "(-0+1j)")
653 test(complex(0., -1.), "-1j")
654 test(complex(-0., -1.), "(-0-1j)")
656 test(complex(0., 0.), "0j")
657 test(complex(0., -0.), "-0j")
658 test(complex(-0., 0.), "(-0+0j)")
659 test(complex(-0., -0.), "(-0-0j)")
664 self.assertIs(type(+ComplexSubclass(1, 6)), complex)
674 self.assertEqual(complex(0, INF).__getnewargs__(), (0.0, INF))
675 self.assertEqual(complex(INF, 0).__getnewargs__(), (INF, 0.0))
702 self.assertEqual(complex("1e500"), complex(INF, 0.0))
703 self.assertEqual(complex("-1e500j"), complex(0.0, -INF))
704 self.assertEqual(complex("-1e500+1.8e308j"), complex(-INF, INF))
711 # complex(repr(z)) should recover z exactly, even for complex
715 z = complex(x, y)
716 roundtrip = complex(repr(z))
722 infj, nanj = complex(0.0, inf), complex(0.0, nan)
725 z = complex(x, y)
751 z = complex(0.0, 3.0)
756 z = complex(-0.0, 2.0)
837 self.assertEqual(format(complex(NAN, NAN), 'f'), 'nan+nanj')
838 self.assertEqual(format(complex(1, NAN), 'f'), '1.000000+nanj')
839 self.assertEqual(format(complex(NAN, 1), 'f'), 'nan+1.000000j')
840 self.assertEqual(format(complex(NAN, -1), 'f'), 'nan-1.000000j')
841 self.assertEqual(format(complex(NAN, NAN), 'F'), 'NAN+NANj')
842 self.assertEqual(format(complex(1, NAN), 'F'), '1.000000+NANj')
843 self.assertEqual(format(complex(NAN, 1), 'F'), 'NAN+1.000000j')
844 self.assertEqual(format(complex(NAN, -1), 'F'), 'NAN-1.000000j')
845 self.assertEqual(format(complex(INF, INF), 'f'), 'inf+infj')
846 self.assertEqual(format(complex(1, INF), 'f'), '1.000000+infj')
847 self.assertEqual(format(complex(INF, 1), 'f'), 'inf+1.000000j')
848 self.assertEqual(format(complex(INF, -1), 'f'), 'inf-1.000000j')
849 self.assertEqual(format(complex(INF, INF), 'F'), 'INF+INFj')
850 self.assertEqual(format(complex(1, INF), 'F'), '1.000000+INFj')
851 self.assertEqual(format(complex(INF, 1), 'F'), 'INF+1.000000j')
852 self.assertEqual(format(complex(INF, -1), 'F'), 'INF-1.000000j')