Example #1
0
 def test_rational_expr(self):
     func = numexpr((E.a + 2.0 * E.b) / (1 + E.a + 4 * E.b * E.b))
     a = arange(1e5)
     b = arange(1e5) * 0.1
     x = (a + 2 * b) / (1 + a + 4 * b * b)
     y = func(a, b)
     assert_array_equal(x, y)
 def test_rational_expr(self):
     func = numexpr((E.a + 2.0*E.b) / (1 + E.a + 4*E.b*E.b))
     a = arange(1e5)
     b = arange(1e5) * 0.1
     x = (a + 2*b) / (1 + a + 4*b*b)
     y = func(a, b)
     assert_array_equal(x, y)
 def test_broadcasting(self):
     a = arange(100).reshape(10,10)[::2]
     c = arange(10)
     d = arange(5).reshape(5,1)
     assert_array_equal(evaluate("a+c"), a+c)
     assert_array_equal(evaluate("a+d"), a+d)
     expr = numexpr("2.0*a+3.0*c",[('a',float),('c', float)])
     assert_array_equal(expr(a,c), 2.0*a+3.0*c)
Example #4
0
 def test_broadcasting(self):
     a = arange(100).reshape(10, 10)[::2]
     c = arange(10)
     d = arange(5).reshape(5, 1)
     assert_array_equal(evaluate("a+c"), a + c)
     assert_array_equal(evaluate("a+d"), a + d)
     expr = numexpr("2.0*a+3.0*c", [('a', float), ('c', float)])
     assert_array_equal(expr(a, c), 2.0 * a + 3.0 * c)
 def test_reductions(self):
     # Check that they compile OK.
     assert_equal(disassemble(
         numexpr("sum(x**2+2, axis=None)", [('x', float)])),
                  [('mul_fff', 't3', 'r1[x]', 'r1[x]'),
                   ('add_fff', 't3', 't3', 'c2[2.0]'),
                   ('sum_ffn', 'r0', 't3', None)])
     assert_equal(disassemble(
         numexpr("sum(x**2+2, axis=1)", [('x', float)])),
                  [('mul_fff', 't3', 'r1[x]', 'r1[x]'),
                   ('add_fff', 't3', 't3', 'c2[2.0]'),
                   ('sum_ffn', 'r0', 't3', 1)])
     assert_equal(disassemble(
         numexpr("prod(x**2+2, axis=2)", [('x', float)])),
                  [('mul_fff', 't3', 'r1[x]', 'r1[x]'),
                   ('add_fff', 't3', 't3', 'c2[2.0]'),
                   ('prod_ffn', 'r0', 't3', 2)])
     # Check that full reductions work.
     x = arange(10.0)
     assert_equal(evaluate("sum(x**2+2,axis=0)"), sum(x**2+2,axis=0))
     assert_equal(evaluate("prod(x**2+2,axis=0)"), prod(x**2+2,axis=0))
     # Check that reductions along an axis work
     y = arange(9.0).reshape(3,3)
     assert_equal(evaluate("sum(y**2, axis=1)"), sum(y**2, axis=1))
     assert_equal(evaluate("sum(y**2, axis=0)"), sum(y**2, axis=0))
     assert_equal(evaluate("sum(y**2, axis=None)"), sum(y**2, axis=None))
     assert_equal(evaluate("prod(y**2, axis=1)"), prod(y**2, axis=1))
     assert_equal(evaluate("prod(y**2, axis=0)"), prod(y**2, axis=0))
     assert_equal(evaluate("prod(y**2, axis=None)"), prod(y**2, axis=None))
     # Check integers
     x = x.astype(int)
     assert_equal(evaluate("sum(x**2+2,axis=0)"), sum(x**2+2,axis=0))
     assert_equal(evaluate("prod(x**2+2,axis=0)"), prod(x**2+2,axis=0))
     # Check longs
     x = x.astype(long)
     assert_equal(evaluate("sum(x**2+2,axis=0)"), sum(x**2+2,axis=0))
     assert_equal(evaluate("prod(x**2+2,axis=0)"), prod(x**2+2,axis=0))
     # Check complex
     x = x + 5j
     assert_equal(evaluate("sum(x**2+2,axis=0)"), sum(x**2+2,axis=0))
     assert_equal(evaluate("prod(x**2+2,axis=0)"), prod(x**2+2,axis=0))
