Exemplo n.º 1
0
def test_long_alternating_chain():
    string = '0'
    expected = UC('0')
    for i in range(1, 1000):
        op_name, op_id = {
            0: (' + ', IDs.ADD),
            1: (' - ', IDs.SUB)
        }[i % 2]
        string += op_name + str(i)
        expected = Expression(op_id, expected, UC(str(i)))
    check_result(string, expected)
Exemplo n.º 2
0
def test_10_deep_chain():
    string = '2'
    expected = UC('2')
    for i in list(range(10)):
        string = 'sqrt('+string+')'
        expected = Expression(IDs.SQRT, expected)
    print(string)
    check_result(string, expected)
Exemplo n.º 3
0
def test_unnamed_constants():
    assert from_root('pi').unnamed_constants == set()
    assert from_numexpr('2').unnamed_constants == {'2'}
    assert from_numexpr('2e-3').unnamed_constants == {'2e-3'}
    assert from_numexpr('A').unnamed_constants == set()
    assert from_numexpr('A + A').unnamed_constants == set()
    assert from_numexpr('A + B').unnamed_constants == set()
    assert from_numexpr('A + A*A - 3e7').unnamed_constants == {'3e7'}
    assert from_numexpr('arctan2(A, A)').unnamed_constants == set()
    assert from_numexpr('arctan2(A, B)').unnamed_constants == set()
    assert from_root('arctan2(A, pi)').unnamed_constants == set()
    assert from_numexpr('arctan2(arctan2(A, B), C)').unnamed_constants == set()
    for base, expect in [(UC('2'), {'2'}), (Variable('A'), set()), (NC(ConstantIDs.PI), set())]:
        expr = base
        for i in list(range(100)):
            expr = Expression(IDs.SQRT, expr)
        assert expr.unnamed_constants == expect
Exemplo n.º 4
0
def test_get_variables():
    assert from_root('pi').variables == set()
    assert from_numexpr('2').variables == set()
    assert from_numexpr('2e-3').variables == set()
    assert from_numexpr('A').variables == set(['A'])
    assert from_numexpr('A + A').variables == set(['A'])
    assert from_numexpr('A + B').variables == set(['A', 'B'])
    assert from_numexpr('A + A*A - 3e7').variables == set(['A'])
    assert from_numexpr('arctan2(A, A)').variables == set(['A'])
    assert from_numexpr('arctan2(A, B)').variables == set(['A', 'B'])
    assert from_root('arctan2(A, pi)').variables == set(['A'])
    assert from_numexpr('arctan2(arctan2(A, B), C)').variables == set(
        ['A', 'B', 'C'])
    for base, expect in [(UC('2'), set()), (Variable('A'), set(['A'])),
                         (NC(ConstantIDs.PI), set())]:
        expr = base
        for i in list(range(100)):
            expr = Expression(IDs.SQRT, expr)
        assert expr.variables == expect
Exemplo n.º 5
0
def test_not():
    aee(~Expression(IDs.SQRT, UC('2')),
        Expression(IDs.NOT, Expression(IDs.SQRT, UC('2'))))
Exemplo n.º 6
0
def test_subtraction():
    aee(Expression(IDs.SQRT, UC('2')) - Expression(IDs.SQRT, UC('3')),
        Expression(IDs.SUB, Expression(IDs.SQRT, UC('2')), Expression(IDs.SQRT, UC('3'))))
    expression = Expression(IDs.SQRT, UC('2'))
    expression -= Expression(IDs.SQRT, UC('3'))
    aee(expression, Expression(IDs.SUB, Expression(IDs.SQRT, UC('2')), Expression(IDs.SQRT, UC('3'))))
    aee(np.subtract(Expression(IDs.SQRT, UC('2')), Expression(IDs.SQRT, UC('3'))),
        Expression(IDs.SUB, Expression(IDs.SQRT, UC('2')), Expression(IDs.SQRT, UC('3'))))
