test_complex.py

来自「mallet是自然语言处理、机器学习领域的一个开源项目。」· Python 代码 · 共 69 行

PY
69
字号
from test_support import TestFailedfrom random import random# These tests ensure that complex math does the right thing; tests of# the complex() function/constructor are in test_b1.py.# XXX need many, many more tests here.nerrors = 0def check_close_real(x, y, eps=1e-9):    """Return true iff floats x and y "are close\""""    # put the one with larger magnitude second    if abs(x) > abs(y):        x, y = y, x    if y == 0:        return abs(x) < eps    if x == 0:        return abs(y) < eps    # check that relative difference < eps    return abs((x-y)/y) < epsdef check_close(x, y, eps=1e-9):    """Return true iff complexes x and y "are close\""""    return check_close_real(x.real, y.real, eps) and \           check_close_real(x.imag, y.imag, eps)def test_div(x, y):    """Compute complex z=x*y, and check that z/x==y and z/y==x."""    global nerrors    z = x * y    if x != 0:        q = z / x        if not check_close(q, y):            nerrors += 1            print "%r / %r == %r but expected %r" % (z, x, q, y)    if y != 0:        q = z / y        if not check_close(q, x):            nerrors += 1            print "%r / %r == %r but expected %r" % (z, y, q, x)simple_real = [float(i) for i in range(-5, 6)]simple_complex = [complex(x, y) for x in simple_real for y in simple_real]for x in simple_complex:    for y in simple_complex:        test_div(x, y)# A naive complex division algorithm (such as in 2.0) is very prone to# nonsense errors for these (overflows and underflows).test_div(complex(1e200, 1e200), 1+0j)test_div(complex(1e-200, 1e-200), 1+0j)# Just for fun.for i in range(100):    test_div(complex(random(), random()),             complex(random(), random()))try:    z = 1.0 / (0+0j)except ZeroDivisionError:    passelse:    nerrors += 1    raise TestFailed("Division by complex 0 didn't raise ZeroDivisionError")if nerrors:    raise TestFailed("%d tests failed" % nerrors)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?