def read_expected(fname): with open(os.path.join(TEST_DIRECTORY, 'testing_data', fname), 'r') as f: return safe_eval(f.read())
def test_00(self): exp = lab.Add(lab.Num(0), lab.Var('x')) expected = ("Add(Num(0), Var('x'))", '0 + x') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Add(lab.Var('x'), lab.Num(0)) expected = ("Add(Var('x'), Num(0))", 'x + 0') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Mul(lab.Num(1), lab.Var('x')) expected = ("Mul(Num(1), Var('x'))", '1 * x') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Mul(lab.Var('x'), lab.Num(1)) expected = ("Mul(Var('x'), Num(1))", 'x * 1') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Sub(lab.Var('x'), lab.Num(0)) expected = ("Sub(Var('x'), Num(0))", 'x - 0') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Div(lab.Var('x'), lab.Num(1)) expected = ("Div(Var('x'), Num(1))", 'x / 1') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Div(lab.Num(0), lab.Var('x')) expected = ("Div(Num(0), Var('x'))", '0 / x') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Add(lab.Num(20), lab.Num(30)) expected = ('Add(Num(20), Num(30))', '20 + 30') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Sub(lab.Num(50), lab.Num(80)) expected = ('Sub(Num(50), Num(80))', '50 - 80') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Div(lab.Num(40), lab.Num(20)) expected = ('Div(Num(40), Num(20))', '40 / 20') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Mul(lab.Num(101), lab.Num(121)) expected = ('Mul(Num(101), Num(121))', '101 * 121') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1])
def test_02(self): exp = read_expected('45_in.pyobj') expected = read_expected('45_out.pyobj') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = read_expected('46_in.pyobj') expected = read_expected('46_out.pyobj') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = read_expected('47_in.pyobj') expected = read_expected('47_out.pyobj') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = read_expected('48_in.pyobj') expected = read_expected('48_out.pyobj') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = read_expected('49_in.pyobj') expected = read_expected('49_out.pyobj') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = read_expected('50_in.pyobj') expected = read_expected('50_out.pyobj') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = read_expected('51_in.pyobj') expected = read_expected('51_out.pyobj') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = read_expected('52_in.pyobj') expected = read_expected('52_out.pyobj') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1])
def test_01(self): exp = lab.Add(lab.Num(0), lab.Mul(lab.Var('y'), lab.Num(2))) expected = ("Add(Num(0), Mul(Var('y'), Num(2)))", '0 + y * 2') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Add(lab.Mul(lab.Var('z'), lab.Num(3)), lab.Num(0)) expected = ("Add(Mul(Var('z'), Num(3)), Num(0))", 'z * 3 + 0') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Mul(lab.Num(1), lab.Add(lab.Var('A'), lab.Var('x'))) expected = ("Mul(Num(1), Add(Var('A'), Var('x')))", '1 * (A + x)') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Mul(lab.Sub(lab.Var('x'), lab.Var('A')), lab.Num(1)) expected = ("Mul(Sub(Var('x'), Var('A')), Num(1))", '(x - A) * 1') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Sub(lab.Mul(lab.Var('x'), lab.Num(3)), lab.Num(0)) expected = ("Sub(Mul(Var('x'), Num(3)), Num(0))", 'x * 3 - 0') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Div(lab.Mul(lab.Num(7), lab.Var('A')), lab.Num(1)) expected = ("Div(Mul(Num(7), Var('A')), Num(1))", '7 * A / 1') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Div(lab.Num(0), lab.Add(lab.Var('A'), lab.Num(3))) expected = ("Div(Num(0), Add(Var('A'), Num(3)))", '0 / (A + 3)') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Mul(lab.Add(lab.Num(0), lab.Var('x')), lab.Var('z')) expected = ("Mul(Add(Num(0), Var('x')), Var('z'))", '(0 + x) * z') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Sub(lab.Add(lab.Var('x'), lab.Num(0)), lab.Var('A')) expected = ("Sub(Add(Var('x'), Num(0)), Var('A'))", 'x + 0 - A') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Add(lab.Mul(lab.Num(1), lab.Var('x')), lab.Var('y')) expected = ("Add(Mul(Num(1), Var('x')), Var('y'))", '1 * x + y') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Add(lab.Var('z'), lab.Mul(lab.Var('x'), lab.Num(1))) expected = ("Add(Var('z'), Mul(Var('x'), Num(1)))", 'z + x * 1') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Sub(lab.Var('A'), lab.Sub(lab.Var('x'), lab.Num(0))) expected = ("Sub(Var('A'), Sub(Var('x'), Num(0)))", 'A - (x - 0)') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Div(lab.Var('y'), lab.Div(lab.Var('x'), lab.Num(1))) expected = ("Div(Var('y'), Div(Var('x'), Num(1)))", 'y / (x / 1)') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Mul(lab.Var('z'), lab.Div(lab.Num(0), lab.Var('x'))) expected = ("Mul(Var('z'), Div(Num(0), Var('x')))", 'z * 0 / x') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Add(lab.Mul(lab.Num(0), lab.Var('y')), lab.Var('x')) expected = ("Add(Mul(Num(0), Var('y')), Var('x'))", '0 * y + x') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Add(lab.Var('x'), lab.Sub(lab.Num(2), lab.Num(2))) expected = ("Add(Var('x'), Sub(Num(2), Num(2)))", 'x + 2 - 2') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Mul(lab.Div(lab.Num(2), lab.Num(2)), lab.Var('x')) expected = ("Mul(Div(Num(2), Num(2)), Var('x'))", '2 / 2 * x') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Mul(lab.Var('x'), lab.Sub(lab.Num(3), lab.Num(2))) expected = ("Mul(Var('x'), Sub(Num(3), Num(2)))", 'x * (3 - 2)') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Sub(lab.Var('x'), lab.Mul(lab.Num(0), lab.Var('z'))) expected = ("Sub(Var('x'), Mul(Num(0), Var('z')))", 'x - 0 * z') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Div(lab.Var('x'), lab.Num(1)) expected = ("Div(Var('x'), Num(1))", 'x / 1') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Div(lab.Add(lab.Num(0), lab.Num(0)), lab.Var('x')) expected = ("Div(Add(Num(0), Num(0)), Var('x'))", '(0 + 0) / x') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = read_expected('41_in.pyobj') expected = read_expected('41_out.pyobj') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Sub(lab.Add(lab.Num(70), lab.Num(50)), lab.Num(80)) expected = ('Sub(Add(Num(70), Num(50)), Num(80))', '70 + 50 - 80') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = lab.Sub(lab.Num(80), lab.Div(lab.Num(40), lab.Num(20))) expected = ('Sub(Num(80), Div(Num(40), Num(20)))', '80 - 40 / 20') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1]) exp = read_expected('44_in.pyobj') expected = read_expected('44_out.pyobj') self.assertEqual(symbol_rep(safe_eval(repr(exp))), symbol_rep(safe_eval(expected[0]))) self.assertEqual(str(exp), expected[1])
def test_display_02(): exp = read_expected('56_in.pyobj') expected = read_expected('56_out.pyobj') assert symbol_rep(safe_eval(repr(exp))) == symbol_rep( safe_eval(expected[0])) assert str(exp) == expected[1] exp = read_expected('57_in.pyobj') expected = read_expected('57_out.pyobj') assert symbol_rep(safe_eval(repr(exp))) == symbol_rep( safe_eval(expected[0])) assert str(exp) == expected[1] exp = read_expected('58_in.pyobj') expected = read_expected('58_out.pyobj') assert symbol_rep(safe_eval(repr(exp))) == symbol_rep( safe_eval(expected[0])) assert str(exp) == expected[1] exp = read_expected('59_in.pyobj') expected = read_expected('59_out.pyobj') assert symbol_rep(safe_eval(repr(exp))) == symbol_rep( safe_eval(expected[0])) assert str(exp) == expected[1] exp = read_expected('60_in.pyobj') expected = read_expected('60_out.pyobj') assert symbol_rep(safe_eval(repr(exp))) == symbol_rep( safe_eval(expected[0])) assert str(exp) == expected[1] exp = read_expected('61_in.pyobj') expected = read_expected('61_out.pyobj') assert symbol_rep(safe_eval(repr(exp))) == symbol_rep( safe_eval(expected[0])) assert str(exp) == expected[1] exp = read_expected('62_in.pyobj') expected = read_expected('62_out.pyobj') assert symbol_rep(safe_eval(repr(exp))) == symbol_rep( safe_eval(expected[0])) assert str(exp) == expected[1] exp = read_expected('63_in.pyobj') expected = read_expected('63_out.pyobj') assert symbol_rep(safe_eval(repr(exp))) == symbol_rep( safe_eval(expected[0])) assert str(exp) == expected[1]
def test_pow(): result = 0**lab.Var('x') expected = ('Pow', (('Num', 0), ('Var', 'x'))) assert symbol_rep(result) == expected result = lab.Var('x')**0 expected = ('Pow', (('Var', 'x'), ('Num', 0))) assert symbol_rep(result) == expected result = 3**(lab.Var('y')**2) expected = ('Pow', (('Num', 3), ('Pow', (('Var', 'y'), ('Num', 2))))) assert symbol_rep(result) == expected result = ((0 * lab.Var('y'))**lab.Var('x')) expected = ('Pow', (('Mul', frozenset({('Var', 'y'), ('Num', 0)})), ('Var', 'x'))) assert symbol_rep(result) == expected result = ('x' + (lab.Num(2)**2)) expected = ('Add', frozenset({('Pow', (('Num', 2), ('Num', 2))), ('Var', 'x')})) assert symbol_rep(result) == expected result = 20 + lab.Num(101) * (1 * lab.Var('z')) expected = ('Add', frozenset({('Mul', frozenset({('Mul', frozenset({('Num', 1), ('Var', 'z')})), ('Num', 101)})), ('Num', 20)})) assert symbol_rep(result) == expected result = 'x'**lab.Num(101) expected = ('Pow', (('Var', 'x'), ('Num', 101))) assert symbol_rep(result) == expected exp = lab.Add(lab.Pow(lab.Num(0), lab.Var('y')), lab.Var('x')) expected = ("Add(Pow(Num(0), Var('y')), Var('x'))", '0 ** y + x') assert symbol_rep(safe_eval(repr(exp))) == symbol_rep( safe_eval(expected[0])) assert str(exp) == expected[1] exp = lab.Add(lab.Var('x'), lab.Pow(lab.Num(2), lab.Num(2))) expected = ("Add(Var('x'), Pow(Num(2), Num(2)))", 'x + 2 ** 2') assert symbol_rep(safe_eval(repr(exp))) == symbol_rep( safe_eval(expected[0])) assert str(exp) == expected[1] exp = lab.Mul(lab.Div(lab.Num(2), lab.Num(2)), lab.Var('x')) expected = ("Mul(Div(Num(2), Num(2)), Var('x'))", '2 / 2 * x') assert symbol_rep(safe_eval(repr(exp))) == symbol_rep( safe_eval(expected[0])) assert str(exp) == expected[1] exp = lab.Mul(lab.Var('x'), lab.Sub(lab.Num(3), lab.Num(2))) expected = ("Mul(Var('x'), Sub(Num(3), Num(2)))", 'x * (3 - 2)') assert symbol_rep(safe_eval(repr(exp))) == symbol_rep( safe_eval(expected[0])) assert str(exp) == expected[1] exp = lab.Pow(lab.Var('x'), lab.Pow(lab.Num(2), lab.Var('z'))) expected = ("Pow(Var('x'), Pow(Num(2), Var('z')))", 'x ** 2 ** z') assert symbol_rep(safe_eval(repr(exp))) == symbol_rep( safe_eval(expected[0])) assert str(exp) == expected[1] exp = lab.Pow(lab.Pow(lab.Var('x'), lab.Num(2)), lab.Var('z')) expected = ("Pow(Pow(Var('x'), Num(2)), Var('z'))", '(x ** 2) ** z') assert symbol_rep(safe_eval(repr(exp))) == symbol_rep( safe_eval(expected[0])) assert str(exp) == expected[1] exp = lab.Pow(lab.Var('x'), lab.Num(1)) expected = ("Pow(Var('x'), Num(1))", 'x ** 1') assert symbol_rep(safe_eval(repr(exp))) == symbol_rep( safe_eval(expected[0])) assert str(exp) == expected[1] exp = read_expected('71_in.pyobj') expected = read_expected('71_out.pyobj') assert symbol_rep(safe_eval(repr(exp))) == symbol_rep( safe_eval(expected[0])) assert str(exp) == expected[1] exp = read_expected('72_in.pyobj') expected = read_expected('72_out.pyobj') assert symbol_rep(safe_eval(repr(exp))) == symbol_rep( safe_eval(expected[0])) assert str(exp) == expected[1] exp = read_expected('73_in.pyobj') expected = read_expected('73_out.pyobj') assert symbol_rep(safe_eval(repr(exp))) == symbol_rep( safe_eval(expected[0])) assert str(exp) == expected[1] exp = lab.Pow(lab.Var('x'), lab.Num(2)) out = (exp.deriv('x'), exp.deriv('y'), exp.deriv('z'), exp.deriv('b')) expected = read_expected('87_out.pyobj') for i, j in zip(out, expected): assert symbol_rep(i) == symbol_rep(j) exp = lab.Pow(lab.Var('x'), lab.Num(1)) out = (exp.deriv('x'), exp.deriv('y'), exp.deriv('z'), exp.deriv('b')) expected = read_expected('88_out.pyobj') for i, j in zip(out, expected): assert symbol_rep(i) == symbol_rep(j) exp = lab.Pow(lab.Add(lab.Var('x'), lab.Var('y')), lab.Num(4)) out = (exp.deriv('x'), exp.deriv('y'), exp.deriv('z'), exp.deriv('b')) expected = read_expected('89_out.pyobj') for i, j in zip(out, expected): assert symbol_rep(i) == symbol_rep(j) exp = read_expected('90_in.pyobj') out = (exp.deriv('x'), exp.deriv('y'), exp.deriv('z'), exp.deriv('b')) expected = read_expected('90_out.pyobj') for i, j in zip(out, expected): assert symbol_rep(i) == symbol_rep(j) result = read_expected('139_in.pyobj').simplify() expected = lab.Num(1) assert symbol_rep(result) == symbol_rep(expected) result = lab.Pow(lab.Var('x'), lab.Num(0)).simplify() expected = lab.Num(1) assert symbol_rep(result) == symbol_rep(expected) result = lab.Pow(lab.Num(0), lab.Var('x')).simplify() expected = lab.Num(0) assert symbol_rep(result) == symbol_rep(expected) result = lab.Pow(lab.Var('x'), lab.Pow(lab.Var('y'), lab.Var('z'))).simplify() expected = lab.Pow(lab.Var('x'), lab.Pow(lab.Var('y'), lab.Var('z'))) assert symbol_rep(result) == symbol_rep(expected) result = read_expected('143_in.pyobj').simplify() expected = lab.Add(lab.Num(3), lab.Mul(lab.Var('x'), lab.Var('z'))) assert symbol_rep(result) == symbol_rep(expected) result = read_expected('144_in.pyobj').simplify() expected = lab.Mul(lab.Num(2), lab.Var('x')) assert symbol_rep(result) == symbol_rep(expected) result = read_expected('145_in.pyobj').simplify() expected = read_expected('145_out.pyobj') assert symbol_rep(result) == symbol_rep(expected) result = read_expected('146_in.pyobj').simplify() expected = read_expected('146_out.pyobj') assert symbol_rep(result) == symbol_rep(expected) result = lab.Pow(lab.Var('x'), lab.Num(2)) result = result.eval({'x': 237}) expected = 56169 assert abs(result / expected - 1) <= 1e-4 result = lab.Pow(lab.Mul(lab.Var('x'), lab.Var('y')), lab.Var('z')) result = result.eval({'z': 758, 'y': 95, 'x': -530}) expected = read_expected('166_out.pyobj') assert abs(result / expected - 1) <= 1e-4 result = lab.Pow(lab.Pow(lab.Var('x'), lab.Num(2)), lab.Num(0)) result = result.eval({'x': 80}) expected = 1 assert abs(result / expected - 1) <= 1e-4 result = lab.Pow(lab.Sub(lab.Num(5), lab.Num(3)), lab.Var('x')) result = result.eval({'x': 960}) expected = read_expected('168_out.pyobj') assert abs(result / expected - 1) <= 1e-4 result = read_expected('169_in.pyobj') result = result.eval({ 'L': -955, 'd': -476, 'T': 127, 'f': 569, 'O': 763, 'H': -196, 'y': 655, 'D': 290, 'E': -384, 'p': -250, 'z': 20, 'Z': -16, 'X': -737, 'A': -541, 'K': -61, 'q': 404, 'I': -740, 's': -505, 'e': 510, 'v': 195, 'R': 320, 'U': 694, 't': 893, 'o': 223, 'N': 578 }) expected = 69606.30569229023 assert abs(result / expected - 1) <= 1e-4 result = read_expected('170_in.pyobj') result = result.eval({ 'Q': 270, 'L': -362, 'T': -931, 'S': -184, 'B': 121, 'O': -946, 'H': -529, 'W': 915, 'E': -41, 'C': 377, 'F': 494, 'z': 918, 'X': -767, 's': 781, 'M': -710, 'i': -916, 'U': 480, 't': -500, 'P': 831, 'm': -908 }) expected = -0.0031834854228580413 assert abs(result / expected - 1) <= 1e-4 result = read_expected('171_in.pyobj') result = result.eval({ 'r': -847, 'Q': 383, 'L': 726, 'g': 659, 'b': 126, 'T': 458, 'f': -395, 'w': 993, 'x': 243, 'h': -472, 'D': 504, 'W': 416, 'l': -256, 'G': -93, 'I': -54, 'v': 579, 'i': -85, 'U': 565, 'P': -247, 'm': 8 }) expected = (0.99156973760839 - 0.004704475218913467j) assert abs(result / expected - 1) <= 1e-4 result = lab.Sub(lab.Num(5), lab.Num(-4)) result = result.eval({}) expected = 9 assert abs(result / expected - 1) <= 1e-4 result = read_expected('173_in.pyobj') result = result.eval({ 'r': -233, 'Q': 195, 'g': -231, 'J': -161, 'L': 644, 'b': -309, 'T': 111, 'S': -568, 'B': -793, 'h': 179, 'H': 780, 'y': 358, 'D': -587, 'W': -781, 'u': -285, 'p': 586, 'C': 83, 'F': 657, 'z': 562, 'Z': -868, 'j': -351, 'G': -498, 'K': 207, 'q': -818, 'I': 233, 'V': 738, 'M': -726, 's': -365, 'i': -352, 'U': 272, 'k': -193 }) expected = -656389.8154121593 assert abs(result / expected - 1) <= 1e-4 result = read_expected('174_in.pyobj') result = result.eval({ 'r': -234, 'Q': -923, 'd': 686, 'f': 858, 'o': 865, 'O': -380, 'h': 730, 'W': -277, 'u': 566, 'C': 510, 'l': -458, 'X': 262, 'G': 831, 'K': 652, 'I': 212, 's': -621, 'M': -54, 'e': 733, 'i': 241, 'U': -938, 'N': 237, 'c': 445, 'P': -134, 'm': -529, 'k': -852 }) expected = 916.25 assert abs(result / expected - 1) <= 1e-4 result = read_expected('175_in.pyobj') result = result.eval({ 'b': -966, 'T': 598, 'f': -148, 'w': 154, 'S': 420, 'B': 673, 'x': 597, 'y': 719, 'E': -196, 'p': 314, 'u': -673, 'F': 758, 'C': -956, 'a': 709, 'l': 174, 'A': 893, 'G': -837, 'K': -916, 'q': 979, 'I': 788, 'M': -797, 'e': -613, 'v': 764, 'i': -581, 'U': 950, 'c': 869, 'P': 521, 'N': 837, 'k': 560 }) expected = 855.4328021463105 assert abs(result / expected - 1) <= 1e-4 result = lab.sym('(3 ** x)') expected = lab.Pow(lab.Num(3), lab.Var('x')) assert symbol_rep(result) == symbol_rep(expected) result = lab.sym('(y ** -2)') expected = lab.Pow(lab.Var('y'), lab.Num(-2)) assert symbol_rep(result) == symbol_rep(expected) result = lab.sym('((z ** 3) + 0)') expected = lab.Add(lab.Pow(lab.Var('z'), lab.Num(3)), lab.Num(0)) assert symbol_rep(result) == symbol_rep(expected) result = lab.sym('((7 ** A) / 9)') expected = lab.Div(lab.Pow(lab.Num(7), lab.Var('A')), lab.Num(9)) assert symbol_rep(result) == symbol_rep(expected) result = lab.sym('(z ** (x + 1))') expected = lab.Pow(lab.Var('z'), lab.Add(lab.Var('x'), lab.Num(1))) assert symbol_rep(result) == symbol_rep(expected) result = lab.sym('((z ** x) ** 1)') expected = lab.Pow(lab.Pow(lab.Var('z'), lab.Var('x')), lab.Num(1)) assert symbol_rep(result) == symbol_rep(expected) result = lab.sym('(A - (x ** A))') expected = lab.Sub(lab.Var('A'), lab.Pow(lab.Var('x'), lab.Var('A'))) assert symbol_rep(result) == symbol_rep(expected) result = lab.sym('(y ** (x / z))') expected = lab.Pow(lab.Var('y'), lab.Div(lab.Var('x'), lab.Var('z'))) assert symbol_rep(result) == symbol_rep(expected) result = lab.sym('((x + A) ** (y + z))') expected = read_expected('200_out.pyobj') assert symbol_rep(result) == symbol_rep(expected) result = lab.sym(read_expected('201_in.pyobj')) expected = read_expected('201_out.pyobj') assert symbol_rep(result) == symbol_rep(expected) result = lab.sym(read_expected('202_in.pyobj')) expected = read_expected('202_out.pyobj') assert symbol_rep(result) == symbol_rep(expected) result = lab.sym(read_expected('203_in.pyobj')) expected = read_expected('203_out.pyobj') assert symbol_rep(result) == symbol_rep(expected) result = lab.sym(read_expected('204_in.pyobj')) expected = read_expected('204_out.pyobj') assert symbol_rep(result) == symbol_rep(expected) result = lab.sym(read_expected('205_in.pyobj')) expected = read_expected('205_out.pyobj') assert symbol_rep(result) == symbol_rep(expected) result = lab.sym(read_expected('206_in.pyobj')) expected = read_expected('206_out.pyobj') assert symbol_rep(result) == symbol_rep(expected)
def _compare_displays(expression, expected): assert symbol_rep(safe_eval(repr(expression))) == symbol_rep( safe_eval(expected[0])) assert str(expression) == expected[1]