def test_broadcast_to_one_d(self):
        # Set up our data buffers
        src0 = data_descriptor_from_ctypes(ctypes.c_double(12), writable=False)
        src1_data = (ctypes.c_double * 1)()
        src1_data[0] = 3
        src1 = data_descriptor_from_ctypes(src1_data, writable=False)
        src2_data = (ctypes.c_double * 3)()
        src2_list = [5, 3, -2]
        for i, val in enumerate(src2_list):
            src2_data[i] = val
        src2 = data_descriptor_from_ctypes(src2_data, writable=False)
        dst = data_descriptor_from_ctypes((ctypes.c_double * 3)(), writable=True)

        # Do assignments with the different permuations of the source arguments
        execute_expr_single(dst, [src0, src1, src2],
                        datashape.float64, [datashape.float64]*3, self.muladd)
        self.assertEqual(dd_as_py(dst), [(12 + 1) * 3 + x for x in [5, 3, -2]])
        execute_expr_single(dst, [src0, src2, src1],
                        datashape.float64, [datashape.float64]*3, self.muladd)
        self.assertEqual(dd_as_py(dst), [(12 + 1) * x + 3 for x in [5, 3, -2]])
        execute_expr_single(dst, [src1, src0, src2],
                        datashape.float64, [datashape.float64]*3, self.muladd)
        self.assertEqual(dd_as_py(dst), [(3 + 1) * 12 + x for x in [5, 3, -2]])
        execute_expr_single(dst, [src1, src2, src0],
                        datashape.float64, [datashape.float64]*3, self.muladd)
        self.assertEqual(dd_as_py(dst), [(3 + 1) * x + 12 for x in [5, 3, -2]])
        execute_expr_single(dst, [src2, src0, src1],
                        datashape.float64, [datashape.float64]*3, self.muladd)
        self.assertEqual(dd_as_py(dst), [(x + 1) * 12 + 3 for x in [5, 3, -2]])
        execute_expr_single(dst, [src2, src1, src0],
                        datashape.float64, [datashape.float64]*3, self.muladd)
        self.assertEqual(dd_as_py(dst), [(x + 1) * 3 + 12 for x in [5, 3, -2]])
 def test_assign_scalar(self):
     # Set up our data buffers
     src = data_descriptor_from_ctypes(ctypes.c_float(1028), writable=False)
     dst = data_descriptor_from_ctypes(ctypes.c_double(-100), writable=True)
     # Do the assignment
     execute_unary_single(dst, src, datashape.float64, datashape.float32, self.sqr)
     self.assertEqual(dd_as_py(dst), 1028.0*1028.0)
 def test_assign_scalar_to_two_d_array(self):
     # Set up our data buffers
     src = data_descriptor_from_ctypes(ctypes.c_float(-50), writable=False)
     dst = data_descriptor_from_ctypes((ctypes.c_double * 3 * 4)(), writable=True)
     # Do the assignment
     execute_unary_single(dst, src, datashape.float64, datashape.float32, self.sqr)
     self.assertEqual(dd_as_py(dst), [[-50.0 * -50] * 3] * 4)
 def test_assign_scalar_to_one_d_array(self):
     # Set up our data buffers
     src = data_descriptor_from_ctypes(ctypes.c_int64(1028), writable=False)
     dst = data_descriptor_from_ctypes((ctypes.c_float * 3)(), writable=True)
     # Do the assignment
     execute_unary_single(dst, src, datashape.float32, datashape.int64, self.ck)
     self.assertEqual(dd_as_py(dst), [1028.0] * 3)
 def test_assign_one_d_to_two_d_array(self):
     # Set up our data buffers
     src_data = (ctypes.c_float * 3)()
     for i, val in enumerate([3, 6, 9]):
         src_data[i] = val
     src = data_descriptor_from_ctypes(src_data, writable=False)
     dst = data_descriptor_from_ctypes((ctypes.c_double * 3 * 4)(), writable=True)
     # Do the assignment
     execute_unary_single(dst, src, datashape.float64, datashape.float32, self.sqr)
     self.assertEqual(dd_as_py(dst), [[x*x for x in [3.0, 6.0, 9.0]]] * 4)
 def test_scalar_to_one_d(self):
     # Set up our data buffers
     src0 = data_descriptor_from_ctypes(ctypes.c_double(1028), writable=False)
     src1 = data_descriptor_from_ctypes(ctypes.c_double(5), writable=False)
     src2 = data_descriptor_from_ctypes(ctypes.c_double(-123), writable=False)
     dst = data_descriptor_from_ctypes((ctypes.c_double * 3)(), writable=True)
     # Do the assignment
     execute_expr_single(dst, [src0, src1, src2],
                     datashape.float64, [datashape.float64]*3, self.muladd)
     self.assertEqual(dd_as_py(dst), [(1028.0 + 1) * 5 - 123] * 3)
 def test_assign_broadcast_outer_two_d_to_two_d_array(self):
     # Set up our data buffers
     src_data = (ctypes.c_int64 * 3 * 1)()
     for i, val_i in enumerate([[3,1,7]]):
         for j, val in enumerate(val_i):
             src_data[i][j] = val
     src = data_descriptor_from_ctypes(src_data, writable=False)
     dst = data_descriptor_from_ctypes((ctypes.c_float * 3 * 4)(), writable=True)
     # Do the assignment
     execute_unary_single(dst, src, datashape.float32, datashape.int64, self.ck)
     self.assertEqual(dd_as_py(dst), [[3,1,7]]*4)
 def test_assign_broadcast_inner_two_d_to_two_d_array(self):
     # Set up our data buffers
     src_data = (ctypes.c_float * 1 * 4)()
     src_list = [[3], [1], [7], [12]]
     for i, val_i in enumerate(src_list):
         for j, val in enumerate(val_i):
             src_data[i][j] = val
     src = data_descriptor_from_ctypes(src_data, writable=False)
     dst = data_descriptor_from_ctypes((ctypes.c_double * 3 * 4)(), writable=True)
     # Do the assignment
     execute_unary_single(dst, src, datashape.float64, datashape.float32, self.sqr)
     self.assertEqual(dd_as_py(dst), [[x*x for x in y] * 3 for y in src_list])
    def test_scalar(self):
        a = ctypes.c_int(3)
        dd = data_descriptor_from_ctypes(a, writable=True)
        self.assertEqual(dd.dshape, dshape('int32'))
        self.assertEqual(dd_as_py(dd), 3)
        self.assertTrue(isinstance(dd_as_py(dd), int))

        a = ctypes.c_float(3.25)
        dd = data_descriptor_from_ctypes(a, writable=True)
        self.assertEqual(dd.dshape, dshape('float32'))
        self.assertEqual(dd_as_py(dd), 3.25)
        self.assertTrue(isinstance(dd_as_py(dd), float))
