示例#1
0
 def test_compiled_for_loop_fn_0(self):
     test_data = numpy.array([1, 2, 3], dtype = 'l')
     compiled_for_loop_fn = numba_compile(
         arg_types = [['l']])(for_loop_fn_0)
     result = compiled_for_loop_fn(test_data)
     self.assertEqual(result, 6)
     self.assertEqual(result, for_loop_fn_0(testdata))
示例#2
0
文件: test_sum.py 项目: mszep/numba
 def test_vectorized_sum2d(self):
     usum2d = numba_compile(arg_types=[d[:, :]],
                               ret_type=d)(sum2d)
     image = numpy.random.random(10, 10)
     plain_old_result = sum2d(image)
     hot_new_result = usum2d(image)
     self.assertTrue((abs(plain_old_result - hot_new_result) < 1e-9).all())
示例#3
0
 def test_getattr_shape_2(self):
     test_data2 = numpy.array([[1., 2., 3.], [4., 5., 6.]])
     compiled_fn2 = numba_compile(ret_type = 'i%d*' % (_plat_bits // 8),
                                  arg_types = [[['d']]])(get_ndarray_shape)
     result = compiled_fn2(test_data2)
     self.assertEqual(result[0], 2)
     self.assertEqual(result[1], 3)
示例#4
0
 def test_set_index_fn_1(self):
     control_arr = numpy.zeros((50, 50, 2))
     test_arr = numpy.zeros_like(control_arr)
     set_index_fn_1(-1., 1., -1., control_arr)
     compiled_fn = numba_compile(
         arg_types=['d', 'd', 'd', ['d']])(set_index_fn_1)
     compiled_fn(-1., 1., -1., test_arr)
     self.assertTrue((numpy.abs(control_arr - test_arr) < 1e9).all())
示例#5
0
def main (*args, **kws):
    compiled_demo_function = numba_compile(
        arg_types = ['d', 'd', 'd', [[['d']]]])(demo_function)
    control_arr = numpy.zeros((5, 5, 2))
    demo_function(-1., 1., -1., control_arr)
    test_arr = numpy.zeros_like(control_arr)
    compiled_demo_function(-1., 1., -1., test_arr)
    assert (numpy.abs(control_arr - test_arr) < 1e9).all()
示例#6
0
 def test_get_imag_fn (self):
     num0 = 0 - 2j
     num1 = numpy.complex128(num0)
     compiled_get_imag_fn = numba_compile(arg_types = ['D'])(get_imag_fn)
     self.assertEqual(compiled_get_imag_fn(num0), -2.)
     self.assertEqual(get_imag_fn(num0), compiled_get_imag_fn(num0))
     self.assertEqual(compiled_get_imag_fn(num1), -2.)
     self.assertEqual(get_imag_fn(num1), compiled_get_imag_fn(num1))
示例#7
0
 def test_set_index_fn_1 (self):
     control_arr = numpy.zeros((50, 50, 2))
     test_arr = numpy.zeros_like(control_arr)
     set_index_fn_1(-1., 1., -1., control_arr)
     compiled_fn = numba_compile(
         arg_types = ['d', 'd', 'd', ['d']])(set_index_fn_1)
     compiled_fn(-1., 1., -1., test_arr)
     self.assertTrue((numpy.abs(control_arr - test_arr) < 1e9).all())
示例#8
0
 def test_getattr_data_1(self):
     test_data = numpy.array([1., 2., 3.])
     compiled_fn = numba_compile(ret_type = 'd*',
                                 arg_types = [['d']])(get_ndarray_data)
     result = compiled_fn(test_data)
     self.assertEqual(result[0], 1.)
     self.assertEqual(result[1], 2.)
     self.assertEqual(result[2], 3.)
示例#9
0
 def test_get_imag_fn(self):
     num0 = 0 - 2j
     num1 = numpy.complex128(num0)
     compiled_get_imag_fn = numba_compile(arg_types=['D'])(get_imag_fn)
     self.assertEqual(compiled_get_imag_fn(num0), -2.)
     self.assertEqual(get_imag_fn(num0), compiled_get_imag_fn(num0))
     self.assertEqual(compiled_get_imag_fn(num1), -2.)
     self.assertEqual(get_imag_fn(num1), compiled_get_imag_fn(num1))
示例#10
0
 def test_get_conj_fn(self):
     num0 = 4 - 1.5j
     num1 = numpy.complex128(num0)
     compiled_get_conj_fn = numba_compile(arg_types=['D'],
                                          ret_type='D')(get_conj_fn)
     self.assertEqual(compiled_get_conj_fn(num0), 4 + 1.5j)
     self.assertEqual(get_conj_fn(num0), compiled_get_conj_fn(num0))
     self.assertEqual(compiled_get_conj_fn(num1), 4 + 1.5j)
     self.assertEqual(get_conj_fn(num1), compiled_get_conj_fn(num1))
示例#11
0
 def test_vectorized_filter2d(self):
     ufilter2d = numba_compile(arg_types=[d[:, :], d[:, :]],
                               ret_type=d[:, :])(filter2d)
     image = numpy.random.random((50, 50))
     filt = numpy.random.random((5, 5))
     filt /= filt.sum()
     plain_old_result = filter2d(image, filt)
     hot_new_result = ufilter2d(image, filt)
     self.assertTrue((abs(plain_old_result - hot_new_result) < 1e-9).all())
示例#12
0
 def test_getattr_shape_2_unpack(self):
     compiler_fn = numba_compile(ret_type = 'i%d' % (_plat_bits // 8),
                                 arg_types = [[['d']]])
     dim0_fn, dim1_fn = (compiler_fn(fn) 
                         for fn in (get_ndarray_2_shape_unpack_0,
                                    get_ndarray_2_shape_unpack_1))
     test_data2 = numpy.array([[1., 2., 3.], [4., 5., 6.]])
     self.assertEqual(dim0_fn(test_data2), 2)
     self.assertEqual(dim1_fn(test_data2), 3)
示例#13
0
 def test_get_conj_fn (self):
     num0 = 4 - 1.5j
     num1 = numpy.complex128(num0)
     compiled_get_conj_fn = numba_compile(arg_types = ['D'],
                                          ret_type = 'D')(get_conj_fn)
     self.assertEqual(compiled_get_conj_fn(num0), 4 + 1.5j)
     self.assertEqual(get_conj_fn(num0), compiled_get_conj_fn(num0))
     self.assertEqual(compiled_get_conj_fn(num1), 4 + 1.5j)
     self.assertEqual(get_conj_fn(num1), compiled_get_conj_fn(num1))
示例#14
0
 def test_vectorized_filter2d(self):
     ufilter2d = numba_compile(arg_types=[d[:, :], d[:, :]],
                               ret_type=d[:, :])(filter2d)
     image = numpy.random.random((50, 50))
     filt = numpy.random.random((5, 5))
     filt /= filt.sum()
     plain_old_result = filter2d(image, filt)
     hot_new_result = ufilter2d(image, filt)
     self.assertTrue((abs(plain_old_result - hot_new_result) < 1e-9).all())
示例#15
0
 def test_prod_sum_fn (self):
     compiled_prod_sum_fn = numba_compile(arg_types = ['D', 'D', 'D'],
                                          ret_type = 'D')(prod_sum_fn)
     rng = numpy.arange(-1., 1.1, 0.5)
     for ar, ai, xr, xi, br, bi in itertools.product(rng, rng, rng, rng, rng,
                                                     rng):
         a = numpy.complex128(ar + ai * 1j)
         x = numpy.complex128(xr + xi * 1j)
         b = numpy.complex128(br + bi * 1j)
         self.assertEqual(prod_sum_fn(a, x, b),
                          compiled_prod_sum_fn(a, x, b))
示例#16
0
 def test_getattr_data_2(self):
     test_data = numpy.array([[1., 2., 3.], [4., 5., 6.]])
     compiled_fn = numba_compile(ret_type = 'd*',
                                 arg_types = [[['d']]])(get_ndarray_data)
     result = compiled_fn(test_data)
     self.assertEqual(result[0], 1.)
     self.assertEqual(result[1], 2.)
     self.assertEqual(result[2], 3.)
     self.assertEqual(result[3], 4.)
     self.assertEqual(result[4], 5.)
     self.assertEqual(result[5], 6.)
示例#17
0
 def test_prod_sum_fn(self):
     compiled_prod_sum_fn = numba_compile(arg_types=['D', 'D', 'D'],
                                          ret_type='D')(prod_sum_fn)
     rng = numpy.arange(-1., 1.1, 0.5)
     for ar, ai, xr, xi, br, bi in itertools.product(
             rng, rng, rng, rng, rng, rng):
         a = numpy.complex128(ar + ai * 1j)
         x = numpy.complex128(xr + xi * 1j)
         b = numpy.complex128(br + bi * 1j)
         self.assertEqual(prod_sum_fn(a, x, b),
                          compiled_prod_sum_fn(a, x, b))
示例#18
0
 def test_getattr_ndim_1(self):
     test_data1 = numpy.array([1., 2., 3.])
     compiled_fn1 = numba_compile(ret_type = 'i',
                                 arg_types = [['d']])(get_ndarray_ndim)
     self.assertEqual(compiled_fn1(test_data1), 1)
示例#19
0
 def test_tuple_fn_0 (self):
     test_arr = numpy.zeros((4,4,4))
     compiled_fn = numba_compile(arg_types = [['d']])(tuple_fn_0)
     self.assertEqual(compiled_fn(test_arr), 0.)
示例#20
0
文件: test_if.py 项目: certik/numba
 def test_if_fn_1(self):
     if_fn_1c = numba_compile()(if_fn_1)
     self.assertEqual(if_fn_1c(-1.), 42.)
     self.assertEqual(if_fn_1c(1.), 22.)
示例#21
0
 def test_set_index_fn_0(self):
     arr = numpy.ones((4, 4, 4))
     compiled_fn = numba_compile(arg_types=[['d']])(set_index_fn_0)
     self.assertEqual(arr[1, 2, 3], 1.)
     compiled_fn(arr)
     self.assertEqual(arr[1, 2, 3], 0.)
示例#22
0
 def _do_test(self, function, arg_types, *args, **kws):
     _numba_compile = numba_compile(arg_types=arg_types) if arg_types is not None else numba_compile()
     compiled_fn = _numba_compile(function)
     self.assertEqual(compiled_fn(*args, **kws), function(*args, **kws))
示例#23
0
 def test_set_index_fn_0 (self):
     arr = numpy.ones((4,4,4))
     compiled_fn = numba_compile(arg_types = [['d']])(set_index_fn_0)
     self.assertEqual(arr[1,2,3], 1.)
     compiled_fn(arr)
     self.assertEqual(arr[1,2,3], 0.)
示例#24
0
 def test_compiled_for_loop_fn_0(self):
     test_data = numpy.array([1, 2, 3], dtype='l')
     compiled_for_loop_fn = numba_compile(arg_types=[['l']])(for_loop_fn_0)
     result = compiled_for_loop_fn(test_data)
     self.assertEqual(result, 6)
     self.assertEqual(result, for_loop_fn_0(testdata))
示例#25
0
    # to detect and desugar for loops over range/xrange/arange first.
    i = 0
    z_real = 0.
    z_imag = 0.
    while i < max_iters:
        z_real_n = z_real * z_real - z_imag * z_imag + real_coord
        z_imag = 2. * z_real * z_imag + imag_coord
        z_real = z_real_n
        if (z_real * z_real + z_imag * z_imag) >= 4:
            return i
        i += 1
    return -1


try:
    mandel_1c = numba_compile(arg_types=['d', 'd', 'i'],
                              ret_type='i')(mandel_1)
except:
    if __debug__:
        import traceback as tb
        tb.print_exc()
    mandel_1c = None


#@numba_compile(arg_types = ['d', 'd', 'd', 'i', [['b']], [[['b']]]])
def mandel_driver_1(min_x, max_x, min_y, nb_iterations, colors, image):
    nb_colors = len(colors)
    width = image.shape[0]
    height = image.shape[1]
    pixel_size = (max_x - min_x) / width
    for x in range(width):
        real = min_x + x * pixel_size
示例#26
0
 def test_while_loop_fn_3(self):
     compiled_fn = numba_compile(arg_types=["l"])(while_loop_fn_3)
     compiled_result = compiled_fn(3)
     self.assertEqual(compiled_result, while_loop_fn_3(3))
     self.assertEqual(compiled_result, 8.0)
示例#27
0
 def test_while_loop_fn_4(self):
     compiled_fn = numba_compile(arg_types=["l", "l", "l"], ret_type="l")(while_loop_fn_4)
     compiled_result = compiled_fn(1, 4, 1)
     self.assertEqual(compiled_result, while_loop_fn_4(1, 4, 1))
     self.assertEqual(compiled_result, 6)
示例#28
0
 def test_call_len(self):
     testarr = numpy.arange(10.)
     testfn = numba_compile(arg_types=[['d']], ret_type='l')(call_len)
     self.assertEqual(testfn(testarr), 10)
示例#29
0
 def test_call_zeros_like(self):
     testarr = numpy.array([1., 2, 3, 4, 5])
     testfn = numba_compile(arg_types=[['d']],
                            ret_type=['d'])(call_zeros_like)
     self.assertTrue((testfn(testarr) == numpy.zeros_like(testarr)).all())
示例#30
0
 def test_getattr_ndim_2(self):
     test_data2 = numpy.array([[1., 2., 3.], [4., 5., 6.]])
     compiled_fn2 = numba_compile(ret_type = 'i',
                                  arg_types = [[['d']]])(get_ndarray_ndim)
     self.assertEqual(compiled_fn2(test_data2), 2)
示例#31
0
 def _do_test(self, function, arg_types, *args, **kws):
     _numba_compile = (numba_compile(arg_types = arg_types)
                       if arg_types is not None else numba_compile())
     compiled_fn = _numba_compile(function)
     self.assertEqual(compiled_fn(*args, **kws), function(*args, **kws))
示例#32
0
 def test_getattr_shape_1(self):
     test_data = numpy.array([1., 2., 3.])
     compiled_fn = numba_compile(ret_type = 'i%d*' % (_plat_bits // 8),
                                 arg_types = [['d']])(get_ndarray_shape)
     result = compiled_fn(test_data)
     self.assertEqual(result[0], 3)
示例#33
0
 def test_while_loop_fn_4(self):
     compiled_fn = numba_compile(arg_types = ['l', 'l', 'l'],
                                 ret_type = 'l')(while_loop_fn_4)
     compiled_result = compiled_fn(1, 4, 1)
     self.assertEqual(compiled_result, while_loop_fn_4(1, 4, 1))
     self.assertEqual(compiled_result, 6)
示例#34
0
 def test_get_complex_constant_fn (self):
     compiled_get_complex_constant_fn = numba_compile(
         arg_types = [], ret_type = 'D')(get_complex_constant_fn)
     self.assertEqual(get_complex_constant_fn(),
                      compiled_get_complex_constant_fn())
示例#35
0
 def test_call_len(self):
     testarr = numpy.arange(10.)
     testfn = numba_compile(arg_types = [['d']], ret_type = 'l')(
         call_len)
     self.assertEqual(testfn(testarr), 10)
示例#36
0
 def test_if_fn_1(self):
     if_fn_1c = numba_compile()(if_fn_1)
     self.assertEqual(if_fn_1c(-1.), 42.)
     self.assertEqual(if_fn_1c(1.), 22.)
示例#37
0
 def test_while_loop_fn_5(self):
     compiled_fn = numba_compile(arg_types=["d", "d"])(while_loop_fn_5)
     compiled_result = compiled_fn(3, 4)
     self.assertEqual(compiled_result, while_loop_fn_5(3, 4))
     self.assertEqual(compiled_result, 18.0)
示例#38
0
 def test_compiled_for_loop_fn_2(self):
     compiled_for_loop_fn = numba_compile(arg_types=['i'],
                                          ret_type='i')(for_loop_fn_2)
     result = compiled_for_loop_fn(4)
     self.assertEqual(result, 36)
     self.assertEqual(result, for_loop_fn_2(4))
示例#39
0
 def test_compiled_for_loop_fn_1(self):
     compiled_for_loop_fn = numba_compile(arg_types=['i', 'i', 'i'],
                                          ret_type='i')(for_loop_fn_1)
     result = compiled_for_loop_fn(1, 4, 1)
     self.assertEqual(result, 6)
     self.assertEqual(result, for_loop_fn_1(1, 4, 1))
示例#40
0
 def test_get_complex_constant_fn(self):
     compiled_get_complex_constant_fn = numba_compile(
         arg_types=[], ret_type='D')(get_complex_constant_fn)
     self.assertEqual(get_complex_constant_fn(),
                      compiled_get_complex_constant_fn())
示例#41
0
 def test_compiled_for_loop_fn_1(self):
     compiled_for_loop_fn = numba_compile(arg_types = ['i','i','i'],
                                          ret_type = 'i')(for_loop_fn_1)
     result = compiled_for_loop_fn(1, 4, 1)
     self.assertEqual(result, 6)
     self.assertEqual(result, for_loop_fn_1(1, 4, 1))
示例#42
0
 def test_while_loop_fn_5(self):
     compiled_fn = numba_compile(arg_types = ['d', 'd'])(while_loop_fn_5)
     compiled_result = compiled_fn(3, 4)
     self.assertEqual(compiled_result, while_loop_fn_5(3, 4))
     self.assertEqual(compiled_result, 18.)
示例#43
0
 def test_long(self):
     func = numba_compile(ret_type=numba.long_,
                          arg_types=[numba.long_])(test_long)
     self.assertEqual(func(-1), 42)
     self.assertEqual(func(1), 22)
示例#44
0
 def test_while_loop_fn_3(self):
     compiled_fn = numba_compile(arg_types = ['l'])(while_loop_fn_3)
     compiled_result = compiled_fn(3)
     self.assertEqual(compiled_result, while_loop_fn_3(3))
     self.assertEqual(compiled_result, 8.)
示例#45
0
 def test_compiled_for_loop_fn_3(self):
     compiled_for_loop_fn = numba_compile(arg_types = ['i'],
                                          ret_type = 'i')(for_loop_fn_3)
     result = compiled_for_loop_fn(3)
     self.assertEqual(result, for_loop_fn_3(3))
     self.assertEqual(result, 81)
示例#46
0
 def test_call_zeros_like(self):
     testarr = numpy.array([1., 2, 3, 4, 5])
     testfn = numba_compile(arg_types = [['d']], ret_type = ['d'])(
         call_zeros_like)
     self.assertTrue((testfn(testarr) == numpy.zeros_like(testarr)).all())
示例#47
0
 def test_int(self):
     func = numba_compile(ret_type=numba.int_,
                              arg_types=[numba.int_])(test_int)
     self.assertEqual(func(-1), 42)
     self.assertEqual(func(1), 22)
示例#48
0
 def test_get_index_fn_0(self):
     arr = numpy.ones((4, 4, 4))
     arr[1, 2, 3] = 0.
     compiled_fn = numba_compile(arg_types=[['d']])(get_index_fn_0)
     self.assertEqual(compiled_fn(arr), 0.)
示例#49
0
 def test_long(self):
     func = numba_compile(ret_type=numba.long_,
                              arg_types=[numba.long_])(test_long)
     self.assertEqual(func(-1), 42)
     self.assertEqual(func(1), 22)
示例#50
0
 def test_compiled_for_loop_fn_2(self):
     compiled_for_loop_fn = numba_compile(arg_types = ['i'],
                                          ret_type = 'i')(for_loop_fn_2)
     result = compiled_for_loop_fn(4)
     self.assertEqual(result, 36)
     self.assertEqual(result, for_loop_fn_2(4))
示例#51
0
 def test_compiled_for_loop_fn_3(self):
     compiled_for_loop_fn = numba_compile(arg_types=['i'],
                                          ret_type='i')(for_loop_fn_3)
     result = compiled_for_loop_fn(3)
     self.assertEqual(result, for_loop_fn_3(3))
     self.assertEqual(result, 81)