Skip to content

Commit 52f2c19

Browse files
committed
Updating the utility functions and adding relevant tests
1 parent 8d9b0b9 commit 52f2c19

File tree

3 files changed

+97
-11
lines changed

3 files changed

+97
-11
lines changed

arrayfire/array.py

Lines changed: 78 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,15 @@ def __del__(self):
117117
if (self.arr.value != 0):
118118
clib.af_release_array(self.arr)
119119

120-
def numdims(self):
121-
nd = c_uint(0)
122-
safe_call(clib.af_get_numdims(pointer(nd), self.arr))
123-
return nd.value
120+
def elements(self):
121+
num = c_ulonglong(0)
122+
safe_call(clib.af_get_elements(pointer(num), self.arr))
123+
return num.value
124+
125+
def type(self):
126+
dty = c_int(f32.value)
127+
safe_call(clib.af_get_type(pointer(dty), self.arr))
128+
return dty.value
124129

125130
def dims(self):
126131
d0 = c_longlong(0)
@@ -131,10 +136,75 @@ def dims(self):
131136
dims = (d0.value,d1.value,d2.value,d3.value)
132137
return dims[:self.numdims()]
133138

134-
def type(self):
135-
dty = c_int(f32.value)
136-
safe_call(clib.af_get_type(pointer(dty), self.arr))
137-
return dty.value
139+
def numdims(self):
140+
nd = c_uint(0)
141+
safe_call(clib.af_get_numdims(pointer(nd), self.arr))
142+
return nd.value
143+
144+
def is_empty(self):
145+
res = c_bool(False)
146+
safe_call(clib.af_is_empty(pointer(res), self.arr))
147+
return res.value
148+
149+
def is_scalar(self):
150+
res = c_bool(False)
151+
safe_call(clib.af_is_scalar(pointer(res), self.arr))
152+
return res.value
153+
154+
def is_row(self):
155+
res = c_bool(False)
156+
safe_call(clib.af_is_row(pointer(res), self.arr))
157+
return res.value
158+
159+
def is_column(self):
160+
res = c_bool(False)
161+
safe_call(clib.af_is_column(pointer(res), self.arr))
162+
return res.value
163+
164+
def is_vector(self):
165+
res = c_bool(False)
166+
safe_call(clib.af_is_vector(pointer(res), self.arr))
167+
return res.value
168+
169+
def is_complex(self):
170+
res = c_bool(False)
171+
safe_call(clib.af_is_complex(pointer(res), self.arr))
172+
return res.value
173+
174+
def is_real(self):
175+
res = c_bool(False)
176+
safe_call(clib.af_is_real(pointer(res), self.arr))
177+
return res.value
178+
179+
def is_double(self):
180+
res = c_bool(False)
181+
safe_call(clib.af_is_double(pointer(res), self.arr))
182+
return res.value
183+
184+
def is_single(self):
185+
res = c_bool(False)
186+
safe_call(clib.af_is_single(pointer(res), self.arr))
187+
return res.value
188+
189+
def is_real_floating(self):
190+
res = c_bool(False)
191+
safe_call(clib.af_is_realfloating(pointer(res), self.arr))
192+
return res.value
193+
194+
def is_floating(self):
195+
res = c_bool(False)
196+
safe_call(clib.af_is_floating(pointer(res), self.arr))
197+
return res.value
198+
199+
def is_integer(self):
200+
res = c_bool(False)
201+
safe_call(clib.af_is_integer(pointer(res), self.arr))
202+
return res.value
203+
204+
def is_bool(self):
205+
res = c_bool(False)
206+
safe_call(clib.af_is_bool(pointer(res), self.arr))
207+
return res.value
138208

139209
def __add__(self, other):
140210
return binary_func(self, other, clib.af_add)

arrayfire/util.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ def safe_call(af_error):
3131
clib.af_get_last_error(pointer(c_err_str), pointer(c_err_len))
3232
raise RuntimeError(to_str(c_err_str), af_error)
3333

34+
def get_version():
35+
major=c_int(0)
36+
minor=c_int(0)
37+
patch=c_int(0)
38+
safe_call(clib.af_get_version(pointer(major), pointer(minor), pointer(patch)))
39+
return major,minor,patch
3440

3541
to_dtype = {'f' : f32,
3642
'd' : f64,

tests/simple_array.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,22 @@
44

55
a = af.array([1, 2, 3])
66
af.print_array(a)
7-
print(a.numdims(), a.dims(), a.type())
7+
print(a.elements(), a.type(), a.dims(), a.numdims())
8+
print(a.is_empty(), a.is_scalar(), a.is_column(), a.is_row())
9+
print(a.is_complex(), a.is_real(), a.is_double(), a.is_single())
10+
print(a.is_real_floating(), a.is_floating(), a.is_integer(), a.is_bool())
11+
812

913
a = af.array(host.array('d', [4, 5, 6]))
1014
af.print_array(a)
11-
print(a.numdims(), a.dims(), a.type())
15+
print(a.elements(), a.type(), a.dims(), a.numdims())
16+
print(a.is_empty(), a.is_scalar(), a.is_column(), a.is_row())
17+
print(a.is_complex(), a.is_real(), a.is_double(), a.is_single())
18+
print(a.is_real_floating(), a.is_floating(), a.is_integer(), a.is_bool())
1219

1320
a = af.array(host.array('l', [7, 8, 9] * 4), (2, 5))
1421
af.print_array(a)
15-
print(a.numdims(), a.dims(), a.type())
22+
print(a.elements(), a.type(), a.dims(), a.numdims())
23+
print(a.is_empty(), a.is_scalar(), a.is_column(), a.is_row())
24+
print(a.is_complex(), a.is_real(), a.is_double(), a.is_single())
25+
print(a.is_real_floating(), a.is_floating(), a.is_integer(), a.is_bool())

0 commit comments

Comments
 (0)