Example #10
0
    def test_scalar(self):
        a = ctypes.c_int(3)
        dd = data_descriptor_from_ctypes(a, writable=True)
        self.assertEqual(dd.dshape, dshape('int32'))
        self.assertEqual(ddesc_as_py(dd), 3)
        self.assertTrue(isinstance(ddesc_as_py(dd), int))

        a = ctypes.c_float(3.25)
        dd = data_descriptor_from_ctypes(a, writable=True)
        self.assertEqual(dd.dshape, dshape('float32'))
        self.assertEqual(ddesc_as_py(dd), 3.25)
        self.assertTrue(isinstance(ddesc_as_py(dd), float))
    def test_1d_array(self):
        a = (ctypes.c_short * 32)()
        for i in range(32):
            a[i] = 2*i
        dd = data_descriptor_from_ctypes(a, writable=True)
        self.assertEqual(dd.dshape, dshape('32 * int16'))
        self.assertEqual(dd_as_py(dd), [2*i for i in range(32)])

        a = (ctypes.c_double * 32)()
        for i in range(32):
            a[i] = 1.5*i
        dd = data_descriptor_from_ctypes(a, writable=True)
        self.assertEqual(dd.dshape, dshape('32 * float64'))
        self.assertEqual(dd_as_py(dd), [1.5*i for i in range(32)])
