Esempio n. 1
0
 def check_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)
Esempio n. 2
0
 def check_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)
Esempio n. 3
0
 def check_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 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))
     # Check boolean (should cast to integer)
     x = (arange(10) % 2).astype(bool)
     assert_equal(evaluate("prod(x,axis=0)"), prod(x, axis=0))
     assert_equal(evaluate("sum(x,axis=0)"), sum(x, axis=0))
Esempio n. 4
0
 def check_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]")],
     )
Esempio n. 5
0
 def check_simple_expr(self):
     func = numexpr(E.a)
     x = arange(1e5)
     y = func(x)
     assert_array_equal(x, y)
Esempio n. 6
0
 def check_simple_expr_small_array(self):
     func = numexpr(E.a)
     x = arange(100.0)
     y = func(x)
     assert_array_equal(x, y)
Esempio n. 7
0
 def check_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))
Esempio n. 8
0
 def check_all_scalar(self):
     a = 3.0
     b = 4.0
     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)
Esempio n. 9
0
 def check_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.0, 2, 3]), array([4.0, 5, 6]), array([7.0, 8, 9]))
     assert_array_equal(x, array([86.0, 124.0, 168.0]))