| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- # test basic complex number functionality
- # constructor
- print(complex(1))
- print(complex(1.2))
- print(complex(1.2j))
- print(complex("1"))
- print(complex("1.2"))
- print(complex("1.2j"))
- print(complex(1, 2))
- print(complex(1j, 2j))
- # unary ops
- print(bool(1j))
- print(+(1j))
- print(-(1 + 2j))
- # binary ops
- print(1j + False)
- print(1j + True)
- print(1j + 2)
- print(1j + 2j)
- print(1j - 2)
- print(1j - 2j)
- print(1j * 2)
- print(1j * 2j)
- print(1j / 2)
- print((1j / 2j).real)
- print(1j / (1 + 2j))
- ans = 0j ** 0; print("%.5g %.5g" % (ans.real, ans.imag))
- ans = 0j ** 1; print("%.5g %.5g" % (ans.real, ans.imag))
- ans = 0j ** 0j; print("%.5g %.5g" % (ans.real, ans.imag))
- ans = 1j ** 2.5; print("%.5g %.5g" % (ans.real, ans.imag))
- ans = 1j ** 2.5j; print("%.5g %.5g" % (ans.real, ans.imag))
- # comparison
- print(1j == 1)
- print(1j == 1j)
- # comparison of nan is special
- nan = float('nan') * 1j
- print(nan == 1j)
- print(nan == nan)
- # builtin abs
- print(abs(1j))
- print("%.5g" % abs(1j + 2))
- # builtin hash
- print(hash(1 + 0j))
- print(type(hash(1j)))
- # float on lhs should delegate to complex
- print(1.2 + 3j)
- # negative base and fractional power should create a complex
- ans = (-1) ** 2.3; print("%.5g %.5g" % (ans.real, ans.imag))
- ans = (-1.2) ** -3.4; print("%.5g %.5g" % (ans.real, ans.imag))
- # check printing of inf/nan
- print(float('nan') * 1j)
- print(float('-nan') * 1j)
- print(float('inf') * (1 + 1j))
- print(float('-inf') * (1 + 1j))
- # can't assign to attributes
- try:
- (1j).imag = 0
- except AttributeError:
- print('AttributeError')
- # can't convert rhs to complex
- try:
- 1j + []
- except TypeError:
- print("TypeError")
- # unsupported unary op
- try:
- ~(1j)
- except TypeError:
- print("TypeError")
- # unsupported binary op
- try:
- 1j // 2
- except TypeError:
- print("TypeError")
- # unsupported binary op
- try:
- 1j < 2j
- except TypeError:
- print("TypeError")
- #small int on LHS, complex on RHS, unsupported op
- try:
- print(1 | 1j)
- except TypeError:
- print('TypeError')
- # zero division
- try:
- 1j / 0
- except ZeroDivisionError:
- print("ZeroDivisionError")
- # zero division via power
- try:
- 0j ** -1
- except ZeroDivisionError:
- print("ZeroDivisionError")
- try:
- 0j ** 1j
- except ZeroDivisionError:
- print("ZeroDivisionError")
|