Example #12
0
    def test_1d_array(self):
        a = (ctypes.c_short * 32)()
        for i in range(32):
            a[i] = 2 * i
        dd = data_descriptor_from_ctypes(a, writable=True)
        self.assertEqual(dd.dshape, dshape('32 * int16'))
        self.assertEqual(ddesc_as_py(dd), [2 * i for i in range(32)])

        a = (ctypes.c_double * 32)()
        for i in range(32):
            a[i] = 1.5 * i
        dd = data_descriptor_from_ctypes(a, writable=True)
        self.assertEqual(dd.dshape, dshape('32 * float64'))
        self.assertEqual(ddesc_as_py(dd), [1.5 * i for i in range(32)])
Example #13
0
 def test_ctypes_1d_array(self):
     cdat = (ctypes.c_int64 * 3)()
     cdat[0] = 3
     cdat[1] = 6
     cdat[2] = 10
     dd = data_descriptor_from_ctypes(cdat, writable=True)
     a = blaze.array(dd)
     self.assertEqual(str(a), '[ 3  6 10]')
Example #14
0
 def test_ctypes_1d_array(self):
     cdat = (ctypes.c_int64 * 3)()
     cdat[0] = 3
     cdat[1] = 6
     cdat[2] = 10
     dd = data_descriptor_from_ctypes(cdat, writable=True)
     a = blaze.array(dd)
     self.assertEqual(str(a), '[ 3  6 10]')
Example #15
0
    def test_2d_array(self):
        a = (ctypes.c_double * 35 * 32)()
        vals = [[2**i + j for i in range(35)] for j in range(32)]
        for i in range(32):
            for j in range(35):
                a[i][j] = vals[i][j]
        dd = data_descriptor_from_ctypes(a, writable=True)
        self.assertEqual(dd.dshape, dshape('32 * 35 * float64'))
        self.assertEqual(ddesc_as_py(dd), vals)

        a = (ctypes.c_uint8 * 35 * 32)()
        vals = [[i + j * 2 for i in range(35)] for j in range(32)]
        for i in range(32):
            for j in range(35):
                a[i][j] = vals[i][j]
        dd = data_descriptor_from_ctypes(a, writable=True)
        self.assertEqual(dd.dshape, dshape('32 * 35 * uint8'))
        self.assertEqual(ddesc_as_py(dd), vals)
    def test_2d_array(self):
        a = (ctypes.c_double * 35 * 32)()
        vals = [[2**i + j for i in range(35)] for j in range(32)]
        for i in range(32):
            for j in range(35):
                a[i][j] = vals[i][j]
        dd = data_descriptor_from_ctypes(a, writable=True)
        self.assertEqual(dd.dshape, dshape('32 * 35 * float64'))
        self.assertEqual(dd_as_py(dd), vals)

        a = (ctypes.c_uint8 * 35 * 32)()
        vals = [[i + j*2 for i in range(35)] for j in range(32)]
        for i in range(32):
            for j in range(35):
                a[i][j] = vals[i][j]
        dd = data_descriptor_from_ctypes(a, writable=True)
        self.assertEqual(dd.dshape, dshape('32 * 35 * uint8'))
        self.assertEqual(dd_as_py(dd), vals)
    def test_broadcast_to_two_d(self):
        # Set up our data buffers
        src0 = data_descriptor_from_ctypes(ctypes.c_double(12), writable=False)
        src0_broadcast = [[12] * 3] * 2
        src1_data = (ctypes.c_double * 3)()
        src1_list = [3, 9, 1]
        src1_broadcast = [src1_list] * 2
        for i, val in enumerate(src1_list):
            src1_data[i] = val
        src1 = data_descriptor_from_ctypes(src1_data, writable=False)
        src2_data = (ctypes.c_double * 3 * 2)()
        src2_list = [[5, 3, -2], [-1, 4, 9]]
        src2_broadcast = src2_list
        for j, val_j in enumerate(src2_list):
            for i, val in enumerate(val_j):
                src2_data[j][i] = val
        src2 = data_descriptor_from_ctypes(src2_data, writable=False)
        dst = data_descriptor_from_ctypes((ctypes.c_double * 3 * 2)(), writable=True)

        # Do assignments with the different permuations of the source arguments
        execute_expr_single(dst, [src0, src1, src2],
                        datashape.float64, [datashape.float64]*3, self.muladd)
        self.assertEqual(dd_as_py(dst), [[(x + 1) * y + z for x, y, z in izip(*tmp)]
                        for tmp in izip(src0_broadcast, src1_broadcast, src2_broadcast)])
        execute_expr_single(dst, [src0, src2, src1],
                        datashape.float64, [datashape.float64]*3, self.muladd)
        self.assertEqual(dd_as_py(dst), [[(x + 1) * y + z for x, z, y in izip(*tmp)]
                        for tmp in izip(src0_broadcast, src1_broadcast, src2_broadcast)])
        execute_expr_single(dst, [src1, src0, src2],
                        datashape.float64, [datashape.float64]*3, self.muladd)
        self.assertEqual(dd_as_py(dst), [[(x + 1) * y + z for y, x, z in izip(*tmp)]
                        for tmp in izip(src0_broadcast, src1_broadcast, src2_broadcast)])
        execute_expr_single(dst, [src1, src2, src0],
                        datashape.float64, [datashape.float64]*3, self.muladd)
        self.assertEqual(dd_as_py(dst), [[(x + 1) * y + z for z, x, y in izip(*tmp)]
                        for tmp in izip(src0_broadcast, src1_broadcast, src2_broadcast)])
        execute_expr_single(dst, [src2, src0, src1],
                        datashape.float64, [datashape.float64]*3, self.muladd)
        self.assertEqual(dd_as_py(dst), [[(x + 1) * y + z for y, z, x in izip(*tmp)]
                        for tmp in izip(src0_broadcast, src1_broadcast, src2_broadcast)])
        execute_expr_single(dst, [src2, src1, src0],
                        datashape.float64, [datashape.float64]*3, self.muladd)
        self.assertEqual(dd_as_py(dst), [[(x + 1) * y + z for z, y, x in izip(*tmp)]
                        for tmp in izip(src0_broadcast, src1_broadcast, src2_broadcast)])
