47 struct array_proxy_impl;
48 array_proxy_impl *impl;
53#if __cplusplus > 199711L
64 array_proxy& operator OP(const array_proxy &a); \
65 array_proxy& operator OP(const array &a); \
66 array_proxy& operator OP(const double &a); \
67 array_proxy& operator OP(const cdouble &a); \
68 array_proxy& operator OP(const cfloat &a); \
69 array_proxy& operator OP(const float &a); \
70 array_proxy& operator OP(const int &a); \
71 array_proxy& operator OP(const unsigned &a); \
72 array_proxy& operator OP(const bool &a); \
73 array_proxy& operator OP(const char &a); \
74 array_proxy& operator OP(const unsigned char &a); \
75 array_proxy& operator OP(const long &a); \
76 array_proxy& operator OP(const unsigned long &a); \
77 array_proxy& operator OP(const long long &a); \
78 array_proxy& operator OP(const unsigned long long &a); \
87#if AF_API_VERSION >= 32
89 array_proxy& operator OP(const short &a); \
90 array_proxy& operator OP(const unsigned short &a); \
104 template<
typename T> T*
host()
const;
118 inline bool isreal()
const {
return !iscomplex(); }
132#if AF_API_VERSION >= 31
545 template<
typename T> T*
host()
const;
620 inline bool isreal()
const {
return !iscomplex(); }
850 array& OP(const array &val); \
851 array& OP(const double &val); \
852 array& OP(const cdouble &val); \
853 array& OP(const cfloat &val); \
854 array& OP(const float &val); \
855 array& OP(const int &val); \
856 array& OP(const unsigned &val); \
857 array& OP(const bool &val); \
858 array& OP(const char &val); \
859 array& OP(const unsigned char &val); \
860 array& OP(const long &val); \
861 array& OP(const unsigned long &val); \
862 array& OP(const long long &val); \
863 array& OP(const unsigned long long &val); \
865#if AF_API_VERSION >= 32
868 array& OP(const short &val); \
869 array& OP(const unsigned short &val); \
872#define ASSIGN(OP) ASSIGN_(OP)
953 array operator !()
const;
959 int nonzeros()
const;
979 AFAPI array OP (const array& lhs, const array& rhs); \
980 AFAPI array OP (const bool& lhs, const array& rhs); \
981 AFAPI array OP (const int& lhs, const array& rhs); \
982 AFAPI array OP (const unsigned& lhs, const array& rhs); \
983 AFAPI array OP (const char& lhs, const array& rhs); \
984 AFAPI array OP (const unsigned char& lhs, const array& rhs); \
985 AFAPI array OP (const long& lhs, const array& rhs); \
986 AFAPI array OP (const unsigned long& lhs, const array& rhs); \
987 AFAPI array OP (const long long& lhs, const array& rhs); \
988 AFAPI array OP (const unsigned long long& lhs, const array& rhs); \
989 AFAPI array OP (const double& lhs, const array& rhs); \
990 AFAPI array OP (const float& lhs, const array& rhs); \
991 AFAPI array OP (const cfloat& lhs, const array& rhs); \
992 AFAPI array OP (const cdouble& lhs, const array& rhs); \
993 AFAPI array OP (const array& lhs, const bool& rhs); \
994 AFAPI array OP (const array& lhs, const int& rhs); \
995 AFAPI array OP (const array& lhs, const unsigned& rhs); \
996 AFAPI array OP (const array& lhs, const char& rhs); \
997 AFAPI array OP (const array& lhs, const unsigned char& rhs); \
998 AFAPI array OP (const array& lhs, const long& rhs); \
999 AFAPI array OP (const array& lhs, const unsigned long& rhs); \
1000 AFAPI array OP (const array& lhs, const long long& rhs); \
1001 AFAPI array OP (const array& lhs, const unsigned long long& rhs); \
1002 AFAPI array OP (const array& lhs, const double& rhs); \
1003 AFAPI array OP (const array& lhs, const float& rhs); \
1004 AFAPI array OP (const array& lhs, const cfloat& rhs); \
1005 AFAPI array OP (const array& lhs, const cdouble& rhs); \
1007#if AF_API_VERSION >= 32
1010 AFAPI array OP (const short& lhs, const array& rhs); \
1011 AFAPI array OP (const unsigned short& lhs, const array& rhs); \
1012 AFAPI array OP (const array& lhs, const short& rhs); \
1013 AFAPI array OP (const array& lhs, const unsigned short& rhs); \
1016#define BIN_OP(OP) BIN_OP_(OP)
1328#if AF_API_VERSION >= 31
#define BIN_OP(OP)
(const array&, const array&)
Definition: array.h:1039
#define ASSIGN(OP)
(const array &)
Definition: array.h:882
Intermediate data class.
Definition: array.h:46
array::array_proxy slices(int first, int last)
bool isrealfloating() const
array as(dtype type) const
const array::array_proxy slice(int index) const
void host(void *ptr) const
array::array_proxy slice(int index)
array_proxy(const array_proxy &other)
dim_t dims(unsigned dim) const
array_proxy(array &par, af_index_t *ssss, bool linear=false)
const array::array_proxy rows(int first, int last) const
const array::array_proxy row(int index) const
const array::array_proxy cols(int first, int last) const
array::array_proxy row(int index)
array::array_proxy cols(int first, int last)
array::array_proxy rows(int first, int last)
const array::array_proxy slices(int first, int last) const
array::array_proxy col(int index)
bool isreal() const
Definition: array.h:118
const array::array_proxy col(int index) const
A multi dimensional data container.
Definition: array.h:27
void set(af_array tmp)
Updates the internal af_array object.
Wrapper for af_index.
Definition: index.h:52
af_dtype
Definition: defines.h:195
@ f32
32-bit floating point values
Definition: defines.h:196
long long dim_t
Definition: defines.h:50
af_err
Definition: defines.h:63
void * af_array
Definition: defines.h:222
#define AFAPI
Definition: defines.h:31
af_source
Definition: defines.h:214
@ afHost
Host pointer.
Definition: defines.h:216
AFAPI array operator-(const array &lhs, const array &rhs)
Subtracts two arrays or an array and a value.
const array::array_proxy cols(int first, int last) const
Returns a reference to sequence of columns.
array::array_proxy cols(int first, int last)
Returns a reference to sequence of columns.
array::array_proxy col(int index)
Returns a reference to a col.
const array::array_proxy col(int index) const
Returns a reference to a col.
array::array_proxy operator()(const index &s0)
This operator returns a reference of the original array at a given coordinate.
const array::array_proxy operator()(const index &s0, const index &s1, const index &s2=span, const index &s3=span) const
This operator returns a reference of the original array at a given coordinate.
const array::array_proxy operator()(const index &s0) const
This operator returns a reference of the original array at a given coordinate.
array::array_proxy operator()(const index &s0, const index &s1, const index &s2=span, const index &s3=span)
This operator returns a reference of the original array at a given coordinate.
const array::array_proxy rows(int first, int last) const
Returns a reference to sequence of rows.
const array::array_proxy row(int index) const
Returns a reference to a row.
array::array_proxy row(int index)
Returns a reference to a row.
array::array_proxy rows(int first, int last)
Returns a reference to sequence of rows.
array::array_proxy slices(int first, int last)
Returns a reference to a matrix in a volume.
const array::array_proxy slice(int index) const
Returns a reference to a matrix in a volume.
array::array_proxy slice(int index)
Returns a reference to a matrix in a volume.
const array::array_proxy slices(int first, int last) const
Returns a reference to a matrix in a volume.
array(const dim4 &dims, const T *pointer, af::source src=afHost)
Create an array of specified size on the device using a host/device pointer.
array(dim_t dim0, dim_t dim1, dtype ty=f32)
Allocate a two-dimensional array of a specified size with undefined contents.
AFAPI af_err af_create_handle(af_array *arr, const unsigned ndims, const dim_t *const dims, const af_dtype type)
Create af_array handle.
array(const array &input, const dim_t dim0, const dim_t dim1=1, const dim_t dim2=1, const dim_t dim3=1)
Adjust the dimensions of an N-D array (fast).
array(const dim4 &dims, dtype ty=f32)
Allocate an array of a specified size with undefined contents.
array(dim_t dim0, dim_t dim1, dim_t dim2, dtype ty=f32)
Allocate a three-dimensional (3D) array of a specified size with undefined contents.
array(dim_t dim0, dim_t dim1, dim_t dim2, dim_t dim3, dtype ty=f32)
Allocate a four-dimensional (4D) array of a specified size with undefined contents.
array(dim_t dim0, dtype ty=f32)
Allocate a one-dimensional array of a specified size with undefined contents.
AFAPI af_err af_create_array(af_array *arr, const void *const data, const unsigned ndims, const dim_t *const dims, const af_dtype type)
Create an af_array handle initialized with user defined data.
array(dim_t dim0, const T *pointer, af::source src=afHost)
Create a column vector on the device using a host/device pointer.
array()
Create undimensioned array (no data, undefined size)
array(dim_t dim0, dim_t dim1, const T *pointer, af::source src=afHost)
Create a 2D array on the device using a host/device pointer.
array(dim_t dim0, dim_t dim1, dim_t dim2, dim_t dim3, const T *pointer, af::source src=afHost)
Create a 4D array on the device using a host/device pointer.
array(const array &input, const dim4 &dims)
Adjust the dimensions of an N-D array (fast).
array(dim_t dim0, dim_t dim1, dim_t dim2, const T *pointer, af::source src=afHost)
Create a 3D array on the device using a host/device pointer.
array(const array &in)
Creates a copy to the in array.
array(const af_array handle)
Creates an array from an af_array handle.
AFAPI af_err af_is_vector(bool *result, const af_array arr)
Check if an array is a vector.
bool isempty() const
Returns true of the array is empty.
T scalar() const
Get the first element of the array as a scalar.
AFAPI af_err af_get_type(af_dtype *type, const af_array arr)
Gets the type of an array.
AFAPI af_err af_copy_array(af_array *arr, const af_array in)
Deep copy an array to another.
dim4 dims() const
Get dimensions of the array.
dtype type() const
Get array data type.
AFAPI af_err af_is_column(bool *result, const af_array arr)
Check if an array is a column vector.
AFAPI af_err af_is_empty(bool *result, const af_array arr)
Check if an array is empty.
AFAPI af_err af_is_single(bool *result, const af_array arr)
Check if an array is single precision type.
array H() const
Get the conjugate-transpose of the current array.
bool isvector() const
Returns true if only one of the array dimensions has more than one element.
bool isrealfloating() const
Returns true if the array type is f32 or f64.
bool iscomplex() const
Returns true if the array type is c32 or c64.
AFAPI af_err af_get_data_ref_count(int *use_count, const af_array in)
Get the use count of af_array
size_t bytes() const
Get the size of the array in bytes.
bool isscalar() const
Returns true of the array contains only one value.
T * host() const
Copy array data to host and return host pointer.
bool isinteger() const
Returns true if the array type is u8, b8, s32 u32, s64, u64, s16, u16.
const array as(dtype type) const
Converts the array into another type.
void host(void *ptr) const
Copy array data to existing host pointer.
AFAPI af_err af_is_floating(bool *result, const af_array arr)
Check if an array is floating precision type.
AFAPI af_err af_get_data_ptr(void *data, const af_array arr)
Copy data from an af_array to a C pointer.
AFAPI af_err af_get_elements(dim_t *elems, const af_array arr)
Gets the number of elements in an array.
void eval() const
Evaluate any JIT expressions to generate data for the array.
AFAPI af_err af_is_realfloating(bool *result, const af_array arr)
Check if an array is real floating point type.
bool isbool() const
Returns true if the array type is b8.
AFAPI af_err af_is_integer(bool *result, const af_array arr)
Check if an array is integer type.
AFAPI af_err af_retain_array(af_array *out, const af_array in)
Increments an af_array reference count.
array T() const
Get the transposed the array.
bool issingle() const
Returns true if the array type is neither f64 nor c64.
dim_t dims(unsigned dim) const
Get dimensions of the array.
dim_t elements() const
get the number of elements in array
AFAPI af_err af_get_dims(dim_t *d0, dim_t *d1, dim_t *d2, dim_t *d3, const af_array arr)
Gets the dimseions of an array.
bool isrow() const
Returns true if only the second dimension has more than one element.
AFAPI af_err af_eval(af_array in)
Evaluate any expressions in the Array.
void write(const T *ptr, const size_t bytes, af::source src=afHost)
Perform deep copy from host/device pointer to an existing array.
array copy() const
Perform deep copy of the array.
array & eval(array &a)
Evaluate an expression (nonblocking).
Definition: array.h:1283
af_array get()
get the af_array handle
bool isfloating() const
Returns true if the array type is f32, f64, c32 or c64.
AFAPI af_err af_is_row(bool *result, const af_array arr)
Check if an array is row vector.
AFAPI af_err af_is_complex(bool *result, const af_array arr)
Check if an array is complex type.
AFAPI af_err af_release_array(af_array arr)
Reduce the reference count of the af_array.
AFAPI af_err af_is_double(bool *result, const af_array arr)
Check if an array is double precision type.
bool isdouble() const
Returns true if the array type is f64 or c64.
af_array get() const
get the af_array handle
AFAPI af_err af_is_scalar(bool *result, const af_array arr)
Check if an array is scalar, ie.
bool isreal() const
Returns true if the array type is neither c32 nor c64.
Definition: array.h:620
AFAPI af_err af_get_numdims(unsigned *result, const af_array arr)
Gets the number of dimensions of an array.
unsigned numdims() const
Get the number of dimensions of the array.
bool iscolumn() const
Returns true if only the first dimension has more than one element.
AFAPI af_err af_is_real(bool *result, const af_array arr)
Check if an array is real type.
AFAPI af_err af_is_bool(bool *result, const af_array arr)
Check if an array is bool type.
AFAPI af_err af_write_array(af_array arr, const void *data, const size_t bytes, af_source src)
Copy data from a C pointer (host/device) to an existing array.
Definition: algorithm.h:15
static af::array array(af::dim4 idims, cl_mem buf, af::dtype type, bool retain=false)
Create an af::array object from an OpenCL cl_mem buffer.
Definition: opencl.h:329
Struct used while indexing af_array.
Definition: index.h:23