Exemplo n.º 7
0
def test_expm1():
    aee(np.expm1(Expression(IDs.SQRT, UC('2'))),
        Expression(IDs.EXPM1, Expression(IDs.SQRT, UC('2'))))
Exemplo n.º 8
0
def test_log1p():
    aee(np.log1p(Expression(IDs.SQRT, UC('2'))),
        Expression(IDs.LOG1p, Expression(IDs.SQRT, UC('2'))))
Exemplo n.º 9
0
def test_less_than_or_equal():
    aee(Expression(IDs.SQRT, UC('2')) <= Expression(IDs.SQRT, UC('3')),
        Expression(IDs.LTEQ, Expression(IDs.SQRT, UC('2')), Expression(IDs.SQRT, UC('3'))))
Exemplo n.º 10
0
def test_less_than():
    aee(Expression(IDs.SQRT, UC('2')) < Expression(IDs.SQRT, UC('3')),
        Expression(IDs.LT, Expression(IDs.SQRT, UC('2')), Expression(IDs.SQRT, UC('3'))))
Exemplo n.º 11
0
def test_greater_than_or_equal():
    aee(Expression(IDs.SQRT, UC('2')) >= Expression(IDs.SQRT, UC('3')),
        Expression(IDs.GTEQ, Expression(IDs.SQRT, UC('2')), Expression(IDs.SQRT, UC('3'))))
Exemplo n.º 12
0
def test_greater_than():
    aee(Expression(IDs.SQRT, UC('2')) > Expression(IDs.SQRT, UC('3')),
        Expression(IDs.GT, Expression(IDs.SQRT, UC('2')), Expression(IDs.SQRT, UC('3'))))
Exemplo n.º 13
0
def test_not_equals():
    aee(Expression(IDs.SQRT, UC('2')) != Expression(IDs.SQRT, UC('3')),
        Expression(IDs.NEQ, Expression(IDs.SQRT, UC('2')), Expression(IDs.SQRT, UC('3'))))
Exemplo n.º 14
0
def test_equals():
    aee(Expression(IDs.SQRT, UC('2')) == Expression(IDs.SQRT, UC('3')),
        Expression(IDs.EQ, Expression(IDs.SQRT, UC('2')), Expression(IDs.SQRT, UC('3'))))
Exemplo n.º 15
0
def test_abs():
    aee(abs(Expression(IDs.SQRT, UC('2'))),
        Expression(IDs.ABS, Expression(IDs.SQRT, UC('2'))))
    aee(np.abs(Expression(IDs.SQRT, UC('2'))),
        Expression(IDs.ABS, Expression(IDs.SQRT, UC('2'))))
Exemplo n.º 16
0
def test_log():
    aee(np.log(Expression(IDs.SQRT, UC('2'))),
        Expression(IDs.LOG, Expression(IDs.SQRT, UC('2'))))
Exemplo n.º 17
0
def test_log10():
    aee(np.log10(Expression(IDs.SQRT, UC('2'))),
        Expression(IDs.LOG10, Expression(IDs.SQRT, UC('2'))))
Exemplo n.º 18
0
def test_sin():
    aee(np.sin(Expression(IDs.SQRT, UC('2'))),
        Expression(IDs.SIN, Expression(IDs.SQRT, UC('2'))))
Exemplo n.º 19
0
def test_exp():
    aee(np.exp(Expression(IDs.SQRT, UC('2'))),
        Expression(IDs.EXP, Expression(IDs.SQRT, UC('2'))))
Exemplo n.º 20
0
def test_arctan2():
    aee(np.arctan2(Expression(IDs.SQRT, UC('2')), Expression(IDs.SQRT, UC('3'))),
        Expression(IDs.ATAN2, Expression(IDs.SQRT, UC('2')), Expression(IDs.SQRT, UC('3'))))