Example #18
0
 def test_3d_array(self):
     # Simple 3D array
     a = (ctypes.c_uint32 * 10 * 12 * 14)()
     vals = [[[(i + 2 * j + 3 * k) for i in range(10)] for j in range(12)]
             for k in range(14)]
     for i in range(14):
         for j in range(12):
             for k in range(10):
                 a[i][j][k] = vals[i][j][k]
     dd = data_descriptor_from_ctypes(a, writable=True)
     self.assertEqual(dd.dshape, dshape('14 * 12 * 10 * uint32'))
     self.assertEqual(ddesc_as_py(dd), vals)
 def test_3d_array(self):
     # Simple 3D array
     a = (ctypes.c_uint32 * 10 * 12 * 14)()
     vals = [[[(i + 2*j + 3*k)
                     for i in range(10)]
                     for j in range(12)]
                     for k in range(14)]
     for i in range(14):
         for j in range(12):
             for k in range(10):
                 a[i][j][k] = vals[i][j][k]
     dd = data_descriptor_from_ctypes(a, writable=True)
     self.assertEqual(dd.dshape, dshape('14 * 12 * 10 * uint32'))
     self.assertEqual(dd_as_py(dd), vals)
Example #20
0
 def test_ctypes_scalar(self):
     dd = data_descriptor_from_ctypes(ctypes.c_int32(1022), writable=True)
     a = blaze.array(dd)
     self.assertEqual(str(a), '1022')
Example #21
0
 def test_ctypes_scalar(self):
     dd = data_descriptor_from_ctypes(ctypes.c_int32(1022), writable=True)
     a = blaze.array(dd)
     self.assertEqual(str(a), '1022')