Example #6
0
 def test_reductions(self):
     # Check that they compile OK.
     assert_equal(
         disassemble(numexpr("sum(x**2+2, axis=None)", [('x', float)])),
         [('mul_fff', 't3', 'r1[x]', 'r1[x]'),
          ('add_fff', 't3', 't3', 'c2[2.0]'),
          ('sum_ffn', 'r0', 't3', None)])
     assert_equal(
         disassemble(numexpr("sum(x**2+2, axis=1)", [('x', float)])),
         [('mul_fff', 't3', 'r1[x]', 'r1[x]'),
          ('add_fff', 't3', 't3', 'c2[2.0]'), ('sum_ffn', 'r0', 't3', 1)])
     assert_equal(
         disassemble(numexpr("prod(x**2+2, axis=2)", [('x', float)])),
         [('mul_fff', 't3', 'r1[x]', 'r1[x]'),
          ('add_fff', 't3', 't3', 'c2[2.0]'), ('prod_ffn', 'r0', 't3', 2)])
     # Check that full reductions work.
     x = arange(10.0)
     assert_equal(evaluate("sum(x**2+2,axis=0)"), sum(x**2 + 2, axis=0))
     assert_equal(evaluate("prod(x**2+2,axis=0)"), prod(x**2 + 2, axis=0))
     # Check that reductions along an axis work
     y = arange(9.0).reshape(3, 3)
     assert_equal(evaluate("sum(y**2, axis=1)"), sum(y**2, axis=1))
     assert_equal(evaluate("sum(y**2, axis=0)"), sum(y**2, axis=0))
     assert_equal(evaluate("sum(y**2, axis=None)"), sum(y**2, axis=None))
     assert_equal(evaluate("prod(y**2, axis=1)"), prod(y**2, axis=1))
     assert_equal(evaluate("prod(y**2, axis=0)"), prod(y**2, axis=0))
     assert_equal(evaluate("prod(y**2, axis=None)"), prod(y**2, axis=None))
     # Check integers
     x = x.astype(int)
     assert_equal(evaluate("sum(x**2+2,axis=0)"), sum(x**2 + 2, axis=0))
     assert_equal(evaluate("prod(x**2+2,axis=0)"), prod(x**2 + 2, axis=0))
     # Check longs
     x = x.astype(long)
     assert_equal(evaluate("sum(x**2+2,axis=0)"), sum(x**2 + 2, axis=0))
     assert_equal(evaluate("prod(x**2+2,axis=0)"), prod(x**2 + 2, axis=0))
     # Check complex
     x = x + 5j
     assert_equal(evaluate("sum(x**2+2,axis=0)"), sum(x**2 + 2, axis=0))
     assert_equal(evaluate("prod(x**2+2,axis=0)"), prod(x**2 + 2, axis=0))
 def test_simple_expr(self):
     func = numexpr(E.a)
     x = arange(1e5)
     y = func(x)
     assert_array_equal(x, y)
 def test_simple_expr_small_array(self):
     func = numexpr(E.a)
     x = arange(100.0)
     y = func(x)
     assert_array_equal(x, y)
 def test_simple(self):
     ex = 2.0 * E.a + 3.0 * E.b * E.c
     func = numexpr(ex, signature=[('a', float), ('b', float), ('c', float)])
     x = func(array([1., 2, 3]), array([4., 5, 6]), array([7., 8, 9]))
     assert_array_equal(x, array([  86.,  124.,  168.]))
 def test_run(self):
     a = arange(100).reshape(10,10)[::2]
     b = arange(10)
     expr = numexpr("2*a+3*b",[('a',float),('b', float)])
     assert_array_equal(expr(a,b), expr.run(a,b))
 def test_all_scalar(self):
     a = 3.
     b = 4.
     assert_equal(evaluate("a+b"), a+b)
     expr = numexpr("2*a+3*b",[('a',float),('b', float)])
     assert_equal(expr(a,b), 2*a+3*b)
Example #12
0
 def test_simple_expr(self):
     func = numexpr(E.a)
     x = arange(1e5)
     y = func(x)
     assert_array_equal(x, y)
Example #13
0
 def test_simple_expr_small_array(self):
     func = numexpr(E.a)
     x = arange(100.0)
     y = func(x)
     assert_array_equal(x, y)
Example #14
0
 def test_simple(self):
     ex = 2.0 * E.a + 3.0 * E.b * E.c
     func = numexpr(ex,
                    signature=[('a', float), ('b', float), ('c', float)])
     x = func(array([1., 2, 3]), array([4., 5, 6]), array([7., 8, 9]))
     assert_array_equal(x, array([86., 124., 168.]))
Example #15
0
 def test_run(self):
     a = arange(100).reshape(10, 10)[::2]
     b = arange(10)
     expr = numexpr("2*a+3*b", [('a', float), ('b', float)])
     assert_array_equal(expr(a, b), expr.run(a, b))
Example #16
0
 def test_all_scalar(self):
     a = 3.
     b = 4.
     assert_equal(evaluate("a+b"), a + b)
     expr = numexpr("2*a+3*b", [('a', float), ('b', float)])
     assert_equal(expr(a, b), 2 * a + 3 * b)
 def test_r0_reuse(self):
     assert_equal(disassemble(numexpr("x**2+2", [('x', float)])),
                 [('mul_fff', 'r0', 'r1[x]', 'r1[x]'),
                  ('add_fff', 'r0', 'r0', 'c2[2.0]')])
Example #18
0
 def test_r0_reuse(self):
     assert_equal(disassemble(numexpr("x**2+2", [('x', float)])),
                  [('mul_fff', 'r0', 'r1[x]', 'r1[x]'),
                   ('add_fff', 'r0', 'r0', 'c2[2.0]')])