Exemplo n.º 21
0
def test_sqrt():
    aee(np.sqrt(Expression(IDs.SQRT, UC('2'))),
        Expression(IDs.SQRT, Expression(IDs.SQRT, UC('2'))))
Exemplo n.º 22
0
def test_cosh():
    aee(np.cosh(Expression(IDs.SQRT, UC('2'))),
        Expression(IDs.COSH, Expression(IDs.SQRT, UC('2'))))
Exemplo n.º 23
0
def test_addition():
    aee(Expression(IDs.SQRT, UC('2')) + Expression(IDs.SQRT, UC('3')),
        Expression(IDs.ADD, Expression(IDs.SQRT, UC('2')), Expression(IDs.SQRT, UC('3'))))
    aee(Expression(IDs.SQRT, UC('2')) + UC('3'),
        Expression(IDs.ADD, Expression(IDs.SQRT, UC('2')), UC('3')))
    aee(UC('3') + Expression(IDs.SQRT, UC('2')),
        Expression(IDs.ADD, UC('3'), Expression(IDs.SQRT, UC('2'))))

    expression = Expression(IDs.SQRT, UC('2'))
    expression += Expression(IDs.SQRT, UC('3'))
    aee(expression, Expression(IDs.ADD, Expression(IDs.SQRT, UC('2')), Expression(IDs.SQRT, UC('3'))))
    expression = Expression(IDs.SQRT, UC('2'))
    expression += UC('3')
    aee(expression, Expression(IDs.ADD, Expression(IDs.SQRT, UC('2')), UC('3')))
    expression = UC('3')
    expression += Expression(IDs.SQRT, UC('2'))
    aee(expression, Expression(IDs.ADD, UC('3'), Expression(IDs.SQRT, UC('2'))))

    aee(np.add(Expression(IDs.SQRT, UC('2')), Expression(IDs.SQRT, UC('3'))),
        Expression(IDs.ADD, Expression(IDs.SQRT, UC('2')), Expression(IDs.SQRT, UC('3'))))
    aee(np.add(Expression(IDs.SQRT, UC('2')), UC('3')),
        Expression(IDs.ADD, Expression(IDs.SQRT, UC('2')), UC('3')))
    aee(np.add(UC('3'), Expression(IDs.SQRT, UC('2'))),
        Expression(IDs.ADD, UC('3'), Expression(IDs.SQRT, UC('2'))))
Exemplo n.º 24
0
def test_tanh():
    aee(np.tanh(Expression(IDs.SQRT, UC('2'))),
        Expression(IDs.TANH, Expression(IDs.SQRT, UC('2'))))
Exemplo n.º 25
0
def test_long_chain():
    args = [UC(str(i)) for i in range(1000)]
    check_result(' + '.join(map(str, args)), Expression(IDs.ADD, *args))
Exemplo n.º 26
0
def test_arcsinh():
    aee(np.arcsinh(Expression(IDs.SQRT, UC('2'))),
        Expression(IDs.ASINH, Expression(IDs.SQRT, UC('2'))))
Exemplo n.º 27
0
def test_3_deep_chain():
    string = 'sqrt(sqrt(sqrt(2)))'
    expected = Expression(IDs.SQRT, Expression(IDs.SQRT, Expression(IDs.SQRT, UC('2'))))
    check_result(string, expected)
Exemplo n.º 28
0
def test_arccosh():
    aee(np.arccosh(Expression(IDs.SQRT, UC('2'))),
        Expression(IDs.ACOSH, Expression(IDs.SQRT, UC('2'))))
Exemplo n.º 29
0
def test_invalid_arg_parse():
    with pytest.raises(ValueError):
        from_numexpr(Expression(IDs.SQRT, UC('2')))
Exemplo n.º 30
0
def test_arctanh():
    aee(np.arctanh(Expression(IDs.SQRT, UC('2'))),
        Expression(IDs.ATANH, Expression(IDs.SQRT, UC('2'))))